对于be-BY语言,Android资源解析策略失败

时间:2018-04-05 07:52:00

标签: android xamarin.android android-7.1-nougat

我遇到的行为是我无法通过使用Android官方参考资源解析策略来解释的。我使用的是Android 7.1.1。

我的应用有以下资源:

  1. 值茹
  2. 值ゐRBY
  3. 值ゐRKZ
  4. 系统语言列表如下:

    1. be_BY
    2. kk_KZ
    3. 问题:根据Resource Resolution example我期望应用配置区域设置(Resources.Configuration.Locale)将成为默认区域设置。但令人惊讶的是,Android仍然是be_BY。 当这两种语言的顺序被还原时(1. kk_KZ,2。be_BY),Android将配置区域设置更改为be_BY,尽管我的应用程序根本没有be_BY或kk_KZ资源。该应用程序引用en资源后。

      只要我将值-be-rBY和values-kk-rKZ文件夹添加到我的应用程序项目中,Android就会正确设置语言环境 - be_BY用于语言列表

      1. be_BY
      2. kk_KZ
      3. 和kk_KZ用于语言列表

        1. kk_KZ
        2. be_BY
        3. 基于这个事实,我假设Android根据指定的资源设置应用程序区域设置,但它与描述的问题

          相矛盾

          所以,这是我的问题:我的理解是否正确?为什么会出现这种情况?

1 个答案:

答案 0 :(得分:0)

最后我发现了。我的应用使用了Google Play服务,该服务已经过本地化,但没有kk_KZ本地化。资源也被放入resources.arsc文件中。因此,在Android无法找到kk_KZ资源后,它会尝试使用下一种语言 - 在我的情况下为be_BY并停止在be_BY语言环境中搜索。 我还在Android Studio演示应用中检查了这一点,发现它的行为是一样的。所以,这似乎是一种原生行为。