iOS國際化(多國語言設定)
阿新 • • 發佈:2019-02-15
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"]){
英文啟動頁
}