このページでは

アプリケーションのローカライズ

アプリケーションのローカライズ手順には、翻訳可能なアプリケーションの作成、翻訳の準備、文字列の翻訳、およびリリース版アプリケーション用の実行時翻訳ファイルの作成が含まれます。

Qt Quick および Qt C++ アプリケーションは、lupdate 、lrelease 、およびそれらによって生成される翻訳ソース (TS) ファイルや QM ファイルという、同じ基盤となるローカライズシステムを使用しています。『Qt Linguist マニュアル』に記載されているとおり、QML コードと C++ コードの両方で同じツールを使用します。

同じアプリケーション内で、QMLソースファイルとC++ソースファイルの両方にユーザーインターフェース文字列を含めることも可能です。システムは単一の統合翻訳ファイルを作成し、その文字列はQMLおよびC++コードからアクセスできます。

国際化されたアプリケーションをローカライズするには:

Qt プロジェクトファイルでの翻訳ソースの指定

lupdate およびlrelease でTSファイルとQMファイルを生成できるようにするには、アプリケーションのプロジェクトファイルを更新し、翻訳対象のテキストを含むソースファイルを指定してください。

実行時に読み込む言語を決定するために、TS ファイル名には ISO 言語コードおよび国コードを使用してください。詳細については、「翻訳の有効化」を参照してください。

lupdate ツールは、アプリケーションからユーザーインターフェースの文字列を抽出します。デフォルトでは、すべてのソースコードが UTF-8 でエンコードされていることが前提となっています。詳細については、「エンコーディング」を参照してください。

CMakeの使用

Qt6LinguistTools パッケージを読み込むことで、Qt の国際化用 CMake コマンドを利用できるようになります。

cmake_minimum_required(VERSION 3.16)
project(myproject)
find_package(Qt6 COMPONENTS Core LinguistTools)

qt_standard_project_setup() のI18N_TRANSLATED_LANGUAGES 引数を使用して、サポートする言語を宣言します。

# Declare that the project will have a German and a French translation.
qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES de fr)

ソースコードには、翻訳可能な英語文字列が含まれているものと想定されます。ソースコード内の文字列の言語は、qt_standard_project_setup パラメータI18N_SOURCE_LANGUAGE を使用して調整できます。

実行時に `.qm ` ファイルをロードする予定のターゲットに対して、`qt_add_translations()`コマンドを呼び出します。

qt_add_translations(myapplication)

これらのファイルがまだ存在しない場合、この操作によりmyproject_de.ts およびmyproject_fr.ts ファイルが作成されます。これらのファイル名の構成方法については、「.ts ファイルパスの自動決定」を参照してください。

また、このコマンドは、複数形のみの翻訳ファイルである `myproject_en.ts` も生成します。詳細については、「複数形の扱い」を参照してください。複数形のみのファイルの生成は、`NO_GENERATE_PLURALS_TS_FILE ` 引数を指定することで無効にできます。

プロジェクト内のすべてのターゲットのソースファイルは、.ts ファイルの生成における入力として扱われます。プロジェクトのターゲットがどのように収集されるか、またターゲットや個々のソースファイルを除外する方法の詳細については、qt_add_translations()のリファレンスドキュメントを参照してください。

qmake の使用

qmakeを使用する場合は、.proファイルのSOURCES またはHEADERS エントリにリストしたQMLソースを、コンパイラから隠すように条件文を設定してください。

SOURCES変数はC++ソースファイルを対象としています。ここにQMLやJavaScriptのソースファイルを指定すると、コンパイラはそれらをC++ファイルであるかのようにビルドしようとします。この問題を回避するには、lupdate_only{...} という条件文を使用することで、lupdate ツールが.qmlファイルを認識する一方で、C++コンパイラはそれらを無視するように設定できます。

たとえば、以下の .pro ファイルのスニペットは、アプリケーション内の 2 つの .qml ファイルを指定しています。

lupdate_only{
SOURCES = main.qml \
          MainPage.qml
}

また、ワイルドカードを使用して .qml ソースファイルを指定することもできます。検索は再帰的ではないため、UI 文字列を含むソースファイルがある各ディレクトリを個別に指定する必要があります:

lupdate_only{
SOURCES = *.qml \
          *.js \
          content/*.qml \
          content/*.js
}

翻訳のデプロイ

.qm ファイルをデプロイする最も簡単な方法は、それらをQtリソースに埋め込むことです。qt_add_translations()CMakeコマンドがこれを自動的に処理します。.qm ファイルには、":/i18n" リソースプレフィックスの下でアクセスできます。

# Automatically embed generated .qm files.
qt_add_translations(myapplication)

あるいは、.qm ファイルをファイルシステム上のディレクトリに配置することも可能です。これは、利用可能なすべての翻訳をメモリに保持したくない大規模なアプリケーションの場合に適しています。qt_add_translations() にQM_FILES_OUTPUT_VARIABLE 引数を渡してください。このコマンドは、生成された.qm ファイルのリストを指定された変数に格納します。そのリスト内のファイル名に対して、CMake の通常のインストールコマンドを実行してください。

# Do not embed generated .qm files.
qt_add_translations(myapplication
    QM_FILES_OUTPUT_VARIABLE qm_files
)

# Install generated .qm files.
install(FILES ${qm_files} DESTINATION translations)

アプリケーションに必要な.qm ファイルを、QTranslator を使用するローダーコードがそれらを見つけられる場所に配置します。通常は、QCoreApplication::applicationDirPath()を基準とした相対パスを指定します。

アプリケーションの QM ファイルに加えて、アプリケーションで使用している Qt モジュールの QM ファイルも、システムにインストールされていない場合は、デプロイする必要があります。

QMファイルはモジュールごとに分割されており、すべてのモジュールのQMファイルを含む、いわゆるメタカタログファイルが存在します。ただし、アプリケーションで使用するモジュールのQMファイルのみをデプロイすれば十分です。

デプロイ手順でlconvert ツールを使用すると、必要なQMファイルを結合して、メタカタログファイルと一致する1つのファイルを作成できます。たとえば、 Qt Core、 Qt GUI、および Qt Quick モジュールを使用するアプリケーション用のドイツ語翻訳ファイルを作成するには、次のように実行します:

lconvert -o installation_folder/qt_de.qm qtbase_de.qm qtdeclarative_de.qm

Qtモジュールの翻訳を使用する

Qt モジュールには数千もの文字列が含まれており、これらも対象言語に翻訳する必要があります。qttranslationsリポジトリには多数の TS ファイルがあります。Qt の翻訳を始める前に、Wiki ページ「Qt を他の言語に翻訳する」をお読みください。

Qtの翻訳ファイルの場所

QLibraryInfo::path() を使用すると、アプリケーションが使用する Qt モジュールの翻訳を特定できます。この関数に `QLibraryInfo::TranslationsPath ` を渡すことで、実行時に翻訳ファイルへのパスを取得できます。

利用可能なカタログ

Qt の翻訳カタログは、qttranslations リポジトリにあります。

警告:Qtの 翻訳は Qtコミュニティによって提供されており、いかなる保証も伴いません。翻訳が欠落していたり、古かったり、完全に間違っていたり、場合によっては悪意のある内容である可能性もあります。配布する翻訳については、必ず検証を行うことを推奨します。

Qt 4 では、ロケールごとに 1 つの巨大な単一ファイル `.qm ` が存在します。たとえば、ファイル `qt_de.qm ` には、すべてのライブラリのドイツ語翻訳が含まれています。

qt_ メタカタログには、Qt 4 のqt_ カタログに含まれていた、現在も存在する Qt 翻訳が収録されています。これは、Qt 4 から Qt 5 へのアプリケーションの移植を容易にするために作成されました。 このメタカタログは、不要になったモジュールや非推奨のモジュールに属する翻訳に依存しており、それらの翻訳が存在しない場合、翻訳の読み込みに失敗する可能性があります。アプリケーションで Qt 5 以降で新たに追加されたモジュールを使用する場合は、メタカタログを使用している場合でも、それらのモジュールに対応するカタログ名を指定する必要があります。

次の表は、Qt のモジュールおよびツールで利用可能な翻訳カタログの一覧です。

Qt モジュールまたはツールカタログ
Qt Bluetoothqtconnectivity
Qt Concurrentqtbase
Qt Coreqtbase
Qt D-Busqtbase
Qt Widgets Designerdesigner
Qt GUIqtbase
Qt Helpqt_help
Qt Linguistlinguist
Qt Locationqtlocation
Qt Multimediaqtmultimedia
Qt Networkqtbase
Qt NFCqtconnectivity
Qt Print Supportqtbase
Qt Qmlqtdeclarative
Qt Quickqtdeclarative
Qt Quick コントロールqtdeclarative
Qt Quick ウィジェットqtdeclarative
Qt Serial Portqtserialport
Qt SQLqtbase
Qt Widgetsqtbase
Qt WebSocketsqtwebsockets
Qt WebEngineqtwebengine

例:必須の Qt モジュール

たとえば、Qt Core 、Qt GUI 、Qt Network 、Qt Widgets といった主要な Qt モジュールの翻訳を検索するには、main() 関数に次のコードを追加します。

    QTranslator qtTranslator;
    if (qtTranslator.load(QLocale::system(), u"qtbase"_s, u"_"_s,
                          QLibraryInfo::path(QLibraryInfo::TranslationsPath))) {
        app.installTranslator(&qtTranslator);
    }

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