Foros del Web » Programando para Internet » PHP »

cambiar URL para cada idioma

Estas en el tema de cambiar URL para cada idioma en el foro de PHP en Foros del Web. Hola peacheperos, acudo a vosotros con un problema que no consigo resolver. A ver si consigo explicarlo. Tengo una web con varios idiomas dividido por ...
  #1 (permalink)  
Antiguo 30/03/2012, 18:11
 
Fecha de Ingreso: julio-2007
Ubicación: Málaga
Mensajes: 600
Antigüedad: 16 años, 8 meses
Puntos: 56
Pregunta cambiar URL para cada idioma

Hola peacheperos, acudo a vosotros con un problema que no consigo resolver.

A ver si consigo explicarlo. Tengo una web con varios idiomas dividido por carpetas, y URLs amigables que son comunes para todos los idiomas. Pongo un ejemplo:

misitio.com/es/plantas
misitio.com/en/plantas
misitio.com/fr/plantas

No puedo usar base de datos. Así que tengo un archivo de traducciones con todos los textos divididos por idiomas. Con el SESSION LANG detecto el idioma del usuario y le muestro el texto correspondiente. En este archivo he añadido los nombres de las URL:

Si es español:
$url_plantas='plantas';

Si es ingles:
$url_plantas='flowers';

Si es frances:
$url_plantas='fleurs';

Actualmente para cambiar de idioma tengo 3 botones que te cambia la carpeta de idioma (es, en, fr), manteniendo la url. Lo que necesito es que la URL cambie al cambiar de idioma. Ejemplo:

misitio.com/es/plantas
misitio.com/en/flowers
misitio.com/fr/fleurs

Con htaccess hago las urls dinámicas amigables. Para hacer este cambio he pensado en hacerlas estáticas ya que son pocas secciones. le digo que:

/es/plantas = plantas.php?lang=es
/en/flowers = plantas.php?lang=en
/fr/fleurs = plantas.php?lang=fr

PERO haciendo ésto sólo, si por ejemplo estoy en el idioma español, los botones de cambio de idioma me siguen dando estos links: (ya que detecta idioma español)

misitio.com/es/plantas
misitio.com/en/plantas
misitio.com/fr/plantas


Esto me da un error 404. Puedo corregirlo con htacces redirigiendo:

misitio.com/en/plantas a misitio.com/en/flowers
misitio.com/fr/plantas a misitio.com/fr/fleurs

PERO esa no es la solución, ya que no me parece profesional hacer 2 redirecciones cada vez que se cambie de idioma.

¿Cómo puedo hacer que los botones de cambio de idioma me muestren esto?:

misitio.com/es/plantas
misitio.com/en/flowers
misitio.com/fr/fleurs

¿Hay alguna forma de obligarle a que el botón inglés tenga el SESSION LANG en inglés para que detecte la URL "flowers"?, sin cambiarme el SESSION LANG de toda la página.

...Creo que he dado demasiadas vueltas y ya no se por donde salir, agradecería si alguien pudiera orientarme un poco.

Muchas gracias por adelantado!!
  #2 (permalink)  
Antiguo 30/03/2012, 21:52
Avatar de JairLizcano  
Fecha de Ingreso: junio-2008
Ubicación: Santander, Colombia
Mensajes: 608
Antigüedad: 15 años, 10 meses
Puntos: 53
Exclamación Respuesta: cambiar URL para cada idioma

Sinceramente me parece demasiado lío para manejar lenguajes dinámicos sin base de datos.

Mi respuesta es algo ajena a tu problema, pero me gustaría que valoraras algo como:

Si vas a manejar archivos por lenguaje, créate uno por cada lenguaje donde sea un determinado formato JSON quien se encargue de indicarte las salidas. Por ejemplo:

es.lang

Código:
{"titulo_pagina": "¡Bienvenidos!"}
en.lang

Código:
{"titulo_pagina": "Welcome!"}
fr.lang

Código:
{"titulo_pagina": "Accueil!"}
Y evidentemente con PHP lees el archivo del lenguaje indicado por el usuario, decodificas el formato JSON y ya está...

Creo que estás en la situación típica de aceptar cambios.

Buena suerte.
__________________
Programar dejó de ser una profesión acusada en la oscuridad y disfrutada fríamente... para convertirse en un arte.

Etiquetas: cada, url, usuarios, idiomas
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 20:42.