標籤:blog java c ext http com
原地址:http://www.cnblogs.com/U-tansuo/p/IOS_NSLocalizedString.html
iOS提供了簡便的方法來實現本地化,其中用的最多的就是NSLocalizedString。首先查看下NSLocalizedString是什麼:#define NSLocalizedString(key,comment)[[NSBundle mainBundle]localizedStringForKey:(key) value:@"" table:nil];這 是一個宏,本質上調用了函數localizedStringForKey:這樣,這個宏做的其實就是在當前bundle中尋找資源檔名 Localizable.strings中索引值key所指向的字串,這樣就不難理解還有諸如:NSLocalizedStringFromTable的 宏了。
在不考慮本地化的情況下,外面如果在代碼中給一個Button定義title,一般會這樣寫:
btn.titleLabel.text = @"Example Button";當虛考慮本地化的問題時,把要顯示給使用者看的字串做如下修改:(對於內部使用的字串就用不著本地化了)btn.titileLabel.text = NSLocalizedString(@"btn_title",nil);NSLocalizedString是一個定義在NSBundle.h中的宏,氣用途是尋找當前系統語言對應的Localizable.strings檔案中的某個key的值。第一個參數是key的名字,第二個參數是對這個“索引值對”的注釋,在用genstrings工具產生Loclizable.strings檔案時會自動加上去。 到目前為止,外面還沒有產生Localizable.strings檔案,這個一個逆向的過程,也就是先寫好調用過程,再產生strings資源檔。當外面把所有的.m檔案都修改好以後,就該genstring工具了。1.啟動終端,進入工程所在的目錄2.建立兩個目錄,推薦放在資來源目錄下目錄名會作用到Localizable.strings檔案對應的語言,不能寫錯了。這裡zh-Hans指簡體中文,注意不能用zh.lproj表示。mkdir zh-Hans.lprojmkdir en.lproj3.產生Localizable.strings檔案genstrings -o zh-Hans.lproj *.mgenstrings -o en.lproj *.m-o<檔案夾>,指定產生的Localizable.strings檔案放置的目錄*.m,掃描所有的.m檔案,這裡支援的檔案還包括.h,.java等4.右鍵點擊工程的Resources目錄,選擇“New group”,添加兩個目錄zh-Hans.lproj和en.lproj5.在建立的group中添加剛剛產生的Loclizable.strings檔案6.最後在Localizable.strings檔案中,修改每個key所對應的內容,就可以了。 總結:1.在代碼裡用NSLocalizedString擷取要本地化的字串2.用genstrings掃描碼檔案,產生Localizable.strings,然後加到工程中。