Есть ли способ, чтобы получить локализованное описание ярлыка как Ctrl + Z так что я получаю «Ctrl + Z», если приложение работает на английской системе и "Strg + Z "по немецкой системе?Delphi: как локализовать описание для ярлыка меню?
Функция VCL ShortCutToText не интернационализирована. Функция API GetKeyNameText немного лучше, но все еще не идеальна: если вы переключаете региональные настройки немецкого XP на английский (США), он по-прежнему производит немецкие тексты. Кроме того, результаты находятся в CAPITALS, что является уродливым.
Уточнение: Я знаю, как я могу заменить строки ShortCutToText или Smkc * ресурсами с настраиваемыми версиями. Но для использования мне нужны переведенные строки. И я хотел бы получить их из ОС (или аналогичных).
Обновление: Похоже, Microsoft ожидает, что разработчики сделают перевод самостоятельно - см. 2. в Associating a Menu Item with an Accelerator Key. Цитата:
Например, чтобы назначить CTRL + O для команды Открыть в меню Файл, вы изменить заголовок пункта меню, так что это выглядит следующим образом:
Открыть \ tCtrl + O
Элемент меню в редакторе меню обновляется, чтобы отобразить новый заголовок по мере его ввода.
Обратите внимание, что ярлык вручную добавляется к заголовку.
Я считаю, что это означает, что созданные владельцем меню будут неправильно отображены в системах Delphi с неанглийскими клавиатурами, поскольку код в Menus.pas использует 'ShortCutToText'. На мой взгляд, это довольно хромает. –
@ Давид: Вот почему я спрашиваю: наши негерманские клиенты жалуются на Strg + Z и т. Д. В их меню. Они хотят хотя бы Ctrl + Z или, что еще лучше, - эквивалент на их родном языке. И это происходит даже с меню, не предназначенным для владельца (с D2007). –
Более того, если они просто прекратят использовать меню рисования владельца (с Vista вам не нужно рисовать владельца, чтобы получить глифы), тогда система просто разобралась. –