qmake: Add support for running lrelease
CONFIG+=lrelease enables that all .ts files in TRANSLATIONS or EXTRA_TRANSLATIONS are compiled by lrelease. EXTRA_TRANSLATIONS is a new variable that is only processed by lrelease, but not lupdate - this is useful for translation files that are supposed to be empty, because they match the language of the original translation sources. If embed_translations is also set, the generated .qm files will be made available through the Qt resource system under :/i18n/. Alternatively, the user can specify an installation target by setting QM_FILES_INSTALL_PATH. Note that relative paths in TRANSLATIONS are not taken into account. That is, TRANSLATIONS = component1/de.ts component2/de.ts will cause a conflict. [ChangeLog][qmake] New CONFIG options lrelease and embed_translations were added. CONFIG+=lrelease does run lrelease on translation files listed in TRANSLATIONS and EXTRA_TRANSLATIONS. CONFIG+=embed_translations does include the generated .qm files as resources under :/i18n/. Change-Id: I94db5b8431d07b24f59b2c332ede91450f9c0c58 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
This commit is contained in:
parent
128a6eec06
commit
01d2f35b69
@ -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
|
||||
|
41
mkspecs/features/lrelease.prf
Normal file
41
mkspecs/features/lrelease.prf
Normal file
@ -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
|
||||
}
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user