Vorrei cambiare la lingua (impostazioni internazionali dell'applicazione) a livello di programmazione.Localizzazione Android e menu
Il problema principale per me è l'aggiornamento delle etichette dei menu.
ho provato il seguente metodo:
@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;
}
ma sono sicuro che cattiva idea. Voglio evitare di usare l'istruzione switch-case in quanto questo non è un metodo universale (non posso semplicemente eseguire il port di snipped ad altre attività/non posso fare una classe astratta che lo faccia).
BTW, tutti i menu sono stati descritti in file XML di menu/*. Quindi non voglio duplicare il codice. Qualcuno ha idee?
Preoccupato per prima risposta: ho cambiato Hae locale con il seguente codice:
Locale locale = new Locale((String)newValue);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplication().getResources().updateConfiguration(config, getApplication().getResources().getDisplayMetrics());
Ma come voglio controllare rotante per ogni attività, non sono mai finito. Forse ho fatto qualcosa di sbagliato?
L'ho fatto. (Intendo valori -xx/string.xml e valori/string.xml). Vuoi creare menu-xx/mymenu.xml? – davs
Quindi hai valori -xx/string.xml con una stringa, menu_about e valori -yy/string.xml con una stringa, menu_about. Si imposta la locale del proprio telefono su quella di yy e il valore della stringa non cambia in yy? Con quali impostazioni locali stai testando? http://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch parla di come decide quale valore usare, potresti non avere la tua locale configurata correttamente. –
Sto testando con en/ru locales. Ma poiché non ho distrutto le attività, il menu non è stato aggiornato. Quindi, ho deciso di svuotare il menu e crearlo da zero – davs