Problem mit Erzeugung einer Sprach DLL
-
Hallo,
ich will in einem neu gebiet einsteigen! Ich brauche mal eure Hilfe. Ich habe Fast alle Eintragungen in Forum, bezüglich dieses Themas gelesen, aber nicht richtiges gefunden.
Ich will mit Hilfe einer DLL alle Caption und Fehlermeldungen anderen. Umschaltung soll über einen Tastendruck passieren.
Ich habe versucht mit „Ressource-DLL Expert“ was zu machen. Da wurde Project.cpp Dateien eingefügt und Translation Manager gestartet. Da habe ich alle Wörter Übersetzt und gespeichert. Nun suche ich Hilfe für den nächsten Schritt.
Danke im Voraus.
S.Mathi
-
smathi schrieb:
Nun suche ich Hilfe für den nächsten Schritt.
Na dann schau halt in die Hilfe.
Abschnitt Translation Tools -> Localizing applications from the IDE -> Schritt 5 ff.
-
Hallo,
ich glaube, dass ich ein Stück weiter gekommen bin. ??. Kann es sein nach dem Kompilieren als Produkt statt dll eine "Project1.ENL" erzeugt wird?
weil ich schon alle einzelne Sprachprojekte kompiliert habe und immer noch keine DLL zu finden.
Gruß
S.Mathi
-
Hallo,
ich bin noch mal.Umschaltung der Sprache erfolgt,durch einen Reg Eintrag. Dies Erfordert neu start meiner Anwendung. Gibt es eine Möglichkeit dies umzugehen.
MFG
S.Mathi
-
Wie du mittlerweile bestimmt gesehen hast, bekommst du eine Projektgruppe mit einem Projekt, das deine EXE erstellt, und weiteren Projekten, die die Sprach-DLLs erstellen. Pro Sprache wird eine DLL erstellt, die anstatt .DLL als Erweiterung das Sprachkürzel bekommt.
Als Tipp hierbei noch: Wenn du die Sprach-DLLs anstatt .ENG (für England GB) nur .EN nennst, gilt diese Sprachdatei für alle Länder, die englisch sprachen, d.h. nicht nur für GB.Die Sprache kann man im laufenden Betrieb umschalten. Hierzu gibt es schon Hilfsfunktionen in einer Delphi-Datei namens reinit.pas, die beim BCB dabei ist.
Umschalten geht über:if ( LoadNewResourceModule( iUserLangID ) ) { //Fenster neu zeichnen ReinitializeForms(); }wobei iUserLangID die Sprache enthält.
-
Hallo Warp, vielen Danke,
es funktioniert.

MFG
S.Mathi
-
Hallo,
bei mir kann das Programm ins ReinitializeForms() reingehen. Aber dann kommt immer eine Exception
Project project.exe raised exception class EReadError with message ' '
, und das Program stopt immer bei folgende Code im Method InternalReloadComponentRes von Reinit.pas:
instance := AsInheritedReader.ReadRootComponent(Instance);
Hat jemand vielleicht das Problem schon mal gelöst?
Danke
Bin
-
Ich würde nicht eine DLL verwenden, sondern eine ini Datei oder lng (aber als Ini aufgebaut.
Warum? Der Vorteil ist, die Benutzer haben die möglichkeit das Programm selbst zuübersetzen (Caption's etc.). Somit mußt du nicht für jede Sprache eine neue DLL kompilieren. Und du kannst auch eine neue Sprache mitliefern, ohne eine neue DLL zuerzeugen und so...
-
Danke. Es ist ja auch ein Weg zu gehen.
Schade dass das Module von BCB nicht so richtig funktioniert.