【问题标题】:How do I start using QtLinguist to translate my QtCreator project?如何开始使用 QtLinguist 翻译我的 QtCreator 项目?
【发布时间】:2015-12-20 00:25:16
【问题描述】:

我有一个简单的.pro Qt Creator 项目。我在 Qt .ui XML 表单文件中拥有大部分(如果不是全部)我的应用程序文本。我想使用 Qt Linguist 翻译该项目中的文本,但我不知道如何开始。互联网上没有有用的“Qt Linguist 入门”文章。页面自豪地称自己为Qt Linguist Manual 也不是很有帮助,因为它只包含一般信息,而不是实用提示。

我在 Qt Creator 中找到了这些项目:

我不太确定如何使它们工作,以及它们与完全独立的应用程序 Qt Linguist 有什么关系。我打开了 Qt Linguist,它甚至不包含任何 File -> New... 项目菜单,这是我要开始的地方。

【问题讨论】:

    标签: qt qt-linguist


    【解决方案1】:

    一开始它需要相当多的工作,但后来一切都是自动的。

    源代码

    在您的源文件中,您必须将可翻译的字符串放入tr() 函数中。所有 QObject 派生类都有自己的tr() 函数。对于该类中的字符串,请使用该类的 tr 函数:所以而不是

    QString str ="string to be translated";
    

    使用

    QString str = MyClass::tr("string to be translated");
    

    如果类没有tr()函数使用

    QString str = QOject::tr("string to be translated");
    

    Qt 创建者

    在 Qt Creator 中,您转到 Tools/External/Configure... 并填写 lupdate 和 lrelease 的位置。您可以硬编码它们的位置或使用宏。这些实用程序位于 Qt 安装位置的 bin 子目录中。

    ts 文件

    假设您想从英语翻译成荷兰语。您将需要两个文件。我们将它们称为:myapp_en.tsmyapp_nl.ts。原则上您不需要包含英语 ts 文件,但它有助于将英语与另一种语言同等对待。

    项目文件

    添加到专业文件

    TRANSLATIONS+=  /path_to_/myapp_en.ts
    
    TRANSLATIONS+=  /path_to_/myapp_nl.ts
    

    首次 ts 文件

    第一次运行 lupdate 时会创建 ts 文件。

    实际翻译

    使用 Qt Linguist 打开 ts 文件。您可以设置此文件的一些属性。所有需要翻译的字符串现在应该在 ts 文件的 Qt Linguist 视图中可见。您可以插入翻译。并保存修改后的ts文件。

    更新 ts 文件

    只要您更改了源代码,就应该运行 lupdate。使用 Qt Linguist 添加任何新字符串的翻译,然后运行 ​​lupdate,然后运行 ​​lrelease。程序 lrelease 将文本文件转换为压缩的二进制文件(扩展名“qm”)。

    加载翻译

    现在唯一剩下的就是告诉您的应用程序加载特定的翻译(即加载特定的 qm 文件)。您可以使用带有excellent documentation 的 Qt 类 QTranslator 来执行此操作。

    【讨论】:

    • 您好,感谢您的回答。我有一个问题是 Qt Linguist 不会打开 empty 文件。它抱怨文件意外结束。这让我无法真正创建 Qt 翻译文件...
    • 好的,正确的做法是:不创建文件,将文件名写入.pro文件并运行lupdate
    【解决方案2】:

    将能够查看“.ts”文件选择任何单个文件右键单击它是否显示使用 qt4 语言学家打开文件的选项?

    如果没有查看,请转到属性/打开方式
    在最后会有一个reset按钮点击现在就可以看到了。

    如果不安装包“qt4-dev-tools - 下载qt linguist”

    维姬·夏尔马

    【讨论】:

    • 感谢有关 qt4-dev-tools 的提示。我有点绝望地寻找 QT-Linguist 没有成功。
    猜你喜欢
    • 1970-01-01
    • 2018-10-22
    • 2013-11-06
    • 1970-01-01
    • 2016-01-01
    • 2019-03-21
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多