Foros del Web » Programando para Internet » PHP »

idiomas con sesiones

Estas en el tema de idiomas con sesiones en el foro de PHP en Foros del Web. hola muy buenas estoy probando un ejemplo que encontrado idiomas con sessiones y tengo una duda por ejemplo en el index de mi pagina tengo ...
  #1 (permalink)  
Antiguo 17/06/2006, 05:06
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
idiomas con sesiones

hola muy buenas estoy probando un ejemplo que encontrado idiomas con sessiones
y tengo una duda
por ejemplo en el index de mi pagina tengo puesto esto:
Código PHP:
session_start();
$lang=$_GET['lang'];
if(empty(
$lang)){
$lang="es";
}
$_SESSION['varIdioma']=$lang;
switch (
$_SESSION['varIdioma']) {
case 
$_SESSION['varIdioma']: require("lang/".$_SESSION['varIdioma'].".inc.php"); break;
//una carpeta lang con los archivos es.inc.php y en.inc.php

y una imagen en flash con dos banderitas una inglesa y otra española
y cuando pincho en una de ella me lleva al index con su idioma correspondiente
pasandole la variable por url>>> localhos\index.php?$lang=en ò es depende cual escoja

hasta ahora todo bien en el index.php me muestra los textos con sus recpestivos idiomas,
Pero ahora llega mi pregunta en el index.php tengo varios links como contactar.php
para cuando entre en contactar.php me entre con en el idioma escogido anteriormente,Como lo hago para que la varible la recoga de las sessiones, sin tener, que yo pasar por todas las urls de todas las paginas el idioma escogidos ej:
yo he probado asin:
contactar.php?lang=$lang
Código PHP:
session_start();
$lang=$_GET['lang'];
if(empty(
$lang)){
$lang="es";
}
$_SESSION['varIdioma']=$lang;
switch (
$_SESSION['varIdioma']) {
case 
$_SESSION['varIdioma']: require("lang/".$_SESSION['varIdioma'].".inc.php"); break;
//una carpeta lang con los archivos es.inc.php y en.inc.php

y he vuelto ha poner lo mismo y funciona
yo lo que pido si mediante alguna funcion de sesiones puede recoger la variable sin tener que yo poner en todas las urls el valor de la variable?

espero haberme explicado y haber si podeis resorveme esta duda
muchas gracias y saludos
  #2 (permalink)  
Antiguo 17/06/2006, 09:11
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 13 años, 9 meses
Puntos: 20
Tengo entendido que si pones ese mismo codigo en todas las paginas (usando un include por ejemplo) las primeras 2 lineas del codigo se encargan de checkear que ya hayan selecionado el idioma, por ende, no hace falta que pongas el "?lang=es" en todos los links, solamente tenes que ponerlos en el link/flash que cambie de un idioma a otro.
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #3 (permalink)  
Antiguo 17/06/2006, 15:05
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
muchas gracias por contestar
pero si pongo lo mismo en todas las paginas me muestra siempre en español,es decir, escogo midiante las "banderitas" el idioma ingles me sale el index en ingles perfecto, pero luego le doy ejemplo contactar y me sale en español????
que puede pasar se pierde la variable?
a ver si puedes ayudarme por favor

gracias y saludos
  #4 (permalink)  
Antiguo 17/06/2006, 15:38
Avatar de caneva  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla (España)
Mensajes: 81
Antigüedad: 11 años, 6 meses
Puntos: 1
Puedes utilizar la variable de sessión que almacena el idioma y en los enlaces solo tendrías que poner algo así:

Si tienes el enlace dentro de un echo:

Código PHP:
echo 
'<a href="contactar.php?lang="'.$_SESSION['varIdioma'].'" 
title="titulo">Enlace</a>'

Si el enlace no lo tienes dentro de un echo podrías ponerlo así:

Código PHP:
contactar.php?lang=<?php echo $_SESSION['varIdioma']; ?>
Porcierto el código que pusistes arriba no tienes que tenerlo solo en el index sino en todos los archivos para que todo funcione correctamente. Si tienes solo ese código en el index al entrar en contactar.php no te funcionaría $_SESSION['varIdioma'] puesto que no estarías en la sesión.
__________________
Cita:
"El camino empieza renunciando al control, y volviéndose flexibles."

Última edición por caneva; 17/06/2006 a las 15:50
  #5 (permalink)  
Antiguo 18/06/2006, 13:41
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
gracias caneva, pero eso es lo que no intento no hacer, tener que pasar la variable por url en todas mis links de la web, eso es lo que pregunto si se puede hacer sin tener que pasar la variable por url?

muchas gracias y saludos
  #6 (permalink)  
Antiguo 19/06/2006, 20:53
Avatar de caneva  
Fecha de Ingreso: junio-2006
Ubicación: Sevilla (España)
Mensajes: 81
Antigüedad: 11 años, 6 meses
Puntos: 1
Puedes hacer una cosa, si no estoy equivocado el crear una variable de sesión y siempre que la sesión continúe en todas las páginas no necesitas pasarla por url, por tanto consistiría en chequear antes de cargar el contenido en uno u otro idioma si existe la variable de sesion $_SESSION['varIdioma'] si existe comprobar su contenido y en cada campo donde intervenga el idioma poner o bien dicha variable directamente o una transitoria que te venga bien.

Me ayudaría mucho saber como haces para cargar el contenido en un idioma u otro y así poder orientarte más, así tal y como estamos ahora es dar palos de ciego.
__________________
Cita:
"El camino empieza renunciando al control, y volviéndose flexibles."
  #7 (permalink)  
Antiguo 21/06/2006, 13:04
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 13 años, 3 meses
Puntos: 3
el idioma lo cargo como el dicho en el primer post en el index, y con dos banderitas una española y otra inglesa por url>>>( localhos\index.php?$lang=en ò es depende cual escoja) y con el codigo que puse antes tambien arriba,,,,,,,, y poniendo ese codigo en todas la paginas de mi web , ¿no entiendo porque no me llega la variable de session?,
(¡Si ese codigo chequea si hay variable de session si hay la pone y si no pues lo pone en español).
he tenido que poner este codigo para que me funcione bien, por ahora, sin tener que pasar la variable por url;
Código:
session_start();
$lang=$_SESSION['varIdioma'];
switch ($_SESSION['varIdioma']) {
case $_SESSION['varIdioma']: require("lang/".$_SESSION['varIdioma'].".inc.php"); break;
}
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 15:41.