このページでは

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 以上が必要です。

説明

.ts ファイルをlrelease を使用して.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.