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?

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.

  • ¿Hay alguna herramienta para convertir un archivo de cadena localizada de Iphone en un archivo de recursos de cadena que se puede usar en Android?
  • ¿Cómo puedo utilizar msgid durante la localización de las cadenas de Android?
  • Establecer dinámicamente vínculos a texto en strings.xml
  • Servicios de Google Play o Servicios de ubicación de Android
  • Cómo probar la integridad de string.xml
  • Al publicar apk en Google Play, se eliminaron algunas localizaciones
  • Androide. ¿Cómo usar los mismos mensajes localizables para todos los idiomas de un país?
  • "Auth_client_using_bad_version_title" se traduce aquí pero no se encuentra en la configuración predeterminada
  • Tengo la aplicación Android que se está ejecutando en la versión en Inglés Ahora los clientes quieren que se convierta en idioma árabe
  • Cambiar la configuración regional en tiempo de ejecución?
  • Llamada de escucha de la ubicación de Android muy a menudo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.