2.7 text
Zur Unterstützung mehrsprachiger Dialoge hält der IDM die Ressource text bereit. Hierbei wird der Dialog zunächst in einer Sprache entwickelt.
Bei der Übersetzung in eine neue Sprache wird dann die Ressource text eingeführt. Dabei wird ein in der Originalsprache vorhandener String zusammen mit seinen Übersetzungen definiert.
Definition
{ export | reexport } text { <Bezeichner> } "<Original-String>" <variantDef> | ;
variantDef ::= { 1 : "<übersetzter String>" | nlscat(<Message-Nummer>) ; [ <Nummer> : "<übersetzter String>" ; ] }
Der Identifikator ist gewöhnlich optional, d.h. er muss nicht unbedingt angegeben werden. Mit Hilfe des Identifikators kann später auf den Text referenziert werden.
Als erste Übersetzung kann entweder ein <übersetzter String> oder ein Eintrag aus einem Message- oder Text-Katalog nlscat(<Message-Nummer>) angegeben werden, weitere Übersetzungen werden als <übersetzter String> definiert.
Der Zugriff vom Dialog Manager auf den Text ist wie folgt:
Die mittels der Funktion DM_InstallNlsHandler installierte Funktion wird aufgerufen. Danach wird der Text intern gespeichert. Der Zugriff erfolgt nur für aktuell verwendete Texte!
Damit im Dialog möglichst viele unterschiedlichen Zeichen dargestellt werden können, muss die Definition der Texte im ISO 8859/1 Standard erfolgen, der für fast alle europäischen Sprachen geeignet ist. Der Dialog Manager wandelt diese Darstellung dann in die des jeweiligen Fenstersystems um, sodass die Zeichen korrekt dargestellt werden.
Die Eingabe der Zeichen erfolgt dabei nach folgendem Schema:
Alle 7-Bit-Zeichen werden direkt mit dem jeweiligen Editor eingegeben, d.h., alle ASCII-Zeichen können direkt eingegeben werden. Diese Art der Zeicheneingabe garantiert, dass alle Editoren diese Zeichen korrekt darstellen können, da viele Editoren nur 7-Bit-Zeichen darstellen können.
Alle 8-Bit-Zeichen müssen in oktaler Schreibweise eingegeben werden, d.h. Zeichen mit einem Code größer als 127 müssen als Oktalzahl mit einem führenden Backslash "\" eingegeben werden.
Um ein bestimmtes Zeichen (z.B. "A") zu beschreiben, müssen Sie zuerst den entsprechenden Wert auf der Y-Koordinate feststellen:
-> 10x
Das x muss nun durch den entsprechenden Wert auf der X-Koordinate ersetzt werden:
-> xx1 (
Daraus ergibt sich:
=> \101
ö |
36x |
xx6 |
=> |
\366 |
# |
04x |
xx3 |
=> |
\043 |
Beispiel
text "Hello world"
{
1: "Hallo Welt";
2: "Allo le monde";
3: "Buon giorno il mondo";
4: "Holá mundo";
}
Die Anwahl einer der Sprachen 1–4 mit der Option ‑IDMlanguage wird der String "Hello world" in dem gesamten Dialog durch die entsprechende Übersetzung ersetzt. Die Verwendung dieses so definierten Textes kann dabei entweder durch die Angabe des Originaltextes oder durch die Angabe des Identifikators erfolgen.
Beispiel
text WindowText "Window"
{
1: "Fenster";
}
Window.title := WindowText;
ist gleichbedeutend mit
text "Window"
{
1: :"Fenster";
}
Window.title := "Window";
Anmerkung
Mit dem Attribut .text kann man den String der aktuellen Sprachvariante erhalten.
2.7.1
Hinweis zur Verwendung von Symbol-Schriftarten unter Microsoft Windows
Bei der Verwendung von Schriftarten, die Symbole enthalten (z.B. Wingdings
) ist folgendes zu beachten:
- Der Name muss dem tatsächlichen Namen der Schriftart entsprechen (kein Alias). Führt Windows eine Schriftart-Ersetzung durch, erkennt dies der IDM und erzwingt eine Ersetzung zu einer Schriftart, die den WIN ANSI Character Set unterstützt. Dies ist nötig, damit nicht ungewollt eine unlesbare Schriftart gewählt wird.
-
Einer Schriftart, die Symbole enthält, ist der Windows SYMBOL Character Set zugeordnet. Dieser wird auf den Unicode-Bereich \uF000–\uF0FF abgebildet (benutzerdefinierter Bereich in Unicode). Um beispielsweise das Zeichen 0xFE darzustellen muss also \uF0FE angegeben werden.
Anmerkung
Auf einem westeuropäischen Windows-System ist dies im Allgemeinen nicht nötig, da die System-Codepage CP1252 fast identisch zum unteren Unicode-Bereich ist und fast alle Zeichen enthält. Deshalb kommt es zu keiner Konvertierung und es wird – quasi zufällig – das gewünschte Zeichen dargestellt. Auf anderssprachigen Windows-Systemen ist das aber nicht der Fall.