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 将是一个不错的决定。
实际上我在我的应用程序中处理 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 将是一个不错的决定。