Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Projektplanung und -Management (https://www.delphipraxis.net/85-projektplanung-und-management/)
-   -   Dateien zum Übersetzen anbieten in welchem Format (https://www.delphipraxis.net/204029-dateien-zum-uebersetzen-anbieten-welchem-format.html)

Strict 16. Apr 2020 15:40


Dateien zum Übersetzen anbieten in welchem Format
 
Ein seit Jahren gewachsenes Projekt habe ich in verschiedene Sprachen übersetzt. Es gibt keine externen Sprachdateien. Alles ist einkompiliert.
Ein netter Nutzer des Programms möchte es jetzt in seine Landessprache übersetzen und hat sich dafür angeboten.

In welchem Format schicke ich denn jetzt die Dateien? Alles ist direkt in pas-Dateien vorhanden moit den Zuordnungen für jedes Formular und jeder Variablen.

Eine Idee die ich diese Nacht hatte lautet ungefähr: ich schnappe mir die Dateien mit der englischen Übersetzung, filtere jeden String raus und baue daraus eine PO-Datei.
Ein beispiel ist hier zu finden https://gist.github.com/bosskovic/5930785

Dafür brauche ich einerseits ein Tool, welches mit die PO-Datei baut und andererseits eines, was mit die Strings wieder in eine Pascal-Dummy-Datei packt.
Das könnte eine meiner Sprachdateien sein, wo alle Strings durch die msgid's ersetzt werden.

Pascal-Datei, ein absolut minimalistisches Beispiel
Delphi-Quellcode:
Programm.Caption := 'Programm v1.0 - no bugs - really!';
Programm.lblHello := 'Hello';
Ein Tool erzeugt mir daruas Dummy-Dateien
Delphi-Quellcode:
Programm.Caption := msgid:'Programm v1.0 - no bugs - really!';
Programm.lblHello := msgid:'Hello';
Noch ein weiteres filtert mir die Strings aus der eigentlichen Datei raus und erzeugt eine PO-Datei.

Und das letzte geht durch die PO-Datei und ersetzt die msgstr-Einträge (die Übersetzten strings) mit den msgid's aus der Dummy-Datei.

dummzeuch 16. Apr 2020 17:27

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Zitat:

Zitat von Strict (Beitrag 1462253)
ich schnappe mir die Dateien mit der englischen Übersetzung, filtere jeden String raus und baue daraus eine PO-Datei.

Dafür brauche ich einerseits ein Tool, welches mit die PO-Datei baut und andererseits eines, was mit die Strings wieder in eine Pascal-Dummy-Datei packt.
Das könnte eine meiner Sprachdateien sein, wo alle Strings durch die msgid's ersetzt werden.

Naja, das Problem dabei ist, dass Du das jedes Mal neu machen müsstest, wenn Du einen String veränderst oder einen neuen hinzufügst.

Wenn du die Übersetzungen auf Dauer behalten willst, und evtl. auch weitere Sprachen dazukommen sollen, lohnt es sich, das richtig zu machen. Z.B. mit dxgettext.

Vorgehensweise wäre dann:
  1. Alle zu übersetzenden Strings durch Aufruf von der _()-Funktion markieren.
  2. Bei allen Formularen im Constructor einen Aufruf von TranslateComponent(Self) einbauen.
  3. Mittels dxgettext die Strings als .po-Datei extrahieren.
  4. Übersetzen lassen z.B. mit Gorm oder PoEdit.
  5. Die übersetzten .po-Dateien in .mo-Dateien compilieren.
  6. Die Übersetzungen der Delphi-Strings nicht vergessen (die liefert dxgettext zum größten Teil mit).
  7. Die .mo-Dateien im Unterverzeichnis locale\[sprachkuerzel]\lc_messages mit dem Programm ausliefern
  8. Falls man keine zusätlichen Dateien ausliefern will, kann man die .mo-Dateien auch mit einem Tool an die EXE-Datei anhängen.

Das ist eigentlich gar nicht so aufwändig wie es jetzt klingt, und zur gleichen Zeit deutlich aufwändiger als man denkt. ;-)

Strict 16. Apr 2020 17:34

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Codeänderungen wird es leider keine geben. Das hätte ich oben als aller erstes dazuschreiben sollen. Es gibt insgesamt über 2000 Zeilen zu übersetzen pro Sprache. Dafür ist es mir den Aufwand mit dxgettext nicht wert. Lieber baue ich ein eigenes Tool, welches ich voll kontrollieren kann und das den Code durchparst, ohne dass ich erst einen Refactor brauche.
Ich kann mir aber auch nicht vorstellen was du oben meinst. Hast du ein Minimalbeispiel?

himitsu 16. Apr 2020 17:38

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Ja, sowas wie die PO/MO-Dateien sind weit verbreitet und es gibt viele Editoren dafür.
Egal was du nun machst, als Format für den Austausch wären die schon nutzbar.



Das andere Minimum wäre der (alte) Weg von Delphi.

RessourceStrings
Die kann man einmal in den Ressourcen bearbeiten, auch nach dem Compilieren,
und es ist möglich Sprach-DLLs mitzuliefern, mit alternativen Sprachen.

z.B. VCL240.bpl und VCL240.de

Diese Ressourcen kann man einmal selber erstellen und dann z.B. via MSDN-Library durchsuchenLoadString laden,
oder statt Delphi-Referenz durchsuchenconst einfach Delphi-Referenz durchsuchenressourcestring verwenden. (siehe SysConst)


Die Varianten ala GNU-gettext oder Delphi-Referenz durchsuchenTLang bieten dagegen die Möglichkeit auch während der Laufzeit die Sprache zu ändern.


Sowas wie Delphi-Referenz durchsuchenTLang gab es auch mal in der VCL. (TTranslateIregendwas, oder so)
http://docwiki.embarcadero.com/RADSt...ger_in_the_IDE

Strict 16. Apr 2020 17:42

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Das beantwortet die Frage aber nicht. Die Frage lautet eigentlich, in welchem Format ich die Grundübersetzung am besten weitergebe, damit darauf basierend in eine weitere Sprache übersetzt werden kann.

Rollo62 16. Apr 2020 17:52

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Mit .po sollten die meisten Übersetzungsbüros klarkommen.

himitsu 16. Apr 2020 17:53

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Joar, das hatte ich auch garde noch nachgetragen. :oops:

Zitat:

Ja, sowas wie die PO/MO-Dateien sind weit verbreitet und es gibt viele Editoren dafür.
Egal was du nun machst, als Format für den Austausch wären die schon nutzbar.
https://wordpress.stackexchange.com/...s-localization

Strict 16. Apr 2020 17:56

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Ich begebe mich mal daran einen ganz schlechten Parser zu bauen, der Strings rausfiltert und stelle den dann hier vor. Könnte aber etwas dauern.
Das scheitert bestimmt kläglich. Ob das mit RegEx einfacher ist, Strings rauszufiltern? Ich mache dafür aber ein extra Thema auf. Danke bis hierhin!

TurboMagic 16. Apr 2020 22:35

AW: Dateien zum Übersetzen anbieten in welchem Format
 
Als Dateiformat für die Weitergabe von Übersetzungen ist auch das XML basierte TMX Format gebräuchlich odr auch das XML basierte XLIFF Format. TMX kann i.d.R. von Kommerziellen Programmen benutzt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz