Übersetzungsdateien in Fluid XML / XLF

Länderspezifische Texte werden in Extbase/Fuid Extensions in Sprachdateien ausgelagert und der phrasekey mittels f:translate viewHelper aufgerufen. Die Sprachdateien oder Languagefiles liegen im Verzeichnis my_extension/Resources/Private/Language.


XML oder XLF Datei?

Früher wurden die language files im xml Format erstellt. Klassches Beispiel ist eine locallang.xml. Inzwischen sollte man xlf Files verwenden, aber wo ist eigentlich der Unterschied?

In einem xml File sind alle Sprachen vorhanden. Es gibt einen Abschnitt für die default Sprache und jede weitere Sprache bekommt einen neuen Abschnitt mit allen Keys und Übersetzungen. Das macht die Sache nicht besonders Übersichtlich, grade bei großen Extensions die in zig Sprachen vorliegen.

Abhilfe schafft hier das xlf Dateiformat. Dort wird für jede Sprache eine eigene Datei erzeugt. Es gibt eine default Sprache und jede weitere Übersetzug ist in einer neuen Datei der das Länderkürzel vorausgestellt wird.

Beispiel:

locallang.xlf
de.locallang.xlf
fr.locallang.xlf

Ihr müsst dabei nur die standard Datei einbinden (siehe Abschnitt weiter unten). Das System lädt aufgrund der Spracheinstellungen die entsprechende Länderdatei automatisch.


Der Aufbau von XLF Dateien

Die default Sprache unterscheidet sich nicht wesentlich von den alten XML files. 

Ein Beispiel:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
    <file source-language="en" datatype="plaintext" date="2013-09-08T21:34:32Z" product-name="myproduct">
        <header/>
        <body>
            <trans-unit id="text_a">
                <source>Text A in default language</source>
            </trans-unit>
            <trans-unit id="text_a">
                <source>Text B in default language</source>
            </trans-unit>
        </body>
    </file>
</xliff>


In den Übersetzungsdateien (z.B. de.locallang.xlf) wird im Body zu jeder trans-unit die source und target angegeben:

<trans-unit id="text_a">
    <source>Text a in default language</source>
    <target>Text a in deutscher Sprache</target>
</trans-unit>

Die macht das Ganze nicht nur für externe Übersetzer deutlich einfacher.


Sprachdateien einbinden

In Fluid Templates arbeiten wir in der Regel mit dem translate viewHelper:

<f:translate key="LLL:EXT:myExtension/Resources/Private/Language/locallang.xlf:text_a" />


Um nicht jedesmal den kompletten Dateipfad zu schreiben, können wir Extbase im EXT-setup mitteilen was unsere Sprachdatei ist. Dazu müssen in einer "normalen" Extension folgende Zeilen ins Setup:

extbase.pluginName = myPlugin
extbase.controllerExtensionName = myExtension

Damit können wir uns im translate viewHelper auf den key beschränken:

<f:translate key="text_a" />

Weitere Artikel zu diesem Thema:

Empfehlenswerte Lektüre:

Don't make me think!

Web Usability auf unterhaltsame Art: Das Buch gibt einen tieferen Einblick in das Surfverhalten von Nutzern und liefert praktische Beispiele und jede Menge Tipps für die Usability Verbesserung von Webseiten. Keine trockene Fachliteratur sondern unterhaltsam geschrieben.

Kommentare

keine Kommentare vorhanden


Kommentar verfassen

Die Email Adresse wird nicht veröffentlicht.