Problema creando Multi-idioma

Iniciado por Erika Vega, 18 Febrero 2008, 06:11 AM

0 Miembros y 2 Visitantes están viendo este tema.

Erika Vega

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 (php) [Seleccionar]
<?PHP
$langs=$_GET['langs'];
if(empty($langs)){
$langs = getenv("HTTP_ACCEPT_LANGUAGE");
      }
switch($langs){
          case "es" :
             include("language/lang-es.php");
             break;
          case "en" :
             include("language/lang-en.php");
             break;
          default :
             include("language/lang-en.php");
             break;
}
?>


Ahora en mi index.php que mas o menos es asi:
Código (php) [Seleccionar]
...
...
<table width="200" border="0" cellspacing="2" cellpadding="2">
<tr>
<td><img src="images/language/es.gif" width="16" height="11" onclick="document.location='<?= $_SERVER['PHP_SELF'] ."?".$_SERVER["QUERY_STRING"]."&langs=es"?>'"></td>
<td><img src="images/language/en.gif" width="16" height="11" onclick="document.location='<?= $_SERVER['PHP_SELF'] ."?".$_SERVER["QUERY_STRING"]."&langs=en"?>'"></a></td>
</tr>
</table>

...
...
<? include("language/lang.php"); ?>

<table width="97" border="0" align="left" cellpadding="0" cellspacing="4">
<tr>
<td width="13"><div align="right"><img src="images/arrow.jpg" alt="Arrow" width="9" height="9"></div></td>
<td width="72" class="link_menu" align="left"><a href="index.php" target="_self"><? echo $lang["home"]; ?></a></td>
</tr>
<tr>
<td><div align="right"><img src="images/arrow.jpg" alt="Arrow" width="9" height="9"></div></td>
<td class="link_menu" align="left"><a href="index.php?op=downloads"><? echo $lang["Downloads"]; ?></a></td>
</tr>
...
...



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.

chicuela66

Yo crearia una variable de session del idioma.

Erika Vega

Gracias por tu respuesta bb pero podrias serme un poquito mas especifico?

darcon

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 (php) [Seleccionar]
if ($_GET['langs']){
   $_SESSION['lang'] = $_GET['langs'];
}
switch($_SESSION['lang']){
   case 'es':
      include("language/lang-es.php");
   break;
   case 'fr':
      include("language/lang-fr.php");
   break;
   default:
      include("language/lang-en.php");
   break;
}

PHP Programmer

Erika Vega

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.

darcon

Cita de: Erika Love en 19 Febrero 2008, 07:03 AM
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 (php) [Seleccionar]

<img src="images/language/es.gif" width="16" height="11" onclick="document.location='<? echo $_SERVER['PHP_SELF']."?langs=es"; ?>'">

<img src="images/language/en.gif" width="16" height="11" onclick="document.location='<? echo $_SERVER['PHP_SELF']."?langs=en"; ?>'">

PHP Programmer

Erika Vega

Gracias darcon eres increible, ahora esta completo! muy buen codigo el que me diste, en verdad muchas gracias.  :-* :-* :D