Update copyright headers
[qt:qt.git] / doc / src / ja_JP / examples / arrowpad.qdoc
1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the documentation of the Qt Toolkit.
7 **
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.
16 **
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.
24 ** $QT_END_LICENSE$
25 **
26 ****************************************************************************/
27
28 /*!
29     \example linguist/arrowpad
30     \title サンプル: アローパッド
31
32     この例では、\e {Qt Linguist} の主なコンセプトである"文脈"について、
33     少し詳しく取り上げて説明します。
34     また、2つ以上の言語を使用する方法についても説明します。
35
36     \image linguist-arrowpad_en.png
37
38     アプリケーションで使用可能な言語の数に制限はありませんが、
39     ここではフランス語とオランダ語の2言語の翻訳を使用します。
40     \c arrowpad.pro の関連する行は以下のとおりです。
41
42     \snippet examples/linguist/arrowpad/arrowpad.pro 0
43     \codeline
44     \snippet examples/linguist/arrowpad/arrowpad.pro 1
45
46     \c lupdate を実行すると、2つの類似したメッセージファイル
47     \c arrowpad_fr.ts と \c arrowpad_nl.ts が作成されます。
48     これらのファイルにはすべてのソーステキストとその文脈が含まれます。
49     それらのテキストは \c tr() の呼び出しを通じて翻訳対象として
50     ソースコード内でマークされているものです。
51
52     Qt アプリケーションの翻訳の詳細については、
53     \l{Qt Linguist manual}{Qt Linguist マニュアル} をご覧ください。
54
55     \section1 各行の簡単な解説
56
57     \c arrowpad.h では、 QWidget の派生クラスである \c ArrowPad
58     クラスを定義します。
59     上記のスクリーンショットで
60     中央の 4 つのボタンを持つウィジェットが \c ArrowPad です。
61
62     \snippet examples/linguist/arrowpad/arrowpad.h 0
63     \snippet examples/linguist/arrowpad/arrowpad.h 1
64     \snippet examples/linguist/arrowpad/arrowpad.h 2
65
66     \c lupdate を実行するとソーステキストの抽出だけでなく、
67     文脈へのグループ化を行うことができます。
68     ソーステキストが表示されるクラスの名前が文脈となります。
69     従って、この例では、"ArrowPad" が
70     \c ArrowPad クラスの文字列の文脈です。
71     \c Q_OBJECT のマクロは、以下の内容で
72     \c ArrowPad に \c tr(x) を定義します:
73
74     \snippet doc/src/snippets/code/doc_src_examples_arrowpad.cpp 0
75
76     各ソーステキストが表示されるクラスを把握しておくと、
77     \e {Qt Linguist} で論理的に関連のある文字列をグループ化することが出来ます。
78     例えば、ダイアログ内のすべての文字列には
79     ダイアログのクラス名の文脈が含まれるため、同時に表示されます。
80     文字列が表示される文脈によって翻訳の内容が影響を受ける場合があるため、
81     翻訳者にとって有用な情報となります。
82     一部の翻訳では、キーボードショートカットを変更する必要があります。
83     また、同じグループにまとめられた特定の文脈(クラス)
84     にすべてのソーステキストを含めることにより、
85     翻訳者はコンフリクトを起こすことなく、
86     より簡単にショートカットを変更できます。
87
88     \c arrowpad.cpp で、\c ArrowPad クラスを実装します。
89
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
94
95     ラベルはユーザ表示可能な文字列であるため、
96     ボタンのラベルごとに \c ArrowPad::tr() を呼び出します。
97
98     \image linguist-arrowpad_en.png
99
100     \snippet examples/linguist/arrowpad/mainwindow.h 0
101     \snippet examples/linguist/arrowpad/mainwindow.h 1
102
103     上記のスクリーンショットでは、ウィンドウ全体が \c MainWindow です。
104     これは、\c mainwindow.h ヘッダーファイルで定義します。
105     ここでも、\c MainWindow  が \e {Qt Linguist} の文脈になるよう、
106     \c Q_OBJECT を使用します。
107
108     \snippet examples/linguist/arrowpad/mainwindow.cpp 0
109
110     \c MainWindow と \c mainwindow.cpp を実装する際に、
111     \c ArrowPad クラスのインスタンスを作成します。
112
113     \snippet examples/linguist/arrowpad/mainwindow.cpp 1
114
115     また、\c MainWindow::tr() を、
116     アクションおよびショートカット用に、計 2 回呼び出します。
117
118     \c tr() を使用して、言語によって異なるキーをサポートします。
119     英語の場合、"Ctrl+Q" は Quit (終了) に適していますが、
120     オランダ語の翻訳者は "Ctrl+A" (Afsluiten の場合) を、
121     ドイツ語の翻訳者は "Strg+E" (Beenden の場合) を使うといいでしょう。
122     \key Ctrl キーショートカットを \c tr() で使用する場合は
123     引数を 2 つ使用して、
124     ショートカットが実行する機能を2番目の引数に記述してください。
125
126     \c main.cpp で定義した標準的な \c main() 関数は、以下のようになります。
127
128     \snippet examples/linguist/arrowpad/main.cpp 2
129     \snippet examples/linguist/arrowpad/main.cpp 3
130
131     現在のロケールに基づいて、使用する翻訳を選択します。
132     例えば、QLocale::system() は、
133     \c LANG 環境変数の設定によって影響を受ける場合があります。
134     \c .qm メッセージファイル(および TS ファイル)の命名規則に
135     ロケールを使用すると、
136     簡単にロケールに基づいて翻訳ファイルを選択することが
137     できるようになります。 
138
139     選択したロケールに QM メッセージファイルが存在しない場合、
140     元のソーステキストが使用され、エラーは生成されません。
141
142     \section1 フランス語からオランダ語に翻訳する
143
144     ここでは、サンプルアプリケーションをフランス語に翻訳することから始めます。
145     \e  {Qt Linguist} を起動し、\c arrowpad_fr.ts の作業を行います。
146     2つの文脈 ("ArrowPad" および "MainWindow")
147     にグループ化された7つのソーステキスト ("\&Up", "\&Left" 等)
148     が含まれているはずです。
149
150     次に、以下の翻訳を入力します:
151
152     \list
153     \o \c ArrowPad
154          \list
155          \o \&Up - \&Haut
156          \o \&Left - \&Gauche
157          \o \&Right - \&Droite
158          \o \&Down - \&Bas
159          \endlist
160     \o \c MainWindow
161          \list
162          \o E\&xit - \&Quitter
163          \o Ctrl+Q - Ctrl+Q
164          \o \&File - \&Fichier
165          \endlist
166     \endlist
167
168     翻訳の入力が終わったら、 \key{Ctrl+Return} (もしくは\gui {完了にして次へ}
169     ボタン)を押すと、
170     翻訳が完了とマークされ次のソーステキストに移動するため便利です。
171
172     ファイルを保存して、オランダ語の翻訳でも同じ手順を実行し、
173     \c arrowpad_nl.ts の作業を行います:
174
175     \list
176     \o \c ArrowPad
177          \list
178          \o \&Up - \&Omhoog
179          \o \&Left - \&Links
180          \o \&Right - \&Rechts
181          \o \&Down - Omlaa\&g
182          \endlist
183     \o \c MainWindow
184          \list
185          \o E\&xit - \&Afsluiten
186          \o Ctrl+Q - Ctrl+A
187          \o File - \&Bestand
188          \endlist
189     \endlist
190
191     \c tt1_fr.ts と \c tt1_nl.ts の翻訳ソースファイルは
192     QM ファイルに変換する必要があります。
193     以前と同様の方法で \e {Qt Linguist} を使用して変換できますが、
194     コマンドラインツール \c lrelease を使うと
195     \e {Qt Linguist} から個々の \gui {ファイル|リリース} を読み込まなくても、
196     アプリケーションの\e{すべての} QM ァイルを作成できます。
197
198     以下を入力します:
199
200     \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 1
201
202     これにより、\c arrowpad_fr.qm と \c arrowpad_nl.qm が作成されます。
203     \c LANG 環境変数を \c fr に設定します。
204     Unix では、以下の2つのコマンドのいずれかが機能します。
205
206     \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 2
207
208     Windows では、\c autoexec.bat を修正するか、以下を実行します。
209
210     \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 3
211
212     プログラムを実行すると、フランス語版が表示されます:
213
214     \image linguist-arrowpad_fr.png
215
216     \c LANG=nl を設定し、オランダ語でも同じ手順を実行します。
217     これで、オランダ語版が表示されます:
218
219     \image linguist-arrowpad_nl.png
220
221     \section1 エクササイズ
222
223     \e {Qt Linguist} で未完了の翻訳を行います。
224     例えば、各テキストのチェックマークをクリックして翻訳を未完了の状態にして保存します。
225     その後、 \c lupdate 、\c lrelease 、サンプルの順に実行します。
226     この変更がどのような影響を及ぼしましたか。
227
228     \c LANG=fr_CA (フランス語(カナダ))に設定し、
229     サンプルプログラムを再実行します。
230     \c LANG=fr の場合と同じ結果になる理由を説明してください。
231
232     オランダ語翻訳のショートカットのいずれかを変更し、
233     \e \&Bestand と \e \&Boven の競合を解消します。
234 */