Übersetzungsdateien erstellen und verwenden
Business Central ist mehrsprachenfähig, d. h. Sie können die Benutzeroberfläche (UI) in verschiedenen Sprachen anzeigen. In Business Central erfolgt dies mit XLIFF-Dateien, einem standardisierten Format für computergestützte Übersetzungen.
Optional können Sie Dynamics 365 Translation Service verwenden, um Übersetzungen für Ihre Zielsprachen zu erhalten. Weitere Informationen finden Sie unter Benutzeroberflächendateien übersetzen.
Unter Übersetzungen – Übersicht finden Sie eine Übersicht über die Anwendung von Übersetzungen.
Die XLIFF-Datei generieren
Um der von Ihnen erstellten Erweiterung eine neue Sprache hinzuzufügen, müssen Sie zunächst die Generierung von XLIFF-Dateien aktivieren. Die XLIFF-Dateierweiterung lautet .xlf. Die generierte XLIFF-Datei enthält die Zeichenketten, die in Eigenschaften wie Caption, CaptionML und Tooltip festgelegt sind.
Sie müssen XLIFF-Übersetzungsdateien verwenden, um eine App an AppSource zu übermitteln. Fügen Sie in der App.json Datei Ihrer Erweiterung die folgende Zeile hinzu:
al-languageCopy
"features": [ "TranslationFile" ]
Wenn die Einstellung für inkrementelle Builds in der Konfiguration der AL Language-Erweiterung aktiviert ist, werden alle Übersetzungen ignoriert, auch wenn die Einstellung „features": [ „TranslationFile“ ] in der app.json-Datei angegeben ist. Weitere Informationen finden Sie unter Konfiguration der AL Language-Erweiterung. Das Gleiche gilt für die Verwendung der RAD-Veröffentlichung, alle Übersetzungen werden ebenfalls ignoriert. Weitere Informationen finden Sie unter Arbeiten mit schneller Anwendungsentwicklung.
Wenn Sie nun den Befehl „build (STRG+UMSCHALT+B) in Visual Studio Code ausführen, wird ein Ordner \Translations generiert und mit der XLF-Datei gefüllt, die alle Beschriftungen, Beschriftungseigenschaften und Berichtbeschriftungen umfasst, die Sie in der Erweiterung verwenden. Die generierte XLF-Datei kann nun übersetzt werden.
Die ML-Versionen (mehrsprachig) der Eigenschaften sind nicht in der XLF-Datei enthalten:
Der TextConst-Datentyp ist auch nicht in der .xlf-Datei enthalten.
Stellen Sie sicher, dass Sie die Übersetzungsdatei umbenennen, bevor Sie die Erweiterung das nächste Mal erstellen, da dies überschrieben wird.
Durch Setzen des GenerateCaptions-Kennzeichens in der app.json-Datei geben Sie an, dass Sie Beschriftungen basierend auf dem Objektnamen für Seiten, Tabellen, Berichte, XMLports und Anforderungsseiten generieren möchten. Wenn für das Objekt bereits eine Caption-Eigenschaft festgelegt ist, wird dieser Wert verwendet. Für die Tabellenfelder wird OptionCaption verwendet. Die Syntax lautet wie folgt:
al-languageCopy
"features": [ "TranslationFile", "GenerateCaptions" ]
GenerateLockedTranslations
Durch Setzen des GenerateLockedTranslations-Kennzeichens in der app.json-Datei geben Sie an, dass Sie <trans-unit>-Elemente für geschlossene Beschriftungen in der XLIFF-Datei generieren möchten. Standardmäßig werden diese Elemente nicht generiert. Weitere Informationen finden Sie unter JSON-Dateien.
al-languageCopy "features": [ "GenerateLockedTranslations" ]
Beschriftungssyntax
Die Beschriftungssyntax wird im folgenden Beispiel für die Eigenschaft Caption gezeigt:
al-languageCopy
Caption = 'Developer translation for %1', Comment = '%1 is extension name', locked = false, MaxLength=999;
Die Attribute comment, locked und maxLength sind optional und die Reihenfolge wird nicht erzwungen. Weitere Informationen finden Sie unter Label-Datentyp.
Verwenden Sie die gleiche Syntax für Berichtsbeschriftungen:
al-languageCopy
labels { LabelName = 'Label Text', Comment='Foo', MaxLength=999, Locked=true; } Und das Folgende ist die Syntax für Label-Datentypen:
al-languageCopy
var a : Label 'Label Text', Comment='Foo', MaxLength=999, Locked=true;
Die XLIFF-Datei
In der generierten XLF-Datei sehen Sie für jede Beschriftung ein <source>-Element.
Für die Übersetzung müssen Sie nun die Zielsprache und ein <target>-Element pro Beschriftung hinzufügen. Die Zielsprache muss im Format "<language code>-<country code>" angegeben werden, z. B. „da-DK“, „es-ES“ oder „de-DE“.
Das Attribut <trans-unit id> entspricht der Objekt-ID in der Erweiterung.
Dies wird im folgenden Beispiel veranschaulicht.
al-languageCopy
<?xml version="1.0" encoding="utf-8"?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd"> <file datatype="xml" source-language="en-US" target-language="da-DK" original="ALProject16"> <body> <group id="body"> <trans-unit id="PageExtension 50110" maxWidth="999" size-unit="char" translate="yes" xml:space="preserve"> <source>Developer translation for %1</source> <target>Udvikleroversættelse for %1</target> <note from="Developer" annotates="general" priority="2">%1 is extension name</note> <note from="Xliff Generator" annotates="general" priority="3">PageExtension - PageExtension</note> </trans-unit> </group> </body> </file> </xliff>
Für jede Sprache kann nur eine .xlf-Datei verwendet werden. Wenn Sie Ihre Erweiterung in mehrere Sprachen übersetzen, benötigen Sie eine Übersetzungsdatei für jede Sprache. Es gibt keine erzwungene Benennung für die Datei, es wird jedoch empfohlen, sie mit folgendem zu benennen
Format: <extensionname>.<language>.xlf
Wenn die Erweiterung erstellt und veröffentlicht wird, können Sie die Sprache Dynamics 365 Business Central ändern, um die Benutzeroberfläche in der übersetzten Sprache anzuzeigen.
Andere Erweiterungen übersetzen
Um andere Erweiterungen zu übersetzen, z. B. beim Hinzufügen von Übersetzungen zur Basisanwendung, müssen Sie über den Abschnitt „Abhängigkeiten“ in der app.json-Datei auf das zu übersetzende Projekt verweisen. Weitere Informationen finden Sie unter JSON-Dateien. Wenn die Abhängigkeiten festgelegt sind, können Sie XLIFF-Dateien in Ihr aktuelles Projekt einfügen, die die Objektbeschriftungen der referenzierten Erweiterung übersetzen. Erstellen Sie ein Verzeichnis mit dem Namen Translations im Stammverzeichnis der Erweiterung und platzieren Sie die übersetzte XLIFF-Datei dort. Wenn Ihre Erweiterung erstellt und veröffentlicht wird, können Sie die Sprache Dynamics 365 Business Central ändern, um die Benutzeroberfläche in der übersetzten Sprache anzuzeigen.
Stellen Sie beim Übersetzen anderer Erweiterungen sicher, dass das Attribut original im Element <file> in der XLIFF-Datei nicht auf den Namen der aktuellen App festgelegt ist.
Ansonsten werden Übersetzungen nur zum Übersetzen von Beschriftungen in der gleichen App verwendet.
Für Apps, bei denen Übersetzungen die aktuelle App übersetzen sollen, hat die generierte XLIFF-Datei den korrekten Wert des App-Namens.
Verwenden Sie das <trans-unit id> der Beschriftung, wo es definiert wurde
Zum Übersetzen anderer Apps müssen Sie die <trans-unit id> der ursprünglichen Eigenschaft verwenden, nicht die eines Erweiterungsobjekts, da diese hätte geändert werden können.
Wenn MyPage definiert ist als:
al-languageCopy
page 50000 MyPage { Caption = 'Base Page' }
Und es hat <trans-unit id> für die Seite, die der Seite 2931038265 entspricht – Eigenschaft 2879900210.
Und wenn die folgende Seitenerweiterung von MyPage mit dem Namen MyPageExtension aufgerufen wird:
al-languageCopy
pageextension 50000 MyPageExtension extends MyPage { Caption = 'Extension Page'; }
hat <trans-unit id> für die Seitenerweiterung, die der PageExtension 1716690578 – Eigenschaft 2879900210 entspricht, dann müssen Sie, wenn Sie die Beschriftung auf der Seite ändern möchten, die ID Seite 2931038265 – Eigenschaft 2879900210 verwenden, die die <trans-unit id> der ursprünglichen Eigenschaft ist.