Sprachabhängige Inhalte in Templates bereitstellen

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; ?>
…

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>
Tutorial getestet mit Contao:
  • 4.4
  • 4.8
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-Mailadresse jederzeit mit nur 1 Klick wieder aus unserem System löschen. Datenschutzhinweis

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

Christian Feneberg ist der Gründer der Contao-Academy und nutzt seit 2010 Contao. Neben Contao begeistert er sich für Online-Marketing, Unternehmertum und Persönlichkeitsentwicklung.

Folge Christian jetzt auf Twitter, Facebook, Instagram und Xing.

Einen Kommentar schreiben

Was ist die Summe aus 2 und 3?