Sprachabhängige Inhalte in Templates bereitstellen

  • 4.4
  • 4.9
  • 4.13

Bei mehrsprachigen Projekten ist es oft notwendig, abhängig von der Sprache, unterschiedliche Inhalte auszugeben. In Contao gibt er hier mehrere Möglichkeiten.

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.

https://docs.contao.org/books/extending-contao4/background/deprecated.html#globalstllanguage-and-sessiontllanguage

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>
Hat dir dieser Artikel gefallen?

Willst du in Zukunft keinen Artikel verpassen?
Dann trage hier deine E-Mailadresse ein und klicke auf "Abonnieren". Du erhältst regelmäßig aktuelle Infos über Contao und die Contao-Academy.

Wir geben deine Daten niemals an Dritte weiter. Du kannst deine E-Mail-Adresse jederzeit mit nur einem Mausklick aus unserem System löschen. Der Newsletter Versand sowie die individuelle Messung, Speicherung und Auswertung von Öffnungsraten und der Klickraten in Empfängerprofilen erfolgen durch KlickTipp. Ausführliche Hinweise erhältst du in unserer Datenschutzerklärung.

Über den Autor
Christian Feneberg (Gründer Fenepedia)

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.

Folge Christian jetzt auf Twitter, Xing und LinkedIn.

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

Was ist die Summe aus 5 und 5?