Android应用混合语言,同时显示多种语言

时间:2017-09-30 11:29:29

标签: android localization

在开发Android应用时,我有一种奇怪的行为(我不是原始开发者,我只是刚开始更新它):

该应用程序支持两种语言(每种语言只有一个字符串文件):德语和英语。

当应用运行时,某些视图显示英语,而其他视图显示德语文本。同时。

默认语言(即res/values/strings.xml)为英语,另一个文件为res/values-ge/strings.xml。该应用程序在德国Android系统(v7.0)上运行。

所以似乎有些观点认为他们应该使用应用程序的默认设置,而其他观点则遵循用户的系统语言选择。

它甚至不一致:当我继续开发应用程序并更新两个字符串文件中的翻译时,一些视图(例如最初以德语显示的Tab栏)突然以英语显示。< / p>

我不是编程新手,为其他平台(例如iOS)做了很多多语言应用程序,所以我确实理解了基本概念。我很确定我没有把字符串文件中的键错误。

我在Mac上使用Android Studio 2.3.3,以防万一。

为什么会发生这种情况的任何想法?或者如何调试这个?我会在哪里开始寻找为什么有些观点会使用错误的语言,甚至是随机的?

更新我刚刚意识到&#34; ge&#34;毕竟,德语可能不是正确的代码。并且,令人惊讶的是,当我重命名&#34; values-ge&#34;文件夹到&#34; values-de&#34;然后我突然在某些地方获得了预期的德语文本。然而,在其他地方,我现在得到英语,我之前有德语。所以,它修正了一些观点,但打破了其他观点。我无法理解这一点。

此外,当我使用&#34; E&#34;时,日期格式化程序会用英语吐出星期几的文本。代码(new SimpleDateFormat("E, dd.MM.")):我希望看到&#34; Die,30.09。&#34;但得到&#34;星期四,30.09。&#34;。但这可能值得一个单独的问题。

2 个答案:

答案 0 :(得分:1)

原来我必须解决几个问题:

  1. 语言代码“ge”错了。正确的是“de”。
  2. 通过将文件夹名称从“values_ge”重命名为“values_de”并清理项目,甚至删除设备上的应用程序来解决此问题后,仍然会出错。最后,在重新启动Android Studio之后,即使这个问题也解决了。

答案 1 :(得分:0)

我想到的第一件事就是德语string.xml文件中可能缺少一些字符串。系统将基本使用您的系统语言,但如果它没有在该文件中找到所需的字符串,它将切换到英语string.xml的默认文件,因此这可能是导致此行为的原因。 / p>