无法在Android应用中显示中文传统语言

时间:2016-11-11 07:45:56

标签: android

我有数组文件夹:

<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>

我已将文件夹名称&#34; values-zh-rTW&#34;在res文件夹和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();

    }

2 个答案:

答案 0 :(得分:6)

在Android 7+(API 24)中,加载繁体中文字符串资源略有变化。要在您的应用中同时支持繁体中文和简体中文,您现在必须明确创建至少2个语言文件:

  • values-zh/strings.xml - 简体中文(zh, zh-CN, zh-SG)
  • values-zh-rTW/strings.xml - 适用于繁体中文(zh-TW, zh-HK)

如果您不包含values-zh-rTW/strings.xml,那么 Android 7设备将重新使用英语,而不是简体中文。这很不寻常和令人困惑。 (Android 6及以下将回退到值-zh - 简体中文,只需要一个语言文件)

更多信息:

答案 1 :(得分:5)

得到它,如果你们使用的语言使用类似zh-rTW或anylanguage-blabla的语言

然后你必须拆分语言代码“ - ”,然后在

中传递第二个参数
struct Returner {
    val: i32,
}

impl<'a> Returner {
    fn get(&'a self) -> Box<Fn(i32) -> i32 + 'a> {
        Box::new(move |x| x + self.val)
    }
}

按预期完成所有工作