Me gustaría cambiar el idioma (configuración regional de la aplicación) mediante programación.Android y localización de menú
El principal problema para mí es la actualización de las etiquetas de menú.
He probado el siguiente método:
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if (shouldChangeMenuLabels) {
for (int i = 0; i < menu.size(); i++) {
MenuItem menuItem = menu.getItem(i);
switch (menuItem.getItemId()) {
case R.id.menu_main_about:
menuItem.setTitle(R.string.menu_about);
break;
case R.id.menu_main_preferences:
menuItem.setTitle(R.string.menu_prefs);
break;
}
}
shouldChangeMenuLabels = false;
}
Pero estoy seguro de que mala idea. Quiero evitar el uso de la sentencia switch-case ya que este no es un método universal (no puedo simplemente portar el recorte a otras actividades/no puedo hacer clases abstractas que harían eso).
Por cierto, todos los menús se han descrito en los archivos de menú/*. Xml, por lo que no quiero duplicar el código. ¿Alguien tiene ideas?
Preocupados por primera respuesta: Me hae cambiado la configuración regional con el siguiente código:
Locale locale = new Locale((String)newValue);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplication().getResources().updateConfiguration(config, getApplication().getResources().getDisplayMetrics());
Pero como yo quiero controlar la rotación de cada actividad, nunca terminado. Tal vez hice algo mal?
Lo hice. (Me refiero a values-xx/string.xml y values / string.xml). ¿Quiere crear menu-xx/mymenu.xml? – davs
Tiene valores-xx/string.xml con una cadena, menu_about y values-yy/string.xml con una cadena, menu_about. Establece la configuración regional de su teléfono en yy, y el valor de la cadena no cambia a yy? ¿Con qué entornos locales estás probando? http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch habla sobre cómo decide qué valor usar, es posible que no tenga su configuración regional configurada correctamente. –
Estoy probando con en/ru locales. Pero como no destruí las actividades, el menú no se ha actualizado. Por lo tanto, decidí borrar el menú y crearlo desde cero. – davs