Multilanguage: Struktur und Verarbeitung

T

thegamehhh

Hallo Tutorials.de-Community,

zurzeit überarbeite ich einwenig meine Projekte und möchte sie auf multilingual verfeiern. Bei einem CMS namens Ionize, welches mit Codeigniter aufgebaut wurde, habe ich eine Struktur gesehen, welche mir gefällt und ich auch gern für meine Projekte verwenden würde.

Die Tabelle page besteht z.B. aus den Spalten
id_page | id_parent | id_menu | id_type | name usw.
1 | 0 | 2 | 0 | 404

Die Tabelle page_lang hingegen besteht aus den Spalten
lang | id_page | url | link | title usw.
de | 1 | 404 | (leer) | NULL
en | 1 | 404 | (leer) | NULL

Für mein Projekt würde ich das z.B. für die Kategorien im Newssystem verwenden wollen, sodass die Kategorien unter der selben ID laufen aber unter verschiedenen Sprachen.

Könnt ihr mir erklären, wie ich das selber hinbekommen kann beim Speichern dieser Einträge oder habt ihr vielleicht eine bessere Idee für mich?
 
Handelt es sich bei Deinen Übersetzungen um solche, die einmal für Dein Projekt festgelegt und dann immer wieder genutzt werden, oder eher um solche, die stetig ergänzt werden? In erstem Fall würde ich die Daten nicht in einer Datenbank speichern, da Du sie ständig brauchst.
 
Eine DB für Übersetzungen von Default-Texten ist wie Kanonen auf Spatzen. Selbst wenn der Text sich immer wieder ändert, ist eine Datei, die z.B. das gettext()-Format unterstützt (.mo) wesentlich geeigneter, als mit jeder Übersetzungsanforderung die DB zu befeuern.

Man kann eine DB nutzen, um die Daten vor dem Roll-Out zu manipulieren, beim Roll-Out sollte IMHO daraus jedoch ein File erstellt werden.

Ich rate jedenfalls davon ab, die Applikation permanent Meta-Daten aus der DB zu holen. Man bedenke das Datenvolumen, das dabei entsteht.

Wie schon geschrieben ist gettext() dafür viel geeigneter.
 
Handelt es sich bei Deinen Übersetzungen um solche, die einmal für Dein Projekt festgelegt und dann immer wieder genutzt werden, oder eher um solche, die stetig ergänzt werden? In erstem Fall würde ich die Daten nicht in einer Datenbank speichern, da Du sie ständig brauchst.

ja, dabei handelt es sich um übersetzungen, die immer wieder genutzt werden sollen, abhängig von der sprache.

als beispiel erwähne ich, wenn man sich die bundesliga tabelle in deutsch aufruft, dass aus der sprach tabelle "bayern münchen" ausgegeben wird und wenn man die bundesliga tabelle in englisch aufruft, dass dann "bayern munich" ausgegeben wird. dazu muss ich beides ja dann unter der selben id für das team abspeichern und mir geht es darum, wie ich das speichere. mit dem ausgeben dieser abfrage habe ich kein problem
 
Nur mal so am Rande: Eigennamen werden nicht übesetzt. "Bayern München" ist auch auf englisch "Bayern München", denn das ist der Eigenname des Vereins.

Du übersetzt ja auch nicht "FC Liverpool" zu "FC Leberschwimmbad" ;-)
 
Zuletzt bearbeitet:
Also Eigennamen – unabhängig davon, dass sie nicht übersetzt werden, wie saftmeister schon anmerkte – würde ich tatsächlich in einer Datenbank speichern. Aber wenn es um Elemente einer Webseite geht, die statisch sind (abgesehen von Inhalten in Platzhaltern), dann würde ich diese eher in einem Skript als Datei speichern und sie bestenfalls auch noch cachen – das spart erheblich Zeit.
 

Neue Beiträge

Zurück