【问题标题】:Android N multi-locale support not working as intendedAndroid N 多语言环境支持未按预期工作
【发布时间】:2016-09-27 04:19:59
【问题描述】:

在开发应用程序时,我尝试使用 Android N 多语言支持。正如开发人员site 所解释的那样。看来它会使用资源解析机制自动选择资源。

但它似乎不起作用,或者是我遗漏了什么?

这是完整的场景:

  1. 设备分别作为首选语言列表的葡萄牙语 (pt_PT) 和德语 (de_DE)。
  2. 应用支持的语言环境放在对应的资源文件夹中:

    一个。值(默认) 湾。价值观 C。价值观-es

所以根据开发者网站上提供的解释,它应该从 "values-de" 目录中选择语言环境。但它显示了默认值。

谁能告诉我可能出了什么问题?

【问题讨论】:

  • 分享您的文件夹结构的屏幕截图(显示所有值文件夹)和每个语言环境中 strings.xml 的内容
  • 我已经为 values 文件夹结构添加了图片,并且内容已针对每种语言进行了本地化。
  • 文件夹结构看起来不错。在您希望应用程序选择另一种语言时,您是否更改了手机设置中的区域设置?还是使用代码强制设置语言环境?
  • 我没有更改语言环境。在 Android N 中,用户可以根据使用的语言环境设置首选语言列表,如开发人员网站上的说明(带有一个很好的示例)以支持“Android N 多语言”。
  • 你能改变手机上的语言,看看它是否有效。如果确实如此,那么您在实施 N 个产品时会缺少一些东西

标签: android android-7.0-nougat


【解决方案1】:

有趣的是,此问题在示例项目中重现。但是,如果我从编译依赖项中删除“appcompat-v7”,一切都会按预期工作。我现在不知道为什么,我会继续挖掘。

更新:

添加 appcompact-v7 确实可以解决问题。观看本教程以了解原因:

https://blog.egorand.me/a-curious-case-of-multiple-locales/

【讨论】:

  • 您是否调查过为什么删除 appcompact 会产生变化?我正在努力解决同样的问题
  • 救了我的命。将 resConfigs "auto" 添加到我的 "build.gradle" 中并且可以工作!
  • @LouisLam 谢谢!我刚刚失去了 2 天的时间来寻找错误!也应该接受答案!
【解决方案2】:

我遇到了这个问题,发现删除应用不需要的替代资源可以解决这个问题。

android {
  defaultConfig {
      ...
      // Keeps language resources for only the locales specified below.
      resConfigs "de", "es"
    }
}

查看谷歌开发者文档here

【讨论】:

    【解决方案3】:

    需要在AndroidManifest.xml中添加android:configChanges="locale"

    【讨论】:

    • android:configChanges="locale" 属性已添加到 AndroidManifest.xml 文件中。我需要处理 Acitvity 类文件吗??
    • 您可以在活动类中以编程方式处理它,或者只是为活动添加 AndroidManifest.xml 它对我来说非常有效。
    猜你喜欢
    • 2012-08-30
    • 2019-01-03
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多