Foros del Web » Programando para Internet » PHP »

Revisar código (selección de idioma o, en su defecto, autodetección)

Estas en el tema de Revisar código (selección de idioma o, en su defecto, autodetección) en el foro de PHP en Foros del Web. Hola amigos: 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 ...
  #1 (permalink)  
Antiguo 01/03/2004, 17:54
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 15 años
Puntos: 0
Información Revisar código (selección de idioma o, en su defecto, autodetección)

Hola amigos:

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], 02) == "de"){$sitelang "german";}
            if (
substr($lang[$i], 02) == "en"){$sitelang "english";}
            if (
substr($lang[$i], 02) == "es"){$sitelang "spanish";}
            if (
substr($lang[$i], 02) == "fr"){$sitelang "french";}
            if (
substr($lang[$i], 02) == "it"){$sitelang "italian";}
            if (
substr($lang[$i], 02) == "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";

?>
Os doy las gracias de antemano

Salu2.
__________________
http://www.sexoparamo.com
  #2 (permalink)  
Antiguo 02/03/2004, 02:53
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 15 años
Puntos: 0
Por cierto, la mayor parte del código lo copié de éste que encontré en las FAQs (gracias kech ) en http://www.forosdelweb.com/showthrea...216#post443216 .

Alguien puede revisarme el resto?

Salu2.
__________________
http://www.sexoparamo.com
  #3 (permalink)  
Antiguo 02/03/2004, 11:14
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Pues todo parece bien,

lo unico que te sugiero es cambiar $HTTP_GET_VARS[] por $_GET[]
y $HTTP_ACCEPT_LANGUAGE por $_SERVER["HTTP_ACCEPT_LANGUAGE" ]

Para evitar que en un futuro cercano te vaya a arrojar errores o avisos de variables depreciadas.

__________________
Manoloweb
  #4 (permalink)  
Antiguo 02/03/2004, 11:19
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 15 años
Puntos: 0
Gracias por revisarlo, colega

Cambiaré lo que me recomiendas. Y gracias de nuevo.

Salu2.
__________________
http://www.sexoparamo.com
  #5 (permalink)  
Antiguo 02/03/2004, 12:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

To cambiaria este codigo:
Código PHP:
            if (substr($lang[$i], 02) == "de"){$sitelang "german";}

            if (
substr($lang[$i], 02) == "en"){$sitelang "english";}

            if (
substr($lang[$i], 02) == "es"){$sitelang "spanish";}

            if (
substr($lang[$i], 02) == "fr"){$sitelang "french";}

            if (
substr($lang[$i], 02) == "it"){$sitelang "italian";}

            if (
substr($lang[$i], 02) == "pt"){$sitelang "portuguese"
Por uno basado en array:
Código PHP:
$idiomas=array('es'=>'spanish','en'=>'english');
// y donde quieres asignarlo
if (isset($idiomas[substr($lang[$i], 02)])) $sitelang=$idiomas[substr($lang[$i], 02)];
// y te ahorras todos los ifs
// ademas, para añadir un nuevo idioma,
// solo tienes que añadir un elemento
// a $idiomas 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 02/03/2004, 13:42
Avatar de ORPHEO  
Fecha de Ingreso: diciembre-2002
Mensajes: 77
Antigüedad: 15 años
Puntos: 0
Gracias Josemi, buena idea...

Salu2.
__________________
http://www.sexoparamo.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:10.