Настройка языка приложения в настройках Android

Я бы хотел, чтобы язык приложения был установлен в соответствии с предпочтениями пользователя, но до сих пор он не работает так, как я бы хотел .

Я установил значения по умолчанию: 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 дня, ему не нужно было снова менять язык.

Есть идеи?

6
задан Kara 20 June 2014 в 00:19
поделиться