Translations
Das Be-Portal unterstützt die Definition von Übersetzungen. Entweder direkt als Objekt in der be_package.install.yaml oder in separaten translations.yaml dateien.
Ein Übersetzungseintrag hat die folgenden Felder
key | identifier der Übersetzung |
usage? | (optional) - Hinweistext, bei Anzeige auf Übersichtsseite |
und darüberhinaus werden die eigentlichen Übersetzungen als Werte von ISO 2-letter codes definiert.
Beispiele
Insgesamt als
- key: invoice
usage: Zur Nutzung an allen Stellen wo Rechnung als Begriff dargestellt wird
de: Eingangsrechnung
en: Invoice
fr: Facture
de und en sind bei der Definition verpflichtend.
Die Übersetzungen können zudem Platzhalter verwenden
- key: customerSelected
usage: Anzeige nach Kundenauswahl mit dynamischer ID
de: Kunde mit ID {{id}} ist ausgewählt
en: Customer with ID {{id}} is selected
fr: Client avec ID {{id}} est sélectionné
Benutzung der Translations
Aktuell (7.7.0) sind Übersetzungen für Menüeinträge, Commands & Pages implementiert
Anstelle eines statischen Strings kann im YAML der Ausdruck ${PKG.translationKey} verwendet. Diese Einträge werden dann gemäß der definierten Übersetzungen ersetzt. Existiert für eine Sprache kein Eintrag, wird als Fallback Deutsch verwendet.
Beispiel
commands:
- name: someCommand
label: ${PKG.toBeTranslated}
Parameterverwendung in Pages
Falls Übersetzungen Platzhalter enthalten, können diese in Pages ebenfalls angegeben werden.
- controlType: inputContainer
controls:
# 1. Einfacher Key ohne Platzhalter
- controlType: label
value: ${meinTranslationKey}
# 2. mit Platzhaltern, die aus data.Variablen kommen
- controlType: label
value: "${meinTranslationKey:{ artnr: dab010Instance.artnr }}"
Parametervalues müssen hierbei sein:
existierende Variablen, die mittels Bind an dieser Stelle gebunden werden
statische strings (in
”).Im Fall nicht existenter Variablen. werden die Werte ebenfalls literal verwendet.
Benutzung von Übersetzungen in variables-Section
Analog zu JS-Verboten innerhalb von Variablendefinitionen (z. B. kein dynamisches Binding) können dort auch keine dynamischen Übersetzungen verwendet werden.
Ausnahme:
Übersetzungen ohne Parameter.
Diese werden bereits im Backend ersetzt und können daher auch im variables-Bereich genutzt werden.
Alle anderen Übersetzungen werden dem Frontend als Template übergeben und dort dynamisch ausgewertet.
Benutzung von von Übersetzungen in JS-Code
Auch innerhalb von JavaScript-Code können Translation-Token ausgewertet werden.
Dafür steht die Kontextfunktion zur Verfügung:
$.translate(key: string, params?: { [key: string]: any } ): Promise<string>
Bitte beachten Sie, dass diese Funktion asynchron ist.
Das Frontend muss in der Lage sein, fehlende Translation Keys, die das Backend beim Seitenaufruf nicht mitgeliefert hat (z. B. durch obfuskierte Funktionsaufrufe), nachzuladen.