java - 部署后的语言更改 - Android
问题描述
我的应用支持6 种语言。我使用下面的函数在它们之间切换。为了创建它们,我使用了 android 翻译器。当我在多台设备上测试我的应用程序时,它工作得很好,但是当我将它部署在play store
(作为捆绑包)上时,只有其中两种工作(英语和希腊语)其他语言(俄语、意大利语、法国、德语)不起作用. 即使我将设备语言更改为该特定语言,它也不会改变。有任何想法吗?
- -编辑 - -
我发现安装该应用程序时,它不包含所有字符串文件。如果您指定一种语言,那么它会下载并显示它们。当从应用商店安装应用以获取所有文件时,我如何强制下载特定字符串甚至更好string.xml
?
// My locales
tempLangLocale = new String[]{"default", "eng", "el","it","fr","de","ru"};
// Language Change functions
public void changelang(String lang) {
myLocale = new Locale(lang);
SharedPreferences prefs = getSharedPreferences("CommonPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("Language", lang);
editor.commit();
Locale.setDefault(myLocale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = myLocale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (myLocale != null) {
newConfig.locale = myLocale;
Locale.setDefault(myLocale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
解决方案
所以我找到了解决办法。如果我创建一个 apk 而不是一个捆绑应用程序。显然,捆绑应用程序不包含所有语言文件,它会根据设备区域设置下载它们。
推荐阅读
- azure-devops - Visual Studio 测试步骤成功完成后未报告代码覆盖率结果
- python - 分数函数返回未减少的分数
- postgresql - 获取旧版本 JDBC jar 的文档
- batch-file - ftp.exe 找不到作为环境变量值的文件夹
- swift - Swift:使用闭包添加 2 个数字的程序
- javascript - 过滤数组 (JS)
- matlab - MATLAB - 将不同的数组/矩阵连接到更大的矩阵
- django - 添加带有 label_tag 的 Font Awesome 图标
- docker - 如何并行化 docker run?
- sql-server - 具有两个外键列的 Sql 条件