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

Query para cambiar el idioma a un sitio web.

Estas en el tema de Query para cambiar el idioma a un sitio web. en el foro de Mysql en Foros del Web. Buenas tardes: Partiendo de las dos siguientes tablas: ID NOMBRE --- ----------- 1 Semana ID GRUPO_ID IDIOMA_ID TRADUCCION TRADUCCION_BASE --- ------------- ------------- --------------- ---------------------- 1 ...
  #1 (permalink)  
Antiguo 19/04/2012, 10:34
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Query para cambiar el idioma a un sitio web.

Buenas tardes:

Partiendo de las dos siguientes tablas:


ID NOMBRE

--- -----------

1 Semana


ID GRUPO_ID IDIOMA_ID TRADUCCION TRADUCCION_BASE

--- ------------- ------------- --------------- ----------------------

1 1 1 Lunes 1

2 1 1 Martes 2

3 1 1 Miércoles 3

4 1 2 Monday 1

5 1 2 Wednesday 3


Donde:

- "NOMBRE" en la primera tabla recoge los grupos de traducciones (por ejemplo, días de la semana, meses del año, etc.).

- "GRUPO_ID" en la segunda tabla es foreign key de "ID" de la primera tabla.

- "IDIOMA_ID" en la segunda tabla es el id de un idioma (por ejemplo, 1 para castellano, 2 para inglés, etc.).

- "TRADUCCION" en la segunda tabla es la traducción de una palabra en el idioma determinado por el campo "IDIOMA_ID".

- "TRADUCCION_BASE" en la segunda tabla indica el "ID" de la traducción en el idioma predeterminado (por ejemplo, si el español es el idioma predeterminado, el valor "Monday" tomaría el valor 1 en el campo "TRADUCCION_BASE" ya que "Lunes" tiene el valor 1 en su campo "ID", el valor "Wednesday" tomaría el valor 3 en el campo "TRADUCCION_BASE" ya que "Miércoles" tiene el valor 3 en su campo "ID", etc.).

Pues bien, necesito implementar una query que, en caso de que no encuentre una palabra en un idioma concreto, devuelva el valor del idioma predeterminado, por ejemplo, en las tablas anteriores, como Tuesday no existe, devuelva Martes, teniendo en cuenta que debe devolver los valores de todas las traducciones de un grupo a la vez (por ejemplo, de "Lunes" a "Domingo"), no sólo de un valor ya que de esta forma ya tengo una query implementada.

He intentado implementar esta query de numerosas formas diferentes, incluso haciendo uso de más campos y tablas, pero nunca daban el resultado esperado.

Agradezco de antemano cualquier ayuda que podáis ofrecer, ya sea con dos query en vez de con una, con más campos en las anteriores tablas o incluso con más tablas.

Un saludo.
  #2 (permalink)  
Antiguo 20/04/2012, 01:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Query para cambiar el idioma a un sitio web.

No se si la estructura que planteas es la optima....

Supongamos que el idioma predeterminado es 1

Aqui optenemos los dias de la semana en el idioma base

Código MySQL:
Ver original
  1. SELECT ID,GRUPO_ID,IDIOMA_ID,TRADUCCION,TRADUCCION_BASE
  2. FROM Tabla2
  3. WHERE GRUPO_ID=1 AND IDIOMA_ID=1

Aqui optenemos los dias de la semana en el idioma 2

Código MySQL:
Ver original
  1. SELECT ID,GRUPO_ID,IDIOMA_ID,TRADUCCION,TRADUCCION_BASE
  2. FROM Tabla2
  3. WHERE GRUPO_ID=1 AND IDIOMA_ID=2

Ahora lo juntamos

Código MySQL:
Ver original
  1. SELECT if(I2.ID IS NULL,I1.ID,I2.ID),
  2.        I1.GRUPO_ID,
  3.        if(I2.IDIOMA_ID IS NULL,I1.IDIOMA_ID,I2.IDIOMA_ID),
  4.        if(I2.TRADUCCION IS NULL,I1.TRADUCCION,I2.TRADUCCION),
  5.        I2.TRADUCCION_BASE
  6.     (SELECT ID,
  7.            GRUPO_ID,
  8.            IDIOMA_ID,
  9.            TRADUCCION,
  10.            TRADUCCION_BASE
  11.       FROM Tabla2
  12.       WHERE GRUPO_ID=1 AND IDIOMA_ID=1) as I1
  13.      (SELECT ID,
  14.             GRUPO_ID,
  15.             IDIOMA_ID,
  16.             TRADUCCION,
  17.             TRADUCCION_BASE
  18.        FROM Tabla2
  19.        WHERE GRUPO_ID=1 AND IDIOMA_ID=2) as I2
  20.    ON I1.ID=I2.TRADUCCION_BASE;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 20/04/2012, 14:55
 
Fecha de Ingreso: diciembre-2009
Mensajes: 51
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: Query para cambiar el idioma a un sitio web.

Muchísimas gracias quimfv, es exactamente la query que quería implementar.

Un saludo.

Etiquetas: query, tabla, idiomas, campos
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 14:06.