Using lconvert
The lconvert
command line tool filters and converts translation data files.
It supports the following file formats:
pot
- GNU Gettext localization template filesqph
- Qt Linguist Phrase Bookts
- Qt translation sourcespo
- GNU Gettext localization filesqm
- Compiled Qt translationsxlf
- XLIFF localization files
lconvert syntax
lconvert [options] <infile> [<infile>...]
Where:
options
means one or several lconvert options.infile
is an input file. You can specify multiple input files.
If you specify multiple input files, they are merged with translations from later files taking precedence.
To view the latest lconvert
help, enter:
lconvert -help
lconvert options
Option | Action |
---|---|
-h -help | Display up-to-date help information and exit. |
-i <infile> -input-file <infile> | Specify an input file. Use this option if <infile> starts with a dash. Use this option several times to merge inputs. May be - (standard input) for use in a pipe. |
-o <outfile> -output-file <outfile> | Specify an output file. Default is - (standard output). |
-if <informat> -input-format <format> | Specify input format for subsequent input files. The format is auto-detected from the file name and defaults to ts . |
-of <outformat> -output-format <outformat> | Specify output format. See -if . |
-drop-tags <regexp> | Drop named extra tags when writing TS or XLIFF files. You can specify this option repeatedly. |
-drop-translations | Drop existing translations and reset the status to unfinished . That implies --no-obsolete . |
-source-language <language>[_<region>] | Specify/override the language of the source strings. Defaults to POSIX if not specified and the file does not name it yet. |
-target-language <language>[_<region>] | Specify or override the language of the translation. By default, the target language is read from the file content or guessed from the file name. |
-no-obsolete | Drop obsolete messages. |
-no-finished | Drop finished messages. |
-no-untranslated | Drop untranslated messages. |
-sort-contexts | Sort contexts in the output TS file alphabetically. |
-sort-messages | Sort messages in a context alphabetically in TS files. |
-locations {absolute|relative|none} | Override how source code references are saved in TS files. Default is absolute . |
-no-ui-lines | Drop line numbers from references to UI files. |
-pluralonly | Drop non-plural form messages. |
-verbose | Explain what is being done. |
Examples
Convert TS file to XLIFF
To convert a single TS file to XLIFF, run the following command in the terminal:
lconvert -o myapp_de.xlf myapp_de.ts
Merge multiple QM files
The following command merges multiple QM files into full_de.qm
:
lconvert -o full_de.qm qtbase_de.qm myapp_de.qm mylib_de.qm
Using lconvert with CMake
To call lconvert
when configuring or building your CMake project, load the Qt6LinguistTools
package and use $<TARGET_FILE_NAME:Qt6::lconvert>
for locating the lconvert
executable.
The following example adds a custom target xlf_de
that converts a single TS file to XLIFF.
find_package(Qt6 REQUIRED COMPONENTS LinguistTools) add_custom_command( OUTPUT myapp_de.xlf COMMAND $<TARGET_FILE:Qt6::lconvert> -o myapp_de.xlf myapp_de.ts DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/myapp_de.ts" VERBATIM ) add_custom_target(xlf_de DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/myapp_de.xlf" )