이 페이지에서

qt_add_lrelease

Qt Linguist 의 .ts 파일을 .qm 파일로 변환하는 타깃을 추가합니다.

이 명령어는 Qt6 패키지의 LinguistTools 컴포넌트에 정의되어 있습니다. 다음 명령어로 패키지를 불러오세요:

find_package(Qt6 REQUIRED COMPONENTS LinguistTools)

이 명령어는 Qt 6.2부터 도입되었습니다.

개요

6.7부터:

qt_add_lrelease(TS_FILES file1.ts [file2.ts ...]
                [LRELEASE_TARGET target-name]
                [EXCLUDE_FROM_ALL]
                [NO_GLOBAL_TARGET]
                [QM_OUTPUT_DIRECTORY directory]             # since 6.9
                [QM_FILES_OUTPUT_VARIABLE variable-name]
                [MERGE_QT_TRANSLATIONS]
                [QT_TRANSLATION_CATALOGS catalog1 [catalog2 ...]]
                [OPTIONS ...])

6.2부터 (사용 중단 예정):

qt_add_lrelease(target TS_FILES file1.ts [file2.ts ...]
                [NO_TARGET_DEPENDENCY]
                [NO_GLOBAL_TARGET]
                [QM_FILES_OUTPUT_VARIABLE variable-name]
                [OPTIONS ...])

버전 정보가 없는 명령어가 비활성화된 경우, 대신 ` qt6_add_lrelease() `를 사용하십시오. 이 명령어는 본 명령어와 동일한 인자 집합을 지원합니다.

경고: 대상 디렉터리 범위와 다른 디렉터리 범위에서 qt_add_lrelease 를호출하려면 최소 CMake 버전 3.18이 필요합니다.

설명

lrelease를 사용하여 ` .ts ` 파일을 ` .qm ` 파일로 변환하는 사용자 정의 명령을 생성합니다.

사용자 정의 명령의 실행은 기본적으로 빌드되는 사용자 정의 타깃에 의해 제어됩니다. 해당 사용자 정의 타깃의 이름은 기본적으로 ${PROJECT_NAME}_lrelease 입니다. qt_add_lrelease 를 추가로 호출하면 번호가 증가하는 형식으로 타깃 이름이 생성됩니다. 사용자 정의 타깃 이름은 LRELEASE_TARGET 옵션을 사용하여 지정할 수 있습니다.

.ts 파일은 TS_FILES 인수를 사용하여 지정해야 합니다.

이 함수는 qt_add_lupdate()와 함께 사용하도록 설계되었습니다. 편의 래퍼 함수인 qt_add_translations()도 참조하십시오.

옵션

lrelease 가 호출될 때 전달되어야 할 추가 OPTIONS 을 설정할 수 있습니다. 사용 가능한 옵션은 lrelease 문서에서 확인할 수 있습니다.

생성된 .qm 파일의 위치

기본적으로 .qm 파일은 현재 빌드 디렉터리(CMAKE_CURRENT_BINARY_DIR)에 저장됩니다. Qt 6.9부터는 QM_OUTPUT_DIRECTORY 인수를 사용하여 .qm 파일을 다른 디렉터리에 생성할 수 있습니다. 상대 경로는 CMAKE_CURRENT_BINARY_DIR 아래에 있는 것으로 간주됩니다.

예를 들어, 다음 코드를 사용하면 .qm 파일이 현재 빌드 디렉터리 아래의 translations 디렉터리에 생성됩니다.

qt_add_lrelease(
    TS_FILES myapp_en.ts myapp_de.ts
    QM_OUTPUT_DIRECTORY translations
)

보다 세밀한 제어를 위해, 해당 .ts 파일에서 소스 파일 속성 OUTPUT_LOCATION 을 설정하여 개별 .qm 파일의 출력 디렉터리를 지정할 수 있습니다. 이는 qt_add_lrelease 을 호출하기 전에 수행되어야 합니다.

OUTPUT_LOCATION 소스 파일 속성은 QM_OUTPUT_DIRECTORY 를 통해 전달된 디렉터리를 재정의합니다.

예를 들어, 다음 코드를 사용하면 .qm 파일들이 현재 빌드 디렉터리 아래의 translations 디렉터리에 생성됩니다.

set_source_files_properties(app_en.ts app_de.ts
    PROPERTIES OUTPUT_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/translations")
qt_add_lrelease(TS_FILES myapp_en.ts myapp_de.ts)

생성된 .qm 파일 처리

생성된 .qm 파일을 추가로 처리하기 위해(예: 설치 규칙 생성), qt_add_lrelease 는 .qm 파일의 경로를 변수에 저장할 수 있습니다. 이를 위해 함수에 QM_FILES_OUTPUT_VARIABLE <variable-name> 를 전달하십시오.

기본 빌드

기본적으로 이 명령어는 기본 빌드 타깃에 추가되는 사용자 정의 타깃을 생성합니다. 이를 통해 프로젝트를 빌드할 때 .qm 파일이 항상 최신 상태로 유지됩니다. 이 동작은 EXCLUDE_FROM_ALL 인수를 사용하여 비활성화할 수 있습니다. 이 경우 사용자는 ${PROJECT_NAME}_lrelease 타깃을 수동으로 빌드해야 합니다.

우산 타깃

${target}_lrelease 타깃 외에도 release_translations 라는 우산 타깃이 생성됩니다. 이 타깃은 qt_add_lrelease 로 생성된 모든 ${target}_lrelease 타깃을 빌드합니다.

이러한 동작을 방지하려면 NO_GLOBAL_TARGET 을 qt_add_lrelease 에 전달하십시오.

qt_add_lrelease 를 호출하기 전에 QT_GLOBAL_LRELEASE_TARGET 변수를 설정하여 이 타겟의 이름을 재정의할 수 있습니다.

Qt에서 제공하는 번역 병합

Qt 6.9부터는 Qt에서 제공하는 번역을 애플리케이션별 .qm 파일에 병합할 수 있습니다. 이를 위해 qt_add_translations 에 MERGE_QT_TRANSLATIONS 옵션을 전달하십시오. 이렇게 하면 프로젝트에서 사용하는 모듈에 속하는 Qt 번역 카탈로그가 결정되고, 이 카탈로그들이 lrelease 에 의해 생성된 .qm 파일에 병합됩니다.

Qt 번역 카탈로그는 qt_add_translations 가 호출되는 CMakeLists.txt 범위 내의 find_package 호출에 의해 결정됩니다. 예를 들어, 다음 순서대로 실행하면 qtbase 및 qtmultimedia 카탈로그가 .qm 파일에 병합됩니다:

find_package(Qt6 COMPONENTS MultimediaWidgets)
...
qt_add_lrelease(
    TS_FILES myapp_de.ts myapp_fi.ts
    MERGE_QT_TRANSLATIONS
)

카탈로그를 명시적으로 지정하려면 QT_TRANSLATION_CATALOGS 인수를 사용하십시오:

qt_add_lrelease(
    TS_FILES myapp_de.ts myapp_fi.ts
    MERGE_QT_TRANSLATIONS
    QT_TRANSLATION_CATALOGS qtbase qtmultimedia
)

프로젝트에서 Qt가 자체 번역을 제공하지 않는 언어를 지원하는 경우, configure 단계에서 경고가 표시됩니다. CMake 변수 QT_NO_MISSING_CATALOG_LANGUAGE_WARNING 을 ON 로 설정하면 이 경고를 억제할 수 있습니다.

사용 중단된 명령어 시그니처

qt_add_lrelease 의 이전 버전에서는 첫 번째 인수로 타깃을 사용했습니다. 이 방식은 여전히 가능하지만 더 이상 권장되지 않습니다.

예시

주어진 .ts 파일을 .qm 파일로 변환하기 위해 myapp_lrelease 및 release_translations 타깃을 추가합니다. 또한, 생성된 .qm 파일을 설치합니다. myapp_lrelease 타깃은 기본적으로 빌드됩니다.

project(myapp)
...
qt_add_lrelease(
    TS_FILES myapp_de.ts myapp_fr.ts
    QM_FILES_OUTPUT_VARIABLE qm_files
)
install(FILES ${qm_files} DESTINATION "translations")

LRELEASE_TARGET 인수를 전달하여 생성된 타깃의 이름을 지정할 수 있습니다:

qt_add_lrelease(
    LRELEASE_TARGET create_myapp_qm_files
    TS_FILES myapp_de.ts myapp_fr.ts
    QM_FILES_OUTPUT_VARIABLE qm_files
)

© 2026 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.