Inhaltsverzeichnis
Translate

GnuGetText-Werkzeuge für Delphi


Zusätzliche Werkzeuge

GgtTranslate - Übersetzungen erstellen und verwalten

Diese Programm stellt eine grafische Benutzeroberfläche für die Erstellung und Verwaltung von mehrsprachigen Übersetzungen bereit. Alle hier beschriebenen Funktionen sind unter einem Dach vereinigt:


Die Einstellungen, z.B. der Name der Text-Domäne oder die verwendeten Sprachen, werden für jedes Projekt getrennt in einer Datei dxgettext.ini, die sich im jeweiligen Projektverzeichnis befindet, abgespeichert. Beim Wechsel des Projektverzeichnisses werden automatisch die dazu gehörenden Einstellungen geladen.

Einstellungen


Aktionen

Durch Klick auf eine der großen Schaltflächen unten rechts startet man eine der folgenden Aktionen:


PoCompare - po-Dateien vergleichen

Manchmal ist es erforderlich Übersetzungen, z.B. wenn eine revidierte Version vorliegt, zu vergleichen oder Übersetzungen aus einem Projekt in ein anderes zu übertragen. PoCompare lädt zwei übersetzte po-Dateien, die zu bearbeitende und die zum Vergleich zu verwendende, und sucht alle Einträge heraus, bei denen der Originaltext (msgid) gleich und die Übersetzung(msgstr) unterschiedlich ist. Oben wird die Anzahl der gefundenen Einträge angezeigt, darunter ein jeweils ausgewählter Eintrag:

Auswahl der zu verwendenden po-Dateien:
  Zunächst wählt man durch Klick auf diese Schaltfläche oben links die zu bearbeitende po-Datei aus. Anschließend wird die zum Vergleichen zu verwendende po-Datei durch Klick auf die Schaltfläche oben rechts ausgewählt.
  Zum schnelleren Finden der Vergleichsdatei kann die Suche danach durch Klick auf diese Schaltfläche direkt im Verzeichnis der zu bearbeitenden po-Datei begonnen werden.
Mit diesen Schaltflächen kann durch die gefundenen Einträge navigiert werden:
  Ein Eintrag vor oder zurück
  10 Einträge vor oder zurück
  Zum ersten oder letzten Eintrag
Mit diesen Schaltflächen erfolgt die Bearbeitung:
  Der Text des ausgewählten Eintrags wird von rechts nach links kopiert, d.h. die Übersetzung links wird durch die rechte ersetzt. So geänderte Einträge werden farblich hervorgehoben.
  Es werden alle Einträge von rechts nach links kopiert.
  Es ist auch möglich im linken Übersetzungsfenster Änderungen von Hand einzufügen. Diese müssen dann durch Klick auf das grüne Häkchen bestätigt werden.
  Damit kann die letzte Änderung rückgängig gemacht werden.
  Mit einem Klick auf diese Schaltfläche werden die Änderungen der linken po-Datei gespeichert.
Weitere Funktionen:
  Aufklappliste der zu bearbeitenden po-Dateien editieren.
  Beide po-Dateien neu laden
  Die zu bearbeitende po-Datei wird mit dem zugeordneten Editor geöffnet (z.B. PoEdit)

Befehlszeile

Aufruf: pocompare.exe <editname> <refname>
  <editname> Zu bearbeitende po-Datei
  <refname> Zum Vergleich zu verwendende po-Datei

Importieren von Übersetzungen aus einer anderen po-Datei

Manchmal benötigt man für ein neues Projekt Übersetzungen, die bereits für ein anderes Projekt vorliegen. Mit PoImport lassen sich diese schnell und einfach übertragen. Es werden dazu zunächst die beiden po-Dateien, die neue, zu bearbeitende (Po-1) und die bereits in übersetzter Form vorliegende (Po-2), geladen. Das Programm prüft für alle Einträge in Po-1, ob

  1. noch keine Übersetzung vorhanden ist, d.h. msgstr ist leer,
  2. ein passender Eintrag in Po-2 (identische msgid) vorhanden ist.

Wenn dies der Fall ist, wird die Übersetzung msgstr von Po-2 nach Po-1 kopiert. Anschließend wird die aktualisierte po-Datei (Po-1) gespeichert.
Falls erforderlich, d.h. wenn noch weitere nicht übersetzte Strings in Po-1 vorliegen, kann man den Import mit anderen po-Dateien wiederholen, um die Übersetzung zu vervollständigen.


PoFromPas - Übersetzungen aus den Ressourcen-Strings von Pascal-Units extrahieren

Wenn es für eine Delphi-Unit bereits eine Übersetzung in eine andere Sprache als englisch gibt, können die dort verwendeten Ressourcen-Strings (Strings die im Abschnitt resourcestring definiert sind) in eine po-Datei übertragen werden. Zur Identifizierung der Strings wird ihr Konstantenname, z.B. SFileNotFound aus der Unit System.SysConst.pas verwendet. In der po-Vorlage wird dieser von dxgettext oder GgtTranslate jeweils als Kommentar mit dem Hinweis Programmer's name for it: gekennzeichnet.



TransUnit - Erzeuge eine übersetzte Delphi-Unit mit den Strings aus einer po-Datei

Mit diesem Programm kann aus einer Delphi-Unit (dfm- und pas-Datei) in der Basissprache (z.B. englisch) eine Unit mit den übersetzten Strings erstellt werden. Die Übersetzungen werden aus einer bereits übersetzten po-Datei extrahiert.

In der Übersicht werden alle in der Delphi-Unit und in der po-Datei gefundenen Strings (msgid) in einer Liste angezeigt. Aus der mittleren Spalte ist der Ursprung des jeweiligen Strings zu entnehmen: D = Formular (dfm-Datei) und P = Quelltext (pas-Datei). Rechts daneben steht die in der po-Datei gefundene Übersetzung. Alle Strings, für die eine Übersetzung gefunden wurde, werden automatisch markiert (Häkchen am linken Rand). Falls erforderlich, kann der Benutzer diese Auswahl von Hand anpassen. Nach Klick auf die Schaltfläche Strings ersetzen werden die Übersetzungen der markierten Strings in die beiden Dateien der Delphi-Unit eingefügt. Zusätzlich wird in der uses-Anweisung die Unit GnuGetText (sofern angegeben) durch die Dummy-Unit GgtDummy ersetzt. Dadurch können die im Quelltext möglicherweise verwendeten Funktion _(..), dgettext(..) und TranslateComponent(..) unverändert stehen bleiben. Die so geänderten Dateien der Delphi-Unit werden dann in einem Unterverzeichnis des Originals mit dem Kürzel der jeweiligen Sprache als Namen abgelegt.



PoSpell - Rechtschreibüberprüfung von übersetzten po-Dateien

Mit diesem Programm kann eine po-Datei auf Rechtschreibfehler überprüft werden. Es werden dazu die Wörterbücher aus dem Projekt Hunspell verwendet, die auch in vielen anderen Anwendungen, wie z.B. LibreOffice, OpenOffice und Firefox zum Einsatz kommen. Das deutsche Wörterbuch ist bereits im Installationspaket enthalten. Es können aber auch beliebige andere Wörterbücher ausgewählt werden. Daneben gibt es ein privates Wörterbuch des Benutzers, in dem er alle Ausdrücke sammelt, die im globalen Wörterbuch nicht enthalten sind, aber als richtig geschrieben erkannt werden.

Verfahrensweise

Nach Auswahl einer po-Datei sucht das Programm automatisch nach dem ersten vermutlichen Rechtschreibfehler in einer Übersetzung (msgstr) und zeigt diese im mittleren Fenster an. Darunter wird das vermeintlich falsch geschriebene Wort herausgehoben. Man hat jetzt verschiedene Möglichkeiten:

  1. Zum Wörterbuch hinzufügen ...: Das angezeigte Wort wird zum privaten Wörterbuch hinzugefügt, damit es bei zukünftigen Überprüfungen als richtig erkannt wird. Anschließend wird das nächste Wort gesucht.
  2. Wort ersetzen: Man korrigiert zunächst das Wort von Hand oder klickt auf den ↓-Pfeil, um aus einer Liste möglicher Vorschläge das passende Wort auszuwählen. Anschließend klickt man auf diese Schaltfläche um das Wort zu ersetzen und dann auf Nächstes Wort.
  3. Nächstes Wort: Der vermeintlich fehlerhafte Text wird ignoriert und das nächste Wort gesucht.

Am Ende klickt man auf die Speichern-Schaltfläche rechts, um die Änderungen zu sichern.

Befehlszeile

Aufruf: pospell.exe <poname>
  <poname> Zu überprüfende po-Datei


PoStat - Anzeige des Headers und der Statistik einer po-Datei

Es wird der Header der po-Datei mit den Angaben zum Projekt, dem Autor, dem Übersetzer, sowie eine Statistik der Einträge angezeigt.

Befehlszeile

Aufruf: postat.exe <poname>
  <poname> Anzuzeigende po-Datei


PoComment - Übersetzungen als Kommentar speichern

Wenn ein Übersetzer Schwierigkeiten mit dem Verstehen der englischen Texte hat, kann man mit diesem Programm die bereits vorhandene Übersetzung in eine andere Sprache als Kommentar in die neu anzufertigende Übersetzung einfügen. In PoEdit werden diese Kommentare zusätzlich zu den englischen Originaltexten im unteren rechten Feld als Hinweis angezeigt und helfen dem Übersetzter zum besseren Verständnis.



Übersetzen von Texten für InnoSetup-Skripte

Eine weite verbreitete Anwendung zur Erzeugung von Installationsarchiven ist das Freeware-Programm Inno Setup. Es bietet die Möglichkeit, die für das Benutzerinterface bei der Installation benötigten Hinweistexte in verschiedenen Sprachen einzubinden. Mit den hier angebotenen Programmen können die dafür benötigten Text-Dateien mit den Übersetzungen über PoEdit erstellt werden.

Die Verarbeitung erfolgt in folgenden Schritten:

  1. Mit dem Programm IssToPas werden die Texte der Sektion [CustomMessages] im InnoSetup-Skript extrahiert und diese als Ressourcen-Strings in eine Delphi-Unit (Pascal) konvertiert.
  2. Aus der so erzeugten Unit werden mit GgtTanslate oder dxgettext und ggmerge eine po-Schablone und die dazu gehörende übersetzte po-Datei erstellt.
  3. Mit dem Programm PoToIss wird daraus eine Text-Datei in einem Format erstellt, die in das InnoSetup-Skript eingebunden werden kann.

IssToPas

Extrahiert die Texte der Sektion [CustomMessages] im InnoSetup-Skript und konvertiert diese als Ressourcen-Strings in eine Pascal-Unit. Im nachfolgenden Beispiel sind links die Texte im Setup-Skript und rechts die daraus erzeugt Delphi-Unit dargestellt:

Text in der iss-Datei:   Text in der Delphi-Unit
 
  
    
  [CustomMessages]     
  en.ProgName=Personal Backup %1 (%2-bit)
  en.eventicon=Add messages to event log
  en.Context=Context menus:
  ...
    
 
    
  unit InstallStrings;
  interface
  resourcestring
    ProgName = 'Personal Backup %1 (%2-bit)';
    eventicon = 'Add messages to event log';
    Context = 'Context menus:';
    ...
  implementation
  end.
    
Befehlszeile:
Aufruf: isstopas.exe <issname> [options]
  <issname> Name der iss-Datei, aus der die Textstrings extrahiert werden sollen.
  /prefix:<langid> <langid> ist der ISO 639-Code der Sprache, die extrahiert werden soll (nur erforderlich, wenn es eine andere als en ist).
  /out:<pasname> Verwende einen anderen Unit-Namen (anstelle von issname.pas).

Beispiele:
  isstopas.exe E:\Sample\test.iss
  isstopas.exe E:\Sample\test.iss /pref:de /out:test-en

PoToIss

Konvertiert die übersetzten Texte aus einer po-Datei in das Format, das in ein InnoSetup-Skript eingebunden werden kann.

Befehlszeile:
Aufruf: potoiss.exe <poname> [options]
  <poname> Name der po-Datei, deren Textstrings konvertiert werden sollen.
  /prefix:<langid> <langid> ist der ISO 639-Code der Sprache, die verwendet wird.
  /out:<outname> Name der Ausgabedatei (anstelle von poname.txt).

Integration der Zusatz-Funktionen in die Windows-Kontextmenüs

Bei der Installation des Programmpakets werden automatisch die erforderlichen Registry-Einträge vorgenommen, um die Windows-Kontextmenüs anzupassen. Neben den bei den Grundfunktionen bereits beschriebenen, gibt es für die oben aufgeführten Zusatzfunktionen erweiterte Kontextmenüs:

1. Rechtsklick auf eine po-Datei, z.B. default.po   2. Rechtsklick auf eine iss-Datei, z.B. GgtTranslate.iss
öffnet die ausgewählte po-Datei mit dem jeweiligen Werkzeug (siehe dazu die obigen Beschreibungen).   extrahiert die in der iss-Datei unter [CustomMessages] gefunden Strings (siehe oben unter IssToPas).


J. Rathlev, D-24222 Schwentinental, Oktober 2024