![]() |
Standard-Exceptions lokalisieren
Ich stelle mich wahrscheinlich ziemlich dumm an- Dinge wie "So übersetzen auch Schimpansen ihre Borland-Anwendungen in 360 Sekunden" gibt es zuhauf.
Ich will nicht meinen eigenen Kram lokalisieren- Ich will verhindern dass in Feuerland-Mitte eine Exception die bis auf die Oberfläche durchbubbelt plötzlich "Achtung Schwitzen Sauerbrot!" steht: Keine deutschen Texte, Englisch. Ich finde partout nichts, wo ich das irgendwie anfassen könnte. Ich habe bei der Installation immer ein Häkchen für Deutsch und Englisch gesetzt aber das scheint mir momentan auch nicht weiterzuhelfen... |
AW: Standard-Exceptions lokalisieren
Sorge doch einfach dafür, das keine Exception bis an die Oberfläche kommt.
Die Holzhammermethode ist, per TApplication.OnException einfach alle Exceptions abzufangen. Die richtige (imho) Methode ist die, um jede Klasse bzw. System einen Exceptionwrapper zu legen. Das bedeutet in PseudoCode:
Delphi-Quellcode:
D.h. Du verbirgst die inneren Exception, indem Du sie behandelst, also z.B. den Grund auflöst und nochmal probierst. Das geht nur manchmal, denn wenn z.B. das Kennwort falsch ist, ist es falsch, da wird man nichts machen können. Aber wenn ein Deadlock aufgetreten ist, kann man z.B. kurz warten und es dann nochmal probieren usw. Falls Du die Exception nicht auflösen kannst, dann kapselst Du die ziemlich wirren Aussagen (EIdConnectionAbortException, EFooBarBlaFasel usw) und verpasst dann der EOuterException anständige teutonisch-anglistische Haikus. Oder ähnlich Seriöses.
Procedure TOuterClass.Method;
Var outerExceptionInfo : TOuterExceptionInfo; Begin Try InnerClass.AnotherMethod(); ... Except On E:EInnerException do begin outerExceptionInfo := HandleInnerException(E); raise EOuterException.Create(outerExceptionInfo); // alternativ: AnotherMethod nochmals aufrufen (falls das Sinn macht) End; On E:Exception do raise EFatalException.Create(E); End End; Ein wenig Aufwand, aber deinem Bestreben, ästhetisch ansprechende Software zu schreiben, durchaus zuträglich. |
AW: Standard-Exceptions lokalisieren
Wenn du deine Anwendung mit BPLs auslieferst, einfach die passenden EN Dateien dazu mitliefern. Wenn es sich um eine einzige Binary handelt, dann kannst du mit der BDSSetLang.exe (liegt im bin Verzeichnis deiner Delphi Installation) die Sprache der RTL umschalten.
Weitere Informationen findest du im ![]() |
AW: Standard-Exceptions lokalisieren
Schau mal unter
Code:
und dann noch unter
Tools/Optionen/Umgebungsoptionen/Delphi-Optionen/Bibliothek - Übersetzt
Code:
Stell dort einfach mal von DE auf EN um, dann hast du garantiert alles in Englisch ;)
Tools/Optionen/Umgebungsoptionen/Umgebungsvariablen -> LANGDIR
Deine eigenen Quellen kannst du auch in solchen Lang-Ordnern unterbringen
Code:
und auf die Verzeichnisse über .\ressources\$(LANGDIR) verweisen (Suchpfad in den Projekt-Einstellungen).
ressources
DE EN Doof ist, dass man diese LANGDIR Einstellungen nicht auf Projektebene einstellen kann ... wäre ja auch zu schön gewesen ... |
AW: Standard-Exceptions lokalisieren
Alle drei fühlen sich bitte herzlich gedrückt :love:
Die BDS-Umgebungsvariable $LANGDIR führt ebenso zu dem was ich wollte wie Benutzung der BDSSetLang.exe. Komischerweise ändert letztere die Umgebungsvariable nicht sondern wohl wieder etwas anderes, aber was solls. Zitat:
|
AW: Standard-Exceptions lokalisieren
Zitat:
|
AW: Standard-Exceptions lokalisieren
Ja, direkt über die WinAPI gehen hätte man das wohl nicht gehabt. Ich war so frei
Delphi-Quellcode:
zu nehmen, ich kannte nichts anderes. Und scheint das alles immer selbst über die VCL zusammenzubauen und fest aus
Vcl.Dialogs.MessageDlg(..)
Delphi-Quellcode:
eingebackene Strings zu nehmen.
Vcl.Consts
Und wer weiß wo noch mehr solche Fälle sind. Einfach auf Mondsprech umstellen und ich kann wieder ruhig schlafen. |
AW: Standard-Exceptions lokalisieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz