phpbar.de logo

Mailinglisten-Archive

[php] Mehrsprachige Website

[php] Mehrsprachige Website

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Apr 22 10:52:52 CEST 2004


Hi Ralf,

Zitat von Ralf Eggert:

> für ein neues Projekt möchte ich Teile der Website mehrsprachig
> anbieten. Die Mehrsprachigkeit bezieht sich auf folgende Textelemente:
>
> 1. Komplette Artikel
> 2. Fehlermeldungen, Feldbezeichnungen
> 3. Stammdatentabellen
>
> Lösung zu 1.:
> Ich erweitere die Datenbanktabelle, in der ich meine Artikel speichere,
> um eine Spalte mit dem Sprachschlüssel (z.B. DE oder EN).
>
> Lösung zu 2.:
> Die Texte (Fehlermeldungen, Feldbezeichnungen bei Formularen,
> Überschriften, etc.) werden in einem Array vorgehalten.

Zu 2.:

Ich habe das bei mir anders geloest. Ich habe fuer jede Sprache eine Datei mit
Texten, die ich inkludiere. Beispiel:

Datei fuer de (text_de.php): $sLand = 'Deutschland';
Datei fuer en (text_en.php): $sLand = 'Germany';

Deine und meine Loesungen haben natuerlich beide ihre Vor- und Nachteile. :-)
Die Loesung mit den Arrays gefaellt mir persoenlich nicht. Sie ist mir zu
unuebersichtlich, kompliziert und fehleranfaellig. Da bevorzuge ich, bei
Erweiterungen eben einmal kurz mit Kopieren und Einfuegen 10 Sprachdateien
anfassen zu muessen. Das ist fuer mich der einzige Nachteil meiner Loesung.


> Lösung zu 3.:
> Hier kommt nun mein Problem. Und zwar habe ich in der Datenbank mehrere
> Tabellen, die Stammdaten enthalten, z.B. eine Tabelle mit Hobbys. Wenn
> ich dies wie unter 1. aufbaue, sähe meine Tabelle in etwa wie folgt aus.
>
> -------------------------
> h_id   h_spr   h_name
> -------------------------
> 1      de      Reisen
> 2      de      Wandern
> 3      en      travelling
> 4      en      hiking
> -------------------------
>
> Damit könnte ich mir problemlos die passende Auswahllisten für
> mehrsprachige Formulare basteln. Problem: Wenn jemand "Reisen" auswählt,
> soll einem englischsprachigen Besucher natürlich "traveling" angezeigt
> werden. Ich bekomme mit der Lösung also Probleme bei der Referenzierung.
>
> Meine Idee wäre nun, in dieser Stammdatentabelle nur eine Sprache (z.B.
> deutsch) aufzunehmen und die Übersetzungen ebenfalls aus einem
> Spracharray wie unter 2. zu holen.

Fuer meinen Geschmack zu kompliziert und inkonsistent. Ich habe es fuer meine
Website so geloest:

-------------------------
h_id   h_spr   h_name
-------------------------
1      de      Reisen
2      de      Wandern
1      en      travelling
2      en      hiking
-------------------------

D.h. h_id gruppiert die Begriffe die zusammen gehoeren, h_spr bezeichnet die
Sprache.


Viele Gruesse

Lutz

php::bar PHP Wiki   -   Listenarchive