Template:Birth date/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. |
| Do not use this template when the person’s exact date of birth is disputed or unknown. |
The {{Birth date}} and {{Birth date and age}} templates will return a person’s date of birth and optionally his/her age. They have the shortcuts {{dob}} and {{bda}}, respectively.
Using this template rather than simply inserting the date into articles allows for the inclusion of hidden metadata about the date. This metadata can be used by web browsers and other software tools to extract the details, and display them using some other website or mapping tool, index or search them.
Syntax
[edit]To display the birth date only
[edit]- {{Birth date|year of birth|month of birth|day of birth|additional parameters}}
Do not use with non-Gregorian dates because the resulting hCard hidden date will be false.
{{dob}} is a redirect to {{Birth date}}
[edit]{{dob|year of birth|month of birth|day of birth|additional parameters}}
To display a birth date with calculated age
[edit]{{Birth date and age|year of birth|month of birth|day of birth|additional parameters}}
This form is only intended for living persons. In the rare case that a living person's birth date is given in a non-Gregorian calendar this template should not be used. The parameter names 'year', 'month', and 'day' can be used instead of the first, second, and third parameters for 'Birth date and age' only. These parameter names are not available for the 'Birth date' template.
{{Bda}} is a redirect to {{Birth date and age}}
[edit]{{Bda|year of birth|month of birth|day of birth|additional parameters}}
Examples:
{{Birth date|1993|2|4|df=yes}}returns "4 February 1993"{{Birth date|1993|2|4|mf=yes}}returns "February 4, 1993"{{Birth date|1993|2|4}}returns "February 4, 1993"{{Birth date|1993|2|24|df=yes}}returns "24 February 1993"{{Birth date|1993|2|24|mf=yes}}returns "February 24, 1993"{{Birth date|1993|2|24}}returns "February 24, 1993"
{{Birth date and age|1993|2|4|df=yes}}returns 4 February 1993{{Birth date and age|1993|2|4|mf=yes}}returns February 4, 1993{{Birth date and age|1993|2|4}}returns February 4, 1993{{Birth date and age|1993|2|24|df=yes}}returns 24 February 1993{{Birth date and age|1993|2|24|mf=yes}}returns February 24, 1993{{Birth date and age|1993|2|24}}returns February 24, 1993
Month First (mf) and Day First (df) options
[edit]The df (day first) and mf (month first) parameters indicate the intended date format to display. The appropriate parameter should be set to "y" or "yes" e.g. df=yes or mf=y.
The default output of this template is to display the month before the day. This default may not be appropriate for articles about people from parts of the world where the day precedes the month in a date. In such articles the parameter, "df", should be set to display the day before the month.
The parameter "mf", while not actually used by the template, will indicate that month first format is intended. Using these parameters can assist bots or other automated processing to detect which date format is intended; leaving the format as default may lead an editor or bot to change the format to an unintended value.
Do not specify both "df" and "mf" parameters in the same use of the template, as these formats are mutually exclusive.
Examples:
{{Birth date|1993|2|24|df=yes}}displays "24 February 1993".
{{Birth date and age|1993|2|24|df=yes}}displays "24 February 1993".
{{Birth date|1993|2|24|mf=yes}}displays "February 24, 1993".
{{Birth date and age|1993|2|24|mf=yes}}displays "February 24, 1993".
hCard microformat
[edit]The templates also returns the date, hidden by CSS, in the ISO 8601 format (but not necessarily to the ISO 8601 standard) needed by hCard microformats. for example:
(<span class="bday">1993-02-24</span>)
Note: for the "foundation", "built" and similar set-up dates of companies, buildings, etc., use {{Start date}} (this will work for year-only or month-year dates).
See the microformats project for details.
Notes
[edit]When only the year of a person's birth and/or death are known, or if it is desired not to state a person's full dates of birth and death for privacy reasons, use the templates {{Birth year and age}} and {{Death year and age}} instead.
Note: The template will appear broken when the parameters are left blank (as seen above).
Note: Do not use this template inside of the Persondata template, as it can interfere with data extraction.
Template data
[edit]This is the TemplateData documentation for the template used by the new VisualEditor.
Birth date
This template returns a living person's date of birth and current age.
| Parameter | Description | Type | Status | |
|---|---|---|---|---|
| Year of birth | 1 | The year in which the person was born | Number | required |
| Month of birth | 2 | The month (number) in which the person was born | Number | required |
| Day of birth | 3 | The day (number) in which the person was born | Number | required |
| Day first | df | When set to 'y' or 'yes', the date of birth is output in a DMY format | String | optional |
| Month first | mf | When set to 'y' or 'yes', stresses that the default MDY date format is intended for the date of birth | String | optional |