Obtener el idioma actual en el dispositivo

Resuelto Pinki asked hace 54 años • 32 respuestas

¿Cómo podemos seleccionar el idioma actual en el dispositivo Android?

Pinki avatar Jan 01 '70 08:01 Pinki
Aceptado

Revisé los métodos locales en mi dispositivo Android 4.1.2 y los resultados:

Locale.getDefault().getLanguage()       ---> en      
Locale.getDefault().getISO3Language()   ---> eng 
Locale.getDefault().getCountry()        ---> US 
Locale.getDefault().getISO3Country()    ---> USA 
Locale.getDefault().getDisplayCountry() ---> United States 
Locale.getDefault().getDisplayName()    ---> English (United States) 
Locale.getDefault().toString()          ---> en_US
Locale.getDefault().getDisplayLanguage()---> English
Locale.getDefault().toLanguageTag()     ---> en-US
trante avatar Apr 19 '2014 09:04 trante

Si desea obtener el idioma seleccionado de su dispositivo, esto podría ayudarlo:

Locale.getDefault().getDisplayLanguage();

Puede utilizar Locale.getDefault().getLanguage();para obtener el código de idioma habitual (por ejemplo, "de", "en")

DeRagan avatar Nov 18 '2010 07:11 DeRagan

Lo que funcionó para mí fue:

Resources.getSystem().getConfiguration().locale;

Resources.getSystem()devuelve un objeto de Recursos compartido global que proporciona acceso solo a los recursos del sistema (sin recursos de la aplicación) y no está configurado para la pantalla actual (no puede usar unidades de dimensión, no cambia según la orientación, etc.).

Debido a que getConfiguration.localeahora ha quedado obsoleto, la forma preferida de obtener la configuración regional principal en Android Nougat es:

Resources.getSystem().getConfiguration().getLocales().get(0);

Para garantizar la compatibilidad con las versiones anteriores de Android una posible solución sería una simple comprobación:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    locale = Resources.getSystem().getConfiguration().getLocales().get(0);
} else {
    //noinspection deprecation
    locale = Resources.getSystem().getConfiguration().locale;
}

Actualizar

A partir de la biblioteca de soporte, 26.1.0no es necesario verificar la versión de Android, ya que ofrece un método conveniente para ser compatible con versiones anteriores getLocales().

Simplemente llama:

ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration());
Sarpe avatar Feb 13 '2015 11:02 Sarpe

Puede "extraer" el idioma de la configuración regional actual. Puede extraer la configuración regional a través de la API de Java estándar o utilizando el contexto de Android. Por ejemplo, las dos líneas siguientes son equivalentes:

String locale = context.getResources().getConfiguration().locale.getDisplayName();
String locale = java.util.Locale.getDefault().getDisplayName();
Johan Pelgrim avatar Nov 18 '2010 07:11 Johan Pelgrim