Вопрос локализации сочетаний клавиш в программах на Delphi является актуальным для разработчиков, стремящихся обеспечить удобство использования своих приложений пользователями со всего мира. В контексте обсуждения на форуме, пользователь MarkShark столкнулся с проблемой настройки локализованных сочетаний клавиш в компоненте TAction.SecondaryShortCuts в версии Delphi XE2. В его вопросе поднимается вопрос о том, будут ли сочетания клавиш, установленные для английского языка, работать в приложении, запущенном, например, в Германии.
Понимание TAction.SecondaryShortCuts
Компонент TAction в Delphi используется для управления действиями в пользовательском интерфейсе. Свойство SecondaryShortCuts позволяет хранить дополнительные сочетания клавиш для запуска действия, помимо основного сочетания, указанного в свойстве ShortCut. Эти сочетания клавиш представлены в виде строк в списке TStringList.
Локализация сочетаний клавиш
Сочетания клавиш хранятся в виде строк, и если инструмент локализации поддерживает работу с TStringList, то локализация сочетаний клавиш становится возможной. Важно понимать, что само значение, хранящееся в списке объектов Objects, используется для обработки сочетаний клавиш, а не текстовое представление этих сочетаний.
Пример локализации сочетаний клавиш
procedure TForm1.FormCreate(Sender: TObject);
var
Action: TAction;
begin
Action := TActionList.Create(self);
Action.Add(TAction.Create(nil, TActionType(atSave, False, False, 0, 0, 0, 'Ctrl+J', 'Save as...')));
Action.ActionList.SecondaryShortCuts.Add('Ctrl+Shift+S'); // Добавление локализованного сочетания
// Пример локализации для немецкого языка
// Предположим, что переведенные строки для сочетаний клавиш уже определены
Action.ActionList.SecondaryShortCuts.Items[1] := 'Strg+Umsch+S'; // Для немецкого языка
// Присваиваем компоненту TActionManager
ActionManager1.Actions := Action;
end;
Альтернативное решение
Если ваша система локализации не поддерживает работу с TStringList напрямую, вы можете использовать альтернативный подход, например, хранение локализованных сочетаний клавиш в ресурсах приложения, которые затем извлекаются и используются в зависимости от локали пользователя.
Заключение
Сочетания клавиш в Delphi не локализуются автоматически и требуют специального подхода. Важно правильно настроить свойства Objects в TCustomShortCutList и убедиться, что инструменты локализации поддерживают необходимый функционал. Тестирование приложения в разных локалях поможет убедиться в корректности работы сочетаний клавиш.
Вопрос касается настройки локализации сочетаний клавиш в компоненте `TAction.SecondaryShortCuts` в Delphi XE2, чтобы обеспечить корректную работу приложения в разных языковых версиях.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.