当用户更改应用程序的语言时,它不会更改文本,它会更改布局方向
When user change the language of the app , It doesn't change the texts it change the layout direction
这是我第一次这样做。我想在我的应用程序中选择包含 Arabic
和 English
的语言。我有一个问题,当用户更改应用程序的语言时,它不会更改文本它只会更改布局方向。我有 2 String
文件。 English
的原件和 Arabic
的另一个 string-ar
我搜索并尝试了很多解决方案。
其中之一在 this article
这是我的代码。
public void setLocaleAr (){
Locale locale = new Locale("ar");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
Resources resources = getResources();
resources.updateConfiguration(config, resources.getDisplayMetrics()); //deprecated
}
编辑 : 当我使用我的代码时。我 Spinner
中的文本发生了变化。但是 xml
文件中的文本没有改变。
我在许多项目中使用了本文中的示例,效果很好。
正如文章中所说,您需要逐一更新文本或任何其他语言相关资源。或者您可以调用 activity.recreate() 重新启动当前加载的 activity。然后 activity 将使用正确的语言环境重新加载资源。然而,如果你 select 这个选项你的用户会注意到影响,因为它会关闭你的应用程序并且你会在很短的时间内黑屏然后重新创建你的 activity 同时再次。
在创建 activity 时,语言和其他配置将应用于 activity。因此,如果您希望应用更改,则需要通过 recreate() 方法重新创建 activity。
这是我第一次这样做。我想在我的应用程序中选择包含 Arabic
和 English
的语言。我有一个问题,当用户更改应用程序的语言时,它不会更改文本它只会更改布局方向。我有 2 String
文件。 English
的原件和 Arabic
的另一个 string-ar
我搜索并尝试了很多解决方案。
其中之一在 this article
这是我的代码。
public void setLocaleAr (){
Locale locale = new Locale("ar");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
Resources resources = getResources();
resources.updateConfiguration(config, resources.getDisplayMetrics()); //deprecated
}
编辑 : 当我使用我的代码时。我 Spinner
中的文本发生了变化。但是 xml
文件中的文本没有改变。
我在许多项目中使用了本文中的示例,效果很好。
正如文章中所说,您需要逐一更新文本或任何其他语言相关资源。或者您可以调用 activity.recreate() 重新启动当前加载的 activity。然后 activity 将使用正确的语言环境重新加载资源。然而,如果你 select 这个选项你的用户会注意到影响,因为它会关闭你的应用程序并且你会在很短的时间内黑屏然后重新创建你的 activity 同时再次。
在创建 activity 时,语言和其他配置将应用于 activity。因此,如果您希望应用更改,则需要通过 recreate() 方法重新创建 activity。