Help:Extension:Translate/Group configuration example/ja

このチュートリアルの対象は開発者と経験の長い翻訳管理者です. ソフトウェアのインターフェイス メッセージ翻訳用に設定ファイルを新設する方法について、実践的な面を細かく解説します. これは単体ではなくgroup configuration reference manual (グループ設定参照マニュアル) と共に使用するものであり、このチュートリアルをすべて読んだ後に質問があれば翻訳拡張機能の開発者が喜んで助力します.

必須条件

 * MediaWiki をインストール
 * 翻訳拡張機能をし
 * 拡張機能の.

このチュートリアルは、Translate 拡張機能 リビジョン r97948 (2011-09-23) に基づいて作成されました.

このチュートリアルではMyBBプロジェクトの特定の部分の翻訳を可能にするプロセスを解説します. その他のプロジェクトやファイルを翻訳対象に追加する場合も、同様の段階をたどることができます. translatewiki.net固有の部分もあることから、利用者の事例に合わせて使用する部分を選ぶべきで、一言一句チュートリアルどおりにするべきではありません.

手順 1: ソースコードのチェックアウト
を作業ディレクトリとして、MyBB のソースコードをチェックアウトしましょう. この例では、作業ディレクトリを  とします.

cd /home/betawiki/projects svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

sudo -u betawiki svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

次に、メッセージを含むファイル群を見つける必要がありますが、これらは下位ディレクトリ で見つかり、英語の原文メッセージはさらにその下位ディレクトリ にあります.

では、プロジェクトの最初のローカライズ ファイルとして から開始しましょう.

手順 2: ファイル形式対応
MediaWikiのインストールディレクトリには および 配下にファイル形式サポートのクラスがあり、プロジェクトごとにメッセージ群と地域化ファイルを対応付けするために用います. サポートされている形式を理解するには、もう少し掘り下げて読みこむ必要があります. そこで最初はFlatPhpFFSクラスを使用し、PHPファイルとの整合性を試してみることにしました.

こうして対応付けするファイルとそのFFSクラスが決まりました. これからグループ設定を書く必要があります. これをYAML（ヤメル、ヤムル）ファイルと呼びます.

を参照すると、のリンクがあります. では例示された最小のファイルを使い、BASIC節から取り掛かりましょう.

例文の変数は、単に自分の場合の変数に置き換えます.

文にはウィキテキストのどの構文も使えます. 元のサンプルでは、 タグを用いて文を翻訳対象に指定するスマートなコツを示しています. しかしその場合は Mediawiki:Message-key ページに既定の文を定義しなければなりません. 名前空間IDが定数によって追加される点に注意し、カスタム名前空間を使う方法を参照してください.

ここでもう1点必要なのが 節です. 説明文書に提示されたサンプルを使います.

おや、 が言語コード、つまり既定では となっています. この段階ではMyBBが使用するディレクトリ構造を変更しないでおきましょう. 代わりにこの目的用に設計された機能code mapを使うことにすると、それぞれの言語に対応するコードをここで扱うプロジェクトの識別子に対応付けすることができます.

その結果、以下のようになります:

基本的に、ここでは というコードは上記の例で が であったように、英語版メッセージファイルのディレクトリを示します. キーは と通常は同一で、ただし接頭辞 は付きません.

ここまで来ましたね. ではこのファイルをどこかに保存するわけですが、例えば という名前にして、の保存先と同じにするか検討します. ファイル全体像は次のとおりです.

次に拡張機能にそのファイルを読ませます. に以下の各行を記入します.

これを実行した後、スクリプト   を実行するために、Help:Extension:Translate/Group management の手順に従ってください.

ログインして、利用者に「translate-manage」権限が適切に設定されていることを確認して、 Special:ManageMessageGroups に移動しましょう.

以下のように表示される場合があります:

No valid namespace defined, got NS_MYBB. Backtrace: <...>

説明文書を注意深く読むことで、MediaWiki に名前空間を登録するために、この例では以下の行を  に追加する必要があることにお気付きかもしれません:

この例では 1246 を使用していますが、必要に応じて名前空間番号を自由に指定してください. Translate 拡張機能では、1200-1298 の範囲の偶数の名前空間番号を使用することをお勧めします.

特別ページ ManageMessageGroups を再読み込みすると、以下の行が表示されます:

MyBB This message group has not been imported previously.

MyBB リンクをクリックします. クリックすると、ファイル内にメッセージ一覧が現れます. その結果に問題点がない場合は、「実行」をクリックします.

「実行」をクリックすると、ファイルが処理されて以下のような内容が出力されます:

Imported new version of page MyBB:L\x5b'boardstats'\x5d/en. Imported new version of page MyBB:L\x5b'new posts'\x5d/en. Imported new version of page MyBB:L\x5b'no new posts'\x5d/en. ... Cache rebuild. All done!

ファイルが非常に大きい場合は、最初に  を実行する必要があります. これは PHP のタイムアウト制限によるもので、ウェブ インターフェイスが一度に取り込めるメッセージ数に上限があるためです. この制限に遭遇した場合は、ページ下部にある、残りのメッセージを取り込むボタンをクリックしてください.

手順 3: 他のファイルの追加
MyBB に、翻訳対象の 2 つめのファイルを追加しましょう. この方法は 2 通りあります:

アプローチ 1: 新しい YAML ファイルの追加
単に、新しい YAML ファイルを追加して新しい名前で保存します. さらにそれを  内から呼び出して、上記のすべての手順を実行します. ファイルは以下のようになります:

上記の例でお分かりのように、この新しいグループには異なる ID を使用しなければなりません.

このアプローチは簡単ですが、翻訳単位が大量にある場合には適用できません (つまり、メッセージ群ごとに対応するファイルが必要です). 値の一部を更新する必要が生じた際、これらのファイルすべてを更新する必要があり、大変です. 幸運なことに別の方法があるため、以下に示します:

アプローチ 2: テンプレート構文
共通の値をテンプレートに入れるという発想です. 各群は足りない値をテンプレートから取得するため、群ごとに同じ記述を繰り返す必要がありません.

MyBB の例に戻りましょう. 、 、 を include しましょう. YAML ファイルを以下のように更新する必要があります:

上記の例で明らかなように、 は一度のみ定義されます. ファイルの追加および除去は、上記のファイルの節の追加や削除と同じくらい簡単です.

特別ページ ManageMessageGroups に移動すると項目が表示されるようになりました. 以下のような 3 つの項目です:

MyBB global messages: This message group has not been imported previously. MyBB index page: This message group has not been imported previously. MyBB show thread: This message group has not been imported previously.

If there are a lot of files to be included in your project, it may be a good idea to write a script that generated your YAML file for you. An example can be found in trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

手順 4: 集約群
集約群を追加して、その下位群としてメッセージ ファイルを定義することで、以下の 2 つの利点があります:


 * Less work for translators to select different message groups, in particular for maintenance work. Translators can simply open the aggregate group and translate or update everything that needs updating or translation for all the groups.
 * Statistics can be reported on the aggregate group level, i.e. whole project.

集約群を定義するには、TEMPLATE 節の直後かつ個別の下位群の定義の前に、以下の節を追加する必要があります:

これでかなり分かりやすくなりますが、あと一段階不足しています. この時点で、Special:Translate に移動すると、MyBB 親群が表示されます (実は正しく動作します!) が、下位群も別の群として列挙されています.

これが修正方法です. に以下の行を追加します:

$wgTranslateGroupStructure['/^out-mybb/'] = array( 'mybb' );



これで、指定したパターンに該当する ID を持つ群をすべて取得でき、最初の群を表示してその下のすべてを非表示にします. 少し見苦しいですが正しく動作しています. 集約群を別の集約群の一部にすることはできますが、この construction が対応しているのは 2 階層のみです.

Special:Translate に移動すると親群 MyBB のみが表示されるようになりました. さらに、リンク「3 下位群を表示」が表示されます. これをクリックすると下位群の名前が表示されます.

この文書では言及しなかった TAGS やその他の節についてマニュアルで確認してください.

手順 5: クリーンアップ
translatewiki.net が対応しているプロジェクトの YAML ファイルは、Git の リポジトリにコミットされています.

translatewiki.net では、 の行は実際には   にあります. translatewiki.net 上のサンドボックスウィキには  がない、というのがすべてを   に追加した理由です.