JavaScript - [Solucionado] Detectar idioma del navegador y redirigir al visitante

   
Vista:

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por Vega (16 intervenciones) el 19/03/2014 07:57:40
Hola a todos, les comparto este código que no encontré aquí, ésto para que en un futuro les sirva a los demás, se trata de un código Javascript, que detecta el idioma del navegador y redirige al usuario a un index diferente (esto sirve para mostrar nuestro sitio en varios idiomas).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
 
<script type="text/javascript">
window.onload = function() {
 
var ln = x=window.navigator.language||navigator.browserLanguage;
if(ln == 'en'){
window.location.href = 'index_en.html';//si esta en inglés va a ingles
}else if(ln == 'es'){
window.location.href = 'index_es.html'; // si es es va a español
}else{
window.location.href = 'index_es.html'; // si no es ninguna de los dos va a español
}
}
</script>
</body>
</html>

Pueden agregar otros idiomas como PT, FR, DE, JP, etc,etc sólo necesitan saber el código de éste y agregarlo en otro else if. O elegir otra ruta remplazando "index_es.html" por lo que tu quieras :P

Código por: emprear

Espero que les sirva.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por xve (1596 intervenciones) el 19/03/2014 09:06:45
Muy bueno Vega... muchas gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por Gerardo (1 intervención) el 07/08/2015 01:46:25
Seria mucho mejor de esta forma y te ahorras todos los if


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
 
<script type="text/javascript">
window.onload = function() {
 
var ln = x=window.navigator.language||navigator.browserLanguage;
 
window.location.href = 'index_" + ln[0] + ln[1] + ".html';//
 
}
</script>
</body>
</html>

asi solo utilizas pocas lineas para detectar cualquier lenguaje y claro el ln[0] y ln[1] solo toma los primeros 2 caracteres de la cadena ya que algunos navegadores en vez de tomar solo "es" te dan "es-mx" o "es-es" como ejemplo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por Krupper (1 intervención) el 12/09/2015 01:45:49
Hola!,
Cómo se aplicaría la estructura en mi caso, de contar con la siguiente estructura de html5:

www.dominio.com/es/inicio.html
www.dominio.com/en/home.html


Gerardo! como debería colocarse el script que sugieres para éste caso?.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE html>
<html>
<html lang="es">
<head>
 
	<meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1,requiresActiveX=true">
 
 
	<title> Inicio :: Pagina </title>
	<meta name="description" content=" add description  ... ">
 
</head>
 
<body class="sticky-header">
 
<script type="text/javascript">
window.onload = function() {
 
var ln = x=window.navigator.language||navigator.browserLanguage;
 
window.location.href = '/es/inicio" + ln[0] + ln[1] + ".html';//
 
}
</script>
 
</body>
</html>


Que definición tendría ln[0] y ln[1] ?
ln[0] = Español?
ln[1] = Ingles?

gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por florenzo (1 intervención) el 18/09/2015 20:46:16
El Post de Vega el primero el mas sencillo para mi el mejor, muchas gracias muy bueno y facil de adaptar funciona al 100% muy bien explicado y con notas muy aclaratorias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por Pablo (2 intervenciones) el 24/06/2016 16:06:46
Sobra un x=, quedaría:
1
var lang = window.navigator.language || navigator.browserLanguage;

Notar que si se pone en una única home entra en loop, en mi caso tuve que revisar el path de la URI con una regex:
1
if ( ! /(^\/EN|^\/ES)/.test(window.location.pathname) ) { ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

[Solucionado] Detectar idioma del navegador y redirigir al visitante

Publicado por Pablo (2 intervenciones) el 24/06/2016 17:14:41
Más aún, en realidad esa es una forma obsoleta de proceder, desde 2014 conviene usar el Accept-Language' del header http, que usa la configuración de idiomas preferidos del browser en vez de .su interfaz. Quedaría:

1
var lang = navigator.languages ? navigator.languages[0] : (navigator.language || navigator.userLanguage)

Ver respuesta de Tim Babych acá.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar