我对这里的指导有点困惑。
在Android 7之前,设备似乎尝试了特定的区域设置,例如fr_FR
,如果没有这样的语言资源,那么它会剥离国家并寻找fr
.
在此基础上,鉴于我没有庞大的翻译人员队伍来翻译成每个本地变体,我一直将翻译粘贴到父文件夹中,例如fr
、de
等。 如果用户不喜欢正在交付的变体,则可以在应用中选择一个选项来选择任何其他变体。
对于 Android 7 及更高版本,指南似乎是:
以最常见的父方言存储资源。例如,如果您之前将西班牙语资源存储在
values-es-rUS
目录中,请将它们移动到包含拉丁美洲西班牙语的values-b+es+419
目录中。
但是,如果您的西班牙语翻译实际上是针对es_US
的,那么将它们视为es_419
没有任何意义(因为es_US
和es_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"。 而且逻辑似乎不同。