Play商店发布的Android应用程序语言设置无效。

6

我可以在按下按钮时更改应用程序语言环境。这在AVDs上,以及在API 30的实际设备上的调试和发布版本APK上都能够完美运行。

但是,一旦应用程序发布到Play Store版本,它就无法工作了,语言环境永远不会更改。

请帮忙解决!谢谢!

以下是SettingsFragment中的代码:

private void setAppLocale(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = context.getResources().getConfiguration();
    config.setLocale(locale);
    context.createConfigurationContext(config);
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
    Intent refresh = new Intent(getActivity().getApplicationContext(), MainActivity.class);
    startActivity(refresh);
    getActivity().finish();
}

以上代码在按钮被按下后被调用,所选项被存储在共享首选项中。该活动被刷新并加载主活动,但区域设置从未更改。

这是我的MainActivity的样子:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    hideSystemUI();

    sharedPref = getPreferences(Context.MODE_PRIVATE);
    selectedLanguage = sharedPref.getString("Test.SL.LanguageName", language);
    selectedTheme = sharedPref.getString("Test.SL.ThemeName", "Light");

    if (selectedTheme.equals("Light")){
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    } else if (selectedTheme.equals("Dark")) {
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    }

    if (selectedLanguage.equals("Sinhala")) {
        language = "Sinhala";
        setAppLocale(this, "si");
    } else {
        language = "English";
        setAppLocale(this, "en");
    }

    binding = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());

    setSupportActionBar(binding.appBarMain.toolbar);
    
       ......

}

public void setAppLocale(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = context.getResources().getConfiguration();
    config.setLocale(locale);
    context.createConfigurationContext(config);
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}

任何想法,建议和解决方案请提出!再次感谢您!

1
你找到任何解决方案了吗?我也遇到了同样的问题。 - sneharc
我认为这会对你有所帮助。 - AkshayK
这个回答解决了你的问题吗?使用应用内语言更改的Android App Bundle - Sergei Kozelko
1个回答

0
将此代码添加到您的应用 gradle 文件中。
android {
    bundle {
        language {
            enableSplit = false
        }
    }
}

详情请查看本主题


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接