android 多语言

2023-08-30  本文已影响0人  细雨么么

项目背景#

公司项目本来就是有多语言的,但是不同国家客户的人对语言翻译的认知是不同的。因此会出现一种情况。两个客户,觉得同一种语言下的翻译是不同的。

解决方案##

 locale = new Locale("en","ab");//country 代码限制1,字母2, 两位

locale中的地区是可以瞎写的。规则见注释。


对应的文件夹

见图,可以看到瞎写的文件夹国旗都是识别不出来的。
但是切换是能正常识别到该文件夹下配置的内容的。

  public void updateLocales(LocaleList locales) {
        try {
            Class classActivityManager = Class.forName("android.app.ActivityManager");
            Method getService = classActivityManager.getDeclaredMethod("getService");
            Object objIActivityManager = getService.invoke(classActivityManager);
            Class classIActivityManager = Class.forName("android.app.IActivityManager");
            Method getConfiguration = classIActivityManager.getDeclaredMethod("getConfiguration");
            Configuration config = (Configuration) getConfiguration.invoke(objIActivityManager);
            config.setLocales(locales);
            Class[] clzParams = {Configuration.class};
            Method updateConfiguration = classIActivityManager.getDeclaredMethod("updatePersistentConfiguration", clzParams);
            updateConfiguration.invoke(objIActivityManager, config);
            // Trigger the dirty bit for the Settings Provider.
            BackupManager.dataChanged("com.android.providers.settings");
            killSettingApp();
        } catch (Exception e) {
            // Intentionally left blank
        }
    }
上一篇下一篇

猜你喜欢

热点阅读