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 Translation Manager (https://www.delphipraxis.net/127873-translation-manager.html)

Cogito 20. Jan 2009 16:02


Translation Manager
 
Hallo zusammen,

kann mir mal jemand sagen wie ich die Mehrsprachigkeit mit diesem Translation Manager in delphi hinbekomme? Überall lese ich immer nur Fragmenterklärungen und das dauernde rumfummeln bringts irgendwie auch nicht so richtig..
Am besten wäre so eine richtige Schritt für Schritt Erklärung, oder ein Hinweis auf eine gute dokumentation.

P.S. Achja, Ziel sollte sein die Sprachen zur Laufzeit per Optionen-Dialog umschalten zu können.

Sherlock 20. Jan 2009 16:03

Re: Translation Manager
 
Welchen Translation Manager meinst Du?

:gruebel:

Sherlock

Cogito 20. Jan 2009 16:04

Re: Translation Manager
 
Zitat:

Zitat von Sherlock
Welchen Translation Manager meinst Du?

:gruebel:

Sherlock

Na den der bei Delphi dabei ist.

nuclearping 21. Jan 2009 12:24

Re: Translation Manager
 
Hab mir den damals auch angeschaut und als unbrauchbar abgestempelt.

Sind dann auf eine eigene Lösung mit Sprach-DLLs aus Resource-Dateien umgestiegen.

Cogito 21. Jan 2009 14:08

Re: Translation Manager
 
Zitat:

Zitat von nuclearping
Hab mir den damals auch angeschaut und als unbrauchbar abgestempelt.

Sind dann auf eine eigene Lösung mit Sprach-DLLs aus Resource-Dateien umgestiegen.

kannst Du mir mal erklären wie Ihr das gelöst habt (vielleicht mit Beispiel)?

nuclearping 21. Jan 2009 14:55

Re: Translation Manager
 
Du erstellst eine .rc-Datei (Notepad, ...), in der du eine Stringliste abbildest.
Code:
STRINGTABLE {
   // LID_ABOUT
   1, "Software Name\nCopyright ..."
   // LID_ABOUT_TECHNOLOGIES
   2, "Verwendete Technologien"
   ...
   // LID_SOME_OTHER_TEXT
   12345, "Testtext %s %d\n"
}
Die Datei jagst du durch den Borland Resource Compiler (BRCC32) und er erstellt dir daraus eine .res. Diese .res linkst du in ein library-Projekt. Das ist dann die Sprach-DLL, zB wird aus german.dpr dann german.dll.

Dazu hab ich mir ein Tool geschrieben, was durch diese Dateien parsed, mir die Einträge nach LIDs sortiert und aus den LID_...-Kommentaren eine LanguageIds.pas erstellt, die diese als CONSTs hinterlegt hat.
Delphi-Quellcode:
unit LanguageIds;

interface

const
   LID_ABOUT = 1;
   LID_ABOUT_TECHNOLOGIES = 2;
   ...
   LID_SOME_OTHER_TEXT = 12345;
   ...
implementation
end.
Dazu eine Klasse, die die entsprechende DLL per LoadLibrary lädt und mir durch eine Funktion "GetString" die entsprechende LID aus der DLL als String lädt und zurückliefert.
Delphi-Quellcode:
// ...
MessageDlg (Language.GetString (LID_ABOUT), ...);
Dazu kam noch ein tabellenähnliches Übersetzungstool, wo man eine Basissprache (zB Deutsch) links in der ersten Spalte hat und beliebig viele Sprachen rechts hinzufügen und recht komfortabel bearbeiten kann.

Das Borland Teil war uns zu kompliziert und unflexibel, vorallem wenn man Übersetzer hat, die 1) im Ausland sind und 2) sonst - ausser Texte schreiben - nicht viel mit Computern am Hut haben.

Fahren mit der Lösung schon einige Jahre ziemlich gut. Bisher keine Probleme gehabt.

Cogito 21. Jan 2009 15:02

Re: Translation Manager
 
Klingt gut aber auch nach ner menge Aufwand, den man erst mal investieren muss. Dafür hab ich leider keine Zeit...
Gibts denn keine low cost übersetzungswerkzeuge die was taugen?

nuclearping 21. Jan 2009 15:05

Re: Translation Manager
 
Aufwand hast du überall. Ob es nun der ist, sich in ein neues System reinzuarbeiten - wo du vorher auch nicht weißt, obs am Ende was taugt und auch Zukunftssicher ist. Oder ob du etwas eigenes entwickelst. Und die Basis-Sprache mußt du so oder so erstellen.

Was wärst du / ihr denn bereit auszugeben?

Tante Edith meint: Die "Low Cost"-Übersetzungswerkzeuge, die ich mir damals angeschaut hab, haben mich nicht überzeugt.

Klaus01 21. Jan 2009 15:18

Re: Translation Manager
 
Hallo,

vielleicht ist ja GNU gettext etwas für Dich?
Oder schau Dir das Tool von Daniel (sakura) mal an.

Grüße
Klaus

Cogito 25. Jan 2009 10:42

Re: Translation Manager
 
Zitat:

Zitat von Klaus01
Hallo,

vielleicht ist ja GNU gettext etwas für Dich?
Oder schau Dir das Tool von Daniel (sakura) mal an.

Grüße
Klaus

Also letztere von Dir vorgeschlagenen Lösung hat den Nachteil, das hier die fertige EXE Applikation angefasst wird, zur Entwurfszeit steht hier nichts zur Verfügung. Ausserdem kann ich nicht erkennen, wie hier zur Laufzeit die Möglichkeit eines Sprachwechsels gewährleistet ist.
Ich glaube hier kommt man um Eigentwicklung wohl nicht herum...

Die Muhkuh 25. Jan 2009 11:14

Re: Translation Manager
 
GNU GetText ist auf jeden Fall einen Blick wert, solltest Du auch den wenigstens Aufwand damit haben.

Cogito 25. Jan 2009 14:06

Re: Translation Manager
 
Wo bekomme ich denn dieses PoEdit her?

P.S. Hab ich das richtig gesehen, es wird automatisch diejenige Übersetzungsdatei genommen, die den Windows-Systemeinstellungen entspricht?

mkinzler 25. Jan 2009 14:08

Re: Translation Manager
 
http://www.poedit.net/download.php

Cogito 25. Jan 2009 14:25

Re: Translation Manager
 
Zitat:

Zitat von mkinzler
http://www.poedit.net/download.php

Danke!

Was mir bei diesen Tools auffällt, die haben alle irgendwie Probleme sobald man eigene Toolboxen oder keine der üblichen Standardkomponenten verwendet. Besser wäre hier meines Erachtens kein parsing der Komponenten sondern sowas wie eine externe dll in die man alles was übersetzt werden soll reinpacken kann. So kenn ich das von .NET her, nur ist bei Delphi (zumindest 2006) kein Resourceneditor dabei und auch nicht ins Projekt sauber einbindbar. Irgendwie hat Borland was gegen Resourcen. Diesen internen Translator kann man auch vergessen...
Das darf doch echt nicht wahr sein das Borland für die Internationalisierung nichts anzubieten hat !!!

mkinzler 25. Jan 2009 14:36

Re: Translation Manager
 
Schau dir mal http://theunknownones.net/products/resed.html an

Cogito 25. Jan 2009 15:21

Re: Translation Manager
 
Zitat:

Zitat von mkinzler

Nee also echt, keine vernünftige Übersetzung bei Delphi in Sicht. Dieser interne Translation Kram funktioniert bei mir auch nicht richtig. Was soll eigentlich dieser Punkt unter "Ansicht|Translation Manager|Übersetzungseditor"? Da geht bei mir immer ein leeres Fenster auf indem ich keinerlei Aktionen vornehmen kann. Desweiteren wird mir nicht klar, wie ich auch Stringnachrichten, also z.B. Fehlermeldungen, internationalisieren kann. Alles ist irgendwie immer nur an die Controls gebunden. Wie synchronisieren sich eigentlich die verschiedenen ressourcen-dll's, wenn ich in der Originaldatei neue Elemente hinzufüge? Die werden bei mir einfach ignoriert. Nix scheint hier richtig zu funktionieren, dabei müsste sich doch gerade hierin eine vernünftige IDE auszeichnen.
Ich glaub ich verlasse Delphi wieder und geh lieber wieder zu .NET!

Cogito 25. Jan 2009 15:32

Re: Translation Manager
 
Zitat:

Zitat von nuclearping
Tante Edith meint: Die "Low Cost"-Übersetzungswerkzeuge, die ich mir damals angeschaut hab, haben mich nicht überzeugt.

Kann mich inzwischen deiner Meinung leider nur anschliessen. Es ist für mich doch sehr verwunderlich wie stiefmütterlich Borland/Codegear dieses Thema behandelt. Auch scheint mir dieses ganze Konzept mit Ressource-Files nicht wirklich in die IDE mit eingearbeitet zu sein.

DXler 25. Mär 2009 09:36

Re: Translation Manager
 
Für Anwendungen die mehrsprachig sein sollen gibt es das "Simple Language System" (kurz SLS). Zu finden ist es hier.

Eine Demo und eine Anleitung ist im Archiv enthalten!

psycodad 27. Aug 2009 11:44

Re: Translation Manager
 
Zitat:

Zitat von Cogito
Zitat:

Zitat von mkinzler

Nee also echt, keine vernünftige Übersetzung bei Delphi in Sicht. Dieser interne Translation Kram funktioniert bei mir auch nicht richtig. Was soll eigentlich dieser Punkt unter "Ansicht|Translation Manager|Übersetzungseditor"? Da geht bei mir immer ein leeres Fenster auf indem ich keinerlei Aktionen vornehmen kann. Desweiteren wird mir nicht klar, wie ich auch Stringnachrichten, also z.B. Fehlermeldungen, internationalisieren kann. Alles ist irgendwie immer nur an die Controls gebunden. Wie synchronisieren sich eigentlich die verschiedenen ressourcen-dll's, wenn ich in der Originaldatei neue Elemente hinzufüge? Die werden bei mir einfach ignoriert. Nix scheint hier richtig zu funktionieren, dabei müsste sich doch gerade hierin eine vernünftige IDE auszeichnen.
Ich glaub ich verlasse Delphi wieder und geh lieber wieder zu .NET!


Das funktioniert eigentlich super. Ev. hast du nicht ganz gecheckt, wie das läuft? Mit dem Translation - Assistent generiert man für jede Sprache ein Ressourcen-Projekt. Diese Ressourcen-Projekte sind in der Projekt-Baumansicht unterhalb deines Projekts ersichtlich. Mit einem Doppleklick auf eine Form in dem entsprechenden Ressource-Projekt öffnet sich der Übersetzungseditor, wo man einfach die Strings übersetzen kann. Sobald an deinem Projekt was ändert, z.B. neue Forms usw. hinzugefügt werden , Kann mann mit dem Translation-Assistent die verschiedenen Ressourcen-Projekte aktualisieren lassen.

Einfacher gehts nun wirklich nicht.

Ralf Kaiser 27. Aug 2009 12:34

Re: Translation Manager
 
Zitat:

Zitat von Cogito
P.S. Hab ich das richtig gesehen, es wird automatisch diejenige Übersetzungsdatei genommen, die den Windows-Systemeinstellungen entspricht?

Nicht unbedingt (nur wenn man selbst nicht eingreift) Es gab da gerade einen Thread dazu hier in der DP.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 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