首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qaction翻译

qaction翻译
EN

Stack Overflow用户
提问于 2012-12-05 22:39:51
回答 1查看 148关注 0票数 0

我在翻译QActions时遇到了一些问题

在翻译文件中有FILETAB_*字符串的翻译

但在应用程序中,这些翻译不会被使用,用户可以看到

例如,FILETAB_OPEN_FILE。

有人能帮上忙吗?

代码语言:javascript
复制
void Application::setLanguage(const QString& locale)
{
    // remove previous
    if (current)
    {
        removeTranslator(current);
    }
    current_locale=locale;
    // install new

    current = translators.value(locale, 0);
    if (current)
    {
        installTranslator(current);
    }
}
void MainWindow::changeEvent(QEvent *event)
{
 if (event->type()==QEvent::LanguageChange)
 {
    retranslateUi(this);
 }
 QMainWindow::changeEvent(event);
}
void MainWindow::setupFileTabel()
{
    fileTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    fileTableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    setupFileTabelContextMenu();
}
void MainWindow::setupFileTabelContextMenu()
{
    fileTabMenu = new QMenu(fileTableWidget);
    openFile = new QAction(tr("FILETAB_OPEN_FILE"), fileTabMenu);
    QObject::connect(openFile, SIGNAL(triggered()), this, SLOT(OpenFileSelected()));
    fileTabMenu->addAction(openFile);
    openDir = new QAction(tr("FILETAB_OPEN_FOLDER"), this);
    QObject::connect(openDir, SIGNAL(triggered()), this, SLOT(OpenDirSelected()));
    fileTabMenu->addAction(openDir);
    fileTabMenu->addSeparator();
    priority = new QMenu(fileTabMenu);
    priority->setTitle(tr("FILETAB_PRIORITY"));
    lowPriority = new QAction(tr("FILETAB_PRIORITY_LOW"), fileTabMenu);
    lowPriority->setCheckable(true);
    QObject::connect(lowPriority, SIGNAL(triggered()), this, SLOT(setLowForCurrentFile()));
    priority->addAction(lowPriority);
    mediumPriority = new QAction(tr("FILETAB_PRIORITY_MEDIUM"), fileTabMenu);
    mediumPriority->setCheckable(true);
    QObject::connect(mediumPriority, SIGNAL(triggered()), this, SLOT(setMediumForCurrentFile()));
    priority->addAction(mediumPriority);
    highPriority = new QAction(tr("FILETAB_PRIORITY_HIGH"), fileTabMenu);
    highPriority->setCheckable(true);
    QObject::connect(highPriority, SIGNAL(triggered()), this, SLOT(setHighForCurrentFile()));
    priority->addAction(highPriority);
    fileTabMenu->addMenu(priority);
    fileTabMenu->addSeparator();
    dontDownload = new QAction(tr("FILETAB_PRIORITY_ZERO"), fileTabMenu);
    dontDownload->setCheckable(true);
    QObject::connect(dontDownload, SIGNAL(triggered()), this, SLOT(setNotDownloadForCurrentFile()));
    fileTabMenu->addAction(dontDownload);
}
EN

回答 1

Stack Overflow用户

发布于 2012-12-07 06:14:08

QAction的第一个参数不是操作的名称,而是将出现在该操作的菜单中的文本。tr()函数将传入的字符串标记为应该本地化的字符串。看一看这里的解释。

http://qt-project.org/doc/qt-4.8/internationalization.html#use-tr-for-all-literal-text

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13725638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档