Foros del Web » Programando para Internet » PHP »

como cambiar de idioma?

Estas en el tema de como cambiar de idioma? en el foro de PHP en Foros del Web. hola, Gracias de antemano mi pregunta es la siguiente, realizo una pagina multidioma - Español, Ingles - las cuales las tengo ordenadas en carpetas asi: ...
  #1 (permalink)  
Antiguo 27/10/2011, 18:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 195
Antigüedad: 14 años, 2 meses
Puntos: 3
Pregunta como cambiar de idioma?

hola, Gracias de antemano mi pregunta es la siguiente, realizo una pagina multidioma - Español, Ingles - las cuales las tengo ordenadas en carpetas asi:

http://www.mipage.com/es/ --> Español
http://www.mipage.com/en/ --> Ingles

cuando navego, digamos en español la pagina contacto.php

http://www.mipage.com/es/contaco.php

tengo un link con una bandera INGLES en esa pagina que me tiene que dirigir a la pagina de ingles...

Como rescato el link para que me envie justo a la pagina. contacto.php ..pero INGLES

http://www.mipage.com/en/contaco.php

GRACIAS!
  #2 (permalink)  
Antiguo 27/10/2011, 18:44
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: como cambiar de idioma?

Hola que tal.

Te dejo 2 formas posibles, lo demás dependerá de ti

Código PHP:
Ver original
  1. $doc = $_SERVER['PHP_SELF'];
  2. $pagina = 'http://www.mipage.com/es/contaco.php';
  3. $lan1 = 'es';
  4. $lan2 = 'en';
  5. echo $cadena = str_replace($lan1,$lan2,$pagina);
  6. echo $cadena2 = str_replace($lan1,$lan2,$doc);

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 27/10/2011, 19:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 195
Antigüedad: 14 años, 2 meses
Puntos: 3
De acuerdo Respuesta: como cambiar de idioma?

EXELENTE!! Gracias ya lo logre:

utilize:

$doc = $_SERVER['PHP_SELF'];
$lan1 = 'es';
$lan2 = 'en';
echo $cadena2 = str_replace($lan1,$lan2,$doc);

Eres un genio GRACIAS nuevamente
  #4 (permalink)  
Antiguo 28/10/2011, 05:10
Avatar de charlyalegret  
Fecha de Ingreso: septiembre-2011
Ubicación: Barcelona
Mensajes: 705
Antigüedad: 12 años, 7 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
  #5 (permalink)  
Antiguo 28/10/2011, 07:43
 
Fecha de Ingreso: febrero-2010
Mensajes: 195
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: como cambiar de idioma?

Gracias charlyalegret, algo compleja pero estoy seguro que la necesitare mas adelante muchas gracias!!
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:39.