![]() |
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 ![]() 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:
Ein Tool erzeugt mir daruas Dummy-Dateien
Programm.Caption := 'Programm v1.0 - no bugs - really!';
Programm.lblHello := 'Hello';
Delphi-Quellcode:
Noch ein weiteres filtert mir die Strings aus der eigentlichen Datei raus und erzeugt eine PO-Datei.
Programm.Caption := msgid:'Programm v1.0 - no bugs - really!';
Programm.lblHello := msgid:'Hello'; 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. |
AW: Dateien zum Übersetzen anbieten in welchem Format
Zitat:
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:
Das ist eigentlich gar nicht so aufwändig wie es jetzt klingt, und zur gleichen Zeit deutlich aufwändiger als man denkt. ;-) |
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? |
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 ![]() oder statt ![]() ![]() Die Varianten ala GNU-gettext oder ![]() Sowas wie ![]() ![]() |
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.
|
AW: Dateien zum Übersetzen anbieten in welchem Format
Mit .po sollten die meisten Übersetzungsbüros klarkommen.
|
AW: Dateien zum Übersetzen anbieten in welchem Format
Joar, das hatte ich auch garde noch nachgetragen. :oops:
Zitat:
![]() |
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! |
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 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz