De:Mehrsprachige Site
From MODx Wiki
Contents |
Eine mehrsprachige Site ist eine gute Möglichkeit, mehr Benutzer auf Ihre Site zu locken. Jedes CMS hat Mehrsprachigkeit anders implementiert (wenn überhaupt). MODx hat diese Funktionalität nicht "Out of the Box" eingebaut, sie lässt sich aber mittels dieser Anleitung leicht umsetzen.
Icons für die Sprachumschaltung (optional)
Wenn Sie diesen Schritt auslassen, müssen Sie die $image-Variable im "Languages" snippet unten anpassen.
- Laden Sie einige Icons unter assets/images/ hoch, die Sie für die Sprachumschaltung verwenden wollen. Flaggen oder ähnliches sind gut geeignet. Benennen Sie diese nach den Länderkürzeln, also z.B. "de.gif" für die Deutsche.
- Quellen für solche Icons gibt es unter Resources am Ende des Tutorials.
Snippets erstellen
Weiterleitung
Erstellen Sie ein neues Snippet namens "Weiterleitung" mit folgendem Inhalt:
<?php $url = $modx->makeUrl($id); ob_end_clean(); // this will end the output buffer and discard silently what ever was in it header('Location: '.$url); ?>
Languages
Erstellen Sie ein weiteres Snippet names "Languages" mit diesem Inhalt:
<?php // get languages info $tv = $modx->getTemplateVar('languages', "", $modx->documentIdentifier); $languages = $tv['value']; if (!strlen($languages)) { return ""; } $langnames = array( "en" => "English", "de" => "Deutsch" ); $output = ""; // get entries in languages list $entries = explode(",", $languages); // loop through language entries for ($e = 0; $e < count($entries); $e++) { // seperate into lang code and target document id list($lang, $targetid) = explode("=", $entries[$e]); $image = '<img src="assets/images/'.$lang.'.gif" width="16" height="11" alt="'.$langnames[$lang].'" />'; if (strlen($output)) { $output .= ' '; } $output .= '<a href="'.$modx->makeUrl($targetid).'">'.$image.'</a>'; } return $output; ?>
Passen Sie die Namen im $langnames-Array an die Sprachen an, die Sie benutzen möchten. Die ersten zwei Buchstaben sind die ISO country codes und müssen so lauten wie ihre Icons. Geben Sie den Landesnamen in seiner Landessprache an (also "Deutsch" statt "German").
Template-Variable erstellen
Erstellen Sie eine Template-Variable namens "languages" mit dem Typ "text". Weisen Sie diese den Templates zu, in welchen sie verwendet werden soll.
Ändern Sie diese Templates oder den Inhalt von Seiten mit diesen Templates, in dem Sie das Snippet Languages ohne Parameter aufrufen.
[[Languages]]
An der Stelle des Aufrufs taucht die Sprachauswahl auf. Ihre Benutzer können dann auf die Flagge klicken, um die Sprache zu wechseln.
Dokumentenbaum erstellen
Erstellen Sie leere Dokumente mit dem Namen der ISO country codes. Als Beispiel sei eine Website für Deutsch und Englisch genannt ("de" und "en").
Add documents under the country code documents. I.e. you are duplicating your entire site each time, once per language. For example I have:
start (1) de |-> Willkommen (2) en |-> Welcome (3)
Im Wurzel-Dokument, also die Seite, die in der Konfiguration unter "Startseite" angegeben ist, benutzen Sie das Weiterleitungs-Snippet:
Weiterleitung?id=`2`
so dass eine Weiterleitung auf einer der Willkommens-Seiten stattfindet. Hier ist die Standard-Sprache Deutsch, daher wird auf das Dokument mit der ID 2 weitergeleitet.
Um die Umschalt-Flaggen anzuzeigen, muss auf jeder Seite ein Verweis auf die entsprechende Seite angegeben werden. Das Format lautet:
zwei_buchstabiger_laendercode=dokument_id(,zwei_buchstabiger_laendercode=dokument_id)
Als Beispiel:
en=3
gibt an, dass die Englische Version dieser Seite unter der ID 3 zu finden ist.
en=3,pl=6,fr=7
gibt an, dass die englische Version die ID 3 hat, die Polnische die ID 6 und die Französische die ID 7.
Es muss darauf geachtet, werden, dass sich keine Leerzeichen nach den Angaben (Kommas) befinden. In diesem Falle werden die Einträge nicht übernommen und das Snippet funktioniert nicht.
Conclusion
Das war's! Das Language-Snippet sorgt dafür, dass die Flaggen mit den LInks zu den anderen Sprachen ausgegeben werden.
Für weitere Sprachen:
- Duplizieren Sie alle Seiten für die entsprechende Sprache
- Fügen Sie eine neue Flagge im Ordner assets/images hinzu
- Fügen Sie die neue Sprache im Languages-Snippet hinzu
- Ändern Sie bei allen bereits vorhandenen Seiten die Template-Variablen ab und fügen die neue Sprache hinzu
Für das Menü können Sie das Wayfinder-Snippet wie folgt ändern:
[!Wayfinder? &startId=`[[UltimateParent]]`!]
sodass nur die Inhalte der entsprechenden Sprache ausgegeben werden.
Resourcen
- Original Forum-Eintrag
- Flaggen von famfamfam.com
- ISO Country Codes
- Plugin for Multilanguage support by Sottwell
- The language hack has landed! by Carsten
- My multi-content solution is ready to be tested... who wants to test? by Madmage
- Discussion : Have we reached something in multi-language contents?
- Discussion : Collecting all multi-language content requests and proposals
Hinweis
Dies ist eine (freie) Übersetzung von Make Multi Lingual Site.
