GnuGetText-Werkzeuge für Delphi |
|
GnuGetText
ist ein System zum Entwickeln von mehrsprachigen Anwendungen. Es werden diverse
Programmiersprachen unterstützt, u.a. C, C++, Python und Java.
Eine Unterstützung von Delphi (Pascal) fehlt allerdings.
Im Jahr 2003 wurde von Lars B. Dybdahl erstmals eine Erweiterung dieses Systems
für Delphi bereit gestellt:
GNU Gettext for Delphi.
Leider gibt es seit 2008 keine nennenswerte Weiterentwicklung. Auch ist die
Bedienung bei Anwendungen mit einer Unterstützung für mehrere Sprachen etwas
umständlich. Das vorliegende Programmpaket bietet neben den überarbeiteten
Versionen der Originalprogramme eine neue Bedienungsoberfläche (GgtTranslate),
die alle erforderlichen Schritte für die Erstellung und Bearbeitung der
Übersetzungen unter einem Dach zusammenfasst und mehrere weitere Werkzeuge zum
Bearbeiten und Integrieren von Übersetzungen in eigene Programme.
Basis für alle Übersetzungen ist eine Delphi-Anwendung, bei der alle Texte (Strings), die dem Benutzer angezeigt werden, in einer Ausgangssprache, vorzugsweise in Englisch, angegeben werden. Aus den Programm-Quelltexten wird als erstes eine po-Schablone (Textdatei) mit den Strings in der Ausgangssprache (z.b. englisch) als Vorlage für die Übersetzungen erstellt. Aus dieser kann dann mit einem geeigneten Editor, wie z.B. PoEdit, die sprachspezifische po-Datei erzeugt werden, indem String für String übersetzt wird. Wenn später im Programm Änderungen der Strings gemacht oder neue Strings hinzugefügt werden, muss die sprachspezifische po-Datei nur noch aktualisiert werden. Alle bereits übersetzten Strings bleiben erhalten:
msgid "" msgstr "" "Project-Id-Version: Delphi-Units - Deutsche Übersetzung\n" "POT-Creation-Date: 2023-08-31 17:05+0200\n" "PO-Revision-Date: 2023-08-31 17:06+0200\n" "Last-Translator: J. Rathlev <name@mail.de>\n" "Language-Team: J. Rathlev <name@mail.de>\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Programmer's name for it: rsExecuteError #: UnitConsts.pas:47 msgid "Error executing process" msgstr "Fehler beim Ausführen eines Prozesses" #. Programmer's name for it: rsAnyKey #: UnitConsts.pas:125 msgid "Strike any key to continue ..." msgstr "Drücken Sie eine beliebige Taste, um fortzufahren ..."
Der erste Abschnitt (header) enthält allgemeine Angaben zur Übersetzung, insbesondere das Kürzel für die verwendete Sprache (hier de_DE) und die verwendete Zeichencodierung (UTF-8). Darauf folgen die Abschnitte mit den einzelnen Strings im Originalwortlaut (msgid) und der zugehörigen Übersetzung (msgstr). Zeilen, die mit # beginnen, enthalten Kommentare, z.B. den Namen der Quelltext-Datei (UnitConsts.pas mit der Zeilennummer und weitere Hinweise.
Download der ausführlichen englischen Beschreibung.
Beim Erstellen der po-Schablone (s.o.) werden die folgenden Strings erkannt:
Außerdem muss in das Delphi-Programm die Unit GnuGetText.pas eingebunden sein (weitere Infos).
Es gibt die Möglichkeit, Übersetzungen in verschiedene Text-Domänen zu unterteilen. Damit ist es möglich, Gruppen von Unterprogrammen (z.B. Units und Dialoge, die in verschiedenen Anwendungen zum Einsatz kommen) getrennt zu übersetzen. Die Standarddomäne für eine Anwendung heißt immer default. Die Namen anderer Domänen sind frei wählbar, müssen in den jeweiligen Quelltexten aber genauso angegeben werden (z.B. units)
Die so erstellte po-Datei (Text) wird dann noch in eine mo-Datei (binär)
konvertiert. Damit diese beim Start der Anwendung gefunden wird, muss sie an einem
ganz bestimmten Unterverzeichnis der exe-Datei befinden:
locale\<Sprach-Id>\LC_MESSAGES\
(<Sprach-Id> = de, fr, es, etc.)
Beispiel: c:\Program Files (x86)\Delphi GetText\locale\de\LC_MESSAGES\default.mo
Für die Funktion der bereit gestellten Delphi-Werkzeuge werden einige Programme aus dem Original-GnuGettext-Paket benötigt:
Diese Dateien sind im Installationspaket enthaltenen, können aber auch bei GitHub herunter geladen werden. Die Quelltexte findet man auf dem Gnu-Portal.
Die beschriebenen Programm werden als Windows-Setup bereit gestellt. Nach dem Download wird das Setup durch Doppelklick gestartet. Zur Installation sind die Berechtigungen eines Administrators erforderlich. Während der Installation kann ausgewählt werden, ob die Programme des Pakets direkt über die Windows-Kontextmenüs gestartet werden können.