Java Android Studio:以编程方式切换资源中的字符串值,而不更改区域设置
对于我在Android Studio中制作的移动应用程序,我希望用户能够更改应用程序的语言。想法如下:我有多个strings.xml文件(用于不同的语言),当语言更改时,我想切换到一个特定的文件(例如,如果语言更改为德语,则切换到file strings.xml(de))。然而,我似乎找不到一种方法以编程方式切换到另一个strings.xml文件。我能在网上找到的唯一解决方案是更改系统的语言环境,但我宁愿避免这个选项。是否有任何方法可以通过编程方式更改strings.xml文件,而不更改区域设置 提前谢谢 我建议使用图书馆 此库使在运行时更改应用程序的语言变得非常简单。您的所有活动都需要实现Java Android Studio:以编程方式切换资源中的字符串值,而不更改区域设置,java,android,xml,android-studio,Java,Android,Xml,Android Studio,对于我在Android Studio中制作的移动应用程序,我希望用户能够更改应用程序的语言。想法如下:我有多个strings.xml文件(用于不同的语言),当语言更改时,我想切换到一个特定的文件(例如,如果语言更改为德语,则切换到file strings.xml(de))。然而,我似乎找不到一种方法以编程方式切换到另一个strings.xml文件。我能在网上找到的唯一解决方案是更改系统的语言环境,但我宁愿避免这个选项。是否有任何方法可以通过编程方式更改strings.xml文件,而不更改区域设置
本地化活动
,该活动扩展了AppCompatActivity
。之后,您可以通过调用setLanguage(“en”)来切换应用程序中使用的语言代码>
在github页面上可以找到包含以下示例代码和更多信息的示例项目
关于以编程方式更改语言,可能还包含一些有用的答案。由于Sergey Glotov的链接,我使用了updateConfiguration方法,如下所示:
Locale locale2 = new Locale("en");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(
config2,getBaseContext().getResources().getDisplayMetrics());
现在应用程序正在使用字符串en资源文件!:D
但是,Resources.getSystem().getConfiguration().locale.getDisplayLanguage()
是“法语”,所以我的语言环境没有改变。这就是你想要的吗?可能的重复:这个问题是关于更改区域设置以更改语言,我希望避免。可能的重复不是关于更改系统区域设置,locale.setDefault()
只更改应用程序中的区域设置。只是说:你的应用程序不应该提供此功能。我不知道你为什么想要这个功能,你可能有很好的理由,但应用程序应该始终使用手机的系统语言。这是用户选择的语言,因此他或她希望所有应用程序都使用该语言。