2015-02-11 60 views
2

在我的應用程序中,我可以選擇從中文切換到繁體中文。Android改變中國和中國傳統中國語言環境

我使用微調,其中位置1是中國人,2是傳統中國人。當選擇位置1,這裏是我的代碼,切換語言

if (pos == 0) 
{ 
    langSelected ="en"; 
}    
else if (pos == 1) 
{ 
    langSelected ="zh"; 
}    
else if (pos == 2) 
{ 
    langSelected ="zh-rTW"; 
} 
Locale locale = new Locale(lang);   
Locale.setDefault(locale); 
android.content.res.Configuration config = new android.content.res.Configuration(); 
config.locale = locale; 
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

@Override 
public void onConfigurationChanged(android.content.res.Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    if (locale != null){ 
     newConfig.locale = locale; 
     Locale.setDefault(locale); 
     getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics()); 
    } 
} 

雖然從英文切換到中國使用微調正確的語言被加載,但加載傳統的中國(ZH-RTW)的時候,只有中國文字被載入

我在價值觀ZH,在那裏我已經裝在中國傳統的文字我的簡化的中國文本值-ZH-RTW

的應用程序名稱不同,對於每一種語言,所以我也試圖改變來自設備設置的語言,現在也以簡體中文加載正確,但繁體中文不是Loa丁。但在這裏我去的地方不對應用程序的名稱被改變了中國傳統的,即應用程序的名稱從負載值-ZH-RTW

,我應該改變對中國傳統的文件夾?

+1

你找到這個解決辦法嗎? – 2016-03-07 10:39:51

回答

-1

從我的經驗,最好是有值-ZH-RCN簡體中國和值-ZH-RTW傳統。另外,這可能已經是您在代碼中進一步做的事情,手動更改區域設置需要重新加載活動才能生效。所以簡單的Finish()StartActivity()就足夠了。

0

我知道這是一個遲到的職位,但希望它可以幫助別人..

的解決方案是簡單地創建使用國名一個區域。這意味着Locale類已經聲明瞭一些靜態語言環境。例如: -

中國的語言環境 - https://developer.android.com/reference/java/util/Locale.html#CHINA

臺灣的語言環境 - https://developer.android.com/reference/java/util/Locale.html#TAIWAN

所以簡單地說,解決的辦法是: -

Locale locale; 
if(lang.equals("zh-rTW")) 
    locale = Locale.TAIWAN; 
else(lang.equals("zh-rCN") 
    locale = Locale.CHINA; 
else 
    //handle other languages 
2

這段代碼改變中國簡體和繁體的語言環境:

public void setAppLocale(Context context, String languageCode, String countryCode){ 
    Resources resources = context.getResources(); 
    Locale locale = new Locale(languageCode, countryCode); 
    Locale.setDefault(locale); 
    Configuration configuration = new Configuration(); 
    configuration.setLocale(locale); 
    resources.updateConfiguration(configuration, resources.getDisplayMetrics()); 
}