Christian Seiler: Web-Programme modular aufbauen

Beitrag lesen

Hallo Sven, Hallo Andreas,

Da drückt man einmal im Leben "Vorschau generieren", weil man einen längeren Text geschrieben hat, und dann vergisst man die Vorschau und schließt den Tab eine Minute später. *grmbl*

Mehrsprachige Seiten habe ich bislang so realisiert, dass es je Sprache ein Verzeichnis gibt (also /de/, /en/ und /fr/), in denen sich immer identische Dateien befinden. Will man von einer deutschen Seite auf die zugehörige englische Seite, dann könnte man im Pfad einfach das "de" durch "en" ersetzen und hätte so "umgeschaltet". Die einfache Variante ist natürlich, dass jede Sprache unabhängig von den anderen Sprachen ist, und die Links einfach zur Startseite führen.

Also dass mit den Verzeichnissen ist eine gute Idee, das könnte man prima mit mod_rewirte implementieren, würde ich sowieso verwenden: "Cool URIs don't change."

Was die Textausgabe angeht: Variablen, Variablen, Variablen.

ACK. Ich habe es bisher so gemacht, dass ich ein Unterverzeichnis languages hatte, dass die Dateien "de.php", "en.php", etc. enthält. Ich habe dann je nach Sprache nur diese eine Datei eingebunden. In der Datei wurde ein assoziativer Array definiert, der alle Meldungen und Texte enthielt. (und ich konnte dann darauf über $lang_array["phone_number"] auf "Telefonnummer" (Deutsch) bzw. "Phone number" (Englisch) zugreifen)

Wenn du Mehrsprachigkeit hast, hast du noch die zusätzliche Schwierigkeit, dass du einerseits das Modul "Mehrsprachigkeit" unterbringen mußt, und zusätzlich müssen deine anderen Module natürlich ihre Textausgaben auch nur optional, dann aber eventuell mehrsprachig mitbringen. Das könnte knifflig werden.

Am besten wäre es, die Mehrsprachigkeit in die Kernfunktionen mit aufzunehmen und wenn es nur eine Sprache gibt, dann wird halt nur diese eine Sprache angezeigt. Du könntest dann statt nur Dateien auch Verzeichnisse nehmen. Dann hast Du pro Sprachkürzel ein Unterverzeichnis im languages-Verzeichnis. Dieses enthält dann mehrere Dateien, die dann jeweils den assoziativen Array weiter füllen. Das Framework bindet dann languages/<sprache>/base.php und languages/<sprache>/<modul>.php ein. Du könntest auch noch eine Datei languages/<sprache>/info.php verwenden, die für jede Sprache immer eingebunden wird, die die Infos zu den einzelnen Sprachen enthält. (Also vollständiger Name der Sprache, eventuell Standardtexte, etc.) Diese Infos können dann zur einzelnen Sprachauswahl verwendet werden.

Ganz wichtig: Die Basis-Übersetzungen musst Du Dir gut überlegen und vor allem *gut dokumentieren*! Ich habe da Erfahrung, Du schreibst eine Meldung rein, brauchst die gleiche 3 Wochen später und errinserst Dich nicht mehr. Dann hast Du das Problem, dass Du Dich auch nicht mehr an den genauen Wortlaut der Nachricht erinnerst und deshalb Suchen/Ersetzen fehlschlägt. Daher wirst Du eine neue Nachricht einrichten, die einen anderen Wortlaut hat und redundant ist. Das gibt ein Riesenchaos - gerade an diesem Punkt muss man wirklich sehr viel Selbstdisziplin besitzen. Aber nicht nur bei diesen Details, auch gerade beim Programmieren - da immer gleich Übersetzungsvariablen verwenden und sich zumindest den Namen des Schlüssels für den assoziativen Array sich merken. Wenn das Projekt erst mal so richtig schön komplex ist, zahlt sich Selbsdisziplin und eine gute Konzeption von sehr häufig gebrauchten Dingen, wozu u.a. auch die Mehrsprachigkeit gehört, aus. Wenn man nämlich dann etwas ändern will, ist es ein Mordsaufwand, da kann man dann schon mal mit mindestens 30 Mantagen oder so rechnen.

Sowas funktioniert prima, wenn nur der Code ausgetauscht werden muß, aber nicht die Daten. Dann hält man den Server einfach für einen Moment an, kopiert die neuen Programmdateien aufs System, und fährt den Server wieder hoch.

Meinst Du nicht auch, dass eine temporäre .htaccess mit deny from all reicht? Oder genauer: was spricht dagegen? :)

Grüße,

Christian

--
Sollen sich alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen und nicht mehr davon erfasst haben als eine Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst.
                      -- Albert Einstein