_s¶
_s liefert für einen englischen String die Übersetzung in eine andere, verfügbare Sprache. Falls die Übersetzung nicht vorhanden ist, liefert die Funktion den englischen String zurück.
-
ssMessage = _s(ssID)
Returnwert
ssMessage ist der zu ssID gehörende String in der eingestellten Landessprache. Falls der String nicht gefunden wurde, ist ssMessage gleich ssID.
Parameter
-
ssID
ssID ist ein englischer String.
Kommentar
Die Funktion dient dazu Meldungstexte, Menütexte, Dialogfelder usw. in verschiedene Sprachen auszugeben. UniPlot verwendet dazu Techniken ähnlich GNU gettext (http://www.gnu.org/software/gettext/gettext.html).
Beispiel:
// test.ic
def test_error_msg(file, line_no)
{
printf(_s("Error occurred in file %s, line %d\n"), file, line_no);
}
Mit dem GNU gettext Tool xgettext.exe
können die zu lokalisierenden Strings
extrahiert werden:
xgettext.exe --add-comments=// --no-wrap -s -k_s --language=c test.ic
Es wird eine sogenannte PO-Datei messages.po
erzeugt, mit folgendem
Inhalt:
#: test.ic:4
#, c-format
msgid "Error occurred in file %s, line %d\n"
msgstr ""
Die ersten beiden Zeilen beginnend mit dem #
-Zeichen sind Kommentarzeilen.
Dem extrahierten String msgid folgt der noch leere msgstr. Diese Datei
kann nun in verschiedene Sprachen übersetzt werden, z. B. Deutsch:
#: test.ic:4
#, c-format
msgid "Error occurred in file %s, line %d\n"
msgstr "Fehler in Datei %s aufgetreten, Zeile %d\n"
UniPlot verwendet PO-Dateien nicht direkt, sondern verwendet mit MapSave
erzeugte Binärdateien auf die schnell zugegriffen werden kann. Alle
Message-Strings einer Sprache befinden sich in Unterverzeichnissen unter
program\locale\<loc>
. <loc>
ist eine Länderkennung, z. B. en
, de
oder ja
. Die Dateien haben den Namen uniplot.umo
.
Aus den UMO-Dateien können mit der Funktion i18n_umo_to_po(ssUMO, ssPO)
PO-Dateien erzeugt werden. Um aus der deutschen UMO-Datei die deutsche PO-Datei
zu erhalten, können Sie im Kommandofenster den folgenden Befehl eingeben:
i18n_umo_to_po(GetRootDirectory() + "program\\locale\\de\\uniplot.umo", "d:\\uniplot-de.po")
Sie können die PO-Datei in UniPlot öffnen oder ein Programm wie Poedit
(http://www.poedit.net/screenshots.php) verwenden. Die UniPlot-PO-Datei enthält
ca. 3000 Messages.
In einem UniPlot-Editor können Sie einfach die Zeilen:
#: test.ic:4
#, c-format
msgid "Error occurred in file %s, line %d\n"
msgstr "Fehler in Datei %s aufgetreten, Zeile %d\n"
an das Ende der uniplot-de.po
kopieren.
Um aus der editierten PO-Datei wieder eine UMO-Datei zu erzeugen verwenden Sie den Befehl:
i18n_po_to_umo("d:\\uniplot-de.po", GetRootDirectory() + "program\\locale\\de\\uniplot.umo")
Dazu müssen Sie Schreibzugriff auf das UniPlot-Verzeichnis haben.
Nach dem Neustart von UniPlot liefert nun:
_s("Error occurred in file %s, line %d\n")
den String:
"Fehler in Datei %s aufgetreten, Zeile %d\n"
Einige Hinweise:
Die Zeilen in den PO-Dateien, die mit
#
beginnen, sind Kommentarzeilen. Die Zeichen hinter dem Kommentarzeichen haben folgende Bedeutung:white-space # translator-comments #. extracted-comments #: reference... #, flag... #~ msgid previous-untranslated-string msgid untranslated-string msgstr translated-string
Die erste msgid mit leerem Key
""
enthält Informationen zur PO-Datei:msgid "" msgstr "Project-Id-Version: UniPlot\n" "POT-Creation-Date: 2009-12-11 10:27+0100\n" "PO-Revision-Date: 2012-12-30 13:21+0100\n" "Last-Translator: Roman Brüggenkoch <rb@uniplot.de>\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: de_DE\n"
Wichtig ist der Eintrag
"Content-Type: text/plain; charset=UTF-8\n"
. Es soll immercharset=UTF-8
verwendet werden.Lange Strings in msgid und msgstr können in mehrere Strings aufgeteilt werden. Die folgenden Strings sind äquivalent:
msgstr "Dies ist ein langer String" msgstr "Dies ist ein " "langer String" msgstr "Dies ist ein " "langer Stri" "ng" msgstr "Dies ist ein" " langer Stri" "ng"
Wenn Sie in den PO-Dateien Anführungszeichen, Backslashe, Tabulatorzeichen und Newlines eingeben möchten, müssen Sie sie eingeben wie in der Programmiersprache C:
" \" \\ \t \n "
.Einige msgids enthalten Dollarzeichen am Anfang, z. B. „$d/conf$Help System“. Dies ist nur eine Kontext-Information, die nicht übersetzt werden darf.
$d/conf$
steht für Dialog/Konfiguration. Wenn die msgids sortiert werden, stehen dadurch alle Texte die mit$d/conf$
beginnen, direkt hintereinander.msgid "$d/conf$Help System" msgstr "Hilfe System"
Wenn ein Text C-Formatstrings enthält, wie
%s
oder%d
in"Error occurred in file %s, line %d\n"
, darf die Reihenfolge nicht geändert werden. Die Übersetzung"Fehler in Datei %s aufgetreten, Zeile %d\n"
ist korrekt,"Fehler in Zeile %d der Datei %s aufgetreten\n"
ist falsch.In den locale-Verzeichnissen, z. B.
C:\Program Files (x86)\UniPlot Software\R2013\Program\locale\de\
befinden sich neben der Dateiuniplot.umo
noch eine Textdatei mit dem Namenid
. Die deutsche Datei enthält:de,0x07,Deutsch (de)
Eine japanische
id
-Datei könnte:ja, 0x11, Japanese (ja)
oder auch:
ja, 0x11, 日本人 (ja)
enthalten. Die Datei enthält drei Felder durch Komma „
,
“ getrennt. Language code, Primary Language ID, Display-String.Unter Extras=>Einstellungen ändern können Sie die Sprache ändern.
Um zwei UniPlot-Instanzen gleichzeitig in zwei unterschiedlichen Sprachen zu starten, können Sie ein UniPlot-Icon auf dem Desktop kopieren. Im Eigenschafts-Dialog (rechte Maustaste)
verwenden Sie unter Ziel (Target) den Schalter
/user
z. B.C:\Program Files (x86)\UniPlot Software\R2013\Program\x64\uniplot.exe /user english
. Doppelklicken Sie das Icon und ändern Sie die Sprache unter Extras=>Einstellungen ändern.Neben den UMO-Dateien gibt es zur Zeit noch RC-Dateien (Resource-Dateien) mit einigen Dialogen, Menütexten und Meldungstexten. Sie finden die englische und die deutsche RC-Datei unter
Samples\SDK\i18n
.
History
Version | Beschreibung |
---|---|
R2013 (5.50) | Dokumentation ergänzt. |
3.0 | Neu. |
Siehe auch
id-710243