Manual:Language/ja


 * Manual:MediaWiki architecture#Languages も参照してください (このページに統合すべきかも)

MediaWiki には、さまざまな種類の言語があります:


 * サイトの本文の言語（ に依拠する ）とは通常、ウィキが存在する限り不変であるべきです.
 * サイト本文の言語の変種 (Manual:$wgDefaultLanguageVariant) とはLanguageConverterを実行したときに既定となるものです.
 * ユーザー インターフェイスの言語（$contextSource->getLanguage、旧来の ）は本来はウィキの利用中一意であり、個人設定もしくはURLの で指定を変更できます.
 * ページ内容の言語について. これはサイトとユーザー言語が同じでもページごとに異なることがあります. 定義はTitleのgetPageLanguageに示してあり、ウィキ文の原文を記した言語を示します.
 * ページ表示言語ないしはユーザー言語の変種とはページの本文言語の変種で、ユーザーが選んだものです. これももし表示中のページのページ本文言語の変種であるなら、設定は変更でき、URLの （またはを例えばタブのひとつを選んで指定できます. 定義はTitleのgetPageViewLanguageにあり、HTMLを解析して本文の記述言語を示します.

これら3つすべてを指して言語オブジェクトと呼びます.

言語コード

 * Wikimedia project codeのことではありません. メタのLanguage codesも参照

言語コードとはMediaWikiがサポートする言語の有効な標準略称であり 、用いるコードは言語の標準識別子 （ほぼISO 639-3に準拠し例外は「定着した」ロケール用のISO 639-1準拠の2文字コード）をインターフェイスとコーディングでしばしば提示または要求されます.

下記の例  では、  が  (訳注: アラビア語) の言語コードです.

適切な言語サポートを行うにはユニコード標準との統一、わけてもCLDRとの連携が欠かせません. MediaWikiロケールに特定の言語を追加する必須条件は該当するISO 639-3 コードがあることです.

Names.php
is the master registry of languages supported by MediaWiki. This is not the same as languages of which MediaWiki will show l10n (JSON files) nor languages of which MediaWiki knows the names (via ), mind you!

フォールバック言語
MediaWiki の言語版により「代替方式」を用意しています. もし使用言語で必要な定義がない時は、MediaWikiが別の言語で表示されます. 一例として言語コード （ケージャン・フランス語）は （フランス語）で代替します. この処置は言語版によって定義していないメッセージを補うためです.

言語の代替は、対応する言語の  ファイル内に記述されています. For instance (grep).

サイトのコンテンツ用言語
サイトのコンテンツ言語の閲覧/取得



ユーザーインターフェイスの言語

 * 既定値
 * $contextSource->getLanguage


 * 変更する方法


 * Special:Preferences (個人設定)
 * URL で  の形式で指定する (uselang を参照)
 * URLを設定できる （または ）は、それがユーザー言語の言語変種である場合に限定


 * 問題
 * インターフェースのメッセージの言語が代替されても、どの言語と代替したのか返さないため、メッセージ単位で実際に使われた言語は判別できません.

ページの本文言語

 * 既定値


 * 特別ページの言語は $wgLang です.
 * CSS ページおよび JS ページは英語です.
 * MediaWiki 名前空間のページでは、言語は下位ページによって異なります. 例えば、MediaWiki:Message/ar はアラビア語 (ar) になり、MediaWiki:Messsage は $wgContLang になります.
 * その他のページはすべて、既定では $wgContLang です.


 * 構成
 * 拡張機能はPageContentLanguage（ページ本文言語）のフックを使い、その他のページを一括して変更します. 特別ページやCSS、JSおよびMediaWiki名前空間はオーバーライドされません.


 * 例
 * Translate extensionではページ翻訳機能に利用. 一例としてtranslatewiki:Project listの訳文translatewiki:Project list/arを見ると、アラビア語の書記方向は正しく反映され左書き.


 * 手動でページの言語を変更
 * ページの言語はMediaWiki 1.24以降、Special:PageLanguageにより選択可能になりました.
 * 既定でWiki言語 ($wgContLang)can が使われるページの本文言語は、変更できます. ただしMediaWiki名前空間の言語は変更できません.
 * この機能は で有効に設定、許可は に設定します.
 * 本文言語の変更はソースの翻訳ページに影響し、翻訳単位を渡す正しいターゲット言語（翻訳後の言語）が変わります. ターゲット言語の翻訳ページが既にある場合、本文言語の変更は承認されません.
 * これに該当するAPIを探すならAPI:SetPageLanguageを参照.


 * 定義する対象


 * SkinTemplate（スキン、外装）ではページの文字表示について  を追加します. dir属性によりwriting direction（書字方向）が正しく設定されます. lang属性は例えば「de」に対して「de-formal」が出力されても、常にルートのコードを取ります.
 * ファイルページにおいては、ユーザー言語にHTML記述が多いため、設定はImagePage.phpで行います.
 * Parser.phpは見出し一覧(TOC) の付番や文法を設定するものの、本文言語にはほとんど影響しません. もし本文言語のみ設定するのなら、使用するのはparserOptions->setTargetLanguageです.
 * diff 文の書字方向 (DifferenceEngine) はページの本文言語に設定されます. 場合によってはこの2つが一致せず$diffEngineObject->setTextLanguage ($code) を代用します.
 * 以降は時刻と数字の設定マジックワードのうち、サイトの言語設定の規制によりDIRECTIONMARKを対象に、NAMESPACE(E)は対象外にしています. これは言語Bを用いるページにおいて言語Aを指定するテンプレートがあったとしても、対象のページでは言語Bで処理されるということを指します.


 * 複数言語を用いた単一ページ
 * 単一のページに複数言語を使った場合には原則は適用外ですが、文が他の言語で記述されたとマークするには

単純な  タグを使用できます. CSSクラスを適用した場合は、dirタグがページの本文言語の値と衝突してもul/ol 一覧とeditsectionは正しく表示されます. しかしながらパーサーで定義する見出し一覧（TOC）やマジックワードなどの要素に影響はありません.


 * ページ言語の閲覧/取得

mw-content-ltr/rtlクラスの設定がない点が要注意. つまり「/wiki/Page」と「/w/index.php?title=Page&action=history」が返すのは、どちらも「Page」の言語.
 * JavaScript:  - 例えばページの変更履歴の閲覧では履歴が該当ページの本文言語で表示されるものの、変更履歴ページそのものには
 * ページの本文言語はページの情報表示に定義 (ツールボックスのリンク )
 * ページの本文言語はapi.php?action=query&prop=infoを介してAPIで取得

関連項目

 * 多言語 MediaWiki
 * コードから言語名を読み取るには、コアの機能 が使えます. 解説はマジックワードを読んでください.