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



我对这里的指导有点困惑。

在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并且es_US是唯一可用的东西,似乎无论如何都会找到它们(通过上下遍历树)?

对于小型开发人员来说,只有一种翻译可用于特定语言(例如,只有es_ES),将其粘贴到父语言环境文件夹中仍然是一个合理的策略(例如es)? 这样,它应该交付给任何请求的西班牙语变体,无论是在 Android 7 之前还是之后? 但这违背了上述指导。

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

但是

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

如果您只有一个翻译可以同时使用,这是有意义的。

为什么不将它们放在es_US下,因为对于Android 7,即使设备设置为es_ES并且es_US是唯一可用的东西,似乎无论如何都会找到它们(通过上下遍历树)?

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

对于小型开发人员来说,只有一种翻译可用于特定语言(例如,只有es_ES),将其粘贴到父语言环境文件夹(例如 es)中仍然是一个合理的策略吗? 这样,它应该交付给任何请求的西班牙语变体,无论是在 Android 7 之前还是之后?

一千台设备中只有不到一台在 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开发人员网页上的内容。

对于应用程序,只要您没有区域变体,请使用通用文件夹:又名"es"而不是"es-US"。 因此,所有 ES 演讲者都将使用该翻译。(不分地区)

然后,您可以覆盖一些单词,例如en-US vs en-GB的"颜色与颜色"。

对于谷歌Play商店:我不确定。 因为没有"es",而只有"es-es","es-xxx"。 而且逻辑似乎不同。

最新更新