Qt Quick I18N

Generating translation files (TS and QM) for a Qt Quick application.

When you run the example application, the QML runtime automatically loads a translation from the i18n subdirectory of the directory that contains the main .qml file, based on the system language.

Marking Text as Translatable

qml-i18n.qml file, use the qsTr command to mark UI text as translatable:

        Text {
            text: qsTr("Hello")
					

启用翻译

main.cpp file, use QQmlApplicationEngine to automatically load translation files from a subdirectory called i18n in the directory that contains the main QML file:

#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
					

The translation file names in the i18n subdirectory must have the prefix qml_ 。例如, qml_en_AU.ts .

创建翻译文件

添加 LinguistTools module as a value of the find_package command in the CMakeLists.txt 文件:

find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Qml LinguistTools)
					

Define the translation files to generate in the qt_add_translations 命令:

qt_add_translations(qmli18n
    RESOURCE_PREFIX /qt/qml/translated/i18n
    TS_FILE_BASE qml
    TS_FILE_DIR i18n
)
					

Build the application to generate TS and QM files.

注意: On Android, make sure to include the QM files as resources.

Adding Translations

To create translations for new languages, copy i18n/base.ts to i18n/qml_<lang>.ts 。可以使用 Qt Linguist to translate the strings.

范例工程 @ code.qt.io