Jump to content

Help:Extension:Translate/構造化されていない要素の翻訳

From mediawiki.org
This page is a translated version of the page Help:Extension:Translate/Unstructured element translation and the translation is 100% complete.

このページではカスタマイズしたシステム メッセージを翻訳するときに、翻訳拡張機能を利用して処理しやすくする方法を説明します。 ウィキの、必ずユーザーの UI 言語で自動表示するべき箇所で使用できます。 最もよくある例は、通常、1 セットだけ翻訳すれば済むサイドバーですが、本文ページでも同一タイトルのページ内または複数のテンプレート群でさえ、翻訳を一括処理する場合にこの拡張機能を利用できます。

この方法は、ページ全体を翻訳することが適さないウィキ本文、つまり本文中の翻訳者に見せたくないマークアップ、マークアップが過剰なページ、テンプレートなどにも適用できます。 これはシステムメッセージや、{{int:}} マジックワード (ウィキ文を書ける場所ならどのシステムメッセージも取り込める) とすべて関連します。 このマジックワードは、UI 言語における標準/カスタマイズ済み/新規のシステムメッセージを、自動的に展開できるようにします。

ウィキのインターフェイスの自動地域化の機能は、ウィキの本文にも適用できますが、インターフェイスの言語を既定の言語から変更できない匿名利用者の問題は解決できません。下記の 言語の選択の節にある注釈をご覧ください。

ページの翻訳と比較して、この手法にはいくつかの難点があります。

  1. MediaWiki 開発者は通常、キャッシュを不安定にする {{int:}}マジックワードの使用を推奨しません。{{int:}}を使用すると、そのページの特定のバージョンのキャッシュをレンダリングして格納するのではなく、潜在的に何百もの異なる言語でキャッシュする必要があるのです。
  2. 設定が複雑で、wiki の設定にアクセス権が必要です。
  3. 古くなった翻訳を自動的に追跡する機能がなく、新しいメッセージが追加/削除された際に完成度の統計が無効になるかもしれません。
  4. メッセージ群の翻訳やメッセージの追加ができるのは、ウィキ管理者のみです。そのためこのシステムの使用はあまり変更しないページに限定される、言い換えるなら頻繁に更新するページで用いると管理者の仕事を増やしてしまうことになります。

それでも利点はあり、多くの場合、この拡張機能は有効でジョブを完了します。一般的な使用法のチュートリアルを2件紹介する前に、次の節では、この方法を導入するには必須の前処理として、メッセージ群の設定方法を説明します。

セットアップ

サーバー管理者はこの手順を完了する必要があります。以下のスニペットを LocalSettings.php に追加する必要があります:

$wgHooks['TranslatePostInitGroups'][] = function ( &$list, &$deps, &$autoload ) {
	$id = 'wiki-sidebar';
	$mg = new WikiMessageGroup( $id, 'sidebar-messages' );
	$mg->setLabel( 'サイドバー' );
	$mg->setDescription( 'このウィキのサイドバーに採用されたメッセージ群' );
	$list[$id] = $mg;
	return true;
};

メッセージ群 ID wiki-sidebar は固有である必要があり、同じ ID を複数の群で再利用してはいけません。 コンストラクター WikiMessageGroup の第 2 引数 sidebar-messages はページ [[MediaWiki:Sidebar-messages]] を意味しています。 このラベルはドロップダウンメニューその他、メッセージ群を選べる場所に表示されます。 説明文書はSpecial:Translateをご参照ください。 これらの値は新しくカスタムのメッセージ群を追加するとき調整できる値で、皆さんのウィキに適したものに必ず変更する必要があります。

地域化されたサイドバーのチュートリアル

セットアップの手順が既に済んでいることを想定しています。サイドバーのカスタマイズ ガイドの手順に注意深く従ってください。以下のようなシンプルなサイドバーを作成したと想定します:

* sidebar-commonpages
** FAQ|sidebar-faq

そして、[[MediaWiki:Sidebar-commonpages]] contains の内容は Common pages で、[[MediaWiki:Sidebar-faq]] の内容は Frequently asked questions です。

あとは [[MediaWiki:Sidebar-messages]] (または前の手順で定義したもの) に移動して、以下のように書くだけです:

sidebar-commonpages sidebar-faq

つまり、これは名前空間名「MediaWiki:」を除いたシステム メッセージ名を、空白で区切って列挙したものです。

さらに、[[Special:Translate/wiki-sidebar]] (または前の手順で定義したもの。定義済みの群については [[Special:Translate]] をご覧ください。) に移動してください。これでメッセージを他の言語に翻訳できるようになりました。すべてのメッセージが MediaWiki 名前空間にあるため、メッセージの一覧を編集したり実際に翻訳したりできるのはインターフェイス管理者のみです。

地域化されたメインページのチュートリアル

マークアップやテンプレートが多いページでも、翻訳拡張機能を使えます。その長所はメッセージが最初からユーザーのシステム言語で表示される点です。短所はページを表示する言語を変更するには、個人設定で言語を選び直さなければならない点です。

作業手順は前述のチュートリアルと同様です:

  1. 新しいメッセージ群を用意します
  2. ウィキページを開きます
  3. 翻訳対象の部分を {{int:Mainpage-messagename}} に置換して、その内容を [[MediaWiki:Mainpage-messagename]] に移動します
  4. [[MediaWiki:Mainpage-messages]] (or what was defined in the setup) に移動して、メッセージ名を空白区切りで追加します
  5. これで完了です。[[Special:Translate]] でメインページを翻訳してください。

例を示します。以下の内容の [[Main Page]] を作成します:

<div style="max-width:20em;font-size:200%;line-height:1.4;text-align:center;color:green">
''{{SITENAME}} はシェフ(料理人)やパン職人のコミュニティで、チョコレート愛好家が集まっています。''
</div>
現在、チョコレートだらけのページが{{NUMBEROFPAGES}}件あります。

そしてこれを以下のように変更します:

<div style="max-width:20em;font-size:200%;line-height:1.4;text-align:center;color:green">
''{{int:mainpage-slogan}}''
</div>
{{int:mainpage-pagecount}}

以下の内容の [[MediaWiki:Mainpage-slogan]] を作成します:

{{SITENAME}} はシェフ(料理人)やパン職人のコミュニティで、チョコレート愛好家が集まっています。

以下の内容の [[MediaWiki:Mainpage-pagecount]] を作成します:

現在、チョコレートだらけのページが$1件あります。

以下の内容の [[MediaWiki:Mainpage-messages]] を作成します:

mainpage-slogan mainpage-pagecount

これで完了です! 新しいメッセージを、いつでも追加/除去できます。

言語の選択

利用者がページの言語を切り替えるのに個人設定を変更する必要があるだけでなく、匿名の利用者はインターフェイスの言語を変更できずに常にウィキの既定の言語を使用することになります。匿名の利用者に言語を変更する方法を提供しない場合、このシステムで翻訳したページは既定の言語で表示されます。

幸運なことに解決策があります。UniversalLanguageSelector 拡張機能を使用すると、利用者の好みの言語を推測でき、利用者が手動で他の言語を選択したり、その設定を Cookie に保存することもできます。これには (ほぼデバッグのみに使用する) uselang パラメーターのようなトリックは不要です。