Ver Mensaje Individual
  #41 (permalink)  
Antiguo 06/11/2005, 14:48
Avatar de cauly
cauly
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 22 años, 2 meses
Puntos: 0
buscando en internet, hice un agregado para que primero detecte el idioma del navegador y en base a eso, ponga ese idioma en caso de existir...
(sacado de acá: http://alexsancho.name/archives/2005...guaje-con-php/ )

Primero agregué esta función:
Código PHP:
function detectar_idioma_navegador() {
    global 
$conf;
    
    
$languages preg_replace('/(;q=\d+.\d+)/i'''getenv('HTTP_ACCEPT_LANGUAGE'));
    
    
$bol_language_detected false;
    
    
// Comprobamos si el navegador usa alguno de los idiomas que hemos predefinido.
    
foreach ($conf['lang_enabled'] as $tmp_arr_language) {
    if (
preg_match('/' $tmp_arr_language '/i'$languages)) {
    
$tmp_str_language_detected $tmp_arr_language;
    
$bol_language_detected true;
    break;
    }
    }
    
// Si el navegador usa uno de los idiomas seleccionados, se devuelve el path del fichero de idioma
    // En caso contrario, se devuelve el path del idioma original
    
if ($bol_language_detected) {
    return 
$tmp_str_language_detected;
    } else {
    return 
$conf['lang_default'];
    }

y despues en el ejemplo que pusieron, si la sesión está vacía pone el idioma del navegador y sino queda con el idioma que elige el visitante.

Código PHP:
session_start();
if(!isset(
$_SESSION['varIdioma']) || !empty($_GET['lang'])){
$lang=$_GET['lang'];
if(empty(
$lang)){
$conf['lang_default'] = 'en'// idioma por defecto
    
$conf['lang_enabled'] = array('en''es''pt');
    
$conf['lang'] = detectar_idioma_navegador();
$lang=$conf['lang'];
}
$_SESSION['varIdioma']=$lang;
}
switch (
$_SESSION['varIdioma']) {
case 
$_SESSION['varIdioma']: require("idioma/".$_SESSION['varIdioma'].".php"); break;
}


if (
$_SESSION['varIdioma']=="es"){
echo 
'<a href="index.php?lang=en">English</a><br />';
}else{
echo 
'<a href="index.php?lang=es">Español</a><br />';

Así por defecto elige el idioma del navegador y si no existe pone inglés (en mi caso, porque le puse "en"), pero el visitante puede cambiar el idioma por el que quiera (de los que haya disponibles), recién lo estoy probando y por ahora va bien.