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.
Desafortunadamente 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 su lugar, obtiene systemLanguage
(idioma instalado en el sistema operativo), browserLanguage
(igual que language
) y userLanguage
(región de sistema operativo configurada por el usuario), que son igualmente inútiles.
Si tuviera que elegir entre esas propiedades, me olfatear para userLanguage
primero, cayendo de nuevo a language
y sólo después de eso (si los no encontró ningún idioma disponible) en busca de browserLanguage
y finalmente systemLanguage
.
Si usted puede poner un script del lado del servidor en otro lugar en la red que simplemente lee el encabezado Accept-Language y escupe de nuevo como un archivo JavaScript con el valor de encabezado en la cadena, por ejemplo .:
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.
la única forma en que una el navegador puede compartir metadatos sobre su usuario y la solicitud se realiza a través de URL y encabezados. Toma Firefox y echa un vistazo a los encabezados que se envían cuando se realiza una solicitud. Es bastante interesante examinar los encabezados típicos de solicitud y respuesta. –