- Qt 6.9
- Qt Qml
- Qt Quick I18N
- Qt 6.9.3 Reference Documentation

CMake Global Variables

# 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

In the `Main.qml` file, use the `qsTr` command to mark UI text as translatable:

             Text {
                 text: qsTr("Hello")

#### Enabling Translation

In the `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_`. For example, `qml_en_AU.ts`.

#### Creating Translation Files

Add the `LinguistTools` module as a value of the `find_package` command in the `CMakeLists.txt` file:

     find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Qml LinguistTools)

Define the translation files to generate in the qt_add_translations command:

     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.

Note: 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. You can use Qt Linguist to translate the strings.

Example project @ code.qt.io