2015-02-11 2 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-RTW

название приложения отличается для каждого языка, поэтому я также попытался изменить Язык из настроек устройства, теперь также на упрощенном китайском языке загружается правильно, но традиционные китайцы не loa динь. Но здесь имя приложения изменяется на традиционный китайский, то есть на имя приложения загружаются значения-zh-rTW

Где я ошибаюсь, должен ли я изменить папку для традиционного китайского?

+1

Вы нашли решение для этого? –

ответ

-1

Из моего опыта, лучше иметь ценности-ZH-RCn для упрощенного китайского и значения-ZH-RTW для традиционного. Кроме того, и это может быть уже то, что вы делаете где-то еще в своем коде, для изменения локали вручную требуется перезагрузить активность, чтобы повлиять. Поэтому достаточно просто Finish() и StartActivity().

0

Я знаю, что это поздний пост, но надеюсь, что это поможет кому-то ..

Решения просто создать Locale, используя название страны. Это означает, что класс 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()); 
} 
Смежные вопросы