This page is protected against editing.

Template:TemplateBox

From Wikimedia Commons, the free media repository
(Redirected from Template:Template box)
Jump to navigation Jump to search
Template documentationview · edit · history · purge ]
This documentation is transcluded from Template:TemplateBox/doc.
warning Warning:This page is shared between multiple wikis.
All changes to this page will be automatically copied to all wikis listed in the left side bar.
To avoid unnecessary page regeneration and server load, changes should be tested on the page's sandbox.

This template ({{TemplateBox}}) eases documentation of (other) templates. Using it helps uniformizing template documentation pages. See: Commons:Template documentation and Commons:TemplateData.

Usage

{{TemplateBox
 |x        =
 |xd       =
 |xlabel   =
 |xaliases =
 |xtype    =
 |1set                =
 |xdef     =
 |xav      =
 |xsv      =
 |xstat    =
 |useTemplateData     =
 |name                =
 |desc                =
 |namespace           =
 |usergroup           =
 |placement           =
 |usage-notes         =
 |type                =
 |example             =
 |example-value       =
 |i18n-method         =
 |i18n-desc           =
 |i18n-mediawiki-msg  =
 |i18n-subpage        =
 |i18n-data-file      =
 |seealso             =
 |setscats            =
 |print               =
 |shorthand           =
 |relieson            =
 |mustbesubst         =
 |docsub-page         =
}}

Usage notes: For a code template (for copy-pasting) with short parameter descriptions, see section Template to create a new template documentation page

Template parameters

ParameterDescriptionDefaultStatus
xname (param)Name of the documented template's xth parameter (1 names the first parameter, 2 the second, etc)emptyoptional
xd
xd-en
xdescription
xdescription-en
description (param)Description of parameter x (1d describes the documented template's first parameter, 2d the second, etc) -langcode (→ see also on mediawiki: overview or details)emptyoptional
xd-td
xd-td-en
xdescription-td
xdescription-td-en
TemplateData description (param)Description of parameter x for Extension:TemplateData which does not accept Wiki-markup. If this parameter is omitted, xd is used. You can always override the defaults specifically for TemplateData by appending -td to the parameter-name. You can specify a language by appending your language-code. E.g. 3d-td-en would be the English translation of the description of parameter 3 which will be used in TemplateData. -langcode. 1d-td describes the documented template's first parameter, 2d-td the second, etc)emptyoptional
xlabel
xlabel-en
xlabel-td
xlabel-td-en
label (param)A (very) brief name for parameter x. Try to keep under 20-ish characters. For example, 1label-de would be the German label of the documented template's first parameter. -langcode (→ see also on mediawiki: overview or details)emptyoptional
xaliasesaliases (param)An alias is an alternative name for the parameter that may be used instead of (not in addition to) the primary name. Name the aliases and separate them by "/"; e.g.d/desc/description. (→ see also on mediawiki: overview or details)emptyoptional
xtypetype (param)The type of the parameter, for (soft) type hinting. Please refer to the list of possible values. (→ see also on mediawiki: overview or details)emptyoptional
1setset (param)Label and ID of a set in one.[clarification needed] Multiple parameters can be grouped in a set, if either none or all of them must be supplied. Try to keep under 20-ish characters. (→ see also on mediawiki: overview)emptyoptional
xdef
xdef-td
xdefault
default (param)Fixed default value for parameter x (1def is the value for the first parameter, 2def the value for the second, etc) -langcode (→ see also on mediawiki: overview or details)emptyoptional
xavautovalue (param)Dynamically-generated default value in wikitext, such as today's date or the editing user's name; this will often involve wikitext substitution, such as {{subst:CURRENTYEAR}}. (→ see also on mediawiki: overview or details)not specifiedoptional
xsvsuggested (param)Suggested values, separated by "/" (→ see also on mediawiki: overview or details)not specifiedoptional
xstat
xstat-td
xdeprecated
xrequired
status (param)Status of parameter x (1stat is the first parameter's status, 2stat the second's, etc); possible values:
required
optional
optional-
optional and not present in the standard form
deprecated
optionaloptional
useTemplateDataexpose TemplateDataWhether the template should expose TemplateData - omitting means "false". Setting to 1, true, or yes means "true". Setting to only will suppress the house-made table.[clarification needed] Setting to export will turn TemplateBox into a preformatted Copy & Paste template. [clarification needed]emptysuggested
nametitle (template)name of the template (needed for viewing the documentation on another page than the template page, in particular for viewing the documentation page separately){{BASEPAGENAME}}required
desc
desc-en
description
description-en
desc-td
description-td
description (template)description of what the template does -langcodeemptyrequired
namespacenamespacenamespaces, the template is intended to be used in; possible values:
all
talks
contents
Main
Talk
User
User talk
Commons
Commons talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Creator
Creator talk
Special
Any other values will show as “unknown”.
no namespace specifiedrequired
usergroupusergroupusergroup that is meant to use the template; possible values:
  • all
  • bot
  • administrator
  • admin
  • sysop
  • bureaucrat
  • crat
  • checkuser
  • licensereviewer
  • vrt
  • autoconfirmed
  • autopatrolled
  • filemover
  • oversight
  • patroller
  • rollbacker
  • steward
  • upwizcampeditors
no user group specifiedrequired
placementplacementplacement on the page; possible values:
top
bottom
licence
source
emptyoptional
usage-notesusage-notesNotes about the correct usage of the template; will be listed in the Usage-section under the code example and the shorthands, if given.emptyoptional
typetype (template)what type is the template (infobox, formatting, licence tag, …)emptyoptional
exampleexample call parametersExample invocation (set of parameter values). A possible value (e.g. for {{Cat see also}}) can be: lakes. Multiple parameters can be separated with the {{!}} magic word; for example, 1=lakes{{!}}for=for more information sets 2 parameters (for the same template).
There is also example2 for a second example.
emptyoptional
example-valueexample call resultResult of the invocation of the template with the values set in the example parameter. This parameter's value is almost always set by invoking the documented template with the values defined in example. In the example above, the value of example-value would be defined using {{ Cat see alsolakes }}; with two parameters it will be {{Cat see also|lakes|for=for more information}}. The documented template's page will show the result in a box separated from the example code by a "renders as:" line. See {{Own using}} for an example of a template which uses this parameter.
There is also example2-value for a second example.
{{TEMPLATENAME|<example>}}optional
i18n-methodtranslation methodmethod the localization is achieved by. Known values:
autotranslate
using {{Autotranslate}} or applying a similar method
switch
using {{LangSwitch}} in the template itself
-
no localization needed
custommediawiki-msg
using MediaWiki namespace messages
mediawiki-msg
using MediaWiki namespace messages, translated on translatewiki.net
ext.translate
using {{Autotranslate}} or applying a similar method on a subpage that is marked for translation using the translate extension
TNT
Using Module:TNT and a tabular translations file on Wikimedia Commons.
emptyoptional
i18n-desctranslation infoadditional info about the localizationemptyoptional
i18n-mediawiki-msgmediawiki-messageWhen using “mediawiki-msg” as method, optionally put the name of the message here. Falls back to:emptyoptional
i18n-subpagetranslation subpageWhen using “ext.translate” as method, optionally put the name of the sub-page here. A dot (.) means that the current template hosts the translation on its subpages directly.i18noptional
i18n-data-fileI18n Data FileThe tabular data file on Wikimedia Commons in the Data namespace. The I18n/ prefix and the .tab file extension are added automatically if its missing.I18n/{{{name}}}.taboptional
seealsosee alsoList of relevant links (each on a new code line; e.g. * [[Commons:TemplateData]])emptyoptional
setscatscategorizes intoList of categories which are automatically set by the template (each on a new code line; e.g. * [[:Category:Rivers]])emptyoptional
printprintThe way the parameters are typically arranged in the Usage-section; possible values:
  • one - parameters arranged in one line (default):
 |1def= |1stat= |useTemplateData= 
  • multi - parameters arranged in multiple lines:
 |1def =
 |1stat =
 |useTemplateData = 
  • infobox - multiple lines, the equals signs are aligned with each other:
 |1def            =
 |1stat           =
 |useTemplateData = 
one (if type parameter ≠ infoboxthis dependency is not working, everytime "one" by default)optional
linesDeprecated! Use parameter print instead.emptydeprecated
shorthandaliasesAliases to ease invocation, separated by commas. Each alias must have a page which redirects to the template page. For example, if {{Catseealso}} and {{Csa}} are aliases for {{Cat see also}}, Template:Catseealso and Template:Csa are redirects to Template:Cat see also.

Aliases are listed on the documented template's page, in the Usage section (like this one), directly under the synopsis (and above the Usage notes if there are some). See examples of lists of redirects here and with an additional searches-for-more-redirects here.

emptyoptional
reliesonrelies onList of templates on which the template's basic functionality relies (each on a new code line; e.g. * [[Module:TemplateBox]])emptyoptional
mustbesubstmust be substSet to yes (or any value) if the template must be substituted. This puts "subst:" into the template example under Usage-section.emptyoptional
docsub-pagedocsub-pagepage parameter from {{Documentation subpage}}{{NAMESPACE}}:{{BASEPAGENAME}}optional
<templatedata>JSON</templatedata> ./. {{TemplateBox}}
TemplateData

TemplateData is a way to store information about template parameters (the description of those and of the whole template) for both humans and machines. It is used by VisualEditor and possibly other tools like Upload Wizard.


Existing template documentation
At Wikimedia Commons, it is recommended to use {{TemplateBox}} with either ‎useTemplateData=1 or ‎useTemplateData=only on the ‎/doc subpage and transcluding it with {{Documentation}} into the template. ‎<nowiki>-tags can be wrapped around the arguments, if required, to avoid templates being expanded.

Newly created template documentation and imports
Another option, especially for imported templates, or for users with JSON experience, is placing raw ‎<templatedata>-tags into the Wikitext of the template, as described in various Wikipediae.

Discussion
There is an ongoing discussion about that matter. Feel invited to comment if you are experienced in either way, your time permits and if you like to share your opinion or to make a suggestion.


Wikipedia's help about TemplateDataCommons-specific information

This template (<span style="white-space:nowrap;">&#123;&#123;TemplateBox&#125;&#125;</span>) eases documentation of (other) templates. Using it helps uniformizing template documentation pages. See: [[Commons:Template documentation]] and [[Commons:TemplateData]].

Template parameters[Edit template data]

This template prefers inline formatting of parameters.

ParameterDescriptionTypeStatus
set (param)1set

Label and ID of a set in one.<sup>[''[[:en:Wikipedia:Please_clarify|clarification needed]]'']</sup> Multiple parameters can be grouped in a set, if either none or all of them must be supplied. Try to keep under 20-ish characters. <small>''(→ see also on mediawiki: [[mw:Extension:TemplateData#TemplateData object|overview]])''</small>

Stringoptional
name (param)<var>x</var>

Name of the documented template's parameter #x (1 names the first parameter, 2 the second, etc)

Stringoptional
aliases (param)<var>x</var>aliases

An alias is an alternative name for the parameter that may be used instead of (not in addition to) the primary name. Name the aliases and separate them by "'''/'''"; e.g.'''d/desc/description'''. <small>''(→ see also on mediawiki: [[mw:Extension:TemplateData#Param object|overview]] or [[mw:Help:TemplateData#aliases|details]])''</small>

Stringoptional
autovalue (param)<var>x</var>av

Dynamically-generated default value in wikitext, such as today's date or the editing user's name; this will often involve wikitext substitution, such as "subst:CURRENTYEAR".

Default
not specified
Stringoptional
description (param)<var>x</var>d xd-en xdescription xdescription-en

Description of parameter x (1d describes the documented template's first parameter, 2d the second, etc)

Stringoptional
TemplateData description (param)<var>x</var>d-td xd-td-en xdescription-td xdescription-td-en

Description of parameter x for the TemplateData extension which does not accept Wiki-markup. If this parameter is omitted, xd is used. You can always override the defaults specifically for TemplateData by appending "-td" to the parameter-name. You can specify a language by appending a language code. E.g. 3d-td-en would be the English translation of the description of parameter 3 which will be used in TemplateData. [[#Translation|<sup title="Supports internal translation" style="display: inline-block; background-color: #000; font-family: monospace; font-weight: bold; font-style: italic; margin: 0px 1px; padding: 0px 3px; border: 1px solid #fff; box-shadow: 1px 1px 2px #000; color:#fff; cursor:default">-langcode</sup>]]. 1d-td describes the documented template's first parameter, 2d-td the second, etc)

Stringoptional
default (param)<var>x</var>def xdef-td xdefault

Fixed default value for parameter x (1def is the value for the first parameter, 2def the value for the second, etc)

Unknownoptional
label (param)<var>x</var>label xlabel-en xlabel-td xlabel-td-en

A (very) brief name for parameter x. Try to keep under 20-ish characters. For example, 1label-de would be the German label of the documented template's first parameter.

Stringoptional
status (param)<var>x</var>stat xstat-td xdeprecated xrequired

Status of parameter <var>x</var> (<code>1stat</code> is the first parameter's status, <code>2stat</code> the second's, etc); possible values:

required
optional
optional-
optional and not present in the standard form
deprecated

Suggested values
required suggested optional optional- deprecated
Default
optional
Stringoptional
suggested (param)<var>x</var>sv

Suggested values, separated by "/"

Default
not specified
Unknownoptional
type (param)<var>x</var>type

The type of the parameter, for (soft) type hinting. Please refer to the [https://github.com/wikimedia/mediawiki-extensions-TemplateData/blob/master/Specification.md#34-type list of possible values]. <small>''(→ see also on mediawiki: [[mw:Extension:TemplateData#Param object|overview]] or [[mw:Help:TemplateData#type|details]])''</small>

Stringoptional
description (template)desc desc-en description description-en desc-td description-td

description of what the template does

Stringrequired
docsub-pagedocsub-page

“page” parameter from {{Documentation subpage}}

Default
{{NAMESPACE}}:{{BASEPAGENAME}}
Page nameoptional
example call parametersexample

Example invocation (set of parameter values). A possible value (e.g. for [[:Template:Cat see also|<span style="font-family:monospace,monospace;">&#123;&#123;Cat see also&#125;&#125;</span>]]) can be: <code>lakes</code>. Multiple parameters can be separated with [https://www.mediawiki.org/wiki/Help:Magic%20words the <code>{{!}}</code> magic word]; for example, <code>1=lakes{{!}}for=for more information</code> sets 2 parameters (for the same template).<br>There is also <code>example2</code> for a second example.

 <table class="messagebox plainlinks layouttemplate  "  style="margin:2px 10%;width:auto;border:2px solid #f4c430;background:var(--background-color-warning-subtle,#ffe);color:var(--color-base,#222);border-inline-start-width:8px;border-collapse:collapse;"><tr>
<td class="mbox-image" style="padding-inline-start:.9em" dir="ltr">[[File:Warning.svg|alt=Exclamation mark|30px]]</td><td class="mbox-text" >If this parameter is set to anything more than a single (anonymous) value for the first unnamed parameter, it is currently needed to set <code>example-value</code> too (as <span style="white-space:nowrap;">&#123;&#123;TemplateBox&#125;&#125;</span> does not call itself properly).</td></tr></table>

Stringoptional
example call resultexample-value

Result of the invocation of the template with the values set in the <code>example</code> parameter. This parameter's value is almost always set by invoking the documented template with the values defined in <code>example</code>. In the example above, the value of <code>example-value</code> would be defined using &#123;&#123;&#160;<span class="monospaced">[[Template:Cat see also|Cat see also]]</span>&#32;&#124;&#160;<span style="font-family:Verdana,serif;font-style:italic;font-size:96%;">lakes</span>&#160;&#125;&#125;; with two parameters it will be '''{{Cat see also|lakes|for=for more information}}'''. The documented template's page will show the result in a box separated from the example code by a "renders as:" line. See [[:Template:Own using|<span style="font-family:monospace,monospace;">&#123;&#123;Own using&#125;&#125;</span>]] for an example of a template which uses this parameter.<br>There is also <code>example2-value</code> for a second example.

<table class="messagebox plainlinks layouttemplate " style="margin:2px 10%;width:auto;border:2px solid #f4c430;background:var(--background-color-warning-subtle,#ffe);color:var(--color-base,#222);border-inline-start-width:8px;border-collapse:collapse;"><tr>

<td class="mbox-image" style="padding-inline-start:.9em" dir="ltr">[[File:Warning.svg|alt=Exclamation mark|30px]]</td><td class="mbox-text" >If <code>example</code> is set, and not just a single parameter value, it is currently required to set this parameter (as <span style="white-space:nowrap;">&#123;&#123;TemplateBox&#125;&#125;</span> does not call itself properly). Not doing so causes unspecified behavior.<br>If <code>example</code> is not set, this parameter is ignored.</td></tr></table>

Default
{{TEMPLATENAME|&lt;example&gt;}}
Stringoptional
I18n Data Filei18n-data-file

The tabular data file on Wikimedia Commons in the Data namespace. The “I18n/” prefix and the “.tab” file extension is added automatically if its missing.

Default
I18n/{{{name}}}.tab
Auto value
I18n/{{subst:ROOTPAGENAME}}.tab
Stringoptional
translation infoi18n-desc

additional info about the localization

Stringoptional
mediawiki-messagei18n-mediawiki-msg

When using “mediawiki-msg” as method, optionally put the name of the message here. Falls back to:

Stringoptional
translation methodi18n-method

method the localization is achieved by. Known values:

autotranslate
using [[:Template:Autotranslate|<span style="font-family:monospace,monospace;">&#123;&#123;Autotranslate&#125;&#125;</span>]] or applying a similar method
switch
using [[:Template:LangSwitch|<span style="font-family:monospace,monospace;">&#123;&#123;LangSwitch&#125;&#125;</span>]] in the template itself
-
no localization needed
custommediawiki-msg
using MediaWiki namespace messages
mediawiki-msg
using MediaWiki namespace messages, translated on [[translatewiki:|translatewiki.net]]
ext.translate
using [[:Template:Autotranslate|<span style="font-family:monospace,monospace;">&#123;&#123;Autotranslate&#125;&#125;</span>]] or applying a similar method on a subpage that is marked for translation using the translate extension
TNT
Using [[Module:TNT]] and a tabular translations file on Wikimedia Commons.

Suggested values
- autotranslate ext.translate switch mediawiki-msg custommediawiki-msg TNT
Stringoptional
translation subpagei18n-subpage

When using “ext.translate” as method, optionally put the name of the sub-page here. A dot ('''.''') means that the current template hosts the translation on its subpages directly.

Default
i18n
Stringoptional
lines

''Deprecated!'' Use parameter <code>print</code> instead.

Unknowndeprecated
must be substmustbesubst

Set to '''yes''' (or any value) if the template must be substituted. This puts "subst:" into the template example under [[#Usage|Usage]]-section.

Stringoptional
title (template)name

name of the template <small>''(needed for viewing the documentation on another page than the template page, in particular for viewing the documentation page separately)''</small>

Default
<small>{{'''BASE'''PAGENAME}}</small>
Page namerequired
namespacenamespace

namespaces, the template is intended to be used in; possible values:

all
talks
contents
Main
Talk
User
User talk
Commons
Commons talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Creator
Creator talk
Special
Any other values will show as “unknown”.

Default
no namespace specified
Stringrequired
placementplacement

placement on the page; possible values:

top
bottom
licence
source

Suggested values
top bottom license source
Stringoptional
printprint

The way the parameters are typically arranged in the [[#Usage|Usage]]-section; possible values:

  • '''one''' - parameters arranged in one line (default):
  • '''multi''' - parameters arranged in multiple lines:
  • '''infobox''' - multiple lines, the equals signs are aligned with each other:

Suggested values
multi one infobox
Default
one (if type parameter ≠ '''infobox'''<sup>[[Template talk:TemplateBox#Parameter "print" - dependency with "type"-parameter not working|this dependency is not working, everytime "one" by default]]</sup>)
Stringoptional
relies onrelieson

List of templates on which the template's basic functionality relies (each on a new code line; e.g. '''* [[Module:TemplateBox]]''')

Stringoptional
see alsoseealso

List of relevant links (each on a new code line; e.g. '''* [[Commons:TemplateData]]''')

Stringoptional
categorizes intosetscats

List of categories which are automatically set by the template (each on a new code line; e.g. '''* [[:Category:Rivers]]''')

Stringoptional
aliasesshorthand

Aliases to ease invocation, separated by commas. Each alias must have a page which redirects to the template page. For example, if [[:Template:Catseealso|<span style="font-family:monospace,monospace;">&#123;&#123;Catseealso&#125;&#125;</span>]] and [[:Template:Csa|<span style="font-family:monospace,monospace;">&#123;&#123;Csa&#125;&#125;</span>]] are aliases for [[:Template:Cat see also|<span style="font-family:monospace,monospace;">&#123;&#123;Cat see also&#125;&#125;</span>]], [[Template:Catseealso]] and [[Template:Csa]] are redirects to [[Template:Cat see also]]. <table class="messagebox plainlinks layouttemplate " style="margin:2px 10%;width:auto;border:2px solid #f4c430;background:var(--background-color-warning-subtle,#ffe);color:var(--color-base,#222);border-inline-start-width:8px;border-collapse:collapse;"><tr>

<td class="mbox-image" style="padding-inline-start:.9em" dir="ltr">[[File:Warning.svg|alt=Exclamation mark|30px]]</td><td class="mbox-text" >Despite this parameter's name, an alias's length can be equal to or higher than the canonical name's (for example, [[:Template:Semicolon|<span style="font-family:monospace,monospace;">&#123;&#123;Semicolon&#125;&#125;</span>]] is an alias of [[:Template:&#59;|<span style="font-family:monospace,monospace;">&#123;&#123;&#59;&#125;&#125;</span>]]).</td></tr></table>

<p>Aliases are listed on the documented template's page, in the ''Usage'' section (like [[#Usage|this one]]), directly under the synopsis (and above the ''Usage notes'' if there are some). See examples of lists of redirects [[Template:CatDiffuse/doc|here]] and with an additional searches-for-more-redirects [[Template:Cat see also/doc|here]].</p>

Stringoptional
type (template)type

what type is the template ('''infobox''', '''formatting''', '''licence tag''', …)

Stringoptional
usage-notesusage-notes

Notes about the correct usage of the template; will be listed in the [[#Usage|Usage]]-section under the code example and the shorthands, if given.

Stringoptional
expose TemplateDatauseTemplateData

Whether the template should expose TemplateData - Omitting means "false". Setting to “1”, “true”, or “yes” means "true". Setting to “only” will suppress the house-made table. Setting useTemplateData to “export” will turn TemplateBox into a preformatted Copy & Paste template.

Suggested values
1 only
Auto value
only
Stringsuggested
usergroupusergroup

usergroup that is meant to use the template; possible values:

  • <code>all</code>
  • <code>bot</code>
  • <code>administrator</code>
  • <code>admin</code>
  • <code>sysop</code>
  • <code>bureaucrat</code>
  • <code>crat</code>
  • <code>checkuser</code>
  • <code>licensereviewer</code>
  • <code>vrt</code>
  • <code>autoconfirmed</code>
  • <code>autopatrolled</code>
  • <code>filemover</code>
  • <code>oversight</code>
  • <code>patroller</code>
  • <code>rollbacker</code>
  • <code>steward</code>
  • <code>upwizcampeditors</code>

    Suggested values
    all bot administrator admin sysop bureaucrat crat checkuser licensereviewer otrs autoconfirmed autopatrolled filemover oversight patroller rollbacker steward upwizcampeditors
    Default
    no user group specified
Stringrequired

Additional information

The template is intended to be used in the following namespaces: the Template namespace

The template is intended to be used by the following user groups: all users

Placement:

in the '/doc' subpage of a template

Relies on:

See also

Localization

العربية  Boarisch  беларуская (тарашкевіца)  বাংলা  català  čeština  dansk  Deutsch  Deutsch (Sie-Form)  Zazaki  English  Canadian English  español  eesti  euskara  فارسی  suomi  français  galego  ગુજરાતી  हिन्दी  hrvatski  magyar  Bahasa Indonesia  italiano  日本語  한국어  Lëtzebuergesch  latviešu  македонски  മലയാളം  मराठी  Bahasa Melayu  မြန်မာဘာသာ  norsk bokmål  Plattdüütsch  Nederlands  norsk nynorsk  occitan  ਪੰਜਾਬੀ  polski  português  português do Brasil  русский  sicilianu  slovenčina  slovenščina  српски / srpski  svenska  ꠍꠤꠟꠐꠤ  ไทย  Türkçe  українська  Tiếng Việt  中文  中文(简体)  中文(繁體)  +/−

This template makes use of {{Autotranslate}} and the translate extension. The layout of the template can be found under Template:TemplateBox/layout.

Template to create a new template documentation page

The following code template contains brief descriptions for each parameter as well as space for categories and can be copy-pasted in new documentation pages. The meta-parameters are not internationalized (names have no language code).

{{TemplateBox
 <!-- TEMPLATE PARAMETERS SECTION (for 2nd parameter, copy, paste & change "1" → "2") -->
 |1          = <!-- 1st parameter: name of the first parameter the template takes-->
  |1label    = <!-- 1st parameter: label, very brief name, preferably less than 20 characters -->
  |1d        = <!-- 1st parameter: description (+LANGUAGE CODE) -->
  |1d-td     = <!-- 1st parameter: description for TemplateData without any wiki markup (+LANGUAGE CODE) -->
  |1aliases  = <!-- 1st parameter: alternative names that may be used, separated by "/" -->
  |1type     = <!-- 1st parameter: type (values: number, string, line, boolean, date, url, wiki-page-name, unknown/…) -->
  |1set      = <!-- 1st parameter: set ID / Label (to group multiple parameters in a set) -->
  |1def      = <!-- 1st parameter: fixed default value (+LANGUAGE CODE) -->
  |1av       = <!-- 1st parameter: autovalue, dynamically-generated default value, e.g. current year -->  
  |1sv       = <!-- 1st parameter: suggested values to help users select the desired value, separated by "/" -->  
  |1stat     = <!-- 1st parameter: status (values: required, optional, optional- or deprecated) -->
 <!-- TEMPLATE SECTION -->
 |useTemplateData    = <!-- expose TemplateData (values: true, export; default: false) -->
 |name               = <!-- template title -->
 |desc               = <!-- template description (+LANGUAGE CODE) -->
 |namespace          = <!-- namespaces, the template is intended to be used (values: all, File, Category…) -->
 |usergroup          = <!-- usergroup that is meant to use the template (values: all, admin…) -->
 |placement          = <!-- placement on the page (values: top, bottom, licence or source) -->
 |usage-notes        = <!-- notes about the correct usage of the template -->
 |type               = <!-- template type (values: infobox, formatting, licence tag,…) -->
 |example            = <!-- example parameter values -->
 |example-value      = <!-- example invocation of the template with the values of the example parameter -->
 |i18n-method        = <!-- translation method (values: mediawiki-msg, ext.translate, autotranslate…) -->
 |i18n-desc          = <!-- translation info -->
 |i18n-mediawiki-msg = <!-- name of the message when using “mediawiki-msg” as method -->
 |i18n-subpage       = <!-- translation subpage when using "ext.translate" as method -->
 |i18n-data-file     = <!-- tabular data file on Wikimedia Commons in the Data namespace -->
 |seealso            = <!-- relevant links (each of them on a new code line with * in the beginning) -->
 |setscats           = <!-- categories which are automatically set by the template -->
 |print              = <!-- template code layout in the Usage-section (values: one, multi, infobox) -->
 |shorthand          = <!-- redirects to the main template -->
 |relieson           = <!-- list of templates on which the template's basic functionality relies -->
 |mustbesubst        = <!-- set to yes (or any value) if the template must be substituted. -->
 |docsub-page        = <!-- page parameter from {{Documentation subpage}} -->
}}<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->

}}</includeonly>

TemplateData

{{TemplateBox}} supports every feature that is documented in TemplateData's technical documentation except inherits. Conversion to JSON is done by a Lua module. The Lua module automatically converts traditionally used parameters as well as the new ones to both, TemplateData, as well as the "historic table", on demand. The "historic table" is the table which was used to show parameter information at Wikimedia Commons before TemplateData's advent.[clarification needed]

Required parameters
  • |desc= (or in its translated form), parameters and their description

Translation

Avoid {{LangSwitch}} in TemplateData, which doesn't support it. Instead, append -langcode to the name of any translatable parameter, marked by -langcode in TemplateBox. For example, to describe the first parameter in French, write |1d-fr=Description pour le premier paramètre. Supplying only |1d-en=This is the description of parameter 1. instead of |1d=This is the description of parameter 1. will also work, but the -en is recommended because it clarifies for translators (they recognize the structure behind it without having to consult the documentation).

The language code must be the last element. Valid: |1d-td-en=. Invalid: |1d-en-td=

Naming
  • Both old names and new names are supported but treated differently if both of them are supplied. For example, while creating the "historic table", if both 1def and 1default were supplied, the value for 1def would be used. For generating TemplateData, the preference is the other way around.
Overriding
  • It's possible to override a specific entity, either for the "historic table" or for TemplateData.
    • To override for TemplateData, append a -td to the parameter's default name.
    • On the other hand, if you coded something for TemplateData and want to use a link or other markup in the "historic table", use the parameter name without the -td or modify that, which should be only used for TemplateData appending -td.
Pay attention
  • TemplateData does not parse Wiki-Markup. Think of it as if it would expand all templates and finally putting a nowiki around all this.
  • When including templates, they must be wrapped in <nowiki> tags, if they should not be expanded (it's, on the other hand, a geeky feature that you can use, if having the expanded content inside TemplateData is exactly what you want).
  • Even though some tags such as <pre> seem to be rendered as expected, avoid them.
Activation
  • TemplateData can be activated setting the useTemplateData parameter to 1 or to only. The former will add a collapsed version of the table; the latter replaces the "historic table" with the TemplateData table. In both cases, TemplateData is available through the API.
Fetching TemplateData (e.g. for TemplateBox itself)

/w/api.php?action=templatedata&format=json&titles=Template%3ATemplateBox (raw result, pretty result)

Advantages
  • No type-mixture: Instead of inserting a new content-type, a template can be used.
  • Syntax: Less error-prone compared to editing JSON (without a special editor).
  • Schema: Always valid. TemplateBox always passes a structure matching the requested schema.
  • Flat structure.
  • Prepared for future changes. Adjustments to the LUA module can be made to support future changes. The power of control remains at Commons.
  • Inserting redundant information can be avoided.
  • Template traditionally used at Commons.
Issues
  • Grouping sets is currently not supported in the "historic table". Set labels are not supported to be multilingual (ideas how one could achieve this are truly welcome).
Example
{{TemplateBox

  | useTemplateData = 1
  | 1 = artist
  | 1aliases = Artist
  | 1label-en = Artist
  | 1type = string

  <!-- used as the parameter description in the main parameter area of the documentation -->
  <!-- and in the template data section unless overridden with 1d-td-langcode -->  
  | 1d-de = Künstler, der das ursprüngliche Kunstwerk geschaffen hat.<br/>Benutze möglichst immer {{Creator:Vorname Nachname}} mit der Vorlage {{Tl|Creator}}.
  | 1d-en = Artist who created the original artwork.<br/>Use {{Creator:Name Surname}} with {{Tl|Creator}} template whenever possible.
  | 1d-fr = Artiste ou artisan à l'origine de l'œuvre.<br/>Dans la mesure du possible, utiliser le modèle {{Tl|Creator}}.
  | 1d-sv = Artist som skapade originalverket.<br/>Använd {{Creator:Förnamn Efternamn}} med {{Tl|Creator}}-mallen om detta är möjligt.

  <!-- this overrides 1d-en in the Template data section -->
  <!-- and all other translations unless each is provided as desc-td-langcode -->
  | 1d-td-en = Artist who created the original artwork; this overrides "1d-en" in the Template data section; "1d-en" is used in the template "Parameter" section.

  | 1def-de = Freifeld, angezeigt als: "{{int:wm-license-information-author}}".
  | 1def-en = blank field presented as: "{{int:wm-license-information-author}}".
  | 1def-fr = champ vide: « {{int:wm-license-information-author}} »
  | 1def-sv = tomt fält, visas som: "{{int:wm-license-information-author}}"

  <!-- used as the description of the template in the main documentation area -->
  <!-- and in the Template data section unless overridden with desc-td-langcode -->
  | desc-de = Deutsche Übersetzung der {{tl|Vorlagen}}beschreibung
  | desc-en = English translation of the {{tl|template}} description

  <!-- this overrides desc-en in the Template data section -->
  <!-- and all other translations unless each is provided as desc-td-langcode -->
  | desc-td-en = English translation that is used in the Template data section instead of "desc-en". This will also replace all desc-langcode translations, unless corresponding "desc-td-langcode" is provided.

}}

A live example is Template:Information/doc (edit that enabled TemplateData through TemplateBox, API-result showing the JSON generated by the Lua Module behind TemplateBox)

Experimenting

You can use Special:ExpandTemplates to experiment with how the template will output the template documentation and the Template data section; e.g., copy the example above and paste it into the input text on the Special:ExpandTemplates page; then click on the ok button to see the result.

edit

One issue caused by usage of this template is the loss of section editing links on the whole page of the documented template, and also on its documentation page, even for paragraphs outside the part produced by this template (TemplateBox).

This can be worked around by manually invoking {{Sed}} in each section to create an edit link anyway, but this technique is fragile since the first argument for {{Sed}} can change when the section structure changes, which quietly breaks such links. The link in this very section was broken for years, pointing to the wrong section, until the value was updated ({{Sed|1}}{{Sed|3}}). Moreover, {{Sed}} wastes vertical space (standing on its own line).