Sprachabhängige Inhalte in Templates bereitstellen
- 4.4
- 4.9
- 4.13
Zunächst musst du für jede Sprache einen Seitenbaum anlegen.
Beim jeweiligen Startpunkt der Website hinterlegst du dann die gewünschte Sprache.
Sprache per Inserttag festlegen
Im folgenden Beispiel erstelle ich einen Button, der sprachabhängig beschriftet werden soll.

Contao stellt für diesen Zweck das Inserttag {{iflng}} zur Verfügung.
Hier ein Beispiel:

{{iflng::de}}Mehr erfahren!{{iflng::en}}Read more!{{iflng}}
Wenn die Sprache nun Deutsch ist, wird „Mehr erfahren!“ ausgeben und bei Englisch entsprechend „Read more!“.
Du kannst diese Technik überall verwenden, wo Inserttags erlaubt sind.
Logik im Template
Für umfangreichere sprachabhängige Bereiche kann das Inserttag ungünstig sein. In diesem Fall ist reines PHP vielleicht geschickter.
Wenn du mit if und else, oder break und case arbeiten möchtest, kannst du im Template auch so auf die Sprache zugreifen:
<?php echo $GLOBALS['TL_LANGUAGE']; ?>
…
<?php if($GLOBALS['TL_LANGUAGE'] == 'de'): ?>
<div><p>Inhalt in deutscher Sprache</p></div>
<?php elseif($GLOBALS['TL_LANGUAGE'] == 'en'): ?>
<div><p>Content in Englisch language</p></div>
<?php endif; ?>
…
Hinweis
Die globale Variable $GLOBALS['TL_LANGUAGE'] ist deprecated und wird in Contao 5 nicht mehr unterstützt werden.
Globale Labels definieren
Manchmal bietet es sich an, die sprachabhängigen Inhalte auch auszulagern, damit diese global verfügbar sind. Außerdem wird damit das Template nicht zu voll und macht den Code im Template einfacher lesbar.
Je nach Contao-Version gehst du unterschiedlich vor.
Unter Contao 3 gibt es dafür die Datei: system/config/langconfig.php. Die langconfig.php wird zwar unter Contao 4 noch unterstützt, du solltest aber den neuen Weg wählen.
Empfehlung Blogbeitrag
Mehr dazu erfährst du auch in diesem Blogbeitrag:
Wohin mit der langconfig ab Contao 4
Globale Labels in Contao 4
Zuerst erstellst du die nötige Ordnerstruktur und legst darin die Datei default.php an.
- /contao/languages/de/default.php
- /contao/languages/en/default.php
Hinweis zu Contao 4.4 LTS
Bitte verwende hier noch den alten "App-Pfad":
- /app/Resources/contao/languages/de/default.php
- /app/Resources/contao/languages/en/default.php
Nun fügst du in die entsprechende Datei deine Texte in folgender Form ein:
…/de/default.php
<?php
$GLOBALS['TL_LANG']['custom']['button1'] = 'Mehr erfahren!';
…/en/default.php
<?php
$GLOBALS['TL_LANG']['custom']['button1'] = 'Read more!';
Damit die Änderungen aktiv werden, musst du per Contao Manager bzw. contao-console den Anwendungs-Cache erneuern.
Hinweis
Du kannst die Bezeichnung der Labels frei wählen.
D.h. custom und button1 kannst du beliebig durch deine eigene Namensbezeichnung austauschen.
Labels im Template verwenden
Nun kannst du in jedem beliebigen Template auf das Label zugreifen. Je nach Sprache wird dann der entsprechende Text eingefügt.
Im folgenden Beispielcode würde der Buttontext passend zur Sprache eingefügt.
<a href="#" class="button"><?= $GLOBALS['TL_LANG']['custom']['button1']; ?></a>
Über den Autor

Christian Feneberg ist der Gründer der Contao-Academy und erstellt seit 2010 Websites mit Contao. Außerdem ist er im Team von trakked.io. und regelmäßig auf YouTube in der Contao Show zu sehen. Neben Contao begeistert er sich für Online-Marketing, Unternehmertum und Persönlichkeitsentwicklung.
1 Kommentare
zonky |
Hi,
schöner wäre statt der alten GLOBALS, die deprecated sind, die neuen Versionen anzugeben - siehe https://docs.contao.org/books/extending-contao4/background/deprecated.html#globalstllanguage-and-sessiontllanguage
Antwort von Maren Lange
Hallo zonky,
danke für deinen Hinweis. Wir haben an der entsprechenden Stelle den Link hinzugefügt.
Einen Kommentar schreiben