¿Cómo podemos obtener el idioma actual seleccionado en el dispositivo Android?
android
localization
Pinki
fuente
fuente
Respuestas:
Si desea obtener el idioma seleccionado de su dispositivo, esto podría ayudarlo a:
fuente
Locale.getDefault().getLanguage();
para obtener el código de idioma habitual (por ejemplo, "de", "en").Locale.setDefault("ru")
y el idioma en la configuración del sistema está configurado en inglés, entonces el métodoLocale.getDefault().getLanguage()
devolverá "ru" , pero no "en" . ¿Existe algún otro método para obtener el idioma / idioma del SISTEMA real? Encontré una solución no documentada aquí , pero ¿hay una solución más elegante?Locale.getDefault().toString()
que proporcione una cadena que identifique completamente la configuración regional, por ejemplo, "en_US".Verifiqué los métodos Locale en mi dispositivo Android 4.1.2 y los resultados:
fuente
Locale.getDefault().getDisplayLanguage()
que vuelve"English"
Lo que funcionó para mí fue:
Resources.getSystem()
devuelve un objeto de recursos compartidos 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.locale
ahora ha quedado en desuso, la forma preferida de obtener la configuración regional primaria en Android Nougat es:Para garantizar la compatibilidad con las versiones anteriores de Android, una posible solución sería una simple comprobación:
Actualizar
Comenzando con la biblioteca de soporte
26.1.0
, no necesita verificar la versión de Android, ya que ofrece un método conveniente compatible con versiones anterioresgetLocales()
.Simplemente llame:
fuente
ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())
getLocales
es el camino a seguir. He actualizado mi respuesta.Puede 'extraer' el idioma del entorno local actual. Puede extraer la configuración regional a través de la API Java estándar, o mediante el contexto de Android. Por ejemplo, las dos líneas siguientes son equivalentes:
fuente
Locale.setDefault()
con anticipación a otro lugar y obtendrá resultados diferentes.Para ahorrar tiempo y / o confusión a los demás, quería compartir que he probado las dos alternativas propuestas por Johan Pelgrim arriba y en mi dispositivo son equivalentes, ya sea que se cambie o no la ubicación predeterminada.
Por lo tanto, la configuración predeterminada de mi dispositivo es inglés (United Kindom) y en este estado, como se esperaba, ambas cadenas en la respuesta de Johan dan el mismo resultado. Si luego cambio la configuración regional en la configuración del teléfono (digamos a italiano (Italia)) y vuelvo a ejecutar, ambas cadenas en la respuesta de Johan dan la configuración regional como italiano (Italia).
Por lo tanto, creo que la publicación original de Johan es correcta y el comentario de gregm es incorrecto.
fuente
Puedes usar esto
cuando "xx" es cualquier código de idioma como "en", "fr", "sp", "ar" ... y así sucesivamente
fuente
Como se describe en la referencia de Locale, la mejor manera de obtener el idioma es:
Este método devuelve una cadena con ID de idioma según el estándar ISO 639-1
fuente
si el nivel de API es 24 o superior, use
LocaleList.getDefault().get(0).getLanguage()
else useLocale.getDefault.getLanguage()
referencia: https://developer.android.com/guide/topics/resources/multilingual-support
fuente
Para agregar a la respuesta de Johan Pelgrim
son equivalentes porque la
android.text.format.DateFormat
clase usa ambos indistintamente, por ejemploy
fuente
Puede intentar obtener la configuración regional de los recursos del sistema:
fuente
Las respuestas anteriores no distinguen entre chino simple y chino tradicional.
Locale.getDefault().toString()
funciona que devuelve "zh_CN", "zh_TW", "en_US" y etc.Referencias a: https://developer.android.com/reference/java/util/Locale.html , ISO 639-1 es OLD.
fuente
Esta solución funcionó para mí. Esto le devolverá el idioma del dispositivo Android (no el idioma local de la aplicación)
Esto devolverá "en" o "de" o "fr" o el idioma de su dispositivo configurado.
fuente
Puede usar este código para averiguar la corriente del teclado
fuente
Hay dos idiomas
Idioma predeterminado del sistema operativo:
Idioma actual de aplicación:
fuente
Si elige un idioma que no puede escribir, este griego puede ser útil.
Ahora pruébalo con griego
fuente
Si desea verificar un idioma actual, use la respuesta de @Sarpe (@Thorbear):
fuente
DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date())
.fuente
La forma correcta de obtener el idioma de su dispositivo es la siguiente:
Espero eso ayude.
fuente
le dará un
Written
nombre para el idioma, por ejemplo,English, Dutch, French
te dará
language code
, por ejemplo:en, nl, fr
Ambos métodos devuelven String
fuente
fuente
Los otros han dado buenas respuestas para el idioma del dispositivo,
si desea que el idioma de la aplicación sea la forma más fácil de hacerlo, agregue una
app_lang
clave a sustrings.xml
archivo y especifique también el idioma para cada uno de ellos.De esa manera, si el idioma predeterminado de su aplicación es diferente del idioma del dispositivo, puede elegir enviarlo como parámetro para sus servicios.
fuente
fuente
Mi solucion es asi
y entonces
se muestra ---> es
fuente
Aquí hay un código para obtener el país del dispositivo. Compatible con todas las versiones de Android, incluso oreo.
Solución: si el usuario no tiene una tarjeta SIM que el país de destino, se utiliza durante la configuración del teléfono o la selección del idioma actual.
fuente
Si desea realizar una tarea específica para los usuarios que residen en la India y que hablan hindi, use a continuación si la condición
fuente