最近打算做一款图书的应用,需要语言的本地化。网上查了一下,发现基本都是Xcode6以前的,现在特地整理一下Xcode7上的本地化。
需求:在英文环境下,app名称和内容显示英文,简体中文环境下,app名称和内容显示简体中文,其它语言环境下和英文一致。 开发环境:Xcode7.0.1
第一步,先创建一个新的项目“本地化”:
第二步,在根目录下创建一个strings 文件,名字就叫 Localizable.strings(名字一定不能错!): 创建完之后是这样:
这个文件是用来存放app内容文字的 这时候还需要创建一个文件,叫:InfoPlist.strings(App名字国际化用得到),同样方法
下面,我们来给app添加支持的语言: 选中项目 -> Project: 然后点击最下面 Localizations的加号,添加一个语言(简体中文),弹出对话框之后点击“Finish” 这时候,项目里面就有了两种语言了:English 和 简体中文。 这时候先编辑Localization.strings,以"key" = "value"的形式添加内容,例如图: 注意,每一行后面都得有分号,不可省略,而且key和value都得用引号包裹!!!
这里写的都是英文,那中文呢?接下来要这么做,选中Localizable.strings,在右侧的Inspector里:
点击这个 Localize... 按钮,弹出的对话框点确定,然后在 Inspector 选中 英文和中文的:
这时候在左侧导航栏那里,Localizable.strings下面就多了几个东西了: 需要说明的是,新生成的English和简体中文的文件里面的内容是从Base(也就是国际化之前的那个文件,这是基础/原始文件)文件里来的,而且是一模一样的,但是,在生成了English和Simplified之后,你再修改Base文件,English和Simplified文件就不会跟着 Base 改变了。除非取消选择Localization里面的English和Simplified然后再选择,这就有点悲催了。所以建议还是在Base里面写内容,对English和Simplified国际化应该放到最后来做。
下面把简体中文的文件修改一下: 这样,不同语言环境下就有不同的文字了,现在看看如何让他们显示出来,代码如下: 然后切换系统的语言: 英文下: 中文下:
在选择多语言的同时,Storyboard 也会跟着出现国际化的选项,这个跟 strings 文件有点像,但是又有区别。Storyboard 的国际化是不能使用 Localizable.strings 里面的内容的。每个Storyboard都有自己的国际化文件系统。剩下的跟 Localizable.strings 很像,还是先编辑 Base 文件,然后再对这个 Storyboard 选择多语言,然后再修改对应的 strings 文件。
现在看看如何修改app的名字,让英文下显示英文,中文下显示中文: 首先点击InfoPlist.strings文件,将它本地化,然后再简体中文的文件里面添加如下代码: 注意这里前面的key是不能加引号的 英文的文件里面添加下面的代码: 这样切换语言的时候,英文的会显示“weather”,中文会显示“天气”