title: Set-up the application Language in Android Preferences
body: <p>I would like the application language to be set according to the user preferences but up till now it doesn't work how I would like it to.</p>
  
  <p>I have set the default values: strings.xml and also values-es with a strings.xml inside in spanish. I have a menu option which brings the user to a Preference activity where he can amon gother things chose the language. </p>
  
  <p>So here are some extracts of the code: </p>
  
  <pre><code>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());
              }
          }
      }
  </code></pre>
  
  <p>So when I change the language it works but then when I come back later or restart the emulator the language gets back to default locale the en_US and the app language gets changed back to default again. What can I do to sort that out? </p>
  
  <p>I know I can get this preference (which I can access to from all my activities) and then each time set up the locale but I find it a bit heavy isn't there a way to do it in a more <strong>elegant way</strong>? </p>
  
  <p>What I would like to do is if the user sets up the language so when he comes back 2 days later he doesn't have to change the language again.</p>
  
  <p>Any ideas?</p>