Ver Mensaje Individual
  #6 (permalink)  
Antiguo 04/07/2008, 10:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Multidioma no funciona al volver a inicio

Sí, en realidad mencioné que lo había cambiado pero olvidé hacerlo. Volvé a fijarte en el código que pegué antes y ahora sí lo dejé como debería ser.

No me había fijado antes, pero hay un problema de orden en el código. Es lógico el comportamiento que describís:
La primera vez que hacés clic, aún no existe $_SESSION['lang'] (o está como "es")

el caso es que primero se incluye el archivo y DESPUÉS se asigna el nuevo valor pasado por GET a la variable de sesión.

A ver si ahora sí queda

Código PHP:
session_start(); 

if (isset(
$_GET['lang'])) {
    
// el valor que tiene prioridad es el de GET, por eso se asigna de entrada
    
$_SESSION['lang'] = $_GET['lang'];
} elseif ( !isset(
$_SESSION['lang']) ) {
    
// si no tengo la variable GET ni la de sesión, creo la variable de sesión 
    // con el valor por defecto.
    
$_SESSION['lang'] = "es";
}

// para terminar, sin importar el caso, defino $lang con el valor de la variable de sesión
// en este punto podrías quitar la variable $lang y usar siempre $_SESSION['lang']
$lang $_SESSION['lang'];

include( 
'lang/' $lang EX ); 
Ya que estamos en esto yo le agregaría algo de seguridad: cambiar el primer IF por:

Código PHP:
$idiomas = array('es''en');
if ( isset(
$_GET['lang']) AND in_array($_GET['lang'], $idiomas) ) {
...

Esto aseguraría que solamente se acepta el "nuevo" idioma si la variable contiene es, o en.
Y te lo haría más fácil si en el futuro por algún motivo quisieras agregar otro idioma.


Saludos.