在我当前的项目中,我们使用 Qt 及其翻译系统来使 GUI 本地化为多种语言。
我的主要问题是热键的翻译。
当用户打开主菜单时,他可以看到所有菜单项和与之关联的热键。此信息存储在 QAction 中。当我们更改语言(例如更改为阿拉伯语)时,用户可以看到已翻译的菜单项文本,并且其热键也将被翻译。但我不想翻译热键。
我对这个问题进行了一些研究,发现 QtDesigner 中快捷方式的标志“可翻译”。但是这个标志并没有帮助,因为只有当我们想要将此快捷方式添加到我们的翻译系统时才需要它,例如不同语言的相同操作的不同热键。
主要问题是 Qt 通过使用QKeySquence::toString()
. 但是这个方法会自动翻译“Ctrl”、“Del”、“Alt”等词,使用QShortcut上下文。并且所有 QShortcut 翻译都存储在qm
我们项目中包含的 Qt 中的默认文件中。
那么如何不翻译热键呢?