Foros del Web » Programando para Internet » PHP »

Web multiidioma - problemas con cookies y array

Estas en el tema de Web multiidioma - problemas con cookies y array en el foro de PHP en Foros del Web. Hola a todos, Actualmente estoy realizando una web multiidioma y en mi planteamiento inicial habia pensado en controlar el dioma predeterminado / seleccionado mediante el ...
  #1 (permalink)  
Antiguo 28/11/2007, 04:03
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Exclamación Web multiidioma - problemas con cookies y array

Hola a todos,

Actualmente estoy realizando una web multiidioma y en mi planteamiento inicial habia pensado en controlar el dioma predeterminado / seleccionado mediante el uso de cookies. El problema, es que no estoy acostumbrado a trabajar con cookies y estoy en un punto muerto.

Por un lado tengo un fichero en el que declaro el texto según idioma (textos.php) de la siguiente manera:

Código PHP:
<?php
$texto
[10][0]="Portada";
$texto[11][0]="Home";
...
?>
Y desde los archivos que comprenden la web hago la carga de la información y reviso el contenido de la cookie antes de la etiqueta <thml>, con el fin de que el valor del idioma se actualice en caso de que se traspase un nuevo valor:

Código PHP:
<?
global $lang;
if(
$lang==""){
    if(isset(
$HTTP_COOKIE_VARS["lang"])){
        
$lang2=$HTTP_COOKIE_VARS["lang"];
        if(
$lang!=$lang2){
            
setcookie("lang",$lang,time()+7776000);
        }else{
            
$lang=$HTTP_COOKIE_VARS["lang"];
        }
    }else{
        
$lang=10;
        
setcookie("lang",$lang,time()+7776000);
    }
}else{
    
setcookie("lang",$lang,time()+7776000);
}
include(
"textos.php");
?>
La variable $lang la traspaso directamente por URL. Cuando cualquier página, la variable de la cookie se carga en ocasiones si y en ocasiones no, recogiendo el valor predeterminado de $lang y en otras, recoge el valor correcto de la cookie pero no muestra el texto correspondiente.

Por más que he revisado el código no encuentro el problema por ningún lado.

SOCORRO!!!! Ya llevo 2 días dandole vueltas y comienzo a perder la poca cordura que me quedaba... Por lo que agradeceré cualquier tipo de ayuda!

Saludos y gracias!
  #2 (permalink)  
Antiguo 28/11/2007, 04:13
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Web multiidioma - problemas con cookies y array

Hola, yo he desarrollado algunas de mis webs en varios idiomas y lo he hecho por medio de sesiones, nunca he usado las cookies para estas cosas, solo para necesidades muy puntuales.

De cualquier forma creo q no has puesto el código completo...

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #3 (permalink)  
Antiguo 28/11/2007, 04:27
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Web multiidioma - problemas con cookies y array

Rux,

En efecto, no me habia dado cuenta... falta la parte de impresion por pantalla... que sería algo así:

Código PHP:
echo $texto[$lang][0]; 
Ya estoy a punto de tirar la toalla con el tema de las cookies... con el tema de las sesiones la cosa mas o menos, corrigeme si me equivoco, iria tal que así...

Código PHP:
<?
session_star
();
if (isset(
$HTTP_SESSION_VARS['lang'])) {
   
$lang=$HTTP_SESSION_VARS['lang'];
}
else {
   
$HTTP_SESSION_VARS['lang'] = "es";
}
include(
"textos.php");
?>
Esto debería colocarlo al inicio de cada una de los ficheros de la página. Si es así, creo que finalmente tiraré con el tema de las sesiones y me olvidadaré de las cookies durante un largo tiempo ...

Muchas gracias
  #4 (permalink)  
Antiguo 28/11/2007, 06:23
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Web multiidioma - problemas con cookies y array

Hola de nuevo,

Al final he cambiado el planteamiento y he optado por emplear variables de sesion... Y la cosa, funciona... solo hay un problema a la hora de cambiar de idioma, parece que se resiste en aceptar el cambio y mantiene el idioma seleccionado inicialmente.

Estoy utilizando el siguiente cíodigo para controlar tanto el contenido de la variable $lang como el traspaso de la misma a la variable de sesion:

Código PHP:
session_start();
if(
$lang==""){
    if (isset(
$_SESSION['lang'])) { 
        
$lang=$_SESSION['lang']; 
    }else{ 
        
session_register('lang'); 
        
$_SESSION['lang'] = "10"
    } 
}else{
    if (isset(
$_SESSION['lang'])) { 
        unset(
$_SESSION['lang']);
        
session_register('lang'); 
        
$_SESSION['lang']=$lang;
    }else{ 
        unset(
$_SESSION['lang']);
        
session_register('lang'); 
        
$_SESSION['lang'] = $lang
    } 

Pero al efectuar un cambio de idioma, la página se carga con el idioma seleccionado inicialmente. ¿A que puede ser debido? Con unset tendria que destruir completamente la variable, por lo que entiendo que una vez hecho esto y creada nuevamente deberia tener el nuevo valor y no el anterior...

Gracias y saludos.
  #5 (permalink)  
Antiguo 28/11/2007, 09:12
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
De acuerdo Solucionado!!!! Multiidioma mediante variables de sesion

Hola de nuevo!

Bueno, al final le he tenido que dar tres vueltas más de tuerca al tema, pero por fin, ha salido correctamente y con muy poquitas líneas de código para gestionar y detectar el idioma. Como la história no deja de ser sencilla, aunque lo mio me ha costado, hago mi pequeña aportación a la comunidad pasando el código para que lo utilicéis en el caso de que os fuera necesario:

Código PHP:
<?php
global $idio// variable que traspasa el valor de idioma mediante URL
session_start();
//Primero revisamos si $idio tiene algun valor y en caso contrario 
//capturamos la info de la variable de session o la creamos
if($idio==""){
    if (isset(
$_SESSION['lang'])) {
        
$lang=$_SESSION['lang']; 
    }else{
        
session_register('lang'); 
        
$_SESSION['lang'] = "es"
    } 
}else{ 
//idio tiene un valor traspasado en URL por lo que actualizamos 
//el valor de la variable de session
    
$_SESSION['lang']=$idio;
}
include(
"ficherodetextos.php");
?>
La verdad es que me había complicado muchoooooooooooooo la vida!!! Sobretodo cuando hice mi primer planteamiento empleando cookies y posteriormente empleando unset() para destruir la variable empleada cuando era completamente innecesario.

Esta forma es mmmmm elegante y en muy pocas líneas de código nos gestiona a la perfección todas las posiblidades.

Gracias RUX por darme la idea!
  #6 (permalink)  
Antiguo 28/11/2007, 15:38
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Web multiidioma - problemas con cookies y array

Me alegro mucho, de nada y Felicidades por el código! :)

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #7 (permalink)  
Antiguo 28/11/2007, 19:41
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: Web multiidioma - problemas con cookies y array

De nanda xD La verdad, es que me ha dado un día entretenido el tema... jajajajajajajja

Saludos!
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 18:43.