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