首页 > 解决方案 > 部署后的语言更改 - 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());
    }
}

标签: javaandroidlocale

解决方案


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


推荐阅读