Android给app设置某种固定语言,不再跟随系统语言变化

本文介绍了一种在Android应用中强制设置默认语言为英文的方法,通过创建自定义Application类并覆盖onCreate方法来实现语言设定,同时在AndroidManifest.xml中配置locale变更权限。文章还分享了解决语言自动切换问题的策略,即使用SharedPreferences保存和加载应用的首选语言。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司的一个项目中,app是有中文和英文两种版本的,但是之后客户要求只要英文,不要中文了,而且要将英文设置为默认语言,一开始不知道怎么做,就在网上找了很久的资料,没找到太好的答案,最后找到一篇文章,按照文章中的方法试了一下,果然有效,步骤也很简单,就3步:

1.写一个类继承Application,在onCreate方法中设置默认语言:

String languageToLoad  = "en";
        Locale locale = new Locale(languageToLoad);
        Locale.setDefault(locale);
        Configuration config = getResources().getConfiguration();
        DisplayMetrics metrics = getResources().getDisplayMetrics();
        config.locale = Locale.ENGLISH;
        getResources().updateConfiguration(config, metrics);

你需哪种语言就将languageToLoad设置为相应的简写即可

2.在AndroidManifest文件中,application标签下设置android:configChanges="locale"属性

<application
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:configChanges="locale"
        android:name="com.camera.wifi.app.MyApplication">

3.加权限:

<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>

4.但是用了这种方法后我试着切换了下中英文和其他语言,结果就变回中文了,具体的现象是:当我第一次进入时是英文这没问题,此时我到设置界面切还语言为英文时从多任务中再次进入还是英文没问题,但是我再次切换成中文或者其他语言时,就会自动变成中文了,找了很多方法都没解决。最后我的解决办法是:将第一次设置的语言用SP保存,然后在Activity的基类BaseActivity中取出保存的语言再次设置,这样继承BaseActivity的所有Activity就会自动强制设置为英文了,这次终于解决这个问题了!!!

工具类中的设置语言的方法:

 public static void setdefaultLanguage(Context context,String language) {
        Locale locale = new Locale(language);
        Locale.setDefault(locale);
        Configuration config = context.getResources().getConfiguration();
        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
        config.locale = Locale.ENGLISH;
        context.getResources().updateConfiguration(config, metrics);
        SpUtils.saveString(context,"language",language);
    }

在MainActivity的onCreate方法中调用该方法设置为英文:

LanguageUtils.setdefaultLanguage(this,"en");

在BaseActivity中的onCreate方法中再次设置语言:

LanguageUtils.setdefaultLanguage(getApplicationContext(),SpUtils.getSpString(getApplicationContext(),"language"));

 

ok了,这样就可以将app设置为指定语言了,无论设置中是什么语言你的app都是英文,即使重启手机也不会变中文,感谢作者给的解决方法!希望能对大家有帮助

转载出处:https://blog.youkuaiyun.com/tangcheng_ok/article/details/7483993

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值