automatische Übersetzung
Eine der besonderen Eigenschaften der AFPX sind die automatischen Übersetzungsmöglichkeiten.
Als erstes ist es notwendig bestimmte Parameter in der afpx.ini einzustellen.
Der Hauptschalter der Übersetzungsengine
; Translation engine switched on?
LOCALIZE=ON
Automatisches Übersetzen
Ist dieser Schalter auf ON wird automatisch die vom Browser übertragene Spracheinstellung verwendet um die Sprache einzustellen.
Eine Sprache besteht immer aus 2 Buchstaben. de = Deutsch, en = englisch, fr = Französisch etc
Sie sind nach
ISO 639-1 definiert.
; Is HTTP_ACCEPT_LANGUAGE to be used for language recognition?
AUTOLOCALIZE=ON
ENABLEDLANGUAGES
Mit ENABLEDLANGUAGES müssen die im System verwendeten Sprachen angegeben werden.
Es müssen exakt 2 Zeichen getrennt mit einem Komma angegeben werden.
; Which languages-PRG files should be created automatically
; use de,en,fr, and so on
ENABLEDLANGUAGES=de,en,
Es gibt nun mehrere Möglichkeiten Zeichenketten zu übersetzen.
normale Ausgabe
Normalerweise wird mit einem Fragezeichen einem Gleichheitszeichen oder wie beim Textmerge eine Zeichenkette in die HTML-Seite eingefügt.
<%="Guten Abend"%>
<%?"Guten Abend"%>
<%fox.writeclient("Guten Abend")%>
<<"Guten Abend">>
Zwei Fragezeichen
Verwenden sie zwei Fragezeichen, wird die Zeichenkette automatisch übersetzt
<%??"Guten Abend"%>
?>
Außerhalb der Scriptletzeichen können Sie mit <??> eine Übersetzung einleiten
?>
<??>Guten Abend<??>
fox.localize
Zusätzlich gibt es auch noch eine Funktion, welche eine Übersetzung durchführt.
<%?fox.localize("Guten Abend")%>
Sobald einmal eine Zeichenkette durch die Übersetzung geschickt wurde, wird in der
langfile.dbf ein Datensatz dafür gesucht.
Wird die Zeichenkette unter dem Feld origin nicht gefunden, wird automatisch ein neuer Datensatz angelegt und die ganzen Sprach-Memos mit der Zeichenkette gefüllt.
Sie können nun die Tabelle bearbeiten und die Übersetzungen vornehmen.
2 Varianten
Es sind zwei verschiedene Varianten der Übersetzung eingebaut.
Übersetzung zur Kompilierungszeit
Sobald eine AFP-Seite in ein echtes PRG umgewandelt wird, werden abhängig vom Parameter ENABLEDLANGUAGES mehrere PRG´s erstellt.
Im Falle einer test.afp und den Sprachen de,en, können die erzeugten Dateien folgendermaßen aussehen:
C__inetpub_wwwroot_test_afp.ini
c__inetpub_wwwroot_test_afp__3cs1b48tf_2968_de.FXP
C__inetpub_wwwroot_test_afp__3CS1B48TF_2968_de.prg
c__inetpub_wwwroot_test_afp__3cs1b48tf_2968_en.FXP
C__inetpub_wwwroot_test_afp__3CS1B48TF_2968_en.prg
die INI-Datei
beinhaltet die Informationen der einzelnen Dateien mit deren Timestamps
20111107205224
C__inetpub_wwwroot_test_afp__3CS1B48TF_2968.fxp
C__inetpub_wwwroot_test_afp__3CS1B48TF_2968.prg
00000000000000
C:\inetpub\wwwroot\test.afp.code
00000000000000
C:\inetpub\wwwroot\application.code
00000000000000
C:\inetpub\wwwroot\application.prg
neu erstellt in Procedure makenewfiles
Es wird pro Sprachcode ein PRG erzeugt und dies wird zu einem FXP kompiliert.
Abhängig von der derzeitigen Sprache wird dann das jeweilige FXP aufgerufen.
Die im Original-AFP-File mit <<??>> markierten Zeichenketten werden automatisch durch die Übersetzungsengine geschickt, und somit befinden sich in den PRG´s die bereits ordentlich Übersetzten Texte.
Dies führt zu einer wesentlich schnelleren Ausführung des Codes.
der _lng=xx Querystringzusatz
Um zur Laufzeit zwischen verschiedenen Sprachen umschalten zu können, gibt es die Möglichkeit als zusätzlichen Querystringparameter ein
_lng=xx anzugeben, wobei xx dem Sprachcode entspricht.
Dies funktioniert jedoch nur bei der "on the fly" Übersetzung.
Wird _lng als HTTP-Cookie übertragen, wird es ebenfalls berücksichtigt