Qt lupdate未从QObject对象获取tr()字符串
我一直在尝试使用QtCreator制作一个简单的文本编辑器。此文本编辑器具有支持3种语言的可翻译UI:英语、西班牙语和葡萄牙语 我的问题是,每次运行lupdate时,代码中标记为可翻译的字符串文本(即包含在tr()中)都会被解析,并且可以使用QLinguist进行编辑和翻译。但是,作为QObject的一部分的字符串(例如QFileDialog的ButtonText)不会被解析。我是否缺少一些过程来让lupdate解析这些字符串Qt lupdate未从QObject对象获取tr()字符串,qt,internationalization,Qt,Internationalization,我一直在尝试使用QtCreator制作一个简单的文本编辑器。此文本编辑器具有支持3种语言的可翻译UI:英语、西班牙语和葡萄牙语 我的问题是,每次运行lupdate时,代码中标记为可翻译的字符串文本(即包含在tr()中)都会被解析,并且可以使用QLinguist进行编辑和翻译。但是,作为QObject的一部分的字符串(例如QFileDialog的ButtonText)不会被解析。我是否缺少一些过程来让lupdate解析这些字符串 void PeterTextEditor::on_actionOpe
void PeterTextEditor::on_actionOpen_triggered()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Document"), QDir::currentPath(),
tr("Text documents (*.txt)"), 0, QFileDialog::DontUseNativeDialog);
if (fileName.isNull())
return;
if ( m_fileName.isNull() && !isWindowModified() )
{
loadFile(fileName);
return;
}
else
{
PeterTextEditor * openFile = new PeterTextEditor( fileName );
openFile->show();
openFile->setAttribute(Qt::WA_DeleteOnClose);
}
}
在上面的示例中,
tr(“打开的文档”)
将被解析,但QFileDialog有QButton和QLabel对象,其中包含按钮文本和标签文本的字符串。这些对象未被解析。我希望这些对象被解析,以便我可以使用QLinguist添加翻译。所有编译的翻译文件(*.qm)应该位于/translations
目录中,您可以按中所示加载它们
不幸的是,Qt库并没有提供所有语言的所有翻译,而且并非所有提供的翻译都是完整的
对于我所拥有的版本(Qt 5.2.1),有一个库的西班牙语翻译(Qt_es.qm
),但有许多字符串尚未翻译,并且没有葡萄牙语的翻译文件(Qt_pt.qm
)
将Qt翻译成其他语言是一个正在进行的项目,因此我建议您搜索web和/或其他论坛,看看是否有人获得了您可以使用的更新文件
如果找不到任何字符串,并且西班牙语翻译缺少所需的两个字符串,则可以将源代码提取文件(*.ts
)归档到/Src/qttranslations/translations
目录中。不幸的是,您可能只能找到一个西班牙语的源代码提取文件
如果您愿意开始葡萄牙语翻译,您可以通过在
/Src/qtbase/qtbase.pro
文件上运行lupdate
来提取所有需要的字符串。例如,您可以在对话框中找到OK按钮,并使用tr()显式地将其文本设置为“OK”macro.Justice…我看到了添加了这些按钮翻译的.ts文件。但是我不知道他们是如何让lupdate提取这些字符串的,因为QFileDialog是一个预先制作的QObject。好吧,也许这两个链接可能会有帮助:,好吧,这验证了我的逻辑。QFileDialog的实现确实有可翻译的字符串。我的专业版但是,问题是要从实现中提取这些字符串,以便我可以使用QLinguist为它们创建自定义翻译,因为包含的QT qm文件缺少一些翻译。可能是我的意思不明确。如果翻译文件是纯xml文件,可能您可以尝试手动添加这些缺少的项目?