ActionScripter3
New Member
Hallo,
es geht um eine mehrsprachige sqlite DB welche eine translations tabelle mit den Übersetzungen enthält. Jeder zu übersetzende Wert in der Datenbank findet sich dort in der 'term' Spalte wieder, die jeweilige übersetzung ist in der Spalte der Sprache.
Betrachten wir zum Beispiel das Feld 'title' der Tabelle 'image', dann steht dort 'uid_123', die entsprechende Zeile der translatations-Tabelle sehe so aus:
Nun wird jedoch nicht nur der Titel, sondern z.B. auch die Beschreibung des Bildes übersetzt, daraus ergibt sich folgender (funtkionierender) Query:
Nun kann ich beliebig viele Felder mit einer Anfrage in allen drei Übersetzungen bekommen. Allerdings muss ich nun noch die Sprachen variabel gestalten. D.h. es muss möglich sein jederzeit neue Sprachen (als Spalte in der translations-Tabelle) hinzuzufügen, ohne den SQL-Query zu verändern, wie kann ich das lösen?
es geht um eine mehrsprachige sqlite DB welche eine translations tabelle mit den Übersetzungen enthält. Jeder zu übersetzende Wert in der Datenbank findet sich dort in der 'term' Spalte wieder, die jeweilige übersetzung ist in der Spalte der Sprache.
Betrachten wir zum Beispiel das Feld 'title' der Tabelle 'image', dann steht dort 'uid_123', die entsprechende Zeile der translatations-Tabelle sehe so aus:
Code:
| id | column_name | term | de | fr | en |
| 3 | image.title | uid_123 | Haus | Accueil | House |
Nun wird jedoch nicht nur der Titel, sondern z.B. auch die Beschreibung des Bildes übersetzt, daraus ergibt sich folgender (funtkionierender) Query:
Code:
SELECT `id_image`, `title`, `desc`, `filename`,
trans_title.en as title_en, trans_title.fr as title_fr, trans_title.de as title_de,
trans_desc.en as desc_en, trans_desc.fr as desc_fr, trans_desc.de as desc_de
FROM images
LEFT JOIN translations trans_title ON (trans_title.column_name = 'images.title' AND trans_title.term = image.title)
LEFT JOIN translations trans_desc ON (trans_desc.column_name = 'images.desc' AND trans_desc.term = image.desc)
WHERE id_image = 123;
Nun kann ich beliebig viele Felder mit einer Anfrage in allen drei Übersetzungen bekommen. Allerdings muss ich nun noch die Sprachen variabel gestalten. D.h. es muss möglich sein jederzeit neue Sprachen (als Spalte in der translations-Tabelle) hinzuzufügen, ohne den SQL-Query zu verändern, wie kann ich das lösen?