Translations
Einige Attribute von App-, AppGroup-, Control- und LookupItem-Objekten sind mehrsprachig, d.h. für sie können Übersetzungen in andere Sprachen hinterlegt werden:
Objekt-Typ |
Mehrsprachige Attribute |
Übersetzungsobjekt |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Unterstützte Sprachen sind Deutsch (de), Englisch (en), Französisch
(fr), Italienisch (it), Spanisch (es) und Tschechisch (cs).
Mehrsprachige Attribute liefern automatisch die passende Übersetzung: Gibt es
eine Übersetzung für die aktuelle Sprache (globals.lang), und ist das
entsprechende Attribut des Übersetzungsobjekts nicht None, so wird die
Übersetzung geliefert, ansonsten der Wert des Objekts selbst. Dieser liegt in
der Systemsprache (globals.sys_lang) vor. Bei
Control.label und LookupItem.label hat eine in der aktiven
Formularvariante konfigurierte Beschriftung weiterhin Vorrang vor der
Übersetzung.
Eine Zuweisung an ein mehrsprachiges Attribut (z.B. an control.label)
ändert dagegen immer den Wert des Objekts selbst und nie eine Übersetzung.
Übersetzungen werden über die Übersetzungsobjekte selbst geändert.
Die Übersetzungsobjekt-Typen sind in eigenen Kapiteln beschrieben: AppLang, AppGroupLang, ControlLang und LookupItemLang.
Attribute
Die Übersetzungen sind über das Attribut translations des jeweiligen
Objekts zugänglich (z.B. control.translations). Dieses
Translations-Objekt besitzt für jede Sprache, für die Übersetzungen
existieren, ein Attribut, dessen Name der Sprachcode ist und dessen Wert das
Übersetzungsobjekt für diese Sprache ist (z.B. control.translations.en).
Der Zugriff auf eine unterstützte Sprache, für die noch keine Übersetzungen existieren, legt ein neues leeres Übersetzungsobjekt für diese Sprache an. Auf diese Weise können neue Übersetzungen angelegt werden.
save()Methode() ➝ BoolSpeichert alle Übersetzungen dieses
Translations-Objekts in der Datenbank (siehe diesave()-Methode der Übersetzungsobjekte).
Beispiel
Das folgende Beispiel legt für ein Feld englische Übersetzungen an (bzw. ändert sie, falls sie schon existieren) und speichert sie:
<?code control = app.controls.firstname?>
<?code control.translations.en.label = "First name"?>
<?code control.translations.en.description = "The person's first name"?>
<?code control.translations.en.save()?>
Ist danach globals.lang "en", so liefert control.label den Wert
"First name".