Extension:TemplateData/ja

TemplateData拡張機能は タグとAPIを導入し、これらは共に、エディターがテンプレートとそのパラメーターをどのように使用すべきなのかを指定できるようにします. この情報は、エンドユーザーにきちんと整形された表として提供され、また他のシステム（例えばVisualEditor）を機能させる JSON API が、テンプレートと連携するインターフェースを構築できるようにします. 詳細なヘルプはをご参照ください.

インストール


データの編集
TemplateData 拡張機能は、テンプレートページのウィキテキストに定義された タグを持つことによって機能します（オプションとして他のページから参照読み込みさせることもできます）. これは多くのウィキにおいて一般的な、別のページからテンプレートの説明文書を参照読み込みするレイアウト（必須ではありません）と互換性があるように設計されています. タグのこのコンテンツは以下で説明する形式を使用する有効なJSON形式でなければなりません. すべての記述はプレーンテキストでなければなりません（テンプレートデータの中でウィキテキストは使えません）.

ブロックがページに含まれるときは、TemplateData 拡張機能がぺージの保存時に次の各点を確認します.


 * 1) コンテンツは有効な JSON であること、
 * 2) その JSON 構造内の各項目は、以下に指定されているような期待される型（例：オブジェクト、配列、またはプリミティブ）であること、そして
 * 1) これらの項目が取りうる値の指定されたリストがあり (例  )、JSON オブジェクト内の値はそのひとつに合致すること.

いずれかの確認が失敗した場合、サーバはページの保存を承認せず、編集ページの上部にエラーメッセージを表示します.

自動値 (autovalue) 項目では、bug 2700によって および  を含む $3 タグ内に追加されたあらゆるテンプレートの   の機能は阻止されます. TemplateData ブロックは正しく保存されますが、結果として得られるウィキテキストはテンプレートを使用したときに正しく処理されません.

$2 の代わりに  を使うことはできませんのでご留意ください.

書式
下記はテンプレートページ上で  タグで囲んで定義されるJSONデータを可視化したものです. 正式な仕様は TemplateData リポジトリで入手可能です. 最新版は Specification.md をご参照ください.



TemplateData オブジェクト
TemplateData オブジェクトは、テンプレートページ上の 要素に囲まれた JSON ルート要素です.



Param オブジェクト


Set オブジェクト


Maps オブジェクト


InterfaceText (文字列またはオブジェクト)
そのウィキのコンテンツ言語で自由形式のプレーンテキスト（つまりウィキテストやHTMLではない）、あるいは言語コードをキーとしてそれらの文字列を含むオブジェクト.

すべての InterfaceText フィールドに対して既定値は  です.



文字列型
文字列であるならば、それはローカルウィキのコンテンツ言語で地域化されていない文字列を含まなければなりません.



オブジェクト型
オブジェクトであるならば、そのオブジェクトはこのマッピングを持たなければなりません：

例
テンプレートページ上のウィキテキスト内で指定された TemplateData 構造の例です.

以下は上記の例がテンプレートページ上でどのように表示されるかを示したものです：

{   "description": "Label unsigned comments in a conversation.", "params": { "user": { "label": "User's name", "type": "wiki-user-name", "required": true, "description": "User name of person who forgot to sign their comment.", "aliases": ["1"] },       "date": { "label": "Date", "suggested": true, "description": { "en": "Timestamp of when the comment was posted, in YYYY-MM-DD format." },           "aliases": ["2"], "autovalue": "" },       "year": { "label": "Year", "type": "number" },       "month": { "label": "Month", "inherits": "year" },       "day": { "label": "Day", "inherits": "year" },       "comment": { "required": false }   },    "sets": [ {           "label": "Date", "params": ["year", "month", "day"] }   ],    "maps": { "ExampleConsumer": { "foo": "user", "bar": ["year", "month", "day"], "quux": [ "date", ["day", "month"], ["month", "year"], "year" ]       }    } }

API
Special:ApiHelp/templatedata にある生成されたヘルプを参照してください. 呼び出し例（人間に読みやすく整形済み）は：

これはTemplate:Cite webに対するテンプレートデータを返します. このテンプレートに対する  ブロックは参照読み込みされたテンプレート文書ページ、en:Template:Cite web/docにあります.



API から取得された JSON への追加と変更
API HTTP get リクエストへのレスポンスで提供される JSON 構造は  ブロックで定義されるものとは顕著に異なります. API リクエストへのレスポンスで、拡張機能 TemplateData は JSON オブジェクトに以下の変更を行います：


 * 2つのラッパーオブジェクトを追加する：
 * ひとつ以上の Page オブジェクトを含む全体的な Pages オブジェクト
 * 数字キーを持つオブジェクト：Page オブジェクト
 * 実際のTemplateData オブジェクトへの追加/変更
 * データをリクエストされたページの名前（例えば "Template:Cite web"）を持つ  キーを追加する.
 * キーを追加する
 * Change all TemplateText occurrences that are just strings to objects with a single key for the current wiki's Wikipedia language code
 * すべての  キーを除去する.
 * Add all properties from parameter from which an inheritance is defined which are not superseded by explicitly defined keys in the inheritor's Parameter Object.
 * 各パラメーター オブジェクト内の明示的に定義または継承されていないすべてのキーに対して既定値を追加する.

Visualised differences in a TemplateData JSON object delivered by the API


API によって提供される JSON オブジェクトの例
例の節（上述）にある TemplateData 構造に対する API リクエストへのレスポンスを見ることができます：
 * HTML 形式では： https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData&format=jsonfm
 * APIによる配信： https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData

設定
<span id="See_also">

関連項目

 * – TemplateData に基づいて、テンプレートのウィキテキストを選択および挿入するためのユーザーインターフェース.
 * GitHub: jeblad/TemplateData – いくつかの Lua 機能を持つ代替版.
 * 翻訳可能テンプレート
 * Wikibase/Maps_TemplateData