项目背景#
公司项目本来就是有多语言的,但是不同国家客户的人对语言翻译的认知是不同的。因此会出现一种情况。两个客户,觉得同一种语言下的翻译是不同的。
解决方案##
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
}
}
网友评论