Ich habe folgendes Szenario: Prozesstechnische Exceptions haben über das Feld Message einen aussagekräftigen Text. Manchmal bekommt der Benutzer den auch zu sehen, manchmal wird der nur gelogged. Ganz simpel:
Delphi-Quellcode:
type
EDeviceException = class(System.SysUtils.Exception)
resourcestring
ovenBrokeDownAgainFmt = 'No cookies for you because the oven broke down for the %dth time';
implementation
procedure makeCookies();
begin
if oven.isMalfunctioning() then begin
Inc(malfunctioningTimes);
raise EDeviceException.CreateFmt(ovenBrokeDownAgainFmt, [malfunctioningTimes]);
end;
end;
end;
Das Problem: Wenn die Anwendung jetzt auf Mondsprache läuft steht in
ovenBrokeDownAgainFmt
natürlich etwas anderes drin (z.B. "あなたのためのクッキーをオーブンは%d 番目の時間のために決裂していないので、"). Das ist erst einmal gut wenn der Nutzer das auf dem Bildschirm zu sehen bekommt. Allerdings ist es ziemlich blöd wenn jemand aus dem Support sich Logs anschaut und dort steht unverständliche Fremdsprache.
Die
Exception wird durch einen eigene Prozedur für
Application.OnException
gelogged. Zu dem Zeitpunkt hat man nur noch sein
Exception-Objekt in welchem dieser String bereits fest eingebacken ist. Ich muss nun irgendwie "rückübersetzen".
Kann man, mit
dxGetText, irgendwie bewerkstelligen? Ich finde nichts.