Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/11/2007, 07:26
micayael
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Mensaje Diseño multidiomas

Hola Amigos.

Hace un buen tiempo estoy trabajando con ambiente Web y siempre he hecho lo que a continuación voy a explicar. La es idea es poder compartir por medio de la experiencia que es lo más recomendable para un sitio multidiomas.

La estructura que yo uso la quite estudiando como trabaja un programa paquete ya hace unos años.

Los sitios que deben soportar múltiples idiomas los vi de dos maneras. O se adapta la base de datos para permitir esta funcionalidad o se crean varias copias del sitio para los distintos idiomas. En este caso me centraría en los sitios que deben tener un administrador de contenidos para que los usuarios mantengan el sitio.

Hasta ahora trabajo adaptando la base de datos. Les explico con un ejemplo-.

Creo una tabla de idiomas
-id
-nombre
-diccionario


donde diccionario es la dirección de un archivo .ini por ejemplo donde tengo guardadas las etiquetas de las páginas, por ejemplo titulos, labels para formularios, textos de botones, etc. Las cosas que los usuarios no van a cambiar básicamente.

A partir de esta tabla, si quiero una tabla de producto por ejemplo tendría que crear una relación muchos a muchos. Primero una tabla que contendrá los datos básicos independientes al idioma

productos
-id
-fecha_alta
-precio
-cantidad


En un relación muchos a muchos entre idiomas productos estarían los datos dependientes del idioma

productos_x_idiomas
-id
-productos_id
-idiomas_id
-nombre
-descripcion


De esta manera al ingresar al sitio el usuario elije el idioma y yo lo guardo en una sesión y todos los filtrados en las página los hago mediantes esta sesión.

En esta era donde los frameworks empiezan a estar de moda, en mi opinión, creo que es más simple mantener las tablas muchos a muchos con un id propio como el ejemplo y no usar una PK compuesta con ambas FKS.

Por otro lado, los frameworks dan mucha ayuda en tareas repetitivas como creación de formularios CRUD (ABM). cosa que para este tipo de diseños creo que no ayudan mucho. Otro ejemplo puede ser que para hacer un alta de producto los frameworks suelen tener la funcionalidad, a través del modelo, de hacer algo así
$this->Productos->create_from_request(); Esto permite que si yo utilizo los nombre de los campos en los textbox de los formularios él simplemente lo interpreta y hacer un insert. Son tareas muy interesantes y ahorran horas y líneas de código, pero para este diseño no se podría usar así nomás.

Con esos dos ejemplos me gustaría poner en la mesa para escuchar sus opiniones sobre que forma sería la más conveniente para realizar este tipo de sitios. Ya que siempre deben de tratarse en forma especial y hasta a veces un poco tediosa.

Espero sus opiniones amigos. Un abrazo