Foros del Web » Programando para Internet » PHP »

Sobre sitios multilenguaje

Estas en el tema de Sobre sitios multilenguaje en el foro de PHP en Foros del Web. Hola a todos! Queria saber si alguna vez alguien realizó un sitio multi-lenguaje utilizando bd en el que no solo los cuerpos de texto más ...
  #1 (permalink)  
Antiguo 19/06/2008, 15:31
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Sobre sitios multilenguaje

Hola a todos!

Queria saber si alguna vez alguien realizó un sitio multi-lenguaje utilizando bd en el que no solo los cuerpos de texto más importantes estén en diferente idioma sino que tambien se puedan tener, por ejemplo, los ALT de imagenes, las imagenes de un menú, los title de links, la descripcion y keywords de la pagina, etc.

Si bien tengo varias formas en las que haría esto me pregunto si alguno de ustedes sabe sobre "la forma más eficiente"... ya que por un lado no quiero tener muchos archivos y por otro tal vez preferiría evitar meter TODO en la BD...

¿Tal vez usando XML?

BUeno, cualquier tip q me puedan tirar será agradecido!!

Un saludo grande
  #2 (permalink)  
Antiguo 19/06/2008, 15:35
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Respuesta: Sobre sitios multilenguaje

Cuando se trata de un portal Web multilenguaje, mi opcion con ojos cerrados es Joomla, ya que tiene un tremendo componente que hace todo este trabajo de forma muy facil. Y como CMS se puede contruir un complejo portal en muy pocos pasos.
__________________
eft0's stuff! - http://estebanfernandez.net
  #3 (permalink)  
Antiguo 19/06/2008, 16:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Sobre sitios multilenguaje

Hmm... bueno, tengo una opinion un tanto opuesta. No me gustan esos sistemas por varias razones. Igualmente, gracias por tu aviso.

A proposito... por ahora lo que se me ocurre es lo más obvio. Tener por ejemplo una tabla asi:

ID Tipo Texto id_idioma
1 txt_bienvenida Bbienevenidos! 1
2 txt_bienvenida Welcome! 2


Asi puedo crear tantos elementos como quiera y en tantos idiomas como quiera... PERO el problema es que para cada visita a cada pagina tendría que hacer uno o varios queries pidiendo textos... esta bien si es un sitio chico pero si es un sitio grande... ¿ustedes que opinan?

Otra seria tener una plantilla XML para cada idioma con, por ejemplo, los menúes. Una para cada idioma... y sacar de la BD solo los cuerpos de texto... pero aún así no se si me termina de cerrar....

bueno, gracias de nuevo!
  #4 (permalink)  
Antiguo 20/06/2008, 09:54
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 10 meses
Puntos: 5
De acuerdo Respuesta: Sobre sitios multilenguaje

Realmente no se cual es mas eficiente, pero hace no mucho tuve que realizar una web multilenguaje y opte por lo siguiente y fuciona de lo mas bien:

Una carpeta lang, con dos (o mas) arhivos php con constantes para cada idioma, al estilo:

Código PHP:

//archivo 'en.php'

define("NEW_USER""New User");
define("WELCOME_MESSAGE""Welcome to site.com!");
... 
Luego, en cada pagina, haces un include del idioma que te interesa:

Código PHP:
$_SESSION['lang'] = $_COOKIE['lang'];
if(isset(
$_GET['lang'])){
    
$_SESSION['lang'] = $_GET['lang'];
    
setcookie("lang"$_SESSION['lang'], time() + (84600 30));
    }
if (empty(
$_SESSION['lang'])) 
    
$_SESSION['lang'] = 'es'
Y en la pagina, simplemente haces un echo WELCOME_MESSAGE.
Eso me resultó bastante sencillo.
Eso si, a la hora de actualizar la pagina, es tedioso, pero creo que ningún sistema multilenguaje se escapa a eso...

Suerte
  #5 (permalink)  
Antiguo 20/06/2008, 11:34
 
Fecha de Ingreso: febrero-2007
Ubicación: Santiago, Chile
Mensajes: 53
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Sobre sitios multilenguaje

la opción de CHITOSO es bastante apropiada, y creo que es la mejor opcion si no tienes que mantener y/o administrar los idiomas. Ahora si quieres poder editar los textos de una forma amigable a través de una interfaz WEB entonces necesitarás tu mismo sistema de las bases de datos.

Por ahora descartaría el XML, porque es más complejo que el método de CHITOSO y tampoco te da la posibilidad amigable de editarlo. (o sea se puede.. pero no es fácil)

Así que yo que tú me quedaría con las bases de datos. Ahora respecto a las consultas, no te preocupes. El costo de tiempo para realizar muchísimos SELECTs es muy pequeño. No así para los INSERTs o UPDATEs, estos se demorán más. Pero como para cargar los datos sólo harás consultas tipo SELECT puede estar tranquilo que tu página web cargará bastante rápido.

De hecho muchos blogs tienen TODO en bases de datos y son consultadas cada vez que ingresas.
__________________
neonomade.com
  #6 (permalink)  
Antiguo 20/06/2008, 11:58
 
Fecha de Ingreso: marzo-2008
Ubicación: Guatemala
Mensajes: 74
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Respuesta: Sobre sitios multilenguaje

Aprovechando este hilo abierto,

Mi sitio es "multilenguaje", los contenidos no los manejo con bases de datos, tengo por ejemplo esto:

Código:
www.misitio.com/es/categoria/cosa.php
www.misitio.com/en/category/thing.php
www.misitio.com/fr/classe/chose.php
Como puedo hacer para que en un vinculo dentro de un idioma me cambie a la misma pagina pero en diferente idioma (se puede hacer a "mano" uno por uno, pero ese no es mi objetivo)?, cuando con un include inserto el menu y asi lo tengo en todas mis paginas?

Estoy en www.misitio.com/es/categoria/cosa.php (español) y quiero cambiarme al idioma ingles (www.misitio.com/en/category/thing.php), como puedo hacer? actualmente tengo un link que me manda al index de cada idioma, pero creo que por usabilidad sera mejor cambiarlo a la misma pagina.

Que opinan, espero sus comentarios.

Saludos
  #7 (permalink)  
Antiguo 20/06/2008, 12:02
 
Fecha de Ingreso: febrero-2007
Ubicación: Santiago, Chile
Mensajes: 53
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Sobre sitios multilenguaje

pero al final lo que haces es lo mismo que proponía CHITOSO (y que no está nada de mal) respecto a hacer el include con el idioma que necesitas. ¿o me equivoco?

No es una crítica, sólo deseo ver si es que tienes una nueva idea que no he entendido..

porque con el /es/cosa o el /en/thing no haces otra cosa que pasar parámetros ¿cierto? Entonces, lo interesante, está en ver como obtienes los textos de esos idiomas.
__________________
neonomade.com
  #8 (permalink)  
Antiguo 20/06/2008, 12:11
Avatar de _cx
_cx
 
Fecha de Ingreso: diciembre-2007
Ubicación: Montevideo, Uruguay
Mensajes: 70
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Sobre sitios multilenguaje

prueba Symfony

es un excelente framework que trabaja de una manera muy sencilla con I18n

saludos
  #9 (permalink)  
Antiguo 20/06/2008, 12:16
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Sobre sitios multilenguaje

No, en realidad lo que hace, es tener el sitio duplicado para cada lenguaje... claramente tiene sus desventajas y ventajas este modo.

elfopower, creo que lo que preguntas se haría con javascript unicamente... que al clickear ese vinculo entre en acción una funcion que te redirija a la página equivalente.

Se complica, porque para cada pagina, tenes una equivalente... no es como la solucion que plantee yo, que la misma pagina en otro idioma sería www.sitio.com/cosas.php?lang=EN... al final, siempre recurris a alguna estructura de datos para traducir de uno a otro.

Si usaras el mismo nombre para las urls, seria facilicimo...
www.sitio.com/ES/categories/things.php
www.sitio.com/EN/categories/things.php
www.sitio.com/FR/categories/things.php

Saludos
  #10 (permalink)  
Antiguo 20/06/2008, 12:23
 
Fecha de Ingreso: marzo-2008
Ubicación: Guatemala
Mensajes: 74
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Respuesta: Sobre sitios multilenguaje

Muchas gracias cristiansantana, _cx y chitoso por las sugerencias!

Todo este asunto ha sido un dilema.

Si tengo las páginas duplicadas, con los respectivos nombres traducidos a cada idioma (por cuestion de SEO).

Creen funcional el que te re-envie al index de cada idioma o busco la alternativa para poder re-enviar a algo mas cercano y menos complicado.

De nuevo Gracias!
  #11 (permalink)  
Antiguo 20/06/2008, 12:29
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Sobre sitios multilenguaje

Definitivamente no es cómodo, seguramente va a frustrar a algun que otro usuario... pero "nada mas" que eso :D
  #12 (permalink)  
Antiguo 20/06/2008, 12:35
 
Fecha de Ingreso: marzo-2008
Ubicación: Guatemala
Mensajes: 74
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sobre sitios multilenguaje

Bueno, muchas gracias por sus comentarios!

Haré un focus-group para que evaluen el site y si deplano es incomodo, le dedicaré más tiempo a esto más adelante!

Saludos y éxitos.
  #13 (permalink)  
Antiguo 20/06/2008, 12:36
 
Fecha de Ingreso: marzo-2008
Ubicación: Guatemala
Mensajes: 74
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Sobre sitios multilenguaje

Creen que afecte mucho en la usabilidad del sitio esto?
  #14 (permalink)  
Antiguo 20/06/2008, 12:44
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Sobre sitios multilenguaje

Buenas buenas! Gracias a todos por sus respuestas...

Estuve investigando arduamente ayer y llegué a una conclusión interesante...

A ver que les parece... todo estaría en BD (textos, titulos, menues, etc). Tendria una tabla como la que puse antes en la que guardo textos y los reconosco por lenguaje y/o tipo y/o seccion (si se quiere...).

Al usuario le permito seleccionar idiomas pero obtengo como punto de partida el idioma por las $_SERVER[HTTP_ACCEPT_LANGUAGE]... con esto guardo en $_SESSION el lenguaje (es, en, fr, etc).

Lo que sigue es bastante parecido a lo que ya mencionaron ó se imaginarán.. en cada página yo se que cosas necesito, voy a tener metodos/funcionoes que traigan esas cosas para el lenguaje que tenga en $_SESSION.

Muy bien... con esto tengo TODO dinamizado, hasta los keywords y la desc en los meta, tuto tuto....


Ahora, para la HOME del sitio (suponemos que tenemos un sitio muy visitado) en vez de tener el php dinámico que siempre consulta, tengo un front-end que elabore el html y lo guarde en un archivo estático, de esta forma el usuario no ve un .PHP que genera mil consultas, sino un archivo ESTATICO.


Este front-end para el script verifica si es la hora de generar el nuevo html ó no en base a lo que uno quiera... puede consultar algun campo especifico, puedo yo manualmente indicarlo desde un back-end, etc... por ejemplo, en el sitio que estoy trabajando voy a hacer que genere el estatico cada 12hs., que es el mínimo de actualización del sitio....

Para otros casos se puede cambiar, claro!


Para el resto de las paginas, iria directamente el .PHP que consulta la BD con cada visita...


¿ta bueno no? ¿que opinan?


Un saludo!!


PD: chitoso, tu respuesta esta interesante. Creo que es lo más adecuado para sitios chicos en los que tener todo en bd esta muy demás... lo voy a usar con un site pequeño que estoy armando 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 08:19.