如何翻译快捷键
how to translate key shortcut
我不能强迫 QKeySequence::toString()
到 return 翻译的快捷方式表示,尽管它的文档表明它应该工作。文档说:“字符串、“Ctrl”、“Shift”等在“QShortcut”上下文中使用 QObject::tr() 进行翻译。但我不完全确定快捷上下文是什么意思。我可能做错了什么...
这是我的例子。为了让它工作,我需要将 qtbase_es.qm
从 Qt 安装目录复制到我的项目构建目录。正确加载翻译后,菜单中的操作会正确显示“Action Control+Intro”,这是“Action Ctrl+Enter”快捷方式的西班牙语翻译。但是主要 window 上的工具提示仍然是“操作 (Ctrl+Enter)”。我希望它是“Action (Control+Intro)”,就像在菜单中一样。我做错了什么?
#include <QAction>
#include <QApplication>
#include <QDebug>
#include <QMainWindow>
#include <QMenuBar>
#include <QTranslator>
int main(int argc, char *argv[])
{
QTranslator spanish;
qDebug() << spanish.load("qtbase_es.qm"); // should return true if correctly loaded
QApplication a(argc, argv);
QApplication::installTranslator(&spanish);
QMainWindow w;
auto menu = new QMenu("Menu");
auto action = menu->addAction("Action");
action->setShortcutContext(Qt::ApplicationShortcut);
action->setShortcut(Qt::CTRL | Qt::Key_Enter);
w.menuBar()->addMenu(menu);
w.show();
QApplication::processEvents(); // I also tried this line but it is useless...
w.setToolTip(QString("%1 (%2)").arg(action->text(), action->shortcut().toString()));
qDebug() << action->shortcut().toString(); // WRONG: returns Ctrl+Enter but I expect Control+Intro
return a.exec();
}
QShortcut::toString
有一个SequenceFormat
参数,默认为ProtableText
。该格式的文档指出,可移植格式适用于例如写入文件。
本机格式用于向用户显示,只有此格式执行翻译。
尝试:
qDebug() << action->shortcut().toString(QKeySequence::NativeText);
我不能强迫 QKeySequence::toString()
到 return 翻译的快捷方式表示,尽管它的文档表明它应该工作。文档说:“字符串、“Ctrl”、“Shift”等在“QShortcut”上下文中使用 QObject::tr() 进行翻译。但我不完全确定快捷上下文是什么意思。我可能做错了什么...
这是我的例子。为了让它工作,我需要将 qtbase_es.qm
从 Qt 安装目录复制到我的项目构建目录。正确加载翻译后,菜单中的操作会正确显示“Action Control+Intro”,这是“Action Ctrl+Enter”快捷方式的西班牙语翻译。但是主要 window 上的工具提示仍然是“操作 (Ctrl+Enter)”。我希望它是“Action (Control+Intro)”,就像在菜单中一样。我做错了什么?
#include <QAction>
#include <QApplication>
#include <QDebug>
#include <QMainWindow>
#include <QMenuBar>
#include <QTranslator>
int main(int argc, char *argv[])
{
QTranslator spanish;
qDebug() << spanish.load("qtbase_es.qm"); // should return true if correctly loaded
QApplication a(argc, argv);
QApplication::installTranslator(&spanish);
QMainWindow w;
auto menu = new QMenu("Menu");
auto action = menu->addAction("Action");
action->setShortcutContext(Qt::ApplicationShortcut);
action->setShortcut(Qt::CTRL | Qt::Key_Enter);
w.menuBar()->addMenu(menu);
w.show();
QApplication::processEvents(); // I also tried this line but it is useless...
w.setToolTip(QString("%1 (%2)").arg(action->text(), action->shortcut().toString()));
qDebug() << action->shortcut().toString(); // WRONG: returns Ctrl+Enter but I expect Control+Intro
return a.exec();
}
QShortcut::toString
有一个SequenceFormat
参数,默认为ProtableText
。该格式的文档指出,可移植格式适用于例如写入文件。
本机格式用于向用户显示,只有此格式执行翻译。
尝试:
qDebug() << action->shortcut().toString(QKeySequence::NativeText);