INTL macht die Erstellung mehrsprachiger Software in Visual FoxPro (VFP) zum Kinderspiel. Es gibt Ihnen die Möglichkeit, mehrsprachige Visual FoxPro-Anwendungen zu erstellen und gleichzeitig den Aufwand bei der Erstellung von Software mit mehreren Versionen zu minimieren.
Dieses Dokument dient der Beschreibung von Folgendem:
strings.dbf
stapelweiseMsgSvc()
INTL
cINTLAbstract
cINTLCurrency
cINTLData
cINTLFont
cINTLMemento
cINTLPicture
cINTLRightToLeft
cINTLStrategy
cINTLString
config.fpw
MenüanweisungenMsgSvc()
-DialogfeldsMsgSvc()
-Beispielestrings.dbf
basierend auf einer .PJXstrings.dbf
basierend auf einer .SCXstrings.dbf
basierend auf einer .VCXstrings.dbf
basierend auf einer .MNXstrings.dbf
basierend auf einer .FRXINTLVisitor
Legen Sie zunächst die INTL-Dateien in ein sauberes neues Verzeichnis ab.
Dann,
Stellen Sie Dateien bereit: Platzieren Sie Dateien manuell relativ zu Ihrem Projekt, wie unter „So platzieren Sie Ihre INTL-Dateien richtig“ beschrieben.
Ändern Sie die Datei config.fpw
: Für Menüs fügen Sie die beiden Zeilen zur Datei config.fpw
hinzu, wie unter So lokalisieren Sie Menüs erläutert.
Bereiten Sie Ihre Formularklassendefinition vor: Rufen Sie vorerst, wahrscheinlich für immer, INTL in Formularen mit einer Form::Init()
-Anweisung auf, die das INTL-Objekt aufruft. Siehe So erhalten Sie eine automatische Formularlokalisierung.
Wenn Sie eine Lokalisierung benötigen, instanziieren Sie ein INTL-Objekt: Wenn nun eine Lokalisierung erforderlich ist, erstellen und konfigurieren Sie ein INTL-Objekt, wie unter So instanziieren Sie ein INTL-Objekt beschrieben.
Für VFP ist es wichtig, die INTL-Dateien bei Bedarf zu finden. Hier können Sie Ihre INTL-Dateien ablegen, damit sie Ihrer Entwicklungsumgebung zur Verfügung stehen:
Stellen Sie Ihre Dateien wie folgt bereit:
genmenux.prg
intl.prg
SET PATH
.strings.dbf strings.fpt strings.cdx
SET PATH
.msgsvc.dbf msgsvc.fpt msgsvc.cdx
SET PATH
. Erstellen Sie ein Mitglied mit dem Namen _SCREEN.oINTL
um die INTL-Instanz zu speichern.
Um INTL verwenden zu können, muss Ihre Anwendung ein INTL-Objekt instanziieren. Es gibt viele Möglichkeiten, dies zu tun. Die beste besteht darin, es wie folgt zu _SCREEN
hinzuzufügen:
*-- Anywhere, anytime:
*-- Instantiate INTL in _SCREEN
SET PROCEDURE TO INTL ADDITIVE
SCREEN.AddObject( "oINTL", "INTL" )
Lokalisieren Sie Formulare, indem Sie ihre Objektverweise an die Localize()
Methode eines INTL-Objekts übergeben.
Formulare (und alle anderen Container) werden lokalisiert, indem ihre Referenz an die Methode oINTL.Localize()
übergeben wird.
*-- Configure oINTL to another language
_SCREEN.oINTL.SetLanguage( "French" )
*-- Instantiate a form. If the form calls INTL in its Init()
*-- method, then the form appears in French....
DO FORM MyForm Name MyForm
....oder Sie können das Formular im Handumdrehen lokalisieren.
_SCREEN.oINTL.Localize( MyForm )
Platzieren Sie einen Aufruf von oINTL
in Ihrer Form.Init()
-Hierarchie.
Damit sich Ihre Formulare automatisch lokalisieren, rufen Sie die Methode oINTL.Localize()
in Ihrer Formularklassenhierarchie auf. Platzieren Sie dazu den folgenden Code in der Init()
Methode Ihrer Formularklassendefinition. |
*-- Don't forget to call the ParentClass!
DODEFAULT()
IF TYPE("_SCREEN.oINTL" ) == "O"
_SCREEN.oINTL.Localize( This )
ENDIF
Zur Lokalisierung von Menüs wird ein GENMENUX-Treiber verwendet. Um GENMENUX und seinen INTL.PRG-Treiber zu aktivieren, fügen Sie die folgenden Zeilen in Ihre config.fpw
ein:
Fügen Sie diese Zeilen zu config.fpw
hinzu.
*-- Configuring for INTL menus.
_GENMENU = GENMENUX.PRG
_MNXDRV2 = INTL.PRG
*-- End of configuration for INTL menus.
Einige dieser Änderungen erfordern einen VFP-Neustart. Um einen Neustart von FoxPro zu diesem Zeitpunkt zu vermeiden, geben Sie den folgenden Befehl im Befehlsfenster ein:
_GENMENU = HOME()+”GENMENUX.PRG”
Das ist alles, was Sie in Ihrer Entwicklungsumgebung ändern müssen, um Menüs zu lokalisieren. Erstellen Sie von nun an wie gewohnt Menüs.
GENMENUX ist sehr cool. Hör zu.
Hinweis : GENMENUX ersetzt nicht den nativen Menügenerator von VFP. Da GENMENUX GENMENU.PRG aufruft, wird Ihr Code wie gewohnt von VFP generiert. Das INTL Toolkit verwendet GENMENUX als Vorprozessor. GENMENUX ist ein umfangreiches Programm. Weitere Informationen zu seinen Funktionen finden Sie unter GENMENUX.
Die Struktur von strings.dbf
bestimmt, welche Sprachen Sie unterstützen.
Verwenden Sie die SetLanguage()
Methode, um die Sprache von INTL zu ändern.
INTL wird mit einer Tabelle mit dem Namen strings.dbf
geliefert, die eine Reihe von Feldern enthält, von denen eines cOriginal
ist, und es kann weitere Felder für verschiedene Sprachen enthalten, zum Beispiel cFrench
, cGerman
, cSpanish
und so weiter.
Welche Sprachen Sie unterstützen, wird durch die Struktur der Tabelle strings.dbf
bestimmt. Um eine neue Sprache hinzuzufügen, ändern Sie die Struktur von strings.dbf
.
Um die aktuelle Lokalisierungssprache zu ändern, verwenden Sie die SetLanguage()
Methode. Angenommen, wir möchten, dass ein Formular auf Französisch ist. Stellen Sie zunächst die Sprache ein und lokalisieren Sie dann das Formular:
_SCREEN.oINTL.SetLanguage( "French" )
_SCREEN.oINTL.Localize( _SCREEN.ActiveForm )
Es gibt nichts Besseres, als die Anzeigesprache im Handumdrehen zu ändern.
Um Sprachen im Handumdrehen auszutauschen, was in einer Demo immer ein Erfolg ist (tun Sie es auch, wenn es nicht erforderlich ist – es ist so einfach), erstellen Sie in Ihrer Anwendung einen Mechanismus, um das INTL-Objekt mit INTL.SetLanguage()
zu konfigurieren folgt.
_SCREEN.oINTL.SetLanguage("German" ) && Configure INTL for German
FOR i = 1 TO ALEN(_SCREEN.Forms ) && Localize active forms
_SCREEN.oINTL.Localize( _SCREEN.Forms[i] )
ENDFOR
DO MAIN.MPR && Refresh the menu too!
Um die gebietsschemabasierte Persönlichkeit Ihrer Anwendung zu ändern, schlage ich vor, dass Sie INTL
in eine Unterklasse umwandeln, damit es nach Bedarf funktioniert. Die Unterklassifizierung von INTL
für Ihre eigenen Anforderungen ist eine großartige Möglichkeit, die Anforderungen des Gebietsschemas mit einem Minimum an Code und Aufwand zu erfüllen.
Hier ist ein Beispiel einer INTL-Unterklasse, die für mich an verschiedenen Orten funktioniert. Wir unterteilen die INTL
-Klasse, um alle gebietsschemaspezifischen Einstellungen auf einmal zu ändern.
Beachten Sie die RightToLeft-Strategie (Klasse cINTLRightToLeft
), die für Schriftsysteme im Nahen Osten nützlich ist.
DEFINE CLASS MyINTL AS INTL
FUNCTION SetLocale( tcLocale )
IF EMPTY( tcLocale )
tcLocale = this.GetLocale()
ENDIF
IF INTL::SetLocale( @tcLocale )
DO CASE
CASE PROPER(tcLocale )= "Usa"
SET CURRENCY TO "$"
SET CURRENCY LEFT
SET POINT TO "."
SET SEPARATOR TO ","
SET DATE TO American
SET MARK TO "/"
this.SetRightToLeft( .F. )
this.SetConversion( "Usa", 1.33 )
this.SetLanguage( "USEnglish" )
CASE PROPER(tcLocale )= "France"
SET CURRENCY TO " F"
SET CURRENCY RIGHT
SET POINT TO ","
SET SEPARATOR TO "."
SET DATE TO DMY
SET MARK TO "/"
this.SetRightToLeft( .F. )
this.SetConversion( "France", 0.28 )
this.SetLanguage( "French" )
CASE PROPER(tcLocale )= "Germany"
SET CURRENCY TO " DM"
SET CURRENCY RIGHT
SET POINT TO ","
SET SEPARATOR TO "."
SET DATE TO DMY
SET MARK TO "/"
this.SetRightToLeft( .F. )
this.SetConversion( "Germany", 0.28 )
this.SetLanguage( "German" )
CASE PROPER(tcLocale )= "Israel"
SET CURRENCY TO "ILS"
SET CURRENCY LEFT
SET POINT TO "."
SET SEPARATOR TO ","
SET DATE TO British
SET MARK TO "/"
this.SetConversion( "Israel", 0.41 )
this.SetRightToLeft( .T. )
this.SetLanguage( "Hebrew" )
ENDCASE
ENDIF
ENDDEFINE
INTL ist so konzipiert, dass es schnell implementiert werden kann.
Folgendes müssen Sie tun, um Ihre Anwendung heute Morgen für eine mehrsprachige Demo heute Nachmittag zu lokalisieren. Wenn Sie die Designtools von VFP ordnungsgemäß verwendet haben, ist dies eine schnelle Aufgabe. Wenn nicht, wird die Entwicklung etwas länger dauern.
Die grundlegenden Schritte sind:
Installieren Sie INTL und setzen Sie die Init()
Methode Ihrer Formularbasisklassen ein. Befolgen Sie die Schritte im Abschnitt „Installieren von INTL“. Stellen Sie sicher, dass Sie alle Schritte durchgehen. Besonders wichtig sind die Schritte mit den Titeln „So instanziieren Sie ein INTL-Objekt“, „So erhalten Sie eine automatische Formularlokalisierung“ und „So lokalisieren Sie Menüs“.
Ändern Sie die Struktur von strings.dbf
und fügen Sie für jede benötigte Sprache ein Feld hinzu.
strings.dbf
und legen Sie sie in Ihrem Projektstammverzeichnis ab.ZAP
die strings.dbf
Tabelle, die Sie in Ihrem Projektstammverzeichnis abgelegt haben.MODIFY STRUCTURE
von strings.dbf
und fügen Sie eine neue Spalte mit dem Namen cSwahili
und einer Länge von 120 hinzu. Beachten Sie, dass das „c“ in cSwahili
erforderlich ist. Lassen Sie Ihre Anwendung ein INTL-Objekt erstellen. Instanziieren Sie zu Beginn Ihrer Anwendung ein INTL-Objekt, wie unter So instanziieren Sie ein INTL-Objekt beschrieben. Für die Anzeige in einer anderen Sprache ist nun die Verwendung der SetLanguage()
Methode erforderlich.
Führen Sie ein „Alles erstellen“ durch. Öffnen Sie Ihr Projekt, wählen Sie „Erstellen“ und erstellen Sie eine App oder Exe. Wählen Sie dabei unbedingt „Alle Dateien neu kompilieren“ aus. Geh zum Mittagessen.
Um strings.dbf
automatisch zu laden, führen Sie entweder Ihre App aus oder verwenden Sie das Dienstprogramm INTLTool. Es gibt zwei Möglichkeiten, die Tabelle strings.dbf
mit den Schnittstellenzeichenfolgen Ihres Projekts zu füllen. Die erste Möglichkeit besteht darin, Ihr Programm auszuführen. Wenn Objekte instanziiert werden, hängt INTL die Zeichenfolgen (wie Caption
, Tooltiptext
usw.) an die Zeichenfolgentabelle an. Eine bessere Möglichkeit besteht darin, das INTLTool-Updateprogramm auszuführen. Siehe INTLTool.
Geben Sie die Übersetzungen in die Tabelle strings.dbf
ein. Geben Sie in der Spalte cSwahili
die Swahili-Übersetzungen ein, ggf. mit Hotkeys und Tastenkombinationen. Hinweis: Sie können eine „schnelle“ Übersetzung für Tests und interne Demos erhalten, indem Sie Folgendes tun:
`REPLACE ALL cSwahili with "**"+TRIM(cOriginal)+"**" FOR cOriginal <> "(("`
Ich empfehle, ein Haupt-INTL-Objekt mit dem Namen _SCREEN.oINTL
zu erstellen.
Es ist möglich, dass mehrere separate INTL-Objekte nebeneinander existieren. Jedes INTL-Objekt ist eine Mischung aus anderen INTL-Objekten, die als Hooks oder Strategien bezeichnet werden. Ihr Haupt-INTL-Objekt ist das Master-INTL-Objekt in Ihrer Umgebung, das vermutlich _SCREEN.oINTL
heißt.
Verwenden Sie die SetConfig( n )
-Methode, um Ihr Haupt-INTL-Objekt zu konfigurieren.
Sie konfigurieren INTL mit einer _SCREEN.oINTL.SetConfig( n )
-Methode, wobei n
ein bitweiser ganzzahliger Wert mit der folgenden Interpretation ist:
Wert | Konfigurationsbedeutung |
---|---|
1 (Standard)2 4 8 16 32 | Laden Sie die String-Strategie Laden Sie die Schriftartenstrategie Laden Sie die Datenstrategie Laden Sie die Bildstrategie Laden Sie die Währungsstrategie Laden Sie die RightToLeft-Strategie |
Beispiel: Erstellen Sie ein INTL-Objekt, das Zeichenfolgen und Schriftarten lokalisiert
*-- create an INTL object
_SCREEN.AddObject("oINTL", "INTL" )
*-- Load the strings and font strategies.
_SCREEN.oINTL.SetConfig( 1 + 2 )
Die operative Sprache und das Gebietsschema des Haupt-INTL-Objekts werden mit den Methoden SetLanguage()
und SetLocale()
konfiguriert.
Strategien werden bitweise konfiguriert.
Konfigurieren Sie einzelne Strategien wie folgt: Rufen Sie einen Verweis auf die Strategie ab und konfigurieren Sie sie dann. Hier sind die Konfigurationsbedeutungen für jede konfigurierbare Strategie.
Strategie | Wert | Lokalisierung |
---|---|---|
Daten | 1 (Standard)2 4 8 16 | BoundColumn ControlSource RowSource RecordSource InputMask |
Schriftart | 1 (Standard)2 (Standard) | Font und FontSize DynamicFont und DynamicFontSize |
Bild | 1 (Standard)2 4 (Standard)8 | Picture DownPicture Icon DragIcon |
Von rechts nach links | 1 (Standard) | Alle Objekte sind in ihren jeweiligen Containern umgekehrt |
Saiten | 1 (Standard)2 (Standard)4 (Standard) | Caption ToolTipText StatusBarText |
Um eine geladene Strategie in den Griff zu bekommen, verwenden Sie die Methode oINTL.GetStrategy()
. Verwenden Sie anschließend die oINTL.SetConfig()
-Methode des Handles, um die Strategie zu konfigurieren.
Beispiel: Erstellen Sie ein INTL-Objekt, das Zeichenfolgen, aber keine Tooltips lokalisiert
Verwenden Sie die Methode oINTL.GetStrategy()
, um eine Objektreferenz abzurufen, und konfigurieren Sie sie dann mit der Methode oINTL.SetConfig()
.
*-- create an INTL object
_SCREEN.AddObject("oINTL", "INTL" )
*-- Load the strings and font strategies.
_SCREEN.oINTL.SetConfig( 3 )
*-- Configure Strings to NOT localize ToolTips
LOCAL loTempHandle
loTempHandle = _SCREEN.oINTL.GetStrategy( "String" )
*-- For the string strategy, the configuration
*-- for Caption and StatusBarText is 5
loTempHandle.SetConfig( 1 + 4 )
Beispiel: Erstellen Sie ein INTL-Objekt, das nur Zeichenfolgen und Eingabemasken lokalisiert.
*-- create an INTL object
_SCREEN.AddObject( "oINTL", "INTL" )
*-- Load the strings and data strategies.
_SCREEN.oINTL.SetConfig( 5 )
*-- now modify the data strategy from its default.
LOCAL oTemp
oTemp = _SCREEN.oINTL.GetStrategy( "Data" )
*-- Input masks only.
oTemp.SetConfig( 16 )
Schnittstellenzeichenfolgen sind normalerweise die ersten Dinge, die uns in den Sinn kommen, wenn wir an die Übersetzung von Software denken.
INTL lädt standardmäßig nur die String-Strategie.
In der folgenden Tabelle sind die Konfigurationsbits für INTL aufgeführt. Diese Konfigurationsbits entscheiden, welche Strategie geladen wird. Standardmäßig wird nur die String-Strategie geladen, was bedeutet, dass Strings standardmäßig automatisch von INTL lokalisiert werden.
Klasse | Konfigurationsbits | Lokalisierung |
---|---|---|
INTL | 1 (Standard)4 2 8 16 32 | cINTLString Strategie geladencINTLFont -Strategie geladencINTLData -Strategie geladencINTLPicture Strategie geladencINTLCurrency Strategie geladencINTLRightToLeft Strategie geladen |
CINTLString | 1 (Standard)2 (Standard)3 (Standard) | Caption ToolTipText StatusBarText |
Aktivieren Sie die String-Strategie wie folgt:
*-- cINTLString is loaded by default.
*-- So there’s usually no need to do this
_SCREEN.oINTL.SetStrategy( "String", "cINTLString" )
Eine andere kryptischere Möglichkeit, die String-Strategie zu laden, ist:
-- Set configuration bit 2^0 "ON"
_SCREEN.oINTL.SetConfig( BITSET( oINTL.GetConfig(), 0 ))
Es gibt also zwei Möglichkeiten, dies zu tun.
Zeichenfolgen können lokalisiert werden, indem Übersetzungen in strings.dbf
bereitgestellt werden.
cOriginal | cFranzösisch |
---|---|
Yes | Oui |
No | Non |
Konfigurieren Sie die String-Strategie mit ihrer SetConfig()
Methode.
Die INTL-String-Strategie ist wie alle Strategien bitweise konfiguriert. Sie können das String-Strategieobjekt wie folgt steuern:
Beispiel: So deaktivieren Sie die Schriftartenverarbeitung für die ToolTipText
-Eigenschaft:
*-- Get a handle on the string strategy:
oFont = _SCREEN.oINTL.GetStrategy( "String" )
*-- We want Caption( 1 ) and StatusbarText( 4 ) only
oFont.SetConfig( 5 )
Schriftarten können gebietsschemaspezifisch sein.
Schriftarten wie Arial, Times New Roman und MS Sans Serif sind in einigen Sprachen möglicherweise nicht geeignet. Das ist wichtig; Möglicherweise benötigen wir eine Möglichkeit, Schriftarten zu ändern, wenn wir das Gebietsschema ändern.
In der folgenden Tabelle sind die Konfigurationsbits für das INTL-Objekt zum Laden der Font-Strategie und die Konfigurations-Ganzzahlen zum Konfigurieren der Font-Strategie aufgeführt.
Klasse | Konfigurationsbits | Lokalisierung |
---|---|---|
INTL | 1 (Standard)2 4 8 16 32 | cINTLString Strategie geladencINTLFont -Strategie geladencINTLData -Strategie geladencINTLPicture Strategie geladencINTLCurrency Strategie geladencINTLRightToLeft Strategie geladen |
CINTLFont | 1 (Standard)2 (Standard) | Font und FontSize DynamicFont und DynamicFontSize |
Aktivieren Sie die Schriftartenstrategie wie folgt:
*-- cINTLFont is the Font strategy class.
_SCREEN.oINTL.SetStrategy( "Font", "cINTLFont" )
Eine andere kryptischere Möglichkeit, die Font-Strategie zu laden, ist:
*-- Set configuration bit 2^1 "ON"
_SCREEN.oINTL.SetConfig(BITSET(oINTL.GetConfig(),1 ))
Es gibt also zwei Möglichkeiten, dies zu tun.
Schriftarten können lokalisiert werden, indem Übersetzungen in strings.dbf
bereitgestellt werden. Schriftartspezifikationen werden mit der Kennung „ ((Font ))
“ vorangestellt, zum Beispiel:
cOriginal | cRussisch |
---|---|
((Font))Courier New,10 | ((Font))Courier New Cyr,10 |
((Font))Arial,16 | ((Font))Arial Cyr,16 |
Konfigurieren Sie die Schriftartenstrategie mit ihrer SetConfig()
Methode.
Die INTL-Font-Strategie ist wie alle Strategien bitweise konfiguriert. Sie können das Schriftartenstrategieobjekt wie folgt steuern:
Beispiel: So deaktivieren Sie die Schriftartenverarbeitung für DynamicFont
und DynamicFontSize
, wodurch die Leistung der Schriftartenstrategie geringfügig verbessert wird:
*-- Set Font localization on
oINTL.SetConfig( BITSET( oINTL.GetConfig(), 1 )) && Set 2^1 "ON"
*-- Get a handle on the font strategy:
oFont = _SCREEN.oINTL.GetStrategy("Font" )
*-- We want Font and FontSize and to disable DynamicFont
*-- and DynamicFontSize
oFont.SetConfig( 1 )
Daten können länderspezifisch sein.
Manchmal sind es die Daten selbst, die lokalisiert werden müssen. Mit INTL können Sie verschiedene Felder für verschiedene Gebietsschemas darstellen.
Die Datenstrategie funktioniert wie die anderen Strategien.
In der folgenden Tabelle sind die Konfigurationsbits für das INTL-Objekt zum Laden der Bildstrategie und die Konfigurations-Ganzzahlen zum Konfigurieren der Bildstrategie aufgeführt.
Klasse | Konfigurationsbits | Lokalisierung |
---|---|---|
INTL | 1 (Standard)2 4 8 16 32 | cINTLString Strategie geladencINTLFont -Strategie geladencINTLData -Strategie geladencINTLPicture Strategie geladencINTLCurrency Strategie geladencINTLRightToLeft Strategie geladen |
CINTLData | 1 (Standard)2 4 8 16 | BoundColumn ControlSource RowSource RecordSource InpuMask |
Aktivieren Sie die Datenstrategie wie folgt:
*-- cINTLData is the Graphics strategy class.
_SCREEN.oINTL.SetStrategy( "Data", "cINTLData" )
Eine andere kryptischere Möglichkeit, die Datenstrategie zu laden, ist:
*-- Set configuration bit 2^2 "ON"
_SCREEN.oINTL.SetConfig(BITSET(oINTL.GetConfig(),2 ))
Es gibt also zwei Möglichkeiten, dies zu tun.
Datenelemente können durch die Bereitstellung von Übersetzungen in strings.dbf
lokalisiert werden. Datenspezifikationen wird die Kennung „ ((Data))
“ vorangestellt, wie zum Beispiel:
cOriginal | cRussisch |
---|---|
((Data))cEngDesc | ((Data))cRussianDesc |
Konfigurieren Sie die Datenstrategie mit ihrer SetConfig()
Methode.
Die INTL-Datenstrategie ist wie alle Strategien bitweise konfiguriert. Sie können das Bildstrategieobjekt wie folgt steuern:
Beispiel: ControlSource-Eigenschaften lokalisieren.
*-- Set Data localization on
*-- Set 2^2 "ON"
oINTL.SetConfig( BITSET( oINTL.GetConfig(), 2 ))
*-- Get a handle on the data strategy:
oData = _SCREEN.oINTL.GetStrategy("Data" )
*-- We want ControlSource (2)
*-- property localized.
oPicture.SetConfig( 2 )
Bilder können gebietsschemaspezifisch sein. Einige der Symbole und Bilder, die wir täglich verwenden, sind an anderen Orten möglicherweise nicht angemessen. INTL bietet eine Möglichkeit, die angezeigten Bilder zu ändern, wenn wir das Gebietsschema ändern.
Die Bildstrategie funktioniert wie die anderen Strategien. In der folgenden Tabelle sind die Konfigurationsbits für das INTL-Objekt zum Laden der Bildstrategie und die Konfigurations-Ganzzahlen zum Konfigurieren der Bildstrategie aufgeführt.
Klasse | Konfigurationsbits | Lokalisierung |
---|---|---|
INTL | 1 (Standard)2 4 8 16 32 | cINTLString Strategie geladencINTLFont -Strategie geladencINTLData -Strategie geladencINTLPicture Strategie geladencINTLCurrency Strategie geladencINTLRightToLeft Strategie geladen |
cINTLPicture | 1 (Standard)2 4 (Standard)8 | Picture DownPicture Icon DragIcon |
Aktivieren Sie die Bildstrategie wie folgt:
*-- cINTLPicture is the Graphics strategy class.
_SCREEN.oINTL.SetStrategy( "Picture", "cINTLPicture" )
Eine andere kryptischere Möglichkeit, die Bildstrategie zu laden, ist:
*-- Set configuration bit 2^3 "ON"
_SCREEN.oINTL.SetConfig(BITSET(oINTL.GetConfig(),3 ))
Es gibt also zwei Möglichkeiten, dies zu tun.
Bilder können durch die Bereitstellung von Übersetzungen in strings.dbf
lokalisiert werden. Bildspezifikationen werden mit der Kennung „ ((Picture))
“ vorangestellt, zum Beispiel:
coriginal | crussian |
---|---|
((Picture))Doctor.BMP | ((Picture))Doktor.BMP |
((Picture))Friend.BMP | ((Picture))Comrade.BMP |
Konfigurieren Sie die Bildstrategie mit ihrer SetConfig()
Methode.
Die INTL-Bildstrategie ist wie alle Strategien bitweise konfiguriert. Sie können das Bildstrategieobjekt wie folgt steuern:
Beispiel: Lokalisieren Sie die Eigenschaften „Bild“, „DownPicture“ und „Symbol“.
*-- Set Picture localization on
*-- Set 2^3 "ON"
oINTL.SetConfig( BITSET( oINTL.GetConfig(), 3 ))
*-- Get a handle on the font strategy:
oPicture = _SCREEN.oINTL.GetStrategy("Picture" )
*-- We want Picture (1), DownPicture( 2 ) and Icon (4)
*-- properties localized. 1+2+4 = 7
oPicture.SetConfig( 7 )
INTL bietet eine einfache, aber anpassungsfähige Funktion für mehrere Währungen.
Mit INTL können Sie Ihre Anwendung mit einer einfachen Mehrwährungsfähigkeit ausstatten. Diese Architektur ist flexibel und durch Unterklassen der cINTLCurrency
-Klasse können Sie wahrscheinlich fast jedes von Ihnen benötigte Mehrwährungsschema implementieren.
Im Kern funktioniert die INTL-Währungsstrategie nur bei Feldern mit der Formateigenschaft „$“.
Denken Sie daran, dass INTL-Strategien gemäß der folgenden Tabelle bitweise konfiguriert sind.
Klasse (mit Standard) | Wert | Lokalisierung |
---|---|---|
INTL (1) | 1 (Standard)2 4 8 16 32 | cINTLString Strategie geladencINTLFont -Strategie geladencINTLData -Strategie geladencINTLPicture Strategie geladencINTLCurrency Strategie geladencINTLRightToLeft Strategie geladen |
Aktivieren Sie die Währungsstrategie wie folgt:
Verwenden Sie oINTL.SetConfig()
oder oINTL.SetStrategy()
um die Währungsstrategie zu laden.
OINTL = _SCREEN.oINTL
oINTL.SetStratrgy( "Currency", "cINTLCurrency" )
Eine alternative (und kryptischere) Möglichkeit besteht darin, SetConfig()
Methode von INTL zu verwenden, um INTL wie folgt dazu zu bringen, die Font-Strategie einer bestimmten Klasse aufzurufen:
OINTL = _SCREEN.oINTL
*-- Set bit 2^4 "ON"
oINTL.SetConfig( BITSET( oINTL.GetConfig(), 4 ))
Es gibt also zwei Möglichkeiten, dies zu tun.
Die Währungsstrategie ist nicht wie die anderen. Die Währungsstrategie des INTL-Toolkits unterscheidet sich ein wenig von anderen Strategien in drei wichtigen Punkten:
Währungen sind gebietsspezifisch und nicht sprachspezifisch.
Die Klasse cINTLCurrency
verwendet keine Dienste der Klasse cINTLString
und
Die Klasse cINTLCurrency
macht viele Eingabefelder schreibgeschützt, wenn sich die Daten in einem konvertierten Zustand befinden.
Der Standardwechselkurs für alle Währungen beträgt 1.00
.
Mit der cINTLCurrency
-Klasse, die im Lieferumfang von INTL enthalten ist, weisen Sie verschiedenen Währungen Währungsumrechnungsfaktoren zu. Standardmäßig beträgt der von der Währungsstrategie verwendete Umrechnungsfaktor 1.00
.
Wenn Sie zeitabhängige Währungsumrechnungen benötigen, können Sie eine Unterklasse cINTLCurrency
erstellen, um alles zu tun, was Sie benötigen, z. B. Suchvorgänge.
Lassen Sie uns INTL für die folgenden Währungen konfigurieren: Kanadischer Dollar, Euro und US-Dollar. Gehen Sie davon aus, dass unsere Daten auf kanadischen Dollar basieren.
oINTL.SetConversion()
legt den Wechselkurs zwischen dem Original und anderen Gebietsschemas fest.
Verwenden Sie SetLocale()
um das Währungsgebietsschema zu ändern. Anschließend wie gewohnt lokalisieren.
oINTL = _SCREEN.oINTL
*-- Load the currency strategy
*-- Set 2^4 "ON"
oINTL.SetConfig( BITSET( oINTL.GetConfig(), 4 ))
*-- Define a few locales and currencies
oINTL.SetConversion( "Canada", 1 )
oINTL.SetConversion( "Euro", 1.55 )
oINTL.SetConversion( "USA", 1.33 )
*-- Lets assume we want to see it in US dollars
oINTL.SetLocale( "USA" )
*-- Localize the current form
oINTL.Localize(_SCREEN.ActiveForm )
INTL sorgt dafür, dass Ihre Formularobjekte automatisch von rechts nach links angezeigt werden.
Mit INTL können Sie Objekte von rechts nach links anzeigen, was für Schriftsysteme im Nahen Osten erforderlich ist. Zu diesem Zweck kehrt INTL die Position von Objekten innerhalb von Containern entlang der vertikalen Mittellinie des Containers um. INTL ändert auch die Ausrichtungseigenschaft von Kontrollkästchen und Optionsgruppen.
INTL ändert die Ausrichtung des Beschriftungstextes nicht. Um die Ausrichtung des Beschriftungstexts zu ändern, müssen Sie eine nahöstliche Lokalisierung von Windows verwenden.
Das Ergebnis ist, dass Formen umgekehrt werden; Wenn man sie jetzt von links nach rechts liest, lesen sie von rechts nach links und umgekehrt.
Denken Sie daran, dass INTL-Strategien gemäß der folgenden Tabelle bitweise konfiguriert sind:
Klasse (mit Standard) | Wert | Lokalisierung |
---|---|---|
INTL (1) | 1 (Standard)2 4 8 16 32 | cINTLString Strategie geladencINTLFont -Strategie geladencINTLData -Strategie geladencINTLPicture Strategie geladencINTLCurrency geladencINTLRightToLeft Strategie geladen |
Aktivieren Sie die Währungsstrategie wie folgt:
Verwenden Sie oINTL.SetConfig()
oder oINTL.SetStrategy()
um die Währungsstrategie zu laden.
OINTL = _SCREEN.oINTL
oINTL.SetStratrgy( "RightToLeft", "cINTLRightToLeft" )
An alternate (and more cryptic ) way is to use INTL's `SetConfig()` method make INTL invoke the Font strategy of a given class, as follows:
OINTL = _SCREEN.oINTL<b
*-- Set bit 2^5 "ON"
oINTL.SetConfig( BITSET( oINTL.GetConfig(), 5 ))
Es gibt also zwei Möglichkeiten, dies zu tun.
Die RightToLeft-Strategie ist die einzige Strategie, die Objekte in Containern tatsächlich neu anordnet.
Die Rechts-nach-Links-Strategie des INTL-Toolkits unterscheidet sich ein wenig von anderen Strategien in vier wichtigen Punkten:
cINTLRightToLeft
verwendet keine Dienste der Klasse cINTLString
.cINTLRightToLeft
kehrt die Position von Objekten innerhalb von Containern entlang der vertikalen Achse des Containers um. Was links war, landet rechts und umgekehrt. Auch die Ausrichtungseigenschaft von Kontrollkästchen und Optionsgruppen wird umgekehrt, ebenso wie die Reihenfolge von Seiten in Seitenrahmen und Spalten in Rastern.cINTLRightToLeft
-Strategie verwenden, um von links nach rechts zu schreiben. Lassen Sie uns INTL für eine Sprache mit Schreibrichtung von rechts nach links konfigurieren. Am saubersten geht das mit einer Unterklasse der Methode INTL::SetLanguage()
. Alternativ können Sie dies auch mit der SetLocale()
Methode tun. In jedem Fall ist die Implementierung dieselbe.
In diesem Beispiel verwenden wir SetLanguage()
zum Konfigurieren der RightToLeft-Transformation.
Hinweis: Aus Gründen der Übersichtlichkeit haben wir die Konfiguration für die Schriftartenstrategie weggelassen, was wir wahrscheinlich tun müssten. Siehe So lokalisieren Sie Schriftarten.
DEFINE CLASS MidEastINTL AS INTL
FUNCTION SetLanguage( tcLanguage )
LOCAL llRetVal
LlRetVal = INTL::SetLanguage( tcLanguage )
*-- The right-to-left strategy is configured
*-- with the fifth INTL configuration bit.
IF tcLanguage = "Hebrew" OR ;
TcLanguage = "Arabic"
this.SetConfig( BITSET( this.GetConfig(), 5 ))
ELSE
this.SetConfig( BITCLEAR( this.GetConfig(), 5 ))
ENDIF
RETURN llRetVal
ENDDEFINE
Benötigen Sie ein anderes Verhalten? Betrachten Sie eine Unterklasse. Möglicherweise stoßen Sie auf Situationen, in denen Sie etwas anders machen müssen. Anstatt den INTL-Quellcode zu ändern (was beim Zusammenführen zukünftiger Versionen zu Schwierigkeiten führen wird), sollten Sie die Unterklassifizierung einer vorhandenen Strategie für das gewünschte Verhalten in Betracht ziehen.
Im Diagramm unten haben wir zwei Unterklassen erstellt, eine aus der cINTLString
-Klasse und eine aus der cINTLCurrency
-Klasse. Die Klassenhierarchie sieht nun so aus:
Neue Klassen zur INTL-Klassenhierarchie hinzugefügt.
Um Ihre Unterklassen anstelle derjenigen zu verwenden, die mit INTL ausgeliefert werden, rufen Sie die setstrategy()-Methode wie folgt auf:
*-- Assuming _SCREEN.oINTL is already Instantiated
_SCREEN.oINTL.SetStrategy("String", "cMyString" )
_SCREEN.oINTL.SetStrategy("Currency", "cMyCurrency" )
Sie können Ihre eigenen Strategien erstellen und diese mithilfe von INTL automatisch aufrufen. Machen Sie Ihre neue Strategie zu einer Unterklasse der cINTLStrategy-Klasse (damit Sie über die von INTL erwarteten Eigenschaften und Methoden verfügen) und führen Sie sie dann aus!
Wie bei der Unterklassifizierung einer vorhandenen Strategie verwenden Sie die SetStrategy()
Methode, um Ihre Strategie in INTL zu laden.
Drei Möglichkeiten:
Sie können INTL veranlassen, ein Objekt oder ein Containerobjekt zu ignorieren, indem Sie die Zeichenfolge „INTL Ignore“ in die Kommentareigenschaft des Objekts einfügen. Bei dieser Zeichenfolge wird die Groß-/Kleinschreibung nicht beachtet.
Wenn Sie können, geben Sie der Klasse Ihres Objekts eine INTL-Eigenschaft und weisen Sie ihr eine logische .F zu.
Wenn möglich, geben Sie der Klasse Ihres Objekts eine INTL-Eigenschaft und weisen Sie ihr einen numerischen Wert kleiner als 0 zu.
Wenn Sie besondere Anforderungen an ein bestimmtes Objekt haben, geben Sie der Klasse Ihres Objekts eine INTL-Eigenschaft und weisen Sie der Eigenschaft in der Klassendefinition oder der Instanz dieses Objekts einen numerischen Wert zu. Dieser numerische Wert ist der Wert, den Sie der SetConfig()
Methode von INTL zuweisen würden, um INTL für dieses bestimmte Objekt zu konfigurieren.
Wenn Sie Ihre eigenen Strategien in nachfolgenden Strategieinstanziierungen ersetzen möchten, verwenden Sie die Methode SetStrategyClass()
um einem vorhandenen Strategiealias eine neue Strategieklasse zuzuweisen.
*-- Permanently install cMyStringStrategy for the string strategy.
_SCREEN.oINTL.SetStrategyClass( "String", "cMyStringStrategy" )
strings.dbf
stapelweise INTL wird mit Iterator- und Besucherklassen ausgeliefert, die darauf ausgelegt sind, VFP-Strukturen wiederzugeben und unter anderem alle String-Schnittstellenelemente in strings.dbf
zu laden.
Siehe Aktualisieren strings.dbf
basierend auf einer .PJX.
VFP-Berichtsstrukturen werden nicht generiert oder kompiliert – sie werden „wie sie sind“ in Ihre Anwendung eingebunden. Berichte müssen daher vor der Erstellung der .APP- oder .EXE-Datei transformiert werden.
Das Lokalisieren von Berichten ist etwas, das Sie wirklich nur einmal tun müssen. Der Transformationsprozess wandelt Ihre Berichtsbeschriftungen in Berichtsausdrücke um, die einen Aufruf der I()
Funktion von INTL enthalten. Beispielsweise wird die Berichtsbezeichnung "Name:"
zum Ausdruck I("Name:")
.
Siehe Transformieren von Berichten basierend auf einer .PJX.
Wenn Sie vorhaben, Sprachen im Handumdrehen auszutauschen , ist es hilfreich, die folgenden Dinge zu wissen:
Nachdem INTL ein Formular lokalisiert hat, fügt es dem Formular ein Objekt mit dem Namen oINTL der Klasse cINTLMemento
hinzu, das als INTL konfiguriert wurde. Bei diesem Erinnerungsstück handelt es sich um ein leichtes Objekt, das die friedliche Koexistenz mehrerer INTL-Objekte ermöglicht, da sie erkennen können, dass ein bestimmtes Formular in diesem Moment beispielsweise auf Japanisch angezeigt wird.
Wenn ein INTL-Objekt ein Formular findet, das ein Mitglied namens oINTL enthält, übernimmt es die Konfiguration des Mitglieds, die durch seinen GETCONFIG()
Wert bestimmt wird.
Wenn Sie ein alternatives Verhalten benötigen – wenn Sie beispielsweise das zweite INTL-Objekt benötigen, um ein Andenken vom ersten vollständig zu überschreiben – dann lokalisieren Sie das Formular zunächst wieder im Original (wodurch das Form.oINTL-Mitglied entfernt wird) und lokalisieren Sie es dann mit dem neuen Gebietsschema zweites INTL-Objekt.
MsgSvc()
Beim ersten Aufruf erstellt MsgSvc()
ein Objekt mit dem Namen _SCREEN.oMsgSvc
, das anschließend die Nachrichtenübermittlung verwaltet. Wenn ein Objekt mit dem Namen _SCREEN.oINTL
vorhanden ist, befolgt das _SCREEN.MsgSvc
-Objekt seine Spracheinstellungen und nutzt seine Dienste.
Für die Laufzeitlokalisierung müssen Sie die folgenden Dateien verteilen:
Datei | Notizen |
---|---|
i.prg | Um eine optimale Leistung zu erzielen, platzieren Sie diese Funktion in Ihrer ersten SET PROCEDURE Datei. |
intl.prg | Um die beste Leistung zu erzielen, SET PROCEDURE TO INTL Additive . |
msgsvc.dbf | |
msgsvc.fpt | |
msgsvc.cdx | Wenn Sie MsgSvc() verwenden, müssen Sie diese Dateien verteilen. |
msgsvc.prg | Die Nachrichtendienstbibliothek. |
nohot.prg | Um eine optimale Leistung zu erzielen, platzieren Sie diese Funktion in Ihrer ersten SET PROCEDURE Datei. |
strings.dbf | |
strings.fpt | |
strings.cdx | Sie müssen diese auch verteilen. |
Wenn Sie die Tabellen und Dateien STRINGS und MSGSVC in Ihre APP oder EXE einschließen, sind sie natürlich schreibgeschützt.
Hier finden Sie eine Beschreibung der von INTL verwendeten Dateien. Informationen dazu, wo diese im Verhältnis zu Ihrem Projekt am besten platziert werden können, finden Sie unter So platzieren Sie Ihre INTL-Dateien richtig.
Datei | Beschreibung |
---|---|
addendum.txt | Aktuelle Nachrichten, die möglicherweise in der Dokumentation oder der Hilfedatei enthalten sind oder nicht. |
genmenux.zip | Ein Archiv des neuesten verfügbaren GENMENUX-Programms von Andrew Ross MacNeill. |
i.prg | Eine eigenständige Funktion, die als Verknüpfung zur Methode _SCREEN.oINTL.I() dient. |
intl.prg | Der Kerncode für die Klassen und Dienstprogramme im INTL-Toolkit. |
intltool.prg | Entwickler-Dienstprogramme zur Durchführung von Batch-Vorgängen an Projektdateien und anderen VFP-Strukturen. Verteilen Sie diese Datei nicht mit Ihren Anwendungen. |
msgsvc.dbf msgsvc.fpt msgsvc.cdx | Tabellen- und Hilfsdateien mit Meldungen für Dialoge, Wartefenster, Thermometerbalken und Textblöcke. |
msgsvc.prg | Die Nachrichtendienstbibliothek. |
nohot.prg | nohot() entfernt Hotkey-Zeichen aus FoxPro-Eingabeaufforderungsausdrücken. Es handelt sich um eine einzeilige Funktion, die Sie ausschneiden und als Prozedur irgendwo im Aufrufstapel Ihrer Anwendung einfügen sollten. |
strings.dbf strings.fpt strings.cdx | Tabelle und unterstützende Dateien mit übersetzten Phrasen. |
Die INTL-Klassenhierarchie basiert auf der Klasse cINTLAbstract
. cINTLAbstract
dient der Definition der Schnittstelle für die gesamte Hierarchie. Wo immer möglich, wurde das Hinzufügen unerwünschter Eigenschaften, Ereignisse und Methoden zu Unterklassen vermieden.
Die folgende Abbildung zeigt ein OMT-Diagramm der INTL-Klassenhierarchie.
Die INTL-Klassenhierarchie.
Unter normalen Umständen werden Sie wahrscheinlich nur Objekte der Klasse INTL
verwenden.
Als Token kann die Klasse cINTLMemento
verwendet werden.
cINTLMemento
ist ein Konfigurationstoken, das INTL-Objekte zum Speichern von Details einer bestimmten Lokalisierung verwenden können. cINTLMemento
umfasst Zugriffsmethoden auf geschützte Eigenschaften.
INTL ist die öffentliche Schnittstelle und Vorlagenmethode für den Lokalisierungsprozess.
cINTLStrategy ist die übergeordnete Klasse verschiedener Lokalisierungs-Engines.
cINTLString
, cINTLCurrency
, cINTLFont
, cINTLMeasures
, cINTLPicture
und cINTLData
sind Klassen spezifischer strategischer Implementierungen.
INTL
Die INTL-Klasse stellt Dienste zum Lokalisieren von Objekten und anderen Elementen in Ihrer Anwendung bereit.
INTL
INTL::cCurrencyStrategy
Mit INTL können Sie Währungen lokalisieren.
Eine Zeichenfolge, die den Namen der Währungsstrategieklasse angibt.
Standard | "cINTLCurrency" |
Bemerkungen | Sie können cINTLCurrency in Unterklassen unterteilen, um Ihren speziellen Anforderungen gerecht zu werden. Sie können dann die Methode SetStrategy("Currency",cYourCurrencyClass) verwenden, um diese Währungsstrategieeigenschaft auf einen anderen Wert als den Standardwert festzulegen. |
Siehe auch | cINTLMemento::GetStrategy() |
INTL::cDataStrategy
INTL ermöglicht unterschiedliche Datenquellen für unterschiedliche Gebietsschemas. Eine Zeichenfolge, die den Namen der Datenstrategieklasse angibt.
Standard | "cINTLData" |
Bemerkungen | Sie können cINTLData in Unterklassen unterteilen, um Ihren speziellen Anforderungen gerecht zu werden. Sie können die Methode SetStrategy("Data", cYourDataClass) verwenden, um diese Datenstrategieeigenschaft auf einen anderen Wert als den Standardwert festzulegen. |
Siehe auch | cINTLMemento::GetStrategy() |
INTL::cFontStrategy
INTL ermöglicht das Ersetzen der richtigen Schriftarten.
Eine Zeichenfolge, die den Namen der Schriftartenstrategieklasse angibt.
Standard | "cINTLFont" |
Bemerkungen | Sie können cINTLFont in Unterklassen unterteilen, um Ihren speziellen Anforderungen gerecht zu werden. Sie können SetStrategy("Font", cYourFontClass) verwenden, um die Eigenschaft der Schriftartenstrategie auf einen anderen Wert als den Standardwert festzulegen. |
Siehe auch | cINTLMemento::GetStrategy() |
INTL::cPictureStrategy
INTL kann Bilder, Symbole und Bilder lokalisieren.
Eine Zeichenfolge, die den Namen der Bildstrategieklasse angibt.
Standard | "cINTLPicture" |
Bemerkungen | Sie können cINTLPicture entsprechend Ihren speziellen Anforderungen in Unterklassen umwandeln. Sie können ::SetStrategy("Picture", cYourPictureClass ) verwenden, um die Bildstrategieeigenschaft auf einen anderen Wert als den Standardwert festzulegen. |
Siehe auch | cINTLMemento::GetStrategy() |
INTL::cStringStrategy
INTL lokalisiert Wörter und Phrasen.
Eine Zeichenfolge, die den Namen der Zeichenfolgenstrategieklasse angibt. Die String-Strategieklasse ist für die Lokalisierung von Strings und Phrasen in der Anwendung verantwortlich und dient auch als Funktions-Repository für andere Strategieklassen.
Standard | "cINTLSting" |
Bemerkungen | Sie können cINTLString entsprechend Ihren speziellen Anforderungen in Unterklassen umwandeln. Sie können SetStrategy("String", cYourStringClass) verwenden, um die Eigenschaft festzulegen. |
Siehe auch | cINTLMemento::GetStrategy() |
Die Strategieklasse cINTLString ist bei weitem die nützlichste und stellt Dienste für andere Strategien bereit. | Hinweis: Viele Strategien nutzen stringbasierte Dienste, die von der aktiven String-Strategieklasse bereitgestellt werden. Um die Kohäsion mit einer bestimmten cStringStrategy Klasse zu verringern, befinden sich viele String-Methoden, die normalerweise zur Klasse cStringStrategy gehören würden, in der Klasse cINTLStrategy , der übergeordneten Strategieklasse. Daher verfügen alle Strategien über gewisse inhärente Fähigkeiten zur String-Lokalisierung. |
INTL
INTL::Execute()
Lokalisiert eine Zahl, eine Zeichenfolge, ein Objekt oder ein Array von Objekten. Im Fall von Objekten und Objektarrays übergibt die Ausführungsfunktion jedes Objekt der Reihe nach an alle aktiven Lokalisierungsstrategien.
Syntax | oINTL.Execute( @PassedObject ) |
Zurückkehren | Nichts |
Argumente | PassedObject : Kann vom Typ „numerisch“, „Zeichenfolge“ oder „Objekt“ sein. Es kann auch ein Array von Objektreferenzen sein. |
Siehe auch | INTL::ObjArray() |
Beispiel
DIMENSION laScratchArray[1]
SET PROC TO INTL
oINTL = CREATEOBJECT("INTL" )
oXX = CREATEOBJECT("Form" )
*-- Load the array with object references
oINTL.ObjArray( oXX, @laScratchArray )
oINTL.Execute( @laScratchArray )
INTL::GetAlias()
| Für Strategien sind möglicherweise Ressourcendateien erforderlich, auf die durch einen Alias verwiesen wird.
Gibt den Alias der Ressourcentabelle zurück, die der Standardlokalisierungsstrategie zugeordnet ist. Normalerweise gehört das Standardstrategieobjekt zur Klasse cINTLString
.
Syntax | oINTL.GetAlias() |
Zurückkehren | Der Zeichenwert des String-Strategietabellenalias. |
Argumente | Keiner. |
Bemerkungen | Die GetAlias() Methode ist eine einhängbare Methode. Das heißt, wenn ein Objekt der Klasse INTL über ein angehängtes Hook-Objekt verfügt, wendet sich GetAlias() an die Methode des Hook-Objekts. Da Objekte der Klasse INTL standardmäßig mit einem Objekt der Klasse cINTLStringStrategy verknüpft sind, entspricht der Aufruf oINTL.GetAlias() dem Aufruf von oINTL.oStringStrategy.getAlias() . |
Beispiel
_SCREEN.AddObject( "oINTL", "INTL" )
*-- The following two are equivalent
_SCREEN.oINTL.oStringStrategy.GetAlias()
_SCREEN.oINTL.GetAlias() |
INTL::GetTable()
Gibt den Namen der zugeordneten Ressourcentabelle zurück