Android Studio:以编程方式切换资源中的字符串值,而不更改区域设置

时间:2016-06-27 20:36:19

标签: java android xml android-studio

对于我在Android Studio中制作的移动应用程序,我希望用户可以更改应用程序的语言。这个想法如下:我有多个strings.xml文件(针对不同的语言),我想在语言改变时切换到特定的文件(例如,如果语言改为德语,切换到文件strings.xml(de) ))。但是,我似乎无法找到一种以编程方式切换到另一个strings.xml文件的方法。我可以在网上找到的唯一解决方案是更改系统的语言环境,但我宁愿避免使用此选项。有没有办法以编程方式更改strings.xml文件,而不更改区域设置?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我使用了updateConfiguration方法,感谢Sergey Glotov的链接:

Locale locale2 = new Locale("en");
Locale.setDefault(locale2);

Configuration config2 = new Configuration();
config2.locale = locale2;

getBaseContext().getResources().updateConfiguration(
                        config2,getBaseContext().getResources().getDisplayMetrics());

所以现在应用程序正在使用string-en资源文件! :d

然而,Resources.getSystem().getConfiguration().locale.getDisplayLanguage()是"法语"所以我的地方不会改变。那是你想要的吗?

答案 1 :(得分:0)

我建议使用Android-LocalizationActivity库。

该库使得在运行时更改应用程序语言变得非常简单。您的所有活动都需要实施LocalizationActivity,其范围为AppCompatActivity。之后,您可以拨打setLanguage("en");来切换应用中使用的语言 可以在github页面找到包含以下示例代码和更多信息的示例项目。

关于以编程方式更改语言的

this question也可能包含一些有用的答案。