如何更改语言环境?不适用于某些设备

The*_*ake 11 multilingual android locale

我正在编写支持两种语言的应用程序,我正在使用更改应用程序区域设置更改语言,这里是我的代码:

 Locale locale = new Locale("fa");
            Locale.setDefault(locale);
            Configuration configs = new Configuration();
            configs.locale = locale;
            getBaseContext().getResources().updateConfiguration(configs, getBaseContext().getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)

在清单中我设置 android:supportsRtl="true"

这些代码适用于许多设备,但在某些设备中不起作用。例如文本不翻译但方向改变。

测试设备:

  • 三星 J5Pro 2018(安卓 = 7.1):有效
  • 像素 2 API 26:工作
  • 三星 J7 2017(安卓 = 7):有效
  • Nexus 5 (android = 6):不工作
  • 三星 Galaxy G531(安卓 < 棒棒糖):不工作

The*_*ake 12

我找到了我的解决方案,我的问题是我插入"fa"了语言环境并且我的字符串值目录名称是values-fa-rlIR,所以名称不同所以不起作用,我想知道为什么它在某些设备上工作!

我只是将字符串值目录名称从 更改values-fa-rlIRvalues-fa并且它运行良好。