ShortCutToText использует массив MenuKeyCaps.Это не может быть изменено напрямую (потому что это в реализации модуля Menus), но массив заполнен resourcestrings , которые могут быть переведены с помощью различных инструментов перевода.
Вам необходимо перевестиконстанта строки ресурса SmkcCtrl, которая находится в consts.pas (в зависимости от вашей версии Delphi).
[edit]
Или вы можете загрузить BigProcHook.pas , который ясоздал тоже функции хуков и замени их на свои.Затем вы можете написать переопределение, которое вызывает обычную функцию ShortCutToText и заменяет текст «Ctrl» на «Strg» (или наоборот), даже если меню не знает об этом.Но я бы использовал это только в крайнем случае, потому что я думаю, что лучше просто перевести ресурс.Если вы хотите использовать хук, загрузите и включите модуль и добавьте следующий код в любой модуль (отдельный новый модуль, если хотите).
uses
BigProcHook, Menus;
var
FHook: TBigProcHook;
// The replacement function
function MyShortCutToText(ShortCut: TShortCut): string;
begin
FHook.Hooked := False;
try
Result := ShortCutToText(ShortCut);
Result := StringReplace(Result, 'Ctrl', 'Whatever', []);
finally
FHook.Hooked := True;
end;
end;
initialization
FHook := TBigProcHook.Create(@ShortCutToText, @MyShortCutToText);
finalization
FHook.Hooked := False;
FHook.Free;
end.
Он заменит Ctrl в тексте ярлыкас любым текстом, который вам нравится, без необходимости изменения любого другого кода.