Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Erika Vega en 18 Febrero 2008, 06:11 am



Título: Problema creando Multi-idioma
Publicado por: Erika Vega en 18 Febrero 2008, 06:11 am
Bien chicos, pues este es mi problema, estoy codeando una web multidioma en PHP, pero tengo unos inconvenientes, lo que trato de hacer primero es definir un lenaguage por defecto pero a la hora de clickear en la bandera correspondiente al idioma este cambie all idioma elegido, todo va de maravilla, pero cuando clickeo en algun enlace de mi web vuelve al idioma por defecto, habria alguna manera de arreglar eso?

este es mi codigo en langs.php

Código
  1. <?PHP
  2. $langs=$_GET['langs'];
  3. if(empty($langs)){
  4. $langs = getenv("HTTP_ACCEPT_LANGUAGE");
  5.      }
  6. switch($langs){
  7.          case "es" :
  8.             include("language/lang-es.php");
  9.             break;
  10.          case "en" :
  11.             include("language/lang-en.php");
  12.             break;
  13.          default :
  14.             include("language/lang-en.php");
  15.             break;
  16. }
  17. ?>

Ahora en mi index.php que mas o menos es asi:
Código
  1. ...
  2. ...
  3. <table width="200" border="0" cellspacing="2" cellpadding="2">
  4. <tr>
  5. <td><img src="images/language/es.gif" width="16" height="11" onclick="document.location='<?= $_SERVER['PHP_SELF'] ."?".$_SERVER["QUERY_STRING"]."&langs=es"?>'"></td>
  6. <td><img src="images/language/en.gif" width="16" height="11" onclick="document.location='<?= $_SERVER['PHP_SELF'] ."?".$_SERVER["QUERY_STRING"]."&langs=en"?>'"></a></td>
  7. </tr>
  8. </table>
  9.  
  10. ...
  11. ...
  12. <? include("language/lang.php"); ?>
  13.  
  14. <table width="97" border="0" align="left" cellpadding="0" cellspacing="4">
  15. <tr>
  16. <td width="13"><div align="right"><img src="images/arrow.jpg" alt="Arrow" width="9" height="9"></div></td>
  17. <td width="72" class="link_menu" align="left"><a href="index.php" target="_self"><? echo $lang["home"]; ?></a></td>
  18. </tr>
  19. <tr>
  20. <td><div align="right"><img src="images/arrow.jpg" alt="Arrow" width="9" height="9"></div></td>
  21. <td class="link_menu" align="left"><a href="index.php?op=downloads"><? echo $lang["Downloads"]; ?></a></td>
  22. </tr>
  23. ...
  24. ...
  25.  
  26.  

Bien me coge los idiomas cuando clickeo en las imagenes pero el asunto es que cuando clickeo en los enlaces ahi mencionados se va al lenguaje por defecto (Cosa que no deseo, no se si se me entendio y si alguien podria darme algo de soporte.


Título: Re: Problema creando Multi-idioma
Publicado por: chicuela66 en 18 Febrero 2008, 12:07 pm
Yo crearia una variable de session del idioma.


Título: Re: Problema creando Multi-idioma
Publicado por: Erika Vega en 18 Febrero 2008, 17:08 pm
Gracias por tu respuesta bb pero podrias serme un poquito mas especifico?


Título: Re: Problema creando Multi-idioma
Publicado por: darcon en 18 Febrero 2008, 23:37 pm
Busca en google: "sesiones en php"
son un tipo de variables globales que se manejan con el vector global $_SESSION

quedaria mas o menos asi:

Código
  1. if ($_GET['langs']){
  2.   $_SESSION['lang'] = $_GET['langs'];
  3. }
  4. switch($_SESSION['lang']){
  5.   case 'es':
  6.      include("language/lang-es.php");
  7.   break;
  8.   case 'fr':
  9.      include("language/lang-fr.php");
  10.   break;
  11.   default:
  12.      include("language/lang-en.php");
  13.   break;
  14. }


Título: Re: Problema creando Multi-idioma
Publicado por: Erika Vega en 19 Febrero 2008, 07:03 am
Gracias chicos, son increibles!, eso de las sesiones me van de maravilla, pero como siempre surge un detalle mas ahora.

en la barra de direccion me concatena asi:

http://www.miwebsite.com/index.php?&langs=es&langs=en&langs=es&langs=en

Cada vez que clickeo, no habria forma de que solo tome una vez el idioma en mencion?.

Siento molestarlos con estas preguntas, quizas sean faciles de resolver como las de las sesiones, en verdad lo siento.


Título: Re: Problema creando Multi-idioma
Publicado por: darcon en 19 Febrero 2008, 15:13 pm
en la barra de direccion me concatena asi:

http://www.miwebsite.com/index.php?&langs=es&langs=en&langs=es&langs=en

Cada vez que clickeo, no habria forma de que solo tome una vez el idioma en mencion?.

No entiendo muy bien, pero parece que el error esta en el atributo "onclick" de la imagen, no creo que sea necesario que le pases la variable $_SERVER["QUERY_STRING"]. Prueba con algo mas o menos así:
Código
  1. <img src="images/language/es.gif" width="16" height="11" onclick="document.location='<? echo $_SERVER['PHP_SELF']."?langs=es"; ?>'">
  2.  
  3. <img src="images/language/en.gif" width="16" height="11" onclick="document.location='<? echo $_SERVER['PHP_SELF']."?langs=en"; ?>'">
  4.  


Título: Re: Problema creando Multi-idioma
Publicado por: Erika Vega en 19 Febrero 2008, 17:39 pm
Gracias darcon eres increible, ahora esta completo! muy buen codigo el que me diste, en verdad muchas gracias.  :-* :-* :D