App 本地化,又称国际化,是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言。也可以手动设置。
·
1.配置项目中可以本地化的语言。
2.应用名称本地化。
3.项目代码中的字符串本地化。
·
配置项目中可以本地化的语言。
项目 - PROJECT - info -> Localizations,点“+”,选择(Chinese(Simplified))添加简体中文,(Chinese(Traditional))添加繁体中文,英文Xcode自带有(English),所以不需要再次添加。
![](https://img.haomeiwen.com/i4844113/9d05a6970e34ad73.png)
选择Finish即可。
![](https://img.haomeiwen.com/i4844113/8772eaba7a1ccc37.png)
·
应用名称本地化。
添加配置文件。在Supporting Files文件夹下,New File -> Strings File。
![](https://img.haomeiwen.com/i4844113/9371bf82d4e03a12.png)
创建的.strings文件必须命名为InfoPlist。
![](https://img.haomeiwen.com/i4844113/d5d82cd8b67d531c.png)
在项目文件夹下,新增了InfoPlist.strings文件。
![](https://img.haomeiwen.com/i4844113/314f30fc87e3e1b6.png)
![](https://img.haomeiwen.com/i4844113/b1d61a653788e4f4.png)
点击Localize后,会弹出一个对话框,然后展开对话框列表。选择需要本地化的一个语言,然后点击对话框的Localize按钮。
![](https://img.haomeiwen.com/i4844113/22294c4bc8c3c91f.png)
Xcode右侧的File inspection变成了下图的样式。
勾选Chinese(Simple)、English。
![](https://img.haomeiwen.com/i4844113/00c476e7b8f364fb.png)
Xcode左侧的InfoPlist.stirings左侧多了一个箭头,点击箭头可以展开。
![](https://img.haomeiwen.com/i4844113/4e09b662df7808ec.png)
注:程序启动时,会根据操作系统设置的语言,自动加载InfoPlist.strings文件下对应的语言文件,显示应用程序的名字。
分别在三个文件中,添加不同语言的情况下,应用的名称。
CFBundleDisplayName = "Localizable App Name";
CFBundleDisplayName = "测试";
.
CFBundleDisplayName = "測試";
.
CFBundleDisplayName = "Test";
本地化App的应用名称效果如下:
![](https://img.haomeiwen.com/i4844113/9397b26b6f659e92.png)
![](https://img.haomeiwen.com/i4844113/bef540aa40b4f929.png)
![](https://img.haomeiwen.com/i4844113/5406848f52c41094.png)
·
项目代码中的字符串本地化。
字符串本地化,就是指App内的字符串在不同的语言环境下显示不同的内容。比如,"主页"在中文语言环境下显示“主页”,在英语环境下显示“Home”。
添加配置文件。在Supporting Files文件夹下,New File -> Strings File。
创建的.strings文件必须命名为Localizable。
![](https://img.haomeiwen.com/i4844113/3b87dacc9fde1131.png)
剩余步骤同上。在打开Localizable.strings文件,在Xcode的File inspection(Xcode右侧文件检查器)中点击Localize,选择需要本地化的语言。勾选没有选中的本地化语言。
Xcode右侧的File inspection变成了下图的样式。
![](https://img.haomeiwen.com/i4844113/7951db33ef6a3b57.png)
接下来就是在代码中,把字符串本地化,苹果提供了本地化的函数。
#define NSLocalizedString(key, comment) \
[NSBundle.mainBundle localizedStringForKey:(key) value:@"" table:nil]
部分实现代码如下:
//中文
"Master" = "首页";
"SpecialUserActionDanmu" = "特殊用户弹幕";
"YZHeartView" = "心视图";
"YZDanmuView" = "弹幕视图";
"commentView" = "评论视图";
"AllDemoTogether" = "全部特效";
//繁体中文
"Master" = "首頁";
"SpecialUserActionDanmu" = "特殊用戶彈幕";
"YZHeartView" = "心視圖";
"YZDanmuView" = "彈幕視圖";
"commentView" = "評論視圖";
"AllDemoTogether" = "全部效果";
//英文
"Master" = "Center";
"SpecialUserActionDanmu" = "SpecialUser";
"YZHeartView" = "Heart";
"YZDanmuView" = "Danmu";
"commentView" = "Comment";
"AllDemoTogether" = "Together";
//
NSLocalizedString(@"Master", nil)
实现效果如下:
![](https://img.haomeiwen.com/i4844113/3384c34be057cc96.png)
![](https://img.haomeiwen.com/i4844113/73524f1f50d0fe37.png)
![](https://img.haomeiwen.com/i4844113/2ee7be93d8a0553b.png)
网友评论