Localization 往往意味着2件事:
- 为不同的region和语言产生不同的resource(image, sound, Nib文件) 版本, 这些resource被放在不同的文件目录下,目录以语言命名, 比如: en_US, en是英文,US是region 美国的代码。en和US是标准化的。
- 创建不同语言的字符串表
步骤:
- 如下图所示,添加新的语言: 一般英文会被选中为base。
选中想要多语言化的资源文件。
做好后,xcode会在工程目录下产生对应的lproj目录:
- 如果选择了图片,比如想要不同的国家显示不同的旗帜。会产生不同国家对应的图片:
- 如果没有在第一步把要翻译的文件选择进去,可以手动添加。选择想要多语言化的文件,选择localization
以上就做好了资源文件的本地化,下面来看怎么做代码中的字符串。 打开termimal, cd到project 目录, 执行:
如果有多个文件,加 -a 的参数
这样会在当前目录生成一个Localizable.strings的文件,所有用NSLocalizedString函数标示的字符串,都会放进去。(如果不生成这个文件,export cliff 文件的时候,也是会放入用NSLocalizedString函数标示的字符串的。只是感觉不是很直观,还是生成一下)
然后,重复第3步,添加localization
到这里所有文件都已经本地化了,下一步,就是要送出去翻译选择export,会export一个xliff文件
- 可以用这个网站打开,看一下http://xliff.brightec.co.uk
- 翻译回来以后,可以import进去。
但是,工具生成的xliff文件并不是照修改顺序的。遇到特别复杂的多次翻译,还是要人来看。希望以后xcode可以改进一下。
附:
当一个bundle在找寻对应的resource文件的时候,首先找bundle的根目录,找寻bundle的名字的文件。如果没有找到,就去找设备的locale和语言对应的lproj目录。在lproj目录里面找bundle的名字的文件。