![]() |
ShortCuts in MenuItems übersetzen
Hallo zusammen,
meine Software kann zur Laufzeit von Deutsch auf Englisch umgeschaltet werden. Das funktioniert soweit ganz gut, bis auf die Shortcuts im Hauptmenu wie z.B. Kopieren Strg+C. Wie kann ich hier das Strg+C in Ctrl+C ändern? Lösungen wie das Patchen der Resource-Strings fallen raus, da die Umschaltung zur Laufzeit erfolgen soll. Dann habe ich das hier gefunden: ![]() Das kriege ich aber nicht zum Laufen. Mein Programm hängt sich dabei beim Start auf, und ich weiß nicht wo. Wie macht Ihr das denn? (D10.2) |
AW: ShortCuts in MenuItems übersetzen
Zitat:
|
AW: ShortCuts in MenuItems übersetzen
Für die Texte aus den Forms verwende ich den Korzh Localizer (
![]() Das Problem mit den Shortcuts in den Menüs ist aber, dass man da nicht ohne weiteres rankommt und dass Delphi einfach die Stringkonstanten aus Consts.pas da reinsetzt. Dazu gibt es in Vcl.Menus die Procedure ShortCutToText. Die müsste man überschreiben oder ersetzen können, um den Menüs eigene Bezeichungen der Shortcuts unterzujubeln. Dafür suche ich noch eine funktionierende Lösung. Wenn die Umschaltung nicht sofort, sondern erst beim nächsten Programmstart erfolgen würde, wäre auch kein Problem. Ich will nur nicht verschiedene Exen für verschiedene Sprachen vorhalten. |
AW: ShortCuts in MenuItems übersetzen
Zitat:
|
AW: ShortCuts in MenuItems übersetzen
Ich übersetze das so.
Da wo es dir passt deklarieren
Delphi-Quellcode:
TranslateShortCutText: TTranslateShortCutText;
Erzeugen
Delphi-Quellcode:
TranslateShortCutText := TTranslateShortCutText.Create(form);
Übersetzen
Delphi-Quellcode:
Freigeben
TranslateShortCutText.Key_Backspace := 'MyBackspace';
TranslateShortCutText.Key_Tabulator := 'Tab'; TranslateShortCutText.Key_Return := 'Enter'; TranslateShortCutText.Key_Escape := 'Esc'; TranslateShortCutText.Key_Space := 'Leertaste'; TranslateShortCutText.Key_Prior := 'BildAuf'; TranslateShortCutText.Key_Next := 'BildAb'; TranslateShortCutText.Key_End := 'Ende'; TranslateShortCutText.Key_Home := 'Home'; TranslateShortCutText.Key_Left := 'Links'; TranslateShortCutText.Key_Up := 'Oben'; TranslateShortCutText.Key_Right := 'Rechts'; TranslateShortCutText.Key_Down := 'Unten'; TranslateShortCutText.Key_Insert := 'Einfügen'; TranslateShortCutText.Key_Delete := 'Entfernen'; TranslateShortCutText.Key_Alt := 'Alt+'; TranslateShortCutText.Key_Ctrl := 'STRG+'; TranslateShortCutText.Key_Shift := 'Shift+'; TranslateShortCutText.RefreshMenuItems;
Delphi-Quellcode:
TranslateShortCutText.Free;
|
AW: ShortCuts in MenuItems übersetzen
Danke, jetzt habe ich sogar zwei Lösungen.
Bein Korzh Localizer kapiere ich allerdings nicht, wie ich die Systemunits damit übersetzen kann. Zitat:
![]() |
AW: ShortCuts in MenuItems übersetzen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: ShortCuts in MenuItems übersetzen
Die Vcl_Consts habe ich da nicht.
|
AW: ShortCuts in MenuItems übersetzen
Zitat:
|
AW: ShortCuts in MenuItems übersetzen
Zitat:
Code:
[Main]
PLOVersion=2 BaseLocale=1031 BaseEngName=German BaseLocName=Deutsch Edition=1 LangDir= ResUnitType=0 RSIDBase=-1000 MaxConstLen=32 TranslitMode=0 DRCConstProc=1 AddLocAPI=1 ProcessOnlyProjectUnits=1 AutoRemoveProperties=1 AutoRemoveResStrings=1 RebuildPrj=0 CompressLF=1 CreateNTV=0 AutoRefresh=0 MergeDupRS=0 LinkLangs=0 NoMapFile=0 IgnoreAsync=0 DumpDRC=0 ProcessFrc=0 ProcessFrf=0 FrfPath= ProcessRtm=0 RtmPath= UseLocrefresh=0 LocrefreshPath= LinkedLangs= ResUnitFileName=PrjConst.pas RSNamePrefix= RSPrefixWithUnitName=0 [PropRules] +.Caption +.Hint +.Header +.DisplayLabel +.ReportTitle +.Text +.Title.Caption +.Items.Strings +.Lines.Strings +.Hints.Strings +.EditLabel.Caption +.Values +.WideText [SubstProps] T*Field:FieldName-DisplayLabel TDBGrid.Columns[*]:FieldName-Title.Caption [ExcludeForms] [ExcludeRules] in FieldByName( application.title:= [ExcludeUnits] [AddUnits] |
AW: ShortCuts in MenuItems übersetzen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Besteht die Möglichkeit, die .ntv.lng Datei zu sehen? Muss ja auch nicht hier öffentlich sein. |
AW: ShortCuts in MenuItems übersetzen
Bei einem neuen Projekt sieht das bei mir auch so aus.
Das besagte Delphi-Projekt ist allerdings schon etwas älter. Und das Localizer-Projekt wurde ursprünglich mit einer früheren Version mal angelegt, war dann lange Zeit inaktiv und wurde kürzlich wieder reaktiviert. Vielleicht ist da ja entweder im Delphi-Projekt oder im Localizer-Projekt irgendwo eine Einstellung, die die Einbindung der System-Units verhindert. |
AW: ShortCuts in MenuItems übersetzen
Hast du mal ein Refresh language files versucht?
|
AW: ShortCuts in MenuItems übersetzen
Ja, das mache ich ständig ...
|
AW: ShortCuts in MenuItems übersetzen
Zitat:
|
AW: ShortCuts in MenuItems übersetzen
Macht nichts. Trotzdem danke.
Mein Ursprungsproblem löse ich jetzt mit diesem TTranslateShortCutText. Das reicht mir erst mal. |
AW: ShortCuts in MenuItems übersetzen
Der Vollständigkeit halber:
Nach einer Supportanfrage bei Korzh ist herausgekommen, das ich die Vcl_Consts und die anderen Systemunits nicht sehe, weil ich das Projekt mit Runtime Packages kompiliere. Die Ressourcen stecken dann in der bpl und da kommt der Localizer nicht dran. Aber wie gesagt: damit kann ich leben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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