国际化,是指根据用户选择操作系统语言的设置,自动将应用程序的语言切换成用户选择的语言,来满足不同国家的用户.下面介绍我们平时需要做的几种国际化的场景.
准备工作:不管是以下哪种场景都需要进行配置需要国际化的语言,这是国际化之前的准备工作
-
选中PROJECT-Info-Localization-点击加号
image.png - 选择需要进行配置的语言,在弹出的框中,直接选择Finish
Xcode切换语言:无需在设置中切换语言,直接在Xcode中进行如下设置.选择Edit->Scheme->Run->Arguments Passed On Launch ->-AppleLanguages (语言代码).例如添加中文为AppleLanguages(zh-Hans)
1.APP名称的国际化(程序启动时,根据操作系统语言,自动加载InfoPlist.strings文件下对应的语言文件,然后显示应用程序的名字)
- 首先创建Strings File文件,文件的名字必须为InfoPlist,创建完成后就会在Xcode中看见一个名为InfoPlist.strings的文件
- 选中InfoPlis.strings文件,在Xcode右侧文件检查器(File inspector)中点击Localize来选择我们需要本地化的语言
- 在弹出框选择我们要进行本地化语言,然后点击弹窗的Localize按钮
-
勾选语言
image.png
然后就会看到InfoPlist.strings的文件多了一个箭头,点击展开
image.png
说明文件包含了英文,中文两种语言文件 - 在这两种文件中分别设置APP的名称
// 在English文件中设置APP名称
CFBundleDisplayName = "WeChat";
// 在Chinese文件中设置APP名称
CFBundleDisplayName = "微信";
然后修改模拟器/真机的语言运行即可
2.代码中字符串的国际化
- 和APP名称国际化的操作步骤相差无几,只是创建的文件名成不一样文件名必须是Localizable,其他步骤完全相同
- 只需要在Localizable.strings对应的不同语言文件中,以key-value的形式添加需要设置的本地化字符串
// 在English文件中设置登录按钮名称
"Login" = "Login";
// 在Chinese文件中设置登录按钮名称
"Login" = "登录";
- 然后根据NSLocalizedString(key, comment)这个宏,根据Key获取对应的字符串,然后进行赋值操作即可
3.自定义代码中字符串所需的国际化文件
如果不想使用默认文件名Localizable,可以单独创建.只不过使用的时候需要使用NSLocalizedStringFromTable这个宏来读取本地化字符串。