提问者:小点点

Android:解析语言资源(在app和Play Store中)


我有点被这里的指导弄糊涂了。

在Android7之前,似乎该设备会尝试特定的语言环境,例如fr_fr,如果没有这样的语言资源,那么它会去掉国家并在fr中查找。

在此基础上,考虑到我没有一支庞大的翻译队伍来翻译每一个本地变体,我一直将翻译添加到父文件夹中,例如frde等。如果用户不喜欢交付的变体,应用程序中有一个选项可以选择其他变体。

对于Android 7及以上版本,指导意见似乎是:

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

但是,如果您的西班牙语翻译实际上是ES_US的,那么将它们视为ES_419是没有任何意义的(因为ES_USES_419是不同的)?为什么不把它们留在es_us下,因为对于Android7来说,即使设备被设置为es_es,而且es_us是唯一可用的东西,似乎也会找到它们(通过在树中上下遍历)?

对于一个小型开发人员来说,一种特定语言只有一个翻译可用(例如,只有ES_ES),将其粘贴到父区域设置文件夹(例如,ES)是否仍然是一个合理的策略?这样,无论Android7之前还是之后,它都可以提供给任何所需的西班牙语变体?但这违背了上述指导意见。

至于Play Store中应用程序描述的翻译,在我看来,没有任何像Android那样的分层解析逻辑...似乎有一个语言的单一列表。假设您只有西班牙语(西班牙)的翻译可用,那么为了在美国、拉丁美洲和西班牙使用(基于西班牙语的不同变体比英语的机器翻译更好),您是否需要将其复制到美国西班牙语、拉丁美洲西班牙语和西班牙西班牙语插槽中...没有通用的“西班牙语”插槽?


共1个答案

匿名用户

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

如果您只有一个翻译可以同时使用这两种语言,那么这是有意义的。

为什么不把它们留在es_US下面呢,因为对于Android7来说,即使设备被设置为es_ES,而es_US是唯一可用的东西,它们似乎还是会被找到(通过在树中上下遍历)?

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

对于一个小型开发人员来说,一种特定语言只有一个翻译可用(例如,只有es_ES)将其添加到父区域设置文件夹(例如es)中是否仍然是一个合理的策略?这样,无论Android7之前还是之后,它都可以提供给任何所需的西班牙语变体?

一千台设备中只有不到一台是7号之前的Android,所以支持这些设备是没有意义的,除非你有一个遗留的代码库,因为向下兼容增加了复杂性。

如果您只有一个翻译,并且说他们的设备设置为es_MX,它将搜索es_MX,然后搜索es,然后搜索其他es子级,如ES_ES。如果你只有一个翻译,es也可以。您可能希望在XML中添加一个注释,说明它是es_ES翻译,但您将它放入es,因为您只有一个翻译(尽管将它保留在es_ES中也没有问题,因为es_MX设备在没有es_MX或es目录时将使用es_ES)。

如果你有一个新的和库存足够多的Android设备,你可以测试这些东西。或模拟器。将values目录设置为一个,将设备设置为另一个,然后查看您得到的是哪个特定的翻译。它将按照你链接到的Android developer网页上的内容执行。