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

App

name, description, typename_…

AppLang

AppGroup

name, description

AppGroupLang

Control

label, description

ControlLang

LookupItem

label

LookupItemLang

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() ➝ Bool

Speichert alle Übersetzungen dieses Translations-Objekts in der Datenbank (siehe die save()-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".