Manual:Title.php/ja

MediaWikiソフトウェアの"title"クラスは記事のタイトルを表し、多くの目的のために使われます: 人間が読むことが出来る記事のテキストタイトル、記事にアクセスするためのURLにて、記事へのwikitextリンク、記事のデータベースへのキーなどです. クラスはこれらのクラスの一つからインスタンス化され別のために、タイトルの別の属性のためにクエリーされます. これは不変の"value"クラスになることが目的なので、ミューテータ(mutator)関数は存在しません.

新しいインスタンスを得るために、 、 、もしくは といったスタティックなfactoryメソッドの一つ、を呼び出します. 一旦インスタンス化されると、 ,、 、 などの別のスタティックではないアクセサメソッドが使われます.

接頭辞のルール: タイトルはオプションのインターウィキリンク接頭辞("m:"はmeta、"de:"はドイツ語)で構成され、オプションの名前空間、タイトルのリマインダーによって続きます. インターウィキの接頭辞と名前空間の両方とも同じルールを持ちます: それらは文字、数字、スペース、アンダースコアだけを含み、文字で始まらなければならず、大文字と小文字を区別せず、スペースとアンダースコアは交換可能です. 接頭辞は":"で終わります. それらの一つがソフトウェアによって特別に許可された場合、一つの接頭辞のみ認識されます. 例えば、"de"は許可されたインターウィキの一つとして認識されるので、"de:name"はドイツ語のWikipediaの"name"記事へのリンクです. "talk:name"のタイトルは現在のwikiの"talk"名前空間にある"name"の記事へのリンクです. "talk"も認識される名前空間です. 両方とも存在しているのであれば、インターウィキが最初に来なければなりません. 例えば"m:talk:name"です. タイトルの最初の文字列がコロンで始まる場合、接頭辞は何もスキャンされずコロンは取り除かれるだけです. これらのルールのために、記事の名前がキロンを持つことは可能であることに注意して下さい. "E. Coli 0157:H7"は有効なタイトルで、"2001: A Space Odyssey"になります. "E. Coli 0157"と"2001"は有効なインターウィキもしくは名前空間ではないからです.

キャラクタマッピングルール: 一旦接頭辞がストリップされると、タイトルの残りは次の方法で処理されます: スペースとアンダースコアは同等なものとして取り扱われそれぞれは適切なコンテキストで別なものに変換されます(URLとデータベースキーでアンダースコア、平文でスペース). 0x80..0xFFの範囲で"拡張された"キャラクタはすべての場所で許可され、有効な文字列です. それらはURLでエンコードされます. 別のキャラクタはASCII文字、数字、ハイフン、コンマ、ピリオド、アポストロフィ、丸括弧、とコロンです. 別のASCIIキャラクタではないものは許可されず、見つかると削除されます(それらによっておそらくブラウザがURLを誤解する原因になります). 拡張されたキャラクタはテキストもしくはデータベースとして使われるときにurlencode'''されません. '''

正統なフォーム: タイトルの正統なフォームは常にオブジェクトによって返されます. このフォームにおいて、最初の名前空間とタイトルの最初の(そして唯一の最初の)キャラクタは大文字です; 名前空間の残りの部分は小文字の一方で、タイトルはそのままです. テキストフォームはスペースを使い、URLとDBキーフォームはアンダースコアを使います. インターウィキの接頭辞はすべて小文字です. 名前空間は単独で返されるときはアンダースコアを使います; それはテキストのタイトルに付属するときのみにスペースを使います.

はいくつか説明が必要です: "内部の(internal)"記事のために、記事が存在する場合、それは"cur_id"を返し、そうでなければ0を返します. すべての外部記事のためには、それは0を返します. リクエストの間に作成されるTitleのすべてのインスタンスのためにIDのすべてはキャッシュされるので、多くの内部リンクを持つwikitextをレンダーする間にそれらを素早く調べることが出来ます.