Foros del Web » Programando para Internet » PHP »

Problema con multidiomas en mi web modular

Estas en el tema de Problema con multidiomas en mi web modular en el foro de PHP en Foros del Web. Hola Empiezo explicando como organizo la web: index.php carpeta secciones--> carpeta secciones-->pagina1.php,pagina2.php, etc. En index.php la forma de llamar a cada contenido es ésta: @import ...
  #1 (permalink)  
Antiguo 13/12/2010, 09:25
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 7 meses
Puntos: 3
Problema con multidiomas en mi web modular

Hola

Empiezo explicando como organizo la web:

index.php
carpeta secciones-->
carpeta secciones-->pagina1.php,pagina2.php, etc.

En index.php la forma de llamar a cada contenido es ésta:

Código PHP:
Ver original
  1. <?php
  2. $carpeta = 'secciones/'; /
  3. $seccion = @$_GET['sec'];
  4. if (empty($seccion)){
  5.     $seccion = 'bienvenida';
  6.     }
  7. if (file_exists($carpeta . $seccion . '.php')){
  8.     include($carpeta . $seccion . '.php');
  9.     }else{
  10.         echo '¡La sección no existe! Por favor <a href="' . $_SERVER['PHP_SELF'] . '?sec=home">vuelva a la página principal.';
  11.         }
  12. ?>

Además, en la cabecera tengo dos botones para cambiar entre el español y el inglés, y funciona perfectamente, el problema es que si estoy por ej. en noticia 2 viendo todo en inglés, al pinchar en noticia 1 me manda a index y en español, qué estoy haciendo mal?

para hacer el multidioma hago esto:

index.php
Código PHP:
Ver original
  1. <?php
  2. session_register('idioma_s');
  3. if($_GET['lg']){
  4.      $HTTP_SESSION_VARS['idioma_s']=$_GET['lg'];
  5. }
  6. $lg=$HTTP_SESSION_VARS['idioma_s'];
  7. if($lg=="es" ||$lg=="en"){
  8.      include($lg.".inc.php");
  9. }
  10. else{
  11.      $lg="es";
  12.      include($lg.".inc.php");
  13. }
  14. ?>

noticia1, noticia2
Código PHP:
Ver original
  1. <?php
  2. session_register('idioma_s');
  3. include($HTTP_SESSION_VARS['idioma_s'].".inc.php");
  4. ?>

tengo además dos archivos: en.inc.php y es.inc.php con variables por cada texto que añado en la web, en cada idioma.

Código PHP:
Ver original
  1. <li class="ingles"><a href="index.php?lg=en">English</a></li>
  2. <li class="espanol"><a href="index.php?lg=es">Espa&#241;ol</a></li>

Y el problema es ése, al cambiar el idioma, me aplica los cambios, pero volviendo a index.php y al cambiar de página me devuelve al idioma por defecto
  #2 (permalink)  
Antiguo 13/12/2010, 11:02
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Problema con multidiomas en mi web modular

Para verificar si existe la variable, usa isset. Prueba con ese cambio y me comentas que tal.
<?php
session_start();
session_register('idioma_s');
if(is_set($_GET['lg'])){
$_SESSION['idioma_s']=$_GET['lg'];
}
$lg=$HTTP_SESSION_VARS['idioma_s'];
if($lg=="es" ||$lg=="en"){
include($lg.".inc.php");
}
else{
$lg="es";
include($lg.".inc.php");
}
?>
  #3 (permalink)  
Antiguo 13/12/2010, 11:11
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Problema con multidiomas en mi web modular

el problema sigue. he copiado el código que publicas en index.php en lugar del que tengo y no cambia al inglés.

Con el que tengo hecho el problema es que me traduce pero me envia a la página de inicio en vez de la actual y si pincho en otra sección me devuelve al español.

Puede ser algo que modificar en los enlaces de las banderitas??

Código PHP:
Ver original
  1. <li class="ingles"><a href="index.php?lg=en">English</a></li>
  2. <li class="espanol"><a href="index.php?lg=es">Espa&#241;ol</a></li>
  #4 (permalink)  
Antiguo 13/12/2010, 11:18
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Problema con multidiomas en mi web modular

<?php
session_start();
if(is_set($_GET['lg'])){
$_SESSION['idioma_s']=$_GET['lg'];
}
$lg=$_SESSION['idioma_s'];
//puedes probar usar un var_dump aquí para ver que valores adopta $lg
if($lg=="es" ||$lg=="en"){
include($lg.".inc.php");
}
else{
$lg="es";
include($lg.".inc.php");
}
?>

Prueba así.
  #5 (permalink)  
Antiguo 13/12/2010, 11:38
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Problema con multidiomas en mi web modular

Gracias areslepra, me soluciona el problema de navegar por todo el sitio en Inglés.

Pero sigo con el problema de que cada vez que cambio de idioma, me lleva a index.php en vez de la página actual.

Seguramente se trate de los parámetros del enlace.
  #6 (permalink)  
Antiguo 13/12/2010, 11:45
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Problema con multidiomas en mi web modular

Eso se debe a los links, ya que si te fijas, usas index.php, deberias poner en vez de index.php usar la variable $_SERVER['PHP_SELF']
Prueba con ese valor y me comentas que tal.
  #7 (permalink)  
Antiguo 13/12/2010, 11:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Problema con multidiomas en mi web modular

he probado con ésto:

Código PHP:
Ver original
  1. <li class="ingles"><a href="$_SERVER['PHP_SELF']?lg=en">English</a></li>
  2. <li class="espanol"><a href="$_SERVER['PHP_SELF']?lg=es">Espa&#241;ol</a></li>

Pero sigue haciendo lo mismo
  #8 (permalink)  
Antiguo 13/12/2010, 11:56
 
Fecha de Ingreso: diciembre-2010
Ubicación: Rosario, Santa Fe
Mensajes: 326
Antigüedad: 13 años, 11 meses
Puntos: 13
Respuesta: Problema con multidiomas en mi web modular

Ummm.... Seguro que te falta poner los querystring.
Proba así:
Código:
<li class="ingles"><a href="<?php echo $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING']; ?>&lg=en">English</a></li>
  #9 (permalink)  
Antiguo 13/12/2010, 12:06
 
Fecha de Ingreso: marzo-2008
Mensajes: 186
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Problema con multidiomas en mi web modular

eres un CRACK areslepra, ya funciona todo OK.

Muchas gracias, cuándo tenga tiempo empollaré un poco más PHP.

Etiquetas: modular
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 21:42.