我目前正在嘗試本地化我的android應用程序,我已經設置了一切,但它會一直加載相同的字符串資源,只要我嘗試更改語言。從資源的Android本地化
我有以下字符串資源
values
values-am
values-om
SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
String languageLocale = sharedPreferences.getString("SAVED_LANGUAGE_LOCALE", "am");
Log.d(TAG,languageLocale);
String languageToLoad = languageLocale; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
我也是用下面的代碼在不同的活動
RadioGroup.OnCheckedChangeListener radioGroupOnCheckedChangeListener =
new RadioGroup.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton checkedRadioButton = (RadioButton)mRadioGroup.findViewById(checkedId);
int checkedIndex = mRadioGroup.indexOfChild(checkedRadioButton);
//AppController languageSetting = (AppController)getApplication();
SavePreferences(KEY_SAVED_RADIO_BUTTON_INDEX, checkedIndex);
mLanguageId = checkedIndex + 1;
languageSetting.setLanguageId(mLanguageId);
switch (mLanguageId){
case 1:
SavePreferencesLocale(KEY_SAVED_LANGUAGE_LOCALE,"en");
mTest = "en";
break;
case 2:
SavePreferencesLocale(KEY_SAVED_LANGUAGE_LOCALE,"am");
mTest = "am";
break;
case 3:
SavePreferencesLocale(KEY_SAVED_LANGUAGE_LOCALE,"om");
mTest = "om";
break;
}
}};
現在的問題是,每當應用程序啓動選擇的語言第一次加載正確的字符串資源,但是當我改變語言時,它保持相同的字符串資源。這意味着例如。如果應用程序以values-am字符串資源開頭,當我將其更改爲值-om時,儘管區域設置分配有正確的值(「om」),但我仍然可以看到值-m字符串
通過「保持相同的字符串資源」 - 你的意思是它沒有意見,本地化那些更新當前值? – aelimill
@aelimill是的,這就是我的意思。 –
您需要手動更新所有需要的視圖或在活動中調用recreate()。可悲的是,但這是我知道使它自動工作的唯一途徑 – aelimill