如何在不改变手机语言的情况下更改Android应用程序的语言?

4

我希望用户可以在应用内选择语言。一旦选择了语言,我希望字符串使用该特定语言。

如果我更改手机语言,则我的应用程序将在设置的语言上运行。

我无法找到任何不更改手机语言而设置语言的方法。此外,一旦设置语言,更改应该立即反映出来。

请问是否有人能够建议一种方法来实现这个功能?


请在应用程序中使用本地化。 - Jhaman Das
@JhamanDas,实际上我是本地化的新手。你能分享一些资源指南、链接或其他东西吗? - Sujit Devkar
好的,如果您想使用阿拉伯语,请创建一个名为values-ar的文件夹,并创建字符串资源文件。 - Jhaman Das
尝试先阅读这些内容:https://dev59.com/Vmcs5IYBdhLWcg3wXi1D#12954037 和 https://dev59.com/N2w15IYBdhLWcg3wqNqM#10596034。这应该能解决问题... - TroniPM
1
https://dev59.com/nHE85IYBdhLWcg3wMAfc - Jhaman Das
1个回答

8

试试这个

public static void changeLang(Context context, String lang) {
    Locale myLocale = new Locale(lang);
    Locale.setDefault(myLocale);
    android.content.res.Configuration config = new android.content.res.Configuration();
    config.locale = myLocale;
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}

Lang参数应该是“en”表示英语,“it”表示意大利语...之后您需要重新启动您的activity/fragment。


1
什么是重新启动活动的最佳方法?我如何将其实现到设置中? - A P
@Avi,在更改语言后,只需在Activity中简单地调用recreate()即可。 - Sam
不重新创建活动或片段,这是可能的吗?@aloj,@Sam - Maulik Dodia
1
该解决方案仅适用于当前活动,如果返回到先前的活动,则不再起作用。 - zeleven
@Sam 在更改语言后,只需在 Activity 中简单调用 recreate() 即可。但是,当用户进入设置并更改语言时,您如何知道这一点呢?不仅仅是在您的应用程序受控环境中发生的事情? - portfoliobuilder
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接