gpt4 book ai didi

qt - lupdate 没有从 QObject 对象获取 tr() 字符串

转载 作者:行者123 更新时间:2023-12-02 11:13:04 26 4
gpt4 key购买 nike

我一直在尝试使用 QT Creator 制作一个简单的文本编辑器。此文本编辑器具有可翻译的 UI,支持 3 种语言:英语、西类牙语和葡萄牙语。

我的问题是,每次运行lupdate时,代码中标记为可翻译(即包含在 tr() 中)的字符串文字都会被解析,并且可以使用 QLinguist 进行编辑和翻译。但是,属于 QObjects 一部分的字符串(例如 QFileDialog 的 ButtonText)不会被解析。为了让 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 添加翻译。

最佳答案

所有已编译的翻译文件 (*.qm) 应位于 /translations 目录中,您将按 QFileDialog localization 中所示加载它们。 .

不幸的是,Qt 库并未提供所有语言的所有翻译,而且并非所有提供的翻译都是完整的。

对于我的版本(Qt 5.2.1),库有西类牙语翻译(qt_es.qm),但还有许多字符串尚未翻译,并且有没有葡萄牙语的翻译文件(qt_pt.qm)。

将 Qt 翻译成其他语言是一个正在进行的项目,因此我建议您搜索网络和/或其他论坛,看看是否有人获得了可以使用的更新文件。

如果您找不到任何内容,并且您的西类牙语翻译缺少一些您需要的字符串,您可以将源代码提取文件 (*.ts) 归档到 /Src/qttranslations 中/translations 目录。不幸的是,您可能只能找到西类牙语版。

如果您愿意开始葡萄牙语翻译,您可以通过在 /Src/qtbase/qtbase.pro 上运行 lupdate 来提取所需的所有必要字符串。文件。

关于qt - lupdate 没有从 QObject 对象获取 tr() 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28951911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com