DataBinding 会干扰 Activity 的本地化吗?
Can DataBinding interfere with localizing an Activity?
TL;DR
我有一个支持多种语言的应用程序。尽管使用了所有常用的本地化方法,但有一个 activity 没有被翻译。它是应用程序中唯一 Activity 充分利用 DataBinding
.
完整解释
我有一个使用 DataBinding
的 Activity
。所以基本上,Activity 的整个 XML
布局都包含在 <layout>
标签内。这就是我膨胀视图并获得绑定的方式:
SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity);
XML
中有多个 TextViews
的文字是这样设置的:
...
android:text="@string/<name of a string>"
...
我们为用户提供预定义的语言选项,并使用
设置应用区域
Locale.setDefault(new Locale("<language name>"));
在英语语言环境中,一切正常。
当应用程序处于不同的语言环境时,activity 中的字符串仍然以英语显示 - 即使这些字符串已被翻译成适当的语言,并且位于相同的字符串中应用程序的其余部分从中获取字符串的文件。在 activity 启动之前,应用程序正常 - 在 activity 启动并且我退出它之后,应用程序恢复到英语语言环境,直到它被杀死并重新启动。如果该 Activity 从未打开,应用程序将按预期运行。
有人知道是什么原因造成的吗?谢谢。
弄清楚发生了什么。它与 ViewBinding 无关。 activity 以横向模式启动 - 由于某种原因重置应用程序区域设置。 This answer 帮我修好了。
TL;DR
我有一个支持多种语言的应用程序。尽管使用了所有常用的本地化方法,但有一个 activity 没有被翻译。它是应用程序中唯一 Activity 充分利用 DataBinding
.
完整解释
我有一个使用 DataBinding
的 Activity
。所以基本上,Activity 的整个 XML
布局都包含在 <layout>
标签内。这就是我膨胀视图并获得绑定的方式:
SomeActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.some_activity);
XML
中有多个 TextViews
的文字是这样设置的:
...
android:text="@string/<name of a string>"
...
我们为用户提供预定义的语言选项,并使用
设置应用区域Locale.setDefault(new Locale("<language name>"));
在英语语言环境中,一切正常。
当应用程序处于不同的语言环境时,activity 中的字符串仍然以英语显示 - 即使这些字符串已被翻译成适当的语言,并且位于相同的字符串中应用程序的其余部分从中获取字符串的文件。在 activity 启动之前,应用程序正常 - 在 activity 启动并且我退出它之后,应用程序恢复到英语语言环境,直到它被杀死并重新启动。如果该 Activity 从未打开,应用程序将按预期运行。
有人知道是什么原因造成的吗?谢谢。
弄清楚发生了什么。它与 ViewBinding 无关。 activity 以横向模式启动 - 由于某种原因重置应用程序区域设置。 This answer 帮我修好了。