Lokalisierung

Für die Lokalisierung von Meldungen steht eine eigene Bibliothek zur Verfügung. Damit lassen sich Meldungen in der jeweils eingestellten Benutzersprache ausgeben.

Quelle: shareScriptDir/cm/serverCmds/lib/localizer.tcl

Verwendung

Nach dem Aufruf von

::localizer::new

stehen im aktuellen Namensraum die Kommandos localizer, localize sowie localizeWithLanguage zur Verfügung.

Mit localizer kann man die Zuordnung eines Schlüssels zu einer Meldung definieren. Hierbei können auch Platzhalter (im Beispiel: %version%) verwendet werden.

Beispiel

localizer addBulk de {
  "word" "Wort"
  "This is version %version%." "Das ist Version %version%."
  "Permitted types: %types%" "Erlaubte Vorlagen: %types%"
}

Verwenden Sie zur Lokalisierung einen Aufruf nach dem folgenden Schema:

localize <key> ?substitutes?

Hierbei ist substitutes eine optionale Liste von Name-Wert-Paaren, die die Platzhalter in der Lokalisierungsmeldung ersetzen.

Ein Platzhalter ist ein in Prozentzeichen eingefasstes Wort. Optional können diesem Wort Konvertierungsfunktionen vorangestellt werden. Konvertierungsfunktion müssen in geschweifte Klammern eingefasst werden. Sie sind im Namensraum ::localizer::converter definiert.

Sofern keine Lokalisierung für einen Schlüssel gefunden wird, wird der Schlüssel selbst als Lokalisierung verwendet. Deswegen ist es empfehlenswert, als Schlüssel die Lokalisierung in der Standardsprache zu verwenden.

Beispiele

localize word
# => "Wort"

localize "This is version %version%." [list "%version%" "1.8"]
# => "Das ist Version 1.8."

localize "Permitted types: %types%" [list "%{and}{displayTitles objClass}types%" \
    [list "weather" "news"]]
# => Erlaubte Vorlagen: Wetter und Nachrichten
Konvertierungsfunktionen

Konvertierungsfunktionen wandeln die zur Lokalisierung übergebenen Werte in eine geeignete Text-Repräsentation um. Die Funktionen können optional Parameter entgegennehmen. Im Lokalisierungsaufruf sind diese durch ein Leerzeichen vom Funktionsnamen und voneinander getrennt (im Beispiel oben der Parameter objClass für die Funktion displayTitles).

Folgende Konvertierungsfunktionen sind bereits definiert:

  • and: Wandelt die übergebene Liste mit einem lokalisierten “und” in Text um.
  • or: Wie and mit “oder”.
  • join: Wandelt die Werte in einen durch Kommas separierten Text um.
  • displayTitles class: Wandelt die übergebenen Werte in ihre Beschreibungstexte um. class ist dabei beispielsweise attribute.
  • displayTitle class: Wie displayTitles, nur dass hier lediglich ein Wert umgewandelt wird.

Außer auf den eigentlichen Platzhalter können Sie, abhängig von den Konvertierungsfunktionen, in der Lokalisierung mit #names noch auf die Ausgangswerte zugreifen.

localizer add de "Permitted types: %types%" "Erlaubte Vorlagen: %types%#names"
localize "Permitted types: %types%" [list "%{and}{displayTitles objClass}types%" \
    [list "weather" "news"]]
# => Erlaubte Vorlagen: weather und news