Я бы хотел, чтобы язык приложения был установлен в соответствии с предпочтениями пользователя, но до сих пор он не работает так, как я бы хотел .
Я установил значения по умолчанию: strings.xml, а также values-es с strings.xml внутри на испанском языке. У меня есть пункт меню, который переводит пользователя в действие с предпочтениями, где он может, среди прочего, выбрать язык.
Итак, вот несколько фрагментов кода:
public class Preference extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
......
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
...}
//(......)
//and here I have the listener so when the language pref changes value the locale gets changed.
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("listPref2")) {
String idioma = sharedPreferences.getString("listPref2", "catala");
if ("castella".equals(idioma)) {
idioma = "es_ES";
Locale locale = new Locale(idioma);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplicationContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
}
}
Итак, когда я меняю язык, он работает, но затем, когда я возвращаюсь позже или перезапускаю эмулятор, язык возвращается к языку по умолчанию en_US, и язык приложения снова изменяется снова по умолчанию. Что я могу сделать, чтобы разобраться в этом?
Я знаю, что могу получить это предпочтение (к которому я могу получить доступ из всех моих действий), а затем каждый раз настраивать языковой стандарт, но мне это кажется немного тяжелым, разве нет способа сделать это в более элегантный способ ?
Я бы хотел, чтобы пользователь настроил язык, чтобы, когда он вернется через 2 дня, ему не нужно было снова менять язык.
Есть идеи?