刷新UI(语言更改)后,Locale.getLanguage()未更新

时间:2019-07-10 16:21:24

标签: java android translation

我正在使用此功能通过编程方式将语言从英语更改为阿拉伯语:

private void setLocale(String lang) {
        Locale myLocale = new Locale(lang);
        Resources res = getContext().getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        conf.setLocale(new Locale(lang));
        Locale.setDefault(myLocale);
        res.updateConfiguration(conf, dm);
        Intent refresh = new Intent(getContext(), MainActivity.class);
        getActivity().finish();
        startActivity(refresh);

    }

语言不断变化,但是使用时 Locale.getDefault().getLanguage(); 要么 Resources.getSystem().getConfiguration().locale.getLanguage(); 尽管显示的语言是阿拉伯语,但我仍在获取英语(en)而不是期望值ar。 知道为什么它仍然返回en吗?

1 个答案:

答案 0 :(得分:0)

每当您通过onCreate()和其他一些系统调用时,配置都会被覆盖。因此,您需要将语言环境保存在SharedPreferences中,并在每个活动的每个onCreate()方法中进行设置。

有关可能的方法,请参见此处: Change app language programmatically in Android