Extension:TemplateData/hi

TemplateData एक्सटेंशन एक टैग और API प्रदान करता है जो साथ मिलकर सदस्यों को यह निर्दिष्ट करने देते हैं कि साँचों को कैसे इन्वोक किया जाएगा। यह जानकारी एंड-सदस्यों के लिए एक सुंदर टेबल के रूप में उपलब्ध है, और साथ में एक JSON API के रूप में भी (जैसे VisualEditor) जिससे साँचों और उनके पैरामीटरों के साथ काम करने के लिए इंटरफ़ेस बनाए जा सकते हैं। विस्तृत सहायता के लिए देखें।

स्थापना


डेटा को सम्पादित करना
TemplateData एक्सटेंशन किसी साँचा पृष्ठ के विकिटेक्स्ट में परिभाषित टैग की मदद से काम करता है (जिसे वैकल्पिक रूप से किसी दूसरे पृष्ठ से ट्रांसक्लूड भी किया जा सकता है)। इसे उन कई विकियों के साधारण लेआउट से मेल खाने के लिए बनाया गया है जो एक दूसरे पृष्ठ से साँचा प्रलेख को ट्रांसक्लूड करते हैं (मगर यह आवश्यक नहीं)। टैग की सामग्री को नीचे के वर्णित प्रारूप के साथ एक मान्य JSON होना होगा; ध्यान रखें कि सभी विवरणों को सादे टेक्स्ट में होना होगा (साँचा डेटा में विकिटेक्स्ट स्वीकृत नहीं)।

जब पृष्ठ पर एक ब्लॉक जोड़ दिया जाता है, तब पृष्ठ के सहेजने पर TemplateData एक्सटेंशन निम्न जाँच पूरे करता है:


 * 1) सामग्री को मान्य JSON होना होगा;
 * 2) JSON संरचना के अंदर हर आयटम को नीचे निर्दिष्ट अपेक्षित प्रकार का होना होगा (जैसे वस्तु, ऐरे, या एक आद्य); और
 * 3) जिन आयटम्स पर संभावित वैल्यूओं की एक निर्दिष्ट सूची हो (जैसे  ), JSON वस्तु के वैल्यू को इनमें से किसी एक वैल्यू से मेल खाना होगा।

अगर इनमें से कोई भी जाँच असफल रहती है, सर्वर को सहेजने नहीं दिया जाएगा और सम्पादन पृष्ठ के ऊपर एक त्रुटि संदेश दिखाई जाएगी।

autovalue आयटम्स के लिए बग 2700,  को किसी भी ऐसे साँचे में काम करने से रोक देता है जिसे  के अंदर जोड़ा गया हो, यहाँ तक कि  और  सहित। TemplateData ब्लॉक को ठीक से सहेजा जाएगा, मगर अंतिम विकिटेक्स्ट को साँचे का इस्तेमाल किए जाने पर ठीक से पार्स नहीं किया जाएगा।

ध्यान रखें कि आप के बदले   का इस्तेमाल नहीं कर सकते।

प्रारूप
नीचे का टेबल साँचा पृष्ठ पर परिभाषित  टैग्स में लपेटे JSON डेटा का एक दिखाऊ संस्करण है। आधिकारिक TemplateData रिपॉज़िटरी पर उपलब्ध हैं। नवीनतम संस्करण के लिए Specification.md देखें।



TemplateData वस्तु
TemplateData वस्तु एक JSON जड़ तत्व है जिसे साँचा पृष्ठ पर तत्व में लपेटा जाता है।



Param वस्तु


Set वस्तु


Maps वस्तु


InterfaceText (स्ट्रिंग या वस्तु)
विकि की सामग्री की भाषा में एक मुक्त-रूप सादा-टेक्स्ट स्ट्रिंग (यानी किसी विकिटेक्स्ट या HTML से रिक्त), या फिर एक वस्तु जो उन स्ट्रिंग्स को भाषा कोड के अनुसार उन कुँजियों को रखता हो।

सभी InterfacText फ़ील्ड्स का डिफ़ॉल्ट वैल्यू है ।



स्ट्रिंग का प्रकार
अगर यह एक स्ट्रिंग होता है, इसमें लोकल विकि की सामग्री की भाषा में एक गैर-स्थानीयकृत स्ट्रिंग होना होगा।



वस्तु प्रकार
अगर यह एक वस्तु होता है, वस्तु में ऐसा मानचित्रण होना होगा:

उदाहरण
एक उदाहरण 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 उस JSON से काफ़ी अलग होता है जो  ब्लॉक में परिभाषित किया जाता है। API अनुरोध के उत्तर में TemplateData एक्सटेंशन JSON वस्तु में निम्न बदलाव करता है:


 * दो लपेटने वाली वस्तुएँ जोड़ता है:
 * एक Pages वस्तु जिसमें एक या एकाधित Page वस्तुएँ होती हैं
 * एक संख्यात्मक कुँजी वाला वस्तु: एक Page वस्तु
 * मूल TemplateData वस्तु पर योग/बदलाव
 * उस पृष्ठ के नाम के साथ  कुँजी जोड़ना जहाँ से डेटा का अनुरोध किया गया था (जैसे "Template:Cite web")।
 * कुँजी जोड़ना
 * उन सभी TemplateText के उदाहरणों को वर्तमान विकि के विकिपीडिया भाषा कोड के लिए एक कुँजी वाले वस्तुओं में बदलना जो सिर्फ स्ट्रिंग्स हैं
 * सभी  कुँजियाँ हटाना।
 * Parameter से सभी गुणधर्मों को जोड़ना जहाँ से प्राप्त किए हुए गुणधर्म परिभाषित किए जाते हैं और जिन्हें प्राप्त करने वाले Parameter वस्तु में स्पष्ट परिभाषित कुँजियों द्वारा पदावनत नहीं किया जाता है।
 * उस हर Parameter वस्तु में सभी कुँजियों के लिए डिफ़ॉल्ट वैल्यू जोड़ना जिन्हें स्पष्ट रूप से परिभाषित नहीं किया गया है और प्राप्त नहीं किया गया है।



API द्वारा प्रदत्त TemplateData JSON वस्तु में दिखाऊ बदलाव
<span id="Example_of_JSON_object_provided_by_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">

ये भी देखें

 * – user interface for selecting and inserting templates' wikitext, based on their TemplateData.
 * GitHub: jeblad/TemplateData – alternate version with some Lua functionality.
 * Translatable template
 * Wikibase/Maps_TemplateData