系统选择语言的机制
如果想要卖出更多的程序,你的程序就必须支持多国语言。iOS和macOS在处理程序时,语言部分的模型是这样的:
- 用户可以设置多个他懂得的语言,语言的优先级别是从上到下。
- 系统打开某个程序时,按照用户设置的语言偏好,依次查找程序是否提供了该语言的界面,如果是,就加载该语言,并打开程序;如果不是,就加载程序员指定的默认语言。
举例:
假设小明的设定的语言偏好顺序为简体中文、繁体中文、英文
,程序A提供的语言为繁体中文、英文(默认)
。那么小明打开程序A时,程序A会显示繁体中文
的界面。
假设雅克布系统设定的语言偏好为法文
,那么他打开程序A时,由于程序A没有提供法文
的翻译,且程序A的默认语言为英文
,所以雅克布看到的程序A界面就是英文
的。
中文开发者面对的问题
程序员面对的问题更复杂一些。传统来说,程序员一般选择英文进行开发,然后再翻译成中文和其它语言。这个流程是经过检验的。可是对于中文开发者来说,直接用中文开发界面,然后再翻译成英文或其它界面,在查看时会更加直观。不过,传统上一般认为,如果你直接用中文开发,那么遇到上面举例中的雅克布的情况,由于默认开发的语言已经是中文,雅克布可能会看到一个自己不懂的中文界面的情况。
小结:中文开发者面对的问题是:
- 要使用中文开发
- 当用户偏好的语言,程序未能提供时,默认显示英文的界面
要解决这个问题,首先得知道Xcode中语言和翻译相关的模型。
Xcode中的语言模型
- Xcode采用
Base Internationalization
的方式。默认情况下,Base Internationalization
为英文。 - 用户可以在项目的Info.plist中指定程序成默认语言,默认是英文。
- 用户添加多种语言的翻译。
解决方案
- 新建一个Cocoa程序项目
- 在Finder中,找到你的项目的
.xcodeproj
文件,右键点击,选显示包内容
- 双击打开
project.pbxproj
文件 - 在打开的文件中,搜索
developmentRegion
,默认对应的值为English
,将其改为zh-Hans
,并保存。这里修改的是Base Internationalization
的语言,Xcode中显示为Development Language
. - 回到新建的项目,打开项目中的
Info.plist
,查看Localization native development region
项,默认应该是en
。如果确认为en
,则不用修改。这个项的键是CFBundleDevelopmentRegion
。代表程序的默认界面语言。 - 点击项目文件,添加新语言
Chinese(Simplified)
,你会看到简体中文后面的括号里写着Development Language
。这代表设置成功了。