Internationalisierung für Angular, Teil 1: Bordmittel

Seite 2: Übersetzung anfertigen

Inhaltsverzeichnis

Nach dem Fertigstellen der Markierung können Entwickler ihr bevorzugtes Tool erneut starten. Die erweiterte Datei messages.xlf sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8" ?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file source-language="en" datatype="plaintext" ↵
original="ng2.template">
<body>

<trans-unit id="67b19d1fe5d146b03b0b23cdd6fe54e35eec6e31" ↵
datatype="html">
<source>Passengers</source>
<target/>
<note priority="1" from="description">Beschreibung des ↵
Feldes</note>
<note priority="1" from="meaning">Spezielle Bedeutung</note>
</trans-unit>

<trans-unit id="eigene.id" datatype="html">
<source>Children</source>
<target/>
</trans-unit>

<trans-unit id="a82c8a41d9c47205f1193a6cbadc43b9091e5094" ↵
datatype="html">
...

</body>
</file>
</xliff>

Jede Markierung erhält ihren eigenen Bereich im XML. Der Tag <source> umfasst die ursprüngliche Fassung, die sich über <target> übersetzen lässt. Mit <note> können Nutzer die Angaben der Beschreibung und Bedeutung wiedergeben. Angaben mit @@ sind im HTML in XML an die Stelle der ID zu setzen (<trans-unit id="eigene.id" datatype="html">).

Die Einträge lassen sich in dem Zustand bereits übersetzen. Dazu müssen die Entwickler die Datei kopieren und im Projekt zum Beispiel mit dem Namen messages.de.xlf ablegen. Da es sich um XML handelt, ist es möglich, mit <![CDATA[]]> HTML-Elemente in die Übersetzung einzubringen:

<trans-unit id="67b19d1fe5d146b03b0b23cdd6fe54e35eec6e31" datatype="html">
<source>Passengers</source>
<target> <![CDATA[<i> Passagiere</i>]]></target>
<note priority="1" from="description">Beschreibung des Feldes</note>
<note priority="1" from="meaning">Spezielle Bedeutung</note>
</trans-unit>

Ein Nachteil automatisch generierter Übersetzungsdateien ist die Tatsache, dass Angular Übersetzungen nicht direkt erweitert. Übersetzer müssen die vorhandene Datei mit der neu generierten vergleichen und entsprechend anpassen.

Ein weiteres Problem der gezeigten Methode erschwert das: Da Angular eine Verbindung zwischen XML-Eintrag und HTML-Element erstellen muss, um später an der richtigen Stelle den Text zu ändern, benötigt es eine Referenz. Im XML ist diese über die ID (<trans-unit id="referenz" ...>) zu sehen. Wenn im HTML keine via @@ vergeben ist, generiert das Tool sie aus dem markierten Tag. Das hat zur Folge, dass Änderungen im Template an markierten Bereichen auch die ID ändert. Beim Migrieren der Änderungen in die eigene Übersetzung ist gesondert darauf zu achten.

Aus diesen Gründen ist eine solide Angabe einer Beschreibung und Bedeutung im Attribut sehr wichtig, sollten keine selbstdefinierten IDs zum Einsatz kommen.