Android:解析语言资源(在应用和Play商店中)

时间:2016-11-22 08:34:48

标签: android localization locale translation

我对指南here感到有些困惑。

在Android 7之前,设备似乎尝试了特定的语言环境,例如fr_FR如果没有此类语言资源,则会删除该国家/地区并查看fr

在此基础上,鉴于我没有大量的翻译人员来翻译成每个本地变体,我一直坚持将翻译保留在父文件夹中,例如: frde等。如果用户不喜欢正在投放的变体,则应用中有一个选项可供选择。

对于Android 7及更高版本,指南似乎是:

  

以最常见的父方言存储资源。例如,如果您之前将西班牙语资源存储在values-es-rUS目录中,请将它们移动到包含拉丁美洲西班牙语的values-b+es+419目录中。

但肯定如果您的西班牙语翻译实际上是es_US,那么将它们视为es_419是没有任何意义的(因为es_USes_419不同)?为什么不将它们留在es_US下,因为对于Android 7来说,无论如何它们都会被找到(通过遍历树然后向下),即使设备设置为es_ES和{{1唯一可用的东西?

对于小型开发人员,只有一种可用于特定语言的翻译(例如只有es_US),将其加入父语言环境文件夹(例如es_ES)仍然是合理的策略吗?这样,它应该是针对任何要求的西班牙语版本,包括Android 7之前和之后的版本?但这与上述指导相违背。

至于 Play商店中的应用程序描述的翻译,在我看来,没有像Android中那样的任何分层分辨率逻辑......似乎只是一个单位语言列表。所以说你只有西班牙语(西班牙)的翻译,然后为了在美国,拉丁美洲和西班牙使用它(基于西班牙语的不同变体比英语的机器翻译更好),你需要将它复制到美国西班牙语,拉丁美洲西班牙语和西班牙语西班牙语插槽......没有通用的“西班牙语”插槽吗?

2 个答案:

答案 0 :(得分:0)

  

但是,如果您的西班牙语翻译实际上是针对es_US,那么将它们视为es_419(因为es_US和es_419不同)是没有任何意义的吗?

如果您只有一个翻译可供两者使用,那么这是有意义的。

  

为什么不把它们留在es_US下,因为对于Android 7来说,无论如何它们都会被找到(通过遍历然后向下遍历树),即使设备被设置为es_ES并且es_US是唯一可用的东西? / p>

会被发现,但会稍微慢一些。

  

对于一个小型开发人员,只有一种可用于特定语言的翻译(例如只有es_ES),将其加入父语言环境文件夹(例如es)仍然是一种合理的策略吗?这样,它应该是针对任何请求的西班牙语版本,包括Android 7之前和之后的版本?

不到千分之一的设备是在7之前的Android上运行,因此除非您拥有遗留代码库,否则支持这些设备是没有意义的,因为向后兼容性会增加复杂性。

如果您只有一个翻译,并说他们的设备设置为es_MX,它将搜索es_MX,然后搜索es,然后搜索es_ES等其他es子项。如果你只有一个翻译,可以。您可能希望在XML中添加注释,它是一个es_ES转换,但是您将它放在es中,因为您只有一个转换(尽管将它留在es_ES中也没问题,因为es_MX设备如果找不到则会使用es_ES es_MX或es目录)。

如果您有足够的新Android设备,可以测试这些内容。或模拟器。将values目录设置为一个东西,将设备设置为另一个,并查看您获得的特定翻译。它将遵循您在链接到的Android开发人员网页上所说的内容。

答案 1 :(得分:0)

对于应用程序,只要您没有区域变体,就使用通用文件夹:aka“es”而不是“es-US”。 因此翻译将被所有ES发言人使用。 (无论在哪个地区)

那么你可能会为en-US vs en-GB覆盖一些像“color vs color”这样的词。

对于谷歌游戏商店:我不确定。因为没有“es”,但只有“es-ES”,“es-xxx”。而逻辑似乎有所不同。