diff options
-rw-r--r-- | mkspecs/features/exclusive_builds.prf | 4 | ||||
-rw-r--r-- | mkspecs/features/lrelease.prf | 41 | ||||
-rw-r--r-- | mkspecs/features/qt_build_config.prf | 1 | ||||
-rw-r--r-- | qmake/doc/src/qmake-manual.qdoc | 57 |
4 files changed, 101 insertions, 2 deletions
diff --git a/mkspecs/features/exclusive_builds.prf b/mkspecs/features/exclusive_builds.prf index 2d7f0e1ab6..1ff9a04d42 100644 --- a/mkspecs/features/exclusive_builds.prf +++ b/mkspecs/features/exclusive_builds.prf @@ -38,5 +38,5 @@ defineTest(addExclusiveBuilds) { } # Default directories to process -QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR TRACEGEN_DIR QMLCACHE_DIR -QMAKE_DIR_REPLACE_SANE += QGLTF_DIR TRACEGEN_DIR QMLCACHE_DIR +QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR TRACEGEN_DIR QMLCACHE_DIR LRELEASE_DIR +QMAKE_DIR_REPLACE_SANE += QGLTF_DIR TRACEGEN_DIR QMLCACHE_DIR LRELEASE_DIR diff --git a/mkspecs/features/lrelease.prf b/mkspecs/features/lrelease.prf new file mode 100644 index 0000000000..1e828b64df --- /dev/null +++ b/mkspecs/features/lrelease.prf @@ -0,0 +1,41 @@ +# Automatically generate .qm files out of .ts files in TRANSLATIONS and +# EXTRA_TRANSLATIONS. +# +# If embed_translations is enabled, the generated .qm files are made available +# in the resource system under :/i18n/. +# +# Otherwise, the .qm files are available in the build directory in LRELEASE_DIR. +# They can also be automatically installed by setting QM_FILES_INSTALL_PATH. + +qtPrepareTool(QMAKE_LRELEASE, lrelease) + +isEmpty(LRELEASE_DIR): LRELEASE_DIR = .qm +isEmpty(QM_FILES_RESOURCE_PREFIX): QM_FILES_RESOURCE_PREFIX = i18n + +lrelease.name = lrelease +lrelease.input = TRANSLATIONS EXTRA_TRANSLATIONS +lrelease.output = $$LRELEASE_DIR/${QMAKE_FILE_IN_BASE}.qm +lrelease.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} $$QMAKE_LRELEASE_FLAGS -qm ${QMAKE_FILE_OUT} +silent: lrelease.commands = @echo lrelease ${QMAKE_FILE_IN} && $$lrelease.commands +lrelease.CONFIG = no_link +QMAKE_EXTRA_COMPILERS += lrelease + +all_translations = $$TRANSLATIONS $$EXTRA_TRANSLATIONS +for (translation, all_translations) { + # mirrors $$LRELEASE_DIR/${QMAKE_FILE_IN_BASE}.qm above + translation = $$basename(translation) + QM_FILES += $$OUT_PWD/$$LRELEASE_DIR/$$replace(translation, \\..*$, .qm) +} +embed_translations { + qmake_qm_files.files = $$QM_FILES + qmake_qm_files.base = $$OUT_PWD/$$LRELEASE_DIR + qmake_qm_files.prefix = $$QM_FILES_RESOURCE_PREFIX + RESOURCES += qmake_qm_files +} else { + !isEmpty(QM_FILES_INSTALL_PATH) { + qm_files.files = $$QM_FILES + qm_files.path = $$QM_FILES_INSTALL_PATH + INSTALLS += qm_files + } + lrelease.CONFIG += target_predeps no_clean +} diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf index 021036e4f9..0c6c10dded 100644 --- a/mkspecs/features/qt_build_config.prf +++ b/mkspecs/features/qt_build_config.prf @@ -27,6 +27,7 @@ RCC_DIR = .rcc UI_DIR = .uic TRACEGEN_DIR = .tracegen QMLCACHE_DIR = .qmlcache +LRELEASE_DIR = .qm intel_icl { # ICL 14.0 has a bug that makes it not find #includes in dirs starting with . MOC_DIR = tmp/moc diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index fa907ef57f..22c34adccd 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -977,6 +977,14 @@ By default, they are enabled. \row \li depend_includepath \li Appending the value of INCLUDEPATH to DEPENDPATH is enabled. Set by default. + \row \li lrelease \li Run \c lrelease for all files listed in + \l TRANSLATIONS and \l EXTRA_TRANSLATIONS. If \c embed_translations + is not set, install the generated .qm files into + QM_FILES_INSTALL_PATH. Use QMAKE_LRELEASE_FLAGS to add options to + the lrelease call. Not set by default. + \row \li embed_translations \li Embed the generated translations from + \c lrelease in the executable, under \l{QM_FILES_RESOURCE_PREFIX}. + Requires \c lrelease to be set, too. Not set by default. \endtable When you use the \c debug_and_release option (which is the default under @@ -1162,6 +1170,24 @@ Specifies where to copy the \l{#TARGET}{target} dll. + \target EXTRA_TRANSLATIONS + \section1 EXTRA_TRANSLATIONS + + Specifies a list of translation (.ts) files that contain + translations of the user interface text into non-native languages. + + In contrast to \l TRANSLATIONS, translation files in \c EXTRA_TRANSLATIONS + will be processed only by \l{Using lrelease}{lrelease}, not + \l{Using lupdate}{lupdate}. + + You can use \l{CONFIG}{CONFIG += lrelease} to automatically compile the + files during the build, and + \l{CONFIG}{CONFIG += lrelease embed_translations} to make them available in + \l{The Qt Resource System}. + + See the \l{Qt Linguist Manual} for more information about + internationalization (i18n) and localization (l10n) with Qt. + \target FORMS \section1 FORMS @@ -1432,6 +1458,21 @@ \note Do not attempt to overwrite the value of this variable. + \target QM_FILES_RESOURCE_PREFIX + \section1 QM_FILES_RESOURCE_PREFIX + + Specifies the directory in the resource system where \c .qm files will + be made available by \l{CONFIG}{CONFIG += embed_translations}. + + The default is \c{:/i18n/}. + + \target QM_FILES_INSTALL_PATH + \section1 QM_FILES_INSTALL_PATH + + Specifies the target directory \c .qm files generated by + \l{CONFIG}{CONFIG += lrelease} will be installed to. Does not have any + effect if \l{CONFIG}{CONFIG += embed_translations} is set. + \target QMAKE_systemvariable \section1 QMAKE @@ -2147,6 +2188,12 @@ value of this variable is typically handled by qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified. + \target QMAKE_LRELEASE_FLAGS + \section1 QMAKE_LRELEASE_FLAGS + + List of additional options passed to \l{Using lrelease}{lrelease} when + enabled through \l{CONFIG}{CONFIG += lrelease}. + \section1 QMAKE_OBJECTIVE_CFLAGS Specifies the Objective C/C++ compiler flags for building @@ -2624,11 +2671,21 @@ determine how the project is built, it is necessary to declare TEMPLATE on the command line rather than use the \c -t option. + \target TRANSLATIONS \section1 TRANSLATIONS Specifies a list of translation (.ts) files that contain translations of the user interface text into non-native languages. + Translation files in \c TRANSLATIONS will be processed by both + \l{Using lrelease}{lrelease} and \l{Using lupdate} tools. Use + \l EXTRA_TRANSLATIONS if you want only \c lrelease to process a file. + + You can use \l{CONFIG}{CONFIG += lrelease} to automatically compile the + files during the build, and + \l{CONFIG}{CONFIG += lrelease embed_translations} to make them available in + \l{The Qt Resource System}. + See the \l{Qt Linguist Manual} for more information about internationalization (i18n) and localization (l10n) with Qt. |