1. 程式人生 > >iOS國際化(多國語言設定)

iOS國際化(多國語言設定)

1. 基本設定

第一步:先在Project的info裡新增所需要支援的語言,這裡選擇的是Chinese(Simplified)和English-Development Language,點選Finish。

這裡寫圖片描述

這裡寫圖片描述

第二步:建立Localizable.strings檔案(注意:檔名最好不要隨意更改)作為多語言對應的詞典,儲存多種語言。

(1)點選Localizable.strings檔案右側Localize…
(2)繼續在Localization裡新增所要支援的語言,將其勾選上。
這裡寫圖片描述
這裡寫圖片描述

第三步:最後就可以在Localizable.strings裡隨意設定所需要支援的語言啦。

這裡寫圖片描述
如下圖:
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

第四步:應用

(1)Localizable.strings內設定格式:
    "testName" = "測試名稱"

(2)NSLocalizedString代替String:
    NSLocalizedString(@"testName",nil)

如下圖:
這裡寫圖片描述

2.StoryBoard設定

storyboard同Localizable.strings類似。

第一步:選中storyboard,選擇ShowtheFileInspector,在Localization選擇所需要支援的語言。
這裡寫圖片描述
第二步:在Main.strings(Chinese(Simplified))和Main.strings(English)裡設定語言。
Main.strings裡的格式比較特殊,如下所示:

/* Class = "UILabel"; text = "測試"; ObjectID = "C9P-Sr-3Z4"; */
"C9P-Sr-3Z4.text" = "測試";

獲得Object ID 的方法:
這裡寫圖片描述

3.圖片設定

圖片設定也和Localizable.strings類似,圖片資源存放在Images.xcassets裡,使用時將不同語言的圖片資源在Localizable.strings裡一一對應設定;

第一步:新增圖片

這裡寫圖片描述

第二步:往Localizable.strings中新增圖片名

這裡寫圖片描述

Localizable.strings (English)

"imageName"
= "picEnglish"; Localizable.strings (Chinese(Simplified)) "imageName" = "picSimple";

第三步:應用

這裡寫圖片描述

4 應用名設定

第一步:新增InfoPlist.strings

檔名命名為:InfoPlist.strings
這裡寫圖片描述

第二步:新增應用名

InfoPlist.strings (English)

"CFBundleDisplayName" = "EnglishName";

InfoPlist.strings (Chinese(Simplified))

"imageName" = "中文名";

這裡寫圖片描述

5 貨幣值設定

貨幣顯示在不同的國家是有區別的,例如:10000可以寫作”10,000”也能寫作”10.000”。針對這種情況可以使用NSNumberFormatter格式化,例如:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];

[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSString *numberString = [numberFormatter stringFromNumber:@(10000)];

testLabel.text = [NSString stringWithFormat:NSLocalizedString(@"testNum:%@", nil), numberString];

6 啟動頁設定

根據內容去判斷:

 NSArray * allLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
 NSString * language = [allLanguages objectAtIndex:0];
 if ([language isEqualToString:@"zh-Hans-CN"]) {
            中文啟動頁
        } 
 else if ([language isEqualToString:@"en-CN"]){
           英文啟動頁 
        }