ios多语言有两种方案:

     1.在程序中根据用户的选择来切换(不需要重启程序);

     2.根据系统语言来切换;

     至于程序中要用什么方案,需根据项目需求来定。

     第一种方案上篇博文已经转载了别人的总结(很详细),第二种方案其实也有很多人做出了讲解,但觉得有些跟不上版本的变动,便于以后之用在这做下总结。

字符串本地化

1)点击“new file”,在弹出框中选择IOS下面的resource项,然后选择“Strings File”的图标。创建文件,命名为“Localizable”(也可以其他命名,但用法上会有些区别,下面用到时再讲解),创建后生成Localizable.strings文件;

       

iOS 多语言适配 ios多语言切换_iOS 多语言适配

2)选择刚创建的Localizable.strings文件,点击右边

iOS 多语言适配 ios多语言切换_字符串_02

Localization下面得Localize...按钮。弹出框

iOS 多语言适配 ios多语言切换_应用程序_03

选择English,点击Localize。在Localization中点击”+“,添加需要的语言,这添加chinese (zh-Hant)中文繁体,english 自动会添加上。

iOS 多语言适配 ios多语言切换_字符串_04

。添加成功后Localizable.strings文件左侧会多出一个三角形,展开后会出现Localizable.strings (english)和Localizable.strings(Chinese (Traditional))两个版本的文件。

 3)Localizable.strings (english)文件中加入:

"infoKey"="Hello!";

  在Localizable.strings(Chinese (Traditional))中加入:

”infoKey“="你好!";

 4)代码中使用

      

showContentLb.text = NSLocalizedString(@"infoKey", nil);
         showContentLb.text = NSLocalizedStringFromTable(@"infoKey, 文件名, nil)(如果当初创建本地文件命名不是Localiz

able的时候使用)

应用程序名称本地化

1)参考字符串本地化的步骤一,命名为"InfoPlist"(一定为这个文件名)

2)参考字符串本地化的步骤二

3)在InfoPlist.strings(english)文件中加入:


CFBundleDisplayName ="ProgramName";

”ProgramName“为应用程序的英文名称;

在InfoPlist.strings(Chinese (Traditional))文件中加入:

CFBundleDisplayName ="中文繁体名称";   CFBundleDisplayName加不加双引号都行

4)在info.plist中加一个新的属性Application has localized display name,设置为YES

图片本地化

方案一

1)跟字符串本地化类似,把英文图片的名字分别存到不同的文件下,然后通过NSLocalizedString或NSLocalizedStringFromTable来获取图片名称。

Localizable.strings(english)文件中加入:


"addBtn"="addBtnEn.png";  
 
Localizable.strings(Chinese (Traditional))文件中加入:
 
"addBtn"="addBtnCnTr.png";  
 代码中使用:UIImage *image = [UIImage imageNamed:NSLocalizedString(addBtn, nil)];



方案二
2)点击要本地化的图片,如”addBtn.png“,然后类似于字符串本地化的步骤二,在图片左侧也会出现倒三角。不同语言的图片,并且在项目文件夹中会出现en.lproj文件和zh-Hant.lproj文件,en.lproj文件存放的是英文版图片,zh-Hant.lproj存放的是中文繁体版图片,中英文图片名称一样,只要放入对应语言的文件夹中。