这是我第一次这样做。我想在我的应用中选择包含Arabic
和English
的语言。我有一个问题,当用户更改应用程序的语言时,它不会更改文本,只会更改布局方向。我有2个String
文件。我搜索了English
的原始文档,而搜索string-ar
的其他Arabic
并尝试了许多解决方案。
其中之一位于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
文件中的文本没有更改。
答案 0 :(得分:0)
我在许多项目中使用了本文的示例,并且效果很好。
如文章中所述,您需要一个一个地更新文本或任何其他与语言相关的资源。或者,您可以调用activity.recreate()重新启动当前加载的活动。然后,该活动将使用正确的语言环境重新加载资源。但是,如果选择此选项,则用户会注意到这种影响,因为它将关闭应用程序,并且在很短的时间内出现黑屏,然后同时重新创建活动。
答案 1 :(得分:0)
创建活动时,将语言和其他配置应用于该活动。因此,如果要应用更改,则需要通过recreate()方法重新创建活动。