首先,您必须.ts
使用已翻译的字符串创建文件。例如,如果我想为俄语语言环境创建翻译,我会这样做:
lupdate main.qml -ts your_project_ru_RU.ts
如果您有多个 QML 文件,您可以在.pro
文件中指定它:
lupdate_only {
SOURCES = main.qml \
foo.qml
}
所以写:
lupdate your_project.pro -ts your_project_ru_RU.ts
此命令将为俄语语言环境创建未翻译的文件,您必须使用 QT Linguist 打开该文件才能翻译。
您可以.ts
在 .pro 文件中指定文件:
TRANSLATIONS += your_project_ru_RU.ts
毕竟你必须编译文件(Qt Linguist 中的文件/编译)。那将创建your_project_ru_RU.qm
.
最后,您必须加载.qm
文件,例如main.cpp
:
QTranslator translator;
translator.load("your_project_" + QLocale::system().name());
app.installTranslator(&translator);
更新:
如果你需要一些类似的 Qt i18n 引擎,但不提供qm
文件:
foo.qml
import QtQuick 2.4
import QtQuick.Window 2.2
import "i18n.js" as I18n
Window {
Text {
text: I18n.myTr("text-id");
anchors.centerIn: parent
}
}
i18n.js
var texts = {
"text-id": "Hello, World!",
"another-text-id": "Goodbye, World!"
}
function myTr(textid) {
return texts[textid] ? texts[textid] : "";
}