Me gustaría que el idioma de la aplicación se establezca de acuerdo con las preferencias del usuario, pero hasta ahora no funciona como me gustaría.Configurar la aplicación Idioma en Android Preferencias
Establecí los valores predeterminados: strings.xml y también values-es con un strings.xml dentro de español. Tengo una opción de menú que lleva al usuario a una actividad de preferencia donde puede elegir otras cosas.
Así que aquí están algunos extractos del código:
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());
}
}
}
Así que cuando se cambia el idioma funciona pero luego cuando vuelva más tarde o reiniciar el emulador de la lengua vuelve a regional predeterminada del en_US y la el idioma de la aplicación se vuelve a cambiar a los valores predeterminados de nuevo. ¿Qué puedo hacer para solucionarlo?
Sé que puedo obtener esta preferencia (a la que puedo acceder desde todas mis actividades) y luego, cada vez que configuro la configuración regional, pero me parece un poco pesada, ¿hay alguna manera de hacerlo en un manera elegante?
Lo que me gustaría hacer es si el usuario configura el idioma, por lo que cuando regrese 2 días después no tenga que volver a cambiar el idioma.
¿Alguna idea?
He hecho lo que me dijo, pero esto cambia la configuración regional solo en la actividad principal. Simplemente agregaré el mismo código al comienzo de todas mis actividades. gracias – vallllll
Tengo que admitir que nunca intenté lo local. Parece que está basado en una configuración de usuario. ¿Has mirado esto? http://developer.android.com/resources/tutorials/localization/index.html – bytebender
sí, ya he configurado un idioma predeterminado y 2 idiomas: español y catalán, y necesito que el usuario pueda elegir él mismo el lugar. Determinar la configuración regional solo con el teléfono no es suficiente. – vallllll