1 /****************************************************************************
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
6 ** This file is part of the documentation of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:FDL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/contact-us.
17 ** GNU Free Documentation License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Free
19 ** Documentation License version 1.3 as published by the Free Software
20 ** Foundation and appearing in the file included in the packaging of
21 ** this file. Please review the following information to ensure
22 ** the GNU Free Documentation License version 1.3 requirements
23 ** will be met: http://www.gnu.org/copyleft/fdl.html.
26 ****************************************************************************/
29 \example linguist/arrowpad
32 この例では、\e {Qt Linguist} の主なコンセプトである"文脈"について、
34 また、2つ以上の言語を使用する方法についても説明します。
36 \image linguist-arrowpad_en.png
38 アプリケーションで使用可能な言語の数に制限はありませんが、
39 ここではフランス語とオランダ語の2言語の翻訳を使用します。
40 \c arrowpad.pro の関連する行は以下のとおりです。
42 \snippet examples/linguist/arrowpad/arrowpad.pro 0
44 \snippet examples/linguist/arrowpad/arrowpad.pro 1
46 \c lupdate を実行すると、2つの類似したメッセージファイル
47 \c arrowpad_fr.ts と \c arrowpad_nl.ts が作成されます。
48 これらのファイルにはすべてのソーステキストとその文脈が含まれます。
49 それらのテキストは \c tr() の呼び出しを通じて翻訳対象として
52 Qt アプリケーションの翻訳の詳細については、
53 \l{Qt Linguist manual}{Qt Linguist マニュアル} をご覧ください。
57 \c arrowpad.h では、 QWidget の派生クラスである \c ArrowPad
60 中央の 4 つのボタンを持つウィジェットが \c ArrowPad です。
62 \snippet examples/linguist/arrowpad/arrowpad.h 0
63 \snippet examples/linguist/arrowpad/arrowpad.h 1
64 \snippet examples/linguist/arrowpad/arrowpad.h 2
66 \c lupdate を実行するとソーステキストの抽出だけでなく、
68 ソーステキストが表示されるクラスの名前が文脈となります。
69 従って、この例では、"ArrowPad" が
70 \c ArrowPad クラスの文字列の文脈です。
71 \c Q_OBJECT のマクロは、以下の内容で
72 \c ArrowPad に \c tr(x) を定義します:
74 \snippet doc/src/snippets/code/doc_src_examples_arrowpad.cpp 0
76 各ソーステキストが表示されるクラスを把握しておくと、
77 \e {Qt Linguist} で論理的に関連のある文字列をグループ化することが出来ます。
79 ダイアログのクラス名の文脈が含まれるため、同時に表示されます。
80 文字列が表示される文脈によって翻訳の内容が影響を受ける場合があるため、
82 一部の翻訳では、キーボードショートカットを変更する必要があります。
83 また、同じグループにまとめられた特定の文脈(クラス)
84 にすべてのソーステキストを含めることにより、
88 \c arrowpad.cpp で、\c ArrowPad クラスを実装します。
90 \snippet examples/linguist/arrowpad/arrowpad.cpp 0
91 \snippet examples/linguist/arrowpad/arrowpad.cpp 1
92 \snippet examples/linguist/arrowpad/arrowpad.cpp 2
93 \snippet examples/linguist/arrowpad/arrowpad.cpp 3
96 ボタンのラベルごとに \c ArrowPad::tr() を呼び出します。
98 \image linguist-arrowpad_en.png
100 \snippet examples/linguist/arrowpad/mainwindow.h 0
101 \snippet examples/linguist/arrowpad/mainwindow.h 1
103 上記のスクリーンショットでは、ウィンドウ全体が \c MainWindow です。
104 これは、\c mainwindow.h ヘッダーファイルで定義します。
105 ここでも、\c MainWindow が \e {Qt Linguist} の文脈になるよう、
108 \snippet examples/linguist/arrowpad/mainwindow.cpp 0
110 \c MainWindow と \c mainwindow.cpp を実装する際に、
111 \c ArrowPad クラスのインスタンスを作成します。
113 \snippet examples/linguist/arrowpad/mainwindow.cpp 1
115 また、\c MainWindow::tr() を、
116 アクションおよびショートカット用に、計 2 回呼び出します。
118 \c tr() を使用して、言語によって異なるキーをサポートします。
119 英語の場合、"Ctrl+Q" は Quit (終了) に適していますが、
120 オランダ語の翻訳者は "Ctrl+A" (Afsluiten の場合) を、
121 ドイツ語の翻訳者は "Strg+E" (Beenden の場合) を使うといいでしょう。
122 \key Ctrl キーショートカットを \c tr() で使用する場合は
124 ショートカットが実行する機能を2番目の引数に記述してください。
126 \c main.cpp で定義した標準的な \c main() 関数は、以下のようになります。
128 \snippet examples/linguist/arrowpad/main.cpp 2
129 \snippet examples/linguist/arrowpad/main.cpp 3
131 現在のロケールに基づいて、使用する翻訳を選択します。
132 例えば、QLocale::system() は、
133 \c LANG 環境変数の設定によって影響を受ける場合があります。
134 \c .qm メッセージファイル(および TS ファイル)の命名規則に
136 簡単にロケールに基づいて翻訳ファイルを選択することが
139 選択したロケールに QM メッセージファイルが存在しない場合、
140 元のソーステキストが使用され、エラーは生成されません。
142 \section1 フランス語からオランダ語に翻訳する
144 ここでは、サンプルアプリケーションをフランス語に翻訳することから始めます。
145 \e {Qt Linguist} を起動し、\c arrowpad_fr.ts の作業を行います。
146 2つの文脈 ("ArrowPad" および "MainWindow")
147 にグループ化された7つのソーステキスト ("\&Up", "\&Left" 等)
157 \o \&Right - \&Droite
162 \o E\&xit - \&Quitter
164 \o \&File - \&Fichier
168 翻訳の入力が終わったら、 \key{Ctrl+Return} (もしくは\gui {完了にして次へ}
170 翻訳が完了とマークされ次のソーステキストに移動するため便利です。
172 ファイルを保存して、オランダ語の翻訳でも同じ手順を実行し、
173 \c arrowpad_nl.ts の作業を行います:
180 \o \&Right - \&Rechts
185 \o E\&xit - \&Afsluiten
191 \c tt1_fr.ts と \c tt1_nl.ts の翻訳ソースファイルは
193 以前と同様の方法で \e {Qt Linguist} を使用して変換できますが、
194 コマンドラインツール \c lrelease を使うと
195 \e {Qt Linguist} から個々の \gui {ファイル|リリース} を読み込まなくても、
196 アプリケーションの\e{すべての} QM ァイルを作成できます。
200 \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 1
202 これにより、\c arrowpad_fr.qm と \c arrowpad_nl.qm が作成されます。
203 \c LANG 環境変数を \c fr に設定します。
204 Unix では、以下の2つのコマンドのいずれかが機能します。
206 \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 2
208 Windows では、\c autoexec.bat を修正するか、以下を実行します。
210 \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 3
212 プログラムを実行すると、フランス語版が表示されます:
214 \image linguist-arrowpad_fr.png
216 \c LANG=nl を設定し、オランダ語でも同じ手順を実行します。
219 \image linguist-arrowpad_nl.png
223 \e {Qt Linguist} で未完了の翻訳を行います。
224 例えば、各テキストのチェックマークをクリックして翻訳を未完了の状態にして保存します。
225 その後、 \c lupdate 、\c lrelease 、サンプルの順に実行します。
226 この変更がどのような影響を及ぼしましたか。
228 \c LANG=fr_CA (フランス語(カナダ))に設定し、
230 \c LANG=fr の場合と同じ結果になる理由を説明してください。
232 オランダ語翻訳のショートカットのいずれかを変更し、
233 \e \&Bestand と \e \&Boven の競合を解消します。