iOS app的默认语言

上个月尝试为团队的标准国际化进程建立一套可遵循的指导方针,然后高高兴兴上了架,但是问题来了:

我是一个韩国人,我的系统语言是韩文,为什么今天我更新app之后语言变成了中文?

当然,这是我翻译过后的用户反馈。我马上测试了一下,发现当我在选择系统语言为日文的时候,app仍然是简体中文。那么问题出在哪里呢?

在我的脑海里,一直又一个这样的假设:当所有本地化语言都与iOS系统语言不符合的时候,Base Internationlization就应该起作用了,现在看起来并不是这么一回事儿。

在上一个版本中,我有更新了两个跟语言有关的地方:一个是pbproject中的developmentRegion和项目info.Plist文件中的Localization native development region,我起初一度以为这两者是一个东西,后来发现完全不是。那么问题来了:到底是谁在作怪呢?

事实证明:developmentRegion并不会影响到app默认语言的显示,他只是影响到了Project > Info > Localizations,在导出xliff文件中才会有作用。

在我把Localization native development region从China改到United States之后,这个问题就不再存在了。非美式英文,简体中文,台湾繁体的用户将会使用英文,并且国际化文件会使用Base文件。

结论

另外值得注意的是,在用户侧,iOS保有一个叫做『首选语言顺序』的东西。它可以在设置,通用,语言和的确分类下设置。这样的一个顺序干了这么一件事情:当app并未提供当前iOS系统的语言时,iOS会对比是否提供了『首选序言序列』中的其他语言,如果仍然没有才会显示默认语言。

而这个最终的默认语言,是由Localization native development region决定的。