Obtener el idioma del usuario en android

Http://web.archiveorange.com/archive/v/fwvde0wN3xcViMtADw6x

Parece que la propiedad navigator.language siempre es "en" en webview en androides. Entonces, ¿cuál es la mejor manera de obtener el idioma del usuario? ¿Consígalo en código nativo de java y lo vierte en webview por javascript? O cualquier otra manera mejor?

4 Solutions collect form web for “Obtener el idioma del usuario en android”

La solución que encontré a este problema es establecer el agente de usuario a través de la configuración de la webview:

WebSettings settings = wv.getSettings(); settings.setJavaScriptEnabled(true); settings.setUserAgentString(Locale.getDefault().getLanguage()); 

En su webcontent usted lo recupera a través de:

 var userLang = navigator.userAgent; 

Esto sólo debe utilizarse para una vista web que muestre contenido local.

Una manera de resolver esto es tomar el userAgent – navigator.userAgent , y ejecutar un regex en él buscando el idioma.

Ejemplo Android ua string (de http://www.gtrifonov.com/2011/04/15/google-android-user-agent-strings-2/ ):

Mozilla / 5.0 (Linux, U, Android 2.0.1, en-us, Droid Build / ESD56) AppleWebKit / 530.17 (KHTML, como Gecko) Versión / 4.0 Mobile Safari / 530.17

Por lo que sólo coinciden con el lenguaje: navigator.userAgent.match(/[az]{2}-[az]{2}/) , que devuelve en-us

Si quieres estar realmente seguro, puedes igualar la presencia de Android 2.0.1; Inmediatamente anterior al idioma. El regex para eso sería:

navigator.userAgent.match(/Android \d+(?:\.\d+){1,2}; [az]{2}-[az]{2}/).toString().match(/[az]{2}-[az]{2}/)

Esto podría ayudar:

 Locale.getDefault().getDisplayLanguage(); 

Realmente depende de dónde necesites esta información. Si necesita la Locale.getDefault() regional de Android OS, Locale.getDefault() sería suficiente. Para el lado del servidor, la mejor manera de detectar Locale es leer el contenido del encabezado Accept-Language del protocolo HTTP.
En tal caso, la detección de localización depende de la tecnología del lado del servidor utilizada. Para Servlet simple, sólo haría request.getLocale() , para JSF lo leería desde UIViewRoot, etc.

  • Adición de archivos de localización de cadenas de un servidor
  • Nombre del directorio de recursos para la variante de idioma?
  • ¿Cómo se puede localizar nodpi extraíble?
  • Android - La mejor manera de implementar LocationListener a través de múltiples actividades
  • Androide. ¿Cómo usar los mismos mensajes localizables para todos los idiomas de un país?
  • Hindi carácter ver diferentes en diferentes dispositivos
  • Cambio de idioma en tiempo de ejecución Android
  • ¿Cómo puedes localizar una oración con un número dinámico de conjunciones?
  • Habilitar a terceros independientes para localizar aplicaciones de Android; Datos de localización fuera del APK de la aplicación
  • Cómo localizar una aplicación de Android en idioma indonesio
  • ¿Cuál es el nombre de la carpeta "valores" para el idioma danés?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.