iOS国际化实践

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

选中 `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对国际化的支持,不仅仅要以语言来区分,还会参考当前的系统设置的区域值。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 国际化(internationalisation,i18n):一个程序或软件可给特定的人群使用而无须修改或重...
    水止云起阅读 5,024评论 0 4
  • 相关问题 国际化官网链接 Infoplist.strings为什么可以替换info.plist的名称?什么时机替换...
    wxkkkkk阅读 2,602评论 0 1
  • 1、介绍 国际化(Internationalization)是指应用程序在运行的时候,可以根据客户端请求来自的国家...
    JSOfJackChen阅读 4,099评论 0 5
  • 最近公司的项目要求适配国际化,在过程中遇到挺多有意思的知识点。 多语言大家都知道,字母文字有显著的形状差别。 但国...
    PengElement阅读 6,753评论 0 6
  • 可用项目本文花费半天时间,如果喜欢请给个 参考来源 背景 对很多开发者来说,国际市场是事后的想法,但由于App S...
    asaBoat阅读 743评论 2 1