Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrsprachig mit GNU Gettext (https://www.delphipraxis.net/197332-mehrsprachig-mit-gnu-gettext.html)

Hobbycoder 31. Jul 2018 11:04

Mehrsprachig mit GNU Gettext
 
Hi,

ich möchte eine Anwendung mehrsprachig machen. Dabei wird hier von viele auf GNU GetText verwiesen. Beim Informieren im Internet bin ich auf Diese Seite gestoßen. Allerdings ist diese recht alt.

Ist das so noch aktuell und unter Tokyo einsetzbar? Gibt es nützliche Tools, die mir bei meinem Vorhaben helfen können?

franktron 31. Jul 2018 11:23

AW: Mehrsprachig mit GNU Gettext
 
Und was ist damit https://sourceforge.net/projects/dxgettext/

Der schöne Günther 31. Jul 2018 11:40

AW: Mehrsprachig mit GNU Gettext
 
Die gleiche Frage habe ich 2016 auch schon einmal angestoßen:
https://www.delphipraxis.net/188630-...dxgettext.html

Es ist super, es funktioniert prächtig. Viele nutzen es (ich auch). Aber keiner betreut es. Es ist einfach nur da, seit vielen Jahren. Niemand nimmt sich der Sache an.


Erst wenn es eines Tages nicht mehr richtig gehen sollte werden alle aufwachen.

Headbucket 31. Jul 2018 11:50

AW: Mehrsprachig mit GNU Gettext
 
Wir verwenden es auch in mehreren Projekten.

Bisher scheint noch alles gut zu funktionieren. Mir graut es auch vor dem Tag, wo etwas nicht mehr geht.

Ich verwenden aktuell folgende Version
Code:
// Information about this file:
// $LastChangedDate: 2010-08-25 15:40:17 +0200 (on, 25 aug 2010) $
// $LastChangedRevision: 220 $
Mich würde mal interessieren, ob ihr Änderungen an der gnugettext.pas vorgenommen habt?

Es exisitieren ja verschiedene Compiler-Schalter bis zu Delphi XE5:
Delphi-Quellcode:
{$ifdef VER260}
  // Delphi XE5
  {$DEFINE dx_has_Unsafe_Warnings}
  {$DEFINE dx_has_WideStrings}
  {$DEFINE dx_StringList_has_OwnsObjects}
  {$DEFINE dx_GetStrProp_reads_unicode}
  {$DEFINE dx_has_Inline}
  {$DEFINE dx_has_LpVoid}
  {$DEFINE dx_has_VclThemes}
  {$DEFINE dx_midstr_in_AnsiStrings}
{$endif}
Macht es Sinn diese Definitionen auch für neuere Delphi-Versionen zu ergänzen? Wir haben das bisher ehrlich gesagt nicht getan.

Grüße
Headbucket

Der schöne Günther 31. Jul 2018 11:58

AW: Mehrsprachig mit GNU Gettext
 
Da fängt es schon an. Laut Quelltext bei mir gleiche Version, aber bei mir existieren Schalter bis XE7. Was für ein Wildwuchs.

Und ja, wir haben auch bereits selbst ein paar weitere Änderungen vorgenommen.

Hobbycoder 31. Jul 2018 12:15

AW: Mehrsprachig mit GNU Gettext
 
Ich habe mir die DXGetText mal heruntergeladen.
Ist ja scheinbar die gleiche Version, wie in meinem Eröffnungsthread. Die, in der DXGetText-Installation hinterlegte, Online-Dokumentation verweist auf eine Internetdomain, die nicht mehr existiert. (Was nicht schlimm ist, das die docs ja dabei sind).

In einem anderen Thread habe ich gelesen, dass das ganze jetzt ins Jedi-Projekt gewandert ist, und eine JvGnugettext-Unit ist auch vorhanden. Scheinbar aber auch nur 1zu1 übernommen.

Bei den Jedis habe ich aber die Tools (z.B. dxgettext) nicht gefunden.

Hobbycoder 31. Jul 2018 12:20

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von Headbucket (Beitrag 1409196)
Wir verwenden es auch in mehreren Projekten.

Bisher scheint noch alles gut zu funktionieren. Mir graut es auch vor dem Tag, wo etwas nicht mehr geht.

Ich verwenden aktuell folgende Version
Code:
// Information about this file:
// $LastChangedDate: 2010-08-25 15:40:17 +0200 (on, 25 aug 2010) $
// $LastChangedRevision: 220 $

Das entspricht den Angaben in der JvGnugettext.pas.

Die Pas aus DxGnugettext schein 2 Jahre älter zu sein.

p80286 31. Jul 2018 12:37

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1409195)
Erst wenn es eines Tages nicht mehr richtig gehen sollte werden alle aufwachen.

Zumindest einer scheint nicht zu schlafen:https://sourceforge.net/projects/dxgettext/

Gruß
K-H

Hobbycoder 31. Jul 2018 12:42

AW: Mehrsprachig mit GNU Gettext
 
Ich habe jetzt mal angefangen ein Beispielprojekt mehrsprachig zu machen.

In der Anleitung stehen ja so tolle Sätze wie:
Zitat:

Compile the default.po file to a default.mo file by clicking on it with the right mouse button and choose "compile to .mo file".
.
Er macht auch irgendwas, der Cursor dreht sich fleißig, aber am Ende scheint nichts passiert zu sein. Jedenfalls kann ich kein .mo-File finden. Wissen die Götter, wo er das nun hinpackt.
Gibt's irgendwo (möglichst deutschsprachig) eine Anleitung, wie man das über die Commandline macht, da habe ich wenigstens eine Ergebnis-Ausgabe.

Zitat:

Zitat von p80286 (Beitrag 1409203)
Zitat:

Zitat von Der schöne Günther (Beitrag 1409195)
Erst wenn es eines Tages nicht mehr richtig gehen sollte werden alle aufwachen.

Zumindest einer scheint nicht zu schlafen:https://sourceforge.net/projects/dxgettext/

Gruß
K-H

Das ist die, die ich mir runtergeladen habe, und laut Versionsangabe in der PAS-Datei, ist die Version schon mal 2 Jahre älter als die JvGnugettext, die der JCL beiliegt.

CCRDude 31. Jul 2018 13:36

AW: Mehrsprachig mit GNU Gettext
 
Um aus .po eine kompilierte .mo zu machen, verwende ich schlicht POEdit zum übersetzen, das speichert automatisch auch als .mo.

Beantwortet zwar nicht die Frage nach der Kommandozeile, ist aber gleichzeitig eine Empfehlung für einen guten Übersetzungseditor ;)

Gausi 31. Jul 2018 13:46

AW: Mehrsprachig mit GNU Gettext
 
Zum Bearbeiten der .po-Dateien und .mo-Dateien nutze ich poedit, https://poedit.net/download. Damit klappt das recht gut. Was du mit "Rechtsklick -> Compile to mo" probierst, ist für die vorübersetzten Delphi-Strings gedacht.

Seit einiger Zeit habe ich auch das Problem, dass ich mit dem Explorer-Rechtsklick "Dekompile the mo-file to po-file" kein Ergebnis mehr bekomme. Ob das an Windows 10 liegt oder an irgendwas anderem, weiß ich nicht. Ich tippe auf irgendwelche Rechte-Probleme in der Explorer-Erweiterung.

Solange man aber aufpasst, dass man die alten po-Dateien mit den ganzen Übersetzungen drin nicht verliert, kann man auch immer weiter gut updaten, wenn in dem Projekt neue Strings dazu kommen. Dazu ein neues Template erstellen (default.po, das klappt noch über den Explorer), dieses umbenennen in default.pot, alte .po öffnen, das neue pot-Template dazuladen, die noch unübersetzten Strings übersetzen, speichern, fertig. Mo-Datei ist dann direkt da. Das betreffende Projekt darf dabei grade nicht laufen (also die exe), sonst gibt's ne Fehlermeldung.

Hab gestern Abend auch die neue Community-Edition ausprobiert, und konnte meinen Player (auch mehrsprachig) ohne größere Probleme kompilieren, und der Wechsel der Sprache funktioniert auch weiter.

haentschman 31. Jul 2018 13:49

AW: Mehrsprachig mit GNU Gettext
 
@TE:

Wenn du einfache und schnelle Ergebnisse willst...https://www.delphipraxis.net/146618-...swerkzeug.html

Auch Übersetzungen zur Laufzeit!!! :thumb: Auch mußt du keine Language Dateien mitliefern...alles einkompiliert. Editor für die Sprachen.

Hobbycoder 31. Jul 2018 16:20

AW: Mehrsprachig mit GNU Gettext
 
@Gausi: Wie / Wo legt man denn in Poedit die Sprache für den Quelltext fest? Ich find da nichts. Aus dem Projekt kann er's ja nicht lesen und in der PO-Datei habe ich nichts bezüglich der Sprache gefunden. Oder muss die PO-Datei erst in das Verzeichnis de-DE?

Hobbycoder 31. Jul 2018 16:43

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von haentschman (Beitrag 1409213)
@TE:

Wenn du einfache und schnelle Ergebnisse willst...https://www.delphipraxis.net/146618-...swerkzeug.html

Auch Übersetzungen zur Laufzeit!!! :thumb: Auch mußt du keine Language Dateien mitliefern...alles einkompiliert. Editor für die Sprachen.

Habe mir Lingus mal heruntergeladen. Ist ja wirklich simple.
Probiere das grad aus. In dem Abschnitt "Während der Laufzeit die Programmsprache ändern" heißt es
Zitat:

Wichtig ist dabei der anschließende Aufruf von Language.Translate(Self); in allen geöffneten Formularen, um die Änderung zu übernehmen.
Wirklich nur in alle geöffneten Formularen? Da Language.Translate(self) ja im OnFormCreate aufgerufen wird, müsste das dann nicht in alle erzeugten Formularen aufgerufen werden?

Ansonsten sieht das ja wirklich mal richtig simple aus. Gibt es vielleicht eine Extension, die automatisch Übersetzungen per Google-Translate ermöglicht?

himitsu 31. Jul 2018 16:48

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von Hobbycoder (Beitrag 1409233)
@Gausi: Wie / Wo legt man denn in Poedit die Sprache für den Quelltext fest?

Meinst jetzt Sprache auswählen, oder die Übersetzung in den Quelltext einbauen
Delphi-Quellcode:
_('xyz');
?

Im Prinzip nimmt man im Quelltext keine Sprache, aber ich mache sowas meistens in englisch.

Grundsätzlich ist GNU-gettext so, dass du für die Übersetzungen sprechende Bezeichner verwendest, die einmal als Template die Hauptsprache (englisch) besitzt.

GRUND: Es gibt für manche Dinge im Englischen das gleiche Wort, wofür es im deutschen unterschiedliche Wörter gibt.
Hast du das aber direkt als "englisch" angelegt, dann kannst du dafür keine unterschiedlichen deutschen Übersetzungen speichern.

Hobbycoder 31. Jul 2018 17:14

AW: Mehrsprachig mit GNU Gettext
 
Ich meine das festlegen der Ursprungssprache, die mittels DxGetText aus dem Projekt in die .po-Datei exportiert wurde.
Wenn ich die .po-Datei dann in Poedit öffne, steht über den Elementen "Quelltext - Englisch" und rechts daneben "Übersetzung - unbekannte Spracht".
Ich kann dann die Sprache festlegen, aber das bezieht sich auf die Übersetzung.

Meine vorhandenen Quelltext sind durchweg alle in Deutsch, von daher möchte ich natürlich von Deutsch -> Englisch übersetzen. Die Quellsprache müsste sich doch irgendwo festlegen lassen. Schließlich wäre das ein enormes Unterfangen überall im Source alles auf Englisch zu ändern.

Aber: ich habe mich mit Lingus etwas angefreundet. Klappt schon recht gut. Das übersetzen der Controls und Variablen geht ganz locker. Bei Konstanten will er aber noch nicht.
Auch die Eigenschaft "AutoHotkeys"=maAutomatic führt noch zu einer Fehlfunktion. Und der letzte Beitrag von Wicht zu diesem Thema stammt aus dem Jahre 2013. Wird da noch Programmpflege betriebe? Oder ist Lingus schon "Tot"?
Immerhin läuft es unter Tokyo problemlos, und ist zudem noch wirklich selbsterklärend.

Der schöne Günther 31. Jul 2018 18:24

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von Hobbycoder (Beitrag 1409238)
Ich meine das festlegen der Ursprungssprache, die mittels DxGetText aus dem Projekt in die .po-Datei exportiert wurde.
Wenn ich die .po-Datei dann in Poedit öffne, steht über den Elementen "Quelltext - Englisch" und rechts daneben "Übersetzung - unbekannte Spracht".
Ich kann dann die Sprache festlegen, aber das bezieht sich auf die Übersetzung.

https://stackoverflow.com/q/33648855/2298252

Rollo62 31. Jul 2018 19:19

AW: Mehrsprachig mit GNU Gettext
 
Da haben wir alle dasselbe Problem.

Ich hatte GetText auch benutzt, und den Editor etwas optimiert für mich.
Aber die pas Datei ist ziemlich wirr und recht fett, wenn es besser gepflegt wäre
Würde ich das womöglich weiter nutzen, aber das Risiko ist mir ein bisschen hoch.

Müsste man mal richtig ausmisten und modernisieren, aber was ist der Master und wem gehört das ganze?

dummzeuch 31. Jul 2018 20:56

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von Rollo62 (Beitrag 1409249)
Da haben wir alle dasselbe Problem.

Ich hatte GetText auch benutzt, und den Editor etwas optimiert für mich.
Aber die pas Datei ist ziemlich wirr und recht fett, wenn es besser gepflegt wäre
Würde ich das womöglich weiter nutzen, aber das Risiko ist mir ein bisschen hoch.

Müsste man mal richtig ausmisten und modernisieren, aber was ist der Master und wem gehört das ganze?

Tja, das ist eine gute Frage. Bis vor einiger Zeit hat Lars Dybdahl, von dem das dxgettext-Paket stammt, da noch aktiv mitentwickelt, allerdings habe ich von ihm schon länger nichts mehr gehört. Der dxgettext-Installer ist, wie schon diverse Leute geschrieben haben, ziemlich veraltet.

Es gibt außer mir auch noch andere mit Schreibzugriff auf das Sourceforge-Repository, aber auch da passiert wenig.

Seitens des Projekt Jedi, die vor Jahren ihre eigene Version der gnugettext.pas Unit abgespalten haben, finde ich seit einigen Monaten auch keinen Ansprechpartner mehr. Ich hatte versucht, die beiden Versionen wieder zu vereinigen, aber das scheiterte mangels Interesse auf der Jedi-Seite.

Kurzum: Ich halte das Projekt enigermaßen auf Sourceforge am Leben, indem ich Bugs fixe, wenn man mir welche meldet (glücklicherweise meistens gleich mit Patch), und ab und an Support für eine neue Delphi-Version einbaue. Aber so richtig Interesse habe ich nicht. Ich setze Gnugettext selbst auf der Arbeit für übersetzungen ein. Es funktioniert ganz gut.

Es gibt im Source übrigens mit Gorm auch einen recht guten Editor für PO-Dateien, den ich selbst einsetze.

twm

Rollo62 1. Aug 2018 08:36

AW: Mehrsprachig mit GNU Gettext
 
Ja Gorm war besser als PoEdit.
Den hatte ich für mich noch etwas optimiert, seinerzeit mit Google-Translate, etwas verbesserter UI und Sprachenmanagement, etc.
Aber es ist mir zu unsicher auf so einem System weiterzumachen was anscheinend nicht mehr gepflegt ist.

GetText auf anderen Platformen scheint aber gut gepflegt, und Stand der Dinge, deshalb verstehe ich die Situation bei Delphi nicht ganz.

Rollo

Sherlock 1. Aug 2018 09:30

AW: Mehrsprachig mit GNU Gettext
 
Die Situation bei Delphi ist simpel:
  • GetText ist eine Krücke, die elegant die Fähigkeiten von Delphi umgeht.
  • Es gibt einen eingebauten Übersetzer, und es gibt hervorragende Übersetzungstools die teilweise nicht viel kosten.
Natürlich wandern die Leute davon ab.

Sherlock

Der schöne Günther 1. Aug 2018 10:07

AW: Mehrsprachig mit GNU Gettext
 
DxGetText macht super transparent die Auflösung von
Delphi-Quellcode:
resourcestring
nach
Delphi-Quellcode:
String
. Wo ist das eine Krücke?

Und wo wandern Leute ab?

Headbucket 1. Aug 2018 10:12

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von Sherlock (Beitrag 1409304)
Die Situation bei Delphi ist simpel:
  • GetText ist eine Krücke, die elegant die Fähigkeiten von Delphi umgeht.
  • Es gibt einen eingebauten Übersetzer, und es gibt hervorragende Übersetzungstools die teilweise nicht viel kosten.
Natürlich wandern die Leute davon ab.

Sherlock

Ich weiß es bei GetText für Delphi sehr zu schätzen, dass der Eingriff in den Quellcode nahezu Null ist. Ich könnte aus meinen projekten 5 Zeilen Code entfernen und GetText wäre komplett entfernt. Als ich mich vor ein paar Jahren mit der Mehrsprachigkeit unter Delphi beschäftigt habe, hatte ich hier keine wirkliche Alternative für mich gefunden.

Ich bin auch aktuell noch sehr zufrieden mit GetText und verwende es in allen aktuellen Projekten. Wichtig für mich ist hierbei:
- Übersetzung muss von externen Personen ohne Delphi oder Programmierkenntnisse vorgenommen werden können
- Kunden können selbst Übersetzungen anpassen und sogar neue Sprachen hinzufügen
- Möglichst geringer Eingriff in Quellcode

All diese Dinge erfüllt GetText und ist dabei noch kostenlos.

Zitat:

Zitat von dummzeuch (Beitrag 1409260)
Kurzum: Ich halte das Projekt enigermaßen auf Sourceforge am Leben, indem ich Bugs fixe, wenn man mir welche meldet (glücklicherweise meistens gleich mit Patch), und ab und an Support für eine neue Delphi-Version einbaue. Aber so richtig Interesse habe ich nicht. Ich setze Gnugettext selbst auf der Arbeit für übersetzungen ein. Es funktioniert ganz gut.

Das weiß ich sehr zu schätzen! Vielen Dank dafür. Ich habe mir die aktuelle Version bei sourceforge mal angeschaut und mit meiner bisherigen Version verglichen. Da gab es ja doch allerhand Änderungen.

Viele Grüße
Headbucket

blondervolker 1. Aug 2018 10:52

AW: Mehrsprachig mit GNU Gettext
 
Hallo,

wenn es was KOSTEN darf: www.tsilang.de

Nutze ich auch. Schnelle Einarbeitung. Durchdacht ...:thumb:

Bbommel 1. Aug 2018 14:42

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von dummzeuch (Beitrag 1409260)
Kurzum: Ich halte das Projekt enigermaßen auf Sourceforge am Leben, indem ich Bugs fixe, wenn man mir welche meldet (glücklicherweise meistens gleich mit Patch), und ab und an Support für eine neue Delphi-Version einbaue. Aber so richtig Interesse habe ich nicht. Ich setze Gnugettext selbst auf der Arbeit für übersetzungen ein. Es funktioniert ganz gut.

An der Stelle übrigens auch an dich mal vielen Dank dafür, dass du die gnugettext.pas so halbwegs am Leben hältst. Zwar wäre es natürlich optimal, wenn sich irgendwer finden würde, der das Gesamtpaket noch mal richtig rund macht (die ganzen Tools, die dazu gehören und teilweise ja auf Cygwin o.ä. basieren), aber im Alltag haben wir dann doch alle anderes zu tun. Insofern ist es aller Ehren wert, dass es jemanden gibt, der sich um den "Kern" - also die gnugettext.pas - kümmert, diese immer recht zuverlässig an neue Delphi-Versionen anpasst (und somit z.B. lästige Warnungen beim Compilieren beseitigt) und hier und da Bugs korrigiert.

Danke!

Rollo62 1. Aug 2018 17:17

AW: Mehrsprachig mit GNU Gettext
 
Zitat:

Zitat von dummzeuch:
Ja dann ein herzliches Dankesehr auch von mir.
Ich hatte es in 4-5 Projekten eingesetzt, die teilweise immer noch Laufen.
Obwohl ich im Moment nicht mehr genau sagen kann welche Version von wo ich benutzt hatte, es war nach ersten Anlaufschwierigkeiten sehr stabil.

Ich finde GetText prinzipiell OK, und fände es gut wenn da mal wieder etwas Bewegung rein käme.

Auch die bereits vorhandenen Übersetzungsfiles der aktuellen Libraries, Tms, DevExpress, etc. waren seinerzeit ein großer Pluspunkt für mich.
Ich denke schon seit längerem das man eigentlich nur eine einmalige, OpenSource Übersetzung braucht um 90% der UI-Texte in Apps abzudecken, bei normalen Projekten und etwas diszipliniertem Einsatz der Texte.
Das hatte ich mal mit GetText als Basis vor, bin dann aber von Weg abgekommen :stupid:

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 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 by Thomas Breitkreuz