Using lcheck

The lcheck command line tool validates Qt TS translation files and produces a human-readable report. It is part of the Qt Linguist toolchain and is intended for batch or CI usage to catch common localization issues early. By default, lcheck runs a set of checks and returns a non-zero exit code if at least one enabled check fails.

The default checks are:

  • Accelerator check — Verifies that the number of ampersands (mnemonics) in source and translation match.
  • Surrounding whitespace check — Verifies that leading and trailing whitespace of source and translation match.
  • Ending punctuation check — Verifies that source and translation end with the same punctuation.
  • Place marker check — Verifies consistent usage of %1, %2, and so on, between source and translation.

Each check can be disabled individually using command line options.

lcheck syntax

lcheck [options] -o report-output-file ts-file
lcheck [options] ts-file

Where:

  • options means one or several lcheck options.
  • ts-file is the TS file to validate.
  • report-output-file is the path of the file to write the report to. If omitted, the report is written to the standard error stream.

To view the latest help, enter:

lcheck -help

lcheck options

OptionAction
-helpDisplay up-to-date help information and exit.
-no-acceleratorDisable the accelerator (ampersand) consistency check.
-no-punctuationDisable the ending punctuation consistency check.
-no-place-markerDisable the check that ensures %1, %2, … are used consistently between source and translation.
-no-whitespacesDisable the surrounding whitespace consistency check.
-check-finishedAlso check messages marked as finished. By default, finished translations are not checked.
-o <outfile>Write the validation report to <outfile>. If not specified, the report is written to standard error.
-versionDisplay the version of lcheck and exit.

Note: The process exit status is non-zero if any enabled check fails. This makes lcheck suitable for use in CI pipelines.

Examples

Write a report to a file

lcheck -o lcheck_report.txt translations/myapp_de.ts

Disable selected checks

The following command runs all checks except accelerator and punctuation:

lcheck -no-accelerator -no-punctuation translations/myapp_de.ts

Check finished translations as well

lcheck -check-finished translations/myapp_de.ts

Use lcheck in a CI step

lcheck translations/myapp_de.ts && echo "Translations OK" || echo "Issues found"

Using lcheck with CMake

To call lcheck when configuring or building your CMake project, load the Qt6LinguistTools package and use $<TARGET_FILE:Qt6::lcheck> to locate the lcheck executable.

The following example adds a custom target check_translations that runs lcheck over a TS file and writes a report next to the build artifacts.

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

add_custom_command(
    OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/lcheck_report.txt"
    COMMAND $<TARGET_FILE:Qt6::lcheck>
            -o "${CMAKE_CURRENT_BINARY_DIR}/lcheck_report.txt"
            "${CMAKE_CURRENT_SOURCE_DIR}/translations/myapp_de.ts"
    DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/translations/myapp_de.ts"
    VERBATIM
)

add_custom_target(check_translations
    DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/lcheck_report.txt"
)

Using lcheck with qmake

You can run lcheck directly on a TS file without specifying a project file:

lcheck translations/myapp_de.ts

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.