Inhaltsverzeichnis
Mehrsprachigkeit mit Babel (MODX)
Übersicht Anleitungen im Netz
Eine knappe Schritt für Schrittanleitung
… die meistens immer funktioniert.
Schritt 1: .htaccess
Im Rootverzeichnis die ht.access-Datei sichern und in .htaccess umbenennen Überprüfen, ob die Zeile 'RewriteBase' korrekt ist. Wenn die Website im Stammverzeichnis der Domain installiert ist, dann diese Schreibweise verwenden:
RewriteEngine On
RewriteBase /
Weiter geht's mit der Schritt für Schritt-Anleitung mit Modx 2.8.1
Korrekte Datumsformate
Für die korrekte Übersetzung des Datumformats muss das Gateway-Plugin von Babel erweitert werden. Dazu wird für jede Sprache eine Zeile (im Beispiel Niederländisch/Dutch) eingefügt:
setlocale(LC_ALL, 'nl_NL.UTF-8');
Das Plugin für drei Sprachen sieht dann aus:
<?php if ( $modx->context->get('key') != "mgr" ) { /* grab the current langauge from the cultureKey request var */ switch ( $_REQUEST['cultureKey'] ) { case 'en': /* switch the context */ $modx->switchContext('en'); setlocale(LC_ALL, 'en_US.UTF-8'); break; case 'nl': /* switch the context */ $modx->switchContext('nl'); setlocale(LC_ALL, 'nl_NL.UTF-8'); break; default: /* Set the default context here */ $modx->switchContext('web'); setlocale(LC_ALL, 'de_DE.UTF-8'); break; } /* unset GET var to avoid * appending cultureKey=xy to URLs by other components */ unset($_GET['cultureKey']); }
Babel-Links
- Chunk
<ul class="babellinks"> [[BabelLinks? &showCurrent=`1` &tpl=`babellink-template`]] </ul>
- Template
<li><a href="[[+url]]" class="[[+cultureKey]] [[+active:notempty=`[[+active]]`]]">[[+cultureKey]]</a></li>
Babel ID einer bestimmten Sprachversion
[[BabelTranslation? &contextKey=`de`]]
Referenz: https://docs.modx.com/3.x/en/extras/babel/babeltranslation
So ganz richtig funktioniert das nicht, mit dem Snippet. Was funktioniert ist diese Vorhergehensweise, wenn man die ID der deutschen Version einer Seite nutzen will:
- Chunk
<p>Pagetitle: [[pdoField? &id=`[[BabelLinks? &tpl=`babel_id` &showCurrent=`1`]]` &field=`pagetitle`]]</p>
Dabei legt man im Template folgenden Code ab:
- Chunk
[[+cultureKey:is=`de`:then=`[[+id]]`]]
Quelle für diese Funktionsweise war https://forum.modmore.com/t/sync-images-between-translations-with-babel/806/2
Links
- Nicht mehr verfügbar: Any Screen Size: MODX Multilingual
- So wie ich es gerade ausprobiert habe, funktioniert obige Anleitung. ABER: Im Gateway Plugin werden die Namen der Contexte eingesetzt, das funktionierte in Revo 2.7.1 nicht. Es klappte mit dem Einsetzen von culturekeys. Statt Context-Name im gateway (z.B. english) den culturekey dort einsetzen (Für english dann en). Das klappte dann endlich.
Noch ein Tutorial, unter anderem auch mit Userrechten:
Und ein Videotutorial