Это действительно проблема проектирования, а не алгоритмическая проблема. Оказывается, что большинство приложений не локализуют ускорители клавиатуры, в том числе большинство Microsoft, хотя на некоторых рынках есть некоторые исключения. Не каждое сочетание клавиш является мнемоникой; на самом деле, только некоторые из наиболее распространенных из них.
Я должен отметить, что эти выборы не для локализации ускорителей - довольно недавняя тенденция; до 2000 года или около того все еще было довольно распространенным образом локализовать ярлыки в некоторых продуктах (например, Ctrl-F для «Fett» вместо «жирный» в немецких и шведских продуктах). Но маятник качнулся в противоположном направлении, возможно, из-за MUI и подобных особенностей.
Несколько инструментов локализации помогут вам в этом; Я видел эту особенность как пункт о продукте, который я никогда не использовал под названием Visual Localize. Я не уверен, насколько полезно автоматическое назначение, так как довольно сложно автоматически определить, какой символ является лучшим мнемоническим представлением, без знания предметной области конкретного продукта.
Как правило, имеет смысл локализовать подчеркнутые мнемонические символы в диалогах и, возможно, в меню. Большинство сервисных фирм по локализации знакомы с этим процессом, и у некоторых есть инструменты для обнаружения дубликатов в любых ресурсах времени сборки, прежде чем возвращать локализованный пакет ресурсов. Возможно, вы захотите инвестировать в поиск или создание инструмента, который может выполнять эту повторную проверку во время выполнения, и запускать инструмент как часть критериев приемлемости.
Для обычных пунктов меню или последовательностей команд клавиатуры это может быть более запутанным, чем полезным, если у вас нет полностью настроенной функции настройки отображения клавиатуры на команду.