Einzelnen Beitrag anzeigen

Warp

Registriert seit: 27. Mai 2006
45 Beiträge
 
Delphi XE4 Professional
 
#14

Re: ProjectLocalizer, MessageDlg Problem in Delphi2009

  Alt 21. Okt 2009, 18:19
Habe mich heute nochmal ein bischen mit der dwsLocalizer Unit beschäftigt, um der Ursache etwas näher zu kommen und habe eine "Lösung" (wenn man es denn so nennen kann...) für das Übersetzen der Dialoge gefunden.

In der dwsLocalizer wird in procedure TdwsLocalizerInt.RegisterNew_LoadResString das Laden der System-Resourcen Strings (System.LoadResString) auf eine dwsLocalizer interne Funktion NewLoadResString umgebogen. Hierüber werden wohl alle nicht direkt Komponenten bezogene Strings laufen, die nicht über die Übersetzungsprozedur TranslateComponent abgewickelt werden.

Die neue Prozedur NewLoadResString hat als Ergebnistyp AnsiString. Wenn diese nun auf Typ String abgeändert wird (String in D2009 = Unicode), funktioniert die Übersetzung der Dialoge (Caption, Message-Text, Button-Captions), soweit ich es jetzt getestet habe, fehlerfrei.


Delphi-Quellcode:
// replaces the System.LoadResString method during run-time
// this function will access the loaded resource file for translated resource strings
// if no translation is found, it will check the resources of the running application
function NewLoadResString(ResStringRec: PResStringRec): String; //20091021-HH, vorher :AnsiString
const
  MAX_ID = 65536;
var
  Buffer: array [0..4096] of Char;
  ResHdl, GlobalHdl, Size, LibHdl: Cardinal;
  ResItem: PWideChar;
  Res: WideString;
begin
Ob mit dieser Änderung noch irgendwelche verborgenen Nebenwirkungen verbunden sind, weiss ich (noch) nicht. Bis jetzt sieht es jedoch zumindestens in der Programmoberfläche nicht danach aus.

Gruss,

Warp
  Mit Zitat antworten Zitat