关于iOS应用的国际化

       这里所说的国际化无非就是应用会根据手机当前的语言环境来改变应用上面的文字、图片上面的文字、应用的名称。让正在使用应用的用户不会因为语言的不通而无法使用本应用。 因为AppStore所提供的无痛的全球分发系统,任何 iOS 开发者要将他们的应用在超过 150 个国家的市场发布,所以有的开发者会根据自己的需求来适应更多的国家的人来使用。于是就产生了iOS应用的国际化。

       首先需要创建一个新的工程 使用系统模板 Single View Application 创建一个工程,工程名字命名为 LessonInternation 

 

iOS MJRefresh 国际化 苹果手机的国际化_开发者


1、应用名称国际化

首先我们刚创建完成的应用是只支持英文的。我们要添加应用的多语言支持。

点击项目名字  

iOS MJRefresh 国际化 苹果手机的国际化_本地化_02

       然后点击PROJECT  点击Info 在Localizations选项里面的Language添加语言支持,点击加号,添加Chinese(Simplified) (这是中文简体),具体点击地方在图片圈出来了,当点击加号添加语言支持的时候会弹出一个选择框。具体按照图片进行选择。

iOS MJRefresh 国际化 苹果手机的国际化_国际化_03

下面图片是简体中文添加完成后的样子。

iOS MJRefresh 国际化 苹果手机的国际化_开发者_04


这时我们会在我们的项目中的Supporting Files 文件夹下发现原来的InfoPlist.strings 文件里面包含了两个文件,通过点击下拉箭头看到

iOS MJRefresh 国际化 苹果手机的国际化_本地化_05

包含一个简体中文、一个英文。这是我们单击文件进入,在简体中文的文件下添加如下代码:

  

CFBundleDisplayName = "应用";


代码后面的中文即为要修改成的应用的名字,根据自己的需求进行修改。英文的修改同上。


iOS MJRefresh 国际化 苹果手机的国际化_ios_06


这时应用的名称多语言支持就修改完成,我们可以修改模拟器语言查看应用的名称时否修改,下图为两种不同语言对应的应用的名称。

iOS MJRefresh 国际化 苹果手机的国际化_iOS MJRefresh 国际化_07

    

iOS MJRefresh 国际化 苹果手机的国际化_iOS MJRefresh 国际化_08

2、相关内容国际化

1) 控件文本国际化

  

iOS MJRefresh 国际化 苹果手机的国际化_本地化_09

Main.storyboard 和 ViewController

       以此控件为例,我们应该做到当改变手机的语言环境时,控件上面的Label的文本也会改变为对应的语言才能用不同国家的用户群有更好的体验。

       Xcode 使用以 ".strings" 为扩展名的多个文件来存储和检索所有能用于应用的字符串,以支持多种语言。你的代码中的一个简单方法将会根据当前 iOS 设备的语言去查找并返回所需要的字符串。

这时我们应该创建相关的文件。创建方式如下: 

右键点击项目 New File... 创建新的文件


iOS MJRefresh 国际化 苹果手机的国际化_iOS MJRefresh 国际化_10


文件名为: Localizable  

注意:Localizable.strings


文件创建完成后,单击文件,打开Xcode右边栏  添加语言支持。首先添加英语语言。 注:先添加哪一种都一样


iOS MJRefresh 国际化 苹果手机的国际化_本地化_11

iOS MJRefresh 国际化 苹果手机的国际化_本地化_12


然后在中文前面打对号。


iOS MJRefresh 国际化 苹果手机的国际化_国际化_13

语言添加完成后,我们会看到,刚刚创建的Localizable.strings文件变为了对应的两个。

iOS MJRefresh 国际化 苹果手机的国际化_开发者_14

现在,你已经创建了 Localizable.strings

"KEY" = "CONTENT";

这些 键/内容 对(key/content pairs) 就像一个 NSDictionary ,而惯例是使用默认语言的翻译作为内容的键值。

比如: 我想通过点击确定按钮,在用户名对应的textField显示  测试国际化   这个字符串。

首先手机语言对应的是中文,然后我们就要在 Localizable.strings


"username" = "测试国际化";


然后在确定按钮点击事件对应的方法中 写如下代码: 

NSString  * string = NSLocalizedString(@"username",nil);

_userName.text


NSLocalizedString 宏根据当前的语言设置使用 

localizedStringForKey 方法去查找给定键值的字符串。


然后对应的Localizable.strings

"username" ="test internation";


这时当更改手机的语言时,这个字符串就会查找对应的字符串。

这时我们就可以在这里面修改对应的Label的文本,然后指定字符串就可以。

这个项目因为我们使用了 storyboard 所以我们可以直接在storyboard里面修改label的文本更加方便。

这时我们会看到Main.storyboard里面多了两个对应的文件。因为本来就是用中文进行的创建,所以我们只需要在英文对应的文档里面修改对应的内容就OK了。



iOS MJRefresh 国际化 苹果手机的国际化_本地化_15

最后点击确定按钮后,看到对应的模拟器界面如图:



iOS MJRefresh 国际化 苹果手机的国际化_ios_16

iOS MJRefresh 国际化 苹果手机的国际化_ios_17

如有问题,请多多指教!