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

Main.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