在 iOS 应用程序中,很多控件都集成了本地化功能,比如,在 UIWebView 中的网页里面选择一个文本框,然后键盘上面会出现,前一项,后一项按钮。 这些按钮就会被系统根据当前设备的语言环境,进行本地化。 但这些控件是否对特定的语言环境进行本地化,还取决于你应用的配置。 iOS 默认只对你应用支持的语言进行本地化。 比如,每个应用的 Info.plist 中都有一个 CFBundleDevelopmentRegion 键, 而在默认情况下,它的值是 en。 换句话说就是你的应用仅支持英文环境。 这时,不管你应用所处的设备是怎样的语言环境,那么系统都只会按照英文进行本地化。还是以刚才 UIWebView 的例子来说,这时键盘上面会显示 “Previous”, “Next” 这些英文按钮。
在中文语言环境下 UIWebView 仍然显示英文按钮:
如果你需要系统帮你进行更多的本地化,那么有两种方法。 一种就是指明你应用支持的语言, 可以通过建立 *.lproj 来添加新的语言支持。 但是如果你想对所有的语言都进行本地化,那么这种方法就很麻烦了。 所以 iOS 提供了另外一种方式, CFBundleAllowMixedLocalizations。 我们只需要在项目的 Info.plist 文件中将这个键的值设置为 true。 顾名思义,这个键允许混合形式的本地化。 也就是说,当你设置了这个键之后,不管你的应用是否支持当前设备的语言环境,iOS 系统都会尽可能都根据当前的语言进行本地化。
可以通过在 Info.plist 编辑器中添加这个选项来设置:
应用了这个键之后,在中文语言环境下 UIWebView 的效果如下: