Qt は、アプリをローカライズするためのツールと手法を提供しています。 詳細は、「Internationalization and Localization with Qt Quick」をご参照ください。
一般的な手順は次のとおりです。
- テキスト文字列の使用、同一テキストの明確化、パラメーターおよびロケールの使用など、QML ファイル内でローカライズが考慮されているか確認します。
- コマンド ライン ツールの lupdate.exe を使用して基本翻訳ファイルを生成し、基本翻訳ファイルをコピーして、必要な各言語用に名前を付けます。
- Qt Linguist を使用してこれらのファイルを開き、翻訳を入力します。
- Qt Linguist で、[File] > [Release] を選択するか、コマンド ライン ツールの lrelease.exe を使用して翻訳ファイルを生成します。
- これらの翻訳ファイルを、スタンドアロン アプリになるプロジェクトに含めます。
QML のローカライズ
The Qt Company は、QML をローカライズするために次の手順を実行することを推奨しています。
- すべてのリテラル ユーザー インターフェイスの文字列に qsTr() を使用します。
- コンテキストを追加します。 コメント ラインで、特定の構文を使用して、文字列が使用される場所を表します。 //: は翻訳者のコメントを示し、//~ はオプションの追加情報を示しています。
- 同一テキストを明確にします。 用語に複数の意味がある場合、2 つ目のパラメーターを追加して区別します。例: text: qsTr("back", "not front"); text: qsTr("back", "go backward").
- %x を使用して文字列にパラメーターを挿入します。例: text: qsTr("File %1 of %2").arg(counter).arg(total)
- %Lx を使用して数値をローカライズします。例: text: qsTr("%L1").arg(total)
- 日付、時間、通貨をローカライズします。例: text: qsTr("Date %1").arg(Date().toLocaleString(Qt.locale()))
- 翻訳可能なデータ テキスト文字列に QT_TR_NOOP() を使用します。
- 可能な場合は、ロケールを使用して、ローカライズ機能を拡張します。
各ステップの詳細は、「Internationalization and Localization with Qt Quick」をご参照ください。
また、アプリに画像が含まれている場合もローカライズを検討する必要があります。 表示する画像は、選択した言語によって異なる場合があります。 次の例は、右から左に表示する言語 (RTL) が使用されているかを検出する方法を示し、mirror というユーザー定義のプロパティを設定します。 このプロパティを使用して、表示する画像を決定します。
property var localeForRTL:["ar", "he", "he-IL"]
property bool mirror: localeForRTL.indexOf(Qt.locale().uiLanguages[0]) > -1
Image{
source: mirror ? "./RTLimage.png" : "./Image.png"
}
lupdate
lupdate は Qt コマンド ライン ツールで、AppStudio のインストール フォルダーにあります。
実行するには、プロジェクト ディレクトリでコマンド ウィンドウを開き、次のコマンドを実行します。 次の例でそれぞれ使用されているピリオドは、.qml ファイルを含むアプリ フォルダーであるカレント ディレクトリを表していることに注意してください。
Windows の場合:
C:\Users\UserName\ArcGIS\AppStudio\Apps\MyApp>"C:\Users\Username\Applications\ArcGIS\AppStudio\bin\lupdate.exe" . -extensions qml -ts languages/MyApp_en.ts
macOS の場合:
/Users/UserName/applications/ArcGIS/AppStudio/tools/lupdate . -extensions qml -ts languages/MyApp_en.ts
Ubuntu の場合:
~/Applications/ArcGIS/AppStudio/bin/lupdate . -extensions qml -ts languages/MyApp_en.ts
MyApp_en.ts という新しいファイルが作成されます。
新しい言語の翻訳は、必要な言語それぞれについて、ファイル MyApp_en.ts をコピーして名前を変更し、en を必要な各言語の言語コードに置き換えることで作成されます。 その後、.ts ファイルを Qt Linguist で編集できます。
詳細については、「Using lupdate」をご参照ください。
Qt Linguist
Linguist は GUI ツールで、AppStudio のインストール フォルダーにあります。 lupdate を使用して作成された .ts ファイルを Linguist で開き、リストされた各文字列に対して翻訳を追加します。 終了のマークが付けられた文字列のみが、[lrelease] ツールによって処理されます。
詳細については、「Qt Linguist Manual」をご参照ください。
lrelease
リリース ファイルは、次の方法で生成できます。
- 完成した .ts ファイルを Linguist で開き、[File] メニューから [Release] を選択します。 .qm ファイルに対応する .ts ファイルが作成されます。
- コマンド ライン ツールを使用します。lrelease は Qt コマンド ライン ツールで、AppStudio のインストール フォルダーにあります。 実行時の翻訳ファイルを生成するには、次のコマンドを実行して、生成するそれぞれの言語ファイルをリストします。
lrelease.exe languages\MyApp_ar.ts languages\MyApp_fr.ts
- -help オプションを lrelease に渡して、サポートされているオプションを表示します。
詳細については、「Using lrelease」をご参照ください。
ローカライズ ファイルをアプリに配置します。
[Make] ツールを使用してインストール ファイルを作成する前に、プロジェクト内に .qm ファイルを含めてください。 推奨されるフォルダーの命名規則は次のとおりです。
MyApp > languages > qml_localecode.qm
たとえば、アプリにドイツ語、フランス語、中国語のローカライズを含める場合、次のファイルを含めます。
- MyApp > languages > qml_de.qm
- MyApp > languages > qml_fr.qm
- MyApp > languages > qml_zh.qm
また、これらのファイルの保存場所をアプリに指定する必要があります。 この情報は、appinfo.json ファイルに定義されます。 テキスト エディターで appinfo.json を開き、次のプロパティを追加します。
"translations": {
"fileName": "qml",
"path": "languages"
},
上記の例では、ファイル名は qml です。 アンダースコアおよび言語コードを含める必要はありません。 サンプル コードのフォルダー名は languages で、これは、上記の例とも一致しています。 独自のフォルダー名やファイル名を選択できます。その名前を必ず appinfo.json ファイルに指定してください。
翻訳ファイルを提供した言語と一致するシステム ロケールでデバイス上のアプリを起動すると、アプリが自動的に正しいファイルの文字列を表示します。 テスト目的でコマンド ライン パラメーター --locale を使用することもできます。これは、パラメーターで指定したロケール コードでシステム ロケールをオーバーライドします。 たとえば、--locale fr をコマンド ラインに追加すると、フランス語のローカリゼーション ファイルを使用してアプリが起動します。 これらのコマンド ライン パラメーターは、[コマンドライン引数] (Qt Creator の [プロジェクト] タブのフィールド) でパラメーターを設定して、AppStudio でアプリを実行する場合にも使用できます。
翻訳ファイルが提供および設定されているアプリを使用するときに、AppFramework コンポーネント内の loadTranslator メソッドを使用して、別の翻訳ファイルをアプリに読み込むことができます。
ストア リストのローカライズ
ストア経由でアプリを配布する場合、およびアプリのローカライズ作業を実施した場合、ストア リストのローカライズも検討する必要があります。 App Store および Google Play のいずれも、ストア リストをローカライズする機能を提供しています。 どちらの場合でも、ストアの各言語向けにローカライズされた説明およびスクリーン キャプチャを、1 回のアプリ提出に提供できます。
詳細については、次のリンクをご参照ください。
- App Store 情報のローカライズ Apple の App Store の場合
- アプリの翻訳とローカライズ Google Play の場合