Detectar idioma del navegador con Javascript
Anuncio:
Muchos proyectos web están en múltiples idiomas. Para esto, es necesario obtener el idioma del navegador para ofrecerle al usuario su idioma por defecto. Entre otros lenguajes, lo podemos hacer con Javascript.
Para obtener el idioma del navegador mediante javascript lo haremos de la siguiente forma. Primero creamos un archivo llamado idioma.js con el siguiente contenido: [función actualizada el 23-02-2015] (Código en GitHub)
function getLanguage() {
// Variable para guardar el idioma
var lang;
var nav = navigator.userAgent.toLowerCase();
if(nav.indexOf("msie") != -1 || nav.indexOf("rv") != -1){ // msi for IE and rv for IE11+
var req = new XMLHttpRequest();
req.open('GET', 'resources/inspect-headers.py?filter_name=accept-language', false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
var contentLanguage = headers.match( /^content-language\:(.*)$/gm );
if(contentLanguage[0]) {
lang= contentLanguage[0].split(": ")[1];
}
} else {
if (navigator.languages==undefined) {
if (navigator.language==undefined) {
// Internet Explorer Compatibility
lang= navigator.userLanguage.slice(0,2);
} else {
// Old navigator compatibility
lang= navigator.language.slice(0,2);
}
} else {
lang= navigator.languages[0].slice(0,2);
}
}
return lang;
}
Este archivo lo incluimos en el archivo html (o php o jsp…) donde queramos detectar el idioma.
<script src="idioma.js"></script>
Y lo usaremos como se ve a continuación:
<script type=" text/ javascript">
alert ("El idioma del navegador es: " + getLanguage());
</script>
Con esto ya tenemos el idioma por defecto con el que está configurado nuestro navegador. Solo tenemos que tener en cuenta una observación. Con IE11 y superiores SOLO podemos tener configurado un único idioma. Si configuramos Español como primera opción e inglés como segunda, por ejemplo, IE11 y superiores devuelve el «primer elemento que él tenga» en su lista de vectores.
Esperamos que os haya sido de utilidad