Quero que meu aplicativo ofereça suporte a três idiomas: espanhol, português e inglês. E dê a opção de selecionar o idioma no aplicativo. Eu fiz
1) 3 pastas drawable drawable-es, drawable-pt, drawable.
2) pasta de 3 valores valores-es, valores-pt, valores. Altere os valores String.xml de acordo com os idiomas.
Tenho imageView para selecionar o idioma.Ao clicar nele, abra o menu que consiste na opção Inglês, Espanhol, Português.
Eu defino Locale dentro do aplicativo na seleção de opções por este código
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.en:
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
break;
case R.id.pt:
Locale locale2 = new Locale("pt");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
break;
case R.id.es:
Locale locale3 = new Locale("es");
Locale.setDefault(locale3);
Configuration config3 = new Configuration();
config3.locale = locale3;
getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
Eu declarei no Manifest- android: configChanges = "locale"
Funciona, mas tem algum problema.
Problema:-
1) Quando o idioma é selecionado, a tela que consiste na imagem da seleção do idioma não muda, mas as outras telas são alteradas.
2) Após a mudança de orientação, restaurar o idioma do aplicativo de acordo com a localidade do telefone.
android:configChanges="locale"
for your Activity dentro do AndroidManifest.xml