lupdate を使う

lupdate コマンドラインツールは、C++ ソース、C++ ヘッダー、Java、Python、QML、および UI ファイルから翻訳可能な文字列を検出し、TS ファイルを生成または更新します。

qmakeでビルドする場合は、コマンドラインまたは.proファイルで処理するファイルを指定します。

CMakeでビルドする場合は、CMakeコマンドを使用してTSファイルを生成または更新するターゲットを追加し、QMファイルに変換します。lupdate ツールは、ターゲットのビルド時にコマンドに渡したオプションで実行されます。

プロジェクトファイルでの翻訳の指定についての詳細は、アプリケーションのローカライズを参照してください。

lupdate 構文

lupdate [options] [project-file]...
lupdate [options] [source-file|path|@lst-file]... -ts ts-files|@lst-file

どこで

  • options は1つまたは複数のlupdateオプションを意味します。
  • project-file はプロジェクト設定ファイルです。
  • source-file は翻訳可能な文字列を含むファイルです。
  • path は翻訳ソースファイルを含むフォルダへのパスです。
  • @lst-file は、lst-file から追加のファイル名(1 行に 1 つ)またはインクルードパス(1 行に 1 つで、先頭に が付く)を読み取ります。-I
  • ts-files は、生成または更新するTSファイルです。

最新のヘルプを表示するには、次のように入力します:

lupdate -help

更新オプション

オプション動作
-help最新のヘルプ情報を表示して終了する。
-no-obsolete古い文字列や消えた文字列をすべて削除する。
-extensions <ext>[,<ext>]...指定された拡張子を持つファイルのみを処理する。リスト内の拡張子をカンマで区切る。空白文字は使用しないでください。デフォルト値はjava,jui,ui,c,c++,cc,cpp,cxx,ch,h,h++,hh,hpp,hxx,js,qs,qml,qrc です。
-pluralonly複数形のメッセージのみを含めます。
-silent処理内容を説明しないでください。
-no-sortTSファイルのコンテキストをソートしない。
-no-recursiveディレクトリを再帰的にスキャンしない。
-recursiveディレクトリを再帰的にスキャンします (デフォルト)。
-I <includepath> or -I<includepath>この追加の場所でインクルード・ファイルを探す。複数のパスを指定できる。
-locations {absolute|relative|none}ソース・コード参照を TS ファイルに保存する方法を指定または上書きします。
  • absolute は、ソース・ファイル・パスがターゲット・ファイルに対して相対ですが、行番号は絶対です。
  • relative は、ソース・ファイル・パスがターゲット・ファイルからの相対パスであることを意味します。行番号は、同じソース・ファイル内の他のエントリに対する相対です。
  • none は、ソースの場所に関する情報を保存しません。

場所を指定しない場合、lupdate は既存の TS ファイルから場所を決定します。新規ファイルのデフォルト値はabsolute です。

-no-ui-linesUI ファイルへの参照に行番号を記録しない。
-disable-heuristic {sametext|similartext}名前付きマージ・ヒューリスティックを無効にします。複数回指定できます。
-project <filename>プロジェクトの説明を JSON 形式で含むファイル名。lprodump ツールを使用して、.pro ファイルからファイルを生成できます。
-pro <filename>.pro ファイルの名前。.proファイル構文を持つが、他のファイル接尾辞を持つファイルに便利です。プロジェクトは再帰的にマージされます。このオプションは非推奨です。代わりにlupdate-pro ツールを使用してください。
-pro-out <directory>後続の .pro ファイルを処理するための仮想出力ディレクトリ。
-pro-debug.pro ファイルの処理をトレースします。冗長性を高めるために 2 回指定します。
-source-language <language>[_<region>]新しいファイルのソース文字列の言語を指定します。指定しない場合は POSIX がデフォルトです。
-target-language <language>[_<region>]新規ファイルの翻訳の言語を指定します。言語を指定しない場合は、lupdate がファイル名から判断します。
-tr-function-alias <function>{+=,=}<alias>[,<function>{+=,=}<alias>]...+= を指定すると、<alias><function> の代替スペルとして認識します。=, を指定すると、<alias><function> の唯一のスペルとして認識します。

利用可能な<function> の値(現在定義されているエイリアスを含む)は以下のとおりです:

  • Q_DECLARE_TR_FUNCTIONS ( )=Q_DECLARE_TR_FUNCTIONS
  • QT_TR_N_NOOP ( )=QT_TR_N_NOOP
  • QT_TRID_N_NOOP ( )=QT_TRID_N_NOOP
  • QT_TRANSLATE_N_NOOP ( )=QT_TRANSLATE_N_NOOP
  • QT_TRANSLATE_N_NOOP3 ( )=QT_TRANSLATE_N_NOOP3
  • QT_TR_NOOP ( )=QT_TR_NOOP
  • QT_TRID_NOOP ( )=QT_TRID_NOOP
  • QT_TRANSLATE_NOOP ( )=QT_TRANSLATE_NOOP
  • QT_TRANSLATE_NOOP3 ( )=QT_TRANSLATE_NOOP3
  • QT_TR_NOOP_UTF8 ( )=QT_TR_NOOP_UTF8
  • QT_TRANSLATE_NOOP_UTF8 ( )=QT_TRANSLATE_NOOP_UTF8
  • QT_TRANSLATE_NOOP3_UTF8 ( )=QT_TRANSLATE_NOOP3_UTF8
  • findMessage ( )=findMessage
  • qtTrId ( )=qtTrId
  • tr ( )=tr
  • trUtf8 ( )=trUtf8
  • translate ( )=translate
  • qsTr ( )=qsTr
  • qsTrId ( )=qsTrId
  • qsTranslate ( )=qsTranslate
-ts <ts-file>...出力ファイルを指定します。これはTRANSLATIONS よりも優先される。
-versionlupdate のバージョンを表示して終了します。
-clang-parser [compilation-database-dir].cppファイルのパースにはclangを使用してください。そうでない場合は、カスタム・パーサーを使います。このオプションは、パースするファイルに clang コンパイル・データベース (compile_commands.json) が必要です。このファイルを含むディレクトリへのパスを、コマンド・ライン、-clang-parser オプションの直後、またはプロジェクト・ファイルで指定します。

qmake を使用する場合は、.pro ファイルでLUPDATE_COMPILE_COMMANDS_PATH 変数を設定します。

コマンドラインで指定したディレクトリが優先されます。パスを指定しない場合、lupdate は最初の入力ファイルのすべての親パスからコンパイル・データベースを検索します。

-project-roots <directory>...プロジェクト・ルート・ディレクトリを 1 つ以上指定します。-clang-parser オプションを使用すると、プロジェクト・ルート以下のファイルのみが翻訳対象となります。

CMakeでlupdateを使う

CMakeでビルドする場合、CMakeコマンドを使ってターゲットの翻訳をCMakeLists.txtファイルに追加し、ターゲットをビルドします。

以下のオプションのいずれかを選択してください:

ターゲット(たとえば、app_lupdate )をビルドして、その .ts ファイルを更新します。すべてのターゲットの .ts ファイルを更新するには、ターゲットupdate_translations をビルドします。

qmakeでlupdateを使用する

1つのQMLファイルに対して翻訳ファイルを生成するには、次のようにします:

lupdate main.qml -ts main_en.ts

別の言語、たとえばフランス語の翻訳ファイルを作成するには、main_en.ts を main_fr.ts にコピーし、フランス語の TS ファイル内の文字列を翻訳します。

lupdate .qrc ファイルに記載されている QML ファイルを処理します:

RESOURCES += qml.qrc

すべてのQMLファイルをlupdate

lupdate application.qrc -ts myapp_en.ts

現在の作業ディレクトリ(またはそのサブフォルダ)にあるすべての QML ファイルを、.qrc ファイルを使わずに処理するには:

lupdate . -extensions qml -ts myapp_en.ts

QML と C++ の両方のソースファイルから翻訳可能な文字列をチェックする:

lupdate qml.qrc filevalidator.cpp -ts myapp_en.ts

プロジェクトファイルで言語を指定せずに、英語とフランス語で使用される .ts ファイルを生成する:

lupdate qml.qrc filevalidator.cpp -ts myapp_en.ts myapp_fr.ts

TS ファイルを翻訳者に渡し、翻訳者は Qt Linguist を使ってファイルを読み、翻訳を挿入します。

XLIFF 形式のファイル

TSファイルフォーマットは、バージョン管理システムで使用できる、人間が読めるシンプルなXMLフォーマットです。さらに、lupdate は、Localization Interchange File Format (XLIFF) ファイルを処理することができます (.xlf)。

注: 現在サポートされているのは、XLIFFバージョン1.1と1.2のみです。

XLIFF ファイルは、Qt Linguist で開いて編集することができます。

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。