新开发的一款项目需要支持国外的版本,app中需要显示多种语言,遇到这个首先相当的就是去找我们亲爱的度娘或者来搜简书找资料的,百度上有关国际化的资源着实丰富让人眼花缭乱的,但是多而杂还是经过自己的摸索给成功了,下面介绍步骤:
程序国际化(app的名字):
1.首先需要建一个ios 的app工程,建工程步骤我就不说了,最基本的都不会的话,还是先打好基础再进行其他的学习;
2.工程建好之后,我们要做一下准备工作:
从代码中分离文本:
目前,应用展示的所有文本都是以硬编码字符串存在于Main.storyboard 和 ViewController里。为了本地化这些字符串,你需要把它们放在一个单独的文件中。他将会在包中简单地引用这些字符串,而不是在你的方法中进行硬编码。Xcode使用带有 .strings 扩展名的文件来存储和检索app中使用的所有字符串,以支持每种语言。根据iOS 设备当前使用的语言,代码中一个简单的方法调用将会查找并返回要求的字符串。
3.创建一个.strings扩展名的文件
打开File > New > File,选择Resource中Strings Fils(command+N),如图:
点击下一步,为文件命名为InfoPlist.strings(必须为InfoPlist.strings要不然是不可以的),然后点击save。
4.创建完之后,单击左边的InfoPlist.strings文件:
5.然后在InfoPlist.strings里面添加CFBundleDisplayName="app名字";
效果图如下:
设置语言:设置-通用-语言-选择需要切换的语言
(二)代码中字符串的本地化
所谓字符串本地化,就是指App内的字符串在不同的语言环境下显示不同的内容。比如,”主页”这个字符串在中文语言环境下显示“主页”,在英语环境下显示“home”。下面就开始进行字符串本地化。
其实字符本地化和App名称本地化过程如出一辙,只是创建的文件名成不一样(连同后缀一起,文件名必须是Localizable.strings),其他步骤完全相同。为了能够让大家彻底了解,此处还是会把步骤一一贴出来。
-和应用名称本地化一样,首先需要command + N,选择iOS -> Resource -> Strings File
-文件名必须命名为Localizable,否则是没有作用的。
备注:因本人电脑取消隐藏文件后缀名,所以会自动补全.strings后缀名。
-文件创建成功,查看Xcode左侧导航列表,发现多了一个名为Localizable.strings的文件,并且选中Localizable.strings文件,在Xcode的File inspection中点击Localize,目的是选择我们需要本地化的语言(和本地化App名称同理),如下图:
-然后我们只需要在Localizable.strings下对应的文件中,分别以Key-Value的形式,为代码中每一个需要本地化的字符串赋值,如下图:
-初始化代码,在viewController中写的代码,我们只需要使用Foundation框架自带的NSLocalizedString(key, comment)这个宏根据Key获取对应的字符串,然后赋值给代码中的字符串。如下图:
-不同语言环境下运行效果,如下图:
英文版:
中文环境下:
-如此一来,我们就实现了代码中字符串的本地化。源代码地址为: