lupdateQML ファイルで実行することにより、翻訳ファイルを生成できます。
lupdate main.qml -ts main.ts
lupdateプロジェクト .pro ファイルで実行して .ts ファイルを取得するには、回避策を使用できます。Qtのドキュメントから:
lupdate ツールは、アプリケーションからユーザー インターフェイス文字列を抽出します。lupdate は、アプリケーションの .pro ファイルを読み取り、翻訳対象のテキストが含まれているソース ファイルを識別します。これは、ソース ファイルが .pro ファイルの SOURCES または HEADERS エントリにリストされている必要があることを意味します。ファイルがリストされていない場合、ファイル内のテキストは見つかりません。
ただし、SOURCES 変数は C++ ソース ファイル用です。そこに QML または JavaScript ソース ファイルをリストすると、コンパイラはそれらを C++ ファイルであるかのようにビルドしようとします。回避策として、lupdate_only{...} 条件ステートメントを使用して、lupdate ツールは .qml ファイルを認識しますが、C++ コンパイラはそれらを無視します。
アプリケーションで .qml ファイルを次のように指定した場合:
lupdate_only{
SOURCES = content/main.qml
}
プロジェクト .pro で実行するlupdateと、結果の .ts ファイルに QML 翻訳コンテキストが含まれます。
次のような別のスタイルを使用して、示されているブレース スタイルに固執する必要があることに注意してください。
# DON'T USE, FAILS!
lupdate_only
{
SOURCES = content/main.qml
}
(少なくとも OS X 10.12 / Qt 5.7 では) 大量のコンパイラ警告とエラーが発生し、実際の問題のヒントにはほど遠いものです。たとえば、
clang: warning: <qml source file>: 'linker' input unused
clang: warning: argument unused during compilation: '-g'
clang: warning: argument unused during compilation: '-isysroot /Applications/Xcode_7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk'
...
clang: error: no such file or directory: 'Page1.o'
clang: error: no such file or directory: 'Page1Form.ui.o'
または、継続文字を使用できます。
lupdate_only \
{
SOURCES = content/main.qml
}