Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Obtener el idioma actual en el dispositivo

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

  • Invocación de método puede producir java NullpointerException
  • Obtener número de teléfono sin código de país en Android
  • Mostrar el diálogo "Abrir con" en Android
  • Android, clase no encontrada en el archivo jar importado
  • Preferencias de Android: ¿Cómo cargar los valores predeterminados cuando el usuario no ha utilizado la pantalla de preferencias?
  • Animar bot / parte inferior de la vista viola desplazamiento en recyclerView
  • AppCompatEditText.getpParent () dentro de TextInputLayout devuelve FrameLayout
  • SharedPreferences no persistente
  • Android VideoView cómo escalar como tipo de escala ImageView fitXY?
  • RxJava y datos almacenados en caché
  • Barra de herramientas extendida con vista personalizada que no se muestra con ancho completo
  • La instalación de SDK de Android no encuentra JDK
  • 15 Solutions collect form web for “Obtener el idioma actual en el dispositivo”

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

    Locale.getDefault().getDisplayLanguage(); 

    He comprobado los métodos Locale 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 

    Puede "extraer" el idioma de la localidad 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:

     String locale = context.getResources().getConfiguration().locale.getDisplayName(); String locale = java.util.Locale.getDefault().getDisplayName(); 

    Lo que funcionó para mí fue:

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

    Resource.getSystem () devuelve un objeto de recursos compartidos globales que proporciona acceso sólo a recursos del sistema (sin recursos de la aplicación) y no está configurado para la pantalla actual (no se pueden usar unidades de dimensión, no se modifica en función de la orientación, etc.).

    Para ahorrar tiempo y / o confusión a otros, quería compartir que he probado las dos alternativas propuestas por Johan Pelgrim arriba y en mi dispositivo son equivalentes – si la ubicación predeterminada es o no cambiada.

    Por lo tanto, el ajuste predeterminado 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 el escenario en la configuración del teléfono (diga a italiano (Italia)) y vuelva a ejecutar entonces ambas cadenas en la respuesta de Johan dar el locale como italiano (Italia).

    Por lo tanto creo que el post original de Johan es correcto y el comentario de gregm es incorrecto.

    Como se describe en la referencia de Locale, la mejor manera de obtener lenguaje es:

     Locale.getDefault().getLanguage() 

    Este método devuelve la cadena con id de idioma según ISO 639-1 standart

    Puedes usar esto

     boolean isLang = Locale.getDefault().getLanguage().equals("xx"); 

    Cuando "xx" es cualquier código de idioma como "en", "fr", "sp", "ar" …. y así sucesivamente

    Para añadir a la respuesta de Johan Pelgrim

     context.getResources().getConfiguration().locale Locale.getDefault() 

    Son equivalentes ya que la clase android.text.format.DateFormat utiliza ambos intercambiablemente, por ejemplo

     private static String zeroPad(int inValue, int inMinDigits) { return String.format(Locale.getDefault(), "%0" + inMinDigits + "d", inValue); } 

    y

     public static boolean is24HourFormat(Context context) { String value = Settings.System.getString(context.getContentResolver(), Settings.System.TIME_12_24); if (value == null) { Locale locale = context.getResources().getConfiguration().locale; // ... snip the rest ... } 

    Puede intentar obtener la configuración regional de los recursos del sistema:

     PackageManager packageManager = context.getPackageManager(); Resources resources = packageManager.getResourcesForApplication("android"); String language = resources.getConfiguration().locale.getLanguage(); 

    Hay dos idiomas.

    Idioma predeterminado del sistema operativo:

     Locale.getDefault().getDisplayLanguage(); 

    Idioma actual de Aplicación:

     getResources().getConfiguration().locale.getDisplayLanguage();//return string 

    Puede utilizar este código para averiguar el teclado actual

     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodSubtype ims = imm.getCurrentInputMethodSubtype(); String locale = ims.getLocale(); 

    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 VIEJO.

    Si elige un idioma que no puede escribir este griego puede ser útil.

     getDisplayLanguage().toString() = English getLanguage().toString() = en getISO3Language().toString() = eng getDisplayLanguage()) = English getLanguage() = en getISO3Language() = eng 

    Ahora inténtalo con el griego

     getDisplayLanguage().toString() = Ελληνικά getLanguage().toString() = el getISO3Language().toString() = ell getDisplayLanguage()) = Ελληνικά getLanguage() = el getISO3Language() = ell 
     if(Locale.getDefault().getDisplayName().equals("हिन्दी (भारत)")){ // your code here } 

    La forma correcta de obtener el idioma de su dispositivo es la siguiente:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return context.getResources().getConfiguration().getLocales().get(0); } else { return context.getResources().getConfiguration().locale; } 

    Espero eso ayude.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.