Webgate Anywhere 4.1 - Das Kompendium
Design WebTML Labels

4.1.6 Labels

WebTML-Labels sind ein Mechanismus um WebTML-Design mehrsprachig gestalten zu können.

Der Label-Mechanismus sieht vor, dass für Textbausteine die in mehreren Sprachen verfügbar sein sollen, Labels hinterlegt werden. Dies sind Textschlüssel für welche in unterschiedlichen Sprachen unterschiedliche Textbausteine vorliegen. So kann ein Labelschlüssel "user" sowohl als englischer Textbaustein "User" als auch als deutscher Textbaustein "Benutzer" vorliegen.
Kapitelverzeichnis einblenden

4.1.6.1 Definition von Labels

Labels werden in Java-Properties-Dateien hinterlegt. Dies sind standardisierte Dateien die pro Zeile ein Label für eine spezielle Sprache definieren. Die Zeile beginnt mit dem Labelschlüssel und wird nach einem Gleichheitszeichen mit dem Textbaustein in einer Sprache fortgesetzt:
toc=Kapitelverzeichnis
tocLink=Kapitelverzeichnis einblenden
Eine Besonderheit von Java-Properties-Dateien ist, dass sie IMMER in der Textkodierung "ISO-8859-1" kodiert werden müssen. Zeichen die in diesem Zeichensatz nicht vorkommen werden über die Notation "\ uXXXX" dargestellt (sog. "Unicode Escapes"), wobei XXXX für den hexadezimalen Unicode-Zeichencode des gewünschten Zeichens steht.

Das Befehlszeilen-Kommando "native2ascii" des Java-Development-Kits kann benutzt werden um Properties-Dateien einer beliebigen Kodierung in ISO-8859-1 mit Unicode-Escapes umzuwandeln. Mehr Informationen sind in den Javadocs zum Objekt "java.util.Properties" verfügbar.

Diese Label-Dateien werden in den Datei-Containern des WGA Designs hinterlegt, so genannten Label-Container. Ein Label-Container beinhaltet die Properties-Dateien zu einer Sprache. Sein Name beginnt normalerweise mit "labels", dem nach einem Unterstrich der Sprachcode der Sprache angefügt wird, die der Container enthält. Dementsprechend gibt es zu jeder Sprache, in welchem ein Design verfügbar sein soll, einen Label-Container mit dem gleichen Basisnamen. Des weiteren kann ein Container mehrere Label-Dateien unterschiedlichen Namens enthalten:



Da sowohl die Namen der Label-Dateien als auch jene der Label-Container variieren können hat man, zusammen mit dem eigentlichen Labelschlüssel eine dreistufige Kategorisierung um ein Label zu adressieren:
Will man nun Labels für ein WGA Design erfassen so geht man wie folgt vor:

4.1.6.2 Verwendung von Labels im WebTML-Design

WebTML-labels werden über den Tag <tml:label>  in ein WebTML-Design eingebunden. Hier kann die dreistufige Adressierung von Labels über die Attribute container, file und key vorgenommen werden:
<tml:label container="labels" file="general" key="toc"/>

Werden für "container" und "file" die Defaults benutzt so können die entsprechenden Attribute auch weggelassen werden.
<tml:label key="toc"/>

Andere Funktionalitäten um auf Labels zuzugreifen sind:

4.1.6.3 Die Sprachauswahl der Labels

Wird ein Label über <tml:label> angezeigt, so sucht WGA die unter den Sprachen in welchen das Label definiert ist eine geeignete aus. Dies geschieht über den folgenden Prozeß:

4.1.6.4 Parametrisierte Labels

Label können dynamische Parameter enthalten. Parameter sind spezielle Textstrecken innerhalb eines Labels, deren Inhalt nicht vordefiniert ist, sondern bei jeder individuellen Nutzung durch den <tml:label>-Tag (oder andere Label-Ermittlungsfunktionen) bestimmt und automatisch eingesetzt wird. So wird es möglich dasselbe Label mit unterschiedlichen Detailinformationen zu versehen.

Die Parameter, die ein Label empfangen kann, werden bei der Definition des Labels mitdefiniert, indem als Platzhalter die Notationen {1} bis {5} verwendet wird:
cannotfind=Kann das Dokument mit dem Schlüssel {1} nicht finden!

Bei der Verwendung des Labels gibt der <tml:label>-Tag den anstelle des Parameters zu verwendenden Text als Attribut "param1" bis "param5" an, z.B.:
<tml:label key="cannotfind" param1="home"/>

Was dann zur Ausgabe führt:
Kann das Dokument mit dem Schlüssel home nicht finden!

Die Platzhalter von Label-Parametern, deren Wert bei der Verwendung des Labels nicht angegeben wird, werden bei der Ausgabe entfernt.

Diese Funktionalität ist auch bei der TMLScript-Methode this.label() verfügbar.


<< WebTML-Optionen WebTML-Formulare >>