resolucion pantalla pagina obtener navegador multilenguaje idioma detectar cambiar javascript flash browser localization

javascript - pantalla - La mejor forma de determinar la configuración regional del usuario dentro del navegador



obtener navegador javascript (5)

Dijiste que tu sitio web tiene Flash, entonces, como otra opción, puedes obtener el lenguaje del sistema operativo con flash.system.Capabilities.language - consulta Cómo determinar el idioma del sistema operativo dentro del navegador para adivinar la configuración regional de un sistema operativo.

Tengo un sitio web (Flash) localizado en una docena de idiomas y quiero definir automáticamente un valor predeterminado según la configuración del navegador del usuario para minimizar los pasos para acceder al contenido.

FYI, no puedo usar scripts de servidor debido a restricciones de proxy, así que supongo que JavaScript o ActionScript serían apropiados para resolver el problema.

Preguntas:

  1. ¿Cuál sería el mejor método para "adivinar" la configuración regional del usuario?

  2. ¿Existen clases / funciones simples que puedan ayudarme (sin paquetes de localización complejos)? Especialmente para descomponer todos los idiomas posibles en un número más pequeño (las traducciones que tengo) de una manera inteligente.

  3. ¿Hasta qué punto puedo confiar en tal solución?

  4. ¿Alguna otra solución o sugerencia?


En Chrome y Firefox 32+, navigator.languages ​​contiene una matriz de configuraciones regionales en orden de preferencia del usuario, y es más preciso que navigator.language, sin embargo, para hacerlo compatible con versiones anteriores (Chrome / IE / Firefox / Safari probado), luego use esta:

function getLang() { if (navigator.languages != undefined) return navigator.languages[0]; else return navigator.language; }


Hice un poco de investigación con respecto a esto y resumí mis hallazgos hasta ahora en la siguiente tabla

Entonces la solución recomendada es escribir un script del lado del servidor para analizar el encabezado Accept-Language y pasarlo al cliente para configurar el idioma del sitio web. Es extraño que el servidor sea necesario para detectar la preferencia de idioma del cliente, pero así es como es ahora. Hay otros varios hacks disponibles para detectar el idioma, pero leer el encabezado Accept-Language es la solución recomendada, según entiendo.


La forma correcta es mirar el encabezado HTTP Accept-Language enviado al servidor. Contiene la lista pedida y ponderada de idiomas que el usuario ha configurado su navegador para preferir.

Lamentablemente, este encabezado no está disponible para leer dentro de JavaScript; todo lo que obtienes es navigator.language , que te dice qué versión localizada del navegador web se instaló. Esto no es necesariamente lo mismo que el idioma (s) preferido (s) del usuario. En IE, en cambio, obtienes systemLanguage (lenguaje OS instalado), browserLanguage (igual que el language ) y userLanguage (región de SO configurada por el usuario), que son igualmente inútiles.

Si tuviera que elegir entre esas propiedades, userLanguage primero, volviendo al language y solo después de eso (si no coinciden con ningún idioma disponible) mirando browserLanguage y finalmente systemLanguage .

Si puede colocar un script del lado del servidor en otro lugar de la red que simplemente lea el encabezado Accept-Language y lo vuelva a escupir como un archivo JavaScript con el valor del encabezado en la cadena, por ej .:

var acceptLanguage= ''en-gb,en;q=0.7,de;q=0.3'';

entonces podría incluir un <script src> apuntando a ese servicio externo en el HTML, y usar JavaScript para analizar el encabezado del idioma. Sin embargo, no conozco ningún código de biblioteca existente para hacer esto, ya que el análisis Accept-Language casi siempre se realiza en el lado del servidor.

Independientemente de lo que termine haciendo, sin duda necesita una anulación del usuario, ya que siempre adivinará mal para algunas personas. A menudo es más fácil poner la configuración de idioma en la URL (por ejemplo, http: //www.example.com/en/site vs http: //www.example.com/de/site), y dejar que el usuario haga clic en enlaces entre los dos. A veces desea una URL única para ambas versiones de idioma, en cuyo caso debe almacenar la configuración en las cookies, pero esto puede confundir a los agentes de usuario sin compatibilidad con cookies y motores de búsqueda.


Este artículo sugiere las siguientes propiedades del objeto navegador del navegador :

  • navigator.language (Netscape - Localización del navegador)
  • navigator.browserLanguage (Específico de IE - Idioma localizado en el navegador)
  • navigator.systemLanguage (Específico de IE - Sistema operativo Windows - Idioma localizado)
  • navigator.userLanguage

Ponlas en una función javascript y deberías poder adivinar el idioma correcto, en la mayoría de las circunstancias. Asegúrate de degradar con elegancia, por lo que debes tener un div que contenga tus enlaces de elección de idioma, de modo que si no hay javascript o si el método no funciona, el usuario aún puede decidir. Si funciona, solo oculta el div.

El único problema al hacer esto en el lado del cliente es que usted sirve todos los idiomas al cliente, o tiene que esperar hasta que el script se haya ejecutado y haya detectado el idioma antes de solicitar la versión correcta. Quizás servir la versión de idioma más popular como predeterminado irritaría a la menor cantidad de personas.

Editar: Me gustaría sugerir la cookie de Ivan, pero asegúrese de que el usuario siempre pueda cambiar el idioma más tarde; no todos prefieren el idioma predeterminado de su navegador.