【问题标题】:Catalan and Basque resources in AndroidAndroid 中的加泰罗尼亚语和巴斯克语资源
【发布时间】:2012-12-06 01:22:46
【问题描述】:

当您想在 Android 中添加特定于语言环境的资源时,您必须将语言的小写 ISO-3166-1 代码添加到资源文件夹的名称中。到目前为止一切顺利。

现在我想将CatalanBasque 字符串添加到我的应用程序中。根据 ISO 列表,我必须添加 values-cavalues-eu。但这真的有用吗?

编辑:在您的应用中使用自定义语言选择器,您可以提供对语言的支持,即使它们不在设备的设置菜单中。我已经在 GitHub 上提供了用于此目的的库: https://github.com/delight-im/Android-Languages

我不知道 Android 是否支持所有 ISO 代码,以及是否会显示这些“次要”语言。如果 Android 不支持这些语言,可能设备甚至不会将此语言识别为其默认语言环境,而只会使用 es 表示西班牙语。

有人可以帮忙吗?

【问题讨论】:

  • 看到这个stackoverflow.com/questions/3615587/localization-android和这个stackoverflow.com/questions/7973023/…。我认为ca 可以从Gingerbread 获得,我认为basque 语言不一样。
  • 谢谢!加泰罗尼亚语似乎从 Android 2.3 开始得到官方支持,是的。但是巴斯克语似乎根本不被支持(官方)。因此我的问题是:你能使用 Android 本身没有被翻译成的语言吗?
  • 我自己还没有这样做,但请查看文档developer.android.com/reference/java/util/Locale.htmlLocale 类的文档,看看您是否无法构建自己的。
  • Locale 类在后台拉取字符串并确定您的应用程序以哪种语言显示?我对此表示怀疑。
  • 不完全正确 - 许多设备在设置菜单中提供有限的语言选择,但实际上可以使用诸如LocaleSwitch 之类的应用程序设置为任何系统区域设置它应该很容易测试Jorge 的建议是否正确,通过在 LocaleSwitch 中添加自定义语言环境,然后添加资源文件夹来查看系统是否自动执行。 Gingerbread 对加泰罗尼亚语的“支持”可能仅引用自 2.3 以来包含的 android.R 值。

标签: android localization


【解决方案1】:

我们现在可以创建我们的“values-eu-rES”文件夹并在巴斯克语中使用我们的应用程序,Android Lollipop 已经做到了。

【讨论】:

    【解决方案2】:

    许多设备在设置菜单中提供有限的语言选择,但实际上可以使用LocaleSwitch 等应用程序设置为任何系统区域设置。

    应该很容易测试是否支持巴斯克语,方法是在 LocaleSwitch 中添加自定义语言环境,然后添加资源文件夹以查看系统是否自动从该文件夹加载资源。

    最后,Gingerbread 对加泰罗尼亚语的“支持”可能只引用了自 2.3 以来包含的 android.R 值,尽管我在 framework repository 中看不到它们。

    【讨论】:

    • 谢谢!是的,当我使用 LocaleSwitch 将语言环境设置为 Basque 时,应用程序会从 values-eu 加载资源。令人惊讶的是,Android (4.0) 似乎也支持巴斯克语,因为联系人应用程序、设置应用程序等已将其名称更改为巴斯克语等价物。但我猜大多数用户将无法将他们的语言设置为巴斯克语,因此不会加载资源。
    • 这是个好消息!让我们希望一些制造商在相关国家/地区的手机零售中提供巴斯克设置。在任何情况下,您都可以在您的应用中提供一个设置来设置语言环境。
    【解决方案3】:

    实际上,并非所有语言都记录在 Android 文档中,许多品牌都使用了您的自定义 Android 版本,这可能会更改其列表,但请确保如果设备支持加泰罗尼亚语和/或巴斯克语,它将使用 ISO 标准,并且值将通过字符串比较进行转换。

    如果您发现大多数设备在您的测试中不支持此功能,那么放置手动更换器可能是一个不错的选择。

    【讨论】:

    • 谢谢!所以你建议这样的解决方案? stackoverflow.com/questions/2900023/…
    • 我从来没有使用过,但它看起来比我想象的更漂亮,那是一个手动转换器......类似于一个系统使用的东西,但你必须加载你的文件,使用你 getString() 和最糟糕的部分,通过代码加载每个字符串。
    【解决方案4】:

    问题是,如果设备上的语言选择列表中没有列出该语言,则资源将永远无法使用,因为用户永远无法将设备置于此配置中。

    另一方面,如果设备允许您选择巴斯克语,它将使用这种格式,并且将使用您的资源。

    【讨论】:

    • 谢谢!正如我在三星 Galaxy Tab 2 (Android 4.0.3) 上看到的,Android 似乎已经支持巴斯克语。但是,尽管如此,我的手机设置中并没有这种语言可供选择。所以我需要希望巴斯克语提供者将巴斯克语添加到可用语言列表中,否则我的资源永远不会被加载,对吧?
    • 您可以随时使用stackoverflow.com/questions/4696134/force-locale-in-application 更改应用内的语言环境表单,但对系统的副作用可能会有所不同。
    【解决方案5】:

    我们可以创建一个文件夹

    巴斯克字符串 -> value-eu [巴斯克]

    另一个文件夹

    加泰罗尼亚语字符串 -> value-ca [加泰罗尼亚语]

    【讨论】:

      【解决方案6】:

      在 LocaleSwitch 中添加新语言,您需要输入 ISO 639-1 代码。例如,如果您想切换到巴斯克语,您需要输入“eu”。之后,您将看到新的语言环境为“vasco”。

      这让我觉得 android 支持巴斯克语言环境。

      【讨论】:

      • 不,它没有暗示 Android 支持此语言环境。首先,Android 没有针对该语言环境的特定语言资源。其次,大多数 Android 版本不会在语言设置中列出“巴斯克语”。
      • 你说的不对。我正在编写一个应用程序,我能够做到这一点。巴斯克代码是“欧盟”,因为加泰罗尼亚代码是“猫”。我的意思是,Android 不直接支持 basque,但是 Java 的 Locale 类可以做到;)。
      • 不,你误解了我想说的话。 Java 的Locale 类接受您传入的任何语言环境字符串——一切都会正常工作。但是 Android 系统没有翻译一些不常见的语言,并且 Android 在设置菜单中的语言环境选择不会让您选择“巴斯克语”,例如,因为它在列表中不提供该选项。但正如我所说,这取决于版本、制造商等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2017-02-10
      • 2016-03-05
      相关资源
      最近更新 更多