3.17 Internationalisierung

RapaGUI ermöglicht es Ihnen, Ihren Programmen auf einfache Weise Internationalisierungsunterstützung (i18n) hinzuzufügen, da es sich nahtlos in das Katalogsystem von Hollywood integriert. Um mehrere Sprachen in Ihrem Programm zu unterstützen, müssen Sie also lediglich einen Katalog mit allen sprachabhängigen Texten Ihres Programms erstellen und beim Start öffnen, z.B. mit der Präprozessor-Anweisung @CATALOG:

 
@CATALOG "MyApp.catalog"

Sie können dann einzelne Katalogeinträge ansprechen, indem Sie entweder das Attribut MOAI.I18N oder die Direktive @i18n: verwenden. Alle Attribute, die ein Zeichenkette-Argument akzeptieren, akzeptieren auch das Attribut MOAI.I18N, mit dem Sie einen Katalog-Zeichenketten-Index angeben können, der verwendet werden soll, wenn ein Katalog für die Systemsprache des Benutzers verfügbar ist. Der Zeichenkettenindex kann entweder ein absoluter numerischer Wert oder eine Hollywood-Konstante sein. Um beispielsweise eine mehrsprachige Schaltfläche zu erstellen, können Sie folgendes tun:

 
<button i18n="0">Click me</button>

Bei einem solchen XML-Code wird der Text "Click me" nur verwendet, wenn die Systemsprache des Benutzers Englisch ist oder RapaGUI keinen Katalog für die aktuelle Systemsprache finden kann. Andernfalls verwendet RapaGUI die Zeichenfolge bei Index 0 in der Katalogdatei anstelle des Standardtexts "Click me".

Für lokalabhängige Zeichenketten, die in Tag-Attributen übergeben werden, müssen Sie die Direktive @i18n: verwenden. Hängen Sie einfach dieses Suffix an die Zeichenketten an, gefolgt von einem numerischen Wert oder einer Hollywood-Konstante und Hollywood verwendet stattdessen die angegebene Katalogzeichenketten, wenn ein Katalog für die Systemsprache des Benutzers verfügbar ist. Zum Beispiel:

 
<window title="My application@i18n:1">...</window>

In diesem Beispiel verwendet RapaGUI den Fenstertitel "My application" nur, wenn die Systemsprache des Benutzers Englisch ist oder wenn RapaGUI keinen Katalog für die aktuelle Systemsprache finden kann. Andernfalls verwendet RapaGUI die Zeichenkette an Index 1 in der Katalogdatei anstelle des Titels "My application".

Wie bereits erwähnt, können Sie auch Hollywood-Konstanten anstelle von fest kodierten numerischen Werten verwenden. Die Verwendung von Hollywood-Konstanten ist möglicherweise bequemer, um Ihr XML zu verwalten, da Sie damit problemlos Einträge hinzufügen und entfernen können. Mit Hollywood-Konstanten sieht das XML von oben so aus:

 
<button i18n="#CAT_BUTTON">Click me</button>
<window title="My application@i18n:#CAT_TITLE">...</window>

Beachten Sie, dass alle diese Internationalisierungsfunktionen nur für die XML-Datei gelten. Alle Änderungen, die zur Laufzeit vorgenommen werden, müssen manuell bearbeitet werden, daher müssen Sie Hollywoods Befehl GetCatalogString() verwenden, um die richtige Katalogzeichenkette zu erhalten, wenn Sie zur Laufzeit lokalabhängige Änderungen an der GUI vornehmen, z.B. durch Aufrufen von Befehlen wie moai.Set().


Navigation zeigen