最近公司的項目有可能向國外推廣,我們的app也要添加多語言設置,之前從沒有接觸過這方面的東西,感覺會很麻煩吧。上網查了一下,還行,主要是把語言轉換一下就可以了。下面就詳細介紹一下設置過程:
1,基本設置
第一步:先在Project的info里添加項目所要支持的語言
如上點擊“+”號會彈出所提供的語言,選擇所需要的語言就可以了
第二步:創建Localizable.strings(注意:文件名最好不要隨意更改,以免帶來不必要的麻煩)作為多語言對應的詞典,存儲多重語言。
(1)點擊Localizable.strings文件右側的Localiza...
(2)繼續在Localization里添加所要支持的語言,將其勾選上
第三步,此時,我們的前期工作基本就完成了,可以在Localizable.strings里隨意設置所需要支持的語言了。
假設,我們設置了簡體中文
"testName" = "多語言設置成功啦";
第四步,設置完對應的語言后,我們就可以去使用它啦
NSString *nameStr= NSLocalizedString(@"testName", nil); //獲取配置語言文字
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(10, 100, 300, 100)];
[btn setBackgroundColor:[UIColor cyanColor]];
[btn setTitle:nameStr forState:UIControlStateNormal];
[self.view addSubview:btn];
注意:
如果創建.strings文件是自定義的名字的話,如Internation.strings,那么調用的方式為:
NSLocalizedStringFromTable(@”title”,@”Internation”, nil)
NSLocalizedStringFromTable(@”name”,@”Internation”, nil)
當自定義名字后,使用NSLocalizedString的方式不起作用,這里要特別注意,注意,注意!!!(重要的說三遍);
2,應用名設置
(1)應用名設置與多語言基本設置的步驟大致是一樣的,只是創建的.strings文件的名字要為InfoPlist.strings。
(2)同樣以簡體中文為例,"CFBundleDisplayName" = "慧眼"。
(3)在info.plist文件中設置Bundle display name為CFBundleDisplayName即可。
3,StoryBoard設置
storyboard同Localizable.strings類似。當我們創建Localizable.strings對應的語言文件時,系統自動生成了storyboard對應的系統文件。假如我們在storyboard拖入了一個UILabel,我們想要直接在這里設置label的文本,這里就要用到了UILabel的Object ID了。
在對應的語言文件中添加如下格式的設置:
/* Class = "UILabel"; text = "測試"; ObjectID = "PXo-pJ-2Ml"; */
"PXo-pJ-2Ml.text" = "測試";
4,判斷系統語言
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog(@"%@", currentLanguage);