¿Por qué Locale.getDefault (). GetLanguage () en Android devuelve el nombre para mostrar en lugar del código de idioma?
De acuerdo con la referencia de Java, se supone que Locale.getLanguage () devuelve el código ISO minúsculas de 2 letras del lenguaje (por ejemplo, "en"), mientras que getDisplayLanguage () es el método para obtener el nombre legible (por ejemplo, inglés) .
Entonces, ¿cómo llega el siguiente código en Android:
- La actividad está parpadeando tras el cambio de configuración regional en Android 4.1+
- Forzar locale para Android con resConfig
- ¿Cómo detectar si el idioma es el inglés (Todas las variantes) en Android?
- Lenguaje hindi
- La configuración de Android cambia de forma aleatoria al valor predeterminado
Locale.getDefault().getLanguage()
Devuelve "English" o "Español" en lugar de "en" y "es" ????
Estoy completamente desconcertado …
- Cómo restaurar la configuración regional predeterminada de una aplicación para Android
- Android: Cómo obtener una cadena en una configuración específica SIN cambiar la configuración actual
- Cambiar el idioma de las cadenas en la actividad de Android
- Los números arábigos con ar-ae y ar-sa locale en Android
- Cómo configurar el texto del cuadro de diálogo de google api en el idioma predeterminado de la aplicación
- Android Cómo instalar los locales instalados del sistema
- Configuración de la configuración regional ¿No funciona?
- ¿Cómo mostrar la casilla de verificación a la izquierda cuando cambie el idioma de la aplicación de Android al árabe?
Utilizar
GetResources (). GetConfiguration (). Locale.getLanguage ()
Y funcionará muy bien a pesar de que consideraría su comportamiento observado un error que vale la pena informar.
Lo he descubierto. Esto sucedió porque previamente había llamado Locale.setDefault () y le había pasado una localización que a su vez yo había creado erróneamente pasándolo todo el nombre de idioma (tomé el idioma de una configuración de preferencia y me equivocadamente escogió la etiqueta de la entrada en su lugar Del valor).
Es decir, lo hice:
String lang= //... here I assigned "English" while I thought // I was assigning it "en" Locale locale=new Locale(lang); Locale.setDefault(locale); // (*) // and later Locale.getLocale().getLanguage(); //returns "english"
Así que cuando pregunté por la configuración por defecto, en realidad era la localidad que había creado cuyo código de idioma que había establecido erróneamente en "inglés".
Hay un par de cosas divertidas, sin embargo:
- La línea (*) realmente funciona y realmente cambia la configuración regional a inglés (o al español cuando utilicé "español"), es decir, setDefault () parece aceptar una configuración "mal formada" e incluso la entiende. Pero no lo arregla.
- Nota Utilicé el inglés en mayúsculas al establecer incorrectamente la configuración regional, pero al final devuelve "inglés" todo en minúsculas.
No sé por qué aparece este problema, pero otro estándar para idiomas es el código ISO3. Puede llamar a Locale.getDefault().getISO3Language()
y debe devolver "eng" o "esp".
Android devuelve los nombres legibles en lugar de los códigos.
Locale.getDefault () tiene la cadena. Por lo tanto, si llama a cualquier impresión o registro que funcionará … significa Locale.getDefault (). ToString () tiene su código de configuración regional.
- Depuración de una aplicación WebView (Ionic) en Android mediante logcat
- La mejor manera de realizar una acción periódicamente – Handler?