你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS學習筆記7—程序實現國際化 (即本地多語言化)

iOS學習筆記7—程序實現國際化 (即本地多語言化)

編輯:IOS開發綜合

在iPhone項目中如何才能國際化?難道同一個項目,非要寫一個英文版的源代碼,再寫一個中文版的源代碼?

其實大可不必。我們可以使用iPhone的多語言支持來實現項目的本地(國際)化。

1、新建Windows-base Application。打開main.m文件,在main函數中增加代碼如下:

// 取得用戶默認信息

NSUserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];

// 取得 iPhone 支持的所有語言設置

NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];

NSLog ( @"%@" , languages);

  

運行程序,從 console 中輸出如下內容:

"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 中查看工程目錄,會發現多了一個 English.lproj 的目錄,其下有一個 Localizable.strings 文件(不過其中的內容是空的)。

再次打開 getInfo 窗口,顯示如下界面:

 

\  

可以看見 Localizations 列表中只有一個語言 English ,我們需要點擊 Add Localization按鈕,增加中文 zh_CN :

 

\

 

這時,你再去 Finder 中查看工程目錄,發現又多了一個 zh_CN.lproj 的目錄,其下也有一個 Localizable.strings 文件(內容也是空的)。

同時,在 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函數根據iPhone的多語言設置獲取國際化的字符串

label . text = NSLocalizedString ( @"Localizable Test" , @"" );

6 、回到 IB ,將 UILable 控件和 IBOutlet 變量 label 進行連接:

 

\

 

7 、打開終端程序,進入工程目錄,運行命令:

genstrings -o English.lproj ./classes/*.m

你會發現 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 ,則標簽中的文本顯示為英文了。

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved