He creado este código basándome en otros similares. Se trata de procesar el idioma elegido por el visitante o, en caso de no hacerlo, tratar de autodetectarlo y enviarle el archivo más apropiado.
Lo he probado y parece que todo funciona correctamente, pero me gustaría que alguien me lo revisara por si he metido la pata en algo y no me he dado cuenta...
Ahí va el código:
Código PHP:
<?php
// Procesar idioma
if (isset($HTTP_GET_VARS['lang'])) {
$lang = $HTTP_GET_VARS['lang'];
}
if (isset($lang)
&& !strstr($lang, '/')
&& file_exists('lang/'.$lang.'.php')){
$sitelang = strtr($lang, '$/\\:*?"\'<>|`', '____________');
} elseif ($HTTP_ACCEPT_LANGUAGE != ''){ # Verificamos que el visitante haya designado algún idioma
$lang = explode(",", $HTTP_ACCEPT_LANGUAGE); # Convertimos HTTP_ACCEPT_LANGUAGE en array
/* Recorremos el array hasta que encontramos un idioma del visitante que coincida con los idiomas
en que está disponible nuestra web */
for ($i=0; $i<count($lang); $i++){
if (!isset($sitelang)){
if (substr($lang[$i], 0, 2) == "de"){$sitelang = "german";}
if (substr($lang[$i], 0, 2) == "en"){$sitelang = "english";}
if (substr($lang[$i], 0, 2) == "es"){$sitelang = "spanish";}
if (substr($lang[$i], 0, 2) == "fr"){$sitelang = "french";}
if (substr($lang[$i], 0, 2) == "it"){$sitelang = "italian";}
if (substr($lang[$i], 0, 2) == "pt"){$sitelang = "portuguese";}
}
}
} else {
unset($lang);
}
# Si no hemos encontrado ningún idioma que nos convenga, mostramos la web en el idioma por defecto
if (!isset($sitelang)){$sitelang = "english";}
require "lang/{$sitelang}.php";
?>
Salu2.