iPhone開發(fā)應用關于國際化案例實現(xiàn)
iPhone開發(fā)應用關于國際化案例實現(xiàn)是本文要介紹的內(nèi)容,主要是來學習在iPhone項目中如何才能國際化?難道同一個項目,非要寫一個英文版的源代碼,再寫一個中文版的源代碼?其實大可不必。我們可以使用iPhone的多語言支持來實現(xiàn)項目的本地(國際)化。
1、新建Windows-base Application。打開main.m文件,在main函數(shù)中增加代碼如下:
- // 取得用戶默認信息
- NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];
- // 取得 iPhone 支持的所有語言設置
- NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];
- NSLog ( @"%@" , languages);
運行程序,從 console 中輸出如下內(nèi)容:
- "zh-Hans",
- en,
- fr,
- de,
- "zh-Hant",
- ……
可以看到, iPhone 設備上支持的所有語言,有英、法、德,還有兩個 ”zh” 開頭的語言(簡體/繁體)。我們知道,以 ”zh” 開頭的就是中文。
2 、在 Resources 上右鍵, Add à New File ,文件類型選擇 Resource->Strings File ,文件名為 Localizable.strings 。在該文件上使用 getInfo 命令,在如下界面中點擊 Make File Localizable 按鈕,如圖:
然后 , 你去 Finder 中查看工程目錄,會發(fā)現(xiàn)多了一個 English.lproj 的目錄,其下有一個 Localizable.strings 文件(不過其中的內(nèi)容是空的)。
再次打開 getInfo 窗口,顯示如下界面:
可以看見 Localizations 列表中只有一個語言 English ,我們需要點擊 Add Localization 按鈕,增加中文 zh_CN,如圖:
這時,你再去 Finder 中查看工程目錄,發(fā)現(xiàn)又多了一個 zh_CN.lproj 的目錄,其下也有一個 Localizable.strings 文件(內(nèi)容也是空的)。
同時,在 Target 下的 Copy Bundle Resources 目錄下多出兩個不同語言版本的 Localizabel.strings 文件(一個 English ,一個 zh_CN ),如圖:
3 、打開 MainWindow.xib ,拖一個 UILable 到 window 中。
4 、打開 AppDelegate.h 文件,在其中申明 UILable 變量并增加一個 IBOutlet :
- UILabel * label ;
- ……
- @property ( nonatomic , retain ) IBOutlet UILabel* label;
5 、打開 AppDelegate.m 文件,
- @synthesize window,label;
在 ( BOOL )applicationv:application didFinishLaunchingWithOptionsv: 方法中增加代碼:
- // 使用NSLocalizedString函數(shù)根據(jù)iPhone的多語言設置獲取國際化的字符串
- label . text = NSLocalizedString ( @"Localizable Test" , @"" );
6 、回到 IB ,將 UILable 控件和 IBOutlet 變量 label 進行連接,如圖:
7 、打開終端程序,進入工程目錄,運行命令:
- genstrings -o English.lproj ./classes/*.m
你會發(fā)現(xiàn) English.lproj 目錄下的那個 Localizable.strings 文件中增加了一行代碼:
- "Localizable Test" = "Localizable Test" ;
再運行命令:
- genstrings -o zh_CN.lproj ./classes/*.m
同樣 , 在 zh_CN.lproj 目錄下的那個 Localizable.strings 文件中也會增加一行代碼:
- "Localizable Test" = "Localizable Test" ;
打開 zh_CN.lproj 目錄下的 Localizable.strings (雙擊),修改為
- "Localizable Test" = " 本地化測試 " ;
這樣,每當源代碼有改變后,我們都需要用 genstrings 命令重新生成 Localizable.strings 文件。但是,每次重新生成后,原來的編輯(翻譯)結果又不見了,我們又必須重頭翻譯。這是個很大的麻煩,建議以后每次 genstrings 之前把文件進行備份,減少重復工作。
8 、運行程序,效果如下(如果模擬器的多語言設置為簡體中文)如圖:
當你把多語言設置改為 English ,則標簽中的文本顯示為英文了。
小結:iPhone開發(fā)應用關于國際化案例實現(xiàn)的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!