部署后语言更改 - Android
Language Change After Deploy - Android
我的应用程序支持 6 种语言。我使用下面的函数在它们之间切换。为了创建它们,我使用了 android 翻译器。当我在多个设备上测试我的应用程序时,它工作得很好,但是当我将它部署在 play store
(作为捆绑包)上时,只有 2 个可以工作 (英语和希腊语)其他语言 (俄语、意大利语、法国、德语) 不起作用。即使我将我的设备语言更改为该特定语言它也不会改变。有什么想法吗?
---编辑---
我发现当应用程序安装时它并不包含所有的字符串文件。如果您指定一种语言,那么它会下载并显示它们。当从应用程序商店安装应用程序以拥有所有 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 而不是一个捆绑应用程序。显然,捆绑应用程序不包含所有语言文件,它会根据设备区域设置下载它们。
我的应用程序支持 6 种语言。我使用下面的函数在它们之间切换。为了创建它们,我使用了 android 翻译器。当我在多个设备上测试我的应用程序时,它工作得很好,但是当我将它部署在 play store
(作为捆绑包)上时,只有 2 个可以工作 (英语和希腊语)其他语言 (俄语、意大利语、法国、德语) 不起作用。即使我将我的设备语言更改为该特定语言它也不会改变。有什么想法吗?
---编辑---
我发现当应用程序安装时它并不包含所有的字符串文件。如果您指定一种语言,那么它会下载并显示它们。当从应用程序商店安装应用程序以拥有所有 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 而不是一个捆绑应用程序。显然,捆绑应用程序不包含所有语言文件,它会根据设备区域设置下载它们。