Multi-Sprachsupport und Benutzereigene Eintraege

Multi-Sprachsupport und Benutzereigene Eintraege

am 16.04.2006 21:37:49 von nikolai.onken

Hallo,

ich sitze gerade vor meinem DB-Design und moechte es hinsichtlich
Mehr-Sprachensupport veraendern.
Ich habe eine Tabelle "Kategorien" in der ich als Administrator Felder
vordefiniere.
Diese Felder koennen von Benutzern nicht veraendert werden.
Jetzt ist es aber moeglich, dass Benutzer eigene Eintraege hinzufuegen.

Mein Problem ist, dass diese Seite mehrere Sprachen unterstuetzen muss.
Das heisst also, dass die Vordefinierten Eintraege uebersetzt werden
muessen (was kein Problem ist - ich benutze einen identifier fuer jedes
Wort und loese das dann auf), die Benutzerspeziefischen aber nicht
uebersetzt werden (zumindest kann das nicht garantiert werden).
Jetzt frage ich mich ob ich das ueberhaupt mit einer Datebank loesen
kann oder ob ich besser z.B. XML benutze.
Hat jemand Loesungsansaetze fuer MySQL? Oder wie wird so etwas
normalerweise gemacht?
Viele Gruesse,

Nikolai

Re: Multi-Sprachsupport und Benutzereigene Eintraege

am 16.04.2006 23:15:24 von Johannes Vogel

Hi Nikolai

Nikolai Onken wrote:
> Mein Problem ist, dass diese Seite mehrere Sprachen unterstuetzen muss.
> Das heisst also, dass die Vordefinierten Eintraege uebersetzt werden
> muessen (was kein Problem ist - ich benutze einen identifier fuer jedes
> Wort und loese das dann auf), die Benutzerspeziefischen aber nicht
> uebersetzt werden (zumindest kann das nicht garantiert werden).
> Jetzt frage ich mich ob ich das ueberhaupt mit einer Datebank loesen
> kann oder ob ich besser z.B. XML benutze.
> Hat jemand Loesungsansaetze fuer MySQL? Oder wie wird so etwas
> normalerweise gemacht?

'Normalerweise' gibt's hier wohl nicht. Ich mach's ganz gerne wie folgt:

Languages: _id_, code, name
Translations: _id_, _idLanguages_, text

Ich lege also für jedes Textfragment in Translations eine ID an. Für
jede Sprache wird ein Text in Translations eingetragen. So kann ich dann
später über

select text from Translations t join Languages l on t.idLanguages=l.id
where l.code = 'de' and t.id = 14;

bspw. die deutsche Version von Textfragment Nr 14 auslesen.


Alternativ kannst du's aber auch mit gettext [1] versuchen.

[1] http://www.gnu.org/software/gettext/ bzw. für PHP: http://ch2.php.net/_

HTH, Johannes

Re: Multi-Sprachsupport und Benutzereigene Eintraege

am 16.04.2006 23:46:31 von nikolai.onken

Hallo Johannes,

ich schaue mir gerade gettext an, dass scheint die einfachste Loesung
zu sein, da auch nicht uebersetzte Woerter benutzt werden...
Danke fuer deine Antwort!
Viele Gruesse,

Nikolai