ios多语言有两种方案:
1.在程序中根据用户的选择来切换(不需要重启程序);
2.根据系统语言来切换;
至于程序中要用什么方案,需根据项目需求来定。
第一种方案上篇博文已经转载了别人的总结(很详细),第二种方案其实也有很多人做出了讲解,但觉得有些跟不上版本的变动,便于以后之用在这做下总结。
字符串本地化
1)点击“new file”,在弹出框中选择IOS下面的resource项,然后选择“Strings File”的图标。创建文件,命名为“Localizable”(也可以其他命名,但用法上会有些区别,下面用到时再讲解),创建后生成Localizable.strings文件;
2)选择刚创建的Localizable.strings文件,点击右边
Localization下面得Localize...按钮。弹出框
选择English,点击Localize。在Localization中点击”+“,添加需要的语言,这添加chinese (zh-Hant)中文繁体,english 自动会添加上。
。添加成功后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存放的是中文繁体版图片,中英文图片名称一样,只要放入对应语言的文件夹中。