我一直在尝试使用QT Creator创建一个简单的文本编辑器。此文本编辑器具有可翻译的UI,支持3种语言:英语,西班牙语和葡萄牙语。
我的问题是,每次运行 lupdate 时,我的代码中被标记为可翻译(即包含在tr()中)的字符串文字都会被解析,并且可以使用QLinguist进行编辑和翻译。但是,作为QObjects的一部分的字符串(例如,QFileDialog的按钮文本未被解析。我是否缺少一些过程以便 lupdate 解析这些字符串?
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("Open Document")
将被解析,但QFileDialog具有QButton和QLabel对象,其中包含按钮文本和标签文本的字符串。这些对象不会被解析。我希望这些解析,以便我可以使用QLinguist添加翻译。
答案 0 :(得分:1)
所有已编译的翻译文件(* .qm)应位于/translations
目录中,您可以按QFileDialog localization所示加载它们。
不幸的是,Qt库没有附带所有语言的所有翻译,并且并非所有提供的翻译都是完整的。
对于我的版本(Qt 5.2.1),有一个西班牙语翻译(qt_es.qm
)的库,但有许多字符串尚未翻译,并且没有翻译文件葡萄牙语(qt_pt.qm
)。
将Qt翻译成其他语言是一个正在进行的项目,因此我建议您搜索网络和/或其他论坛,看看是否有人有可以使用的更新文件。
如果您找不到任何内容,并且您的西班牙语翻译缺少您需要的几个字符串,则可以在*.ts
目录中提交源提取文件(/Src/qttranslations/translations
)。不幸的是,您可能只会找到一个西班牙语。
如果您愿意开始使用葡萄牙语翻译,则可以通过在lupdate
文件上运行/Src/qtbase/qtbase.pro
来提取所需的所有必需字符串。