Foros del Web » Programando para Internet » PHP »

Hacer una página multilenguaje

Estas en el tema de Hacer una página multilenguaje en el foro de PHP en Foros del Web. Hola que tal, hoy vengo a pedirles sugerencias en base a su experiencia, qué método elegirían ustedes para hacer una página multilenguaje con PHP. Ya ...
  #1 (permalink)  
Antiguo 04/02/2015, 17:19
Avatar de ericksav22  
Fecha de Ingreso: enero-2015
Mensajes: 7
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Hacer una página multilenguaje

Hola que tal, hoy vengo a pedirles sugerencias en base a su experiencia, qué método elegirían ustedes para hacer una página multilenguaje con PHP. Ya estuve leyendo un poco sobre el tema y me encontré estos post en la FAQ del sitio

[URL="http://www.forosdelweb.com/f18/faqs-php-530600/#post255978"]http://www.forosdelweb.com/f18/faqs-php-530600/#post255978[/URL]
[URL="http://www.forosdelweb.com/f18/faqs-php-530600/index3.html#post443216"]http://www.forosdelweb.com/f18/faqs-php-530600/index3.html#post443216[/URL]
[URL="http://www.forosdelweb.com/f18/faqs-php-530600/index3.html#post521127"]http://www.forosdelweb.com/f18/faqs-php-530600/index3.html#post521127[/URL]
[URL="http://www.forosdelweb.com/1459531-post157.html"]http://www.forosdelweb.com/1459531-post157.html[/URL]

Muchas gracias.
  #2 (permalink)  
Antiguo 05/02/2015, 08:42
 
Fecha de Ingreso: noviembre-2012
Mensajes: 76
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: Hacer una página multilenguaje

Personalmente la última opción me parece la más sencilla.

Evidentemente para una web en varios idiomas me guiaría por el lenguaje del navegador y en ningún caso por la ip para saber el país de procedencia pues puede ser una persona hispana viviendo en USA por ejemplo.

Aunque en primera instancia presentes la web en el idioma del navegador, deberías poder ofrecer a los visitantes la opción de poder cambiar de idioma, para ello puedes hacerte valer del uso de sesiones o cookies para memorizar la preferencia del usuario.

Saludos
  #3 (permalink)  
Antiguo 05/02/2015, 15:02
Avatar de ericksav22  
Fecha de Ingreso: enero-2015
Mensajes: 7
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Hacer una página multilenguaje

Cita:
Iniciado por cybervandal Ver Mensaje
Personalmente la última opción me parece la más sencilla.

Evidentemente para una web en varios idiomas me guiaría por el lenguaje del navegador y en ningún caso por la ip para saber el país de procedencia pues puede ser una persona hispana viviendo en USA por ejemplo.

Aunque en primera instancia presentes la web en el idioma del navegador, deberías poder ofrecer a los visitantes la opción de poder cambiar de idioma, para ello puedes hacerte valer del uso de sesiones o cookies para memorizar la preferencia del usuario.

Saludos
Hola cybervandal, gracias por tu respuesta, de hecho lo que comentas se me hace lo más correcto, lo que pienso hacer es que la primera vez que un usuario visite la pag. guiarme por el idioma de su navegador y si está disponible ese idioma lo pongo, pero le doi la opción de elegir el idioma por defecto mediante cookies, pero lo que aún tengo duda es cuál será la mejor manera de guardar las traducciones, por XML o Arrays? Saludos.
  #4 (permalink)  
Antiguo 05/02/2015, 18:04
 
Fecha de Ingreso: noviembre-2012
Mensajes: 76
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: Hacer una página multilenguaje

La mejor manera sinceramente no se cual es, soy autodidacta y a veces me falla la base pero usando el sentido común yo usaría directamente los arrays pues entiendo que al final si lo haces con XML tienes que cargar el xml, parsear, usar algún bucle para finalmente convertirlo en un array, no?

El método de un array multidimensional me parece muy sencillo para usar e implementar:
$configIdioma[$idioma]["titulo"];

Nobstante, he de comentarte que yo hice una web en dos idiomas y no usé ningún método encontrado por internet sino que usé el mio propio, un poco más extraño pero te explico el porque.

La razón fue el SEO, los robots no van a leer ni las sesiones ni las cookies por lo tanto si quieres que tu web te indexe en varios idiomas no te sirven los métodos anteriores. Es más, te puede ocasionar problemas de paginas duplicadas si no incluyes las etiquetas adecuadamente en los metas. Léase rel=canonical y rel="alternate" hreflang="x".
Otra cosa a tener en cuenta es que a google no le gustan las redirecciones.

Entonces yo lo que hice fue usar una carpeta para el otro idioma (podía haber sido un subdominio o un dominio distinto). En el dominio principal uso el idoma por defecto y en la carpeta el otro idioma y lo trato como si fueran dos webs distintas, sus propios heads, sus propios includes, etc... y se accede de un contenido en un idioma a otro con una banderita con un link normal.

No detecto el idioma del navegador, así pues si un americano entra en mi web tiene que darle a la banderita para cambiar de idioma, todo ello lo he exo por el SEO y la verdad me ha dado muy buenos resultados.
Pero claro por la temática de mi web no es necesario que la muestre de primeras en el idioma correcto. A mi lo que me interesaba es que me indexara bien y para ello es necesario tener urls distintas en todas y cada una de las paginas.

Asi pues cuando entra el robot de google solo hay que dejarlo hacer su faena, va leyendo las url en español y sus links internos hasta que llega al link de la versión en ingles en el cual sigue con sus links internos y sus propias urls en ingles además evito posibles contenidos duplicados.

Si en vez de una carpeta usas un dominio distito o subdominio puedes facilitar estos datos en los metas:
<link rel="alternate" hreflang="en" href="http://www.dominioEnIngles.com/"/>
<link rel="alternate" hreflang="es" href="http://www.dominioEnEspanol.com/"/>

Espero que te sirva el sermón, al menos para que no te contentes con la información que ya tenias y veas otro punto de vista mas pensado para el SEO
Un saludo!
  #5 (permalink)  
Antiguo 05/02/2015, 18:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Hacer una página multilenguaje

Cita:
[...] pero lo que aún tengo duda es cuál será la mejor manera de guardar las traducciones, por XML o Arrays? Saludos.
¿Realmente importa?

Es decir, bien podrías guardar todos los idiomas en archivos XML, JSON, CSV, texto, etc. pero lo realmente importante es tenerlos disponibles lo más rápido posible ¿no te parece?

Como bien dicen: siempre hay que "parsear" estos datos y almacenarlos en memoria.

Si lees un XML/JSON por decir algo finalmente terminará en memoria, en arrays u objetos, da igual.

Ahí lo crítico sería que si el usuario navega a otra página no volver a "parsear" de nuevo la misma información.

¿Qué parece mejor almacenarla en Memcached/Redis o algo así de rápido?

Igualmente el formato lo eliges en base a "qué tan fácil es modificarlo y crear nuevos idiomas", bien podrías tener una interfaz web que exporte todo en el formato final, que como digo en un inicio: da igual.

Que claro, si pones a un humano a crear un idioma usando directamente XML o JSON entonces ahí hay otro problema grave.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 06/02/2015, 13:27
Avatar de ericksav22  
Fecha de Ingreso: enero-2015
Mensajes: 7
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Hacer una página multilenguaje

Cita:
Iniciado por cybervandal Ver Mensaje
La mejor manera sinceramente no se cual es, soy autodidacta y a veces me falla la base pero usando el sentido común yo usaría directamente los arrays pues entiendo que al final si lo haces con XML tienes que cargar el xml, parsear, usar algún bucle para finalmente convertirlo en un array, no?

El método de un array multidimensional me parece muy sencillo para usar e implementar:
$configIdioma[$idioma]["titulo"];

Nobstante, he de comentarte que yo hice una web en dos idiomas y no usé ningún método encontrado por internet sino que usé el mio propio, un poco más extraño pero te explico el porque.

La razón fue el SEO, los robots no van a leer ni las sesiones ni las cookies por lo tanto si quieres que tu web te indexe en varios idiomas no te sirven los métodos anteriores. Es más, te puede ocasionar problemas de paginas duplicadas si no incluyes las etiquetas adecuadamente en los metas. Léase rel=canonical y rel="alternate" hreflang="x".
Otra cosa a tener en cuenta es que a google no le gustan las redirecciones.

Entonces yo lo que hice fue usar una carpeta para el otro idioma (podía haber sido un subdominio o un dominio distinto). En el dominio principal uso el idoma por defecto y en la carpeta el otro idioma y lo trato como si fueran dos webs distintas, sus propios heads, sus propios includes, etc... y se accede de un contenido en un idioma a otro con una banderita con un link normal.

No detecto el idioma del navegador, así pues si un americano entra en mi web tiene que darle a la banderita para cambiar de idioma, todo ello lo he exo por el SEO y la verdad me ha dado muy buenos resultados.
Pero claro por la temática de mi web no es necesario que la muestre de primeras en el idioma correcto. A mi lo que me interesaba es que me indexara bien y para ello es necesario tener urls distintas en todas y cada una de las paginas.

Asi pues cuando entra el robot de google solo hay que dejarlo hacer su faena, va leyendo las url en español y sus links internos hasta que llega al link de la versión en ingles en el cual sigue con sus links internos y sus propias urls en ingles además evito posibles contenidos duplicados.

Si en vez de una carpeta usas un dominio distito o subdominio puedes facilitar estos datos en los metas:
<link rel="alternate" hreflang="en" href="http://www.dominioEnIngles.com/"/>
<link rel="alternate" hreflang="es" href="http://www.dominioEnEspanol.com/"/>

Espero que te sirva el sermón, al menos para que no te contentes con la información que ya tenias y veas otro punto de vista mas pensado para el SEO
Un saludo!
Claro, el SEO es importante, de hecho lo tenía contemplado de cierta forma, como trabajo con MVC las rutas contendrían un parámetro el cual es el idioma a mostrar, ejemplo:
Código:
www.tupagina.com/articulo/es/nombre-del-articulo/
Y de esa forma no confundiría a los crawlers que visiten el sitio con contenido duplicado, aparte que el usar URL's amigables es buena práctica. Pero estudiaré las meta etiquetas que me dijiste por un mejor SEO, gracias.
  #7 (permalink)  
Antiguo 06/02/2015, 13:34
Avatar de ericksav22  
Fecha de Ingreso: enero-2015
Mensajes: 7
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Hacer una página multilenguaje

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Realmente importa?

Es decir, bien podrías guardar todos los idiomas en archivos XML, JSON, CSV, texto, etc. pero lo realmente importante es tenerlos disponibles lo más rápido posible ¿no te parece?

Como bien dicen: siempre hay que "parsear" estos datos y almacenarlos en memoria.

Si lees un XML/JSON por decir algo finalmente terminará en memoria, en arrays u objetos, da igual.

Ahí lo crítico sería que si el usuario navega a otra página no volver a "parsear" de nuevo la misma información.

¿Qué parece mejor almacenarla en Memcached/Redis o algo así de rápido?

Igualmente el formato lo eliges en base a "qué tan fácil es modificarlo y crear nuevos idiomas", bien podrías tener una interfaz web que exporte todo en el formato final, que como digo en un inicio: da igual.

Que claro, si pones a un humano a crear un idioma usando directamente XML o JSON entonces ahí hay otro problema grave.
Claro que importa, se que al final todo vendría siendo un array PHP pero lo que a mí me importa es estructurar bien el sitio y hacerlo escalable, que si se va a agregar un nuevo idioma sea sencillo hacerlo ya que todos ellos están almacenados en cierto lugar y están hechos de cierta forma. Aparte tener una clase que se encargue de administrarlos cada vez que se les solicite, después de eso hay que ver por optimizaciones, hacer pruebas, cuánto tardan en cargar si se parsean por cada solicitud, cuánto tardan si quedan guardados en MEMCACHED, es cuánta RAM gasta MEMCACHED si almacenamos cada idioma que se valla solicitando en el. Ahora hacer pruebas con arrays y todo eso. Realmente hay que darle importancia a las buenas prácticas y a las pruebas. Por eso a mi "no me da igual". Saludos.
  #8 (permalink)  
Antiguo 07/02/2015, 21:06
 
Fecha de Ingreso: noviembre-2012
Mensajes: 76
Antigüedad: 11 años, 5 meses
Puntos: 3
Respuesta: Hacer una página multilenguaje

Cita:
Iniciado por ericksav22 Ver Mensaje
Claro, el SEO es importante, de hecho lo tenía contemplado de cierta forma, como trabajo con MVC las rutas contendrían un parámetro el cual es el idioma a mostrar, ejemplo:
Código:
www.tupagina.com/articulo/es/nombre-del-articulo/
Y de esa forma no confundiría a los crawlers que visiten el sitio con contenido duplicado, aparte que el usar URL's amigables es buena práctica. Pero estudiaré las meta etiquetas que me dijiste por un mejor SEO, gracias.
Bién, ahora resulta que entra el robot de google.com en "www.tupagina.com/articulo/es/nombre-del-articulo/" y como detectas el idioma del navegador resulta que te indexa la url ES en inglés y por lo tanto tienes dos paginas duplicadas, la que tiene url "www.tupagina.com/articulo/es/nombre-del-articulo/" y "www.tupagina.com/article/en/article-name/" por ello son vitales los metas.

Como recomendación te propongo que te asegures de hacerlo de alguna manera que cuando entre en la url de la ruta del idioma vaya el idioma forzado y no detectado. Así indexaras por separado los idiomas (no solo las urls sino tb el contenido)
Saludos!

Etiquetas: multilenguaje, página
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 08:00.