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