私の現在のプロジェクトでは、GUI を多くの言語にローカライズするために Qt とその翻訳システムを使用しています。
私の主な問題は、ホット キーの翻訳です。
ユーザーがメイン メニューを開くと、すべてのメニュー項目とそれに関連付けられているホット キーが表示されます。この情報は QAction 内に保存されます。言語を (アラビア語などに) 変更すると、翻訳されたメニュー項目のテキストが表示され、そのホット キーも翻訳されます。しかし、ホットキーを翻訳したくありません。
この問題について調査したところ、QtDesigner のショートカットのフラグが「翻訳可能」であることがわかりました。しかし、このフラグは、このショートカットを翻訳システムに追加する場合にのみ必要なため、役に立ちませんでした。たとえば、異なる言語で同じアクションの異なるホット キーを使用する場合などです。
その主な問題は、Qt が を使用して任意のホット キーの文字列を取得することQKeySquence::toString()
です。しかし、このメソッドは、QShortcut コンテキストを使用して、「Ctrl」、「Del」、「Alt」などの単語を自動的に変換します。また、すべての QShortcut の翻訳はqm
、プロジェクトに含めた Qt のデフォルト ファイルに保存されます。
では、ホットキーを翻訳しない方法は?