- Qt 6.12
- Qt Linguist Manual
- Release managers
- Using lrelease
- Qt 6.12.0 Reference Documentation

Using lupdate ◦ Using lupdate-pro

# Using lrelease

The `lrelease` command line tool produces QM files out of TS files. The QM file format is a compact binary format that the localized application uses. It provides extremely fast lookup for translations.

When building with qmake, specify the files to process at the command line or in a .pro file.

When building with CMake, use CMake commands to add targets that create or update TS files and transform them into QM files. The `lrelease` tool is run with the options you pass to the commands when you build the target.

Run `lrelease` whenever you want to release the application, from the initial test version through to the final release version. The application does not need QM files to run, but if they are available, the application detects them and uses them automatically.

Note: The `lrelease` tool only incorporates translations that you mark as finished. Otherwise, it uses the original text instead.

## lrelease syntax

     lrelease [options] -project project-file
     lrelease [options] ts-files [-qm qm-file]

Where:

- `options` means one or several lrelease options.
- `project-file` is the project configuration file.
- `ts-files` are the TS files to use as input for the QM files.
- `qm-file` is the name of the QM file to generate.

Note: Passing .pro files to `lrelease` is deprecated. Use the `lrelease-pro` tool or the `lrelease.prf` feature when using qmake.

To view the latest help, enter:

     lrelease -help

### lrelease options

Option | Action
--- | ---
`-help` | Display up-to-date help information and exit.
`-idbased` | Deprecated. The flag is not required anymore and will be removed in a future version. It was used to enable ID based translation.
`-compress` | Compress the QM files.
`-nounfinished` | Do not include unfinished translations.
`-fail-on-invalid` | Fail if translations failing the following checks are found: validity check of accelerators validity check of surrounding whitespaces validity check of ending punctuation validity check of place markers To get more details refer to Qt Linguist help
`-fail-on-unfinished` | Generate an error if unfinished translations are found
`-removeidentical` | If the translated text is the same as the source text, exclude the message.
`-markuntranslated <prefix>` | If a message has no real translation, use the source text prefixed with the given string instead.
`-project <filename>` | Name of a file containing the project's description in JSON format. You can use `lupdate-pro -dump-json` to generate the file from a .pro file.
`-silent` | Do not explain what is being done.
`-verbose` | Explain what is being done (default).
`-version` | Display the version of `lrelease` and exit.

## Examples

### Using lrelease with CMake

When building with CMake, use CMake commands to add translations on targets to the CMakeLists.txt file, and then build the targets.

Select one of the following options:

- Use qt_add_translations on a target, such as app. This calls qt_add_lupdate and qt_add_lrelease.
- Use `qt_add_lrelease` on a target.

Build a target (for example, `app_lrelease`) to update the .qm files for it. To update the .qm files for all targets, build the target `release_translations`.

### Using lrelease with qmake

To run `lrelease` without specifying a project file:

     lrelease.exe main_en.ts languages\main_fr.ts

Using lupdate ◦ Using lupdate-pro