美文网首页
iOS国际化实践

iOS国际化实践

作者: guhan010 | 来源:发表于2021-06-23 17:34 被阅读0次

- 在项目文件中设置支持国际化

选中 `PROJECT` -> `INFO`, 可以看到设置国际化(localizations)的选项。如下图:

国际化选项

点击下面的加号,可以选择需要国际化的语言支持。

新建国际化对话框

点击  `Finish` , 则新建成功。从上图也可以看出,已存在的资源文件,会咨询从哪一个已存的资源数据复制一份。

这里的storyboard有两种选项,一个是只复制它的文字资源(localizable strings),点击还可以新建一个完全一样的storyboard。

新建之后,我们的目录会多出一个对应的资源文件目录。

中文国际化文件目录

它里面存储着国际化的字符串(.strings)文件和storyboard文件。

- 文字的国际化

文字的国际化主要通过API `Bundle` (类) 的方法 `localizedString(forKey:value:table:)` 来实现。它主要负责读取国际化文件,并按照系统的 `语言(除了语言,还有区域)` 配置,来获取当前的国际化文字。

我们按照key-value的形式,在`.strings`文件中写入要国际化的文本后,可以通过这个api读取当前国际化后的文字。

- plist的国际化

plist的国际化主要分为几个步骤。

- 生成对应的国际化文件。这个文件名必须是 `InfoPlist`, 类型为`.strings`。

- 显示plist文件的key值。按照这个key值,在 `InfoPlist` 分别进行配置。(如何显示plist的key值,网上有相当多的资料,可以查阅)。

- 系统语言和区域对国际化的影响

我在做国际化的时候遇到一个问题。当我对韩语进行国际化时,选择了.ko ;这是如果系统的语言配置为韩语,区域配置为除 south/north korean 以外的区域时,显示正常。

但是,当我把区域选择会 north korean时,系统显示的dialog(比如定位弹出的alert等),在plist国际化后依然显示base文件的内容。

这是因为选择区域后,如果区域为支持该语言的子集,则需要建立新的国际化文件。如下图:

选择特殊的区域国际化

由此可见,iOS对国际化的支持,不仅仅要以语言来区分,还会参考当前的系统设置的区域值。

相关文章

网友评论

      本文标题:iOS国际化实践

      本文链接:https://www.haomeiwen.com/subject/amibyltx.html