Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Base de datos multi-idioma

Estas en el tema de Base de datos multi-idioma en el foro de Bases de Datos General en Foros del Web. Hola, Alguien podría darme alguna indicación para el dissenyo de la BD de una web que tiene que estar traducia en 3 o más idiomas. ...
  #1 (permalink)  
Antiguo 14/02/2005, 04:50
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 21 años, 11 meses
Puntos: 0
Base de datos multi-idioma

Hola,

Alguien podría darme alguna indicación para el dissenyo de la BD de una web que tiene que estar traducia en 3 o más idiomas.

No veo claro como plantear el echo de tener la traducciíón dentro de la BD.

La programación de la web la realizaria en PHP.

Muchas gràcias!
  #2 (permalink)  
Antiguo 14/02/2005, 05:15
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 2 meses
Puntos: 1
A que te refieres con que la base de datos este en varios idiomas? Que los contenidos de la misma deben estar en esos idiomas?

Si es asi, creo que una buena solucion puede ser añadir un campo extra a cada tabla para indicar el "idioma". Así cuando insertes la infromacion de una ila, fijas el valor de ese campo al idioma en el que está escrito ("es" para español, "en" para ingles, por ejemplo).

Si quieres luego buscar en la tabla solo la informacion en un idioma dado solo tendrás que hacer un select con la condicion de que el idioma sea el que tu quieras.

Un saludoo

Zerjillo
  #3 (permalink)  
Antiguo 14/02/2005, 06:18
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 21 años, 11 meses
Puntos: 0
bueno, me refiero a tener la web traducida a tres idiomas y por lo tanto como diseñar la bd para contemplar esas traducciones.

No veo como plantearlo de la forma más óptima.


Gracias!

Última edición por Orkua; 14/02/2005 a las 06:23
  #4 (permalink)  
Antiguo 14/02/2005, 06:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 2 meses
Puntos: 1
Pues como te he dicho podria ser.

Cada página del sitio la tienes en la base de datos en tres idiomas, diferenciandose entre si por el campo "idioma".

Si quieres que salga la página en el idioma uno, recuperas de la base de datos la página que quieres con el campo de idioma a "idioma1".

Un saludo

Zerjillo
  #5 (permalink)  
Antiguo 14/02/2005, 06:41
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 21 años, 11 meses
Puntos: 0
entiendo.

Podrias poner un ejemplo "gràfico" de como seria por ejemplo en la bd la fila para el campo "nombre" con sus respectivas traducciónes (nombre, name, nom).

Es que entiendo a que te refieres pero no lo veo claro!

Gracias!
  #6 (permalink)  
Antiguo 14/02/2005, 06:47
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 4 meses
Puntos: 0
Se me ocurren dos soluciones:

Incluir una tabla con idiomas y añadir en las tablas que lo requieran un campo con el id del idioma (como contestaba Zejillo), así si en un futuro tienes que ampliar a más lenguajes bastaría con añadirlos en la tabla de idiomas e introducir los nuevos registros. Así pues cada unidad de información generaría n registros distintos en las tablas.

Otra solución (si tienes que traducir pocos campos) podría ser incluir en las tablas tantos campos que necesitan traducción como idiomas vayas a utilizar, así por ejemplo en un tabla podríamos tener los campos Nombre_es, Nombre_fr y Nombre_en, para el nombre en español, en francés y en inglés respectivamente. Si en un futuro hay que ampliar la web a más idiomas tienes que cambiar la estructura de la base de datos añadiendo los campos necesarios a las tablas y editando y modificando los registros existentes. Para hacer las consultas elegirías los campos que necesitas según el idioma.



Salu2.
  #7 (permalink)  
Antiguo 14/02/2005, 06:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 2 meses
Puntos: 1
Bueno, yo en un principio pensaba más en guardar las páginas "completas" en la base de datos, más que solo "frases o palabras".

La idea seria algo asi:

Código:
Nombre tabla: paginas

Id  |  Idioma  |   Pagina     |   Contenido
--------------------------------------------
1   | ES       | Indice       | <h1>¡Bienvenido!</h1>...
2   | EN       | Indice       | <h1>Welcome!</h1>...
3   | DE       | Indice       | <h1>Willkommen!</h1>...
4   | ES       | Inscripcion  | <p>Página Inscripción</p>...
5   | EN       | Inscripcion  | <p>Login Page</p>...
6   | DE       | Inscripcion  | <p>...</p>...
...
Donde id seria un autoincrement.

Si por ejemplo el usuario quiere ver la página del índice en español, tu solo tendrias que recuperar de la base de datos con un

Código:
  SELECT Contenido FROM paginas WHERE Pagina="Indice" AND Idioma="ES";
Si quisieras mostrar la página de Inscripcion en ingles:

Código:
  SELECT Contenido FROM paginas WHERE Pagina="Inscripcion" AND Idioma="EN";
¿Queda más o menos claro? Si tienes más dudas pregunta

Zerjillo
  #8 (permalink)  
Antiguo 14/02/2005, 07:04
 
Fecha de Ingreso: mayo-2002
Mensajes: 72
Antigüedad: 21 años, 11 meses
Puntos: 0
ok, ya veo!

Última edición por Orkua; 14/02/2005 a las 07:07
  #9 (permalink)  
Antiguo 14/02/2005, 08:35
Avatar de H0m3r0J4y  
Fecha de Ingreso: abril-2002
Mensajes: 123
Antigüedad: 22 años
Puntos: 0
Desde el punto de vista tecnico, la solucion 2 opcion de cableh es la mas adecuada ya que por lo general las tablas son archivos de texto y si metes todos los idiomas en una sola tabla la harias mas pesada y lenta.
Quizas en una base de datos para un sitio web no se note, pero... no buscamos la manera de hacer todo mas eficiente??

Salutes!
__________________
Vivir es la eterna tarea de conformar al prójimo
  #10 (permalink)  
Antiguo 14/02/2005, 10:03
 
Fecha de Ingreso: febrero-2005
Mensajes: 396
Antigüedad: 19 años, 2 meses
Puntos: 1
Cita:
Iniciado por H0m3r0J4y
Quizas en una base de datos para un sitio web no se note, pero... no buscamos la manera de hacer todo mas eficiente??
No, buscamos que las cosas funcionen bien y sean cómodas de manejar. Obviamente no queremos nada extremadamente lento, pero si funciona (y funcionará a menos de que tengas muchos miles de paginas), hay que pensar en la comodidad. Supongo que tu propondrias crear una tabla por cada idioma y dependiendo del que te pidan consultas una tabla u otra. En principio eso puede ser más incomodo, ya que si por un casualen el futuro quieres insertar un nuevo idioma te ves forzado a modificar la estructura de la base de datos, y probablemente tengas que repasar todas las sentencias de tu sitio para que se acomoden a la nueva casuistica.

En cualquier caso, es obvio que hay diversas maneras de hacerlo.

Un saludo

Zerjillo
  #11 (permalink)  
Antiguo 14/02/2005, 11:49
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
El problema de los lenguajes orientados al web es que el código normalmente estará en un servidor junto con miles y miles de páginas... de ahí que lo mejor sea optimizarlo y no que simplemente funcione... pero si lo vas a instalar en local o el servidor donde cuelgues tu trabajo es la pera... no problem.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:16.