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: ファイル形式対応
In our MediaWiki installation directory, under  and    we can see the classes for file format support, which are used to map message groups to localisation files of each project. You have to do a bit digging to actually see what kind of formats are supported. So we just decide to try and use FlatPhpFFS class first and see how well it works with our PHP file.

So we have a file to map and we have chosen the FFS class for it. Now we need to write a group configuration. That is a YAML file.

In the you can find a link to. Let's start with the minimal file given as example for the BASIC section.

We can go ahead and just replace the example text with our own values.

The description accepts all wikitext syntax. One nice trick shown in the original example is that you can make it translatable by using. But then you need to define the default text in the page Mediawiki:Message-key. Note that the namespace ID is added through its constant, see how to use custom namespaces.

We need one more thing: the  section. Again starting from the example provided in the documentation:

Hmm,  is the language code, like   by default. For now, we do not want to change the directory structure used by MyBB. Instead we can use a feature designed for this purpose: the code map, which allows us to map language codes of each language to the identifiers used by our project.

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

Basically this says that for code, the   in above will be  , which is the directory for the English message files. The key  is usually the same as , but without the   prefix.

Good. Now let's save this file somewhere, for example to the same folder where is stored, with name. The whole file is:

Then we must tell our extension to read that file. Add the following line to :

これを実行した後、スクリプト   を実行するために、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 上のサンドボックスウィキには  がない、というのがすべてを   に追加した理由です.