Programm Sprache hinzufügen...
-
Moin zusammen,
wenn ich mit dem C++ Builder ein Programm geschrieben habe und möchte zu der deutschen Version noch eine englische Oberfläche hinzufügen, wie macht Ihr das mit der Übersetzung. Kann man irgendwie alle Texte, die in den Formularen verwendet wurden extrahieren und in eine DLL packen? Oder muss ich das alles zu Fuß durch eine StringList machen?

VG Pixfreak
-
Hallo,
Es gibt da diverse Tools und bis zum BCB6 auch noch den Rsourcen dll wizard. Mich hat aber keines dieser Tools wirklich zufrieden gestellt.
Also mach ichs noch alles selber über eine StringRessource.
-
welche Standard Dialogboxen verwendest du damit die Buttens auch in der
Systemsprache dargestellt werden?....
Habe leider grade dass Problem, dass ich per TNT-Ware mein Programm auf Unicode umgestellt habe, um auch Japanische Zeichen darzustellen verarbeiten zu können.
Für die Standard Messageboxen habe ich deshalb WideMessageDlg (von TNTWare) verwendet.
Nun hat mich ein Engländer darauf hingewiesen das die Buttons alle in deutsch
dargestellt werden o.O.Jetzt nach durchsuchen des TNT Codes stellte ich fest das die für die Buttenbeschriftung die Daten aus der consts.pas verwendet und da ich die Deutsche Entwicklungsumgebung habe werden natürlich nur deutsche Texte angezeigt.
-
Hallo
Im schlimmsten Fall eben eine eigene MessageBox mit TNTControls nachprogrammieren und nur noch diese verwenden. Dann kannst du auch alle Buttons selber übersetzen.
bis bald
akari
-
Das ist leider die einzige vernünftige Lösung.
-
Ja scheint mir auch so...
-
Braunstein schrieb:
Hallo,
Es gibt da diverse Tools und bis zum BCB6 auch noch den Rsourcen dll wizard. Mich hat aber keines dieser Tools wirklich zufrieden gestellt.
Also mach ichs noch alles selber über eine StringRessource.Welche Tools, kannst Du da mal ein Vorschlag machen? In der Hilfe zum C++ 2007 ist auch noch von dem Recourcen-DLL Wizzard die Rede, aber der ist nicht da, kein Wunder, wenn er nur bis V6 dabei war, Grr...
Setzt Du dann in den OnCreate Ereignissen die entsprechenden Captions etc als StringResource? Das war zumindest meine Idee, ist aber nicht so toll, was das Design zur Laufzeit angeht...
VG Pixfreak
-
Ich setze alle unveränderlichen Strings im Konstruktor der jeweiligen Form mittels einer dort aufgerufenen Funktion. Alle anderen werden bei Bedarf aus der Stringresource geladen.
Diese Resource binde ich statisch über eine dll ein, so dass ich nur die ddls austauschen muß um die Sprache zu ändern. Ein Ändern zur Laufzeit ist nicht vorgesehen. Ich halte sowas auch für unsinnig.
[edit]
Tools:
http://www.multilizer.com/products/index.html
http://www.tsilang.de/
http://www.sisulizer.de/step1-scan.shtml
Die ersten beiden habe ich getestet. Haben mir aber beide nicht sonderlich gefallen. Dies ist allerdings schon 2/3 Jahre her. Vielleicht sind sie ja jetzt besser.
[edit]
-
Ehrlich gesagt hab ich die Mehrsprachenintegration in meiner Diplomarbeit wie Braunstein gelöst. Allerdings geh ich einen SChritt weiter. Ich lade die DLLs dynamisch.
Hab quasi bei allen DLLs den gleichen Aufbau der StringTables und EINE Funktion zum Ändern der Sprache. Die läd immer gleich. Das Einzige was da getauscht wird ist die geladene DLL hinterm Handle. Ne Funktion weist dann allen änderbaren Strings ne andre Sprache zu.
Tataaaa Sprachenwechsel zur Laufzeit.... In Farbe und buuuunt.
Was will ich denn mit den ganzen dappischen Tools... Plötzlich gibts keinen Support mehr. Und dann? Mal eben Software umstricken? NÄÄÄÄ DANKE. DLLs gibts immer unter Windoof.
Als Ress-Editor würd ich den XN Resource Editor nehmen. Der ist beim BDS auf der Zusatzscheibe, da keiner mehr in der Software ist. WEiss die Hölle warum CodeGear das so macht. *würgh*
-
Ich frage mich allerdings immer wozu ein Sprachenwechsel zur Laufzeit gut sein soll. Wechsle mal zur Laufzeit von Deutsch nach Finnisch. Wenn du die Sprache nicht gerade gut kennst oder dir die Lage aller Menüpunkte gemerkt hast, wird ein Rückwechsel schwierig.

Ich habe das schon selbst gesehen.
-
Ich habe das ganz anders gelöst:
Ich habe alle zu übersetztenden captions von Buttons, Labels, Checkboxes etc. in der Entwicklungsumgebung folgendermaßen betitelt:translate=help
translate=not_yet
translate=get_off
translate=Here_you_enter_your_name
und so weiter.Beim Form Create gehe ich alle Controls der Form durch und packe alle nötigen Captions in eine map.
Danach gehe ich alle Controls durch und überall wo links "translate=" ist, ersetze ich die gesamte Caption durch die entsprechende Übersetzung die ich auch in einer map gespeichert habe.Beim Sprachwechsel werden einfach alle captions wieder zurückgesetzt und das ganze neu gemacht.
Klingt vielleicht kompliziert, ist aber im Prinzip ganz einfach.
