【问题标题】:Android localization values-** folder namesAndroid 本地化值-** 文件夹名称
【发布时间】:2012-12-03 22:52:33
【问题描述】:

我看到了几个相互冲突的表格,它们显示了本地化以及它们应该采用什么名称

他们中的很多人建议每个国家/地区都有该语言的版本,这很好,对于英语、西班牙语和中文等语言,我可以选择创建一个 values-en 文件夹或 values-en_US 文件夹,如果我想让它更具体

但是像希腊语这样的其他语言有一个语言环境名称 el_GR ,我可以只创建一个文件夹名称 values-el 还是必须是 values-el_GR

这只是一个例子,我不相信我读过的表格,android 开发者指南几乎没有列出可用的语言环境

【问题讨论】:

    标签: android localization locale


    【解决方案1】:

    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 Emulator 尝试了自定义区域设置,它没有看到区域文件夹。我更改了模拟器语言,一切都很好。不要相信模拟器自定义语言环境功能的家伙。
    • 那么是否有可能只拥有values-en 而没有默认values?我不得不处理重复的字符串,我认为只有values-en。你怎么看?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      都可以在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 code country code 参考https://developer.android.com/reference/java/util/Locale.html

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多