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

标签 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 吗?

最佳答案

每当您执行 onCreate() 以及系统的其他一些调用时,配置都会被覆盖。因此,您需要将区域设置保存在 SharedPreferences 中,并在每个 Activity 的每个 onCreate() 方法中进行设置。

请参阅此处了解可能的方法: Change app language programmatically in Android

关于java - Locale.getLanguage() 刷新 UI 后未更新(语言更改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974899/

相关文章:

JavaFX:位置未设置

java - 有没有办法在不使用 values/strings.xml 的情况下本地化 android 应用程序?

c# - 旋转和平移对象

android - Cordova 复制/粘贴菜单为灰色

compiler-construction - 如何从 BNF 设计抽象语法树 (AST)

java - 异常 : mockito wanted but not invoked, 实际上与此模拟的交互为零

java - AndroidDriver 类型未定义方法 complexFind(String)

java - 在 JPA 查询中使用 CURRENT_DATE 的示例

android - 如何使编辑文本 float 在工具栏和主布局的顶部

java - 如何在 Android 中转换日期和时间