一开始它需要相当多的工作,但后来它都是自动的。
源代码
在您的源文件中,您必须将可翻译的字符串放入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.ts
和myapp_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 文件)。您可以使用具有出色文档的 Qt 类 QTranslator 来完成此操作。