Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/10/2011, 05:10
Avatar de charlyalegret
charlyalegret
 
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 13 años, 4 meses
Puntos: 140
Respuesta: como cambiar de idioma?

Hola! No conocía esta solución, pero tiene un problema. El primero, que "es" o "en" se encuentre en la url. Por otro lado, en tu caso no, pero imaginemos un caso más complejo en que en español tienes /es/contacto.php y en inglés /en/contact.php, pero se trata del mismo archivo, y que además tienes páginas dinámicas, es decir ese mismo archivo php puede corresponder a unas cuantas páginas....
En este caso, la solución que implanté yo es la siguiente, por si te pudiera ser de interés (sobretodo por la importancia de tener keywords en la url, por lo tanto, que sea diferente en los idiomas varios). Aviso que esto lo he hecho yo y seguro que hay opciones más simples, por eso acepto cualquer tipo de comentarios, ideas o lo que sea:

-crear un archivo php con un array multidimensional, que incluyo en todos los archivos, del siguiente tipo:

Código PHP:
Ver original
  1. $enllacos=array (
  2.     "0" =>array (
  3.         "linces"=>"http://www.dominio.com/es",
  4.         "lincen"=>"http://www.dominio.com/en"
  5.         ),
  6.     "1" =>array (
  7.         "linces"=>"/es/contacto.html",
  8.         "lincen"=>"/es/contact.html"
  9. etc etc

De esta manera, cualquier enlace que tengas en la página lo podrás llamar de la siguiente manera, suponiendo que el idioma lo pases por el url:

Código PHP:
Ver original
  1. if ($id == "es"){
  2.     $linc="linces";
  3.     }
  4. elseif ($idl == "en"){
  5.     $linc="lincen";
  6.     }

luego el link: {$enllacos["1"]["$linc"]} donde el número corresponde a la página que desees, independientemente del idioma

Finalmente, para lo de la bandera, tengo el siguiente codigo para localizar en qué url nos encontramos y devolver la correspondiente en el idioma que indique la bandera:

Código PHP:
Ver original
  1. $urlactual = $_SERVER['REQUEST_URI']; // la que se ve en el navegador, no la real
  2. $posicio = 0;
  3. if ($urlactual == "/es" or $urlactual == "/en" or $urlactual == "/404.php") { // esto me evita errores cuando me encuentro en página de inicio, no se porqué...
  4.     $posicio = 1;
  5.     $valor = 1; // esto para saltarme el while siguiente, y que me devuelva 0 que corresponden a las paginas de inicio
  6.     }
  7. while ($valor == NULL){
  8.     $valor=@array_search($urlactual, $enllacos[$posicio]);
  9.     $posicio++;
  10.     if ($posicio == 100){ //para evitar bucle infinito si hay error.
  11.         $valor = 1;
  12.         $posicio = 1; // si se da error i bucle, al final me mandará a las paginas de inicio
  13.         }
  14.     }
  15. $posicio--;
  16. $urles = $enllacos["$posicio"]["linces"];
  17. $urlen = $enllacos["$posicio"]["lincen"];

Finalmente, en la bandera española pones el enlace $urles y a la inglesa $urlen.

Saludos