Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

dxGetText: Exceptions zu lokalisieren war ein Fehler, oder?

  Alt 15. Mär 2016, 10:19
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.
  Mit Zitat antworten Zitat