gpt4 book ai didi

无论设置中的语言偏好顺序配置如何,Android 应用程序都会选择默认语言

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:12 26 4
gpt4 key购买 nike

从 Android 7.0(API 级别 24)开始,用户可以在他的设备上设置首选语言(来源:LocaleList API)。我的问题是我的应用不遵守此设置 - 它不考虑第二语言。

Settings -> languages 中,我选择了我的语言首选项:

 1. Polish (preferred)
2. French

在 Android 应用程序中,我支持两种语言(默认为 enfr):

values/strings.xml (English as default)
values-fr/strings.xml (French)

使用此配置,应用程序以英语(默认)启动,而在我的语言首选项列表中有法语(我的应用程序支持法语,应该使用)。

为什么Android在这种情况下选择英文?如何解决?

注意:当我在设置中选择 FR 语言作为首选语言时,法语设置正确

EN strings.xml 文件示例:

  <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE resources [<!ENTITY applicationName "app\'s name">]>
<resources>
<string name="application_name">&applicationName;</string>
<string name="dialog_ok">OK</string>
...
</resources>

FR strings.xml 文件示例:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE resources [<!ENTITY applicationName "french name">]>
<resources>
<string name="application_name">&applicationName;</string>
<string name="dialog_ok">Oui</string>
...
</resources>

最佳答案

解决方案是在 app/build.gradleandroid.defaultConfig 中添加 resConfigs 以包含您的确切语言环境列表(什么你有在你的应用程序中):

android {
defaultConfig {
resConfigs "nb", "nn", "in", "iw", "fr", ...
}
}

请参阅“Android 国际化”教程的幻灯片,网址为 http://www.unicodeconference.org/presentations/(直接链接:http://www.unicodeconference.org/presentations/TS1T3-Nita-Pournader.pdf)

还有 https://gist.github.com/amake/0ac7724681ac1c178c6f95a5b09f03ce


解释:通过语言环境列表的回退发生在开始时,而不是在加载字符串时。

现在大多数应用程序都使用某种支持库。 Google 支持库已本地化为大约 80 种语言,这些库中的资源已合并到您的应用程序中。

在加载时,系统会按列表中的顺序检查本地化资源,从支持库中找到一些波兰语的“痕迹”,并决定将您的应用程序翻译成波兰语。

所以它决定您实际上使用的是波兰语,将默认语言环境设置为波兰语(这样您就可以得到日期、时间等。格式化为波兰语)。但是当它尝试加载字符串时,找不到任何内容,并从默认文件夹(在值中)加载字符串,这些字符串是英语。

通过使用 resConfigs,您告诉资源编译器只在 apk 中包含您想要的语言环境。所以它会从支持库中删除一些波兰语字符串。现在加载程序将检查,没有波兰语字符串,转到法语,一切正常。

这不仅可以解决您的问题,还可以生成(稍微)更小的 apk。

关于无论设置中的语言偏好顺序配置如何,Android 应用程序都会选择默认语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47287950/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com