Android本地化数值-**文件夹名称

23

我看到了几个相互矛盾的表格,展示了本地化文本及其应该采用的名称

其中许多表格建议每个国家都有该语言的版本,这对于像英语、西班牙语和中文这样的语言来说是可以接受的,我可以选择创建一个values-en文件夹或values-en_US文件夹,如果我想使其更加具体。

但是其他一些语言,如希腊语,有一个区域设置名称el_GR,我可以只创建一个名为values-el的文件夹,还是必须是values-el_GR

那只是一个例子,我不信任我所读到的表格,而且Android开发者指南没有列出可用的语言环境

3个回答

44
Android字符串文件的文件夹名称应按如下格式编写:
  • 没有地区变体: values-[locale]
  • 有地区变体: values-[locale]-r[region]
  • 例如:values-envalues-en-rGBvalues-el-rGR
对于希腊语翻译,您只需要创建一个名为values-el的文件夹,以及一个名为values-el-rGR的文件夹用于特定国家/地区的希腊语翻译。
同时,您可以利用Android的资源回退机制,允许将特定字符串在本地进一步翻译。
例如,假设您有一个名为“R.string.title”的字符串,而区域设置为'el-GR',Android将按以下顺序搜索文件中的“R.string.title”值:
  • res/values-el-rGR/strings.xml
  • res/values-el/strings.xml
  • res/values/strings.xml
因此,您可以将特定于某个国家/地区的翻译放在res/values-el-rGR/strings.xml中,让res/values-el/strings.xml存储通用翻译。
通过利用这种回退机制,可以避免在不同的语言文件中重复编写字符串。

感谢这些技巧。我尝试在 Android 模拟器上使用自定义语言环境,但它无法看到区域文件夹。我改变了模拟器的语言,现在一切都很好。不要相信模拟器的自定义语言环境功能哦。 - emresancaktar
那么只有 values-en 而没有默认的 values 是可能的吗?我必须处理重复的字符串,我认为只有 values-en 会更好。你觉得呢? - TheRealChx101
我们已经在设备上将语言环境设置为sr-ME和sr-RS,但是只有一个值为sr的文件夹作为公共字符串。由于某种原因,对于sr-RS,回退机制起作用,但对于sr-ME却不起作用。我没有明确创建values-sr-rME,但是我应该创建吗? - undefined

5

在您的项目中右键单击“res”文件夹。选择 > 新建 > Android 资源文件 > 本地化 - 它会为您提供所有可能的语言和区域选项,甚至创建所需的文件夹。


0

所有内容都可以在https://developer.android.com/index.html中找到。

  1. https://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

该页面描述了多个资源定义,例如drawable、value等。

  1. https://developer.android.com/training/basics/supporting-devices/languages.html

该页面提供了语言资源定义,重要的是如何创建区域目录和资源文件。

格式为<resource type>-b+<language code>[+<country code>]

language codecountry code的参考请见https://developer.android.com/reference/java/util/Locale.html

语言 ISO 639 alpha-2或alpha-3语言代码,或未来增强的注册语言子标签,最多8个字母。当一种语言具有alpha-2代码和alpha-3代码时,必须使用alpha-2代码。您可以在IANA语言子标签注册表中找到有效语言代码的完整列表(搜索“Type:language”)。 https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

国家(地区) ISO 3166 alpha-2国家代码或UN M.49数字3区域代码。您可以在IANA语言子标签注册表中找到有效国家和地区代码的完整列表(搜索“Type:region”)。

https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

其他参考:https://zh.wikipedia.org/wiki/ISO_3166-1_alpha-2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接