Hallo,
ich bin gerade am grübeln darüber, wie ich das Datenbankkonzept für Mehrsprachigkeit umsetze.
Ich habe im Internet verschiedene Ansätze gefunden. Jedoch scheint keiner auf meine Anforderungen zu passen.
1. Möglichkeit: SQL Tabelle nach rechts erweitern. Ich find’s komisch, dass das trotz der massiven Nachteile immer noch so oft im Internet angepriesen wird.
2. Möglichkeit: Mehrere Sprachen in der gleichen Tabelle untereinander in Zeilen Speichern. Spätestens wenn ich mit Nested Sets arbeite bekomme ich hier ein mega Chaos. Es fängt aber schon bei den IDs und auto_increment an.
3. Möglichkeit: Alle sprachabhängigen Inhalte in eine extra Tabelle auslagern. Diese Methode ist schon ganz gut aber erfordert Joins und erzeugt zusätzliche Datenbanklast. Beispiel: Nested Sets Befehle werden an dieser Stelle sehr komplex
4. Möglichkeit: Alle Sprachinhalte in ein und dieselbe Zelle Stecken und die verschiedenen Abschnitte im Text mit speziellen Trennzeichen unterteilen. Das ist zwar eine Möglichkeit aber die einzelnen Zellen würden extrem Aufgebläht. Zum Beispiel bei der Speicherung von Artikeln. Außerdem wäre die Software zum Bearbeiten solcher Zellen relativ kompliziert (Bearbeiten von Artikeln)
Meine Idee: Ich speichere die Sprachabhängigen Inhalte einfach nicht in der Datenbank. Sondern ich speichere diese Inhalte in Dateien. Alles was ich nun tun muss, ist meine Datenbankklasse zu erweitern. Dort gibt es eine Methode getRows($sql). Diese Methode müsste nun nur noch prüfen, ob es zu den ausgelesenen Spalten zusätzliche Werte in Dateien gibt. Diese würden dann in der derzeit eingestellten Sprache nachgeladen werden.
Vorteile: Keine Datenbanklast, Spontanes umschalten auf alternative Sprache wenn angeforderte Sprache nicht vorhanden ist, kann ohne großen Aufwand nachgerüstet werden, SQL-Kommandos bleiben absolut leserlich
Nachteile: Sicherung umständlicher, Benutzung der Inhalte durch mehrere System unter Umständen schwierig, Nachteil der fehlenden Volltextsuche – müsste über mehrsprachige Keywords ausgeglichen werden
Was haltet ihr von dieser Möglichkeit?
ich bin gerade am grübeln darüber, wie ich das Datenbankkonzept für Mehrsprachigkeit umsetze.
Ich habe im Internet verschiedene Ansätze gefunden. Jedoch scheint keiner auf meine Anforderungen zu passen.
1. Möglichkeit: SQL Tabelle nach rechts erweitern. Ich find’s komisch, dass das trotz der massiven Nachteile immer noch so oft im Internet angepriesen wird.
2. Möglichkeit: Mehrere Sprachen in der gleichen Tabelle untereinander in Zeilen Speichern. Spätestens wenn ich mit Nested Sets arbeite bekomme ich hier ein mega Chaos. Es fängt aber schon bei den IDs und auto_increment an.
3. Möglichkeit: Alle sprachabhängigen Inhalte in eine extra Tabelle auslagern. Diese Methode ist schon ganz gut aber erfordert Joins und erzeugt zusätzliche Datenbanklast. Beispiel: Nested Sets Befehle werden an dieser Stelle sehr komplex
4. Möglichkeit: Alle Sprachinhalte in ein und dieselbe Zelle Stecken und die verschiedenen Abschnitte im Text mit speziellen Trennzeichen unterteilen. Das ist zwar eine Möglichkeit aber die einzelnen Zellen würden extrem Aufgebläht. Zum Beispiel bei der Speicherung von Artikeln. Außerdem wäre die Software zum Bearbeiten solcher Zellen relativ kompliziert (Bearbeiten von Artikeln)
Meine Idee: Ich speichere die Sprachabhängigen Inhalte einfach nicht in der Datenbank. Sondern ich speichere diese Inhalte in Dateien. Alles was ich nun tun muss, ist meine Datenbankklasse zu erweitern. Dort gibt es eine Methode getRows($sql). Diese Methode müsste nun nur noch prüfen, ob es zu den ausgelesenen Spalten zusätzliche Werte in Dateien gibt. Diese würden dann in der derzeit eingestellten Sprache nachgeladen werden.
Vorteile: Keine Datenbanklast, Spontanes umschalten auf alternative Sprache wenn angeforderte Sprache nicht vorhanden ist, kann ohne großen Aufwand nachgerüstet werden, SQL-Kommandos bleiben absolut leserlich
Nachteile: Sicherung umständlicher, Benutzung der Inhalte durch mehrere System unter Umständen schwierig, Nachteil der fehlenden Volltextsuche – müsste über mehrsprachige Keywords ausgeglichen werden
Was haltet ihr von dieser Möglichkeit?
Kommentar