部署后语言更改-Android

时间:2019-07-05 14:16:08

标签: java android locale

我的应用程序支持 6种语言。我使用以下功能在它们之间切换。为了创建它们,我使用了android转换器。当我在多台设备上测试我的应用程序时,它可以很好地工作,但是当我将其部署在play store(作为捆绑包)上时,其中只有2种(英语和希腊语)其他语言< strong>(俄语,意大利语,法国,德语)无效。即使我将设备语言更改为该特定语言,它也不会更改。有什么想法吗?

---编辑---

我发现,安装该应用程序后,它并不包含所有字符串文件。如果指定语言,则它将下载并显示它们。从应用商店中安装该应用以包含所有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());
    }
}

1 个答案:

答案 0 :(得分:0)

所以我找到了解决方法。如果我创建一个apk而不是捆绑应用。显然,捆绑软件应用程序并不包含所有语言文件,而是根据设备区域设置下载它们。