Skip to content

Sprachdateien anpassen

Translations :: Contao Developer Documentation

Übersetzungsdateien können entweder in XLIFF (.xlf) oder PHP arrays (.php) implementiert werden.
Alle Übersetzungen müssen im Verzeichnis /contao/languages abgelegt werden.

Die Sprachdateien liegen - je nach Domain (s.u.) - unter

  • Directoryvendor
    • Directorycontao
      • Directorycore-bundle
        • Directorycontao
          • Directorylanguages
            • Directoryde
              • default.php
              • default.xlf
              • modules.php
              • exception.php
      • Directorynews-bundle
        • Directorycontao
          • Directorylanguages
            • Directoryde
              • default.php
              • modules.php
      • Directorycalendar-bundle
        • Directorycontao
          • Directorylanguages
            • Directoryde
              • default.php
              • modules.php

Contao-Übersetzungen sind wie folgt strukturiert:

Language - Domain - Category + Key - Label + Description

  • language: für jede Sprache wird ein Verzeichnis angelegt (/de, /en, /fr, …)
  • domain: für jede Domain muss eine individuelle Datei angelegt werden (z.B. default, modules, exception…)
  • domains enthalten die Übersetzungsdefinitionen
  • Jede translation ID besteht aus einer category (z.B. MSC, ERR, …) und einem key
  • Übersetzungen werden in Contao im $GLOBALS['TL_LANG'] Array gespeichert

z.B. Weiterlesen-Link
Das kann auf zwei Arten gemacht werden: entweder in einer .php-Datei oder in einer .xlf-Datei

/contao/languages/de/default.php
<?php
$GLOBALS['TL_LANG']['MSC']['more'] = 'Details ansehen';
/contao/languages/de/default.xlf
<?xml version="1.0" ?>
<xliff version="1.1">
<file>
<body>
<trans-unit id="MSC.more">
<source>Read more …</source>
<target>Details ansehen</target>
</trans-unit>
</body>
</file>
</xliff>

Aus irgendeinem Grund ist es best practice, maximal die default.xlf als .xlf-Datei anzulegen. Das lohnt sich dann, wenn man sehr viele Sprachdateien anpassen muss (per Transifex). Ansonsten ist das etwas diffiziler, weil die Codestruktur passen muss. Besser also bei .php-Dateien bleiben.

z.B. im Newsteaser:

/contao/languages/de/tl_news.php
<?php
$GLOBALS['TL_LANG']['tl_news']['teaser_legend'] = 'Veranstaltungsdatum und Teaser';
$GLOBALS['TL_LANG']['tl_news']['subheadline'] = ['Veranstaltungsdatum', 'Hier können Sie das Datum bzw. den Zeitraum der Veranstaltung eingeben'];

Für die Subheadline werden Label und Description benötigt!

modules ist die Domain für die Labels und Descriptions der Backend-Module, die Datei, in der die Übersetzungen angelegt werden, muss daher modules.php heißen.

/contao/languages/de/modules.php
<?php
/* Termine statt Nachrichten */
$GLOBALS['TL_LANG']['MOD']['news'] = array('Termine', '');

”Kopie” beim kopieren eines Artikels weglassen

Section titled “”Kopie” beim kopieren eines Artikels weglassen”

Datei /contao/languages/de/default.php:

<?php
$GLOBALS['TL_LANG']['MSC']['copyOf'] = '%s';