X4 Produktdokumentation
Breadcrumbs

Localization

Web applications that are created with Web Apps can be made available in multiple languages.

At the beginning of the .wad file, you must specify the languages in which the web application is to be available within the <Translations> element. 

For each language in which the web application is to be available a translation file has to be created in the Translations folder. This language file assigns a variable to a name in a language. The name of the language file consists of the name of the language (usually a two-character language abbreviation) and the file extension translation, for example, de.translation (German language file), en.translation (English language file), or es.translation (Spanish language file).

Note

The name attribute must be declared for the <Translations> element in the .wad file. The value specified for name must match the file name of the language file with file extension.

The value of displayName is displayed during language selection in the Web App.

XML
<?xml version="1.0" encoding="UTF-8" ?>
<WebApp ...>
	<Translations>
		<Translation displayName="Deutsch" name="de.translation"/>
		<Translation displayName="English" name="en.translation"/>
		...
	</Translations>
</WebApp>



If Authorization Code Flow (see <Access>) is set, the following can be defined in Keycloak for login:

  • Language selection at login: The user can choose with which language he wants to log in. The web app then opens in the selected language..

  • Default language for login: The user then opens the web app in the specified default language.

More information in the official Keycloak documentation: https://www.keycloak.org/docs/latest/server_admin/index.html#enabling-internationalization

Creating a New Language File

  1. Right-click on the Translations folder.
    The context menu opens.

  2. Click on NewTranslation.
    The dialog for creating a new language file opens.

  3. Enter the name of the language file in the File name field.

  4. Click on Finish.

The language file was created. The language file is filled with predefined values in German and contains each possible key. The language file is structured as follows:

XML
loginLabel = user name
passwordLabel = password
emailLabel = mail
...

The language file consists of a key (e.g. loginlabel) and a corresponding name (e.g. user name). Many elements support more than one language. The corresponding attributes have to be marked with a $ sign and the key, for example loginLabel="$LoginLabel".

If several languages are available for a Web App, the user can switch between the different languages at any time.

Sprachauswahl_en.png

Translation Keys

The following translation keys are currently provided in German by default and can be translated into as many languages as required:

XML
##############################################
# System defined translation
# Change the following values according to the language you need or delete to use standard German version instead.
# Add your own keys freely. Both system keys and your own can be used in the .wad , .imprint and .dpr files with translation sign $
# Syntax: <tag attribute="$loginLabel" >
# Warning - Not all attributes in .wad, .imprint and .dpr files are translatable and support translation keys with $ sign!
##############################################
loginLabel=Benutzername
passwordLabel=Passwort
emailLabel=E-Mail
loginButtonLabel=Anmelden
logoutButtonLabel=Abmelden
forgotPasswordLabel=Passwort vergessen?
changePasswordLabel=Passwort ändern
rememberMeLabel=Angemeldet bleiben
wrongPasswordLabel=Der eingegebene Benutzername oder das Passwort sind falsch.
changeButtonLabel=Ändern
required=Pflichtfeld
saveBtn=Speichern
deleteBtn=Löschen
newBtn=Neu
cancelBtn=Abbrechen
backButton=Zurück
notFoundToStart=Zur Startseite
notFoundText=Seite nicht gefunden
notFoundHeader=404
componentNameNotDeclared=Der Komponentenname in der Aktion ist nicht deklariert.
forbiddenHeader=403
forbiddenText=Sie haben keine Berechtigung für den Zugriff. Wenden Sie sich an den Administrator.
dataReloaded=Der ausgewählte Datensatz wurde im Hintergrund geändert. Die Seite wird neu geladen.
changePasswordButtonOk=Speichern
changePasswordButtonCancel=Abbrechen
changePasswordInvalid=Überprüfen Sie Ihr Passwort
changePasswordSuccess=Ihr Passwort wurde geändert
changePasswordWrong=Passwort entspricht nicht den Passwortrichtlinien
changePasswordReused=Passwort wurde bereits verwendet
changePasswordDoNotMatch=Passwörter stimmen nicht überein
changePasswordNewPassword=Neues Passwort
changePasswordOldPassword=Altes Passwort
changePasswordRepeat=Wiederholen
forgotPasswordButtonOk=Senden
forgotPasswordButtonCancel=Zurück
forgotPasswordRestoreField=E-Mail
greetLabel=Hallo,
errorHeader=Fehler
passwordNotChanged=Das Passwort wurde nicht geändert. Bitte überprüfen Sie Ihre Eingabe.
requestError=Bei der Anfrage ist leider ein Fehler aufgetreten. Bitte versuchen Sie es zu einem späteren Zeitpunkt nochmals.
passwordEmailSent=Wir haben eine E-Mail mit weiteren Anweisungen verschickt.
leavePageWithUnsavedDataHeader=Möchten Sie diese Seite wirklich verlassen?
leavePageWithUnsavedDataText= Beim Verlassen der Seite werden Ihre Änderungen verworfen.
leavePageWithUnsavedDataOkButton=Seite verlassen
leavePageWithUnsavedDataCancelButton=Auf Seite bleiben
uploadBtn=Hochladen
downloadBtn=Herunterladen
multipleNavigationHeader=Navigationsfehler
multipleNavigationText=Es kann nur ein Navigationspfad definiert werden.
next=Vor
prev=Zurück
today=Heute
monthView=Monat
weekView=Woche
dayView=Tag
monday=Montag
tuesday=Dienstag
wednesday=Mittwoch
thursday=Donnerstag
friday=Freitag
saturday=Samstag
sunday=Sonntag
mondayShort=Mo
tuesdayShort=Di
wednesdayShort=Mi
thursdayShort=Do
fridayShort=Fr
saturdayShort=Sa
sundayShort=So
january=Januar
february=Februar
march=März
april=April
may=Mai
june=Juni
july=Juli
august=August
september=September
october=Oktober
november=November
december=Dezember
start=Start
end=Ende
location=Ort
description=Beschreibung
allDay=Ganztägig
start=Start
destination=Ziel
search=Suche
routingErrorTitle=Fehler
routingError=Die Route konnte nicht berechnet werden.
languagesLabel=Sprachauswahl
scrollingDesktopNonMacWarning=Verwenden Sie Strg + Scrollen zum Zoomen der Karte
scrollingDesktopMacWarning=Verwenden Sie \u2318 + Scrollen zum Zoomen der Karte
scrollingMobileWarning=Verwenden Sie zwei Finger zum Bewegen der Karte
registerLabel=Registrieren
titleLabel=Ihre Privatsphäre ist uns wichtig
defaultCookieConsentText=Einige Cookies sind für die einwandfreie Nutzung der Webseite unerlässlich, während andere uns helfen, Ihr Erlebnis auf dieser Webseite zu optimieren und zu verbessern.
dprLabel=Datenschutz
imprintLabel=Impressum
externalMediaCookiesTitle=Externe Medien
externalMediaCookiesDescription=Inhalte von Videoplattformen und Social-Media-Plattformen sind standardmäßig blockiert. Wenn ExternalMedia-Cookies akzeptiert werden, ist der Zugriff auf diese möglich.
preferencesLabel=Vorlieben
necessaryCookiesBtn=Nur notwendige Cookies zulassen
allowSelectionBtn=Auswahl zulassen
preferencesTitle=Cookie-Einstellungen
preferencesText=Cookies sind kleine Textdateien, die von Webseites verwendet werden können, um Interaktionen zu analysieren und zu messen und Ihr Erlebnis auf dieser Webseite zu optimieren und zu verbessern. Diese Webseite verwendet verschiedene Arten von Cookies. Einige Cookies sind für den Betrieb dieser Webseite unerlässlich; für alle anderen Arten von Cookies benötigen wir Ihre Zustimmung. Einige Cookies werden von Diensten Dritter gesetzt, die auf unseren Webseites erscheinen.
allowAllCookiesBtn=Alle Cookies zulassen
essentialCookiesTitle=Essentielle
essentialCookiesDescription=Essentielle Cookies sind erforderlich, um grundlegende Funktionen zu nutzen und um das reibungslose Funktionieren der Website zu gewährleisten.
sixMonthText=6 Monate
youtubePurposeText=Wird verwendet, um YouTube-Inhalte zu entsperren.
bingPurposeText=Wird verwendet, um Bing-Inhalte zu entsperren.
showCookiesDetailsLabel=Details zu Cookies anzeigen
acceptLabel=Akzeptieren
nameLabel=Name
providerLabel=Anbieter
purposeLabel=Aufgabe
hostLabel=Host(s)
cookieNameLabel=Cookie Name
expiryLabel=Cookie Ablauf
waitTitle=Bitte warten
waitText=Sie werden in Kürze weitergeleitet.
waitButton=Zur Anmeldung
decimalValidation=Bitte geben Sie eine Dezimalzahl ein. Es darf nur ein Trennzeichen enthalten.
integerValidation=Bitte geben Sie eine ganzzahlige Zahl ein. Sie darf keine Trennzeichen enthalten.
## GRID COMPONENT ##
grid.groupPanelEmpty = Ziehen Sie eine Spaltenüberschrift hierher, um nach dieser Spalte zu gruppieren
grid.noRecords = Keine Datensätze verfügbar.
grid.pagerFirstPage = Zur ersten Seite
grid.pagerPreviousPage = Zur vorherigen Seite
grid.pagerNextPage = Zur nächsten Seite
grid.pagerLastPage = Zur letzten Seite
grid.pagerPage = Seite
grid.pagerOf = von
grid.pagerItems = Elemente
grid.pagerItemsPerPage = Elemente pro Seite
grid.pagerPageNumberInputTitle = Seitenzahl
grid.filter = Filter
grid.filterEqOperator = ist gleich
grid.filterNotEqOperator = ist nicht gleich
grid.filterIsNullOperator = ist Null
grid.filterIsNotNullOperator = ist nicht Null
grid.filterIsEmptyOperator = ist leer
grid.filterIsNotEmptyOperator = ist nicht leer
grid.filterStartsWithOperator = beginnt mit
grid.filterContainsOperator = beinhaltet
grid.filterNotContainsOperator = beinhaltet nicht
grid.filterEndsWithOperator = endet mit
grid.filterGteOperator = ist größer als oder gleich
grid.filterGtOperator = ist größer als
grid.filterLteOperator = ist kleiner oder gleich als
grid.filterLtOperator = ist kleiner als
grid.filterIsTrue = ist richtig
grid.filterIsFalse = ist falsch
grid.filterBooleanAll = (Alle)
grid.filterAfterOrEqualOperator = ist gleich oder später als
grid.filterAfterOperator = ist später als
grid.filterBeforeOperator = ist früher als
grid.filterBeforeOrEqualOperator = ist gleich oder früher als
grid.filterFilterButton = Filtern
grid.filterClearButton = Löschen
grid.filterAndLogic = und
grid.filterOrLogic = oder
grid.filterDateToggle = Kalender umschalten
grid.filterDateToday = Heute
grid.filterNumericDecrement = Wert verringern
grid.filterNumericIncrement = Wert erhöhen
grid.loading = Laden
grid.columns = Spalten
grid.lock = Sperren
grid.unlock = Entsperren
grid.stick = Anheften
grid.unstick = Lösen
grid.setColumnPosition = Spaltenposition festlegen
grid.sortAscending = Aufsteigend sortieren
grid.sortDescending = Absteigend sortieren
grid.columnsApply = Übernehmen
grid.columnsReset = Zurücksetzen
grid.sortable = Sortierbar
grid.sortedAscending = Aufsteigend sortiert
grid.sortedDescending = Absteigend sortiert
grid.sortedDefault = Nicht sortiert
grid.filterInputLabel = '{columnName} Filter'
grid.filterMenuTitle = '{columnName} Filter Menü'
grid.filterMenuOperatorsDropDownLabel = '{columnName} Filter-Operatoren'
grid.filterMenuLogicDropDownLabel = '{columnName} Filter-Logik'
grid.columnMenu = '{columnName} Spalten-Menü'
grid.selectionCheckboxLabel = Zeile auswählen
grid.selectAllCheckboxLabel = Alle Zeilen auswählen
grid.pagerLabel = 'Seitennavigation, Seite {currentPage} von {totalPages}'
grid.gridLabel = Datentabelle
grid.groupCollapse = Gruppe zusammenklappen
grid.groupExpand = Gruppe erweitern
grid.detailCollapse = Details zusammenklappen
grid.detailExpand = Details erweitern
## DATEPICKER COMPONENT ##
datepicker.locale = de
dateInput.increment = Wert erhöhen
dateInput.decrement = Wert verringern
datePicker.today = Heute
datePicker.toggle = Kalender umschalten
datePicker.prevButtonTitle = Auf vorherige Seite navigieren
datePicker.nextButtonTitle = Auf nächsten Seite navigieren
dateTimePicker.dateTab = Datum
dateTimePicker.dateTabLabel = Datum
dateTimePicker.timeTab = Zeit
dateTimePicker.timeTabLabel = Zeit
dateTimePicker.toggle = Umschalten
dateTimePicker.accept = Setzen
dateTimePicker.acceptLabel = Setzen
dateTimePicker.cancel = Abbrechen
dateTimePicker.cancelLabel = Abbrechen
dateTimePicker.now = JETZT
dateTimePicker.nowLabel = Jetzt
dateTimePicker.today = HEUTE
dateTimePicker.prevButtonTitle = Zur vorherigen Ansicht
dateTimePicker.nextButtonTitle = Zur nächsten Ansicht 
##############################################
# End of system defined translation
##############################################