Android:应用程序应如何处理设备的语言更改

Android: how should an app handle the device's language change

实际上我在我的应用程序中处理 3 种语言,所以我有:

values/strings.xml

values-it/strings.xml

values-de/strings.xml

当我安装应用程序时,它以设备的当前语言正确安装。 但是,如果我更改设备的语言,应用程序的语言不会切换。我必须重新安装它才能切换语言。

我发现其他应用也会出现这种情况,但并非全部。 "big" 个(whatsapp、viber、所有 google 等)发生变化。

所以问题是:应用程序如何跟随设备的语言变化?

除非您在 Androidmanifest 文件

中为 activity 指定了 android:configChanges="locale",否则它应该可以正常工作

我添加一个答案来帮助遇到同样问题的人。 要获得语言已更改的事件,要做的第一件事就是将其添加到清单中:

<activity
    ....
    android:configChanges="layoutDirection|locale"
    ....
</activity>

请注意layoutDirection没有它,它不起作用!只有locale不会触发事件。它与从右到左的语言有关,但我没有进一步调查。

然后,在activity中添加一个:

@Override
public void onConfigurationChanged(Configuration newConfig)
{
    super.onConfigurationChanged(newConfig);
}

当应用程序恢复并且newConfig包含所有需要的信息时调用,例如newConfig.locale.getLanguage()

如何更新应用程序中的语言取决于您,但阅读@StenSoft 建议的 documentation 将是一个不错的决定。