Foros del Web » Programando para Internet » PHP »

Actualizar idiomas con frames

Estas en el tema de Actualizar idiomas con frames en el foro de PHP en Foros del Web. Hola. Tengo una web en varios idiomas. La web se compone de un marco con dos frames (uno que está arriba y posee el menú ...
  #1 (permalink)  
Antiguo 10/03/2006, 04:54
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 11 años, 9 meses
Puntos: 3
Exclamación Actualizar idiomas con frames

Hola.

Tengo una web en varios idiomas.

La web se compone de un marco con dos frames (uno que está arriba y posee el menú de opciones) y otro que está debajo y es el que presenta el contenido.

En el menú poseo un combo con los idiomas. Cuando selecciono un idioma, el marco superior se regenera presentando el menú en el idioma elegido pero el marco de abajo ni se inmuta.

¿Como puedo hacer para que al pulsar el idioma, se regenere también el marco inferior?

Este es el código que tengo en el marco superior cuando pulso el combo:

Código PHP:
<? include ("idioma.php"); ?>
<form name="Frm_idioma">
        <div align="center"><font size="1"><? echo $txt_eleccionIdioma?></font> 
          <select name="idioma" class="fondoControlesFormulario" id="idioma" onChange="document.location ='<? $_SERVER['PHP_SELF']?>?idioma=' + this.value">
            <option><? echo $txt_idioma?></option>
            <option value="de"><? echo $txt_aleman?> </option>
            <option value="en"><? echo $txt_ingles?> </option>
            <option value="es"><? echo $txt_espanol?> </option>
            <option value="fr"><? echo $txt_frances?> </option>
          </select>
        </div>
      </form>
El fichero "idioma.php" es el siguiente:

Código PHP:
<?
    
// Definimos el idioma por defecto, en este 
    // caso será -es- (español) 
    
$idiomaActual 'es'
    
//echo "El idioma actual es: ".$idiomaActual."<br>";
    // Si se ha seleccionado un idioma se guarda 
    // una cookie con el idioma 
    
if(isset($_GET['idioma'])){ 
        
setcookie ("idioma"$_GET['idioma'], time () + 7*24*60*60); 
        
$idiomaActual $_GET['idioma']; 
    } 
    elseif(isset(
$_COOKIE['idioma'])){ 
        
// Miramos que exista el archivo del idioma 
        
if(file_exists("lang/".$_COOKIE['idioma'].".php")){
              
$idiomaActual $_COOKIE['idioma']; 
          } 
    } 
    
// Incluimos el archivo del idioma seleccionado 
    // o el archivo por defecto si no se seleccionó 
    // idioma o si no se encuentra el archivo 
    
include "lang/".$idiomaActual.".php";
?>
Por favor necesito ayuda. Gracias.
  #2 (permalink)  
Antiguo 10/03/2006, 08:01
 
Fecha de Ingreso: diciembre-2005
Mensajes: 122
Antigüedad: 12 años
Puntos: 0
se me ocurre que puedes usar javascript para resolverlo. en este momento no me acuerdo como trabajar con frames desde js pero la soluciòn estaria en redirigir la frame de abajo a (por ejemplo) pagina.php?lang=1.
  #3 (permalink)  
Antiguo 10/03/2006, 08:07
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 11 años, 9 meses
Puntos: 3
redirigir

Yo había pensado en lo siguiente:

cuando hago clic en el combo en un idioma, RECARGAR la página que contiene los marcos y en cada página que está cargada en el frame inferior, tener la consulta que me tome el idioma actual. Entonces como se recarga la página, esa variable se actualiza por lo que ya toma los valores correctos.

Entonces la cuestión está en: ¿Como puedo recargar la página? Con los meta hay una opción "refresh" que vale para eso pero seguramente haya alguna funcion PHP que permita recargarla ¿no?

Gracias.
  #4 (permalink)  
Antiguo 12/03/2006, 16:55
Avatar de rafaconpu  
Fecha de Ingreso: febrero-2006
Mensajes: 331
Antigüedad: 11 años, 9 meses
Puntos: 3
¿Alguien sabe como puedo recargar un frame cuando hago clic en alguna opción de un combo que está en otro frame?
Gracias.
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 11:08.