我有数组文件夹:

<string-array name="language">
    <item>English</item>
    <item>Chinese Simplified</item>
    <item>Chinese Traditional</item>
</string-array>

<string-array name="language_values">
    <item>en</item>
    <item>zh</item>
    <item>zh-rTW</item>
</string-array>

我在res文件夹中放置了文件夹名称“values-zh-rTW”,而android studio在翻译编辑器中仅显示zh

现在,按照我的代码,我可以选择简体中文和英文,但是当我从设置中选择繁体中文时,为什么不显示英文?

这是我获取语言和设置语言的代码:
private String getLanguage(Context c, String defaultLanguage) {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(c);
        return preferences.getString("language", defaultLanguage);
    }

    @SuppressWarnings("deprecation")
    public void setLanguage(Context context, String languageCode) {
        Locale locale = new Locale(languageCode);
        Locale.setDefault(locale);
        Configuration config = new Configuration();

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            config.setLocale(locale);
        } else {
            config.locale = locale;
        }

        context.getApplicationContext().getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());

        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString("language", languageCode);
        editor.apply();

    }

最佳答案

知道了,如果你们使用的语言使用诸如zh-rTW或anylanguage-blabla之类的语言

那么您必须拆分语言代码“-”,然后在中传递第二个参数

Locale locale = new Locale("zh","TW");

一切都按预期完成

10-05 22:21