summaryrefslogtreecommitdiffstats
path: root/doc/src/ja_JP/examples
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/ja_JP/examples')
-rw-r--r--doc/src/ja_JP/examples/arrowpad.qdoc248
-rw-r--r--doc/src/ja_JP/examples/hellotr.qdoc200
-rw-r--r--doc/src/ja_JP/examples/trollprint.qdoc286
3 files changed, 734 insertions, 0 deletions
diff --git a/doc/src/ja_JP/examples/arrowpad.qdoc b/doc/src/ja_JP/examples/arrowpad.qdoc
new file mode 100644
index 0000000..2518264
--- /dev/null
+++ b/doc/src/ja_JP/examples/arrowpad.qdoc
@@ -0,0 +1,248 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example linguist/arrowpad
+ \title サンプル: アローパッド
+
+ この例では、\e {Qt Linguist} の主なコンセプトである"文脈"について、
+ 少し詳しく取り上げて説明します。
+ また、2つ以上の言語を使用する方法についても説明します。
+
+ \image linguist-arrowpad_en.png
+
+ アプリケーションで使用可能な言語の数に制限はありませんが、
+ ここではフランス語とオランダ語の2言語の翻訳を使用します。
+ \c arrowpad.pro の関連する行は以下のとおりです。
+
+ \snippet examples/linguist/arrowpad/arrowpad.pro 0
+ \codeline
+ \snippet examples/linguist/arrowpad/arrowpad.pro 1
+
+ \c lupdate を実行すると、2つの類似したメッセージファイル
+ \c arrowpad_fr.ts と \c arrowpad_nl.ts が作成されます。
+ これらのファイルにはすべてのソーステキストとその文脈が含まれます。
+ それらのテキストは \c tr() の呼び出しを通じて翻訳対象として
+ ソースコード内でマークされているものです。
+
+ Qt アプリケーションの翻訳の詳細については、
+ \l{Qt Linguist manual}{Qt Linguist マニュアル} をご覧ください。
+
+ \section1 各行の簡単な解説
+
+ \c arrowpad.h では、 QWidget の派生クラスである \c ArrowPad
+ クラスを定義します。
+ 上記のスクリーンショットで
+ 中央の 4 つのボタンを持つウィジェットが \c ArrowPad です。
+
+ \snippet examples/linguist/arrowpad/arrowpad.h 0
+ \snippet examples/linguist/arrowpad/arrowpad.h 1
+ \snippet examples/linguist/arrowpad/arrowpad.h 2
+
+ \c lupdate を実行するとソーステキストの抽出だけでなく、
+ 文脈へのグループ化を行うことができます。
+ ソーステキストが表示されるクラスの名前が文脈となります。
+ 従って、この例では、"ArrowPad" が
+ \c ArrowPad クラスの文字列の文脈です。
+ \c Q_OBJECT のマクロは、以下の内容で
+ \c ArrowPad に \c tr(x) を定義します:
+
+ \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 0
+
+ 各ソーステキストが表示されるクラスを把握しておくと、
+ \e {Qt Linguist} で論理的に関連のある文字列をグループ化することが出来ます。
+ 例えば、ダイアログ内のすべての文字列には
+ ダイアログのクラス名の文脈が含まれるため、同時に表示されます。
+ 文字列が表示される文脈によって翻訳の内容が影響を受ける場合があるため、
+ 翻訳者にとって有用な情報となります。
+ 一部の翻訳では、キーボードショートカットを変更する必要があります。
+ また、同じグループにまとめられた特定の文脈(クラス)
+ にすべてのソーステキストを含めることにより、
+ 翻訳者はコンフリクトを起こすことなく、
+ より簡単にショートカットを変更できます。
+
+ \c arrowpad.cpp で、\c ArrowPad クラスを実装します。
+
+ \snippet examples/linguist/arrowpad/arrowpad.cpp 0
+ \snippet examples/linguist/arrowpad/arrowpad.cpp 1
+ \snippet examples/linguist/arrowpad/arrowpad.cpp 2
+ \snippet examples/linguist/arrowpad/arrowpad.cpp 3
+
+ ラベルはユーザ表示可能な文字列であるため、
+ ボタンのラベルごとに \c ArrowPad::tr() を呼び出します。
+
+ \image linguist-arrowpad_en.png
+
+ \snippet examples/linguist/arrowpad/mainwindow.h 0
+ \snippet examples/linguist/arrowpad/mainwindow.h 1
+
+ 上記のスクリーンショットでは、ウィンドウ全体が \c MainWindow です。
+ これは、\c mainwindow.h ヘッダーファイルで定義します。
+ ここでも、\c MainWindow が \e {Qt Linguist} の文脈になるよう、
+ \c Q_OBJECT を使用します。
+
+ \snippet examples/linguist/arrowpad/mainwindow.cpp 0
+
+ \c MainWindow と \c mainwindow.cpp を実装する際に、
+ \c ArrowPad クラスのインスタンスを作成します。
+
+ \snippet examples/linguist/arrowpad/mainwindow.cpp 1
+
+ また、\c MainWindow::tr() を、
+ アクションおよびショートカット用に、計 2 回呼び出します。
+
+ \c tr() を使用して、言語によって異なるキーをサポートします。
+ 英語の場合、"Ctrl+Q" は Quit (終了) に適していますが、
+ オランダ語の翻訳者は "Ctrl+A" (Afsluiten の場合) を、
+ ドイツ語の翻訳者は "Strg+E" (Beenden の場合) を使うといいでしょう。
+ \key Ctrl キーショートカットを \c tr() で使用する場合は
+ 引数を 2 つ使用して、
+ ショートカットが実行する機能を2番目の引数に記述してください。
+
+ \c main.cpp で定義した標準的な \c main() 関数は、以下のようになります。
+
+ \snippet examples/linguist/arrowpad/main.cpp 2
+ \snippet examples/linguist/arrowpad/main.cpp 3
+
+ 現在のロケールに基づいて、使用する翻訳を選択します。
+ 例えば、QLocale::system() は、
+ \c LANG 環境変数の設定によって影響を受ける場合があります。
+ \c .qm メッセージファイル(および TS ファイル)の命名規則に
+ ロケールを使用すると、
+ 簡単にロケールに基づいて翻訳ファイルを選択することが
+ できるようになります。
+
+ 選択したロケールに QM メッセージファイルが存在しない場合、
+ 元のソーステキストが使用され、エラーは生成されません。
+
+ \section1 フランス語からオランダ語に翻訳する
+
+ ここでは、サンプルアプリケーションをフランス語に翻訳することから始めます。
+ \e {Qt Linguist} を起動し、\c arrowpad_fr.ts の作業を行います。
+ 2つの文脈 ("ArrowPad" および "MainWindow")
+ にグループ化された7つのソーステキスト ("\&Up", "\&Left" 等)
+ が含まれているはずです。
+
+ 次に、以下の翻訳を入力します:
+
+ \list
+ \o \c ArrowPad
+ \list
+ \o \&Up - \&Haut
+ \o \&Left - \&Gauche
+ \o \&Right - \&Droite
+ \o \&Down - \&Bas
+ \endlist
+ \o \c MainWindow
+ \list
+ \o E\&xit - \&Quitter
+ \o Ctrl+Q - Ctrl+Q
+ \o \&File - \&Fichier
+ \endlist
+ \endlist
+
+ 翻訳の入力が終わったら、 \key{Ctrl+Return} (もしくは\gui {完了にして次へ}
+ ボタン)を押すと、
+ 翻訳が完了とマークされ次のソーステキストに移動するため便利です。
+
+ ファイルを保存して、オランダ語の翻訳でも同じ手順を実行し、
+ \c arrowpad_nl.ts の作業を行います:
+
+ \list
+ \o \c ArrowPad
+ \list
+ \o \&Up - \&Omhoog
+ \o \&Left - \&Links
+ \o \&Right - \&Rechts
+ \o \&Down - Omlaa\&g
+ \endlist
+ \o \c MainWindow
+ \list
+ \o E\&xit - \&Afsluiten
+ \o Ctrl+Q - Ctrl+A
+ \o File - \&Bestand
+ \endlist
+ \endlist
+
+ \c tt1_fr.ts と \c tt1_nl.ts の翻訳ソースファイルは
+ QM ファイルに変換する必要があります。
+ 以前と同様の方法で \e {Qt Linguist} を使用して変換できますが、
+ コマンドラインツール \c lrelease を使うと
+ \e {Qt Linguist} から個々の \gui {ファイル|リリース} を読み込まなくても、
+ アプリケーションの\e{すべての} QM ァイルを作成できます。
+
+ 以下を入力します:
+
+ \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 1
+
+ これにより、\c arrowpad_fr.qm と \c arrowpad_nl.qm が作成されます。
+ \c LANG 環境変数を \c fr に設定します。
+ Unix では、以下の2つのコマンドのいずれかが機能します。
+
+ \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 2
+
+ Windows では、\c autoexec.bat を修正するか、以下を実行します。
+
+ \snippet doc/src/snippets/code/doc_src_examples_arrowpad.qdoc 3
+
+ プログラムを実行すると、フランス語版が表示されます:
+
+ \image linguist-arrowpad_fr.png
+
+ \c LANG=nl を設定し、オランダ語でも同じ手順を実行します。
+ これで、オランダ語版が表示されます:
+
+ \image linguist-arrowpad_nl.png
+
+ \section1 エクササイズ
+
+ \e {Qt Linguist} で未完了の翻訳を行います。
+ 例えば、各テキストのチェックマークをクリックして翻訳を未完了の状態にして保存します。
+ その後、 \c lupdate 、\c lrelease 、サンプルの順に実行します。
+ この変更がどのような影響を及ぼしましたか。
+
+ \c LANG=fr_CA (フランス語(カナダ))に設定し、
+ サンプルプログラムを再実行します。
+ \c LANG=fr の場合と同じ結果になる理由を説明してください。
+
+ オランダ語翻訳のショートカットのいずれかを変更し、
+ \e \&Bestand と \e \&Boven の競合を解消します。
+*/
diff --git a/doc/src/ja_JP/examples/hellotr.qdoc b/doc/src/ja_JP/examples/hellotr.qdoc
new file mode 100644
index 0000000..cc01b81
--- /dev/null
+++ b/doc/src/ja_JP/examples/hellotr.qdoc
@@ -0,0 +1,200 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example linguist/hellotr
+ \title サンプル: こんにちは tr()
+
+ これは、小さな Hello World プログラムを日本語に翻訳する例です。
+ 以下のスクリーンショットは英語版です。
+
+ \image linguist-hellotr_en.png
+
+ Qt アプリケーションの翻訳に関する詳細は、\l{Qt Linguist manual}
+ をご覧ください。
+
+ \section1 各行の簡単な解説
+
+ \snippet examples/ja_JP/linguist/hellotr/main.cpp 0
+
+ この行では、 QTranslator クラスの宣言を読み込みます。
+ QTranslator クラスのオブジェクトは、
+ ユーザに表示する文字列を翻訳します。
+
+ \snippet examples/ja_JP/linguist/hellotr/main.cpp 5
+
+ 親をもたない QTranslator オブジェクトを作成します。
+
+ \snippet examples/ja_JP/linguist/hellotr/main.cpp 6
+
+ プログラムで使用するソーステキストの日本語の翻訳を含む、
+ \c hellotr_ja.qm ( \c .qm というファイル拡張子は省略します)
+ と呼ばれるファイルを読み込みます。
+ ファイルが見つからなくてもエラーは発生しません。
+
+ \snippet examples/ja_JP/linguist/hellotr/main.cpp 7
+
+ \c hellotr_ja.qm の翻訳を、プログラムで使用する翻訳プールに追加します。
+
+ \snippet examples/ja_JP/linguist/hellotr/main.cpp 8
+
+ "Hello world!" を表示するプッシュボタンを作成します。
+ 検索した \c hellotr_ja.qm に "Hello world!" の翻訳が含まれている場合、
+ その翻訳が表示されます。
+ 含まれていない場合、翻訳前のテキストがそのまま表示されます。
+
+ QObject を継承するすべてのクラスには、\c tr() 関数が含まれます。
+ QObject クラスのメンバ関数内では、\c QPushButton::tr("Hello world!")
+ や \c QObject::tr("Hello world!") の代わりに、シンプルに
+ \c tr("Hello world!") を使います。
+
+ \section1 英語版のアプリケーションを実行する
+
+ 翻訳ファイル \c hellotr_ja.qm の作成が終わっていないため、
+ 以下のアプリケーションを起動したときに元の文字列が表示されます。
+
+ \image linguist-hellotr_en.png
+
+ \section1 日本語のメッセージファイルを作成する
+
+ 最初のステップは、プロジェクトのすべてのソースファイルを列挙する
+ \c hellotr.pro を作成することです。
+ プロジェクトファイルは、qmake プロジェクトファイルまたは、通常の
+ makefile である可能性があります。
+ 以下の記述を含むプロジェクトファイルを作成してください。
+
+ \snippet examples/ja_JP/linguist/hellotr/hellotr.pro 0
+ \snippet examples/ja_JP/linguist/hellotr/hellotr.pro 1
+
+ \c TRANSLATIONS は、管理するメッセージファイルを指します。
+ この例では、日本語の翻訳のみ管理します。
+
+ ファイル拡張子は、\c .qm ではなく、\c .ts であることにご注意ください。
+ \c .ts は翻訳のソースファイルのフォーマットであり、
+ アプリケーションの開発時に使用します。
+ プログラマーまたはリリースマネージャーは \c lupdate プログラムを実行し、
+ ソースコードから抽出したソーステキストを使用して
+ TS ファイルの生成と更新を行います。
+ 翻訳者は、 \e {Qt Linguist} を使用して TS ファイルの読み取りと更新を行い、
+ 翻訳の追加と編集を行います。
+
+ TS の形式は、ユーザが直接閲覧可能な XML 形式であるため、
+ 直接Eメールで送信したり、簡単にバージョン管理の対象にすることが出来ます。
+ このファイルを手動で編集する場合、XML の既定のエンコードは UTF-8 で、
+ Latin1(ISO 8859-1)ではないことに気をつけてください。
+ '\oslash'(ノルウェー語の o にスラッシュが付いたもの)などの
+ Latin1 文字を入力する1つの方法は、XML エンティティ "ø"
+ を使用することです。
+ これはすべての Unicode 4.0 文字に対して有効です。
+
+ 翻訳が完了したら、\c lrelease プログラムを使用して、
+ TS ファイルを QM ファイル(Qt Message ファイル)形式に変換します。
+ QM 形式は、極めて高速な検索性能を実現するようにデザインされた
+ コンパクトなライブラリ形式です。
+ \c lupdate と \c lrelease はどちらも、
+ プロジェクト全体のソースファイルとヘッダーファイル
+ (プロジェクトファイルの HEADERS および SOURCES 行で指定されている)
+ を読み取り、\c tr() 関数呼び出しの際に表示される文字列を抽出します。
+
+ \c lupdate は、メッセージファイル(この場合は \c hellotr_ja.ts)
+ の作成と更新を行い、これらをソースコードと同期させるために使用します。
+ \c lupdate にはデータの削除機能がないため、
+ \c lupdate はいつでも安全に実行できます。
+ 例えば、ソースが変更されるたびに TS ファイルが更新されるよう、
+ makefile に記述できます。
+
+ それでは、以下のように \c lupdate を実行してみましょう:
+
+ \snippet doc/src/ja_JP/snippets/code/doc_src_examples_hellotr.qdoc 0
+
+ (\c -verbose オプションは、操作を説明するメッセージを表示するよう
+ \c lupdate に指示します。)
+ 現在のディレクトリに、以下の内容で
+ \c hellotr_ja.ts ファイルが作成されていると思います:
+
+ \snippet doc/src/ja_JP/snippets/code/doc_src_examples_hellotr.qdoc 1
+
+ ツール (\c lupdate、 \e {Qt Linguist}、\c lrelease)
+ を使用して読み取りと更新を行うため、
+ ファイル形式を理解する必要はありません。
+
+ \section1 Qt Linguist を使用して日本語に翻訳する
+
+ XML やテキストエディタを使用して、TS ファイルを翻訳することも出来ますが、
+ ここでは \e {Qt Linguist} を使用して翻訳を行います。
+
+ \e {Qt Linguist} を起動するには、以下を入力します。
+
+ \snippet doc/src/ja_JP/snippets/code/doc_src_examples_hellotr.qdoc 2
+
+ 左上のペインに "QPushButton" が表示されるはずです。
+ これをダブルクリックし、次に "Hello world!" をクリックして、
+ \gui Translation ペイン (ウィンドウ右中央)に
+ "こんにちは、世界!" と入力します。
+ 感嘆符(!)を忘れないように付けてください!
+
+ \gui{完了} チェックボックスをオンにして、
+ メニューバーから \gui{ファイル|保存} を選択します。
+ TS ファイルから、以下の記述がなくなります。
+
+ \snippet doc/src/ja_JP/snippets/code/doc_src_examples_hellotr.qdoc 3
+
+ その代わりに以下が含まれます。
+
+ \snippet doc/src/ja_JP/snippets/code/doc_src_examples_hellotr.qdoc 4
+
+ \section1 日本語版のアプリケーションを実行する
+
+ 日本語版のアプリケーションを実行する前に、
+ TS ファイルから QM ファイルを生成する必要があります。
+ QM ファイルは、\e {Qt Linguist}(単一の TS ファイルの場合)のメニューから、
+ もしくは、コマンドラインプログラム \c lrelease を使用して生成できます。
+ \c lrelease を使用する場合、
+ プロジェクトファイルに列挙されている TS ファイルごとに
+ 1 つの QM ファイルを作成することが出来ます。
+ \e {Qt Linguist} のメニューバーから \gui{ファイル|リリース} を選択し、
+ ポップアップ表示される \gui{ファイルの保存} ダイアログで\gui{保存}を選択し、
+ \c hellotr_ja.ts から \c hellotr_ja.qm を生成します。
+ 今すぐ \c hellotr プログラムを再実行してみましょう。
+ これで、ボタンに "こんにちは、世界!" と表示されます。
+
+ \image linguist-hellotr_ja.png
+*/
diff --git a/doc/src/ja_JP/examples/trollprint.qdoc b/doc/src/ja_JP/examples/trollprint.qdoc
new file mode 100644
index 0000000..1686774
--- /dev/null
+++ b/doc/src/ja_JP/examples/trollprint.qdoc
@@ -0,0 +1,286 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example linguist/trollprint
+ \title サンプル: トロールプリント
+
+ トロールプリント(Troll Print)は、
+ ユーザがプリンタの設定をするためのサンプルアプリケーションです。
+ これには、英語とポルトガル語の2つのバージョンが用意されています。
+
+ \image linguist-trollprint_10_en.png
+
+ この例では、いくつかのポルトガル語の翻訳を含む翻訳ファイル
+ \c trollprint_pt.ts を用意しました。
+
+ 同じアプリケーションの2つのバージョン、
+ Troll Print 1.0 と 1.1 をリリースすることを想定します。
+ 1つのバージョンで作成した翻訳を次のリリースで再利用する方法を習得します。
+ (このチュートリアルでは、いくつかのソースファイルの編集が必要です。
+ 新しい一時ディレクトリにすべてのファイルをコピーして、
+ ここで作業を行うのがベストでしょう。)
+
+ Qtアプリケーションの翻訳の詳細については、
+ \l{Qt Linguist manual}{Qt Linguist マニュアル} をご覧ください。
+
+ \section1 各行の簡単な解説
+
+ \c PrintPanel クラスを \c printpanel.h で宣言します。
+
+ \snippet examples/linguist/trollprint/printpanel.h 0
+
+ \c PrintPanel は QWidget の派生クラスです。
+ \c tr() が正しく動作するには、\c Q_OBJECT マクロが必要です。
+
+ 実装ファイルは \c printpanel.cpp です。
+
+ \snippet examples/linguist/trollprint/printpanel.cpp 0
+
+ Troll Print 1.0 で一部のコードがコメントアウトされています。
+ Troll Print 1.1 にバージョンアップする際に、
+ コメントから戻してください。
+
+ \snippet examples/linguist/trollprint/printpanel.cpp 1
+ \snippet examples/linguist/trollprint/printpanel.cpp 2
+
+ PrintPanel では、\c tr("Enabled") と \c tr("Disabled")
+ を2回ずつ使用することに注意してください。
+ "Enabled" と "Disabled" はどちらも同じ文脈で表示されるため、
+ \e {Qt Linguist} では、それぞれ1回目の使用に対してのみ表示され、
+ 2回目以降の使用に対しては翻訳が流用されるため表示されません。
+ これは便利な時間短縮ツールですが、ポルトガル語などの一部の言語では、
+ 2回目の使用に対して異なる翻訳が必要になります。
+ これから、\e {Qt Linguist}で、
+ すべての \c tr() に対して異なる翻訳を表示できるように設定する方法を学習します。
+
+ \c MainWindow, \c mainwindow.h はシンプルなヘッダーファイルです。
+ \c mainwindow.cpp の実装には、翻訳対象としてマークする必要のある
+ ユーザに表示するソーステキストがあります。
+
+ \snippet examples/linguist/trollprint/mainwindow.cpp 0
+
+ ウィンドウのタイトルは翻訳する必要があります。
+
+ \snippet examples/linguist/trollprint/mainwindow.cpp 1
+ \snippet examples/linguist/trollprint/mainwindow.cpp 3
+
+ また、アクションとメニューも翻訳する必要があります。
+ キーボードショートカット "Ctrl+Q" に対して使用している \c tr()
+ の第 2 引数は、このショートカットがどのような機能を有しているかを
+ 翻訳者に示す唯一の情報であることに注意してください。
+
+ \snippet examples/linguist/trollprint/main.cpp 0
+
+ \c main.cpp の \c main() 関数は、
+ \l{linguist/arrowpad}{アローパッド} の例の場合と同じになります。
+ 具体的には、現在のロケールに基づいて、翻訳ファイルを選択します。
+
+ \section1 英語とポルトガル語で Troll Print 1.0 を実行する
+
+ 既存の \c trollprint_pt.ts ファイルの翻訳を使用します。
+
+ \c LANG 環境変数を \c pt に設定して、\c trollprint を実行します。
+ QM ファイルがないため、スクリーンショットは英語版のままです。
+ ここで、\c lrelease (例: \c {lrelease trollprint.pro})を実行し、
+ サンプルを再実行します。
+ これで、ポルトガル語版(Troll Imprimir 1.0)になりました:
+
+ \image linguist-trollprint_10_pt_bad.png
+
+ 翻訳は正しく表示されていますが、誤りがあります。
+ 文法的に正しいポルトガル語では、
+ "Enabled" が2回目に使用されるときの正しい翻訳は、
+ "Ativado" ではなく "Ativadas" であり、
+ "Disabled" が2回目に翻訳されるときも、
+ 語尾を同様に変化させる必要があります。
+
+ \e {Qt Linguist} で \c trollprint_pt.ts を開くと、
+ ソースコードには "Enabled" と "Disabled" が2回ずつ使われていますが、
+ 翻訳ソースファイルでは1回ずつしか使われていません。
+ これは、\e {Qt Linguist} では、
+ ソーステキストが重複する場合は翻訳を流用することにより、
+ 翻訳者の作業を最小限に抑えようとするためです。
+ このように類似した翻訳に誤りがある場合、
+ プログラマは繰り返し使用する際に翻訳の曖昧さを排除する必要があります。
+ これは、2個の引数を取る\c tr() を使用することにより、
+ 容易に実行できます。
+
+ 実際には、翻訳者の"文脈"は変更する必要のある文字列が表示されるクラスに対するクラス名であるため、
+ どのファイルを変更すべきか簡単に特定できます。
+ この場合、ファイルは \c printpanel.cpp であり、
+ 変更すべき行は4行あります。
+ ラジオボタンの最初のペアの \c tr() 呼び出しに、2つ目の引数 "two-sided"(両面) をに追加します:
+
+ \snippet doc/src/snippets/code/doc_src_examples_trollprint.qdoc 0
+
+ そして、ラジオボタンの2番目のペアの \c tr() 呼び出しに、
+ 2つ目の引数 "colors"(色) を追加します。
+
+ \snippet doc/src/snippets/code/doc_src_examples_trollprint.qdoc 1
+
+ ここで、\c lupdate を実行し、\e {Qt Linguist} で
+ \c trollprint_pt.ts を開きます。2 つの変更個所がわかるはずです。
+
+ まず、翻訳ソースファイルには、\e{3組}の "Enabled" と
+ "Disabled" のペアが含まれています。
+ 最初のペアは、既に利用されていないテキストであることを意味する灰色になっています。
+ これは、 \c tr() 内の文字列が第二引数を追加した新たな
+ \c tr() の文字列で置き換えられたからです。
+ 2番目のペアには、"two-sided"(両面) というコメントが含まれており、
+ 3番目のペアには、"colors"(色) というコメントが含まれています。
+ これらのコメントは、\e {Qt Linguist} に
+ \gui {開発者のコメント} として表示されます。
+
+ 次に、翻訳者の作業を最小限に抑えるために、
+ 新たに使用される "Enabled" と "Disabled" の文字列に対して、
+ 訳語 "Ativado" と "Desativado" が自動的に使用されます。
+ これらの訳語は、これらの原語が2回目に使用される場合の正しい翻訳ではありません。
+ ここからが、チュートリアルの出発点です。
+
+ 2番目の "Ativado" を "Ativadas" に、
+ 2番目の "Desativado" を "Desativadas" に変更し、保存して終了します。
+ \c lrelease を実行して最新のバイナリ \c trollprint_pt.qm ファイルを作成し、
+ Troll Print (または Troll Imprimir) を実行します。
+
+ \image linguist-trollprint_10_pt_good.png
+
+ \e {Qt Linguist} では "comments" と呼ばれる
+ \c tr() 呼び出しの2つ目の引数は、
+ 同じ文脈(クラス)で発生する類似したソーステキストを識別します。
+ コメントは、たとえば Ctrl キーによるキーボードショートカットが
+ ショートカットによって実行される機能を伝達する唯一の手段である場合等に、
+ 翻訳者に情報を提供するのに便利です。
+
+ 翻訳者に情報を提供する他の手段は、
+ 翻訳の必要があるソーステキストを含むアプリケーションの
+ 特定の部分への移動方法に関する情報を提供することです。
+ これにより、翻訳者は、翻訳が表示される文脈を確認し、
+ 翻訳を検索してテストを行うことができます。
+ これは、ソースコードで \c TRANSLATOR
+ コメントを使用して行います:
+
+ \snippet doc/src/snippets/code/doc_src_examples_trollprint.qdoc 2
+
+ 一部のソースファイル、特にダイアログクラスのコメントに
+ ダイアログに到達するまでに必要な操作を記述します。
+ また、\c mainwindow.cpp や \c printpanel.cpp など、
+ 適切なサンプルファイルにこれらを追加することもできます。
+ \c lupdate を実行して \e {Qt Linguist} を起動し、
+ \c trollprint_pt.ts を読み込みます。
+ ソーステキストの一覧を参照する際に、
+ \gui{ソーステキスト}と\gui{開発者のコメント}
+ の領域に表示されるコメントを確認できます。
+
+ 特に大きなプログラムでは、翻訳者が自分の翻訳を探し、
+ それが適切かどうかを確認することが困難な場合があります。
+ コメントは役立つナビゲーション情報を提供するため、
+ 翻訳に要する時間を節約できます:
+
+ \snippet doc/src/snippets/code/doc_src_examples_trollprint.qdoc 3
+
+ \section1 Troll Print 1.1
+
+ これから、Troll Print のバージョン 1.1 のリリースの準備を行います。
+ テキストエディターを起動して、次の手順に従って変更を行ってください:
+
+ \list
+ \o \c printpanel.cpp の文字列 "\<b\>TROLL PRINT\</b\>" を引数に
+ QLabel を作成する2つの行のコメントを解除します。
+ \o ソースの変更: \c printpanel.cpp で、"2-sided" を
+ "Two-sided" に置き換えます。
+ \o \c mainwindow.cpp で、すべての "1.0" を "1.1" に置き換えます。
+ \o \c mainwindow.cpp で、著作権表示の年号を 1999-2000 に更新します。
+ \endlist
+
+ (実際のアプリケーションでは、バージョン番号と著作権表示の年号は
+ const または #define をつかって定義するでしょう。)
+
+ 終了したら、\c lupdate を実行し、\e {Qt Linguist} で
+ \c trollprint_pt.ts を開きます。以下の項目は、特別なコンテンツです:
+
+ \list
+ \o \c MainWindow
+ \list
+ \o Troll Print 1.0 - 古いテキストとして灰色でマーク
+ \o About Troll Print 1.0 - 古いテキストとして灰色でマーク
+ \o Troll Print 1.0. Copyright 1999 Software, Inc. -
+ 古いテキストとして灰色でマーク
+ \o Troll Print 1.1 - 自動的に "Troll Imprimir 1.1" に翻訳(未完了)
+ \o About Troll Print 1.1 - 自動的に "Troll Imprimir 1.1" に翻訳(未完了)
+ \o Troll Print 1.1. Copyright 1999-2000 Software,
+ Inc. - 自動的に "Troll Imprimir 1.1.
+ Copyright 1999-2000 Software, Inc." に翻訳(未完了)
+ \endlist
+ \o \c PrintPanel
+ \list
+ \o 2-sided - 古いテキストとして灰色でマーク
+ \o \<b\>TROLL PRINT\</b\> - 未翻訳のテキストとして"?"マーク
+ \o Two-sided - 未翻訳のテキストとして"?"マーク
+ \endlist
+ \endlist
+
+ \c lupdate は、修正を容易に行い、数字の処理を効率的に行うために、
+ 様々な処理を行っています。
+
+ \c MainWindow の翻訳の見直しを行います。
+ "\<b\>TROLL PRINT\</b\>" を "\<b\>TROLL IMPRIMIR\</b\>" と翻訳します。
+ "Two-sided" を翻訳する際には、\gui{フレーズと推測} の欄から
+ "2-lados" をダブルクリックして訳に選択した後に、
+ "2" を "Dois" に変更します。
+
+ 保存して終了し、\c lrelease を実行します。
+ ポルトガル語版の表示は以下のようになります:
+
+ \image linguist-trollprint_11_pt.png
+
+ \gui{Ajuda|Sobre} (\gui{Help|About}) を選択し、
+ バージョン情報ボックスを確認します。
+
+ \gui{Ajuda|Sobre Qt} (\gui{Help|About Qt}) を選択した場合、
+ 英語版のダイアログが表示されます。
+ Qt の翻訳はまだ終わっていません。
+ 詳細については、\l{Internationalization with Qt} を参照してください。
+
+ ここで、\c LANG=en を設定し、元の英語版を実行してみてください:
+
+ \image linguist-trollprint_11_en.png
+*/