Template:Start date and age/doc
This is a documentation subpage for
Template documentation[edit]
Template sandbox and testcases for TEMPLATE_NAME[edit]Overview[edit]This page provides a clean workflow to safely edit and validate TEMPLATE_NAME:
Use this page to:
Quick links[edit]
How to test[edit]1. Edit the sandbox at Template:TEMPLATE_NAME/sandbox. 2. Open this test page and click “Show preview” to render the sandbox with inputs below. 3. Verify each testcase: Does the “Actual output” match the “Expected output”? 4. If all pass, consider copying sandbox to live using an edit summary like: “Sync from /sandbox: passes all /testcases as of YYYY-MM-DD.” Previewing tips[edit]
Test harness[edit]The following sections render the sandbox template against curated inputs. Each testcase shows:
Testcase A: Minimal invocation[edit]Parameters: {{TEMPLATE_NAME}} Expected output: [Minimal successful output with defaults: e.g., a neutral message or basic box] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase B: Common parameters[edit]Parameters: {{TEMPLATE_NAME | param1 = Alpha | param2 = Beta | flag = yes }} Expected output: [Example: shows "Alpha" and "Beta" in designated slots; flag toggles enhanced styling] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase C: Edge values and escaping[edit]Parameters: {{TEMPLATE_NAME | param1 = [[Linked target|Visible text]] | param2 = {{subst:CURRENTTIMESTAMP}} | raw = <code><span class="x">escaped</span></code> }} Expected output: [Links render correctly; timestamp subst is literal in expected; raw shows escaped markup] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase D: Internationalization (i18n)[edit]Parameters: {{TEMPLATE_NAME | lang = ja | text = こんにちは世界 }} Expected output: [Text displays correctly for non-ASCII; applies lang attribute or rtl/ltr where applicable] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase E: Error handling[edit]Parameters: {{TEMPLATE_NAME | param1 = | required = <!-- intentionally omitted --> }} Expected output: [Shows a gentle error or maintenance category; does not break page layout] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Maintenance[edit]
Categories[edit]Copy-paste skeletons[edit]Below are ready-to-use skeletons for the sandbox and testcases subpages. Skeleton: Template:TEMPLATE_NAME/sandbox[edit]<!-- Sandbox for TEMPLATE_NAME --> <!-- Copy the entire template source here; edit safely. --> {{#if:{{{required|}}} | <!-- normal output --> <div class="tmpl"> <b>{{{param1|}}}</b> · <i>{{{param2|}}}</i> {{#if:{{{flag|}}}|<span class="flag">✓</span>|}} {{#if:{{{raw|}}}|<span class="raw">{{{raw}}}</span>|}} </div> | <!-- error / missing required --> <span class="error">TEMPLATE_NAME: missing required parameter</span> [[Category:Pages with TEMPLATE_NAME errors]] }} Skeleton: Template:TEMPLATE_NAME/testcases[edit]<!-- Testcases for TEMPLATE_NAME; render against /sandbox --> ; Minimal : {{TEMPLATE_NAME/sandbox}} ; Common params : {{TEMPLATE_NAME/sandbox | param1 = Alpha | param2 = Beta | flag = yes }} ; Edge and escaping : {{TEMPLATE_NAME/sandbox | param1 = [[Linked target|Visible text]] | param2 = 20250101T000000Z | raw = <code><span class="x">escaped</span></code> }} ; I18n : {{TEMPLATE_NAME/sandbox | lang = ja | text = こんにちは世界 }} ; Error handling : {{TEMPLATE_NAME/sandbox | required = }} Review checklist[edit]
Template:Terminate sentence ensures a sentence ends with a specified terminator (default: a period). It avoids adding duplicate terminators and can optionally trim trailing spaces. It attempts to ignore trailing closing quotes or brackets when deciding whether a terminator is already present. Usage[edit]Basic: {{Terminate sentence|This is a sentence}}
→ This is a sentence.
Named parameters: {{Terminate sentence
|text=He said "Hello"
|term=.
}}
→ He said "Hello".
Custom terminator: {{Terminate sentence|text=Warning|term=!}}
→ Warning!
Avoid duplicate terminator: {{Terminate sentence|text=Already done.|term=.}}
→ Already done.
Trim trailing spaces: {{Terminate sentence|text=Ends with space |trim=yes}}
→ Ends with space.
Skip processing: {{Terminate sentence|text=No changes here|skip=yes}}
→ No changes here
Append a note: {{Terminate sentence|text=Complete|note=(source: 2025)}}
→ Complete. (source: 2025)
Parameters[edit]
Behavior details[edit]
Examples[edit]
{{Terminate sentence|text=He whispered "hush"|term=.}}
→ He whispered "hush".
{{Terminate sentence|text=Complete (verified)|term=.}}
→ Complete (verified).
{{Terminate sentence|text=Alert|term=!}}
→ Alert!
{{Terminate sentence|text=Wait...|term=.|allowdup=yes}}
→ Wait.... Best practices[edit]
Lua-powered variant (optional)[edit]For more robust detection (including multilingual quotes and punctuation), create -- Module:TerminateUtil
local M = {}
local closing = {
[")"] = true, ["]"] = true, ["}"] = true,
['"'] = true, ["'"] = true, ["”"] = true, ["’"] = true, ["»"] = true, ["›"] = true
}
local function trimRight(s)
return (s:gsub("%s+$",""))
end
function M.lastVisibleChar(args)
local s = args.s or ""
s = trimRight(s)
local i = #s
while i > 0 do
local c = s:sub(i,i)
if closing[c] then
i = i - 1
else
return c
end
end
return ""
end
return M
Then update the template to call: {{#invoke:TerminateUtil|lastVisibleChar|s=text}}
This improves detection for closing quotes and brackets. See also[edit]It may contain usage information, categories and other content that is not part of the original template page. |
The {{Start date and age}} template displays the date that an event or entity started or was created. It also includes a duplicate, machine-readable date in the ISO 8601 format (which is hidden by CSS), for use inside other templates which emit microformats. The hidden date degrades gracefully when CSS is not available.
Usage
[edit]- Common usage
{{Start date and age|yyyy|mm|dd}}to display formatted as:- March 25, 2010
{{Start date and age|yyyy|mm|dd|df=yes}}to display formatted as:- 25 March 2010
- Full syntax
{{Start date and age|yyyy|mm|dd|df=yes|p=yes|br=yes}}to display formatted as:- 25 March 2010
Parameters
[edit]| Parameter | Status | Description |
|---|---|---|
| 1 | required | A four-digit number indicating the year. |
| 2 | optional | A number between 1 and 12 indicating the month (leading zeros in the number are ignored). The month may also be specified as a name or abbreviation (e.g. "August" or "Aug"). |
| 3 | optional | A number between 1 and 31 indicating the day of the month (leading zeros in the number are ignored). |
| df= | optional | If the parameter df equals yes, y, or 1, the date will be displayed in DMY format: 4 March 2010. When this parameter is not included or set to some other value, the date will be displayed in MDY format: March 4, 2010. |
| p= paren= |
optional | If the parameter p or paren equals yes, y, or 1, the age will be displayed within parentheses. When this parameter is not included or set to some other value, the date and age are separated by a semicolon and a breaking space. |
| br= | optional | If the parameter br equals yes, y, or 1, a line break will be inserted between the date and the age. When this parameter is not included or set to some other value, a breaking space will be inserted between the date and the age. This does not change the separating characters between the date and age which are either a semicolon (default setting) or parentheses (if p=yes). |
"df" (day first) and "mf" (month first)
[edit]The default output of this template is to display the month before the day (MDY). This default may not be appropriate for articles about events or entities in parts of the world where dates are commonly given with the day preceding the month (DMY). To display the day first, assign the df parameter a value of yes, y, or 1 (e.g. df=yes).
If the default format is preferred, the parameter df may be used with value of no, n, or 0 (e.g. df=no). These values can assist bots or other automated processing to detect the intended date format; omitting the df parameter may lead an editor or bot to change the format to an unintended value.
The preference to display the month first may also be indicated via the parameter mf (e.g. mf=yes). While not actually used by the template, this is another method of indicating that the default format is intended. Do not specify both "df" and "mf" parameters in the same use of the template.
Examples
[edit]Default separator: semicolon
[edit]| Syntax | Result |
|---|---|
| Full date (year, month, day) | |
{{Start date and age|2010|01|02}} |
January 2, 2010 |
{{Start date and age|2008|Jan|09|df=no}} |
January 9, 2008 |
{{Start date and age|2003|January|05|mf=yes}} |
January 5, 2003 |
{{Start date and age|2010|1|2|df=yes}} |
2 January 2010 |
{{Start date and age|2008|Jan|9|df=y}} |
9 January 2008 |
{{Start date and age|2003|January|5|df=1}} |
5 January 2003 |
100 days ago:{{Start date and age|2025|12|3}} |
December 3, 2025 |
Yesterday:{{Start date and age|2026|3|12}} |
March 12, 2026 |
Today:{{Start date and age|2026|3|13}} |
March 13, 2026 |
| Year and month | |
{{Start date and age|2001|9}} |
September 2001 |
{{Start date and age|2002|09}} |
September 2002 |
{{Start date and age|2003|Sep}} |
September 2003 |
{{Start date and age|2004|September}} |
September 2004 |
| Year only | |
{{Start date and age|2005}} |
2005 |
Optional separator: parentheses
[edit]| Syntax | Result |
|---|---|
| Full date (year, month, day) | |
{{Start date and age|2003|02|15|p=yes}} |
February 15, 2003 |
{{Start date and age|2003|02|15|df=y|p=y}} |
15 February 2003 |
| Year and month | |
{{Start date and age|2003|02|p=1}} |
February 2003 |
| Year only | |
{{Start date and age|2003|paren=yes}} |
2003 |
Line break with semicolon
[edit]| Syntax | Result |
|---|---|
| Full date (year, month, day) | |
{{Start date and age|2003|02|15|br=yes}} |
February 15, 2003 |
{{Start date and age|2003|02|15|df=y|br=y}} |
15 February 2003 |
| Year and month | |
{{Start date and age|2003|02|br=1}} |
February 2003 |
| Year only | |
{{Start date and age|2003|br=yes}} |
2003 |
Line break with parentheses
[edit]| Syntax | Result |
|---|---|
| Full date (year, month, day) | |
{{Start date and age|2003|02|15|p=yes|br=yes}} |
February 15, 2003 |
{{Start date and age|2003|02|15|df=y|p=y|br=y}} |
15 February 2003 |
| Year and month | |
{{Start date and age|2003|02|p=1|br=1}} |
February 2003 |
| Year only | |
{{Start date and age|2003|paren=yes|br=yes}} |
2003 |
Supporting templates
[edit]- Template:MONTHNAME – display name of month for a given number 1 (January) through 12 (December).
- Template:Time ago – display number of days, months, or years ago (for dates given as
|yyyy|mm|dd). - Template:Years or months ago – display number of months or years ago (for dates given as
|yyyy|mmor|yyyy). - Template:Yesno – allows optional formatting parameters to accept values other than "yes" (such as "y" or "1").
Use in microformats
[edit]See also
[edit]- {{Time ago}} and {{Years or months ago}}
- {{Start date and years ago}} and {{Age}}