QML Internationalization

Strings in QML can be marked for translation using the qsTr(), qsTranslate(), QT_TR_NOOP(), and QT_TRANSLATE_NOOP() functions.

For example:

Text { text: qsTr("Pictures") }

These functions are standard QtScript functions; for more details see QScriptEngine::installTranslatorFunctions().

QML relies on the core internationalization capabilities provided by Qt. These capabilities are described more fully in:

  • Internationalization with Qt
  • Qt Linguist Manual

You can test a translation with the QML Viewer using the -translation option.

Example

First we create a simple QML file with text to be translated. The string that needs to be translated is enclosed in a call to qsTr().

hello.qml:

import QtQuick 1.0

Rectangle {
    width: 200; height: 200
    Text { text: qsTr("Hello"); anchors.centerIn: parent }
}

Next we create a translation source file using lupdate:

lupdate hello.qml -ts hello.ts

Then we open hello.ts in Linguist, provide a translation and create the release file hello.qm.

Finally, we can test the translation:

qmlviewer -translation hello.qm hello.qml

You can see a complete example and source code in the QML Internationalization example.