Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Mehrsprachige Anwendung: Ich kriegs nicht hin (https://www.delphipraxis.net/186747-mehrsprachige-anwendung-ich-kriegs-nicht-hin.html)

Uwe Raabe 30. Sep 2015 12:50

AW: Mehrsprachige Anwendung: Ich kriegs nicht hin
 
Zitat:

Zitat von nuclearping (Beitrag 1317304)
So wie das klingt gibt es dann für jede Sprache eine eigene Anwendung?

Ich weiß jetzt nicht genau, wie es Sisulizer macht, aber die anderen mir bekannten Übersetzungstools, die auf DFM (=Resource) und resourcestrings arbeiten, legen die Übersetzungen als separate Resource-DLLs neben die unübersetzte Exe. Wenn du mal in deinem Delphi-Bin-Ordner nachsiehst, wirst du dort unter anderem eine bds.exe und eine bds.de entdecken. Die DE-Datei enthält lediglich die übersetzten Teile.

Der Vorteil bei dieser Herangehensweise ist, daß die entsprechende Funktionalität bereits in der RTL implementiert ist. Damit muss kein zusätzlicher Code eincompiliert werden, der deine Anwendung in eine andere Sprache übersetzt. Du musst lediglich eine passende Resource-DLL dazulegen und die Sache ist geritzt. Tools zum Erstellen dieser DLLs gibt es mehrere. Es würde mich wundern, wenn nicht auch Sisulizer dafür zumindest eine Option hat.

rwalper 30. Sep 2015 14:10

AW: Mehrsprachige Anwendung: Ich kriegs nicht hin
 
Hi,

kurz mal meine Erfahrung mit den Resourcen-DLL's in VCL-Projekten:
Ändert man am Projekt etwas, muss man zwingend die Resourcen-DLL neu compilieren, wenn nicht, gibt es kuriose Schutzverletzungen. Das ist insbesondere beim Debuggen umständlich, wenn man z.B. einen Fehler sucht, der nur mit der Tschechischen Übersetzung auftritt.

Nach etlichen Jahren des Herumquälens mit Resourcen-DLL's (erst per ITE und später dann mit dem Localizer) sind wir bei GnuGetText (dxgettext) angekommen.
Endlich braucht man nicht immer alles neu zu compilieren. Und bei der fertigen Exe kann der Übersetzer jederzeit das Resultat seiner Änderungen sehen, ohne dass ich ihm eine neue Exe comipiliere.:thumb:

Zitat:

Zitat von Sherlock (Beitrag 1317309)
Und resourcestrings sind nunmal Standard.

Bleiben sie auch. Sie werden zur Laufzeit gegen die Übersetzung ausgetauscht.

Zitat:

Zitat von Sherlock (Beitrag 1317309)
Wenn man dann noch hier http://dxgettext.po.dk/Home liest, daß seit 2008 sich gerade mal gar nichts getan hat stiftet das wenig Vertrauen.

Schau mal: https://svn.code.sf.net/p/dxgettext/code/trunk

Einiges gibt es noch zu bemerken. Beim Betrachten der Quelltexte des Parsers für Resourcestrings war ich leicht schockiert. Aua, Bastelman und Söhne. Aber das Extrahieren und auch die Übersetzung im Programm funktioniert! Und es sind einige Tools zum Manipulieren der PO-Dateien dabei, wie z.B. Mergen von 2 PO-Dateien oder Übersetzen einer PO-Datei auf Basis einer anderen. So ist es auch relativ leicht, Übersetzungsrepositories zu erstellen und umgekehrt neue Projekte damit zu übersetzen. Daneben gibt es einige verschiedene PO-Editoren, die man ja nach Geschmack einsetzen kann.

Ohne die Forderung, dass der Vertriebspartner in anderen Ländern die Übersetzung mit einfachen Mitteln selbst anpassen können muss, wären wir vermutlich bei Resourcen-DLL's geblieben. Nach der Einarbeitung in gnugettext, der Überwindung einiger kleinerer Hürden und der Anpassung des Übesetzungs-Workflows bin ich jetzt schneller und flexibler (und auch zufriedener) als vorher.

Viele Grüße

nuclearping 30. Sep 2015 14:12

AW: Mehrsprachige Anwendung: Ich kriegs nicht hin
 
Zitat:

Zitat von Sherlock (Beitrag 1317309)
Wenn man dann noch hier http://dxgettext.po.dk/Home liest, daß seit 2008 sich gerade mal gar nichts getan hat stiftet das wenig Vertrauen.

So eine Lösung ist meiner Erfahrung nach auch nicht besonders wartungsintensiv. In unserer Localizer-Klasse haben wir auch schon seit Jahren nichts mehr ändern müssen.

Zitat:

Zitat von Sherlock (Beitrag 1317309)
Wie ist es eigentlich um die Wiederverwendbarkeit der Übersetzungen über Projektgrenzen hinaus bestellt? so wie sich mir das darstellt, sind die Übersetzungen dort projektbezogen.

Das ist im Prinzip egal. Die Kapselung in
Delphi-Quellcode:
_('...')
bzw. (bei uns)
Delphi-Quellcode:
L['...']
ist ein Dictionary und er sucht sich die dazu passende Übersetzunge aus der eingestellten Sprachdatei raus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.
Seite 2 von 2     12   

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