2016-11-11 45 views
4

顯示中國傳統的語言,我有數組文件夾:不能在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> 

我在res文件夾和Android工作室把文件夾名「值-ZH-RTW」只能說明深航在翻譯編輯

現在根據我的代碼,我可以選擇英文和中文簡體,但是當我從設置中選擇中文傳統英文顯示不是爲什麼?

這裏是我的代碼來獲取語言和設置的語言:

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(); 

    } 
+0

據我所知,您需要重新啓動整個應用程序更改語言。你可以從[Android的本地化活動](https://github.com/akexorcist/Android-LocalizationActivity)學到它 –

+0

我已經重申了應用程序,因爲我已經說過英語和簡體中文可以更改爲適當後重新啓動,但何時我選擇繁體中文重啓英文顯示也許語言代碼是問題 – AndroidBeginnerJhon

回答

3

知道了,如果你們使用的是其採用這樣的ZH-RTW或anylanguage-布拉布拉

那麼你有語言分裂語言代碼「 - 」,然後通過第二個參數

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

所做的一切工作按預期

3

加載傳統中文字符串資源在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設備將回退到趙運sh,不是簡體中文。這很不尋常和令人困惑。 (安卓6和下面將回退到值-ZH - 簡體中國)

更多信息:

+0

所以我不需要香港地區的值-zh-rHK/strings.xml對嗎? –

+0

@RichardFu,沒錯,是的。爲了支持'中文,香港(繁體)'語言,Android 7將在values-zh-rTW/strings.xml(中國臺灣地區)使用該文件,而Android 6將以values-zh /字符串使用該文件。 xml(如果你沒有zh-rHK文件)。您可以使用「MoreLocale 2」應用驗證此功能,以更輕鬆地更改系統語言。 –

+0

但這聽起來很糟糕,香港的所有Android 6之前都會顯示簡體中文......我們應該使用zh來代替Traditional,zh-rCN使用簡體中文嗎? –