Bueno, hoy vamos a hablar de como detectar los idiomas de los visitantes, esto es posible realizarlo mediante los datos que poseemos en $_SERVER['HTTP_ACCEPT_LANGUAGE']. En esta cabecera, se listan los idiomas que el usuario prefiere para las páginas que recibe, siendo el primero el que más prefiere, y el último el menos preferido. Generalmente vienen en un formato como por ejemplo “es-AR, es, en, en-US, en-GB”, que vendría a ser Español de Argentina, Español, Inglés, Inglés de Estados Unidos e Inglés de Gran Bretaña. Pueden leer más sobre esto aquí: http://www.w3.org/International/articles/language-tags/
Ahora a lo nuestro, ¿Cómo reconocemos los idiomas en PHP?
<?php
function code_it($var)
{
//Saca los espacios en blanco, toma los dos primeros
//caracteres y los pasa a minúsculas
return strtolower(substr(trim($var),0,2));
}
//Si el navegador nos envía los datos
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) &&
!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
//Pasamos cada valor de los separados por comas
//por code_it y los almacenamos en un array
$langs = array_map('code_it',split(',',
$_SERVER['HTTP_ACCEPT_LANGUAGE']));
}else{
//Si no teníamos los datos damos un array en blanco
$langs = array();
}
?>
Bueno, con esto obtendremos un array que posea códigos de 2 letras, con el ejemplo anterior, el array contendría los valores es, es, en, en, en. Ahora, ¿cómo hacemos para mostrar al usuario la web de su idioma? Bueno, deberemos pasar por el array con un bucle foreach y fijarnos si tenemos ese idioma disponible, y si lo tenemos, pues redirigirlo con un header(’Location: http://www.nuestrositio.com/idioma’)
Aquí les dejo un ejemplo de como implementé el sistema en la web de Gufw (Firewall Gráfico para Linux):
<?php
function code_it($var)
{
return strtolower(substr(trim($var),0,2));
}
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) &&
!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$langs = array_map('code_it',split(',',
$_SERVER['HTTP_ACCEPT_LANGUAGE']));
foreach($langs as $lang)
{
if($lang != 'en' && file_exists('./'.$lang.'/'))
{
header('Location: http://gufw.tuxfamily.org/'
.$lang.'/index.html');
exit;
}elseif($lang == 'en')
{
header('Location: http://gufw.tuxfamily.org/index.html');
exit;
}
}
}
header('Location: http://gufw.tuxfamily.org/index.html');
?>
Obviamente tendrás que modificarlo para que use tu sitio, tu estructura de web, etc. Eso lo dejo como ejercicio para el lector 