![]() |
Delphi-Texte in Englisch ausgeben
Hallo zusammen,
ich verwende D5 in Deutsch. Ich bin gerade dabei, ein Programm zu schreiben, dass komplett in Englisch laufen soll. Insoweit kein Problem, nur werden MessageDlgs, ShortCuts, Exceptions etc. mit deutschsprachigen Texten versehen (zumindest zu 99 %). Gibt es irgendwo Delphi-interne Sprachdateien, wo die Übersetzungen drin stehen? Lustig: Möchte ich den Shortcut "Strg+Links" definieren, wird dieser so von Delphi nicht erkannt - anstatt dessen muss ich Strg+Left im Objektinspektor definieren. Bei "Strg+Rechts" meckert Delphi nicht. Genauso bescheuert steht es dann auch im Menü des fertigen Programms:
Code:
MfG
Indent right Strg+Rechts
Indent left Strg+Left Victor |
Re: Delphi-Texte in Englisch ausgeben
|
Re: Delphi-Texte in Englisch ausgeben
Folgendes ersteinmal zu den Meldungen.
ShowMessage() und MessageDlg() sind Delphi-Eigenkreationen und besitzen Deutsch-Sprachige Buttons, die hard-gecoded sind. Diese musst du also auf jeden Fall rauswerfen. Ein guter Kandidat für Multilinguale Anwendungen ist Application.MessageBox. Hier sind die Buttons (Ja, Nein, OK, Abbrechen, ...) in der Windows-Sprache angegeben, da eine Win32-API-Funktion benutzt wird. Die Delphi-Exceptions sind schon etwas schwieriger. Soweit ich das weiß sind einige Exceptions in Delphi in einer Unit ausgelagert. Dort sind sie alle deutschsprachig als resourcestrings gelistet. Du müsstest diese Delphi-RTL-Unit also verändern und neu compilieren. (Kann man das überhaupt?) Oder du veränderst bei deiner kompilierten Ziel-EXE die resourcenstrings mit einem Ressourceneditor, was jedoch aufwändig ist. Das richtig große Problem hast du mit deutschen Delphi-Exceptions, die Borland nicht in Ressourcen-Strings ausgelagert hat. Es ist also gut möglich, dass eine beliebige VCL-Unit von Delphi deutsche Exceptiontexte beinhaltet. Daher würde ich empfehlen a) Die exakten Ressourcentexte von einer englisch kompilierten EXE zu besorgen b) Besser: Die englischsprachige RTL zu besorgen c) Noch besser: Delphi auf irgend eine Art und Weiße auf Englisch zu besorgen, ggf. Turbo Delphi zum Kompilieren nutzen? Vielleicht reicht dir aber auch nur die Variante mit der MessageBox. Bei bekannten / erwarteten Exceptions sollst du natürlich diese Abfangen und behandeln bzw. im unbehandelbaren Fall den Benutzer mit einer selbstgeschriebenen Meldung konfrontieren. Und bei einer unerwarteten Exception, die ja meist einen Bug oder ein Ableben des Prozesses zum Vorschein bringt, muss sich der englischsprachige Endanwender ja nicht wie Zuhause fühlen :wink: Gruß blackdrake |
Re: Delphi-Texte in Englisch ausgeben
Kleines Update -
In Delphi Enterprise gibts einen Translation-Manager, den du verwenden kannst, sobald du eine Resourcen-DLL erstellt hast. Du erhälst am Ende dann zusätzlich eine Patch-Datei mit der Erweiterung DEU oder ENU (Englisch USA), die DLL-Daten enthält und deine EXE zur Laufzeit patched. Du kannst mit dem Translationmanager sowohl alle DFMs als auch alle resourcestrings verändern (auch die von Borland, die du sonst nicht ändern kannst!) Wichtig ist eben, dass du alle Meldungen nur mit Application.MessageBox ausgibst (Ja/Nein/OK... nach Windowssprache) sowie überall resourcestrings - vorzugsweise mit Zuhilfenahme von Format() verwendest. Da du mit dem Translationmanager auch die Borland resourcestrings ändern kannst, was normalerweise nicht ohne Recompilieren der RTL geht (wenn das überhaupt machbar ist), solltest du folgende Regel anwenden: Ist deine RTL/IDE auf Englisch, mach dein Projekt als Basissprache (EXE) auch Englisch und mache einen deutschen Patch (DEU). Ist deine RTL/IDE deutsch, dann lass dein Projekt als Basissprache (EXE) deutsch sein und mache einen englischen Patch (ENU/ENG). Denn dann kannst du auch solche Dinger wie "Division durch Null" übersetzen und es den internationalen Anwendern noch einfacher machen. Denn obwohl wenn diese Texte nicht aus deinem Projekt kommen, sind sie für den Endanwender ggf. auch mal sichtbar und sollten zur Verbesserung des Programms führen, sofern der Anwender sie lesen kann. PS: Dieser Translationmanager reagiert irgendwie seltsam, wenn man Events in den DFMs verändern will und man läuft beim manuellen Editieren in Gefahr, dass es Asynchron wird, vielleicht bin ich aber einfach auch nur unfähig, das Teil zu bedienen :roteyes: Gruß blackdrake |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:56 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