Wiktionary
siwiktionary
https://si.wiktionary.org/wiki/%E0%B7%80%E0%B7%92%E0%B6%9A%E0%B7%8A%E0%B7%82%E0%B6%B1%E0%B6%BB%E0%B7%92:%E0%B6%B8%E0%B7%94%E0%B6%BD%E0%B7%8A_%E0%B6%B4%E0%B7%92%E0%B6%A7%E0%B7%94%E0%B7%80
MediaWiki 1.46.0-wmf.22
case-sensitive
මාධ්යය
විශේෂ
සාකච්ඡාව
පරිශීලක
පරිශීලක සාකච්ඡාව
වික්ෂනරි
වික්ෂනරි සාකච්ඡාව
ගොනුව
ගොනුව සාකච්ඡාව
මාධ්යවිකි
මාධ්යවිකි සාකච්ඡාව
සැකිල්ල
සැකිලි සාකච්ඡාව
උදවු
උදවු සාකච්ඡාව
ප්රවර්ගය
ප්රවර්ග සාකච්ඡාව
TimedText
TimedText talk
Module
Module talk
Event
Event talk
වික්ෂනරි:වින්කලය
4
4920
230606
228197
2026-04-05T14:27:44Z
Lee
19
/* MediaWiki:Gadget-Palette.css */ නව ඡේදය
230606
wikitext
text/x-wiki
__NEWSECTIONLINK__
<small>වික්ෂණරිය > [[Wiktionary:Discussion rooms|සාකච්ඡා මණ්ඩප]] >වින්කලය</small>
{{shortcut|WT:GP}}
<inputbox>
bgcolor=transparent
type=fulltext
prefix=වික්ෂනරි:වින්කලය
break=no
width=50
searchbuttonlabel=වින්කලය ලේඛනාගාරය තුළ සොයන්න
</inputbox>
<div style="padding:1em;font-size:1.4em;text-align:center" class="plainlinks" id="new-section-redirect">{{clickable button|නව සාකච්ඡාවකට මෙතැන ක්ලික් කරන්න|class=mw-ui-progressive|url={{fullurl:වික්ෂනරි:වින්කලය|action=edit§ion=new}}}}</div>
{{Wiktionary:Discussion rooms}}
{{වික්ෂනරි:වින්කලය/ශීර්ෂකය}}
[[Category:High volume discussion pages]]
[[cs:Wikislovník:Pod lípou (technika)]]
[[de:Wiktionary:Meinungsbild/Vorlage und Standards]]
[[en:Wiktionary:Grease pit]]
[[fr:Wiktionnaire:Questions techniques]]
[[it:Wikizionario:Discussione policy/Template/Discussioni]]
== ඉංග්රීසි ප්රවර්ග ක්රමය ==
වඩා හොඳ ක්රමයක් හොයා ගන්න බැරිනම් අපිත් ඉංග්රීසි ප්රවර්ග ක්රමයම භාවිතා කරමු නේද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 12:19, 29 සැප්තැම්බර් 2023 (යූටීසී)
== උපග්රන්තය නාමාවකාශය ලබා ගැනීම ==
=== තාක්ෂණික කරුණු ===
==== මූලික ====
* හැඳිනුම් අංකය (NS): 100
* නාමාවකාශ නාමය (Name): උපග්රන්ථය
* හරවා යැවීම් (Redirect): Appendix
==== සාකච්ඡා ====
* හැඳිනුම් අංකය (NS): 101
* නාමාවකාශ නාමය (Name): උපග්රන්ථ සාකච්ඡාව
* හරවා යැවීම් (Redirect): Appendix talk
=== යෝජනාව ===
දැනට මෙම ව්යාපෘතිය තුළ "උපග්රන්ථය" නමින් නාමාවකාශයක් නොපවතියි. ඉංග්රීසි ව්යාපෘතියේ පවතින බොහෝ සැකිලි මගින් "Appendix" නාමාවකාශය බලාපොරොත්තු වන බැවින් සහ, උපග්රන්ත ලෙස වෙන් කළ යුතු කරුණු එසේ යොමු කිරීම සඳහා මෙම ව්යාපෘතිය තුළ ද එම නාමාවකාශය නිර්මාණය කළ යුතු බවට යෝජනා කරමි. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:08, 13 ජූලි 2025 (යූටීසී)
=== සහාය ===
# යෝජකයා ලෙස. --[[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:09, 13 ජූලි 2025 (යූටීසී)
#--[[පරිශීලක:සමන්|සමන්]] ([[පරිශීලක සාකච්ඡාව:සමන්|සාකච්ඡාව]]) 04:25, 17 ජූලි 2025 (යූටීසී)
=== අදහස් ===
වෙනත් අදහස් වෙතොත් පහත දක්වන්න:
== නිරුක්ති ශාඛා, පරිවර්තන වැඩතලයේ දී පෙන්නන්නේ නැත්තේ ඇයි? ==
*{{revision|221377|පෙර සාකච්ඡාව සඳහා මෙතැන බලන්න}}.
@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මෙම ගැටළුව ලොග් වෙලා නොමැති පරිශිලකයන් හට පමණයි නේද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 10:07, 16 ජනවාරි 2026 (යූටීසී)
:@[[පරිශීලක:Lee|Lee]]; නැහැ. මට '''වැඩතලයේ''' දී ලොග් වෙලා ඉඳිද්දිත් නිරුක්ති ශාඛා, පරිවර්තන පේන්නේ නැහැ. (මට ජංගම දසුනේ දී තත්වය නම් දැන් බලන්න විදිහක් නැහැ.) [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:48, 16 ජනවාරි 2026 (යූටීසී)
::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], [[computings]] යොමුවේ quotation නිවැරදි ලෙස පෙන්වනවා ද? මට ලොග් වෙලා සිටින විට නිවැරදිව පෙන්වනවා, නමුත් ලොග් වෙලා නොමැති නම්, වැඩ නෑ. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:05, 16 ජනවාරි 2026 (යූටීසී)
:::@[[පරිශීලක:Lee|Lee]], ලොග් වෙලා ඉන්න කොට quotation පෙනෙන්නෙ නැහැ. පෙනෙන්නේ මෙහෙම: computing යන යෙදුමෙහි බහුවචන පදය [] [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:19, 16 ජනවාරි 2026 (යූටීසී)
::::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මාර වැඩේ. මට ලොග් වෙලා නම් හරියට පෙන්වනවා. ලොග් වෙලා නැත්නම් ඔය කියන විදිහට තමා පේන්නේ. JS අවුලක් ද CSS අවුලක් ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:37, 17 ජනවාරි 2026 (යූටීසී)
:::::@[[පරිශීලක:Lee|Lee]], අපි දෙන්නගේ විකිපීඩියා ගිණුම් දෙක වර්ග දෙකක් වෙනවා ඇති නේ ද? මගේ මට්ටමේ වෙන කෙනෙක් ගෙනුත් අහලා බැලුව ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 17:17, 17 ජනවාරි 2026 (යූටීසී)
::::::@[[පරිශීලක:Lee|Lee]], අර wikitable, center align එක නම් හම්බ වුණා. හැබැයි manually කරන්න ඕනේ. align="center"| කියලා දාන්න වෙනවා. [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 9 පෙබරවාරි 2026 (යූටීසී)
== MediaWiki:Gadget-Palette.css ==
ඉංග්රීසි වික්ෂණරියේ සිට [[:en:MediaWiki:Gadget-Palette.css]] මෙම ව්යාපෘතියට ආයාත කිරීමට යෝජනා කරමි.
* ප්රභවය: [[:en:MediaWiki:Gadget-Palette.css]]
* ඉලක්කය: [[:MediaWiki:Gadget-Palette.css]]
විරුද්ධතා ඇතොත් පහත දක්වන්න. එසේ නැත්නම් සහාය දක්වන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:27, 5 අප්රේල් 2026 (යූටීසී)
8frdst6deejbetvfth3gkk4rsak4am8
230607
230606
2026-04-05T14:28:28Z
Lee
19
/* MediaWiki:Gadget-Palette.css */
230607
wikitext
text/x-wiki
__NEWSECTIONLINK__
<small>වික්ෂණරිය > [[Wiktionary:Discussion rooms|සාකච්ඡා මණ්ඩප]] >වින්කලය</small>
{{shortcut|WT:GP}}
<inputbox>
bgcolor=transparent
type=fulltext
prefix=වික්ෂනරි:වින්කලය
break=no
width=50
searchbuttonlabel=වින්කලය ලේඛනාගාරය තුළ සොයන්න
</inputbox>
<div style="padding:1em;font-size:1.4em;text-align:center" class="plainlinks" id="new-section-redirect">{{clickable button|නව සාකච්ඡාවකට මෙතැන ක්ලික් කරන්න|class=mw-ui-progressive|url={{fullurl:වික්ෂනරි:වින්කලය|action=edit§ion=new}}}}</div>
{{Wiktionary:Discussion rooms}}
{{වික්ෂනරි:වින්කලය/ශීර්ෂකය}}
[[Category:High volume discussion pages]]
[[cs:Wikislovník:Pod lípou (technika)]]
[[de:Wiktionary:Meinungsbild/Vorlage und Standards]]
[[en:Wiktionary:Grease pit]]
[[fr:Wiktionnaire:Questions techniques]]
[[it:Wikizionario:Discussione policy/Template/Discussioni]]
== ඉංග්රීසි ප්රවර්ග ක්රමය ==
වඩා හොඳ ක්රමයක් හොයා ගන්න බැරිනම් අපිත් ඉංග්රීසි ප්රවර්ග ක්රමයම භාවිතා කරමු නේද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 12:19, 29 සැප්තැම්බර් 2023 (යූටීසී)
== උපග්රන්තය නාමාවකාශය ලබා ගැනීම ==
=== තාක්ෂණික කරුණු ===
==== මූලික ====
* හැඳිනුම් අංකය (NS): 100
* නාමාවකාශ නාමය (Name): උපග්රන්ථය
* හරවා යැවීම් (Redirect): Appendix
==== සාකච්ඡා ====
* හැඳිනුම් අංකය (NS): 101
* නාමාවකාශ නාමය (Name): උපග්රන්ථ සාකච්ඡාව
* හරවා යැවීම් (Redirect): Appendix talk
=== යෝජනාව ===
දැනට මෙම ව්යාපෘතිය තුළ "උපග්රන්ථය" නමින් නාමාවකාශයක් නොපවතියි. ඉංග්රීසි ව්යාපෘතියේ පවතින බොහෝ සැකිලි මගින් "Appendix" නාමාවකාශය බලාපොරොත්තු වන බැවින් සහ, උපග්රන්ත ලෙස වෙන් කළ යුතු කරුණු එසේ යොමු කිරීම සඳහා මෙම ව්යාපෘතිය තුළ ද එම නාමාවකාශය නිර්මාණය කළ යුතු බවට යෝජනා කරමි. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:08, 13 ජූලි 2025 (යූටීසී)
=== සහාය ===
# යෝජකයා ලෙස. --[[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:09, 13 ජූලි 2025 (යූටීසී)
#--[[පරිශීලක:සමන්|සමන්]] ([[පරිශීලක සාකච්ඡාව:සමන්|සාකච්ඡාව]]) 04:25, 17 ජූලි 2025 (යූටීසී)
=== අදහස් ===
වෙනත් අදහස් වෙතොත් පහත දක්වන්න:
== නිරුක්ති ශාඛා, පරිවර්තන වැඩතලයේ දී පෙන්නන්නේ නැත්තේ ඇයි? ==
*{{revision|221377|පෙර සාකච්ඡාව සඳහා මෙතැන බලන්න}}.
@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මෙම ගැටළුව ලොග් වෙලා නොමැති පරිශිලකයන් හට පමණයි නේද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 10:07, 16 ජනවාරි 2026 (යූටීසී)
:@[[පරිශීලක:Lee|Lee]]; නැහැ. මට '''වැඩතලයේ''' දී ලොග් වෙලා ඉඳිද්දිත් නිරුක්ති ශාඛා, පරිවර්තන පේන්නේ නැහැ. (මට ජංගම දසුනේ දී තත්වය නම් දැන් බලන්න විදිහක් නැහැ.) [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:48, 16 ජනවාරි 2026 (යූටීසී)
::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], [[computings]] යොමුවේ quotation නිවැරදි ලෙස පෙන්වනවා ද? මට ලොග් වෙලා සිටින විට නිවැරදිව පෙන්වනවා, නමුත් ලොග් වෙලා නොමැති නම්, වැඩ නෑ. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:05, 16 ජනවාරි 2026 (යූටීසී)
:::@[[පරිශීලක:Lee|Lee]], ලොග් වෙලා ඉන්න කොට quotation පෙනෙන්නෙ නැහැ. පෙනෙන්නේ මෙහෙම: computing යන යෙදුමෙහි බහුවචන පදය [] [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:19, 16 ජනවාරි 2026 (යූටීසී)
::::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මාර වැඩේ. මට ලොග් වෙලා නම් හරියට පෙන්වනවා. ලොග් වෙලා නැත්නම් ඔය කියන විදිහට තමා පේන්නේ. JS අවුලක් ද CSS අවුලක් ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:37, 17 ජනවාරි 2026 (යූටීසී)
:::::@[[පරිශීලක:Lee|Lee]], අපි දෙන්නගේ විකිපීඩියා ගිණුම් දෙක වර්ග දෙකක් වෙනවා ඇති නේ ද? මගේ මට්ටමේ වෙන කෙනෙක් ගෙනුත් අහලා බැලුව ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 17:17, 17 ජනවාරි 2026 (යූටීසී)
::::::@[[පරිශීලක:Lee|Lee]], අර wikitable, center align එක නම් හම්බ වුණා. හැබැයි manually කරන්න ඕනේ. align="center"| කියලා දාන්න වෙනවා. [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 9 පෙබරවාරි 2026 (යූටීසී)
== MediaWiki:Gadget-Palette.css ==
ඉංග්රීසි වික්ෂණරියේ සිට [[:en:MediaWiki:Gadget-Palette.css]] මෙම ව්යාපෘතියට ආයාත කිරීමට යෝජනා කරමි.
* ප්රභවය: [[:en:MediaWiki:Gadget-Palette.css]]
* ඉලක්කය: [[:MediaWiki:Gadget-Palette.css]]
විරුද්ධතා ඇතොත් පහත දක්වන්න. එසේ නැත්නම් සහාය දක්වන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:27, 5 අප්රේල් 2026 (යූටීසී)
=== අදහස් ===
==== සහාය ====
==== විරුද්ධ ====
82m88jesaz7onfeep92j7nv84q9ev4f
230608
230607
2026-04-05T14:28:56Z
Lee
19
/* සහාය */
230608
wikitext
text/x-wiki
__NEWSECTIONLINK__
<small>වික්ෂණරිය > [[Wiktionary:Discussion rooms|සාකච්ඡා මණ්ඩප]] >වින්කලය</small>
{{shortcut|WT:GP}}
<inputbox>
bgcolor=transparent
type=fulltext
prefix=වික්ෂනරි:වින්කලය
break=no
width=50
searchbuttonlabel=වින්කලය ලේඛනාගාරය තුළ සොයන්න
</inputbox>
<div style="padding:1em;font-size:1.4em;text-align:center" class="plainlinks" id="new-section-redirect">{{clickable button|නව සාකච්ඡාවකට මෙතැන ක්ලික් කරන්න|class=mw-ui-progressive|url={{fullurl:වික්ෂනරි:වින්කලය|action=edit§ion=new}}}}</div>
{{Wiktionary:Discussion rooms}}
{{වික්ෂනරි:වින්කලය/ශීර්ෂකය}}
[[Category:High volume discussion pages]]
[[cs:Wikislovník:Pod lípou (technika)]]
[[de:Wiktionary:Meinungsbild/Vorlage und Standards]]
[[en:Wiktionary:Grease pit]]
[[fr:Wiktionnaire:Questions techniques]]
[[it:Wikizionario:Discussione policy/Template/Discussioni]]
== ඉංග්රීසි ප්රවර්ග ක්රමය ==
වඩා හොඳ ක්රමයක් හොයා ගන්න බැරිනම් අපිත් ඉංග්රීසි ප්රවර්ග ක්රමයම භාවිතා කරමු නේද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 12:19, 29 සැප්තැම්බර් 2023 (යූටීසී)
== උපග්රන්තය නාමාවකාශය ලබා ගැනීම ==
=== තාක්ෂණික කරුණු ===
==== මූලික ====
* හැඳිනුම් අංකය (NS): 100
* නාමාවකාශ නාමය (Name): උපග්රන්ථය
* හරවා යැවීම් (Redirect): Appendix
==== සාකච්ඡා ====
* හැඳිනුම් අංකය (NS): 101
* නාමාවකාශ නාමය (Name): උපග්රන්ථ සාකච්ඡාව
* හරවා යැවීම් (Redirect): Appendix talk
=== යෝජනාව ===
දැනට මෙම ව්යාපෘතිය තුළ "උපග්රන්ථය" නමින් නාමාවකාශයක් නොපවතියි. ඉංග්රීසි ව්යාපෘතියේ පවතින බොහෝ සැකිලි මගින් "Appendix" නාමාවකාශය බලාපොරොත්තු වන බැවින් සහ, උපග්රන්ත ලෙස වෙන් කළ යුතු කරුණු එසේ යොමු කිරීම සඳහා මෙම ව්යාපෘතිය තුළ ද එම නාමාවකාශය නිර්මාණය කළ යුතු බවට යෝජනා කරමි. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:08, 13 ජූලි 2025 (යූටීසී)
=== සහාය ===
# යෝජකයා ලෙස. --[[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:09, 13 ජූලි 2025 (යූටීසී)
#--[[පරිශීලක:සමන්|සමන්]] ([[පරිශීලක සාකච්ඡාව:සමන්|සාකච්ඡාව]]) 04:25, 17 ජූලි 2025 (යූටීසී)
=== අදහස් ===
වෙනත් අදහස් වෙතොත් පහත දක්වන්න:
== නිරුක්ති ශාඛා, පරිවර්තන වැඩතලයේ දී පෙන්නන්නේ නැත්තේ ඇයි? ==
*{{revision|221377|පෙර සාකච්ඡාව සඳහා මෙතැන බලන්න}}.
@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මෙම ගැටළුව ලොග් වෙලා නොමැති පරිශිලකයන් හට පමණයි නේද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 10:07, 16 ජනවාරි 2026 (යූටීසී)
:@[[පරිශීලක:Lee|Lee]]; නැහැ. මට '''වැඩතලයේ''' දී ලොග් වෙලා ඉඳිද්දිත් නිරුක්ති ශාඛා, පරිවර්තන පේන්නේ නැහැ. (මට ජංගම දසුනේ දී තත්වය නම් දැන් බලන්න විදිහක් නැහැ.) [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:48, 16 ජනවාරි 2026 (යූටීසී)
::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], [[computings]] යොමුවේ quotation නිවැරදි ලෙස පෙන්වනවා ද? මට ලොග් වෙලා සිටින විට නිවැරදිව පෙන්වනවා, නමුත් ලොග් වෙලා නොමැති නම්, වැඩ නෑ. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:05, 16 ජනවාරි 2026 (යූටීසී)
:::@[[පරිශීලක:Lee|Lee]], ලොග් වෙලා ඉන්න කොට quotation පෙනෙන්නෙ නැහැ. පෙනෙන්නේ මෙහෙම: computing යන යෙදුමෙහි බහුවචන පදය [] [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:19, 16 ජනවාරි 2026 (යූටීසී)
::::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මාර වැඩේ. මට ලොග් වෙලා නම් හරියට පෙන්වනවා. ලොග් වෙලා නැත්නම් ඔය කියන විදිහට තමා පේන්නේ. JS අවුලක් ද CSS අවුලක් ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 15:37, 17 ජනවාරි 2026 (යූටීසී)
:::::@[[පරිශීලක:Lee|Lee]], අපි දෙන්නගේ විකිපීඩියා ගිණුම් දෙක වර්ග දෙකක් වෙනවා ඇති නේ ද? මගේ මට්ටමේ වෙන කෙනෙක් ගෙනුත් අහලා බැලුව ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 17:17, 17 ජනවාරි 2026 (යූටීසී)
::::::@[[පරිශීලක:Lee|Lee]], අර wikitable, center align එක නම් හම්බ වුණා. හැබැයි manually කරන්න ඕනේ. align="center"| කියලා දාන්න වෙනවා. [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 9 පෙබරවාරි 2026 (යූටීසී)
== MediaWiki:Gadget-Palette.css ==
ඉංග්රීසි වික්ෂණරියේ සිට [[:en:MediaWiki:Gadget-Palette.css]] මෙම ව්යාපෘතියට ආයාත කිරීමට යෝජනා කරමි.
* ප්රභවය: [[:en:MediaWiki:Gadget-Palette.css]]
* ඉලක්කය: [[:MediaWiki:Gadget-Palette.css]]
විරුද්ධතා ඇතොත් පහත දක්වන්න. එසේ නැත්නම් සහාය දක්වන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:27, 5 අප්රේල් 2026 (යූටීසී)
=== අදහස් ===
==== සහාය ====
# යෝජකයා ලෙස. --[[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:28, 5 අප්රේල් 2026 (යූටීසී)
==== විරුද්ධ ====
h6pqrzc12pjey00qadawvjtpnivfiif
සැකිල්ල:ස්ථානය/documentation
10
32585
230598
82913
2026-03-19T00:29:56Z
en>Emanuele6
0
fix overlapping
230598
wikitext
text/x-wiki
{{documentation subpage}}
{{hatnote|For a list of types of place name of each country, see '''[[Wiktionary:Place names]]''' .}}
{{rfc|und|Missing documentation for many parameters and features.}}
{{uses lua|Module:place}}
This template generates definition lines and categories for [[placename]]s.
==Usage==
The basic usage is as follows (e.g. for {{m|en|Germany}}):
<syntaxhighlight lang="wikitext">
# {{place|en|country|cont/Europe}}.
</syntaxhighlight>
which generates:
# {{place|en|country|cont/Europe}}.
and places the page in [[:Category:en:Countries in Europe]].
The second parameter is the type of the place, while the third and further parameters are ''holonyms'', indicating the larger entities that the place is contained within. Each holonym is of the form <code>TYPE/NAME</code>. The type can be spelled out in full, e.g. <code>continent</code>; common types can also be abbreviated, e.g. <code>cont</code> for <code>continent</code> (as above), <code>s</code> for <code>state</code>, <code>p</code> for <code>province</code>, <code>c</code> for <code>country</code>, etc. The full list of abbreviations is given below.
More than one holonym can be given, e.g. for {{m|en|Toronto}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|p/Ontario|c/Canada}}.
</syntaxhighlight>
which generates:
# {{place|en|city|p/Ontario|c/Canada}}.
and places the page in [[:Category:en:Cities in Ontario, Canada]].
The categorization system automatically generates the correct-format definition and category/categories, even when that requires computing a variant name, e.g. for {{m|en|Amsterdam}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|c/Netherlands}}.
</syntaxhighlight>
which generates:
# {{place|en|city|c/Netherlands}}.
and places the page in [[:Category:en:Cities in the Netherlands]]. In this case, both the definition and category need to have "the" prefixed to the country name, which automatically happens.
As another example, for {{m|en|Pittsburgh}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|s/Pennsylvania|c/United States}}.
</syntaxhighlight>
which generates:
# {{place|en|city|s/Pennsylvania|c/United States}}.
and places the page in [[:Category:en:Cities in Pennsylvania, USA]]. (States of the United States are suffixed with <code>, USA</code> in some categories, to aid in distinguishing the US state of Georgia from the country of Georgia.)
For place names in foreign languages, a translation in English can be given, which changes the definition format, e.g. for {{m|fr|Allemagne}} (the French term for Germany):
<syntaxhighlight lang="wikitext">
# {{place|fr|country|cont/Europe|t1=Germany}}
</syntaxhighlight>
which generates:
# {{place|fr|country|cont/Europe|t1=Germany}}
and places the page in [[:Category:fr:Countries in Europe]]. (Note that this category has language code <code>fr</code>, which contains ''French'' terms for countries in Europe, rather than English terms.)
Some place types use "of" instead of "in" in the definition and category, e.g. for {{m|en|Fairfax County}}:
<syntaxhighlight lang="wikitext">
# {{place|en|county|s/Virginia|c/United States}}.
</syntaxhighlight>
which generates:
# {{place|en|county|s/Virginia|c/United States}}.
and places the page in [[:Category:en:Counties of Virginia, USA]].
Additional descriptive text can be present among the holonyms, and will be formatted correctly in the definition, e.g. for {{m|en|Germany}}:
<syntaxhighlight lang="wikitext">
# {{place|en|country|in central|cont/Europe}}.
</syntaxhighlight>
which generates:
# {{place|en|country|in central|cont/Europe}}.
and places the page in [[:Category:en:Countries in Europe]], as above.
==Single-spec format==
For complex cases, an alternative format can be used, known as ''single spec'', which freely allows for placetypes and holonyms to be interspersed among raw text, e.g. as follows (for {{m|en|Fener}}):
<syntaxhighlight lang="wikitext"># {{place|en|A <<neighborhood>> midway up the <<inlet/Golden Horn>> within <<dist/Fatih>> in <<city/Istanbul>>, <<c/Turkey>>}}.</syntaxhighlight>
which generates
# {{place|en|A <<neighborhood>> midway up the <<inlet/Golden Horn>> within <<dist/Fatih>> in <<city/Istanbul>>, <<c/Turkey>>}}.
and places the page in [[:Category:en:Neighborhoods in Turkey]].
In this format, placetypes and holonyms are surrounded by <code><<...>></code>. The presence of a slash indicates a holonym; no slash indicates a placetype. There is no requirement that placetypes precede holonyms.
In this format, it is possible to break up a multiword placetype if the initial word or words are recognized qualifiers (see below), such as "former" or "ancient". Example:
<syntaxhighlight lang="wikitext"># {{lb|en|now|historical}} {{place|en|A <<former>> French <<colony>> on the <<isl:pref/Hispaniola>> from 1659 to 1809, roughly equivalent to modern-day <<c/Haiti>>}}.</syntaxhighlight>
which generates
# {{lb|en|now|historical}} {{place|en|A <<former>> French <<colony>> on the <<isl:pref/Hispaniola>> from 1659 to 1809, roughly equivalent to modern-day <<c/Haiti>>}}.
and places the page in [[:Category:en:Former dependent territories]] (as <code><<former colony>></code> would do), rather than in [[:Category:en:Dependent territories]] (as <code><<colony>></code> would normally do).
==Mixed format==
You can also mix the separate-parameter and single-spec formats, as long as the single spec precedes the separate parameters. For example, for {{m|en|Kodungallur}}:
<syntaxhighlight lang="wikitext"># {{place|en|A historically significant <<town>> in|dist/Thrissur|s/Kerala|in southwestern|c/India}}.</syntaxhighlight>
which generates
# {{place|en|A historically significant <<town>> in|dist/Thrissur|s/Kerala|in southwestern|c/India}}.
In this format, no text (e.g. {{cd|the}}, {{cd|in}}, {{cd|of}}) is added prior to the first holonym; thus you must include it in the single spec parameter, as follows:
<syntaxhighlight lang="wikitext"># {{place|yo|t={{w|Isin, Kwara|Owu}}|an {{l|yo|Ìgbómìnà}} [[Yoruba]] <<town>> in the|lgarea:pref/Isin|s/Kwara|c/Nigeria}}</syntaxhighlight>
which generates
# {{place|yo|t={{w|Isin, Kwara|Owu}}|an {{l|yo|Ìgbómìnà}} [[Yoruba]] <<town>> in the|lgarea:pref/Isin|s/Kwara|c/Nigeria}}
==Parameters==
Primary parameters:
; {{para|1}}: the language code of the entry
; {{para|2}}: ''see [[#Placetype parameter]]''
; {{para|3}}, {{para|4}}, {{para|5}}, ...: ''see [[#Holonym parameters]]''
; {{para|t1}}, {{para|t2}}, {{para|t3}}, ...: English translation(s) of the place
; {{para|tid1}}, {{para|tid2}}, {{para|tid3}}, ...: sense ID's for the English translation(s) of the place; see {{temp|senseid}}
; {{para|cat}}, {{para|cat2}}, ...: extra categories to add to the page; automatically prefixed by the language code, e.g. {{para|cat|Towns in England}} will add the page to [[:Category:fr:Towns in England]] if the specified language code is <code>fr</code>
; {{para|sort}}: the sort key for the categories generated by the template; rarely needs to be specified, except perhaps for Japanese
Suppression and text parameters:
; {{para|def}}: replaces the entire definition without affecting the categorization
; {{para|addl}}: adds further text to the end of the definition without affecting categorization
; {{para|a}}: replaces the indefinite article at the beginning of the definition
Extra information parameters:
; {{para|modern}}, {{para|modern2}}, ...: the modern name(s) or location(s) of the place
; {{para|official}}, {{para|official2}}, ...: the official name(s) of the place (e.g. [[People's Republic of China]] for [[China]])
; {{para|capital}}, {{para|capital2}}, ...: the capital city/cities of the place
; {{para|largest city}}, {{para|largest city2}}, ...: the largest city/cities of the place
; {{para|caplc}}: the capital and largest city of the place
; {{para|seat}}, {{para|seat2}}, ...: the [[seat]](s) of the place, particularly for counties and equivalents; displays "county seat", "parish seat" or "borough seat" for counties, parishes and boroughs respectively; otherwise, displays just "seat"
; {{para|shire town}}, {{para|shire town2}}, ...: the [[shire town]] (similar to a [[county seat]]) of the place, particularly for counties in [[Vermont]]
As with holonym parameters (see below), all of these parameters can be prefixed with a language code such as <code>fr:</code>, and prefixing just with <code>:</code> suppresses automatic linking.
===Placetype parameter===
The type(s) of place of the entry, such as <code>city</code>, <code>country</code> or <code>lake</code>. Multiple values are separated by a slash (<code>/</code>). The special value <code>and</code> suppresses the comma and doesn’t affect categorization.
The placetype parameter can be pluralized and will be handled correctly. For example:
<syntaxhighlight lang="wikitext"># {{place|en|Two <<former unincorporated communities>> in <<co/Williamson County>>, <<s/Illinois>>, <<c/USA>>}}.</syntaxhighlight>
displays as
# {{place|en|Two <<former unincorporated communities>> in <<co/Williamson County>>, <<s/Illinois>>, <<c/USA>>}}.
and places the page in [[:Category:en:Unincorporated communities in Illinois, USA]] and [[:Category:en:Unincorporated communities in the United States]].
The aliases that are recognized for holonym placetypes (see below) can also be used here and will automatically be expanded, but as a matter of style it is recommended to spell out the placetype in full except for generally-recognized aliases such as <code>CDP</code> for ''[[census-designated place]]''.
===Holonym parameters===
A holonym parameter has the following format: ''placetype''/''placename''. The format ''placetype''/''langcode'':''placename'' can be used to specify a non-English placename. Normally, the placename will automatically be linked; using <code>:</code> with no langcode suppresses automatic linking. Automatic linking is done exactly as if {{temp|l}} were being used, which means that square brackets can be used inside it to link to individual parts, and {{temp|w}} can be used to link to Wikipedia.
If the ''placetype'' and following slash are omitted, the parameter is displayed as regular text.
If there are multiple holonyms, commas are placed before all holonyms except the first, according to the following algorithm:
# No comma is placed before the first holonym (whether a placename or raw text).
# No comma is placed before a holonym (whether a placename or raw text) preceded by raw text.
# No comma is placed before the special raw-text values <code>and</code> and <code>in</code>.
# No comma is placed before raw text beginning with {{cd|*}}.
# A comma is placed before all other holonyms.
This does not apply to the [[#Alternative format|alternative format]] described above, where raw text, placetypes and placenames are freely interspersed and no extra commas are added unless multiple placenames are grouped together (see below).
====Grouped holonyms====
Multiple comma-separated placenames can be given, and are formatted correctly and individually linked. For example:
# <code><nowiki>{{place|en|river|c/Ukraine,Belarus,Poland}}.</nowiki></code>
#: {{place|en|river|c/Ukraine,Belarus,Poland}}.
# <code><nowiki>{{place|en|several cities|c/Argentina,Chile,Philippines,Spain,United States}}.</nowiki></code>
#: {{place|en|several cities|c/Argentina,Chile,Philippines,Spain,United States}}.
====Holonyms that take "the"====
Some holonyms are normally preceded by "the", as in "the United States", while others aren't, e.g. "France". Holonyms that are normally preceded by "the" will have this added if they occur either as (1) the first-specified holonym parameter; (2) the non-first holonym in a multi-holonym list (for this, see the example just above); (3) when accompanied by the <code>:pref</code> or <code>:Pref</code> modifiers (see below). In other positions, they will not be preceded by "the", e.g.:
# <code><nowiki>{{place|en|city|in the southern|c/United States}}.</nowiki></code>
#: {{place|en|city|in the southern|c/United States}}.
# <code><nowiki>{{place|en|city|s/Georgia|c/United States}}.</nowiki></code>
#: {{place|en|city|s/Georgia|c/United States}}.
====Holonym placetype aliases====
Several aliases are recognized for ''placetype'':
* <code>c</code> → <code>country</code>
* <code>r</code> → <code>region</code>
* <code>p</code> → <code>province</code>
* <code>s</code> → <code>state</code>
* <code>cc</code> → <code>constituent country</code> (should be used for England, Scotland, and Wales)
* <code>cont</code> → <code>continent</code>
* <code>dept</code> → <code>department</code>
* <code>dist</code> → <code>district</code>
* <code>riv</code> → <code>river</code>
* <code>carea</code> → <code>council area</code>
* <code>cdp</code>, <code>CDP</code> → <code>census-designated place</code>
[etc.]
The full list can be found below under [[#Recognized placetypes|Recognized placetypes]], which lists all recognized placetypes along with the aliases (if any) of each placetype.
====Holonym placetype modifiers====
Following the holonym placetype can be a colon followed by one or more comma-separated modifiers, e.g. <code>s:suf/New York</code>. Currently, the following modifiers are recognized:
* {{cd|suf}}: Display the full placetype as a lowercase suffix, e.g. <code>s:suf/New York</code> → <code>New York state</code>.
* {{cd|Suf}}: Display the full placetype as a capitalized suffix, e.g. <code>s:Suf/New York</code> → <code>New York State</code>.
* {{cd|pref}}: Display the full placetype as a lowercase prefix, e.g. <code>s:pref/New York</code> → <code>(the) state of New York</code> (the initial "the" is displayed in the same circumstances as when it is displayed before a holonym like "United States"; see above).
* {{cd|Pref}}: Display the full placetype as a capitalized prefix, e.g. <code>s:Pref/New York</code> → <code>(the) State of New York</code> (the initial "the" is displayed in the same circumstances as when it is displayed before a holonym like "United States"; see above).
* {{cd|noaff}}: Suppress the default display of a prefix or suffix (see below).
* {{cd|also}}: Specify that categorization should happen with this holonym as well as any previous holonyms. See [[#Multiple holonyms of different types]] below for examples.
* {{cd|the}}: Force insertion of {{cd|the}} before the holonym.
The reasons for using such a modifier are that (a) category recognition code is based off the full holonym placename, and hence won't work properly if a holonym like <code><nowiki>s/[[New York]] State</nowiki></code> is used; and (b) the bare holonym without the prefix or suffix will be autolinked, without the need to explicitly inserted brackets around the bare holonym.
Note that some holonym placetypes have prefixes or suffixes attached by default, e.g.:
* "canton", "civil parish", "community development block", "council area", "county borough", "department", "district", "district municipality", "local government district" (suffixed with "district"), "London borough" (suffixed with "borough"), "parish", "peninsula", "subdivision", "tehsil" (<code>suf</code>)
* "autonomous oblast", "autonomous okrug", "census area", "krai", "oblast", "okrug", "regional county municipality" (<code>Suf</code>)
* "metropolitan borough", "municipal district", "regional district", "regional municipality", "rural municipality" (<code>Pref</code>)
This affixing does not happen if the holonym placename already has the placetype or a part of it in it, if an explicit prefixing or suffixing modifier is used, or if the modifier <code>noaff</code> is used.
Examples:
# <code><nowiki>{{place|en|city|carea/Highland|cc/Scotland}}.</nowiki></code>
#: {{place|en|city|carea/Highland|cc/Scotland}}.
# <code><nowiki>{{place|en|capital city|c:pref/Georgia}}.</nowiki></code>
#: {{place|en|capital city|c:pref/Georgia}}.
====Multiple holonyms of different types====
Normally, when categorizing a place in a given holonym, all other holonyms of the same type also get categorized. For example, the following description of the [[Columbia River]]:
{{demo|<nowiki># {{place|en|river|c/USA|and|c/Canada}}.</nowiki>|sep=produces}}
and categorizes into [[:Category:Rivers in the United States]] and [[:Category:Rivers in Canada]]. However, once a holonym and other holonyms of the same type are categorized, no further categorization normally happens for the placetype in question. For example, the following:
{{demo|<nowiki># {{place|en|river|p/British Columbia|c/Canada|and|s/Washington,Oregon|c/USA}}.</nowiki>|sep=produces}}
but categorizes only into [[:Category:Rivers in British Columbia, Canada]] and [[:Category:Rivers in Canada]] and does not include categorizes the the states of the United States. To fix this, use the {{cd|:also}} modifier:
{{demo|<nowiki># {{place|en|river|p/British Columbia|c/Canada|and|s:also/Washington,Oregon|c/USA}}.</nowiki>}}
and categorizes into [[:Category:Rivers in British Columbia, Canada]], [[:Category:Rivers in Canada]], [[:Category:Rivers in Washington, USA]], [[:Category:Rivers in Oregon, USA]] and [[:Category:Rivers in the United States]].
Another common use of {{cd|:also}} is when describing a city that is the capital of several administrative divisions at different levels. An example is the city of [[Trento]] in [[Italy]], which is the capital both of the surrounding province of [[Trentino]] and the larger region of [[Trentino-Alto Adige]]. This could be specified as follows:
{{demo|<nowiki># {{place|en|city/capital|p:pref/Trentino|*and the|r:pref:also/Trentino-Alto Adige|c/Italy}}.</nowiki>}}
and categorizes both into [[:Category:Provincial capitals]] as well as [[:Category:Regional capitals of Italy]] (among other categories). As shown in this example, modifiers can be stacked one on another. This also uses {{cd|*}} to suppress the comma that would normally be added before the text {{cd|and the}}.
===Multiple descriptions===
The special value <code>;</code> restarts the description and categorization (except for the language code), and joins the two descriptions with a semicolon. For example:
# {{m|en|Rio de Janeiro}}
#: {{temp demo|place|pt|city/state capital|s/Rio de Janeiro|c/Brazil|;|former capital city|of|c/Brazil}}
The main reason to use this format, as opposed to simply stringing the entire description together, is that categorization is restarted. This allows for more flexible categorization of places that serve multiple functions than would otherwise be possible.
More generally, any value beginning with a <code>;</code> and not immediately followed by a space has the same restarting behavior, and in addition the text after the semicolon serves as the joining text, in place of a semicolon. For example:
# {{m|en|Vatican City}}
#: {{temp demo|place|en|city-state|r/Southern Europe|;,|an <<enclave>> within the city of <<city/Rome>>, <<c/Italy>>}}.
If the joining text begins with an ASCII or Unicode letter, a space is placed before the joining text, otherwise no space is added, as above. Finally, the special value <code>;;</code> joins the descriptions with only a space.
==More complex examples==
# {{m|en|Scranton}}
#: <code><nowiki>{{place|en|city|in northeastern|s/Pennsylvania|c/United States}}.</nowiki></code>
#: {{place|en|city|in northeastern|s/Pennsylvania|c/United States}}.
#:: {{i|adds [[:Category:en:Cities in Pennsylvania, USA]]}}
# {{m|en|Italy}}
#: <code><nowiki>{{place|en|country|in southern|cont/Europe|caplc=Rome}}.</nowiki></code>
#: {{place|en|country|in southern|cont/Europe|caplc=Rome}}.
#:: {{i|adds [[:Category:en:Countries in Europe]]}}
# {{m|it|Roma}}
#: <code><nowiki>{{place|it|capital city|c/Italy|t1=Rome}}</nowiki></code>
#: {{place|it|capital city|c/Italy|t1=Rome}}
#:: {{i|adds [[:Category:it:Capital cities]]}}
# {{m|fr|Wavrin}}
#: <code><nowiki>{{place|fr|town/and/municipality|dept/Nord|r:suf/Hauts-de-France|c/France}}</nowiki></code>
#: {{place|fr|town/and/municipality|dept/Nord|r:suf/Hauts-de-France|c/France}}
#:: {{i|adds [[:Category:fr:Towns in Nord, France]] and [[:Category:fr:Communes of Nord, France]]}}
# {{m|en|Bernicia}}
#: <code><nowiki>{{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>>|in northeastern|cc/England|and|southeastern|c/Scotland}}.</nowiki></code>
#: {{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>>|in northeastern|cc/England|and|southeastern|c/Scotland}}.
#:: {{i|adds [[:Category:en:Polities]], for lack of a more specific category}}
#: <code><nowiki>{{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>> in northeastern <<c/England>> and southeastern <<c/Scotland>>.}}</nowiki></code>
#: {{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>> in northeastern <<c/England>> and southeastern <<c/Scotland>>}}.
#:: {{i|same as previous example, using the alternative format}}
# {{m|en|Yuzhne}}
#: <code><nowiki>{{place|en|@former name of:Pivdenne|city|raion/Odesa|oblast/Odesa|in southern|c/Ukraine|;|name used before November 2024}}.</nowiki></code>
#: {{place|en|@former name of:Pivdenne|city|raion/Odesa|oblast/Odesa|in southern|c/Ukraine|;|name used before November 2024}}.
#:: {{i|adds [[:Category:en:Former names of settlements]]}}
# {{m|uk|Змії́вка}}
#: <code><nowiki>{{place|uk|@former name of:uk:Кідьош|village|urban hromada:suf/Berehove|raion/Berehove|obl/Zakarpattia|c/Ukraine|;|name used from 1946 to 1991; first mentioned in 1332|t=Zmiivka}}.</nowiki></code>
#: {{place|uk|@former name of:uk:Кідьош|village|urban hromada:suf/Berehove|raion/Berehove|obl/Zakarpattia|c/Ukraine|;|name used from 1946 to 1991; first mentioned in 1332|t=Zmiivka}}.
#:: {{i|adds [[:Category:uk:Former names of settlements]]}}
==Recognized placetypes==
The following placetypes are recognized by the module, and processed specially. This does not mean that other placetypes cannot be used, but they will not get special handling (e.g. their display form will not be linked and they will not trigger any categorization).
{{#invoke:place doc|placetype_table}}
==Recognized placenames==
The following place names are recognized by the module, and handled specially in some fashion. Note that there's nothing preventing any place name from being used. Note that items in the third and fourth columns are boldfaced if they are different from the placename in the first column.
{{#invoke:place doc|placename_table}}
==Recognized qualifiers==
The following qualifiers are recognized by the module. This means that if such a qualifier is used before a recognized placetype, the placetype will still be recognized and processed as normal. Note that items in the second column are boldfaced if they are different from the qualifier in the first column.
{{#invoke:place doc|qualifier_table}}
<includeonly>
[[Category:Place name templates]]
</includeonly>
qnlm8u1i7x8e0houkeorqdu37iagwyg
230599
230598
2026-04-05T14:13:11Z
Lee
19
[[:en:Template:place/documentation]] වෙතින් එක් සංශෝධනයක්
230598
wikitext
text/x-wiki
{{documentation subpage}}
{{hatnote|For a list of types of place name of each country, see '''[[Wiktionary:Place names]]''' .}}
{{rfc|und|Missing documentation for many parameters and features.}}
{{uses lua|Module:place}}
This template generates definition lines and categories for [[placename]]s.
==Usage==
The basic usage is as follows (e.g. for {{m|en|Germany}}):
<syntaxhighlight lang="wikitext">
# {{place|en|country|cont/Europe}}.
</syntaxhighlight>
which generates:
# {{place|en|country|cont/Europe}}.
and places the page in [[:Category:en:Countries in Europe]].
The second parameter is the type of the place, while the third and further parameters are ''holonyms'', indicating the larger entities that the place is contained within. Each holonym is of the form <code>TYPE/NAME</code>. The type can be spelled out in full, e.g. <code>continent</code>; common types can also be abbreviated, e.g. <code>cont</code> for <code>continent</code> (as above), <code>s</code> for <code>state</code>, <code>p</code> for <code>province</code>, <code>c</code> for <code>country</code>, etc. The full list of abbreviations is given below.
More than one holonym can be given, e.g. for {{m|en|Toronto}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|p/Ontario|c/Canada}}.
</syntaxhighlight>
which generates:
# {{place|en|city|p/Ontario|c/Canada}}.
and places the page in [[:Category:en:Cities in Ontario, Canada]].
The categorization system automatically generates the correct-format definition and category/categories, even when that requires computing a variant name, e.g. for {{m|en|Amsterdam}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|c/Netherlands}}.
</syntaxhighlight>
which generates:
# {{place|en|city|c/Netherlands}}.
and places the page in [[:Category:en:Cities in the Netherlands]]. In this case, both the definition and category need to have "the" prefixed to the country name, which automatically happens.
As another example, for {{m|en|Pittsburgh}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|s/Pennsylvania|c/United States}}.
</syntaxhighlight>
which generates:
# {{place|en|city|s/Pennsylvania|c/United States}}.
and places the page in [[:Category:en:Cities in Pennsylvania, USA]]. (States of the United States are suffixed with <code>, USA</code> in some categories, to aid in distinguishing the US state of Georgia from the country of Georgia.)
For place names in foreign languages, a translation in English can be given, which changes the definition format, e.g. for {{m|fr|Allemagne}} (the French term for Germany):
<syntaxhighlight lang="wikitext">
# {{place|fr|country|cont/Europe|t1=Germany}}
</syntaxhighlight>
which generates:
# {{place|fr|country|cont/Europe|t1=Germany}}
and places the page in [[:Category:fr:Countries in Europe]]. (Note that this category has language code <code>fr</code>, which contains ''French'' terms for countries in Europe, rather than English terms.)
Some place types use "of" instead of "in" in the definition and category, e.g. for {{m|en|Fairfax County}}:
<syntaxhighlight lang="wikitext">
# {{place|en|county|s/Virginia|c/United States}}.
</syntaxhighlight>
which generates:
# {{place|en|county|s/Virginia|c/United States}}.
and places the page in [[:Category:en:Counties of Virginia, USA]].
Additional descriptive text can be present among the holonyms, and will be formatted correctly in the definition, e.g. for {{m|en|Germany}}:
<syntaxhighlight lang="wikitext">
# {{place|en|country|in central|cont/Europe}}.
</syntaxhighlight>
which generates:
# {{place|en|country|in central|cont/Europe}}.
and places the page in [[:Category:en:Countries in Europe]], as above.
==Single-spec format==
For complex cases, an alternative format can be used, known as ''single spec'', which freely allows for placetypes and holonyms to be interspersed among raw text, e.g. as follows (for {{m|en|Fener}}):
<syntaxhighlight lang="wikitext"># {{place|en|A <<neighborhood>> midway up the <<inlet/Golden Horn>> within <<dist/Fatih>> in <<city/Istanbul>>, <<c/Turkey>>}}.</syntaxhighlight>
which generates
# {{place|en|A <<neighborhood>> midway up the <<inlet/Golden Horn>> within <<dist/Fatih>> in <<city/Istanbul>>, <<c/Turkey>>}}.
and places the page in [[:Category:en:Neighborhoods in Turkey]].
In this format, placetypes and holonyms are surrounded by <code><<...>></code>. The presence of a slash indicates a holonym; no slash indicates a placetype. There is no requirement that placetypes precede holonyms.
In this format, it is possible to break up a multiword placetype if the initial word or words are recognized qualifiers (see below), such as "former" or "ancient". Example:
<syntaxhighlight lang="wikitext"># {{lb|en|now|historical}} {{place|en|A <<former>> French <<colony>> on the <<isl:pref/Hispaniola>> from 1659 to 1809, roughly equivalent to modern-day <<c/Haiti>>}}.</syntaxhighlight>
which generates
# {{lb|en|now|historical}} {{place|en|A <<former>> French <<colony>> on the <<isl:pref/Hispaniola>> from 1659 to 1809, roughly equivalent to modern-day <<c/Haiti>>}}.
and places the page in [[:Category:en:Former dependent territories]] (as <code><<former colony>></code> would do), rather than in [[:Category:en:Dependent territories]] (as <code><<colony>></code> would normally do).
==Mixed format==
You can also mix the separate-parameter and single-spec formats, as long as the single spec precedes the separate parameters. For example, for {{m|en|Kodungallur}}:
<syntaxhighlight lang="wikitext"># {{place|en|A historically significant <<town>> in|dist/Thrissur|s/Kerala|in southwestern|c/India}}.</syntaxhighlight>
which generates
# {{place|en|A historically significant <<town>> in|dist/Thrissur|s/Kerala|in southwestern|c/India}}.
In this format, no text (e.g. {{cd|the}}, {{cd|in}}, {{cd|of}}) is added prior to the first holonym; thus you must include it in the single spec parameter, as follows:
<syntaxhighlight lang="wikitext"># {{place|yo|t={{w|Isin, Kwara|Owu}}|an {{l|yo|Ìgbómìnà}} [[Yoruba]] <<town>> in the|lgarea:pref/Isin|s/Kwara|c/Nigeria}}</syntaxhighlight>
which generates
# {{place|yo|t={{w|Isin, Kwara|Owu}}|an {{l|yo|Ìgbómìnà}} [[Yoruba]] <<town>> in the|lgarea:pref/Isin|s/Kwara|c/Nigeria}}
==Parameters==
Primary parameters:
; {{para|1}}: the language code of the entry
; {{para|2}}: ''see [[#Placetype parameter]]''
; {{para|3}}, {{para|4}}, {{para|5}}, ...: ''see [[#Holonym parameters]]''
; {{para|t1}}, {{para|t2}}, {{para|t3}}, ...: English translation(s) of the place
; {{para|tid1}}, {{para|tid2}}, {{para|tid3}}, ...: sense ID's for the English translation(s) of the place; see {{temp|senseid}}
; {{para|cat}}, {{para|cat2}}, ...: extra categories to add to the page; automatically prefixed by the language code, e.g. {{para|cat|Towns in England}} will add the page to [[:Category:fr:Towns in England]] if the specified language code is <code>fr</code>
; {{para|sort}}: the sort key for the categories generated by the template; rarely needs to be specified, except perhaps for Japanese
Suppression and text parameters:
; {{para|def}}: replaces the entire definition without affecting the categorization
; {{para|addl}}: adds further text to the end of the definition without affecting categorization
; {{para|a}}: replaces the indefinite article at the beginning of the definition
Extra information parameters:
; {{para|modern}}, {{para|modern2}}, ...: the modern name(s) or location(s) of the place
; {{para|official}}, {{para|official2}}, ...: the official name(s) of the place (e.g. [[People's Republic of China]] for [[China]])
; {{para|capital}}, {{para|capital2}}, ...: the capital city/cities of the place
; {{para|largest city}}, {{para|largest city2}}, ...: the largest city/cities of the place
; {{para|caplc}}: the capital and largest city of the place
; {{para|seat}}, {{para|seat2}}, ...: the [[seat]](s) of the place, particularly for counties and equivalents; displays "county seat", "parish seat" or "borough seat" for counties, parishes and boroughs respectively; otherwise, displays just "seat"
; {{para|shire town}}, {{para|shire town2}}, ...: the [[shire town]] (similar to a [[county seat]]) of the place, particularly for counties in [[Vermont]]
As with holonym parameters (see below), all of these parameters can be prefixed with a language code such as <code>fr:</code>, and prefixing just with <code>:</code> suppresses automatic linking.
===Placetype parameter===
The type(s) of place of the entry, such as <code>city</code>, <code>country</code> or <code>lake</code>. Multiple values are separated by a slash (<code>/</code>). The special value <code>and</code> suppresses the comma and doesn’t affect categorization.
The placetype parameter can be pluralized and will be handled correctly. For example:
<syntaxhighlight lang="wikitext"># {{place|en|Two <<former unincorporated communities>> in <<co/Williamson County>>, <<s/Illinois>>, <<c/USA>>}}.</syntaxhighlight>
displays as
# {{place|en|Two <<former unincorporated communities>> in <<co/Williamson County>>, <<s/Illinois>>, <<c/USA>>}}.
and places the page in [[:Category:en:Unincorporated communities in Illinois, USA]] and [[:Category:en:Unincorporated communities in the United States]].
The aliases that are recognized for holonym placetypes (see below) can also be used here and will automatically be expanded, but as a matter of style it is recommended to spell out the placetype in full except for generally-recognized aliases such as <code>CDP</code> for ''[[census-designated place]]''.
===Holonym parameters===
A holonym parameter has the following format: ''placetype''/''placename''. The format ''placetype''/''langcode'':''placename'' can be used to specify a non-English placename. Normally, the placename will automatically be linked; using <code>:</code> with no langcode suppresses automatic linking. Automatic linking is done exactly as if {{temp|l}} were being used, which means that square brackets can be used inside it to link to individual parts, and {{temp|w}} can be used to link to Wikipedia.
If the ''placetype'' and following slash are omitted, the parameter is displayed as regular text.
If there are multiple holonyms, commas are placed before all holonyms except the first, according to the following algorithm:
# No comma is placed before the first holonym (whether a placename or raw text).
# No comma is placed before a holonym (whether a placename or raw text) preceded by raw text.
# No comma is placed before the special raw-text values <code>and</code> and <code>in</code>.
# No comma is placed before raw text beginning with {{cd|*}}.
# A comma is placed before all other holonyms.
This does not apply to the [[#Alternative format|alternative format]] described above, where raw text, placetypes and placenames are freely interspersed and no extra commas are added unless multiple placenames are grouped together (see below).
====Grouped holonyms====
Multiple comma-separated placenames can be given, and are formatted correctly and individually linked. For example:
# <code><nowiki>{{place|en|river|c/Ukraine,Belarus,Poland}}.</nowiki></code>
#: {{place|en|river|c/Ukraine,Belarus,Poland}}.
# <code><nowiki>{{place|en|several cities|c/Argentina,Chile,Philippines,Spain,United States}}.</nowiki></code>
#: {{place|en|several cities|c/Argentina,Chile,Philippines,Spain,United States}}.
====Holonyms that take "the"====
Some holonyms are normally preceded by "the", as in "the United States", while others aren't, e.g. "France". Holonyms that are normally preceded by "the" will have this added if they occur either as (1) the first-specified holonym parameter; (2) the non-first holonym in a multi-holonym list (for this, see the example just above); (3) when accompanied by the <code>:pref</code> or <code>:Pref</code> modifiers (see below). In other positions, they will not be preceded by "the", e.g.:
# <code><nowiki>{{place|en|city|in the southern|c/United States}}.</nowiki></code>
#: {{place|en|city|in the southern|c/United States}}.
# <code><nowiki>{{place|en|city|s/Georgia|c/United States}}.</nowiki></code>
#: {{place|en|city|s/Georgia|c/United States}}.
====Holonym placetype aliases====
Several aliases are recognized for ''placetype'':
* <code>c</code> → <code>country</code>
* <code>r</code> → <code>region</code>
* <code>p</code> → <code>province</code>
* <code>s</code> → <code>state</code>
* <code>cc</code> → <code>constituent country</code> (should be used for England, Scotland, and Wales)
* <code>cont</code> → <code>continent</code>
* <code>dept</code> → <code>department</code>
* <code>dist</code> → <code>district</code>
* <code>riv</code> → <code>river</code>
* <code>carea</code> → <code>council area</code>
* <code>cdp</code>, <code>CDP</code> → <code>census-designated place</code>
[etc.]
The full list can be found below under [[#Recognized placetypes|Recognized placetypes]], which lists all recognized placetypes along with the aliases (if any) of each placetype.
====Holonym placetype modifiers====
Following the holonym placetype can be a colon followed by one or more comma-separated modifiers, e.g. <code>s:suf/New York</code>. Currently, the following modifiers are recognized:
* {{cd|suf}}: Display the full placetype as a lowercase suffix, e.g. <code>s:suf/New York</code> → <code>New York state</code>.
* {{cd|Suf}}: Display the full placetype as a capitalized suffix, e.g. <code>s:Suf/New York</code> → <code>New York State</code>.
* {{cd|pref}}: Display the full placetype as a lowercase prefix, e.g. <code>s:pref/New York</code> → <code>(the) state of New York</code> (the initial "the" is displayed in the same circumstances as when it is displayed before a holonym like "United States"; see above).
* {{cd|Pref}}: Display the full placetype as a capitalized prefix, e.g. <code>s:Pref/New York</code> → <code>(the) State of New York</code> (the initial "the" is displayed in the same circumstances as when it is displayed before a holonym like "United States"; see above).
* {{cd|noaff}}: Suppress the default display of a prefix or suffix (see below).
* {{cd|also}}: Specify that categorization should happen with this holonym as well as any previous holonyms. See [[#Multiple holonyms of different types]] below for examples.
* {{cd|the}}: Force insertion of {{cd|the}} before the holonym.
The reasons for using such a modifier are that (a) category recognition code is based off the full holonym placename, and hence won't work properly if a holonym like <code><nowiki>s/[[New York]] State</nowiki></code> is used; and (b) the bare holonym without the prefix or suffix will be autolinked, without the need to explicitly inserted brackets around the bare holonym.
Note that some holonym placetypes have prefixes or suffixes attached by default, e.g.:
* "canton", "civil parish", "community development block", "council area", "county borough", "department", "district", "district municipality", "local government district" (suffixed with "district"), "London borough" (suffixed with "borough"), "parish", "peninsula", "subdivision", "tehsil" (<code>suf</code>)
* "autonomous oblast", "autonomous okrug", "census area", "krai", "oblast", "okrug", "regional county municipality" (<code>Suf</code>)
* "metropolitan borough", "municipal district", "regional district", "regional municipality", "rural municipality" (<code>Pref</code>)
This affixing does not happen if the holonym placename already has the placetype or a part of it in it, if an explicit prefixing or suffixing modifier is used, or if the modifier <code>noaff</code> is used.
Examples:
# <code><nowiki>{{place|en|city|carea/Highland|cc/Scotland}}.</nowiki></code>
#: {{place|en|city|carea/Highland|cc/Scotland}}.
# <code><nowiki>{{place|en|capital city|c:pref/Georgia}}.</nowiki></code>
#: {{place|en|capital city|c:pref/Georgia}}.
====Multiple holonyms of different types====
Normally, when categorizing a place in a given holonym, all other holonyms of the same type also get categorized. For example, the following description of the [[Columbia River]]:
{{demo|<nowiki># {{place|en|river|c/USA|and|c/Canada}}.</nowiki>|sep=produces}}
and categorizes into [[:Category:Rivers in the United States]] and [[:Category:Rivers in Canada]]. However, once a holonym and other holonyms of the same type are categorized, no further categorization normally happens for the placetype in question. For example, the following:
{{demo|<nowiki># {{place|en|river|p/British Columbia|c/Canada|and|s/Washington,Oregon|c/USA}}.</nowiki>|sep=produces}}
but categorizes only into [[:Category:Rivers in British Columbia, Canada]] and [[:Category:Rivers in Canada]] and does not include categorizes the the states of the United States. To fix this, use the {{cd|:also}} modifier:
{{demo|<nowiki># {{place|en|river|p/British Columbia|c/Canada|and|s:also/Washington,Oregon|c/USA}}.</nowiki>}}
and categorizes into [[:Category:Rivers in British Columbia, Canada]], [[:Category:Rivers in Canada]], [[:Category:Rivers in Washington, USA]], [[:Category:Rivers in Oregon, USA]] and [[:Category:Rivers in the United States]].
Another common use of {{cd|:also}} is when describing a city that is the capital of several administrative divisions at different levels. An example is the city of [[Trento]] in [[Italy]], which is the capital both of the surrounding province of [[Trentino]] and the larger region of [[Trentino-Alto Adige]]. This could be specified as follows:
{{demo|<nowiki># {{place|en|city/capital|p:pref/Trentino|*and the|r:pref:also/Trentino-Alto Adige|c/Italy}}.</nowiki>}}
and categorizes both into [[:Category:Provincial capitals]] as well as [[:Category:Regional capitals of Italy]] (among other categories). As shown in this example, modifiers can be stacked one on another. This also uses {{cd|*}} to suppress the comma that would normally be added before the text {{cd|and the}}.
===Multiple descriptions===
The special value <code>;</code> restarts the description and categorization (except for the language code), and joins the two descriptions with a semicolon. For example:
# {{m|en|Rio de Janeiro}}
#: {{temp demo|place|pt|city/state capital|s/Rio de Janeiro|c/Brazil|;|former capital city|of|c/Brazil}}
The main reason to use this format, as opposed to simply stringing the entire description together, is that categorization is restarted. This allows for more flexible categorization of places that serve multiple functions than would otherwise be possible.
More generally, any value beginning with a <code>;</code> and not immediately followed by a space has the same restarting behavior, and in addition the text after the semicolon serves as the joining text, in place of a semicolon. For example:
# {{m|en|Vatican City}}
#: {{temp demo|place|en|city-state|r/Southern Europe|;,|an <<enclave>> within the city of <<city/Rome>>, <<c/Italy>>}}.
If the joining text begins with an ASCII or Unicode letter, a space is placed before the joining text, otherwise no space is added, as above. Finally, the special value <code>;;</code> joins the descriptions with only a space.
==More complex examples==
# {{m|en|Scranton}}
#: <code><nowiki>{{place|en|city|in northeastern|s/Pennsylvania|c/United States}}.</nowiki></code>
#: {{place|en|city|in northeastern|s/Pennsylvania|c/United States}}.
#:: {{i|adds [[:Category:en:Cities in Pennsylvania, USA]]}}
# {{m|en|Italy}}
#: <code><nowiki>{{place|en|country|in southern|cont/Europe|caplc=Rome}}.</nowiki></code>
#: {{place|en|country|in southern|cont/Europe|caplc=Rome}}.
#:: {{i|adds [[:Category:en:Countries in Europe]]}}
# {{m|it|Roma}}
#: <code><nowiki>{{place|it|capital city|c/Italy|t1=Rome}}</nowiki></code>
#: {{place|it|capital city|c/Italy|t1=Rome}}
#:: {{i|adds [[:Category:it:Capital cities]]}}
# {{m|fr|Wavrin}}
#: <code><nowiki>{{place|fr|town/and/municipality|dept/Nord|r:suf/Hauts-de-France|c/France}}</nowiki></code>
#: {{place|fr|town/and/municipality|dept/Nord|r:suf/Hauts-de-France|c/France}}
#:: {{i|adds [[:Category:fr:Towns in Nord, France]] and [[:Category:fr:Communes of Nord, France]]}}
# {{m|en|Bernicia}}
#: <code><nowiki>{{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>>|in northeastern|cc/England|and|southeastern|c/Scotland}}.</nowiki></code>
#: {{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>>|in northeastern|cc/England|and|southeastern|c/Scotland}}.
#:: {{i|adds [[:Category:en:Polities]], for lack of a more specific category}}
#: <code><nowiki>{{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>> in northeastern <<c/England>> and southeastern <<c/Scotland>>.}}</nowiki></code>
#: {{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>> in northeastern <<c/England>> and southeastern <<c/Scotland>>}}.
#:: {{i|same as previous example, using the alternative format}}
# {{m|en|Yuzhne}}
#: <code><nowiki>{{place|en|@former name of:Pivdenne|city|raion/Odesa|oblast/Odesa|in southern|c/Ukraine|;|name used before November 2024}}.</nowiki></code>
#: {{place|en|@former name of:Pivdenne|city|raion/Odesa|oblast/Odesa|in southern|c/Ukraine|;|name used before November 2024}}.
#:: {{i|adds [[:Category:en:Former names of settlements]]}}
# {{m|uk|Змії́вка}}
#: <code><nowiki>{{place|uk|@former name of:uk:Кідьош|village|urban hromada:suf/Berehove|raion/Berehove|obl/Zakarpattia|c/Ukraine|;|name used from 1946 to 1991; first mentioned in 1332|t=Zmiivka}}.</nowiki></code>
#: {{place|uk|@former name of:uk:Кідьош|village|urban hromada:suf/Berehove|raion/Berehove|obl/Zakarpattia|c/Ukraine|;|name used from 1946 to 1991; first mentioned in 1332|t=Zmiivka}}.
#:: {{i|adds [[:Category:uk:Former names of settlements]]}}
==Recognized placetypes==
The following placetypes are recognized by the module, and processed specially. This does not mean that other placetypes cannot be used, but they will not get special handling (e.g. their display form will not be linked and they will not trigger any categorization).
{{#invoke:place doc|placetype_table}}
==Recognized placenames==
The following place names are recognized by the module, and handled specially in some fashion. Note that there's nothing preventing any place name from being used. Note that items in the third and fourth columns are boldfaced if they are different from the placename in the first column.
{{#invoke:place doc|placename_table}}
==Recognized qualifiers==
The following qualifiers are recognized by the module. This means that if such a qualifier is used before a recognized placetype, the placetype will still be recognized and processed as normal. Note that items in the second column are boldfaced if they are different from the qualifier in the first column.
{{#invoke:place doc|qualifier_table}}
<includeonly>
[[Category:Place name templates]]
</includeonly>
qnlm8u1i7x8e0houkeorqdu37iagwyg
230600
230599
2026-04-05T14:13:58Z
Lee
19
Lee විසින් [[සැකිල්ල:place/documentation]] සිට [[සැකිල්ල:ස්ථානය/documentation]] වෙත පිටුව ගෙන යන ලදී
230598
wikitext
text/x-wiki
{{documentation subpage}}
{{hatnote|For a list of types of place name of each country, see '''[[Wiktionary:Place names]]''' .}}
{{rfc|und|Missing documentation for many parameters and features.}}
{{uses lua|Module:place}}
This template generates definition lines and categories for [[placename]]s.
==Usage==
The basic usage is as follows (e.g. for {{m|en|Germany}}):
<syntaxhighlight lang="wikitext">
# {{place|en|country|cont/Europe}}.
</syntaxhighlight>
which generates:
# {{place|en|country|cont/Europe}}.
and places the page in [[:Category:en:Countries in Europe]].
The second parameter is the type of the place, while the third and further parameters are ''holonyms'', indicating the larger entities that the place is contained within. Each holonym is of the form <code>TYPE/NAME</code>. The type can be spelled out in full, e.g. <code>continent</code>; common types can also be abbreviated, e.g. <code>cont</code> for <code>continent</code> (as above), <code>s</code> for <code>state</code>, <code>p</code> for <code>province</code>, <code>c</code> for <code>country</code>, etc. The full list of abbreviations is given below.
More than one holonym can be given, e.g. for {{m|en|Toronto}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|p/Ontario|c/Canada}}.
</syntaxhighlight>
which generates:
# {{place|en|city|p/Ontario|c/Canada}}.
and places the page in [[:Category:en:Cities in Ontario, Canada]].
The categorization system automatically generates the correct-format definition and category/categories, even when that requires computing a variant name, e.g. for {{m|en|Amsterdam}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|c/Netherlands}}.
</syntaxhighlight>
which generates:
# {{place|en|city|c/Netherlands}}.
and places the page in [[:Category:en:Cities in the Netherlands]]. In this case, both the definition and category need to have "the" prefixed to the country name, which automatically happens.
As another example, for {{m|en|Pittsburgh}}:
<syntaxhighlight lang="wikitext">
# {{place|en|city|s/Pennsylvania|c/United States}}.
</syntaxhighlight>
which generates:
# {{place|en|city|s/Pennsylvania|c/United States}}.
and places the page in [[:Category:en:Cities in Pennsylvania, USA]]. (States of the United States are suffixed with <code>, USA</code> in some categories, to aid in distinguishing the US state of Georgia from the country of Georgia.)
For place names in foreign languages, a translation in English can be given, which changes the definition format, e.g. for {{m|fr|Allemagne}} (the French term for Germany):
<syntaxhighlight lang="wikitext">
# {{place|fr|country|cont/Europe|t1=Germany}}
</syntaxhighlight>
which generates:
# {{place|fr|country|cont/Europe|t1=Germany}}
and places the page in [[:Category:fr:Countries in Europe]]. (Note that this category has language code <code>fr</code>, which contains ''French'' terms for countries in Europe, rather than English terms.)
Some place types use "of" instead of "in" in the definition and category, e.g. for {{m|en|Fairfax County}}:
<syntaxhighlight lang="wikitext">
# {{place|en|county|s/Virginia|c/United States}}.
</syntaxhighlight>
which generates:
# {{place|en|county|s/Virginia|c/United States}}.
and places the page in [[:Category:en:Counties of Virginia, USA]].
Additional descriptive text can be present among the holonyms, and will be formatted correctly in the definition, e.g. for {{m|en|Germany}}:
<syntaxhighlight lang="wikitext">
# {{place|en|country|in central|cont/Europe}}.
</syntaxhighlight>
which generates:
# {{place|en|country|in central|cont/Europe}}.
and places the page in [[:Category:en:Countries in Europe]], as above.
==Single-spec format==
For complex cases, an alternative format can be used, known as ''single spec'', which freely allows for placetypes and holonyms to be interspersed among raw text, e.g. as follows (for {{m|en|Fener}}):
<syntaxhighlight lang="wikitext"># {{place|en|A <<neighborhood>> midway up the <<inlet/Golden Horn>> within <<dist/Fatih>> in <<city/Istanbul>>, <<c/Turkey>>}}.</syntaxhighlight>
which generates
# {{place|en|A <<neighborhood>> midway up the <<inlet/Golden Horn>> within <<dist/Fatih>> in <<city/Istanbul>>, <<c/Turkey>>}}.
and places the page in [[:Category:en:Neighborhoods in Turkey]].
In this format, placetypes and holonyms are surrounded by <code><<...>></code>. The presence of a slash indicates a holonym; no slash indicates a placetype. There is no requirement that placetypes precede holonyms.
In this format, it is possible to break up a multiword placetype if the initial word or words are recognized qualifiers (see below), such as "former" or "ancient". Example:
<syntaxhighlight lang="wikitext"># {{lb|en|now|historical}} {{place|en|A <<former>> French <<colony>> on the <<isl:pref/Hispaniola>> from 1659 to 1809, roughly equivalent to modern-day <<c/Haiti>>}}.</syntaxhighlight>
which generates
# {{lb|en|now|historical}} {{place|en|A <<former>> French <<colony>> on the <<isl:pref/Hispaniola>> from 1659 to 1809, roughly equivalent to modern-day <<c/Haiti>>}}.
and places the page in [[:Category:en:Former dependent territories]] (as <code><<former colony>></code> would do), rather than in [[:Category:en:Dependent territories]] (as <code><<colony>></code> would normally do).
==Mixed format==
You can also mix the separate-parameter and single-spec formats, as long as the single spec precedes the separate parameters. For example, for {{m|en|Kodungallur}}:
<syntaxhighlight lang="wikitext"># {{place|en|A historically significant <<town>> in|dist/Thrissur|s/Kerala|in southwestern|c/India}}.</syntaxhighlight>
which generates
# {{place|en|A historically significant <<town>> in|dist/Thrissur|s/Kerala|in southwestern|c/India}}.
In this format, no text (e.g. {{cd|the}}, {{cd|in}}, {{cd|of}}) is added prior to the first holonym; thus you must include it in the single spec parameter, as follows:
<syntaxhighlight lang="wikitext"># {{place|yo|t={{w|Isin, Kwara|Owu}}|an {{l|yo|Ìgbómìnà}} [[Yoruba]] <<town>> in the|lgarea:pref/Isin|s/Kwara|c/Nigeria}}</syntaxhighlight>
which generates
# {{place|yo|t={{w|Isin, Kwara|Owu}}|an {{l|yo|Ìgbómìnà}} [[Yoruba]] <<town>> in the|lgarea:pref/Isin|s/Kwara|c/Nigeria}}
==Parameters==
Primary parameters:
; {{para|1}}: the language code of the entry
; {{para|2}}: ''see [[#Placetype parameter]]''
; {{para|3}}, {{para|4}}, {{para|5}}, ...: ''see [[#Holonym parameters]]''
; {{para|t1}}, {{para|t2}}, {{para|t3}}, ...: English translation(s) of the place
; {{para|tid1}}, {{para|tid2}}, {{para|tid3}}, ...: sense ID's for the English translation(s) of the place; see {{temp|senseid}}
; {{para|cat}}, {{para|cat2}}, ...: extra categories to add to the page; automatically prefixed by the language code, e.g. {{para|cat|Towns in England}} will add the page to [[:Category:fr:Towns in England]] if the specified language code is <code>fr</code>
; {{para|sort}}: the sort key for the categories generated by the template; rarely needs to be specified, except perhaps for Japanese
Suppression and text parameters:
; {{para|def}}: replaces the entire definition without affecting the categorization
; {{para|addl}}: adds further text to the end of the definition without affecting categorization
; {{para|a}}: replaces the indefinite article at the beginning of the definition
Extra information parameters:
; {{para|modern}}, {{para|modern2}}, ...: the modern name(s) or location(s) of the place
; {{para|official}}, {{para|official2}}, ...: the official name(s) of the place (e.g. [[People's Republic of China]] for [[China]])
; {{para|capital}}, {{para|capital2}}, ...: the capital city/cities of the place
; {{para|largest city}}, {{para|largest city2}}, ...: the largest city/cities of the place
; {{para|caplc}}: the capital and largest city of the place
; {{para|seat}}, {{para|seat2}}, ...: the [[seat]](s) of the place, particularly for counties and equivalents; displays "county seat", "parish seat" or "borough seat" for counties, parishes and boroughs respectively; otherwise, displays just "seat"
; {{para|shire town}}, {{para|shire town2}}, ...: the [[shire town]] (similar to a [[county seat]]) of the place, particularly for counties in [[Vermont]]
As with holonym parameters (see below), all of these parameters can be prefixed with a language code such as <code>fr:</code>, and prefixing just with <code>:</code> suppresses automatic linking.
===Placetype parameter===
The type(s) of place of the entry, such as <code>city</code>, <code>country</code> or <code>lake</code>. Multiple values are separated by a slash (<code>/</code>). The special value <code>and</code> suppresses the comma and doesn’t affect categorization.
The placetype parameter can be pluralized and will be handled correctly. For example:
<syntaxhighlight lang="wikitext"># {{place|en|Two <<former unincorporated communities>> in <<co/Williamson County>>, <<s/Illinois>>, <<c/USA>>}}.</syntaxhighlight>
displays as
# {{place|en|Two <<former unincorporated communities>> in <<co/Williamson County>>, <<s/Illinois>>, <<c/USA>>}}.
and places the page in [[:Category:en:Unincorporated communities in Illinois, USA]] and [[:Category:en:Unincorporated communities in the United States]].
The aliases that are recognized for holonym placetypes (see below) can also be used here and will automatically be expanded, but as a matter of style it is recommended to spell out the placetype in full except for generally-recognized aliases such as <code>CDP</code> for ''[[census-designated place]]''.
===Holonym parameters===
A holonym parameter has the following format: ''placetype''/''placename''. The format ''placetype''/''langcode'':''placename'' can be used to specify a non-English placename. Normally, the placename will automatically be linked; using <code>:</code> with no langcode suppresses automatic linking. Automatic linking is done exactly as if {{temp|l}} were being used, which means that square brackets can be used inside it to link to individual parts, and {{temp|w}} can be used to link to Wikipedia.
If the ''placetype'' and following slash are omitted, the parameter is displayed as regular text.
If there are multiple holonyms, commas are placed before all holonyms except the first, according to the following algorithm:
# No comma is placed before the first holonym (whether a placename or raw text).
# No comma is placed before a holonym (whether a placename or raw text) preceded by raw text.
# No comma is placed before the special raw-text values <code>and</code> and <code>in</code>.
# No comma is placed before raw text beginning with {{cd|*}}.
# A comma is placed before all other holonyms.
This does not apply to the [[#Alternative format|alternative format]] described above, where raw text, placetypes and placenames are freely interspersed and no extra commas are added unless multiple placenames are grouped together (see below).
====Grouped holonyms====
Multiple comma-separated placenames can be given, and are formatted correctly and individually linked. For example:
# <code><nowiki>{{place|en|river|c/Ukraine,Belarus,Poland}}.</nowiki></code>
#: {{place|en|river|c/Ukraine,Belarus,Poland}}.
# <code><nowiki>{{place|en|several cities|c/Argentina,Chile,Philippines,Spain,United States}}.</nowiki></code>
#: {{place|en|several cities|c/Argentina,Chile,Philippines,Spain,United States}}.
====Holonyms that take "the"====
Some holonyms are normally preceded by "the", as in "the United States", while others aren't, e.g. "France". Holonyms that are normally preceded by "the" will have this added if they occur either as (1) the first-specified holonym parameter; (2) the non-first holonym in a multi-holonym list (for this, see the example just above); (3) when accompanied by the <code>:pref</code> or <code>:Pref</code> modifiers (see below). In other positions, they will not be preceded by "the", e.g.:
# <code><nowiki>{{place|en|city|in the southern|c/United States}}.</nowiki></code>
#: {{place|en|city|in the southern|c/United States}}.
# <code><nowiki>{{place|en|city|s/Georgia|c/United States}}.</nowiki></code>
#: {{place|en|city|s/Georgia|c/United States}}.
====Holonym placetype aliases====
Several aliases are recognized for ''placetype'':
* <code>c</code> → <code>country</code>
* <code>r</code> → <code>region</code>
* <code>p</code> → <code>province</code>
* <code>s</code> → <code>state</code>
* <code>cc</code> → <code>constituent country</code> (should be used for England, Scotland, and Wales)
* <code>cont</code> → <code>continent</code>
* <code>dept</code> → <code>department</code>
* <code>dist</code> → <code>district</code>
* <code>riv</code> → <code>river</code>
* <code>carea</code> → <code>council area</code>
* <code>cdp</code>, <code>CDP</code> → <code>census-designated place</code>
[etc.]
The full list can be found below under [[#Recognized placetypes|Recognized placetypes]], which lists all recognized placetypes along with the aliases (if any) of each placetype.
====Holonym placetype modifiers====
Following the holonym placetype can be a colon followed by one or more comma-separated modifiers, e.g. <code>s:suf/New York</code>. Currently, the following modifiers are recognized:
* {{cd|suf}}: Display the full placetype as a lowercase suffix, e.g. <code>s:suf/New York</code> → <code>New York state</code>.
* {{cd|Suf}}: Display the full placetype as a capitalized suffix, e.g. <code>s:Suf/New York</code> → <code>New York State</code>.
* {{cd|pref}}: Display the full placetype as a lowercase prefix, e.g. <code>s:pref/New York</code> → <code>(the) state of New York</code> (the initial "the" is displayed in the same circumstances as when it is displayed before a holonym like "United States"; see above).
* {{cd|Pref}}: Display the full placetype as a capitalized prefix, e.g. <code>s:Pref/New York</code> → <code>(the) State of New York</code> (the initial "the" is displayed in the same circumstances as when it is displayed before a holonym like "United States"; see above).
* {{cd|noaff}}: Suppress the default display of a prefix or suffix (see below).
* {{cd|also}}: Specify that categorization should happen with this holonym as well as any previous holonyms. See [[#Multiple holonyms of different types]] below for examples.
* {{cd|the}}: Force insertion of {{cd|the}} before the holonym.
The reasons for using such a modifier are that (a) category recognition code is based off the full holonym placename, and hence won't work properly if a holonym like <code><nowiki>s/[[New York]] State</nowiki></code> is used; and (b) the bare holonym without the prefix or suffix will be autolinked, without the need to explicitly inserted brackets around the bare holonym.
Note that some holonym placetypes have prefixes or suffixes attached by default, e.g.:
* "canton", "civil parish", "community development block", "council area", "county borough", "department", "district", "district municipality", "local government district" (suffixed with "district"), "London borough" (suffixed with "borough"), "parish", "peninsula", "subdivision", "tehsil" (<code>suf</code>)
* "autonomous oblast", "autonomous okrug", "census area", "krai", "oblast", "okrug", "regional county municipality" (<code>Suf</code>)
* "metropolitan borough", "municipal district", "regional district", "regional municipality", "rural municipality" (<code>Pref</code>)
This affixing does not happen if the holonym placename already has the placetype or a part of it in it, if an explicit prefixing or suffixing modifier is used, or if the modifier <code>noaff</code> is used.
Examples:
# <code><nowiki>{{place|en|city|carea/Highland|cc/Scotland}}.</nowiki></code>
#: {{place|en|city|carea/Highland|cc/Scotland}}.
# <code><nowiki>{{place|en|capital city|c:pref/Georgia}}.</nowiki></code>
#: {{place|en|capital city|c:pref/Georgia}}.
====Multiple holonyms of different types====
Normally, when categorizing a place in a given holonym, all other holonyms of the same type also get categorized. For example, the following description of the [[Columbia River]]:
{{demo|<nowiki># {{place|en|river|c/USA|and|c/Canada}}.</nowiki>|sep=produces}}
and categorizes into [[:Category:Rivers in the United States]] and [[:Category:Rivers in Canada]]. However, once a holonym and other holonyms of the same type are categorized, no further categorization normally happens for the placetype in question. For example, the following:
{{demo|<nowiki># {{place|en|river|p/British Columbia|c/Canada|and|s/Washington,Oregon|c/USA}}.</nowiki>|sep=produces}}
but categorizes only into [[:Category:Rivers in British Columbia, Canada]] and [[:Category:Rivers in Canada]] and does not include categorizes the the states of the United States. To fix this, use the {{cd|:also}} modifier:
{{demo|<nowiki># {{place|en|river|p/British Columbia|c/Canada|and|s:also/Washington,Oregon|c/USA}}.</nowiki>}}
and categorizes into [[:Category:Rivers in British Columbia, Canada]], [[:Category:Rivers in Canada]], [[:Category:Rivers in Washington, USA]], [[:Category:Rivers in Oregon, USA]] and [[:Category:Rivers in the United States]].
Another common use of {{cd|:also}} is when describing a city that is the capital of several administrative divisions at different levels. An example is the city of [[Trento]] in [[Italy]], which is the capital both of the surrounding province of [[Trentino]] and the larger region of [[Trentino-Alto Adige]]. This could be specified as follows:
{{demo|<nowiki># {{place|en|city/capital|p:pref/Trentino|*and the|r:pref:also/Trentino-Alto Adige|c/Italy}}.</nowiki>}}
and categorizes both into [[:Category:Provincial capitals]] as well as [[:Category:Regional capitals of Italy]] (among other categories). As shown in this example, modifiers can be stacked one on another. This also uses {{cd|*}} to suppress the comma that would normally be added before the text {{cd|and the}}.
===Multiple descriptions===
The special value <code>;</code> restarts the description and categorization (except for the language code), and joins the two descriptions with a semicolon. For example:
# {{m|en|Rio de Janeiro}}
#: {{temp demo|place|pt|city/state capital|s/Rio de Janeiro|c/Brazil|;|former capital city|of|c/Brazil}}
The main reason to use this format, as opposed to simply stringing the entire description together, is that categorization is restarted. This allows for more flexible categorization of places that serve multiple functions than would otherwise be possible.
More generally, any value beginning with a <code>;</code> and not immediately followed by a space has the same restarting behavior, and in addition the text after the semicolon serves as the joining text, in place of a semicolon. For example:
# {{m|en|Vatican City}}
#: {{temp demo|place|en|city-state|r/Southern Europe|;,|an <<enclave>> within the city of <<city/Rome>>, <<c/Italy>>}}.
If the joining text begins with an ASCII or Unicode letter, a space is placed before the joining text, otherwise no space is added, as above. Finally, the special value <code>;;</code> joins the descriptions with only a space.
==More complex examples==
# {{m|en|Scranton}}
#: <code><nowiki>{{place|en|city|in northeastern|s/Pennsylvania|c/United States}}.</nowiki></code>
#: {{place|en|city|in northeastern|s/Pennsylvania|c/United States}}.
#:: {{i|adds [[:Category:en:Cities in Pennsylvania, USA]]}}
# {{m|en|Italy}}
#: <code><nowiki>{{place|en|country|in southern|cont/Europe|caplc=Rome}}.</nowiki></code>
#: {{place|en|country|in southern|cont/Europe|caplc=Rome}}.
#:: {{i|adds [[:Category:en:Countries in Europe]]}}
# {{m|it|Roma}}
#: <code><nowiki>{{place|it|capital city|c/Italy|t1=Rome}}</nowiki></code>
#: {{place|it|capital city|c/Italy|t1=Rome}}
#:: {{i|adds [[:Category:it:Capital cities]]}}
# {{m|fr|Wavrin}}
#: <code><nowiki>{{place|fr|town/and/municipality|dept/Nord|r:suf/Hauts-de-France|c/France}}</nowiki></code>
#: {{place|fr|town/and/municipality|dept/Nord|r:suf/Hauts-de-France|c/France}}
#:: {{i|adds [[:Category:fr:Towns in Nord, France]] and [[:Category:fr:Communes of Nord, France]]}}
# {{m|en|Bernicia}}
#: <code><nowiki>{{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>>|in northeastern|cc/England|and|southeastern|c/Scotland}}.</nowiki></code>
#: {{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>>|in northeastern|cc/England|and|southeastern|c/Scotland}}.
#:: {{i|adds [[:Category:en:Polities]], for lack of a more specific category}}
#: <code><nowiki>{{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>> in northeastern <<c/England>> and southeastern <<c/Scotland>>.}}</nowiki></code>
#: {{place|en|A <<medieval>> [[Anglo-Saxon]] <<kingdom>> in northeastern <<c/England>> and southeastern <<c/Scotland>>}}.
#:: {{i|same as previous example, using the alternative format}}
# {{m|en|Yuzhne}}
#: <code><nowiki>{{place|en|@former name of:Pivdenne|city|raion/Odesa|oblast/Odesa|in southern|c/Ukraine|;|name used before November 2024}}.</nowiki></code>
#: {{place|en|@former name of:Pivdenne|city|raion/Odesa|oblast/Odesa|in southern|c/Ukraine|;|name used before November 2024}}.
#:: {{i|adds [[:Category:en:Former names of settlements]]}}
# {{m|uk|Змії́вка}}
#: <code><nowiki>{{place|uk|@former name of:uk:Кідьош|village|urban hromada:suf/Berehove|raion/Berehove|obl/Zakarpattia|c/Ukraine|;|name used from 1946 to 1991; first mentioned in 1332|t=Zmiivka}}.</nowiki></code>
#: {{place|uk|@former name of:uk:Кідьош|village|urban hromada:suf/Berehove|raion/Berehove|obl/Zakarpattia|c/Ukraine|;|name used from 1946 to 1991; first mentioned in 1332|t=Zmiivka}}.
#:: {{i|adds [[:Category:uk:Former names of settlements]]}}
==Recognized placetypes==
The following placetypes are recognized by the module, and processed specially. This does not mean that other placetypes cannot be used, but they will not get special handling (e.g. their display form will not be linked and they will not trigger any categorization).
{{#invoke:place doc|placetype_table}}
==Recognized placenames==
The following place names are recognized by the module, and handled specially in some fashion. Note that there's nothing preventing any place name from being used. Note that items in the third and fourth columns are boldfaced if they are different from the placename in the first column.
{{#invoke:place doc|placename_table}}
==Recognized qualifiers==
The following qualifiers are recognized by the module. This means that if such a qualifier is used before a recognized placetype, the placetype will still be recognized and processed as normal. Note that items in the second column are boldfaced if they are different from the qualifier in the first column.
{{#invoke:place doc|qualifier_table}}
<includeonly>
[[Category:Place name templates]]
</includeonly>
qnlm8u1i7x8e0houkeorqdu37iagwyg
Module:headword/page
828
112716
230596
220273
2025-12-24T06:50:59Z
en>Benwing2
0
export get_L2_sort_key()
230596
Scribunto
text/plain
local export = {}
local languages_module = "Module:languages"
local maintenance_category_module = "Module:maintenance category"
local pages_module = "Module:pages"
local string_compare_module = "Module:string/compare"
local string_decode_entities_module = "Module:string/decodeEntities"
local string_remove_comments_module = "Module:string/removeComments"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local mw = mw
local string = string
local table = table
local ustring = mw.ustring
local concat = table.concat
local find = string.find
local format = string.format
local gsub = string.gsub
local insert = table.insert
local load_data = mw.loadData
local match = string.match
local new_title = mw.title.new
local pairs = pairs
local require = require
local sub = string.sub
local toNFC = ustring.toNFC
local toNFD = ustring.toNFD
local ugsub = ustring.gsub
local function class_else_type(...)
class_else_type = require(template_parser_module).class_else_type
return class_else_type(...)
end
local function decode_entities(...)
decode_entities = require(string_decode_entities_module)
return decode_entities(...)
end
local function encode_entities(...)
encode_entities = require(string_utilities_module).encode_entities
return encode_entities(...)
end
local function get_category(...)
get_category = require(maintenance_category_module).get_category
return get_category(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function list_to_set(...)
list_to_set = require(table_module).listToSet
return list_to_set(...)
end
local function parse(...)
parse = require(template_parser_module).parse
return parse(...)
end
local function remove_comments(...)
remove_comments = require(string_remove_comments_module)
return remove_comments(...)
end
local function physical_to_logical_pagename_if_mammoth(...)
physical_to_logical_pagename_if_mammoth = require(pages_module).physical_to_logical_pagename_if_mammoth
return physical_to_logical_pagename_if_mammoth(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function string_compare(...)
string_compare = require(string_compare_module)
return string_compare(...)
end
local function uupper(...)
uupper = require(string_utilities_module).upper
return uupper(...)
end
--[==[
Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==]
local langnames
local function get_langnames()
langnames, get_langnames = load_data("Module:languages/canonical names"), nil
return langnames
end
-- Combining character data used when categorising unusual characters. These resolve into two patterns, used to find
-- single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character +
-- diacritic(s) + character).
-- Charsets are in the format used by Unicode's UnicodeSet tool: https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp.
-- Single combining characters.
-- Charset: [[:M:]&[:^Canonical_Combining_Class=/^Double_/:]&[:^subhead=Grapheme joiner:]&[:^Variation_Selector=Yes:]]
-- Note: concatenating hundreds of lines at once gives an error, so () are used every 150 lines to break it up into chunks.
local comb_chars_single =
("\204\128-\205\142" .. -- U+0300-U+034E
"\205\144-\205\155" .. -- U+0350-U+035B
"\205\163-\205\175" .. -- U+0363-U+036F
"\210\131-\210\137" .. -- U+0483-U+0489
"\214\145-\214\189" .. -- U+0591-U+05BD
"\214\191" .. -- U+05BF
"\215\129" .. -- U+05C1
"\215\130" .. -- U+05C2
"\215\132" .. -- U+05C4
"\215\133" .. -- U+05C5
"\215\135" .. -- U+05C7
"\216\144-\216\154" .. -- U+0610-U+061A
"\217\139-\217\159" .. -- U+064B-U+065F
"\217\176" .. -- U+0670
"\219\150-\219\156" .. -- U+06D6-U+06DC
"\219\159-\219\164" .. -- U+06DF-U+06E4
"\219\167" .. -- U+06E7
"\219\168" .. -- U+06E8
"\219\170-\219\173" .. -- U+06EA-U+06ED
"\220\145" .. -- U+0711
"\220\176-\221\138" .. -- U+0730-U+074A
"\222\166-\222\176" .. -- U+07A6-U+07B0
"\223\171-\223\179" .. -- U+07EB-U+07F3
"\223\189" .. -- U+07FD
"\224\160\150-\224\160\153" .. -- U+0816-U+0819
"\224\160\155-\224\160\163" .. -- U+081B-U+0823
"\224\160\165-\224\160\167" .. -- U+0825-U+0827
"\224\160\169-\224\160\173" .. -- U+0829-U+082D
"\224\161\153-\224\161\155" .. -- U+0859-U+085B
"\224\162\151-\224\162\159" .. -- U+0897-U+089F
"\224\163\138-\224\163\161" .. -- U+08CA-U+08E1
"\224\163\163-\224\164\131" .. -- U+08E3-U+0903
"\224\164\186-\224\164\188" .. -- U+093A-U+093C
"\224\164\190-\224\165\143" .. -- U+093E-U+094F
"\224\165\145-\224\165\151" .. -- U+0951-U+0957
"\224\165\162" .. -- U+0962
"\224\165\163" .. -- U+0963
"\224\166\129-\224\166\131" .. -- U+0981-U+0983
"\224\166\188" .. -- U+09BC
"\224\166\190-\224\167\132" .. -- U+09BE-U+09C4
"\224\167\135" .. -- U+09C7
"\224\167\136" .. -- U+09C8
"\224\167\139-\224\167\141" .. -- U+09CB-U+09CD
"\224\167\151" .. -- U+09D7
"\224\167\162" .. -- U+09E2
"\224\167\163" .. -- U+09E3
"\224\167\190" .. -- U+09FE
"\224\168\129-\224\168\131" .. -- U+0A01-U+0A03
"\224\168\188" .. -- U+0A3C
"\224\168\190-\224\169\130" .. -- U+0A3E-U+0A42
"\224\169\135" .. -- U+0A47
"\224\169\136" .. -- U+0A48
"\224\169\139-\224\169\141" .. -- U+0A4B-U+0A4D
"\224\169\145" .. -- U+0A51
"\224\169\176" .. -- U+0A70
"\224\169\177" .. -- U+0A71
"\224\169\181" .. -- U+0A75
"\224\170\129-\224\170\131" .. -- U+0A81-U+0A83
"\224\170\188" .. -- U+0ABC
"\224\170\190-\224\171\133" .. -- U+0ABE-U+0AC5
"\224\171\135-\224\171\137" .. -- U+0AC7-U+0AC9
"\224\171\139-\224\171\141" .. -- U+0ACB-U+0ACD
"\224\171\162" .. -- U+0AE2
"\224\171\163" .. -- U+0AE3
"\224\171\186-\224\171\191" .. -- U+0AFA-U+0AFF
"\224\172\129-\224\172\131" .. -- U+0B01-U+0B03
"\224\172\188" .. -- U+0B3C
"\224\172\190-\224\173\132" .. -- U+0B3E-U+0B44
"\224\173\135" .. -- U+0B47
"\224\173\136" .. -- U+0B48
"\224\173\139-\224\173\141" .. -- U+0B4B-U+0B4D
"\224\173\149-\224\173\151" .. -- U+0B55-U+0B57
"\224\173\162" .. -- U+0B62
"\224\173\163" .. -- U+0B63
"\224\174\130" .. -- U+0B82
"\224\174\190-\224\175\130" .. -- U+0BBE-U+0BC2
"\224\175\134-\224\175\136" .. -- U+0BC6-U+0BC8
"\224\175\138-\224\175\141" .. -- U+0BCA-U+0BCD
"\224\175\151" .. -- U+0BD7
"\224\176\128-\224\176\132" .. -- U+0C00-U+0C04
"\224\176\188" .. -- U+0C3C
"\224\176\190-\224\177\132" .. -- U+0C3E-U+0C44
"\224\177\134-\224\177\136" .. -- U+0C46-U+0C48
"\224\177\138-\224\177\141" .. -- U+0C4A-U+0C4D
"\224\177\149" .. -- U+0C55
"\224\177\150" .. -- U+0C56
"\224\177\162" .. -- U+0C62
"\224\177\163" .. -- U+0C63
"\224\178\129-\224\178\131" .. -- U+0C81-U+0C83
"\224\178\188" .. -- U+0CBC
"\224\178\190-\224\179\132" .. -- U+0CBE-U+0CC4
"\224\179\134-\224\179\136" .. -- U+0CC6-U+0CC8
"\224\179\138-\224\179\141" .. -- U+0CCA-U+0CCD
"\224\179\149" .. -- U+0CD5
"\224\179\150" .. -- U+0CD6
"\224\179\162" .. -- U+0CE2
"\224\179\163" .. -- U+0CE3
"\224\179\179" .. -- U+0CF3
"\224\180\128-\224\180\131" .. -- U+0D00-U+0D03
"\224\180\187" .. -- U+0D3B
"\224\180\188" .. -- U+0D3C
"\224\180\190-\224\181\132" .. -- U+0D3E-U+0D44
"\224\181\134-\224\181\136" .. -- U+0D46-U+0D48
"\224\181\138-\224\181\141" .. -- U+0D4A-U+0D4D
"\224\181\151" .. -- U+0D57
"\224\181\162" .. -- U+0D62
"\224\181\163" .. -- U+0D63
"\224\182\129-\224\182\131" .. -- U+0D81-U+0D83
"\224\183\138" .. -- U+0DCA
"\224\183\143-\224\183\148" .. -- U+0DCF-U+0DD4
"\224\183\150" .. -- U+0DD6
"\224\183\152-\224\183\159" .. -- U+0DD8-U+0DDF
"\224\183\178" .. -- U+0DF2
"\224\183\179" .. -- U+0DF3
"\224\184\177" .. -- U+0E31
"\224\184\180-\224\184\186" .. -- U+0E34-U+0E3A
"\224\185\135-\224\185\142" .. -- U+0E47-U+0E4E
"\224\186\177" .. -- U+0EB1
"\224\186\180-\224\186\188" .. -- U+0EB4-U+0EBC
"\224\187\136-\224\187\142" .. -- U+0EC8-U+0ECE
"\224\188\152" .. -- U+0F18
"\224\188\153" .. -- U+0F19
"\224\188\181" .. -- U+0F35
"\224\188\183" .. -- U+0F37
"\224\188\185" .. -- U+0F39
"\224\188\190" .. -- U+0F3E
"\224\188\191" .. -- U+0F3F
"\224\189\177-\224\190\132" .. -- U+0F71-U+0F84
"\224\190\134" .. -- U+0F86
"\224\190\135" .. -- U+0F87
"\224\190\141-\224\190\151" .. -- U+0F8D-U+0F97
"\224\190\153-\224\190\188" .. -- U+0F99-U+0FBC
"\224\191\134" .. -- U+0FC6
"\225\128\171-\225\128\190" .. -- U+102B-U+103E
"\225\129\150-\225\129\153" .. -- U+1056-U+1059
"\225\129\158-\225\129\160" .. -- U+105E-U+1060
"\225\129\162-\225\129\164" .. -- U+1062-U+1064
"\225\129\167-\225\129\173" .. -- U+1067-U+106D
"\225\129\177-\225\129\180" .. -- U+1071-U+1074
"\225\130\130-\225\130\141" .. -- U+1082-U+108D
"\225\130\143" .. -- U+108F
"\225\130\154-\225\130\157" .. -- U+109A-U+109D
"\225\141\157-\225\141\159" .. -- U+135D-U+135F
"\225\156\146-\225\156\149" .. -- U+1712-U+1715
"\225\156\178-\225\156\180" .. -- U+1732-U+1734
"\225\157\146" .. -- U+1752
"\225\157\147" .. -- U+1753
"\225\157\178" .. -- U+1772
"\225\157\179" .. -- U+1773
"\225\158\180-\225\159\147") .. -- U+17B4-U+17D3
("\225\159\157" .. -- U+17DD
"\225\162\133" .. -- U+1885
"\225\162\134" .. -- U+1886
"\225\162\169" .. -- U+18A9
"\225\164\160-\225\164\171" .. -- U+1920-U+192B
"\225\164\176-\225\164\187" .. -- U+1930-U+193B
"\225\168\151-\225\168\155" .. -- U+1A17-U+1A1B
"\225\169\149-\225\169\158" .. -- U+1A55-U+1A5E
"\225\169\160-\225\169\188" .. -- U+1A60-U+1A7C
"\225\169\191" .. -- U+1A7F
"\225\170\176-\225\171\142" .. -- U+1AB0-U+1ACE
"\225\172\128-\225\172\132" .. -- U+1B00-U+1B04
"\225\172\180-\225\173\132" .. -- U+1B34-U+1B44
"\225\173\171-\225\173\179" .. -- U+1B6B-U+1B73
"\225\174\128-\225\174\130" .. -- U+1B80-U+1B82
"\225\174\161-\225\174\173" .. -- U+1BA1-U+1BAD
"\225\175\166-\225\175\179" .. -- U+1BE6-U+1BF3
"\225\176\164-\225\176\183" .. -- U+1C24-U+1C37
"\225\179\144-\225\179\146" .. -- U+1CD0-U+1CD2
"\225\179\148-\225\179\168" .. -- U+1CD4-U+1CE8
"\225\179\173" .. -- U+1CED
"\225\179\180" .. -- U+1CF4
"\225\179\183-\225\179\185" .. -- U+1CF7-U+1CF9
"\225\183\128-\225\183\140" .. -- U+1DC0-U+1DCC
"\225\183\142-\225\183\187" .. -- U+1DCE-U+1DFB
"\225\183\189-\225\183\191" .. -- U+1DFD-U+1DFF
"\226\131\144-\226\131\176" .. -- U+20D0-U+20F0
"\226\179\175-\226\179\177" .. -- U+2CEF-U+2CF1
"\226\181\191" .. -- U+2D7F
"\226\183\160-\226\183\191" .. -- U+2DE0-U+2DFF
"\227\128\170-\227\128\175" .. -- U+302A-U+302F
"\227\130\153" .. -- U+3099
"\227\130\154" .. -- U+309A
"\234\153\175-\234\153\178" .. -- U+A66F-U+A672
"\234\153\180-\234\153\189" .. -- U+A674-U+A67D
"\234\154\158" .. -- U+A69E
"\234\154\159" .. -- U+A69F
"\234\155\176" .. -- U+A6F0
"\234\155\177" .. -- U+A6F1
"\234\160\130" .. -- U+A802
"\234\160\134" .. -- U+A806
"\234\160\139" .. -- U+A80B
"\234\160\163-\234\160\167" .. -- U+A823-U+A827
"\234\160\172" .. -- U+A82C
"\234\162\128" .. -- U+A880
"\234\162\129" .. -- U+A881
"\234\162\180-\234\163\133" .. -- U+A8B4-U+A8C5
"\234\163\160-\234\163\177" .. -- U+A8E0-U+A8F1
"\234\163\191" .. -- U+A8FF
"\234\164\166-\234\164\173" .. -- U+A926-U+A92D
"\234\165\135-\234\165\147" .. -- U+A947-U+A953
"\234\166\128-\234\166\131" .. -- U+A980-U+A983
"\234\166\179-\234\167\128" .. -- U+A9B3-U+A9C0
"\234\167\165" .. -- U+A9E5
"\234\168\169-\234\168\182" .. -- U+AA29-U+AA36
"\234\169\131" .. -- U+AA43
"\234\169\140" .. -- U+AA4C
"\234\169\141" .. -- U+AA4D
"\234\169\187-\234\169\189" .. -- U+AA7B-U+AA7D
"\234\170\176" .. -- U+AAB0
"\234\170\178-\234\170\180" .. -- U+AAB2-U+AAB4
"\234\170\183" .. -- U+AAB7
"\234\170\184" .. -- U+AAB8
"\234\170\190" .. -- U+AABE
"\234\170\191" .. -- U+AABF
"\234\171\129" .. -- U+AAC1
"\234\171\171-\234\171\175" .. -- U+AAEB-U+AAEF
"\234\171\181" .. -- U+AAF5
"\234\171\182" .. -- U+AAF6
"\234\175\163-\234\175\170" .. -- U+ABE3-U+ABEA
"\234\175\172" .. -- U+ABEC
"\234\175\173" .. -- U+ABED
"\239\172\158" .. -- U+FB1E
"\239\184\160-\239\184\175" .. -- U+FE20-U+FE2F
"\240\144\135\189" .. -- U+101FD
"\240\144\139\160" .. -- U+102E0
"\240\144\141\182-\240\144\141\186" .. -- U+10376-U+1037A
"\240\144\168\129-\240\144\168\131" .. -- U+10A01-U+10A03
"\240\144\168\133" .. -- U+10A05
"\240\144\168\134" .. -- U+10A06
"\240\144\168\140-\240\144\168\143" .. -- U+10A0C-U+10A0F
"\240\144\168\184-\240\144\168\186" .. -- U+10A38-U+10A3A
"\240\144\168\191" .. -- U+10A3F
"\240\144\171\165" .. -- U+10AE5
"\240\144\171\166" .. -- U+10AE6
"\240\144\180\164-\240\144\180\167" .. -- U+10D24-U+10D27
"\240\144\181\169-\240\144\181\173" .. -- U+10D69-U+10D6D
"\240\144\186\171" .. -- U+10EAB
"\240\144\186\172" .. -- U+10EAC
"\240\144\187\188-\240\144\187\191" .. -- U+10EFC-U+10EFF
"\240\144\189\134-\240\144\189\144" .. -- U+10F46-U+10F50
"\240\144\190\130-\240\144\190\133" .. -- U+10F82-U+10F85
"\240\145\128\128-\240\145\128\130" .. -- U+11000-U+11002
"\240\145\128\184-\240\145\129\134" .. -- U+11038-U+11046
"\240\145\129\176" .. -- U+11070
"\240\145\129\179" .. -- U+11073
"\240\145\129\180" .. -- U+11074
"\240\145\129\191-\240\145\130\130" .. -- U+1107F-U+11082
"\240\145\130\176-\240\145\130\186" .. -- U+110B0-U+110BA
"\240\145\131\130" .. -- U+110C2
"\240\145\132\128-\240\145\132\130" .. -- U+11100-U+11102
"\240\145\132\167-\240\145\132\180" .. -- U+11127-U+11134
"\240\145\133\133" .. -- U+11145
"\240\145\133\134" .. -- U+11146
"\240\145\133\179" .. -- U+11173
"\240\145\134\128-\240\145\134\130" .. -- U+11180-U+11182
"\240\145\134\179-\240\145\135\128" .. -- U+111B3-U+111C0
"\240\145\135\137-\240\145\135\140" .. -- U+111C9-U+111CC
"\240\145\135\142" .. -- U+111CE
"\240\145\135\143" .. -- U+111CF
"\240\145\136\172-\240\145\136\183" .. -- U+1122C-U+11237
"\240\145\136\190" .. -- U+1123E
"\240\145\137\129" .. -- U+11241
"\240\145\139\159-\240\145\139\170" .. -- U+112DF-U+112EA
"\240\145\140\128-\240\145\140\131" .. -- U+11300-U+11303
"\240\145\140\187" .. -- U+1133B
"\240\145\140\188" .. -- U+1133C
"\240\145\140\190-\240\145\141\132" .. -- U+1133E-U+11344
"\240\145\141\135" .. -- U+11347
"\240\145\141\136" .. -- U+11348
"\240\145\141\139-\240\145\141\141" .. -- U+1134B-U+1134D
"\240\145\141\151" .. -- U+11357
"\240\145\141\162" .. -- U+11362
"\240\145\141\163" .. -- U+11363
"\240\145\141\166-\240\145\141\172" .. -- U+11366-U+1136C
"\240\145\141\176-\240\145\141\180" .. -- U+11370-U+11374
"\240\145\142\184-\240\145\143\128" .. -- U+113B8-U+113C0
"\240\145\143\130" .. -- U+113C2
"\240\145\143\133" .. -- U+113C5
"\240\145\143\135-\240\145\143\138" .. -- U+113C7-U+113CA
"\240\145\143\140-\240\145\143\144" .. -- U+113CC-U+113D0
"\240\145\143\146" .. -- U+113D2
"\240\145\143\161" .. -- U+113E1
"\240\145\143\162" .. -- U+113E2
"\240\145\144\181-\240\145\145\134" .. -- U+11435-U+11446
"\240\145\145\158" .. -- U+1145E
"\240\145\146\176-\240\145\147\131" .. -- U+114B0-U+114C3
"\240\145\150\175-\240\145\150\181" .. -- U+115AF-U+115B5
"\240\145\150\184-\240\145\151\128" .. -- U+115B8-U+115C0
"\240\145\151\156" .. -- U+115DC
"\240\145\151\157" .. -- U+115DD
"\240\145\152\176-\240\145\153\128" .. -- U+11630-U+11640
"\240\145\154\171-\240\145\154\183" .. -- U+116AB-U+116B7
"\240\145\156\157-\240\145\156\171" .. -- U+1171D-U+1172B
"\240\145\160\172-\240\145\160\186" .. -- U+1182C-U+1183A
"\240\145\164\176-\240\145\164\181" .. -- U+11930-U+11935
"\240\145\164\183" .. -- U+11937
"\240\145\164\184" .. -- U+11938
"\240\145\164\187-\240\145\164\190" .. -- U+1193B-U+1193E
"\240\145\165\128") .. -- U+11940
("\240\145\165\130" .. -- U+11942
"\240\145\165\131" .. -- U+11943
"\240\145\167\145-\240\145\167\151" .. -- U+119D1-U+119D7
"\240\145\167\154-\240\145\167\160" .. -- U+119DA-U+119E0
"\240\145\167\164" .. -- U+119E4
"\240\145\168\129-\240\145\168\138" .. -- U+11A01-U+11A0A
"\240\145\168\179-\240\145\168\185" .. -- U+11A33-U+11A39
"\240\145\168\187-\240\145\168\190" .. -- U+11A3B-U+11A3E
"\240\145\169\135" .. -- U+11A47
"\240\145\169\145-\240\145\169\155" .. -- U+11A51-U+11A5B
"\240\145\170\138-\240\145\170\153" .. -- U+11A8A-U+11A99
"\240\145\176\175-\240\145\176\182" .. -- U+11C2F-U+11C36
"\240\145\176\184-\240\145\176\191" .. -- U+11C38-U+11C3F
"\240\145\178\146-\240\145\178\167" .. -- U+11C92-U+11CA7
"\240\145\178\169-\240\145\178\182" .. -- U+11CA9-U+11CB6
"\240\145\180\177-\240\145\180\182" .. -- U+11D31-U+11D36
"\240\145\180\186" .. -- U+11D3A
"\240\145\180\188" .. -- U+11D3C
"\240\145\180\189" .. -- U+11D3D
"\240\145\180\191-\240\145\181\133" .. -- U+11D3F-U+11D45
"\240\145\181\135" .. -- U+11D47
"\240\145\182\138-\240\145\182\142" .. -- U+11D8A-U+11D8E
"\240\145\182\144" .. -- U+11D90
"\240\145\182\145" .. -- U+11D91
"\240\145\182\147-\240\145\182\151" .. -- U+11D93-U+11D97
"\240\145\187\179-\240\145\187\182" .. -- U+11EF3-U+11EF6
"\240\145\188\128" .. -- U+11F00
"\240\145\188\129" .. -- U+11F01
"\240\145\188\131" .. -- U+11F03
"\240\145\188\180-\240\145\188\186" .. -- U+11F34-U+11F3A
"\240\145\188\190-\240\145\189\130" .. -- U+11F3E-U+11F42
"\240\145\189\154" .. -- U+11F5A
"\240\147\145\128" .. -- U+13440
"\240\147\145\135-\240\147\145\149" .. -- U+13447-U+13455
"\240\150\132\158-\240\150\132\175" .. -- U+1611E-U+1612F
"\240\150\171\176-\240\150\171\180" .. -- U+16AF0-U+16AF4
"\240\150\172\176-\240\150\172\182" .. -- U+16B30-U+16B36
"\240\150\189\143" .. -- U+16F4F
"\240\150\189\145-\240\150\190\135" .. -- U+16F51-U+16F87
"\240\150\190\143-\240\150\190\146" .. -- U+16F8F-U+16F92
"\240\150\191\164" .. -- U+16FE4
"\240\150\191\176" .. -- U+16FF0
"\240\150\191\177" .. -- U+16FF1
"\240\155\178\157" .. -- U+1BC9D
"\240\155\178\158" .. -- U+1BC9E
"\240\156\188\128-\240\156\188\173" .. -- U+1CF00-U+1CF2D
"\240\156\188\176-\240\156\189\134" .. -- U+1CF30-U+1CF46
"\240\157\133\165-\240\157\133\169" .. -- U+1D165-U+1D169
"\240\157\133\173-\240\157\133\178" .. -- U+1D16D-U+1D172
"\240\157\133\187-\240\157\134\130" .. -- U+1D17B-U+1D182
"\240\157\134\133-\240\157\134\139" .. -- U+1D185-U+1D18B
"\240\157\134\170-\240\157\134\173" .. -- U+1D1AA-U+1D1AD
"\240\157\137\130-\240\157\137\132" .. -- U+1D242-U+1D244
"\240\157\168\128-\240\157\168\182" .. -- U+1DA00-U+1DA36
"\240\157\168\187-\240\157\169\172" .. -- U+1DA3B-U+1DA6C
"\240\157\169\181" .. -- U+1DA75
"\240\157\170\132" .. -- U+1DA84
"\240\157\170\155-\240\157\170\159" .. -- U+1DA9B-U+1DA9F
"\240\157\170\161-\240\157\170\175" .. -- U+1DAA1-U+1DAAF
"\240\158\128\128-\240\158\128\134" .. -- U+1E000-U+1E006
"\240\158\128\136-\240\158\128\152" .. -- U+1E008-U+1E018
"\240\158\128\155-\240\158\128\161" .. -- U+1E01B-U+1E021
"\240\158\128\163" .. -- U+1E023
"\240\158\128\164" .. -- U+1E024
"\240\158\128\166-\240\158\128\170" .. -- U+1E026-U+1E02A
"\240\158\130\143" .. -- U+1E08F
"\240\158\132\176-\240\158\132\182" .. -- U+1E130-U+1E136
"\240\158\138\174" .. -- U+1E2AE
"\240\158\139\172-\240\158\139\175" .. -- U+1E2EC-U+1E2EF
"\240\158\147\172-\240\158\147\175" .. -- U+1E4EC-U+1E4EF
"\240\158\151\174" .. -- U+1E5EE
"\240\158\151\175" .. -- U+1E5EF
"\240\158\163\144-\240\158\163\150" .. -- U+1E8D0-U+1E8D6
"\240\158\165\132-\240\158\165\138") -- U+1E944-U+1E94A
-- Double combining characters.
-- Charset: [[:M:]&[:Canonical_Combining_Class=/^Double_/:]&[:^subhead=Grapheme joiner:]&[:^Variation_Selector=Yes:]]
local comb_chars_double =
"\205\156-\205\162" .. -- U+035C-U+0362
"\225\183\141" .. -- U+1DCD
"\225\183\188" -- U+1DFC
-- Variation selectors etc.; separated out so that we don't get categories for them.
-- Charset: [[:M:]&[[:subhead=Grapheme joiner:][:Variation_Selector=Yes:]]].
local comb_chars_other =
"\205\143" .. -- U+034F
"\225\160\139-\225\160\141" .. -- U+180B-U+180D
"\225\160\143" .. -- U+180F
"\239\184\128-\239\184\143" .. -- U+FE00-U+FE0F
"\243\160\132\128-\243\160\135\175" -- U+E0100-U+E01EF
local comb_chars_all = comb_chars_single .. comb_chars_double .. comb_chars_other
local comb_chars = {
combined_single = "[^" .. comb_chars_all .. "][" .. comb_chars_single .. comb_chars_other .. "]+%f[^" .. comb_chars_all .. "]",
combined_double = "[^" .. comb_chars_all .. "][" .. comb_chars_single .. comb_chars_other .. "]*[" .. comb_chars_double .. "]+[" .. comb_chars_all .. "]*.[" .. comb_chars_single .. comb_chars_other .. "]*",
diacritics_single = "[" .. comb_chars_single .. "]",
diacritics_double = "[" .. comb_chars_double .. "]",
diacritics_all = "[" .. comb_chars_all .. "]"
}
-- Somewhat curated list from https://unicode.org/Public/emoji/16.0/emoji-sequences.txt.
-- NOTE: There are lots more emoji sequences involving non-emoji Plane 0 symbols followed by 0xFE0F, which we don't
-- (yet?) handle.
local emoji_chars =
"\226\140\154" .. -- U+231A (⌚)
"\226\140\155" .. -- U+231B (⌛)
"\226\140\168" .. -- U+2328 (⌨)
"\226\143\143" .. -- U+23CF (⏏)
"\226\143\169-\226\143\179" .. -- U+23E9-U+23F3 (⏩-⏳)
"\226\143\184-\226\143\186" .. -- U+23F8-U+23FA (⏸-⏺)
"\226\150\170" .. -- U+25AA (▪)
"\226\150\171" .. -- U+25AB (▫)
"\226\150\182" .. -- U+25B6 (▶)
"\226\151\128" .. -- U+25C0 (◀)
"\226\151\187-\226\151\190" .. -- U+25FB-U+25FE (◻-◾)
"\226\152\128-\226\152\132" .. -- U+2600-U+2604 (☀-☄)
"\226\152\142" .. -- U+260E (☎)
"\226\152\145" .. -- U+2611 (☑)
"\226\152\148" .. -- U+2614 (☔)
"\226\152\149" .. -- U+2615 (☕)
"\226\152\152" .. -- U+2618 (☘)
"\226\152\157" .. -- U+261D (☝)
"\226\152\160" .. -- U+2620 (☠)
"\226\152\162" .. -- U+2622 (☢)
"\226\152\163" .. -- U+2623 (☣)
"\226\152\166" .. -- U+2626 (☦)
"\226\152\170" .. -- U+262A (☪)
"\226\152\174" .. -- U+262E (☮)
"\226\152\175" .. -- U+262F (☯)
"\226\152\184-\226\152\186" .. -- U+2638-U+263A (☸-☺)
"\226\153\136-\226\153\147" .. -- U+2648-U+2653 (♈-♓)
"\226\153\159" .. -- U+265F (♟)
"\226\153\160" .. -- U+2660 (♠)
"\226\153\163" .. -- U+2663 (♣)
"\226\153\165" .. -- U+2665 (♥)
"\226\153\166" .. -- U+2666 (♦)
"\226\153\168" .. -- U+2668 (♨)
"\226\153\187" .. -- U+267B (♻)
"\226\153\190" .. -- U+267E (♾)
"\226\153\191" .. -- U+267F (♿)
"\226\154\146-\226\154\151" .. -- U+2692-U+2697 (⚒-⚗)
"\226\154\153" .. -- U+2699 (⚙)
"\226\154\155" .. -- U+269B (⚛)
"\226\154\156" .. -- U+269C (⚜)
"\226\154\160" .. -- U+26A0 (⚠)
"\226\154\161" .. -- U+26A1 (⚡)
"\226\154\170" .. -- U+26AA (⚪)
"\226\154\171" .. -- U+26AB (⚫)
"\226\154\176" .. -- U+26B0 (⚰)
"\226\154\177" .. -- U+26B1 (⚱)
"\226\154\189" .. -- U+26BD (⚽)
"\226\154\190" .. -- U+26BE (⚾)
"\226\155\132" .. -- U+26C4 (⛄)
"\226\155\133" .. -- U+26C5 (⛅)
"\226\155\136" .. -- U+26C8 (⛈)
"\226\155\142" .. -- U+26CE (⛎)
"\226\155\143" .. -- U+26CF (⛏)
"\226\155\145" .. -- U+26D1 (⛑)
"\226\155\147" .. -- U+26D3 (⛓)
"\226\155\148" .. -- U+26D4 (⛔)
"\226\155\169" .. -- U+26E9 (⛩)
"\226\155\170" .. -- U+26EA (⛪)
"\226\155\176-\226\155\181" .. -- U+26F0-U+26F5 (⛰-⛵)
"\226\155\183-\226\155\186" .. -- U+26F7-U+26FA (⛷-⛺)
"\226\155\189" .. -- U+26FD (⛽)
"\226\156\130" .. -- U+2702 (✂)
"\226\156\133" .. -- U+2705 (✅)
"\226\156\136-\226\156\141" .. -- U+2708-U+270D (✈-✍)
"\226\156\143" .. -- U+270F (✏)
"\226\156\146" .. -- U+2712 (✒)
"\226\156\148" .. -- U+2714 (✔)
"\226\156\150" .. -- U+2716 (✖)
"\226\156\157" .. -- U+271D (✝)
"\226\156\161" .. -- U+2721 (✡)
"\226\156\168" .. -- U+2728 (✨)
"\226\156\179" .. -- U+2733 (✳)
"\226\156\180" .. -- U+2734 (✴)
"\226\157\132" .. -- U+2744 (❄)
"\226\157\135" .. -- U+2747 (❇)
"\226\157\140" .. -- U+274C (❌)
"\226\157\142" .. -- U+274E (❎)
"\226\157\147-\226\157\149" .. -- U+2753-U+2755 (❓-❕)
"\226\157\151" .. -- U+2757 (❗)
"\226\157\163" .. -- U+2763 (❣)
"\226\157\164" .. -- U+2764 (❤)
"\226\158\149-\226\158\151" .. -- U+2795-U+2797 (➕-➗)
"\226\158\161" .. -- U+27A1 (➡)
"\226\158\176" .. -- U+27B0 (➰)
"\226\158\191" .. -- U+27BF (➿)
"\226\164\180" .. -- U+2934 (⤴)
"\226\164\181" .. -- U+2935 (⤵)
"\226\172\133-\226\172\135" .. -- U+2B05-U+2B07 (⬅-⬇)
"\226\172\155" .. -- U+2B1B (⬛)
"\226\172\156" .. -- U+2B1C (⬜)
"\226\173\144" .. -- U+2B50 (⭐)
"\226\173\149" .. -- U+2B55 (⭕)
"\227\128\176" .. -- U+3030 (〰)
"\227\128\189" .. -- U+303D (〽)
"\227\138\151" .. -- U+3297 (㊗)
"\227\138\153" .. -- U+3299 (㊙)
"\240\159\128\132" .. -- U+1F004 (🀄)
"\240\159\131\143" .. -- U+1F0CF (🃏)
"\240\159\133\176" .. -- U+1F170 (🅰)
"\240\159\133\177" .. -- U+1F171 (🅱)
"\240\159\133\190" .. -- U+1F17E (🅾)
"\240\159\133\191" .. -- U+1F17F (🅿)
"\240\159\134\142" .. -- U+1F18E (🆎)
"\240\159\134\145-\240\159\134\154" .. -- U+1F191-U+1F19A (🆑-🆚)
"\240\159\136\129" .. -- U+1F201 (🈁)
"\240\159\136\130" .. -- U+1F202 (🈂)
"\240\159\136\154" .. -- U+1F21A (🈚)
"\240\159\136\175" .. -- U+1F22F (🈯)
"\240\159\136\178-\240\159\136\186" .. -- U+1F232-U+1F23A (🈲-🈺)
"\240\159\137\144" .. -- U+1F250 (🉐)
"\240\159\137\145" .. -- U+1F251 (🉑)
"\240\159\140\128-\240\159\153\143" .. -- U+1F300-U+1F64F (🌀-🙏)
"\240\159\154\128-\240\159\155\151" .. -- U+1F680-U+1F6D7 (🚀-🛗)
"\240\159\155\156-\240\159\155\172" .. -- U+1F6DC-U+1F6EC (🛜-🛬)
"\240\159\155\176-\240\159\155\188" .. -- U+1F6F0-U+1F6FC (🛰-🛼)
"\240\159\159\160-\240\159\159\171" .. -- U+1F7E0-U+1F7EB (🟠-🟫)
"\240\159\159\176" .. -- U+1F7F0 (🟰)
"\240\159\164\140-\240\159\169\147" .. -- U+1F90C-U+1FA53 (🤌-🩓)
"\240\159\169\160-\240\159\169\173" .. -- U+1FA60-U+1FA6D (🩠-🩭)
"\240\159\169\176-\240\159\169\188" .. -- U+1FA70-U+1FA7C (🩰-🩼)
"\240\159\170\128-\240\159\170\137" .. -- U+1FA80-U+1FA89 (🪀-)
"\240\159\170\143-\240\159\171\134" .. -- U+1FA8F-U+1FAC6 (-)
"\240\159\171\142-\240\159\171\156" .. -- U+1FACE-U+1FADC (🫎-)
"\240\159\171\159-\240\159\171\169" .. -- U+1FADF-U+1FAE9 (-)
"\240\159\171\176-\240\159\171\184" -- U+1FAF0-U+1FAF8 (🫰-🫸)
local unsupported_characters
local function get_unsupported_characters()
unsupported_characters, get_unsupported_characters = {}, nil
for k, v in pairs(load_data("Module:links/data").unsupported_characters) do
unsupported_characters[v] = k
end
return unsupported_characters
end
-- The list of unsupported titles and invert it (so the keys are pagenames and values are canonical titles).
local unsupported_titles
local function get_unsupported_titles()
unsupported_titles, get_unsupported_titles = {}, nil
for k, v in pairs(load_data("Module:links/data").unsupported_titles) do
unsupported_titles[v] = k
end
return unsupported_titles
end
-- To save on memory, we only cache names with either non-ASCII characters in them or ASCII characters to be removed or
-- transformed (apostrophe, double quote, hyphen).
local L2_sort_key_cache = {}
function export.get_L2_sort_key(L2)
if L2 == "Translingual" then
return "\1"
elseif L2 == "English" then
return "\2"
elseif match(L2, "^[%z\1-\b\14-!#-&(-,.-\127]+$") then
return L2
end
local sort_key = L2_sort_key_cache[L2]
if sort_key then
return sort_key
end
sort_key = toNFC(ugsub(ugsub(toNFD(L2), "[" .. comb_chars_all .. "'\"ʻʼ]+", ""), "[%s%-]+", " "))
L2_sort_key_cache[L2] = sort_key
return sort_key
end
--[==[
Given a pagename (or {nil} for the current page), create and return a data structure describing the page. The returned
object includes the following fields:
* `comb_chars`: A table containing various Lua character class patterns for different types of combined characters
(those that decompose into multiple characters in the NFD decomposition). The patterns are meant to be used with
{mw.ustring.find()}. The keys are:
** `single`: Single combining characters (character + diacritic), without surrounding brackets;
** `double`: Double combining characters (character + diacritic + character), without surrounding brackets;
** `vs`: Variation selectors, without surrounding brackets;
** `all`: Concatenation of `single` + `double` + `vs`, without surrounding brackets;
** `diacritics_single`: Like `single` but with surrounding brackets;
** `diacritics_double`: Like `double` but with surrounding brackets;
** `diacritics_all`: Like `all` but with surrounding brackets;
** `combined_single`: Lua pattern for matching a spacing character followed by one or more single combining characters;
** `combined_double`: Lua pattern for matching a combination of two spacing characters separated by one or more double
combining characters, possibly also with single combining characters;
* `emoji_pattern`: A Lua character class pattern (including surrounding brackets) that matches emojis. Meant to be used
with {mw.ustring.find()}.
* `L2_list`: Ordered list of L2 headings on the page, with the extra key `n` that gives the length of the list.
* `L2_sections`: Lookup table of L2 headings on the page, where the key is the section number assigned by the preprocessor, and the value is the L2 heading name. Once an invocation has got its actual section number from get_current_L2 in [[Module:pages]], it can use this table to determine its parent L2. TODO: We could expand this to include subsections, to check POS headings are correct etc.
* `unsupported_titles`: Map from pagenames to canonical titles for unsupported-title pages.
* `namespace`: Namespace of the pagename.
* `ns`: Namespace table for the page from mw.site.namespaces (TODO: merge with `namespace` above).
* `full_raw_pagename`: Full version of the '''RAW''' pagename (i.e. unsupported-title pages aren't canonicalized);
including the namespace and the base (portion before the slash).
* `pagename`: Canonicalized subpage portion of the pagename (unsupported-title pages are canonicalized).
* `pagename_with_base`: Same as `pagename` in the main namespace; otherwise, the whole pagename without the namespace.
* `decompose_pagename`: Equivalent of `pagename` in NFD decomposition.
* `pagename_len`: Length of `pagename` in Unicode chars, where combinations of spacing character + decomposed diacritic
are treated as single characters.
* `explode_pagename`: Set of characters found in `pagename`. The keys are characters (where combinations of spacing
character + decomposed diacritic are treated as single characters).
* `encoded_pagename`: FIXME: Document me.
* `pagename_defaultsort`: FIXME: Document me.
* `raw_defaultsort`: FIXME: Document me.
* `wikitext_topic_cat`: FIXME: Document me.
* `wikitext_langname_cat`: FIXME: Document me.
`no_fetch_content` says to not fetch and parse the content or set a DEFAULTSORT sort key, in order to save time on
test and documentation pages that have lots of template invocations that set `|pagename=`. It turns out nearly all the
time of this function is contained in the line `frame:callParserFunction("DEFAULTSORT", data.pagename_defaultsort)`,
so we skip it on test and documentation pages where it accomplishes nothing in any case.
]==]
function export.process_page(pagename, no_fetch_content)
local data = {
comb_chars = comb_chars,
emoji_pattern = "[" .. emoji_chars .. "]",
unsupported_titles = unsupported_titles or get_unsupported_titles()
}
local cats = {}
data.cats = cats
-- We cannot store `raw_title` in `data` because it contains a metatable.
local raw_title
local function bad_pagename()
if not pagename then
error("Internal error: Something wrong, `data.pagename` not specified but current title contains illegal characters")
else
error(format("Bad value for `data.pagename`: '%s', which must not contain illegal characters", pagename))
end
end
if pagename then -- for testing, doc pages, etc.
raw_title = new_title(pagename)
if not raw_title then
bad_pagename()
end
else
raw_title = mw.title.getCurrentTitle()
end
local nsText = raw_title.nsText
local namespace_is_reconstruction = nsText == "Reconstruction"
data.namespace = nsText
data.ns = mw.site.namespaces[raw_title.namespace]
local full_raw_pagename = raw_title.fullText
data.full_raw_pagename = full_raw_pagename
local frame = mw.getCurrentFrame()
-- WARNING: `content` may be nil, e.g. if we're substing a template like {{ja-new}} on a not-yet-created page
-- or if the module specifies the subpage as `data.pagename` (which many modules do) and we're in an Appendix
-- or other non-mainspace page. We used to make the latter an error but there are too many modules that do it,
-- and substing on a nonexistent page is totally legit, and we don't actually need to be able to access the
-- content of the page.
local content = not no_fetch_content and raw_title:getContent() or nil
-- Get the pagename.
pagename = physical_to_logical_pagename_if_mammoth(raw_title)
pagename = gsub(pagename, "^Unsupported titles/(.+)", function(m)
insert(cats, "Unsupported titles")
local title = (unsupported_titles or get_unsupported_titles())[m]
if title then
return title
end
-- Substitute pairs of "`". Those not used for escaping should be escaped as "`grave`", but might not be,
-- so if a pair don't form a match, the closing "`" should become the opening "`" of the next match attempt.
-- This has to be done manually, instead of using gsub.
local open_pos = find(m, "`")
if not open_pos then
return m
end
title = {sub(m, 1, open_pos - 1)}
while true do
local close_pos = find(m, "`", open_pos + 1)
if not close_pos then
-- Add "`" plus any remaining characters.
insert(title, sub(m, open_pos))
break
end
local escape = sub(m, open_pos, close_pos)
local ch = (unsupported_characters or get_unsupported_characters())[escape]
-- Match found, so substitute the character and move to the first "`" after the match if found, or
-- otherwise return.
if ch then
insert(title, ch)
local nxt_pos = close_pos + 1
open_pos = find(m, "`", nxt_pos)
-- Add any characters between the match and the next "`" or end.
if open_pos then
insert(title, sub(m, nxt_pos, open_pos - 1))
else
insert(title, sub(m, nxt_pos))
break
end
-- Match not found, so make the closing "`" the opening "`" of the next attempt.
else
-- Add the failed match, except for the closing "`".
insert(title, sub(m, open_pos, close_pos - 1))
open_pos = close_pos
end
end
return concat(title)
end)
-- Save pagename, as the local variable will be destructively modified.
data.pagename = pagename
if nsText == "" then
data.pagename_with_base = pagename
else
data.pagename_with_base = raw_title.text
end
-- Decompose the pagename in Unicode normalization form D.
data.decompose_pagename = toNFD(pagename)
-- Explode the current page name into a character table, taking decomposed combining characters into account.
local explode_pagename = {}
local pagename_len = 0
local function explode(char)
explode_pagename[char] = true
pagename_len = pagename_len + 1
return ""
end
pagename = ugsub(pagename, comb_chars.combined_double, explode)
pagename = gsub(ugsub(pagename, comb_chars.combined_single, explode), ".[\128-\191]*", explode)
data.explode_pagename = explode_pagename
data.pagename_len = pagename_len
-- Generate DEFAULTSORT.
data.encoded_pagename = encode_entities(data.pagename)
data.pagename_defaultsort = get_lang("mul"):makeSortKey(data.encoded_pagename)
if not no_fetch_content then
frame:callParserFunction("DEFAULTSORT", data.pagename_defaultsort)
end
data.raw_defaultsort = uupper(raw_title.text)
-- Make `L2_list` and `L2_sections`, note raw wikitext use of {{DEFAULTSORT:}} and {{DISPLAYTITLE:}}, then add categories if any unwanted L1 headings are found, the L2 headings are in the wrong order, or they don't match a canonical language name.
-- Note: HTML comments shouldn't be removed from `content` until after this step, as they can affect the result.
do
local L2_list, L2_list_len, L2_sections = {}, 0, {}
local prev, rc
local new_cats, L2_wrong_order = {}
local function handle_heading(heading)
local level = heading.level
if level > 2 then
return
end
local name = heading:get_name()
-- heading:get_name() will return nil if there are any newline characters in the preprocessed heading name (e.g. from an expanded template). In such cases, the preprocessor section count still increments (since it's calculated pre-expansion), but the heading will fail, so the L2 count shouldn't be incremented.
if name == nil then
return
end
L2_list_len = L2_list_len + 1
L2_list[L2_list_len] = name
L2_sections[heading.section] = name
-- Also add any L1s, since they terminate the preceding L2, but add a maintenance category since it's probably a mistake.
if level == 1 then
new_cats["Pages with unwanted L1 headings"] = true
end
-- Check the heading is in the right order.
-- FIXME: we need a more sophisticated sorting method which handles non-diacritic special characters (e.g. Magɨ).
if prev and not (
L2_wrong_order or
string_compare(export.get_L2_sort_key(prev), export.get_L2_sort_key(name))
) then
new_cats["Pages with language headings in the wrong order"] = true
L2_wrong_order = true
end
-- Check it's a canonical language name.
if not (langnames or get_langnames())[name] then
new_cats["Pages with nonstandard language headings"] = true
end
prev = name
end
local function handle_template(template)
-- Turn off redirect checking except in the Reconstruction namespace because the rc flag is only
-- used in the Reconstruction namespace and the other names are parser functions, which AFAIK can't
-- be redirected to.
local name = template:get_name(nil, not namespace_is_reconstruction and "no_redirect" or nil)
if name == "DEFAULTSORT:" then
new_cats["Pages with DEFAULTSORT conflicts"] = true
elseif name == "DISPLAYTITLE:" then
new_cats["Pages with DISPLAYTITLE conflicts"] = true
elseif name == "reconstructed" then
rc = true
end
end
if content then
for node in parse(content):iterate_nodes() do
local node_class = class_else_type(node)
if node_class == "heading" then
handle_heading(node)
elseif node_class == "template" then
handle_template(node)
elseif node_class == "parameter" then
new_cats["Pages with raw triple-brace template parameters"] = true
end
end
end
L2_list.n = L2_list_len
data.L2_list = L2_list
data.L2_sections = L2_sections
insert(cats, get_category("Pages with entries"))
insert(cats, get_category(format("Pages with %s entr%s", L2_list_len, L2_list_len == 1 and "y" or "ies")))
for cat in pairs(new_cats) do
insert(cats, get_category(cat))
end
if namespace_is_reconstruction and not rc then
local langname = match(full_raw_pagename, "^Reconstruction:([^/]+)/.")
if langname then
insert(cats, get_category(langname .. " entries missing Template:reconstructed"))
end
end
end
------ 4. Parse page for maintenance categories. ------
-- Use of tab characters.
if content and find(content, "\t", 1, true) then
insert(cats, get_category("Pages with tab characters"))
end
-- Unencoded character(s) in title.
local IDS = list_to_set{"⿰", "⿱", "⿲", "⿳", "⿴", "⿵", "⿶", "⿷", "⿸", "⿹", "⿺", "⿻", "", "", "", "", ""}
for char in pairs(explode_pagename) do
if IDS[char] and char ~= data.pagename then
insert(cats, "Terms containing unencoded characters")
break
end
end
-- Raw wikitext use of a topic or langname category. Also check if any raw sortkeys have been used.
do
local wikitext_topic_cat = {}
local wikitext_langname_cat = {}
local raw_sortkey
-- If a raw sortkey has been found, add it to the relevant table.
-- If there's no table (or the index is just `true`), create one first.
local function add_cat_table(t, lang, sortkey)
local t_lang = t[lang]
if not sortkey then
if not t_lang then
t[lang] = true
end
return
elseif t_lang == true or not t_lang then
t_lang = {}
t[lang] = t_lang
end
t_lang[uupper(decode_entities(sortkey))] = true
end
local function process_category(content, cat, colon, nxt)
local pipe = find(cat, "|", colon + 1, true)
-- Categories cannot end "|]]".
if pipe == #cat then
return
end
local title = new_title(pipe and sub(cat, 1, pipe - 1) or cat)
if not (title and title.namespace == 14) then
return
end
-- Get the sortkey (if any), then canonicalize category title.
local sortkey = pipe and sub(cat, pipe + 1) or nil
cat = title.text
if sortkey then
raw_sortkey = true
-- If the sortkey contains "[", the first "]" of a final "]]]" is treated as part of the sortkey.
if find(sortkey, "[", 1, true) and sub(content, nxt, nxt) == "]" then
sortkey = sortkey .. "]"
end
end
local code = match(cat, "^([%w%-.]+):")
if code then
add_cat_table(wikitext_topic_cat, code, sortkey)
return
end
-- Split by word.
cat = split(cat, " ", true, true)
-- Formerly we looked for the language name anywhere in the category. This is simply wrong
-- because there are no categories like 'Alsatian French lemmas' (only L2 languages
-- have langname categories), but doing it this way wrongly catches things like [[Category:Shapsug Adyghe]]
-- in [[Category:Adyghe entries with language name categories using raw markup]].
local n = #cat - 1
if n <= 0 then
return
end
-- Go from longest to shortest and stop once we've found a language name. Going from shortest
-- to longest or not stopping after a match risks falsely matching (e.g.) German Low German
-- categories as German.
repeat
local name = concat(cat, " ", 1, n)
if (langnames or get_langnames())[name] then
add_cat_table(wikitext_langname_cat, name, sortkey)
return
end
n = n - 1
until n == 0
end
if content then
-- Remove comments, then iterate over category links.
content = remove_comments(content, "BOTH")
local head = find(content, "[[", 1, true)
while head do
local close = find(content, "]]", head + 2, true)
if not close then
break
end
-- Make sure there are no intervening "[[" between head and close.
local open = find(content, "[[", head + 2, true)
while open and open < close do
head = open
open = find(content, "[[", head + 2, true)
end
local cat = sub(content, head + 2, close - 1)
-- Locate the colon, and weed out most unwanted links. "[ _\128-\244]*" catches valid whitespace, and ensures any category links using the colon trick are ignored. We match all non-ASCII characters, as there could be multibyte spaces, and mw.title.new will filter out any remaining false-positives; this is a lot faster than running mw.title.new on every link.
local colon = match(cat, "^[ _\128-\244]*[Cc][Aa][Tt][EeGgOoRrYy _\128-\244]*():")
if colon then
process_category(content, cat, colon, close + 2)
end
head = open
end
end
data.wikitext_topic_cat = wikitext_topic_cat
data.wikitext_langname_cat = wikitext_langname_cat
if raw_sortkey then
insert(cats, get_category("Pages with raw sortkeys"))
end
end
return data
end
return export
0esb0zcz2sjpy8aqh1uv1deoe3q625h
230597
230596
2026-04-05T14:09:48Z
Lee
19
[[:en:Module:headword/page]] වෙතින් එක් සංශෝධනයක්
230596
Scribunto
text/plain
local export = {}
local languages_module = "Module:languages"
local maintenance_category_module = "Module:maintenance category"
local pages_module = "Module:pages"
local string_compare_module = "Module:string/compare"
local string_decode_entities_module = "Module:string/decodeEntities"
local string_remove_comments_module = "Module:string/removeComments"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local mw = mw
local string = string
local table = table
local ustring = mw.ustring
local concat = table.concat
local find = string.find
local format = string.format
local gsub = string.gsub
local insert = table.insert
local load_data = mw.loadData
local match = string.match
local new_title = mw.title.new
local pairs = pairs
local require = require
local sub = string.sub
local toNFC = ustring.toNFC
local toNFD = ustring.toNFD
local ugsub = ustring.gsub
local function class_else_type(...)
class_else_type = require(template_parser_module).class_else_type
return class_else_type(...)
end
local function decode_entities(...)
decode_entities = require(string_decode_entities_module)
return decode_entities(...)
end
local function encode_entities(...)
encode_entities = require(string_utilities_module).encode_entities
return encode_entities(...)
end
local function get_category(...)
get_category = require(maintenance_category_module).get_category
return get_category(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function list_to_set(...)
list_to_set = require(table_module).listToSet
return list_to_set(...)
end
local function parse(...)
parse = require(template_parser_module).parse
return parse(...)
end
local function remove_comments(...)
remove_comments = require(string_remove_comments_module)
return remove_comments(...)
end
local function physical_to_logical_pagename_if_mammoth(...)
physical_to_logical_pagename_if_mammoth = require(pages_module).physical_to_logical_pagename_if_mammoth
return physical_to_logical_pagename_if_mammoth(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function string_compare(...)
string_compare = require(string_compare_module)
return string_compare(...)
end
local function uupper(...)
uupper = require(string_utilities_module).upper
return uupper(...)
end
--[==[
Loaders for objects, which load data (or some other object) into some variable, which can then be accessed as "foo or get_foo()", where the function get_foo sets the object to "foo" and then returns it. This ensures they are only loaded when needed, and avoids the need to check for the existence of the object each time, since once "foo" has been set, "get_foo" will not be called again.]==]
local langnames
local function get_langnames()
langnames, get_langnames = load_data("Module:languages/canonical names"), nil
return langnames
end
-- Combining character data used when categorising unusual characters. These resolve into two patterns, used to find
-- single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character +
-- diacritic(s) + character).
-- Charsets are in the format used by Unicode's UnicodeSet tool: https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp.
-- Single combining characters.
-- Charset: [[:M:]&[:^Canonical_Combining_Class=/^Double_/:]&[:^subhead=Grapheme joiner:]&[:^Variation_Selector=Yes:]]
-- Note: concatenating hundreds of lines at once gives an error, so () are used every 150 lines to break it up into chunks.
local comb_chars_single =
("\204\128-\205\142" .. -- U+0300-U+034E
"\205\144-\205\155" .. -- U+0350-U+035B
"\205\163-\205\175" .. -- U+0363-U+036F
"\210\131-\210\137" .. -- U+0483-U+0489
"\214\145-\214\189" .. -- U+0591-U+05BD
"\214\191" .. -- U+05BF
"\215\129" .. -- U+05C1
"\215\130" .. -- U+05C2
"\215\132" .. -- U+05C4
"\215\133" .. -- U+05C5
"\215\135" .. -- U+05C7
"\216\144-\216\154" .. -- U+0610-U+061A
"\217\139-\217\159" .. -- U+064B-U+065F
"\217\176" .. -- U+0670
"\219\150-\219\156" .. -- U+06D6-U+06DC
"\219\159-\219\164" .. -- U+06DF-U+06E4
"\219\167" .. -- U+06E7
"\219\168" .. -- U+06E8
"\219\170-\219\173" .. -- U+06EA-U+06ED
"\220\145" .. -- U+0711
"\220\176-\221\138" .. -- U+0730-U+074A
"\222\166-\222\176" .. -- U+07A6-U+07B0
"\223\171-\223\179" .. -- U+07EB-U+07F3
"\223\189" .. -- U+07FD
"\224\160\150-\224\160\153" .. -- U+0816-U+0819
"\224\160\155-\224\160\163" .. -- U+081B-U+0823
"\224\160\165-\224\160\167" .. -- U+0825-U+0827
"\224\160\169-\224\160\173" .. -- U+0829-U+082D
"\224\161\153-\224\161\155" .. -- U+0859-U+085B
"\224\162\151-\224\162\159" .. -- U+0897-U+089F
"\224\163\138-\224\163\161" .. -- U+08CA-U+08E1
"\224\163\163-\224\164\131" .. -- U+08E3-U+0903
"\224\164\186-\224\164\188" .. -- U+093A-U+093C
"\224\164\190-\224\165\143" .. -- U+093E-U+094F
"\224\165\145-\224\165\151" .. -- U+0951-U+0957
"\224\165\162" .. -- U+0962
"\224\165\163" .. -- U+0963
"\224\166\129-\224\166\131" .. -- U+0981-U+0983
"\224\166\188" .. -- U+09BC
"\224\166\190-\224\167\132" .. -- U+09BE-U+09C4
"\224\167\135" .. -- U+09C7
"\224\167\136" .. -- U+09C8
"\224\167\139-\224\167\141" .. -- U+09CB-U+09CD
"\224\167\151" .. -- U+09D7
"\224\167\162" .. -- U+09E2
"\224\167\163" .. -- U+09E3
"\224\167\190" .. -- U+09FE
"\224\168\129-\224\168\131" .. -- U+0A01-U+0A03
"\224\168\188" .. -- U+0A3C
"\224\168\190-\224\169\130" .. -- U+0A3E-U+0A42
"\224\169\135" .. -- U+0A47
"\224\169\136" .. -- U+0A48
"\224\169\139-\224\169\141" .. -- U+0A4B-U+0A4D
"\224\169\145" .. -- U+0A51
"\224\169\176" .. -- U+0A70
"\224\169\177" .. -- U+0A71
"\224\169\181" .. -- U+0A75
"\224\170\129-\224\170\131" .. -- U+0A81-U+0A83
"\224\170\188" .. -- U+0ABC
"\224\170\190-\224\171\133" .. -- U+0ABE-U+0AC5
"\224\171\135-\224\171\137" .. -- U+0AC7-U+0AC9
"\224\171\139-\224\171\141" .. -- U+0ACB-U+0ACD
"\224\171\162" .. -- U+0AE2
"\224\171\163" .. -- U+0AE3
"\224\171\186-\224\171\191" .. -- U+0AFA-U+0AFF
"\224\172\129-\224\172\131" .. -- U+0B01-U+0B03
"\224\172\188" .. -- U+0B3C
"\224\172\190-\224\173\132" .. -- U+0B3E-U+0B44
"\224\173\135" .. -- U+0B47
"\224\173\136" .. -- U+0B48
"\224\173\139-\224\173\141" .. -- U+0B4B-U+0B4D
"\224\173\149-\224\173\151" .. -- U+0B55-U+0B57
"\224\173\162" .. -- U+0B62
"\224\173\163" .. -- U+0B63
"\224\174\130" .. -- U+0B82
"\224\174\190-\224\175\130" .. -- U+0BBE-U+0BC2
"\224\175\134-\224\175\136" .. -- U+0BC6-U+0BC8
"\224\175\138-\224\175\141" .. -- U+0BCA-U+0BCD
"\224\175\151" .. -- U+0BD7
"\224\176\128-\224\176\132" .. -- U+0C00-U+0C04
"\224\176\188" .. -- U+0C3C
"\224\176\190-\224\177\132" .. -- U+0C3E-U+0C44
"\224\177\134-\224\177\136" .. -- U+0C46-U+0C48
"\224\177\138-\224\177\141" .. -- U+0C4A-U+0C4D
"\224\177\149" .. -- U+0C55
"\224\177\150" .. -- U+0C56
"\224\177\162" .. -- U+0C62
"\224\177\163" .. -- U+0C63
"\224\178\129-\224\178\131" .. -- U+0C81-U+0C83
"\224\178\188" .. -- U+0CBC
"\224\178\190-\224\179\132" .. -- U+0CBE-U+0CC4
"\224\179\134-\224\179\136" .. -- U+0CC6-U+0CC8
"\224\179\138-\224\179\141" .. -- U+0CCA-U+0CCD
"\224\179\149" .. -- U+0CD5
"\224\179\150" .. -- U+0CD6
"\224\179\162" .. -- U+0CE2
"\224\179\163" .. -- U+0CE3
"\224\179\179" .. -- U+0CF3
"\224\180\128-\224\180\131" .. -- U+0D00-U+0D03
"\224\180\187" .. -- U+0D3B
"\224\180\188" .. -- U+0D3C
"\224\180\190-\224\181\132" .. -- U+0D3E-U+0D44
"\224\181\134-\224\181\136" .. -- U+0D46-U+0D48
"\224\181\138-\224\181\141" .. -- U+0D4A-U+0D4D
"\224\181\151" .. -- U+0D57
"\224\181\162" .. -- U+0D62
"\224\181\163" .. -- U+0D63
"\224\182\129-\224\182\131" .. -- U+0D81-U+0D83
"\224\183\138" .. -- U+0DCA
"\224\183\143-\224\183\148" .. -- U+0DCF-U+0DD4
"\224\183\150" .. -- U+0DD6
"\224\183\152-\224\183\159" .. -- U+0DD8-U+0DDF
"\224\183\178" .. -- U+0DF2
"\224\183\179" .. -- U+0DF3
"\224\184\177" .. -- U+0E31
"\224\184\180-\224\184\186" .. -- U+0E34-U+0E3A
"\224\185\135-\224\185\142" .. -- U+0E47-U+0E4E
"\224\186\177" .. -- U+0EB1
"\224\186\180-\224\186\188" .. -- U+0EB4-U+0EBC
"\224\187\136-\224\187\142" .. -- U+0EC8-U+0ECE
"\224\188\152" .. -- U+0F18
"\224\188\153" .. -- U+0F19
"\224\188\181" .. -- U+0F35
"\224\188\183" .. -- U+0F37
"\224\188\185" .. -- U+0F39
"\224\188\190" .. -- U+0F3E
"\224\188\191" .. -- U+0F3F
"\224\189\177-\224\190\132" .. -- U+0F71-U+0F84
"\224\190\134" .. -- U+0F86
"\224\190\135" .. -- U+0F87
"\224\190\141-\224\190\151" .. -- U+0F8D-U+0F97
"\224\190\153-\224\190\188" .. -- U+0F99-U+0FBC
"\224\191\134" .. -- U+0FC6
"\225\128\171-\225\128\190" .. -- U+102B-U+103E
"\225\129\150-\225\129\153" .. -- U+1056-U+1059
"\225\129\158-\225\129\160" .. -- U+105E-U+1060
"\225\129\162-\225\129\164" .. -- U+1062-U+1064
"\225\129\167-\225\129\173" .. -- U+1067-U+106D
"\225\129\177-\225\129\180" .. -- U+1071-U+1074
"\225\130\130-\225\130\141" .. -- U+1082-U+108D
"\225\130\143" .. -- U+108F
"\225\130\154-\225\130\157" .. -- U+109A-U+109D
"\225\141\157-\225\141\159" .. -- U+135D-U+135F
"\225\156\146-\225\156\149" .. -- U+1712-U+1715
"\225\156\178-\225\156\180" .. -- U+1732-U+1734
"\225\157\146" .. -- U+1752
"\225\157\147" .. -- U+1753
"\225\157\178" .. -- U+1772
"\225\157\179" .. -- U+1773
"\225\158\180-\225\159\147") .. -- U+17B4-U+17D3
("\225\159\157" .. -- U+17DD
"\225\162\133" .. -- U+1885
"\225\162\134" .. -- U+1886
"\225\162\169" .. -- U+18A9
"\225\164\160-\225\164\171" .. -- U+1920-U+192B
"\225\164\176-\225\164\187" .. -- U+1930-U+193B
"\225\168\151-\225\168\155" .. -- U+1A17-U+1A1B
"\225\169\149-\225\169\158" .. -- U+1A55-U+1A5E
"\225\169\160-\225\169\188" .. -- U+1A60-U+1A7C
"\225\169\191" .. -- U+1A7F
"\225\170\176-\225\171\142" .. -- U+1AB0-U+1ACE
"\225\172\128-\225\172\132" .. -- U+1B00-U+1B04
"\225\172\180-\225\173\132" .. -- U+1B34-U+1B44
"\225\173\171-\225\173\179" .. -- U+1B6B-U+1B73
"\225\174\128-\225\174\130" .. -- U+1B80-U+1B82
"\225\174\161-\225\174\173" .. -- U+1BA1-U+1BAD
"\225\175\166-\225\175\179" .. -- U+1BE6-U+1BF3
"\225\176\164-\225\176\183" .. -- U+1C24-U+1C37
"\225\179\144-\225\179\146" .. -- U+1CD0-U+1CD2
"\225\179\148-\225\179\168" .. -- U+1CD4-U+1CE8
"\225\179\173" .. -- U+1CED
"\225\179\180" .. -- U+1CF4
"\225\179\183-\225\179\185" .. -- U+1CF7-U+1CF9
"\225\183\128-\225\183\140" .. -- U+1DC0-U+1DCC
"\225\183\142-\225\183\187" .. -- U+1DCE-U+1DFB
"\225\183\189-\225\183\191" .. -- U+1DFD-U+1DFF
"\226\131\144-\226\131\176" .. -- U+20D0-U+20F0
"\226\179\175-\226\179\177" .. -- U+2CEF-U+2CF1
"\226\181\191" .. -- U+2D7F
"\226\183\160-\226\183\191" .. -- U+2DE0-U+2DFF
"\227\128\170-\227\128\175" .. -- U+302A-U+302F
"\227\130\153" .. -- U+3099
"\227\130\154" .. -- U+309A
"\234\153\175-\234\153\178" .. -- U+A66F-U+A672
"\234\153\180-\234\153\189" .. -- U+A674-U+A67D
"\234\154\158" .. -- U+A69E
"\234\154\159" .. -- U+A69F
"\234\155\176" .. -- U+A6F0
"\234\155\177" .. -- U+A6F1
"\234\160\130" .. -- U+A802
"\234\160\134" .. -- U+A806
"\234\160\139" .. -- U+A80B
"\234\160\163-\234\160\167" .. -- U+A823-U+A827
"\234\160\172" .. -- U+A82C
"\234\162\128" .. -- U+A880
"\234\162\129" .. -- U+A881
"\234\162\180-\234\163\133" .. -- U+A8B4-U+A8C5
"\234\163\160-\234\163\177" .. -- U+A8E0-U+A8F1
"\234\163\191" .. -- U+A8FF
"\234\164\166-\234\164\173" .. -- U+A926-U+A92D
"\234\165\135-\234\165\147" .. -- U+A947-U+A953
"\234\166\128-\234\166\131" .. -- U+A980-U+A983
"\234\166\179-\234\167\128" .. -- U+A9B3-U+A9C0
"\234\167\165" .. -- U+A9E5
"\234\168\169-\234\168\182" .. -- U+AA29-U+AA36
"\234\169\131" .. -- U+AA43
"\234\169\140" .. -- U+AA4C
"\234\169\141" .. -- U+AA4D
"\234\169\187-\234\169\189" .. -- U+AA7B-U+AA7D
"\234\170\176" .. -- U+AAB0
"\234\170\178-\234\170\180" .. -- U+AAB2-U+AAB4
"\234\170\183" .. -- U+AAB7
"\234\170\184" .. -- U+AAB8
"\234\170\190" .. -- U+AABE
"\234\170\191" .. -- U+AABF
"\234\171\129" .. -- U+AAC1
"\234\171\171-\234\171\175" .. -- U+AAEB-U+AAEF
"\234\171\181" .. -- U+AAF5
"\234\171\182" .. -- U+AAF6
"\234\175\163-\234\175\170" .. -- U+ABE3-U+ABEA
"\234\175\172" .. -- U+ABEC
"\234\175\173" .. -- U+ABED
"\239\172\158" .. -- U+FB1E
"\239\184\160-\239\184\175" .. -- U+FE20-U+FE2F
"\240\144\135\189" .. -- U+101FD
"\240\144\139\160" .. -- U+102E0
"\240\144\141\182-\240\144\141\186" .. -- U+10376-U+1037A
"\240\144\168\129-\240\144\168\131" .. -- U+10A01-U+10A03
"\240\144\168\133" .. -- U+10A05
"\240\144\168\134" .. -- U+10A06
"\240\144\168\140-\240\144\168\143" .. -- U+10A0C-U+10A0F
"\240\144\168\184-\240\144\168\186" .. -- U+10A38-U+10A3A
"\240\144\168\191" .. -- U+10A3F
"\240\144\171\165" .. -- U+10AE5
"\240\144\171\166" .. -- U+10AE6
"\240\144\180\164-\240\144\180\167" .. -- U+10D24-U+10D27
"\240\144\181\169-\240\144\181\173" .. -- U+10D69-U+10D6D
"\240\144\186\171" .. -- U+10EAB
"\240\144\186\172" .. -- U+10EAC
"\240\144\187\188-\240\144\187\191" .. -- U+10EFC-U+10EFF
"\240\144\189\134-\240\144\189\144" .. -- U+10F46-U+10F50
"\240\144\190\130-\240\144\190\133" .. -- U+10F82-U+10F85
"\240\145\128\128-\240\145\128\130" .. -- U+11000-U+11002
"\240\145\128\184-\240\145\129\134" .. -- U+11038-U+11046
"\240\145\129\176" .. -- U+11070
"\240\145\129\179" .. -- U+11073
"\240\145\129\180" .. -- U+11074
"\240\145\129\191-\240\145\130\130" .. -- U+1107F-U+11082
"\240\145\130\176-\240\145\130\186" .. -- U+110B0-U+110BA
"\240\145\131\130" .. -- U+110C2
"\240\145\132\128-\240\145\132\130" .. -- U+11100-U+11102
"\240\145\132\167-\240\145\132\180" .. -- U+11127-U+11134
"\240\145\133\133" .. -- U+11145
"\240\145\133\134" .. -- U+11146
"\240\145\133\179" .. -- U+11173
"\240\145\134\128-\240\145\134\130" .. -- U+11180-U+11182
"\240\145\134\179-\240\145\135\128" .. -- U+111B3-U+111C0
"\240\145\135\137-\240\145\135\140" .. -- U+111C9-U+111CC
"\240\145\135\142" .. -- U+111CE
"\240\145\135\143" .. -- U+111CF
"\240\145\136\172-\240\145\136\183" .. -- U+1122C-U+11237
"\240\145\136\190" .. -- U+1123E
"\240\145\137\129" .. -- U+11241
"\240\145\139\159-\240\145\139\170" .. -- U+112DF-U+112EA
"\240\145\140\128-\240\145\140\131" .. -- U+11300-U+11303
"\240\145\140\187" .. -- U+1133B
"\240\145\140\188" .. -- U+1133C
"\240\145\140\190-\240\145\141\132" .. -- U+1133E-U+11344
"\240\145\141\135" .. -- U+11347
"\240\145\141\136" .. -- U+11348
"\240\145\141\139-\240\145\141\141" .. -- U+1134B-U+1134D
"\240\145\141\151" .. -- U+11357
"\240\145\141\162" .. -- U+11362
"\240\145\141\163" .. -- U+11363
"\240\145\141\166-\240\145\141\172" .. -- U+11366-U+1136C
"\240\145\141\176-\240\145\141\180" .. -- U+11370-U+11374
"\240\145\142\184-\240\145\143\128" .. -- U+113B8-U+113C0
"\240\145\143\130" .. -- U+113C2
"\240\145\143\133" .. -- U+113C5
"\240\145\143\135-\240\145\143\138" .. -- U+113C7-U+113CA
"\240\145\143\140-\240\145\143\144" .. -- U+113CC-U+113D0
"\240\145\143\146" .. -- U+113D2
"\240\145\143\161" .. -- U+113E1
"\240\145\143\162" .. -- U+113E2
"\240\145\144\181-\240\145\145\134" .. -- U+11435-U+11446
"\240\145\145\158" .. -- U+1145E
"\240\145\146\176-\240\145\147\131" .. -- U+114B0-U+114C3
"\240\145\150\175-\240\145\150\181" .. -- U+115AF-U+115B5
"\240\145\150\184-\240\145\151\128" .. -- U+115B8-U+115C0
"\240\145\151\156" .. -- U+115DC
"\240\145\151\157" .. -- U+115DD
"\240\145\152\176-\240\145\153\128" .. -- U+11630-U+11640
"\240\145\154\171-\240\145\154\183" .. -- U+116AB-U+116B7
"\240\145\156\157-\240\145\156\171" .. -- U+1171D-U+1172B
"\240\145\160\172-\240\145\160\186" .. -- U+1182C-U+1183A
"\240\145\164\176-\240\145\164\181" .. -- U+11930-U+11935
"\240\145\164\183" .. -- U+11937
"\240\145\164\184" .. -- U+11938
"\240\145\164\187-\240\145\164\190" .. -- U+1193B-U+1193E
"\240\145\165\128") .. -- U+11940
("\240\145\165\130" .. -- U+11942
"\240\145\165\131" .. -- U+11943
"\240\145\167\145-\240\145\167\151" .. -- U+119D1-U+119D7
"\240\145\167\154-\240\145\167\160" .. -- U+119DA-U+119E0
"\240\145\167\164" .. -- U+119E4
"\240\145\168\129-\240\145\168\138" .. -- U+11A01-U+11A0A
"\240\145\168\179-\240\145\168\185" .. -- U+11A33-U+11A39
"\240\145\168\187-\240\145\168\190" .. -- U+11A3B-U+11A3E
"\240\145\169\135" .. -- U+11A47
"\240\145\169\145-\240\145\169\155" .. -- U+11A51-U+11A5B
"\240\145\170\138-\240\145\170\153" .. -- U+11A8A-U+11A99
"\240\145\176\175-\240\145\176\182" .. -- U+11C2F-U+11C36
"\240\145\176\184-\240\145\176\191" .. -- U+11C38-U+11C3F
"\240\145\178\146-\240\145\178\167" .. -- U+11C92-U+11CA7
"\240\145\178\169-\240\145\178\182" .. -- U+11CA9-U+11CB6
"\240\145\180\177-\240\145\180\182" .. -- U+11D31-U+11D36
"\240\145\180\186" .. -- U+11D3A
"\240\145\180\188" .. -- U+11D3C
"\240\145\180\189" .. -- U+11D3D
"\240\145\180\191-\240\145\181\133" .. -- U+11D3F-U+11D45
"\240\145\181\135" .. -- U+11D47
"\240\145\182\138-\240\145\182\142" .. -- U+11D8A-U+11D8E
"\240\145\182\144" .. -- U+11D90
"\240\145\182\145" .. -- U+11D91
"\240\145\182\147-\240\145\182\151" .. -- U+11D93-U+11D97
"\240\145\187\179-\240\145\187\182" .. -- U+11EF3-U+11EF6
"\240\145\188\128" .. -- U+11F00
"\240\145\188\129" .. -- U+11F01
"\240\145\188\131" .. -- U+11F03
"\240\145\188\180-\240\145\188\186" .. -- U+11F34-U+11F3A
"\240\145\188\190-\240\145\189\130" .. -- U+11F3E-U+11F42
"\240\145\189\154" .. -- U+11F5A
"\240\147\145\128" .. -- U+13440
"\240\147\145\135-\240\147\145\149" .. -- U+13447-U+13455
"\240\150\132\158-\240\150\132\175" .. -- U+1611E-U+1612F
"\240\150\171\176-\240\150\171\180" .. -- U+16AF0-U+16AF4
"\240\150\172\176-\240\150\172\182" .. -- U+16B30-U+16B36
"\240\150\189\143" .. -- U+16F4F
"\240\150\189\145-\240\150\190\135" .. -- U+16F51-U+16F87
"\240\150\190\143-\240\150\190\146" .. -- U+16F8F-U+16F92
"\240\150\191\164" .. -- U+16FE4
"\240\150\191\176" .. -- U+16FF0
"\240\150\191\177" .. -- U+16FF1
"\240\155\178\157" .. -- U+1BC9D
"\240\155\178\158" .. -- U+1BC9E
"\240\156\188\128-\240\156\188\173" .. -- U+1CF00-U+1CF2D
"\240\156\188\176-\240\156\189\134" .. -- U+1CF30-U+1CF46
"\240\157\133\165-\240\157\133\169" .. -- U+1D165-U+1D169
"\240\157\133\173-\240\157\133\178" .. -- U+1D16D-U+1D172
"\240\157\133\187-\240\157\134\130" .. -- U+1D17B-U+1D182
"\240\157\134\133-\240\157\134\139" .. -- U+1D185-U+1D18B
"\240\157\134\170-\240\157\134\173" .. -- U+1D1AA-U+1D1AD
"\240\157\137\130-\240\157\137\132" .. -- U+1D242-U+1D244
"\240\157\168\128-\240\157\168\182" .. -- U+1DA00-U+1DA36
"\240\157\168\187-\240\157\169\172" .. -- U+1DA3B-U+1DA6C
"\240\157\169\181" .. -- U+1DA75
"\240\157\170\132" .. -- U+1DA84
"\240\157\170\155-\240\157\170\159" .. -- U+1DA9B-U+1DA9F
"\240\157\170\161-\240\157\170\175" .. -- U+1DAA1-U+1DAAF
"\240\158\128\128-\240\158\128\134" .. -- U+1E000-U+1E006
"\240\158\128\136-\240\158\128\152" .. -- U+1E008-U+1E018
"\240\158\128\155-\240\158\128\161" .. -- U+1E01B-U+1E021
"\240\158\128\163" .. -- U+1E023
"\240\158\128\164" .. -- U+1E024
"\240\158\128\166-\240\158\128\170" .. -- U+1E026-U+1E02A
"\240\158\130\143" .. -- U+1E08F
"\240\158\132\176-\240\158\132\182" .. -- U+1E130-U+1E136
"\240\158\138\174" .. -- U+1E2AE
"\240\158\139\172-\240\158\139\175" .. -- U+1E2EC-U+1E2EF
"\240\158\147\172-\240\158\147\175" .. -- U+1E4EC-U+1E4EF
"\240\158\151\174" .. -- U+1E5EE
"\240\158\151\175" .. -- U+1E5EF
"\240\158\163\144-\240\158\163\150" .. -- U+1E8D0-U+1E8D6
"\240\158\165\132-\240\158\165\138") -- U+1E944-U+1E94A
-- Double combining characters.
-- Charset: [[:M:]&[:Canonical_Combining_Class=/^Double_/:]&[:^subhead=Grapheme joiner:]&[:^Variation_Selector=Yes:]]
local comb_chars_double =
"\205\156-\205\162" .. -- U+035C-U+0362
"\225\183\141" .. -- U+1DCD
"\225\183\188" -- U+1DFC
-- Variation selectors etc.; separated out so that we don't get categories for them.
-- Charset: [[:M:]&[[:subhead=Grapheme joiner:][:Variation_Selector=Yes:]]].
local comb_chars_other =
"\205\143" .. -- U+034F
"\225\160\139-\225\160\141" .. -- U+180B-U+180D
"\225\160\143" .. -- U+180F
"\239\184\128-\239\184\143" .. -- U+FE00-U+FE0F
"\243\160\132\128-\243\160\135\175" -- U+E0100-U+E01EF
local comb_chars_all = comb_chars_single .. comb_chars_double .. comb_chars_other
local comb_chars = {
combined_single = "[^" .. comb_chars_all .. "][" .. comb_chars_single .. comb_chars_other .. "]+%f[^" .. comb_chars_all .. "]",
combined_double = "[^" .. comb_chars_all .. "][" .. comb_chars_single .. comb_chars_other .. "]*[" .. comb_chars_double .. "]+[" .. comb_chars_all .. "]*.[" .. comb_chars_single .. comb_chars_other .. "]*",
diacritics_single = "[" .. comb_chars_single .. "]",
diacritics_double = "[" .. comb_chars_double .. "]",
diacritics_all = "[" .. comb_chars_all .. "]"
}
-- Somewhat curated list from https://unicode.org/Public/emoji/16.0/emoji-sequences.txt.
-- NOTE: There are lots more emoji sequences involving non-emoji Plane 0 symbols followed by 0xFE0F, which we don't
-- (yet?) handle.
local emoji_chars =
"\226\140\154" .. -- U+231A (⌚)
"\226\140\155" .. -- U+231B (⌛)
"\226\140\168" .. -- U+2328 (⌨)
"\226\143\143" .. -- U+23CF (⏏)
"\226\143\169-\226\143\179" .. -- U+23E9-U+23F3 (⏩-⏳)
"\226\143\184-\226\143\186" .. -- U+23F8-U+23FA (⏸-⏺)
"\226\150\170" .. -- U+25AA (▪)
"\226\150\171" .. -- U+25AB (▫)
"\226\150\182" .. -- U+25B6 (▶)
"\226\151\128" .. -- U+25C0 (◀)
"\226\151\187-\226\151\190" .. -- U+25FB-U+25FE (◻-◾)
"\226\152\128-\226\152\132" .. -- U+2600-U+2604 (☀-☄)
"\226\152\142" .. -- U+260E (☎)
"\226\152\145" .. -- U+2611 (☑)
"\226\152\148" .. -- U+2614 (☔)
"\226\152\149" .. -- U+2615 (☕)
"\226\152\152" .. -- U+2618 (☘)
"\226\152\157" .. -- U+261D (☝)
"\226\152\160" .. -- U+2620 (☠)
"\226\152\162" .. -- U+2622 (☢)
"\226\152\163" .. -- U+2623 (☣)
"\226\152\166" .. -- U+2626 (☦)
"\226\152\170" .. -- U+262A (☪)
"\226\152\174" .. -- U+262E (☮)
"\226\152\175" .. -- U+262F (☯)
"\226\152\184-\226\152\186" .. -- U+2638-U+263A (☸-☺)
"\226\153\136-\226\153\147" .. -- U+2648-U+2653 (♈-♓)
"\226\153\159" .. -- U+265F (♟)
"\226\153\160" .. -- U+2660 (♠)
"\226\153\163" .. -- U+2663 (♣)
"\226\153\165" .. -- U+2665 (♥)
"\226\153\166" .. -- U+2666 (♦)
"\226\153\168" .. -- U+2668 (♨)
"\226\153\187" .. -- U+267B (♻)
"\226\153\190" .. -- U+267E (♾)
"\226\153\191" .. -- U+267F (♿)
"\226\154\146-\226\154\151" .. -- U+2692-U+2697 (⚒-⚗)
"\226\154\153" .. -- U+2699 (⚙)
"\226\154\155" .. -- U+269B (⚛)
"\226\154\156" .. -- U+269C (⚜)
"\226\154\160" .. -- U+26A0 (⚠)
"\226\154\161" .. -- U+26A1 (⚡)
"\226\154\170" .. -- U+26AA (⚪)
"\226\154\171" .. -- U+26AB (⚫)
"\226\154\176" .. -- U+26B0 (⚰)
"\226\154\177" .. -- U+26B1 (⚱)
"\226\154\189" .. -- U+26BD (⚽)
"\226\154\190" .. -- U+26BE (⚾)
"\226\155\132" .. -- U+26C4 (⛄)
"\226\155\133" .. -- U+26C5 (⛅)
"\226\155\136" .. -- U+26C8 (⛈)
"\226\155\142" .. -- U+26CE (⛎)
"\226\155\143" .. -- U+26CF (⛏)
"\226\155\145" .. -- U+26D1 (⛑)
"\226\155\147" .. -- U+26D3 (⛓)
"\226\155\148" .. -- U+26D4 (⛔)
"\226\155\169" .. -- U+26E9 (⛩)
"\226\155\170" .. -- U+26EA (⛪)
"\226\155\176-\226\155\181" .. -- U+26F0-U+26F5 (⛰-⛵)
"\226\155\183-\226\155\186" .. -- U+26F7-U+26FA (⛷-⛺)
"\226\155\189" .. -- U+26FD (⛽)
"\226\156\130" .. -- U+2702 (✂)
"\226\156\133" .. -- U+2705 (✅)
"\226\156\136-\226\156\141" .. -- U+2708-U+270D (✈-✍)
"\226\156\143" .. -- U+270F (✏)
"\226\156\146" .. -- U+2712 (✒)
"\226\156\148" .. -- U+2714 (✔)
"\226\156\150" .. -- U+2716 (✖)
"\226\156\157" .. -- U+271D (✝)
"\226\156\161" .. -- U+2721 (✡)
"\226\156\168" .. -- U+2728 (✨)
"\226\156\179" .. -- U+2733 (✳)
"\226\156\180" .. -- U+2734 (✴)
"\226\157\132" .. -- U+2744 (❄)
"\226\157\135" .. -- U+2747 (❇)
"\226\157\140" .. -- U+274C (❌)
"\226\157\142" .. -- U+274E (❎)
"\226\157\147-\226\157\149" .. -- U+2753-U+2755 (❓-❕)
"\226\157\151" .. -- U+2757 (❗)
"\226\157\163" .. -- U+2763 (❣)
"\226\157\164" .. -- U+2764 (❤)
"\226\158\149-\226\158\151" .. -- U+2795-U+2797 (➕-➗)
"\226\158\161" .. -- U+27A1 (➡)
"\226\158\176" .. -- U+27B0 (➰)
"\226\158\191" .. -- U+27BF (➿)
"\226\164\180" .. -- U+2934 (⤴)
"\226\164\181" .. -- U+2935 (⤵)
"\226\172\133-\226\172\135" .. -- U+2B05-U+2B07 (⬅-⬇)
"\226\172\155" .. -- U+2B1B (⬛)
"\226\172\156" .. -- U+2B1C (⬜)
"\226\173\144" .. -- U+2B50 (⭐)
"\226\173\149" .. -- U+2B55 (⭕)
"\227\128\176" .. -- U+3030 (〰)
"\227\128\189" .. -- U+303D (〽)
"\227\138\151" .. -- U+3297 (㊗)
"\227\138\153" .. -- U+3299 (㊙)
"\240\159\128\132" .. -- U+1F004 (🀄)
"\240\159\131\143" .. -- U+1F0CF (🃏)
"\240\159\133\176" .. -- U+1F170 (🅰)
"\240\159\133\177" .. -- U+1F171 (🅱)
"\240\159\133\190" .. -- U+1F17E (🅾)
"\240\159\133\191" .. -- U+1F17F (🅿)
"\240\159\134\142" .. -- U+1F18E (🆎)
"\240\159\134\145-\240\159\134\154" .. -- U+1F191-U+1F19A (🆑-🆚)
"\240\159\136\129" .. -- U+1F201 (🈁)
"\240\159\136\130" .. -- U+1F202 (🈂)
"\240\159\136\154" .. -- U+1F21A (🈚)
"\240\159\136\175" .. -- U+1F22F (🈯)
"\240\159\136\178-\240\159\136\186" .. -- U+1F232-U+1F23A (🈲-🈺)
"\240\159\137\144" .. -- U+1F250 (🉐)
"\240\159\137\145" .. -- U+1F251 (🉑)
"\240\159\140\128-\240\159\153\143" .. -- U+1F300-U+1F64F (🌀-🙏)
"\240\159\154\128-\240\159\155\151" .. -- U+1F680-U+1F6D7 (🚀-🛗)
"\240\159\155\156-\240\159\155\172" .. -- U+1F6DC-U+1F6EC (🛜-🛬)
"\240\159\155\176-\240\159\155\188" .. -- U+1F6F0-U+1F6FC (🛰-🛼)
"\240\159\159\160-\240\159\159\171" .. -- U+1F7E0-U+1F7EB (🟠-🟫)
"\240\159\159\176" .. -- U+1F7F0 (🟰)
"\240\159\164\140-\240\159\169\147" .. -- U+1F90C-U+1FA53 (🤌-🩓)
"\240\159\169\160-\240\159\169\173" .. -- U+1FA60-U+1FA6D (🩠-🩭)
"\240\159\169\176-\240\159\169\188" .. -- U+1FA70-U+1FA7C (🩰-🩼)
"\240\159\170\128-\240\159\170\137" .. -- U+1FA80-U+1FA89 (🪀-)
"\240\159\170\143-\240\159\171\134" .. -- U+1FA8F-U+1FAC6 (-)
"\240\159\171\142-\240\159\171\156" .. -- U+1FACE-U+1FADC (🫎-)
"\240\159\171\159-\240\159\171\169" .. -- U+1FADF-U+1FAE9 (-)
"\240\159\171\176-\240\159\171\184" -- U+1FAF0-U+1FAF8 (🫰-🫸)
local unsupported_characters
local function get_unsupported_characters()
unsupported_characters, get_unsupported_characters = {}, nil
for k, v in pairs(load_data("Module:links/data").unsupported_characters) do
unsupported_characters[v] = k
end
return unsupported_characters
end
-- The list of unsupported titles and invert it (so the keys are pagenames and values are canonical titles).
local unsupported_titles
local function get_unsupported_titles()
unsupported_titles, get_unsupported_titles = {}, nil
for k, v in pairs(load_data("Module:links/data").unsupported_titles) do
unsupported_titles[v] = k
end
return unsupported_titles
end
-- To save on memory, we only cache names with either non-ASCII characters in them or ASCII characters to be removed or
-- transformed (apostrophe, double quote, hyphen).
local L2_sort_key_cache = {}
function export.get_L2_sort_key(L2)
if L2 == "Translingual" then
return "\1"
elseif L2 == "English" then
return "\2"
elseif match(L2, "^[%z\1-\b\14-!#-&(-,.-\127]+$") then
return L2
end
local sort_key = L2_sort_key_cache[L2]
if sort_key then
return sort_key
end
sort_key = toNFC(ugsub(ugsub(toNFD(L2), "[" .. comb_chars_all .. "'\"ʻʼ]+", ""), "[%s%-]+", " "))
L2_sort_key_cache[L2] = sort_key
return sort_key
end
--[==[
Given a pagename (or {nil} for the current page), create and return a data structure describing the page. The returned
object includes the following fields:
* `comb_chars`: A table containing various Lua character class patterns for different types of combined characters
(those that decompose into multiple characters in the NFD decomposition). The patterns are meant to be used with
{mw.ustring.find()}. The keys are:
** `single`: Single combining characters (character + diacritic), without surrounding brackets;
** `double`: Double combining characters (character + diacritic + character), without surrounding brackets;
** `vs`: Variation selectors, without surrounding brackets;
** `all`: Concatenation of `single` + `double` + `vs`, without surrounding brackets;
** `diacritics_single`: Like `single` but with surrounding brackets;
** `diacritics_double`: Like `double` but with surrounding brackets;
** `diacritics_all`: Like `all` but with surrounding brackets;
** `combined_single`: Lua pattern for matching a spacing character followed by one or more single combining characters;
** `combined_double`: Lua pattern for matching a combination of two spacing characters separated by one or more double
combining characters, possibly also with single combining characters;
* `emoji_pattern`: A Lua character class pattern (including surrounding brackets) that matches emojis. Meant to be used
with {mw.ustring.find()}.
* `L2_list`: Ordered list of L2 headings on the page, with the extra key `n` that gives the length of the list.
* `L2_sections`: Lookup table of L2 headings on the page, where the key is the section number assigned by the preprocessor, and the value is the L2 heading name. Once an invocation has got its actual section number from get_current_L2 in [[Module:pages]], it can use this table to determine its parent L2. TODO: We could expand this to include subsections, to check POS headings are correct etc.
* `unsupported_titles`: Map from pagenames to canonical titles for unsupported-title pages.
* `namespace`: Namespace of the pagename.
* `ns`: Namespace table for the page from mw.site.namespaces (TODO: merge with `namespace` above).
* `full_raw_pagename`: Full version of the '''RAW''' pagename (i.e. unsupported-title pages aren't canonicalized);
including the namespace and the base (portion before the slash).
* `pagename`: Canonicalized subpage portion of the pagename (unsupported-title pages are canonicalized).
* `pagename_with_base`: Same as `pagename` in the main namespace; otherwise, the whole pagename without the namespace.
* `decompose_pagename`: Equivalent of `pagename` in NFD decomposition.
* `pagename_len`: Length of `pagename` in Unicode chars, where combinations of spacing character + decomposed diacritic
are treated as single characters.
* `explode_pagename`: Set of characters found in `pagename`. The keys are characters (where combinations of spacing
character + decomposed diacritic are treated as single characters).
* `encoded_pagename`: FIXME: Document me.
* `pagename_defaultsort`: FIXME: Document me.
* `raw_defaultsort`: FIXME: Document me.
* `wikitext_topic_cat`: FIXME: Document me.
* `wikitext_langname_cat`: FIXME: Document me.
`no_fetch_content` says to not fetch and parse the content or set a DEFAULTSORT sort key, in order to save time on
test and documentation pages that have lots of template invocations that set `|pagename=`. It turns out nearly all the
time of this function is contained in the line `frame:callParserFunction("DEFAULTSORT", data.pagename_defaultsort)`,
so we skip it on test and documentation pages where it accomplishes nothing in any case.
]==]
function export.process_page(pagename, no_fetch_content)
local data = {
comb_chars = comb_chars,
emoji_pattern = "[" .. emoji_chars .. "]",
unsupported_titles = unsupported_titles or get_unsupported_titles()
}
local cats = {}
data.cats = cats
-- We cannot store `raw_title` in `data` because it contains a metatable.
local raw_title
local function bad_pagename()
if not pagename then
error("Internal error: Something wrong, `data.pagename` not specified but current title contains illegal characters")
else
error(format("Bad value for `data.pagename`: '%s', which must not contain illegal characters", pagename))
end
end
if pagename then -- for testing, doc pages, etc.
raw_title = new_title(pagename)
if not raw_title then
bad_pagename()
end
else
raw_title = mw.title.getCurrentTitle()
end
local nsText = raw_title.nsText
local namespace_is_reconstruction = nsText == "Reconstruction"
data.namespace = nsText
data.ns = mw.site.namespaces[raw_title.namespace]
local full_raw_pagename = raw_title.fullText
data.full_raw_pagename = full_raw_pagename
local frame = mw.getCurrentFrame()
-- WARNING: `content` may be nil, e.g. if we're substing a template like {{ja-new}} on a not-yet-created page
-- or if the module specifies the subpage as `data.pagename` (which many modules do) and we're in an Appendix
-- or other non-mainspace page. We used to make the latter an error but there are too many modules that do it,
-- and substing on a nonexistent page is totally legit, and we don't actually need to be able to access the
-- content of the page.
local content = not no_fetch_content and raw_title:getContent() or nil
-- Get the pagename.
pagename = physical_to_logical_pagename_if_mammoth(raw_title)
pagename = gsub(pagename, "^Unsupported titles/(.+)", function(m)
insert(cats, "Unsupported titles")
local title = (unsupported_titles or get_unsupported_titles())[m]
if title then
return title
end
-- Substitute pairs of "`". Those not used for escaping should be escaped as "`grave`", but might not be,
-- so if a pair don't form a match, the closing "`" should become the opening "`" of the next match attempt.
-- This has to be done manually, instead of using gsub.
local open_pos = find(m, "`")
if not open_pos then
return m
end
title = {sub(m, 1, open_pos - 1)}
while true do
local close_pos = find(m, "`", open_pos + 1)
if not close_pos then
-- Add "`" plus any remaining characters.
insert(title, sub(m, open_pos))
break
end
local escape = sub(m, open_pos, close_pos)
local ch = (unsupported_characters or get_unsupported_characters())[escape]
-- Match found, so substitute the character and move to the first "`" after the match if found, or
-- otherwise return.
if ch then
insert(title, ch)
local nxt_pos = close_pos + 1
open_pos = find(m, "`", nxt_pos)
-- Add any characters between the match and the next "`" or end.
if open_pos then
insert(title, sub(m, nxt_pos, open_pos - 1))
else
insert(title, sub(m, nxt_pos))
break
end
-- Match not found, so make the closing "`" the opening "`" of the next attempt.
else
-- Add the failed match, except for the closing "`".
insert(title, sub(m, open_pos, close_pos - 1))
open_pos = close_pos
end
end
return concat(title)
end)
-- Save pagename, as the local variable will be destructively modified.
data.pagename = pagename
if nsText == "" then
data.pagename_with_base = pagename
else
data.pagename_with_base = raw_title.text
end
-- Decompose the pagename in Unicode normalization form D.
data.decompose_pagename = toNFD(pagename)
-- Explode the current page name into a character table, taking decomposed combining characters into account.
local explode_pagename = {}
local pagename_len = 0
local function explode(char)
explode_pagename[char] = true
pagename_len = pagename_len + 1
return ""
end
pagename = ugsub(pagename, comb_chars.combined_double, explode)
pagename = gsub(ugsub(pagename, comb_chars.combined_single, explode), ".[\128-\191]*", explode)
data.explode_pagename = explode_pagename
data.pagename_len = pagename_len
-- Generate DEFAULTSORT.
data.encoded_pagename = encode_entities(data.pagename)
data.pagename_defaultsort = get_lang("mul"):makeSortKey(data.encoded_pagename)
if not no_fetch_content then
frame:callParserFunction("DEFAULTSORT", data.pagename_defaultsort)
end
data.raw_defaultsort = uupper(raw_title.text)
-- Make `L2_list` and `L2_sections`, note raw wikitext use of {{DEFAULTSORT:}} and {{DISPLAYTITLE:}}, then add categories if any unwanted L1 headings are found, the L2 headings are in the wrong order, or they don't match a canonical language name.
-- Note: HTML comments shouldn't be removed from `content` until after this step, as they can affect the result.
do
local L2_list, L2_list_len, L2_sections = {}, 0, {}
local prev, rc
local new_cats, L2_wrong_order = {}
local function handle_heading(heading)
local level = heading.level
if level > 2 then
return
end
local name = heading:get_name()
-- heading:get_name() will return nil if there are any newline characters in the preprocessed heading name (e.g. from an expanded template). In such cases, the preprocessor section count still increments (since it's calculated pre-expansion), but the heading will fail, so the L2 count shouldn't be incremented.
if name == nil then
return
end
L2_list_len = L2_list_len + 1
L2_list[L2_list_len] = name
L2_sections[heading.section] = name
-- Also add any L1s, since they terminate the preceding L2, but add a maintenance category since it's probably a mistake.
if level == 1 then
new_cats["Pages with unwanted L1 headings"] = true
end
-- Check the heading is in the right order.
-- FIXME: we need a more sophisticated sorting method which handles non-diacritic special characters (e.g. Magɨ).
if prev and not (
L2_wrong_order or
string_compare(export.get_L2_sort_key(prev), export.get_L2_sort_key(name))
) then
new_cats["Pages with language headings in the wrong order"] = true
L2_wrong_order = true
end
-- Check it's a canonical language name.
if not (langnames or get_langnames())[name] then
new_cats["Pages with nonstandard language headings"] = true
end
prev = name
end
local function handle_template(template)
-- Turn off redirect checking except in the Reconstruction namespace because the rc flag is only
-- used in the Reconstruction namespace and the other names are parser functions, which AFAIK can't
-- be redirected to.
local name = template:get_name(nil, not namespace_is_reconstruction and "no_redirect" or nil)
if name == "DEFAULTSORT:" then
new_cats["Pages with DEFAULTSORT conflicts"] = true
elseif name == "DISPLAYTITLE:" then
new_cats["Pages with DISPLAYTITLE conflicts"] = true
elseif name == "reconstructed" then
rc = true
end
end
if content then
for node in parse(content):iterate_nodes() do
local node_class = class_else_type(node)
if node_class == "heading" then
handle_heading(node)
elseif node_class == "template" then
handle_template(node)
elseif node_class == "parameter" then
new_cats["Pages with raw triple-brace template parameters"] = true
end
end
end
L2_list.n = L2_list_len
data.L2_list = L2_list
data.L2_sections = L2_sections
insert(cats, get_category("Pages with entries"))
insert(cats, get_category(format("Pages with %s entr%s", L2_list_len, L2_list_len == 1 and "y" or "ies")))
for cat in pairs(new_cats) do
insert(cats, get_category(cat))
end
if namespace_is_reconstruction and not rc then
local langname = match(full_raw_pagename, "^Reconstruction:([^/]+)/.")
if langname then
insert(cats, get_category(langname .. " entries missing Template:reconstructed"))
end
end
end
------ 4. Parse page for maintenance categories. ------
-- Use of tab characters.
if content and find(content, "\t", 1, true) then
insert(cats, get_category("Pages with tab characters"))
end
-- Unencoded character(s) in title.
local IDS = list_to_set{"⿰", "⿱", "⿲", "⿳", "⿴", "⿵", "⿶", "⿷", "⿸", "⿹", "⿺", "⿻", "", "", "", "", ""}
for char in pairs(explode_pagename) do
if IDS[char] and char ~= data.pagename then
insert(cats, "Terms containing unencoded characters")
break
end
end
-- Raw wikitext use of a topic or langname category. Also check if any raw sortkeys have been used.
do
local wikitext_topic_cat = {}
local wikitext_langname_cat = {}
local raw_sortkey
-- If a raw sortkey has been found, add it to the relevant table.
-- If there's no table (or the index is just `true`), create one first.
local function add_cat_table(t, lang, sortkey)
local t_lang = t[lang]
if not sortkey then
if not t_lang then
t[lang] = true
end
return
elseif t_lang == true or not t_lang then
t_lang = {}
t[lang] = t_lang
end
t_lang[uupper(decode_entities(sortkey))] = true
end
local function process_category(content, cat, colon, nxt)
local pipe = find(cat, "|", colon + 1, true)
-- Categories cannot end "|]]".
if pipe == #cat then
return
end
local title = new_title(pipe and sub(cat, 1, pipe - 1) or cat)
if not (title and title.namespace == 14) then
return
end
-- Get the sortkey (if any), then canonicalize category title.
local sortkey = pipe and sub(cat, pipe + 1) or nil
cat = title.text
if sortkey then
raw_sortkey = true
-- If the sortkey contains "[", the first "]" of a final "]]]" is treated as part of the sortkey.
if find(sortkey, "[", 1, true) and sub(content, nxt, nxt) == "]" then
sortkey = sortkey .. "]"
end
end
local code = match(cat, "^([%w%-.]+):")
if code then
add_cat_table(wikitext_topic_cat, code, sortkey)
return
end
-- Split by word.
cat = split(cat, " ", true, true)
-- Formerly we looked for the language name anywhere in the category. This is simply wrong
-- because there are no categories like 'Alsatian French lemmas' (only L2 languages
-- have langname categories), but doing it this way wrongly catches things like [[Category:Shapsug Adyghe]]
-- in [[Category:Adyghe entries with language name categories using raw markup]].
local n = #cat - 1
if n <= 0 then
return
end
-- Go from longest to shortest and stop once we've found a language name. Going from shortest
-- to longest or not stopping after a match risks falsely matching (e.g.) German Low German
-- categories as German.
repeat
local name = concat(cat, " ", 1, n)
if (langnames or get_langnames())[name] then
add_cat_table(wikitext_langname_cat, name, sortkey)
return
end
n = n - 1
until n == 0
end
if content then
-- Remove comments, then iterate over category links.
content = remove_comments(content, "BOTH")
local head = find(content, "[[", 1, true)
while head do
local close = find(content, "]]", head + 2, true)
if not close then
break
end
-- Make sure there are no intervening "[[" between head and close.
local open = find(content, "[[", head + 2, true)
while open and open < close do
head = open
open = find(content, "[[", head + 2, true)
end
local cat = sub(content, head + 2, close - 1)
-- Locate the colon, and weed out most unwanted links. "[ _\128-\244]*" catches valid whitespace, and ensures any category links using the colon trick are ignored. We match all non-ASCII characters, as there could be multibyte spaces, and mw.title.new will filter out any remaining false-positives; this is a lot faster than running mw.title.new on every link.
local colon = match(cat, "^[ _\128-\244]*[Cc][Aa][Tt][EeGgOoRrYy _\128-\244]*():")
if colon then
process_category(content, cat, colon, close + 2)
end
head = open
end
end
data.wikitext_topic_cat = wikitext_topic_cat
data.wikitext_langname_cat = wikitext_langname_cat
if raw_sortkey then
insert(cats, get_category("Pages with raw sortkeys"))
end
end
return data
end
return export
0esb0zcz2sjpy8aqh1uv1deoe3q625h
සැකිල්ල:pt-conj/documentation
10
125501
230594
193434
2025-10-15T17:22:22Z
en>Polomo
0
/* Examples */ <pp_inv>
230594
wikitext
text/x-wiki
{{documentation subpage}}
This template generates a navigation box for [[:Category:Portuguese verbs|Portuguese verb]] conjugation entries. The actual work is done by [[Module:pt-verb]].
==Usage==
This template should be added to all Portuguese verb entries.
The template should be placed within the Portuguese language section, immediately following the '''Conjugation''' L4 language header.
As with other Wiktionary navigation box templates, '''please do not use <code>subst:</code>'''.
===Parameters===
The template uses one unnamed parameter to specify any information not automatically inferrable from the infinitive form.
==Examples==
'''( 1 )''' {{m|pt|cantar||to sing}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=cantar}}
'''NOTE:''' For most verbs, no parameters are needed.
----
'''( 2 )''' {{m|pt|ser||to be}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=ser}}
'''NOTE:''' The module knows how to handle all irregular verbs automatically, including prefixed derivatives such as {{m|pt|desdar}} (from {{m|pt|dar}}) and {{m|pt|abster}} (from {{m|pt|ter}}).
----
'''( 3 )''' {{m|pt|desfazer||to undo}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=desfazer}}
'''NOTE:''' Example of a prefixed verb handled automatically.
----
'''( 4 )''' {{m|pt|semear||to sow}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=semear}}
'''NOTE:''' The alternation between ''-ear'' and stressed ''-eio'' is predictable, hence automatic.
----
'''( 5 )''' {{m|pt|conseguir||to get, to manage}}
:<code><nowiki>{{pt-conj|<i-e>}}</nowiki></code>
{{pt-conj|<i-e>|pagename=conseguir}}
'''NOTE:''' The vowel alternation between ''conseguir'', ''consigo'' and ''consegue'' is unpredictable, hence a vowel alternation indicator <code><i-e></code> must be given. In general, indicators are contained between angle brackets, and if more than one must be given, they are separated by periods/full stops (a <code>.</code> symbol). Note however that the consonant alternation between ''-g-'' and ''-gu-'' is predictable, hence automatic.
----
'''( 6 )''' {{m|pt|renhir||to fight, to argue}}
:<code><nowiki>{{pt-conj|<no_pres_stressed>}}</nowiki></code>
{{pt-conj|<no_pres_stressed>|pagename=renhir}}
'''NOTE:''' This verb is defective, missing all stem-stressed forms in the present indicative and imperative (as well as the entire present subjunctive). This is specified using the indicator <code><no_pres_stressed></code>.
----
'''( 7 )''' {{m|pt|demolir||to demolish, to knock down}}
:<code><nowiki>{{pt-conj|<no_pres1_and_sub>}}</nowiki></code>
{{pt-conj|<no_pres1_and_sub>|pagename=demolir}}
'''NOTE:''' This verb is defective in a different way than {{m|pt|renhir}}, missing the first-singular present indicative and the entire present subjunctive. This is specified using the indicator <code><no_pres1_and_sub></code>.
----
'''( 8 )''' {{m|pt|chover a cântaros||to [[rain cats and dogs]]}}
:<code><nowiki>{{pt-conj|chover<only3s> [[a]] [[cântaro]]s}}</nowiki></code>
{{pt-conj|chover<only3s> [[a]] [[cântaro]]s}}
'''NOTE:''' Full support is available for multiword expressions. Put the angle-bracket spec after the verb or verbs needing to be conjugated. Remaining text is passed through unaltered, and can include links, as shown. Here, the indicator <code>only3s</code> specifies an impersonal ("only third-singular") verb.
----
'''( 9 )''' {{m|pt|dar nome aos bois||to [[name names]]|lit=to name the cows}}
:<code><nowiki>{{pt-conj|dar<> [[nome]] [[aos]] [[boi]]s}}</nowiki></code>
{{pt-conj|dar<> [[nome]] [[aos]] [[boi]]s}}
'''NOTE:''' In a multiword expression where no indicators are needed, place empty angle brackets after the verb or verbs needing to be conjugated.
----
'''( 10 )''' {{m|pt|beijar de língua||to [[French kiss]]}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=beijar de língua}}
'''NOTE:''' In a multiword expression where no indicators are needed and all words can be linked directly, {{para|1}} can be omitted. This is equivalent to placing <code><></code> after the first word, and all remaining words are automatically linked.
----
'''( 11 )''' {{m|pt|chuviscar||to [[drizzle]]}}
:<code><nowiki>{{pt-conj|<only3s>}}</nowiki></code>
{{pt-conj|<only3s>|pagename=chuviscar}}
'''NOTE:''' This verb is impersonal and includes only third-person singular forms. For third-person only verbs, use <code><only3sp></code>, and for third-plural-only verbs, use <code><only3p></code>.
----
'''( 23 )''' {{m|pt|pecar||to [[sin]]}}
:<code><nowiki>{{pt-conj|<pp_inv>}}</nowiki></code>
{{pt-conj|<pp_inv>|pagename=pecar}}
<includeonly>
[[Category:Portuguese verb inflection-table templates|*]]
[[fr:Modèle:pt-conj]]
[[pt:Predefinição:conj.pt.ar]]
</includeonly>
knpu0s8nwgjafhikh76rzpj7oan4fso
230595
230594
2026-04-05T14:08:07Z
Lee
19
[[:en:Template:pt-conj/documentation]] වෙතින් එක් සංශෝධනයක්
230594
wikitext
text/x-wiki
{{documentation subpage}}
This template generates a navigation box for [[:Category:Portuguese verbs|Portuguese verb]] conjugation entries. The actual work is done by [[Module:pt-verb]].
==Usage==
This template should be added to all Portuguese verb entries.
The template should be placed within the Portuguese language section, immediately following the '''Conjugation''' L4 language header.
As with other Wiktionary navigation box templates, '''please do not use <code>subst:</code>'''.
===Parameters===
The template uses one unnamed parameter to specify any information not automatically inferrable from the infinitive form.
==Examples==
'''( 1 )''' {{m|pt|cantar||to sing}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=cantar}}
'''NOTE:''' For most verbs, no parameters are needed.
----
'''( 2 )''' {{m|pt|ser||to be}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=ser}}
'''NOTE:''' The module knows how to handle all irregular verbs automatically, including prefixed derivatives such as {{m|pt|desdar}} (from {{m|pt|dar}}) and {{m|pt|abster}} (from {{m|pt|ter}}).
----
'''( 3 )''' {{m|pt|desfazer||to undo}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=desfazer}}
'''NOTE:''' Example of a prefixed verb handled automatically.
----
'''( 4 )''' {{m|pt|semear||to sow}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=semear}}
'''NOTE:''' The alternation between ''-ear'' and stressed ''-eio'' is predictable, hence automatic.
----
'''( 5 )''' {{m|pt|conseguir||to get, to manage}}
:<code><nowiki>{{pt-conj|<i-e>}}</nowiki></code>
{{pt-conj|<i-e>|pagename=conseguir}}
'''NOTE:''' The vowel alternation between ''conseguir'', ''consigo'' and ''consegue'' is unpredictable, hence a vowel alternation indicator <code><i-e></code> must be given. In general, indicators are contained between angle brackets, and if more than one must be given, they are separated by periods/full stops (a <code>.</code> symbol). Note however that the consonant alternation between ''-g-'' and ''-gu-'' is predictable, hence automatic.
----
'''( 6 )''' {{m|pt|renhir||to fight, to argue}}
:<code><nowiki>{{pt-conj|<no_pres_stressed>}}</nowiki></code>
{{pt-conj|<no_pres_stressed>|pagename=renhir}}
'''NOTE:''' This verb is defective, missing all stem-stressed forms in the present indicative and imperative (as well as the entire present subjunctive). This is specified using the indicator <code><no_pres_stressed></code>.
----
'''( 7 )''' {{m|pt|demolir||to demolish, to knock down}}
:<code><nowiki>{{pt-conj|<no_pres1_and_sub>}}</nowiki></code>
{{pt-conj|<no_pres1_and_sub>|pagename=demolir}}
'''NOTE:''' This verb is defective in a different way than {{m|pt|renhir}}, missing the first-singular present indicative and the entire present subjunctive. This is specified using the indicator <code><no_pres1_and_sub></code>.
----
'''( 8 )''' {{m|pt|chover a cântaros||to [[rain cats and dogs]]}}
:<code><nowiki>{{pt-conj|chover<only3s> [[a]] [[cântaro]]s}}</nowiki></code>
{{pt-conj|chover<only3s> [[a]] [[cântaro]]s}}
'''NOTE:''' Full support is available for multiword expressions. Put the angle-bracket spec after the verb or verbs needing to be conjugated. Remaining text is passed through unaltered, and can include links, as shown. Here, the indicator <code>only3s</code> specifies an impersonal ("only third-singular") verb.
----
'''( 9 )''' {{m|pt|dar nome aos bois||to [[name names]]|lit=to name the cows}}
:<code><nowiki>{{pt-conj|dar<> [[nome]] [[aos]] [[boi]]s}}</nowiki></code>
{{pt-conj|dar<> [[nome]] [[aos]] [[boi]]s}}
'''NOTE:''' In a multiword expression where no indicators are needed, place empty angle brackets after the verb or verbs needing to be conjugated.
----
'''( 10 )''' {{m|pt|beijar de língua||to [[French kiss]]}}
:<code><nowiki>{{pt-conj}}</nowiki></code>
{{pt-conj|pagename=beijar de língua}}
'''NOTE:''' In a multiword expression where no indicators are needed and all words can be linked directly, {{para|1}} can be omitted. This is equivalent to placing <code><></code> after the first word, and all remaining words are automatically linked.
----
'''( 11 )''' {{m|pt|chuviscar||to [[drizzle]]}}
:<code><nowiki>{{pt-conj|<only3s>}}</nowiki></code>
{{pt-conj|<only3s>|pagename=chuviscar}}
'''NOTE:''' This verb is impersonal and includes only third-person singular forms. For third-person only verbs, use <code><only3sp></code>, and for third-plural-only verbs, use <code><only3p></code>.
----
'''( 23 )''' {{m|pt|pecar||to [[sin]]}}
:<code><nowiki>{{pt-conj|<pp_inv>}}</nowiki></code>
{{pt-conj|<pp_inv>|pagename=pecar}}
<includeonly>
[[Category:Portuguese verb inflection-table templates|*]]
[[fr:Modèle:pt-conj]]
[[pt:Predefinição:conj.pt.ar]]
</includeonly>
knpu0s8nwgjafhikh76rzpj7oan4fso
Module:palette
828
137687
230602
222314
2025-10-08T16:07:43Z
en>Surjection
0
230602
Scribunto
text/plain
local export = {}
-- Given a CSS hex value, return a table of the RGB components.
-- The RGB is normalized so that white is (1.0, 1.0, 1.0).
local function get_rgb_from_hex(hex_colour)
hex_colour = hex_colour:gsub("#", "")
if #hex_colour == 3 then
return {
tonumber(hex_colour:sub(1, 1), 16) * 17 / 255,
tonumber(hex_colour:sub(2, 2), 16) * 17 / 255,
tonumber(hex_colour:sub(3, 3), 16) * 17 / 255
}
elseif #hex_colour == 6 then
return {
tonumber(hex_colour:sub(1, 2), 16) / 255,
tonumber(hex_colour:sub(3, 4), 16) / 255,
tonumber(hex_colour:sub(5, 6), 16) / 255
}
end
end
-- Calculate the WCAG2.1 relative luminance value given a RGB tuple.
-- https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html#dfn-relative-luminance
local function get_WCAG_21_luminance(rgb)
local luminance_parts = {}
for _, rgb_part in ipairs(rgb) do
if rgb_part > 0.04045 then
table.insert(luminance_parts, ((rgb_part + 0.055) / 1.055) ^ 2.4)
else
table.insert(luminance_parts, rgb_part / 12.92)
end
end
local luminance = 0.2126 * luminance_parts[1] + 0.7152 * luminance_parts[2] + 0.0722 * luminance_parts[3]
return luminance
end
-- Calculate the WCAG2.1 contrast ratio given two RGB tuples.
-- https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html#dfn-contrast-ratio
local function get_WCAG_21_contrast(rgb1, rgb2)
local luminance1 = get_WCAG_21_luminance(rgb1)
local luminance2 = get_WCAG_21_luminance(rgb2)
-- The lighter colour is used in the numerator.
local contrast_ratio
if luminance1 >= luminance2 then
contrast_ratio = (luminance1 + 0.05) / (luminance2 + 0.05)
else
contrast_ratio = (luminance2 + 0.05) / (luminance1 + 0.05)
end
return contrast_ratio
end
-- Calculate the APCA contrast ratio given a text RGB tuple and a background RGB tuple.
-- https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md
-- The variables are named to match the LaTeX document.
local function get_APCA_contrast(rgb_txt, rgb_bg)
local Ys_txt = rgb_txt[1] ^ 2.4 * 0.2126729 + rgb_txt[2] ^ 2.4 * 0.7151522 + rgb_txt[3] ^ 2.4 * 0.0721750
local Ys_bg = rgb_bg[1] ^ 2.4 * 0.2126729 + rgb_bg[2] ^ 2.4 * 0.7151522 + rgb_bg[3] ^ 2.4 * 0.0721750
local function f_sc(Y_c)
if Y_c <= 0 then
return 0
elseif Y_c <= 0.022 then
return Y_c + (0.022 - Y_c) ^ 1.414
else
return Y_c
end
end
local Y_txt = f_sc(Ys_txt)
local Y_bg = f_sc(Ys_bg)
local S_apc
if Y_bg > Y_txt then
S_apc = (Y_bg ^ 0.56 - Y_txt ^ 0.57) * 1.14
else
S_apc = (Y_bg ^ 0.65 - Y_txt ^ 0.62) * 1.14
end
local L_c
if math.abs(S_apc) < 0.1 then
L_c = 0
elseif S_apc > 0 then
L_c = (S_apc - 0.027) * 100
else
L_c = (S_apc + 0.027) * 100
end
return L_c
end
-- Get the WCAG2.1 rating as HTML, given a contrast value.
local function get_WCAG_21_rating(contrast_value)
if contrast_value >= 7 then
return "<span style=\"color:var(--wikt-palette-deepblue)\">(AAA)</span>"
elseif contrast_value >= 4.5 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(AA)</span>"
else
return "<span style=\"color:var(--wikt-palette-red)\">(FAIL)</span>"
end
end
-- Get the APCA rating as HTML, given a contrast value.
-- Using default text values: font size = 14px, font weight = 400
local function get_APCA_rating(contrast_value)
local abs_contrast_value = math.abs(contrast_value)
if abs_contrast_value >= 100 then
return "<span style=\"color:var(--wikt-palette-deepblue)\">(R4)</span>"
elseif abs_contrast_value >= 95 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(R3)</span>"
elseif abs_contrast_value >= 90 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(R2)</span>"
elseif abs_contrast_value >= 85 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(R1)</span>"
else
return "<span style=\"color:var(--wikt-palette-red)\">(R0)</span>"
end
end
function export.show(frame)
local pageContent = mw.title.new("MediaWiki:Gadget-Palette.css"):getContent()
local lightMode = true;
local lightModeData = {}
local darkModeData = {}
local commentsData = {}
local seenVariables = {} -- In order to maintain the order.
local output = {
[=[{| class="palette-table wikitable mw-no-invert"
|+Table of palette variables in light and dark mode
|-
!scope="col"| Variable name
!scope="col"| Light mode
!scope="col"| Dark mode
!scope="col"| Use as a background colour?
!scope="col"| Use as a text colour?
!scope="col"| Comments
|-"
]=]}
for line in pageContent:gmatch("[^\r\n]*") do
-- Hack to check whether we've reached the dark mode styles.
if line == "@media screen {" then
lightMode = false;
end
local definedVariable = line:match("--wikt%-palette%-[a-z0-9-]+")
if definedVariable then
if lightMode then
table.insert(seenVariables, definedVariable)
lightModeData[definedVariable] = line:match("#[a-zA-Z0-9]+")
commentsData[definedVariable] = line:match("/%*%s*(.-)%s*%*/") or ""
else
darkModeData[definedVariable] = line:match("#[a-zA-Z0-9]+")
end
end
end
for _, var in ipairs(seenVariables) do
table.insert(output, "|<code>" .. var .. "</code>")
table.insert(output, "||style=\"background:" .. lightModeData[var] .. "\"|<span class=\"palette-highlight\">" .. lightModeData[var] .. "</span>")
table.insert(output, "||style=\"background:" .. darkModeData[var] .. "\"|<span class=\"palette-highlight\">" .. darkModeData[var] .. "</span>")
-- Contrast on body text in light mode.
local WCAG_21_contrast_text_lightmode = get_WCAG_21_contrast(get_rgb_from_hex("#202122"), get_rgb_from_hex(lightModeData[var]))
local APCA_contrast_text_lightmode = get_APCA_contrast(get_rgb_from_hex("#202122"), get_rgb_from_hex(lightModeData[var]))
table.insert(output, "||'''Light mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_text_lightmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_text_lightmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_text_lightmode) .. " " .. get_APCA_rating(APCA_contrast_text_lightmode))
-- Contrast on body text in dark mode.
local WCAG_21_contrast_text_darkmode = get_WCAG_21_contrast(get_rgb_from_hex("#eaecf0"), get_rgb_from_hex(darkModeData[var]))
local APCA_contrast_text_darkmode = get_APCA_contrast(get_rgb_from_hex("#eaecf0"), get_rgb_from_hex(darkModeData[var]))
table.insert(output, "<br> '''Dark mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_text_darkmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_text_darkmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_text_darkmode) .. " " .. get_APCA_rating(APCA_contrast_text_darkmode))
-- Contrast on default background in light mode.
local WCAG_21_contrast_bg_lightmode = get_WCAG_21_contrast(get_rgb_from_hex(lightModeData[var]), get_rgb_from_hex("#ffffff"))
local APCA_contrast_bg_lightmode = get_APCA_contrast(get_rgb_from_hex(lightModeData[var]), get_rgb_from_hex("#ffffff"))
table.insert(output, "||'''Light mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_bg_lightmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_bg_lightmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_bg_lightmode) .. " " .. get_APCA_rating(APCA_contrast_bg_lightmode))
-- Contrast on default background in dark mode.
local WCAG_21_contrast_bg_darkmode = get_WCAG_21_contrast(get_rgb_from_hex(darkModeData[var]), get_rgb_from_hex("#101418"))
local APCA_contrast_bg_darkmode = get_APCA_contrast(get_rgb_from_hex(darkModeData[var]), get_rgb_from_hex("#101418"))
table.insert(output, "<br> '''Dark mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_bg_darkmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_bg_darkmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_bg_darkmode) .. " " .. get_APCA_rating(APCA_contrast_bg_darkmode))
-- Comments.
table.insert(output, "||" .. commentsData[var])
table.insert(output, "\n|-\n")
end
table.insert(output, "|-\n")
table.insert(output, "|colspan=\"6\" style=\"padding:1em;background:var(--wikt-palette-lavender,#f8f8ff)\"|According to [[mw:Recommendations for night mode compatibility on Wikimedia wikis]], editors should ensure that colours meet the WCAC 2.1 AA contrast standards (APCA is significantly stricter but corresponds more closely to human visual perception — see [[phab:T308772]]). Contrast ratios are calculated assuming standard text formatting (14px, unbolded) and standard colours on the rest of the page. To check contrast values between any two colours, see https://contrast.tools/.\n")
table.insert(output, "\n|}")
table.insert(output, frame:extensionTag("templatestyles", "", {src="Module:palette/styles.css"}))
return table.concat(output)
end
return export
qhecia48w6nk2cpmklq1wz76jb2rzu9
230603
230602
2026-04-05T14:15:07Z
Lee
19
[[:en:Module:palette]] වෙතින් එක් සංශෝධනයක්
230602
Scribunto
text/plain
local export = {}
-- Given a CSS hex value, return a table of the RGB components.
-- The RGB is normalized so that white is (1.0, 1.0, 1.0).
local function get_rgb_from_hex(hex_colour)
hex_colour = hex_colour:gsub("#", "")
if #hex_colour == 3 then
return {
tonumber(hex_colour:sub(1, 1), 16) * 17 / 255,
tonumber(hex_colour:sub(2, 2), 16) * 17 / 255,
tonumber(hex_colour:sub(3, 3), 16) * 17 / 255
}
elseif #hex_colour == 6 then
return {
tonumber(hex_colour:sub(1, 2), 16) / 255,
tonumber(hex_colour:sub(3, 4), 16) / 255,
tonumber(hex_colour:sub(5, 6), 16) / 255
}
end
end
-- Calculate the WCAG2.1 relative luminance value given a RGB tuple.
-- https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html#dfn-relative-luminance
local function get_WCAG_21_luminance(rgb)
local luminance_parts = {}
for _, rgb_part in ipairs(rgb) do
if rgb_part > 0.04045 then
table.insert(luminance_parts, ((rgb_part + 0.055) / 1.055) ^ 2.4)
else
table.insert(luminance_parts, rgb_part / 12.92)
end
end
local luminance = 0.2126 * luminance_parts[1] + 0.7152 * luminance_parts[2] + 0.0722 * luminance_parts[3]
return luminance
end
-- Calculate the WCAG2.1 contrast ratio given two RGB tuples.
-- https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum.html#dfn-contrast-ratio
local function get_WCAG_21_contrast(rgb1, rgb2)
local luminance1 = get_WCAG_21_luminance(rgb1)
local luminance2 = get_WCAG_21_luminance(rgb2)
-- The lighter colour is used in the numerator.
local contrast_ratio
if luminance1 >= luminance2 then
contrast_ratio = (luminance1 + 0.05) / (luminance2 + 0.05)
else
contrast_ratio = (luminance2 + 0.05) / (luminance1 + 0.05)
end
return contrast_ratio
end
-- Calculate the APCA contrast ratio given a text RGB tuple and a background RGB tuple.
-- https://github.com/Myndex/SAPC-APCA/blob/master/documentation/APCA-W3-LaTeX.md
-- The variables are named to match the LaTeX document.
local function get_APCA_contrast(rgb_txt, rgb_bg)
local Ys_txt = rgb_txt[1] ^ 2.4 * 0.2126729 + rgb_txt[2] ^ 2.4 * 0.7151522 + rgb_txt[3] ^ 2.4 * 0.0721750
local Ys_bg = rgb_bg[1] ^ 2.4 * 0.2126729 + rgb_bg[2] ^ 2.4 * 0.7151522 + rgb_bg[3] ^ 2.4 * 0.0721750
local function f_sc(Y_c)
if Y_c <= 0 then
return 0
elseif Y_c <= 0.022 then
return Y_c + (0.022 - Y_c) ^ 1.414
else
return Y_c
end
end
local Y_txt = f_sc(Ys_txt)
local Y_bg = f_sc(Ys_bg)
local S_apc
if Y_bg > Y_txt then
S_apc = (Y_bg ^ 0.56 - Y_txt ^ 0.57) * 1.14
else
S_apc = (Y_bg ^ 0.65 - Y_txt ^ 0.62) * 1.14
end
local L_c
if math.abs(S_apc) < 0.1 then
L_c = 0
elseif S_apc > 0 then
L_c = (S_apc - 0.027) * 100
else
L_c = (S_apc + 0.027) * 100
end
return L_c
end
-- Get the WCAG2.1 rating as HTML, given a contrast value.
local function get_WCAG_21_rating(contrast_value)
if contrast_value >= 7 then
return "<span style=\"color:var(--wikt-palette-deepblue)\">(AAA)</span>"
elseif contrast_value >= 4.5 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(AA)</span>"
else
return "<span style=\"color:var(--wikt-palette-red)\">(FAIL)</span>"
end
end
-- Get the APCA rating as HTML, given a contrast value.
-- Using default text values: font size = 14px, font weight = 400
local function get_APCA_rating(contrast_value)
local abs_contrast_value = math.abs(contrast_value)
if abs_contrast_value >= 100 then
return "<span style=\"color:var(--wikt-palette-deepblue)\">(R4)</span>"
elseif abs_contrast_value >= 95 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(R3)</span>"
elseif abs_contrast_value >= 90 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(R2)</span>"
elseif abs_contrast_value >= 85 then
return "<span style=\"color:var(--wikt-palette-forestgreen)\">(R1)</span>"
else
return "<span style=\"color:var(--wikt-palette-red)\">(R0)</span>"
end
end
function export.show(frame)
local pageContent = mw.title.new("MediaWiki:Gadget-Palette.css"):getContent()
local lightMode = true;
local lightModeData = {}
local darkModeData = {}
local commentsData = {}
local seenVariables = {} -- In order to maintain the order.
local output = {
[=[{| class="palette-table wikitable mw-no-invert"
|+Table of palette variables in light and dark mode
|-
!scope="col"| Variable name
!scope="col"| Light mode
!scope="col"| Dark mode
!scope="col"| Use as a background colour?
!scope="col"| Use as a text colour?
!scope="col"| Comments
|-"
]=]}
for line in pageContent:gmatch("[^\r\n]*") do
-- Hack to check whether we've reached the dark mode styles.
if line == "@media screen {" then
lightMode = false;
end
local definedVariable = line:match("--wikt%-palette%-[a-z0-9-]+")
if definedVariable then
if lightMode then
table.insert(seenVariables, definedVariable)
lightModeData[definedVariable] = line:match("#[a-zA-Z0-9]+")
commentsData[definedVariable] = line:match("/%*%s*(.-)%s*%*/") or ""
else
darkModeData[definedVariable] = line:match("#[a-zA-Z0-9]+")
end
end
end
for _, var in ipairs(seenVariables) do
table.insert(output, "|<code>" .. var .. "</code>")
table.insert(output, "||style=\"background:" .. lightModeData[var] .. "\"|<span class=\"palette-highlight\">" .. lightModeData[var] .. "</span>")
table.insert(output, "||style=\"background:" .. darkModeData[var] .. "\"|<span class=\"palette-highlight\">" .. darkModeData[var] .. "</span>")
-- Contrast on body text in light mode.
local WCAG_21_contrast_text_lightmode = get_WCAG_21_contrast(get_rgb_from_hex("#202122"), get_rgb_from_hex(lightModeData[var]))
local APCA_contrast_text_lightmode = get_APCA_contrast(get_rgb_from_hex("#202122"), get_rgb_from_hex(lightModeData[var]))
table.insert(output, "||'''Light mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_text_lightmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_text_lightmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_text_lightmode) .. " " .. get_APCA_rating(APCA_contrast_text_lightmode))
-- Contrast on body text in dark mode.
local WCAG_21_contrast_text_darkmode = get_WCAG_21_contrast(get_rgb_from_hex("#eaecf0"), get_rgb_from_hex(darkModeData[var]))
local APCA_contrast_text_darkmode = get_APCA_contrast(get_rgb_from_hex("#eaecf0"), get_rgb_from_hex(darkModeData[var]))
table.insert(output, "<br> '''Dark mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_text_darkmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_text_darkmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_text_darkmode) .. " " .. get_APCA_rating(APCA_contrast_text_darkmode))
-- Contrast on default background in light mode.
local WCAG_21_contrast_bg_lightmode = get_WCAG_21_contrast(get_rgb_from_hex(lightModeData[var]), get_rgb_from_hex("#ffffff"))
local APCA_contrast_bg_lightmode = get_APCA_contrast(get_rgb_from_hex(lightModeData[var]), get_rgb_from_hex("#ffffff"))
table.insert(output, "||'''Light mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_bg_lightmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_bg_lightmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_bg_lightmode) .. " " .. get_APCA_rating(APCA_contrast_bg_lightmode))
-- Contrast on default background in dark mode.
local WCAG_21_contrast_bg_darkmode = get_WCAG_21_contrast(get_rgb_from_hex(darkModeData[var]), get_rgb_from_hex("#101418"))
local APCA_contrast_bg_darkmode = get_APCA_contrast(get_rgb_from_hex(darkModeData[var]), get_rgb_from_hex("#101418"))
table.insert(output, "<br> '''Dark mode:''' WCAG " .. string.format("%.2f", WCAG_21_contrast_bg_darkmode) .. " " .. get_WCAG_21_rating(WCAG_21_contrast_bg_darkmode))
table.insert(output, ", APCA " .. string.format("%.2f", APCA_contrast_bg_darkmode) .. " " .. get_APCA_rating(APCA_contrast_bg_darkmode))
-- Comments.
table.insert(output, "||" .. commentsData[var])
table.insert(output, "\n|-\n")
end
table.insert(output, "|-\n")
table.insert(output, "|colspan=\"6\" style=\"padding:1em;background:var(--wikt-palette-lavender,#f8f8ff)\"|According to [[mw:Recommendations for night mode compatibility on Wikimedia wikis]], editors should ensure that colours meet the WCAC 2.1 AA contrast standards (APCA is significantly stricter but corresponds more closely to human visual perception — see [[phab:T308772]]). Contrast ratios are calculated assuming standard text formatting (14px, unbolded) and standard colours on the rest of the page. To check contrast values between any two colours, see https://contrast.tools/.\n")
table.insert(output, "\n|}")
table.insert(output, frame:extensionTag("templatestyles", "", {src="Module:palette/styles.css"}))
return table.concat(output)
end
return export
qhecia48w6nk2cpmklq1wz76jb2rzu9
විචක්ෂණ
0
141687
230589
2026-04-05T14:03:38Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම විශේෂණ පදය === {{si-adj}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින...' යොදමින් නව පිටුවක් තනන ලදි
230589
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම විශේෂණ පදය ===
{{si-adj}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
2032ufwklqrqtwqz3bb1ybozr1uafmz
සංස්ලේෂණය
0
141688
230590
2026-04-05T14:03:58Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
230590
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
ව්යුත්පත්තිය
0
141689
230591
2026-04-05T14:04:25Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
230591
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
දුහුනෙක්
0
141690
230592
2026-04-05T14:04:52Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
230592
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
නික්ෂේපණය
0
141691
230593
2026-04-05T14:05:21Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
230593
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4
සැකිල්ල:place/documentation
10
141692
230601
2026-04-05T14:14:00Z
Lee
19
Lee විසින් [[සැකිල්ල:place/documentation]] සිට [[සැකිල්ල:ස්ථානය/documentation]] වෙත පිටුව ගෙන යන ලදී
230601
wikitext
text/x-wiki
#යළියොමුව [[සැකිල්ල:ස්ථානය/documentation]]
1xaj6w5evzhnn0rskpoadmsd89z1wum
මාධ්යවිකි:Gadget-Palette.css/documentation
8
141694
230604
2024-11-10T14:56:12Z
en>Surjection
0
230604
wikitext
text/x-wiki
{{documentation subpage}}
Contains CSS variables for common colors to be used by templates. See [[Wiktionary:Palette]] for more information.
New colors, when added, are expected to meet contrast requirements.
Colors can be previewed in [[MediaWiki:Gadget-Palette/table]].
<includeonly>
[[Category:Wiktionary gadgets]]
</includeonly>
7dvfi1mvox7sd0f14zkibmm35simmag
230605
230604
2026-04-05T14:19:12Z
Lee
19
[[:en:MediaWiki:Gadget-Palette.css/documentation]] වෙතින් එක් සංශෝධනයක්
230604
wikitext
text/x-wiki
{{documentation subpage}}
Contains CSS variables for common colors to be used by templates. See [[Wiktionary:Palette]] for more information.
New colors, when added, are expected to meet contrast requirements.
Colors can be previewed in [[MediaWiki:Gadget-Palette/table]].
<includeonly>
[[Category:Wiktionary gadgets]]
</includeonly>
7dvfi1mvox7sd0f14zkibmm35simmag
𑀔
0
141695
230609
2024-11-16T21:22:07Z
en>ChromeBones
0
Adding glyph origin
230609
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Possibly from {{cog|arc|𐡒}}, although this is debated. Compare {{cog|phn|𐤒}}.
===Letter===
{{head|mul|letter|sc=Brah|tr=kha}}
# {{n-g|the second [[Brahmi]] [[consonant]]}}
====Descendants====
* Northern Brahmi:
** Gupta: [[File:Gupta allahabad kh.svg|15px]], [[File:Gupta ashoka kh.svg|15px]], [[File:Gupta girnar kh.svg|15px]], [[File:Gupta gujarat kh.svg|15px]] (kha)
*** Nagari:
**** Devanāgarī: {{l|mul|ख|tr=kha}}
***** {{desc|gu|ખ}}
***** Modi: {{l|mr|𑘏}}
*** Siddham: [[File:Siddham_kh.svg|15px]] (kha)
**** Bengali-Assamese: {{l|bn|খ}}
**** {{desc|or|ଖ}}
**** Tibetan: {{l|otb|ཁ}}
*** Sharada: {{l|mul|𑆒}} ([[File:Sharada_kh.svg|15px]]: kha)
**** Laṇḍā:
***** Gurmukhi: {{l|pa|ਖ}}
** Kalinga:
*** {{desc|kn|ಖ}}
** Grantha: {{l|sa|𑌖}} ([[File:Grantha_letter_Kha.svg|15px]]: kha)
*** {{desc|ml|ഖ}}
*** {{desc|si|ඛ}}
* Tocharian: [[File:Tocharian_letter_kha.gif|20px]] (kha)
s8ynbez34tceg7cxlp0rp4lkjkprgbt
230610
230609
2026-04-05T14:31:04Z
Lee
19
[[:en:𑀔]] වෙතින් එක් සංශෝධනයක්
230609
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Possibly from {{cog|arc|𐡒}}, although this is debated. Compare {{cog|phn|𐤒}}.
===Letter===
{{head|mul|letter|sc=Brah|tr=kha}}
# {{n-g|the second [[Brahmi]] [[consonant]]}}
====Descendants====
* Northern Brahmi:
** Gupta: [[File:Gupta allahabad kh.svg|15px]], [[File:Gupta ashoka kh.svg|15px]], [[File:Gupta girnar kh.svg|15px]], [[File:Gupta gujarat kh.svg|15px]] (kha)
*** Nagari:
**** Devanāgarī: {{l|mul|ख|tr=kha}}
***** {{desc|gu|ખ}}
***** Modi: {{l|mr|𑘏}}
*** Siddham: [[File:Siddham_kh.svg|15px]] (kha)
**** Bengali-Assamese: {{l|bn|খ}}
**** {{desc|or|ଖ}}
**** Tibetan: {{l|otb|ཁ}}
*** Sharada: {{l|mul|𑆒}} ([[File:Sharada_kh.svg|15px]]: kha)
**** Laṇḍā:
***** Gurmukhi: {{l|pa|ਖ}}
** Kalinga:
*** {{desc|kn|ಖ}}
** Grantha: {{l|sa|𑌖}} ([[File:Grantha_letter_Kha.svg|15px]]: kha)
*** {{desc|ml|ഖ}}
*** {{desc|si|ඛ}}
* Tocharian: [[File:Tocharian_letter_kha.gif|20px]] (kha)
s8ynbez34tceg7cxlp0rp4lkjkprgbt
230681
230610
2026-04-05T14:42:25Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230681
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
===Glyph origin===
Possibly from {{cog|arc|𐡒}}, although this is debated. Compare {{cog|phn|𐤒}}.
=== අකුර ===
{{head|mul|letter|sc=Brah|tr=kha}}
# {{n-g|the second [[Brahmi]] [[consonant]]}}
====Descendants====
* Northern Brahmi:
** Gupta: [[File:Gupta allahabad kh.svg|15px]], [[File:Gupta ashoka kh.svg|15px]], [[File:Gupta girnar kh.svg|15px]], [[File:Gupta gujarat kh.svg|15px]] (kha)
*** Nagari:
**** Devanāgarī: {{l|mul|ख|tr=kha}}
***** {{desc|gu|ખ}}
***** Modi: {{l|mr|𑘏}}
*** Siddham: [[File:Siddham_kh.svg|15px]] (kha)
**** Bengali-Assamese: {{l|bn|খ}}
**** {{desc|or|ଖ}}
**** Tibetan: {{l|otb|ཁ}}
*** Sharada: {{l|mul|𑆒}} ([[File:Sharada_kh.svg|15px]]: kha)
**** Laṇḍā:
***** Gurmukhi: {{l|pa|ਖ}}
** Kalinga:
*** {{desc|kn|ಖ}}
** Grantha: {{l|sa|𑌖}} ([[File:Grantha_letter_Kha.svg|15px]]: kha)
*** {{desc|ml|ഖ}}
*** {{desc|si|ඛ}}
* Tocharian: [[File:Tocharian_letter_kha.gif|20px]] (kha)
1igcmhc5ft9s0tashe3h4w95uxwfz3j
𑀓
0
141696
230611
2024-11-16T21:16:04Z
en>ChromeBones
0
/* Glyph origin */ adding period
230611
wikitext
text/x-wiki
{{character info}}
==Translingual==
[[File:Brahmika.svg|thumb|Brahmi "ka" and its alternative forms for other vowels—an example of modifying a letter to describe vowel sounds in an abugida.]]
===Glyph origin===
Possibly from {{cog|arc|𐡊}}, although this is debated. Compare {{cog|phn|𐤊}}.
===Letter===
{{head|mul|letter|sc=Brah|tr=ka}}
# the first [[Brahmi]] [[consonant]] ''ka''
====Descendants====
* Northern Brahmi:
** Gupta: [[File:Gupta allahabad k.svg|15px]], [[File:Gupta ashoka k.svg|15px]], [[File:Gupta girnar k.svg|15px]], [[File:Gupta gujarat k.svg|15px]] (ka)
*** Nagari:
**** Devanāgarī: {{l|mul|क|tr=ka}}
***** {{desc|gu|ક}}
*** Siddham: [[File:Siddham_k.svg|15px]] (ka)
**** Bengali-Assamese: {{l|bn|ক}}
*** Sharada: {{l|sa|𑆑}}
**** Landa scripts:
***** Gurmukhi: {{l|pa|ਕ}}
***** Khojki: {{l|mul|𑈈}} (ka)
**** Devashesha:
***** Takri: {{l|mul|𑚊}} (ka)
***** Dogri: {{l|mul|𑠊}} (ka)
** Kalinga:
*** {{desc|or|କ}}
* Tocharian: [[File:Tocharian_letter_ka.gif|20px]] (ka)
==Pali==
===Alternative forms===
{{pi-alt|Latn=ka}}
===Pronoun===
{{pi-pronoun|m
<!--|cat2=interrogative pronouns-->
}}
# {{pi-sc||ka|t=who (m.)}}
====Declension====
{{pi-decl-noun|g=m|novoc=yes
|dats_mod=replace|dats=𑀓𑀲𑁆𑀲|dats2=𑀓𑀺𑀲𑁆𑀲
|abls_mod=replace|abls=𑀓𑀲𑁆𑀫𑀸|abls2=𑀓𑀺𑀲𑁆𑀫𑀸
|gens=𑀓𑀺𑀲𑁆𑀲
|locs_mod=replace|locs=𑀓𑀲𑁆𑀫𑀺𑀁|locs2=𑀓𑀫𑁆𑀳𑀺|locs3=𑀓𑀺𑀲𑁆𑀫𑀺𑀁|locs4=𑀓𑀺𑀫𑁆𑀳𑀺
|nomp_mod=replace|nomp=𑀓𑁂
|datp_mod=replace|datp=𑀓𑁂𑀲𑀁|datp2=𑀓𑁂𑀲𑀸𑀦𑀁
|genp_mod=replace|genp=𑀓𑁂𑀲𑀁|genp2=𑀓𑁂𑀲𑀸𑀦𑀁
}}
===Pronoun===
{{pi-pronoun|n
<!--|cat2=interrogative pronouns-->
}}
# {{pi-sc||ka|t=what (n.)}}
====Declension====
{{pi-decl-noun|g=n|novoc=yes
|noms_mod=replace|noms=𑀓𑀺𑀁
|accs_mod=replace|accs=𑀓𑀺𑀁
|dats_mod=replace|dats=𑀓𑀲𑁆𑀲|dats2=𑀓𑀺𑀲𑁆𑀲
|abls_mod=replace|abls=𑀓𑀲𑁆𑀫𑀸|abls2=𑀓𑀺𑀲𑁆𑀫𑀸
|gens=𑀓𑀺𑀲𑁆𑀲
|locs_mod=replace|locs=𑀓𑀲𑁆𑀫𑀺𑀁|locs2=𑀓𑀫𑁆𑀳𑀺|locs3=𑀓𑀺𑀲𑁆𑀫𑀺𑀁|locs4=𑀓𑀺𑀫𑁆𑀳𑀺
|datp_mod=replace|datp=𑀓𑁂𑀲𑀁|datp2=𑀓𑁂𑀲𑀸𑀦𑀁
|genp_mod=replace|genp=𑀓𑁂𑀲𑀁|genp2=𑀓𑁂𑀲𑀸𑀦𑀁
}}
ovxrh43uh87j0e7tlzw6bj3rzefvvcy
230612
230611
2026-04-05T14:31:24Z
Lee
19
[[:en:𑀓]] වෙතින් එක් සංශෝධනයක්
230611
wikitext
text/x-wiki
{{character info}}
==Translingual==
[[File:Brahmika.svg|thumb|Brahmi "ka" and its alternative forms for other vowels—an example of modifying a letter to describe vowel sounds in an abugida.]]
===Glyph origin===
Possibly from {{cog|arc|𐡊}}, although this is debated. Compare {{cog|phn|𐤊}}.
===Letter===
{{head|mul|letter|sc=Brah|tr=ka}}
# the first [[Brahmi]] [[consonant]] ''ka''
====Descendants====
* Northern Brahmi:
** Gupta: [[File:Gupta allahabad k.svg|15px]], [[File:Gupta ashoka k.svg|15px]], [[File:Gupta girnar k.svg|15px]], [[File:Gupta gujarat k.svg|15px]] (ka)
*** Nagari:
**** Devanāgarī: {{l|mul|क|tr=ka}}
***** {{desc|gu|ક}}
*** Siddham: [[File:Siddham_k.svg|15px]] (ka)
**** Bengali-Assamese: {{l|bn|ক}}
*** Sharada: {{l|sa|𑆑}}
**** Landa scripts:
***** Gurmukhi: {{l|pa|ਕ}}
***** Khojki: {{l|mul|𑈈}} (ka)
**** Devashesha:
***** Takri: {{l|mul|𑚊}} (ka)
***** Dogri: {{l|mul|𑠊}} (ka)
** Kalinga:
*** {{desc|or|କ}}
* Tocharian: [[File:Tocharian_letter_ka.gif|20px]] (ka)
==Pali==
===Alternative forms===
{{pi-alt|Latn=ka}}
===Pronoun===
{{pi-pronoun|m
<!--|cat2=interrogative pronouns-->
}}
# {{pi-sc||ka|t=who (m.)}}
====Declension====
{{pi-decl-noun|g=m|novoc=yes
|dats_mod=replace|dats=𑀓𑀲𑁆𑀲|dats2=𑀓𑀺𑀲𑁆𑀲
|abls_mod=replace|abls=𑀓𑀲𑁆𑀫𑀸|abls2=𑀓𑀺𑀲𑁆𑀫𑀸
|gens=𑀓𑀺𑀲𑁆𑀲
|locs_mod=replace|locs=𑀓𑀲𑁆𑀫𑀺𑀁|locs2=𑀓𑀫𑁆𑀳𑀺|locs3=𑀓𑀺𑀲𑁆𑀫𑀺𑀁|locs4=𑀓𑀺𑀫𑁆𑀳𑀺
|nomp_mod=replace|nomp=𑀓𑁂
|datp_mod=replace|datp=𑀓𑁂𑀲𑀁|datp2=𑀓𑁂𑀲𑀸𑀦𑀁
|genp_mod=replace|genp=𑀓𑁂𑀲𑀁|genp2=𑀓𑁂𑀲𑀸𑀦𑀁
}}
===Pronoun===
{{pi-pronoun|n
<!--|cat2=interrogative pronouns-->
}}
# {{pi-sc||ka|t=what (n.)}}
====Declension====
{{pi-decl-noun|g=n|novoc=yes
|noms_mod=replace|noms=𑀓𑀺𑀁
|accs_mod=replace|accs=𑀓𑀺𑀁
|dats_mod=replace|dats=𑀓𑀲𑁆𑀲|dats2=𑀓𑀺𑀲𑁆𑀲
|abls_mod=replace|abls=𑀓𑀲𑁆𑀫𑀸|abls2=𑀓𑀺𑀲𑁆𑀫𑀸
|gens=𑀓𑀺𑀲𑁆𑀲
|locs_mod=replace|locs=𑀓𑀲𑁆𑀫𑀺𑀁|locs2=𑀓𑀫𑁆𑀳𑀺|locs3=𑀓𑀺𑀲𑁆𑀫𑀺𑀁|locs4=𑀓𑀺𑀫𑁆𑀳𑀺
|datp_mod=replace|datp=𑀓𑁂𑀲𑀁|datp2=𑀓𑁂𑀲𑀸𑀦𑀁
|genp_mod=replace|genp=𑀓𑁂𑀲𑀁|genp2=𑀓𑁂𑀲𑀸𑀦𑀁
}}
ovxrh43uh87j0e7tlzw6bj3rzefvvcy
230680
230612
2026-04-05T14:42:15Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230680
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
[[File:Brahmika.svg|thumb|Brahmi "ka" and its alternative forms for other vowels—an example of modifying a letter to describe vowel sounds in an abugida.]]
===Glyph origin===
Possibly from {{cog|arc|𐡊}}, although this is debated. Compare {{cog|phn|𐤊}}.
=== අකුර ===
{{head|mul|letter|sc=Brah|tr=ka}}
# the first [[Brahmi]] [[consonant]] ''ka''
====Descendants====
* Northern Brahmi:
** Gupta: [[File:Gupta allahabad k.svg|15px]], [[File:Gupta ashoka k.svg|15px]], [[File:Gupta girnar k.svg|15px]], [[File:Gupta gujarat k.svg|15px]] (ka)
*** Nagari:
**** Devanāgarī: {{l|mul|क|tr=ka}}
***** {{desc|gu|ક}}
*** Siddham: [[File:Siddham_k.svg|15px]] (ka)
**** Bengali-Assamese: {{l|bn|ক}}
*** Sharada: {{l|sa|𑆑}}
**** Landa scripts:
***** Gurmukhi: {{l|pa|ਕ}}
***** Khojki: {{l|mul|𑈈}} (ka)
**** Devashesha:
***** Takri: {{l|mul|𑚊}} (ka)
***** Dogri: {{l|mul|𑠊}} (ka)
** Kalinga:
*** {{desc|or|କ}}
* Tocharian: [[File:Tocharian_letter_ka.gif|20px]] (ka)
== පාලි ==
=== වෙනත් ආකාර ===
{{pi-alt|Latn=ka}}
===Pronoun===
{{pi-pronoun|m
<!--|cat2=interrogative pronouns-->
}}
# {{pi-sc||ka|t=who (m.)}}
==== වරනැඟීම ====
{{pi-decl-noun|g=m|novoc=yes
|dats_mod=replace|dats=𑀓𑀲𑁆𑀲|dats2=𑀓𑀺𑀲𑁆𑀲
|abls_mod=replace|abls=𑀓𑀲𑁆𑀫𑀸|abls2=𑀓𑀺𑀲𑁆𑀫𑀸
|gens=𑀓𑀺𑀲𑁆𑀲
|locs_mod=replace|locs=𑀓𑀲𑁆𑀫𑀺𑀁|locs2=𑀓𑀫𑁆𑀳𑀺|locs3=𑀓𑀺𑀲𑁆𑀫𑀺𑀁|locs4=𑀓𑀺𑀫𑁆𑀳𑀺
|nomp_mod=replace|nomp=𑀓𑁂
|datp_mod=replace|datp=𑀓𑁂𑀲𑀁|datp2=𑀓𑁂𑀲𑀸𑀦𑀁
|genp_mod=replace|genp=𑀓𑁂𑀲𑀁|genp2=𑀓𑁂𑀲𑀸𑀦𑀁
}}
===Pronoun===
{{pi-pronoun|n
<!--|cat2=interrogative pronouns-->
}}
# {{pi-sc||ka|t=what (n.)}}
==== වරනැඟීම ====
{{pi-decl-noun|g=n|novoc=yes
|noms_mod=replace|noms=𑀓𑀺𑀁
|accs_mod=replace|accs=𑀓𑀺𑀁
|dats_mod=replace|dats=𑀓𑀲𑁆𑀲|dats2=𑀓𑀺𑀲𑁆𑀲
|abls_mod=replace|abls=𑀓𑀲𑁆𑀫𑀸|abls2=𑀓𑀺𑀲𑁆𑀫𑀸
|gens=𑀓𑀺𑀲𑁆𑀲
|locs_mod=replace|locs=𑀓𑀲𑁆𑀫𑀺𑀁|locs2=𑀓𑀫𑁆𑀳𑀺|locs3=𑀓𑀺𑀲𑁆𑀫𑀺𑀁|locs4=𑀓𑀺𑀫𑁆𑀳𑀺
|datp_mod=replace|datp=𑀓𑁂𑀲𑀁|datp2=𑀓𑁂𑀲𑀸𑀦𑀁
|genp_mod=replace|genp=𑀓𑁂𑀲𑀁|genp2=𑀓𑁂𑀲𑀸𑀦𑀁
}}
1b60pveuvk555tcjbjrvikh932jxro9
𑀒
0
141697
230613
2021-02-10T13:58:59Z
en>SodhakSH
0
Created page with "{{character info}} ==Translingual== ===Letter=== {{head|mul|letter|tr=au|sc=Brah}} # {{n-g|the [[fourteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}"
230613
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=au|sc=Brah}}
# {{n-g|the [[fourteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
g7fs45sgfxoo88agrutj6tgl457vrds
230614
230613
2026-04-05T14:31:40Z
Lee
19
[[:en:𑀒]] වෙතින් එක් සංශෝධනයක්
230613
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=au|sc=Brah}}
# {{n-g|the [[fourteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
g7fs45sgfxoo88agrutj6tgl457vrds
230679
230614
2026-04-05T14:42:05Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230679
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=au|sc=Brah}}
# {{n-g|the [[fourteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
ipads4z5ybh3jxmnf05bz9ln24t9j4p
𑀑
0
141698
230615
2021-02-10T13:58:33Z
en>SodhakSH
0
Created page with "{{character info}} ==Translingual== ===Letter=== {{head|mul|letter|tr=o|sc=Brah}} # {{n-g|the [[thirteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}"
230615
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=o|sc=Brah}}
# {{n-g|the [[thirteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
d4wyugjhtxrr0syayqta1j4oayx8c0w
230616
230615
2026-04-05T14:31:55Z
Lee
19
[[:en:𑀑]] වෙතින් එක් සංශෝධනයක්
230615
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=o|sc=Brah}}
# {{n-g|the [[thirteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
d4wyugjhtxrr0syayqta1j4oayx8c0w
230678
230616
2026-04-05T14:41:55Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230678
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=o|sc=Brah}}
# {{n-g|the [[thirteenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
1s02ngrqw3lnu8mr61p82yokbmt4xah
𑀐
0
141699
230617
2021-02-10T13:57:59Z
en>SodhakSH
0
230617
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ai|sc=Brah}}
# {{n-g|the [[twelfth]] [[vowel]] of the [[Brahmi]] [[script]]}}
bus3c09i856jq1jsqscwxycz4nucdpr
230618
230617
2026-04-05T14:32:11Z
Lee
19
[[:en:𑀐]] වෙතින් එක් සංශෝධනයක්
230617
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ai|sc=Brah}}
# {{n-g|the [[twelfth]] [[vowel]] of the [[Brahmi]] [[script]]}}
bus3c09i856jq1jsqscwxycz4nucdpr
230674
230618
2026-04-05T14:41:45Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230674
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ai|sc=Brah}}
# {{n-g|the [[twelfth]] [[vowel]] of the [[Brahmi]] [[script]]}}
oppsnkbncoacdwdr94vld7of1u2rafm
𑀏
0
141700
230619
2024-09-01T05:37:12Z
en>WingerBot
0
deprecated code 'inc-pra' -> 'pra' for Prakrit (manually assisted)
230619
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=e}}
# {{n-g|the [[eleventh]] [[vowel]] of the [[Brahmi]] [[script]]}}
==Prakrit==
===Etymology===
{{inh+|pra|sa|अयि}}.
===Interjection===
{{pra-intj|s}}
# [[hey]]
===References===
* {{R:hi:Misra|119}}
i31slx0g3d31uiqdwz1yxfl4xv8k1ci
230620
230619
2026-04-05T14:32:26Z
Lee
19
[[:en:𑀏]] වෙතින් එක් සංශෝධනයක්
230619
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=e}}
# {{n-g|the [[eleventh]] [[vowel]] of the [[Brahmi]] [[script]]}}
==Prakrit==
===Etymology===
{{inh+|pra|sa|अयि}}.
===Interjection===
{{pra-intj|s}}
# [[hey]]
===References===
* {{R:hi:Misra|119}}
i31slx0g3d31uiqdwz1yxfl4xv8k1ci
230670
230620
2026-04-05T14:41:35Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230670
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=e}}
# {{n-g|the [[eleventh]] [[vowel]] of the [[Brahmi]] [[script]]}}
== ප්රාකෘත ==
=== නිරුක්තිය ===
{{inh+|pra|sa|अयि}}.
=== විශ්මයාර්ථ පදය ===
{{pra-intj|s}}
# [[hey]]
=== මූලාශ්ර ===
* {{R:hi:Misra|119}}
2s63w7sgenzzzp4hmcmw932mpveq7d2
𑀎
0
141701
230621
2022-06-23T15:34:52Z
en>AleksiB 1945
0
230621
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ḹ|sc=Brah}}
# {{n-g|the [[tenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
4sto3ts5snfq10ga8n95s74mkypqrim
230622
230621
2026-04-05T14:32:39Z
Lee
19
[[:en:𑀎]] වෙතින් එක් සංශෝධනයක්
230621
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ḹ|sc=Brah}}
# {{n-g|the [[tenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
4sto3ts5snfq10ga8n95s74mkypqrim
230667
230622
2026-04-05T14:41:25Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230667
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ḹ|sc=Brah}}
# {{n-g|the [[tenth]] [[vowel]] of the [[Brahmi]] [[script]]}}
k4ezmia8068jmz79ngo71qx5cdm4ido
𑀍
0
141702
230623
2025-03-13T14:01:18Z
en>Surjection
0
Reverted edits by [[Special:Contributions/2601:601:4280:BA70:9504:9749:7C22:CBB|2601:601:4280:BA70:9504:9749:7C22:CBB]]. If you think this rollback is in error, please leave a message on my [[User talk:Surjection|talk page]].
230623
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ḷ|sc=Brah}}
# {{n-g|the [[ninth]] [[vowel]] of the [[Brahmi]] [[script]]}}
4ed1yy978u1b5fp3r6qzs6eozbwk8tx
230624
230623
2026-04-05T14:32:54Z
Lee
19
[[:en:𑀍]] වෙතින් එක් සංශෝධනයක්
230623
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ḷ|sc=Brah}}
# {{n-g|the [[ninth]] [[vowel]] of the [[Brahmi]] [[script]]}}
4ed1yy978u1b5fp3r6qzs6eozbwk8tx
230666
230624
2026-04-05T14:41:15Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230666
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ḷ|sc=Brah}}
# {{n-g|the [[ninth]] [[vowel]] of the [[Brahmi]] [[script]]}}
3rxyl05k1ynywrt376sl06usok4gsst
𑀌
0
141703
230625
2021-02-10T13:53:08Z
en>SodhakSH
0
Created page with "{{character info}} ==Translingual== ===Letter=== {{head|mul|letter|tr=ṝ|sc=Brah}} # {{n-g|the [[eighth]] [[vowel]] of the [[Brahmi]] [[script]]}}"
230625
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ṝ|sc=Brah}}
# {{n-g|the [[eighth]] [[vowel]] of the [[Brahmi]] [[script]]}}
hg35358zg53cyuvg6y98id4b4j4fdj0
230626
230625
2026-04-05T14:33:08Z
Lee
19
[[:en:𑀌]] වෙතින් එක් සංශෝධනයක්
230625
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ṝ|sc=Brah}}
# {{n-g|the [[eighth]] [[vowel]] of the [[Brahmi]] [[script]]}}
hg35358zg53cyuvg6y98id4b4j4fdj0
230665
230626
2026-04-05T14:41:05Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230665
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ṝ|sc=Brah}}
# {{n-g|the [[eighth]] [[vowel]] of the [[Brahmi]] [[script]]}}
n0272p6l9ysliu8h17rc34wzodbxv6q
𑀋
0
141704
230627
2021-02-10T13:47:30Z
en>SodhakSH
0
Created page with "{{character info}} ==Translingual== ===Letter=== {{head|mul|letter|tr=ṛ|sc=Brah}} # {{n-g|the [[seventh]] [[vowel]] of the [[Brahmi]] [[script]]}}"
230627
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ṛ|sc=Brah}}
# {{n-g|the [[seventh]] [[vowel]] of the [[Brahmi]] [[script]]}}
0ocduxgzjqqx6ik2ikdizkh3yxoolpt
230628
230627
2026-04-05T14:33:23Z
Lee
19
[[:en:𑀋]] වෙතින් එක් සංශෝධනයක්
230627
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ṛ|sc=Brah}}
# {{n-g|the [[seventh]] [[vowel]] of the [[Brahmi]] [[script]]}}
0ocduxgzjqqx6ik2ikdizkh3yxoolpt
230664
230628
2026-04-05T14:40:55Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230664
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ṛ|sc=Brah}}
# {{n-g|the [[seventh]] [[vowel]] of the [[Brahmi]] [[script]]}}
3cxwz078aw3otrw4x8oe0alu1d9rd3n
𑀊
0
141705
230629
2021-02-10T13:48:17Z
en>SodhakSH
0
230629
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ū|sc=Brah}}
# {{n-g|the [[sixth]] [[vowel]] of the [[Brahmi]] [[script]]}}
teese8yzzotj85tdq5u8ewb86bzh7u2
230630
230629
2026-04-05T14:33:47Z
Lee
19
[[:en:𑀊]] වෙතින් එක් සංශෝධනයක්
230629
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ū|sc=Brah}}
# {{n-g|the [[sixth]] [[vowel]] of the [[Brahmi]] [[script]]}}
teese8yzzotj85tdq5u8ewb86bzh7u2
230663
230630
2026-04-05T14:40:45Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230663
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ū|sc=Brah}}
# {{n-g|the [[sixth]] [[vowel]] of the [[Brahmi]] [[script]]}}
0jm9bh9wtcptu74238g4sxjy4g32i8h
𑀉
0
141706
230631
2024-09-11T16:01:37Z
en>ChromeBones
0
230631
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=u|sc=Brah}}
# {{n-g|the [[fifth]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_gujarat_u.svg|15px]] (u)
** Nagari: [[File:Nagari1035_u.svg|15px]] (u)
*** Devanagari: {{l|mul|उ|tr=u}}
*** {{desc|gu|ઉ}}
*** Nandinagari:
** Kalinga:
*** {{desc|or|ଉ}}
** Siddham: [[File:Siddham_u.svg|15px]] (u)
*** Traditional Assamese: [[File:Kamarupi_u.svg|20px]]
*** {{desc|bn|উ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_u.svg|15px]] (u)
** Sharada: {{l|sa|𑆇}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਉ}}
*** Devashesha:
****Takri: [[𑚄]] (u)
****Dogra: [[𑠄]] (u)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఉ}}
** Kadamba:
*** {{desc|kn|ಉ}}
*** Pallava: [[File:Pallava_U.svg|15px]] (u)
**** {{desc|ml|ഉ}}
** {{desc|ta|உ}}
* Tocharian: [[File:Tocharian_letter_u.gif|20px]] (u)
l35414qaisqnzvz4o4lcpnx7nfg8b4m
230632
230631
2026-04-05T14:34:01Z
Lee
19
[[:en:𑀉]] වෙතින් එක් සංශෝධනයක්
230631
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=u|sc=Brah}}
# {{n-g|the [[fifth]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_gujarat_u.svg|15px]] (u)
** Nagari: [[File:Nagari1035_u.svg|15px]] (u)
*** Devanagari: {{l|mul|उ|tr=u}}
*** {{desc|gu|ઉ}}
*** Nandinagari:
** Kalinga:
*** {{desc|or|ଉ}}
** Siddham: [[File:Siddham_u.svg|15px]] (u)
*** Traditional Assamese: [[File:Kamarupi_u.svg|20px]]
*** {{desc|bn|উ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_u.svg|15px]] (u)
** Sharada: {{l|sa|𑆇}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਉ}}
*** Devashesha:
****Takri: [[𑚄]] (u)
****Dogra: [[𑠄]] (u)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఉ}}
** Kadamba:
*** {{desc|kn|ಉ}}
*** Pallava: [[File:Pallava_U.svg|15px]] (u)
**** {{desc|ml|ഉ}}
** {{desc|ta|உ}}
* Tocharian: [[File:Tocharian_letter_u.gif|20px]] (u)
l35414qaisqnzvz4o4lcpnx7nfg8b4m
230660
230632
2026-04-05T14:40:35Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230660
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=u|sc=Brah}}
# {{n-g|the [[fifth]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_gujarat_u.svg|15px]] (u)
** Nagari: [[File:Nagari1035_u.svg|15px]] (u)
*** Devanagari: {{l|mul|उ|tr=u}}
*** {{desc|gu|ઉ}}
*** Nandinagari:
** Kalinga:
*** {{desc|or|ଉ}}
** Siddham: [[File:Siddham_u.svg|15px]] (u)
*** Traditional Assamese: [[File:Kamarupi_u.svg|20px]]
*** {{desc|bn|উ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_u.svg|15px]] (u)
** Sharada: {{l|sa|𑆇}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਉ}}
*** Devashesha:
****Takri: [[𑚄]] (u)
****Dogra: [[𑠄]] (u)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఉ}}
** Kadamba:
*** {{desc|kn|ಉ}}
*** Pallava: [[File:Pallava_U.svg|15px]] (u)
**** {{desc|ml|ഉ}}
** {{desc|ta|உ}}
* Tocharian: [[File:Tocharian_letter_u.gif|20px]] (u)
fsvo1omc43yth0685adx2x8le9maog9
𑀈
0
141707
230633
2025-11-08T02:35:51Z
en>WingerBot
0
replace sclb=, nolb= in {{desc}}/{{desctree}} with sclang=, nolang= respectively; misc cleanups (manually assisted)
230633
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ī|sc=Brah}}
# {{n-g|the [[fourth]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_gujarat_ii.svg|15px]] (ī)
** Nagari: [[File:Nagari1035_ii.svg|15px]] (ī)
*** Devanagari: {{l|mul|ई|tr=ī}}
*** {{desc|gu|ઈ}}
*** Nandinagari: {{l|mul|𑦣}} [[File:NANDINAGARI_LETTER_II.svg|25px]]
** Kalinga:
*** {{desc|or|ଈ}}
** Siddham: [[File:Siddham_ii.svg|15px]] (ī)
*** Traditional Assamese: [[File:Kamarupi_ī.svg|20px]]
*** {{desc|bn|ঈ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_ii.svg|15px]] (ī)
** Sharada: {{l|sa|𑆆}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਈ}}
**** {{desc|mul|𑈂|sclang=1}} (ī)
*** Devashesha:
****Takri: [[𑚃]] (ī)
****Dogra: [[𑠃]] (ī)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఈ}}
** Kadamba:
*** {{desc|kn|ಈ}}
*** Pallava: [[File:Pallava_Ii.svg|15px]] (ī)
**** {{desc|ml|ൟ}}
** {{desc|ta|ஈ}}
* Tocharian: [[File:Tocharian_letter_ii.gif|15px]] (ī)
e7r6c3x9c5lkd0kgv5tjk6t1fa9vmny
230634
230633
2026-04-05T14:34:17Z
Lee
19
[[:en:𑀈]] වෙතින් එක් සංශෝධනයක්
230633
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ī|sc=Brah}}
# {{n-g|the [[fourth]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_gujarat_ii.svg|15px]] (ī)
** Nagari: [[File:Nagari1035_ii.svg|15px]] (ī)
*** Devanagari: {{l|mul|ई|tr=ī}}
*** {{desc|gu|ઈ}}
*** Nandinagari: {{l|mul|𑦣}} [[File:NANDINAGARI_LETTER_II.svg|25px]]
** Kalinga:
*** {{desc|or|ଈ}}
** Siddham: [[File:Siddham_ii.svg|15px]] (ī)
*** Traditional Assamese: [[File:Kamarupi_ī.svg|20px]]
*** {{desc|bn|ঈ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_ii.svg|15px]] (ī)
** Sharada: {{l|sa|𑆆}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਈ}}
**** {{desc|mul|𑈂|sclang=1}} (ī)
*** Devashesha:
****Takri: [[𑚃]] (ī)
****Dogra: [[𑠃]] (ī)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఈ}}
** Kadamba:
*** {{desc|kn|ಈ}}
*** Pallava: [[File:Pallava_Ii.svg|15px]] (ī)
**** {{desc|ml|ൟ}}
** {{desc|ta|ஈ}}
* Tocharian: [[File:Tocharian_letter_ii.gif|15px]] (ī)
e7r6c3x9c5lkd0kgv5tjk6t1fa9vmny
230659
230634
2026-04-05T14:40:25Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230659
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ī|sc=Brah}}
# {{n-g|the [[fourth]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_gujarat_ii.svg|15px]] (ī)
** Nagari: [[File:Nagari1035_ii.svg|15px]] (ī)
*** Devanagari: {{l|mul|ई|tr=ī}}
*** {{desc|gu|ઈ}}
*** Nandinagari: {{l|mul|𑦣}} [[File:NANDINAGARI_LETTER_II.svg|25px]]
** Kalinga:
*** {{desc|or|ଈ}}
** Siddham: [[File:Siddham_ii.svg|15px]] (ī)
*** Traditional Assamese: [[File:Kamarupi_ī.svg|20px]]
*** {{desc|bn|ঈ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_ii.svg|15px]] (ī)
** Sharada: {{l|sa|𑆆}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਈ}}
**** {{desc|mul|𑈂|sclang=1}} (ī)
*** Devashesha:
****Takri: [[𑚃]] (ī)
****Dogra: [[𑠃]] (ī)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఈ}}
** Kadamba:
*** {{desc|kn|ಈ}}
*** Pallava: [[File:Pallava_Ii.svg|15px]] (ī)
**** {{desc|ml|ൟ}}
** {{desc|ta|ஈ}}
* Tocharian: [[File:Tocharian_letter_ii.gif|15px]] (ī)
6utz61zkvgq7bt3yeaphsbxmrv7uz68
𑀇
0
141708
230635
2024-09-11T19:45:28Z
en>ChromeBones
0
230635
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=i|sc=Brah}}
# {{n-g|the [[third]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_allahabad_i.svg|15px]], [[File:Gupta_ashoka_i.svg|15px]], [[File:Gupta_girnar_i.svg|15px]], [[File:Gupta_gujarat_i.svg|15px]] (i)
** Nagari: [[File:Nagari1035_i.svg|15px]] (i)
*** Devanagari: {{l|mul|इ|tr=i}}
*** {{desc|gu|ઇ}}
*** Nandinagari: {{l|mul|𑦢}} [[File:NANDINAGARI_LETTER_I.svg|25px]]
** Kalinga:
*** {{desc|or|ଇ}}
** Siddham: [[File:Siddham_i.svg|15px]] (i)
*** Traditional Assamese: [[File:Kamarupi_i.svg|20px]], [[File:Kamarupi_i_variant_1.svg|20px]]
*** {{desc|bn|ই}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_i.svg|15px]] (i)
** Sharada: {{l|sa|𑆅}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ੲ}}
**** Khojki: {{l|mul|𑉀}} (i)
*** Devashesha:
**** Takri: {{l|mul|𑚂}} (i)
**** Dogri: {{l|mul|𑠂}} (i)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఇ}}
** Kadamba:
*** {{desc|kn|ಇ}}
*** Pallava: [[File:Pallava_I.svg|15px]] (i)
**** {{desc|ml|ഇ}}
** {{desc|ta|இ}}
* Tocharian: [[File:Tocharian_letter_i.gif|20px]] (i)
6i2wrdeqkygxn6zciad3tmuk1t5sorl
230636
230635
2026-04-05T14:34:30Z
Lee
19
[[:en:𑀇]] වෙතින් එක් සංශෝධනයක්
230635
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=i|sc=Brah}}
# {{n-g|the [[third]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_allahabad_i.svg|15px]], [[File:Gupta_ashoka_i.svg|15px]], [[File:Gupta_girnar_i.svg|15px]], [[File:Gupta_gujarat_i.svg|15px]] (i)
** Nagari: [[File:Nagari1035_i.svg|15px]] (i)
*** Devanagari: {{l|mul|इ|tr=i}}
*** {{desc|gu|ઇ}}
*** Nandinagari: {{l|mul|𑦢}} [[File:NANDINAGARI_LETTER_I.svg|25px]]
** Kalinga:
*** {{desc|or|ଇ}}
** Siddham: [[File:Siddham_i.svg|15px]] (i)
*** Traditional Assamese: [[File:Kamarupi_i.svg|20px]], [[File:Kamarupi_i_variant_1.svg|20px]]
*** {{desc|bn|ই}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_i.svg|15px]] (i)
** Sharada: {{l|sa|𑆅}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ੲ}}
**** Khojki: {{l|mul|𑉀}} (i)
*** Devashesha:
**** Takri: {{l|mul|𑚂}} (i)
**** Dogri: {{l|mul|𑠂}} (i)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఇ}}
** Kadamba:
*** {{desc|kn|ಇ}}
*** Pallava: [[File:Pallava_I.svg|15px]] (i)
**** {{desc|ml|ഇ}}
** {{desc|ta|இ}}
* Tocharian: [[File:Tocharian_letter_i.gif|20px]] (i)
6i2wrdeqkygxn6zciad3tmuk1t5sorl
230658
230636
2026-04-05T14:40:15Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230658
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=i|sc=Brah}}
# {{n-g|the [[third]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_allahabad_i.svg|15px]], [[File:Gupta_ashoka_i.svg|15px]], [[File:Gupta_girnar_i.svg|15px]], [[File:Gupta_gujarat_i.svg|15px]] (i)
** Nagari: [[File:Nagari1035_i.svg|15px]] (i)
*** Devanagari: {{l|mul|इ|tr=i}}
*** {{desc|gu|ઇ}}
*** Nandinagari: {{l|mul|𑦢}} [[File:NANDINAGARI_LETTER_I.svg|25px]]
** Kalinga:
*** {{desc|or|ଇ}}
** Siddham: [[File:Siddham_i.svg|15px]] (i)
*** Traditional Assamese: [[File:Kamarupi_i.svg|20px]], [[File:Kamarupi_i_variant_1.svg|20px]]
*** {{desc|bn|ই}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_i.svg|15px]] (i)
** Sharada: {{l|sa|𑆅}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ੲ}}
**** Khojki: {{l|mul|𑉀}} (i)
*** Devashesha:
**** Takri: {{l|mul|𑚂}} (i)
**** Dogri: {{l|mul|𑠂}} (i)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఇ}}
** Kadamba:
*** {{desc|kn|ಇ}}
*** Pallava: [[File:Pallava_I.svg|15px]] (i)
**** {{desc|ml|ഇ}}
** {{desc|ta|இ}}
* Tocharian: [[File:Tocharian_letter_i.gif|20px]] (i)
ipdo5iqt000tgro2cdaoje4yg2hxub1
𑀆
0
141709
230637
2025-11-08T02:07:40Z
en>WingerBot
0
replace sclb=, nolb= in {{desc}}/{{desctree}} with sclang=, nolang= respectively; misc cleanups (manually assisted)
230637
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ā|sc=Brah}}
# {{n-g|the [[second]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_allahabad_aa.svg|15px]], [[File:Gupta_ashoka_aa.svg|15px]], [[File:Gupta_girnar_aa.svg|15px]], [[File:Gupta_gujarat_aa.svg|15px]] (ā)
** Nagari: [[File:Nagari1035_aa.svg|15px]] (ā)
*** Devanagari: {{l|mul|आ|tr=ā}}
*** {{desc|gu|આ}}
*** Nandinagari: {{l|mul|𑦡}} [[File:NANDINAGARI_LETTER_AA.svg|25px]]
** Kalinga:
*** {{desc|or|ଆ}}
** Siddham: [[File:Siddham_aa.svg|15px]] (ā)
*** Traditional Assamese: [[File:Kamarupi_ā.svg|22px]]
*** {{desc|bn|আ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_aa.svg|15px]] (ā)
** Sharada: {{l|sa|𑆄}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਆ}}
**** {{desc|mul|𑈁|sclang=1}} (ā)
*** Devashesha:
**** {{desc|mul|𑚁|sclang=1}} (ā)
**** {{desc|mul|𑠁|sclang=1}} (ā)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఆ}}
** Kadamba:
*** {{desc|kn|ಆ}}
*** Pallava: [[File:Pallava_Aa.svg|15px]] (ā)
**** {{desc|ml|ആ}}
** {{desc|ta|ஆ}}
* Tocharian: [[File:Tocharian_letter_aa.gif|20px]] (ā)
==Old Tamil==
===Etymology===
{{inh+|oty|dra-pro|*ā}}.
===Pronunciation===
* {{IPA|oty|/ɑː/}}
===Noun===
{{head|oty|noun}}
# [[cow]]; the [[female]] of an [[ox]]
====Descendants====
* {{desc|ml|ആ|ആവ്|ആൻ}}
* {{desc|ta|ஆ|ஆன்}}
===References===
* {{R:dra:DED|334}}
2fcoa27bwiq6q9cxwwfhn3bz9v0kimg
230638
230637
2026-04-05T14:34:45Z
Lee
19
[[:en:𑀆]] වෙතින් එක් සංශෝධනයක්
230637
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Letter===
{{head|mul|letter|tr=ā|sc=Brah}}
# {{n-g|the [[second]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_allahabad_aa.svg|15px]], [[File:Gupta_ashoka_aa.svg|15px]], [[File:Gupta_girnar_aa.svg|15px]], [[File:Gupta_gujarat_aa.svg|15px]] (ā)
** Nagari: [[File:Nagari1035_aa.svg|15px]] (ā)
*** Devanagari: {{l|mul|आ|tr=ā}}
*** {{desc|gu|આ}}
*** Nandinagari: {{l|mul|𑦡}} [[File:NANDINAGARI_LETTER_AA.svg|25px]]
** Kalinga:
*** {{desc|or|ଆ}}
** Siddham: [[File:Siddham_aa.svg|15px]] (ā)
*** Traditional Assamese: [[File:Kamarupi_ā.svg|22px]]
*** {{desc|bn|আ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_aa.svg|15px]] (ā)
** Sharada: {{l|sa|𑆄}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਆ}}
**** {{desc|mul|𑈁|sclang=1}} (ā)
*** Devashesha:
**** {{desc|mul|𑚁|sclang=1}} (ā)
**** {{desc|mul|𑠁|sclang=1}} (ā)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఆ}}
** Kadamba:
*** {{desc|kn|ಆ}}
*** Pallava: [[File:Pallava_Aa.svg|15px]] (ā)
**** {{desc|ml|ആ}}
** {{desc|ta|ஆ}}
* Tocharian: [[File:Tocharian_letter_aa.gif|20px]] (ā)
==Old Tamil==
===Etymology===
{{inh+|oty|dra-pro|*ā}}.
===Pronunciation===
* {{IPA|oty|/ɑː/}}
===Noun===
{{head|oty|noun}}
# [[cow]]; the [[female]] of an [[ox]]
====Descendants====
* {{desc|ml|ആ|ആവ്|ആൻ}}
* {{desc|ta|ஆ|ஆன்}}
===References===
* {{R:dra:DED|334}}
2fcoa27bwiq6q9cxwwfhn3bz9v0kimg
230657
230638
2026-04-05T14:40:05Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230657
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
=== අකුර ===
{{head|mul|letter|tr=ā|sc=Brah}}
# {{n-g|the [[second]] [[vowel]] of the [[Brahmi]] [[script]]}}
====Descendants====
* Gupta: [[File:Gupta_allahabad_aa.svg|15px]], [[File:Gupta_ashoka_aa.svg|15px]], [[File:Gupta_girnar_aa.svg|15px]], [[File:Gupta_gujarat_aa.svg|15px]] (ā)
** Nagari: [[File:Nagari1035_aa.svg|15px]] (ā)
*** Devanagari: {{l|mul|आ|tr=ā}}
*** {{desc|gu|આ}}
*** Nandinagari: {{l|mul|𑦡}} [[File:NANDINAGARI_LETTER_AA.svg|25px]]
** Kalinga:
*** {{desc|or|ଆ}}
** Siddham: [[File:Siddham_aa.svg|15px]] (ā)
*** Traditional Assamese: [[File:Kamarupi_ā.svg|22px]]
*** {{desc|bn|আ}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_aa.svg|15px]] (ā)
** Sharada: {{l|sa|𑆄}}
*** Landa scripts:
**** Gurmukhi: {{l|pa|ਆ}}
**** {{desc|mul|𑈁|sclang=1}} (ā)
*** Devashesha:
**** {{desc|mul|𑚁|sclang=1}} (ā)
**** {{desc|mul|𑠁|sclang=1}} (ā)
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|te|ఆ}}
** Kadamba:
*** {{desc|kn|ಆ}}
*** Pallava: [[File:Pallava_Aa.svg|15px]] (ā)
**** {{desc|ml|ആ}}
** {{desc|ta|ஆ}}
* Tocharian: [[File:Tocharian_letter_aa.gif|20px]] (ā)
==Old Tamil==
=== නිරුක්තිය ===
{{inh+|oty|dra-pro|*ā}}.
=== උච්චාරණය ===
* {{IPA|oty|/ɑː/}}
=== නාම පදය ===
{{head|oty|noun}}
# [[cow]]; the [[female]] of an [[ox]]
====Descendants====
* {{desc|ml|ആ|ആവ്|ആൻ}}
* {{desc|ta|ஆ|ஆன்}}
=== මූලාශ්ර ===
* {{R:dra:DED|334}}
layrxaghiormexwkjdlye7n12hco4n4
𑀅
0
141710
230639
2025-11-08T01:51:57Z
en>WingerBot
0
replace sclb=, nolb= in {{desc}}/{{desctree}} with sclang=, nolang= respectively; misc cleanups (manually assisted)
230639
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Possibly from {{cog|arc|𐡀}}, although this is debated. Compare {{cog|he|א}}.
===Letter===
{{head|mul|letter|tr=a}}
# {{n-g|the first [[vowel]] of the [[Brahmi]] script}}
====Usage notes====
This character also has the form [[File:Brah a.svg|12px]].
====Descendants====
{{top2}}
* Gupta: [[File:Gupta_allahabad_a.svg|15px]], [[File:Gupta_ashoka_a.svg|15px]], [[File:Gupta_girnar_a.svg|15px]], [[File:Gupta_gujarat_a.svg|15px]] (a)
** Nagari: [[File:Nagari1035_a.svg|15px]] (a)
*** {{desc|mul|अ|sclang=1}}
**** {{desc|mul|𑘁|sclang=1}}
*** {{desc|mul|અ|sclang=1}}
*** {{desc|mul|𑦠|sclang=1}}
** Kalinga:
*** {{desc|mul|ଅ|sclang=1}}
** {{desc|mul|𑖀|sclang=1}}
*** Traditional Assamese: [[File:Kamarupi_a.svg|20px]]
*** {{desc|mul|অ|sclang=1}}
*** {{desc|mul|ཨ|sclang=1}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_a.svg|15px]] (a)
**** Soyombo: [[File:Soyombo_a.svg|15px]] (a)
** {{desc|mul|𑆃|sclang=1}}
*** Landa scripts:
**** {{desc|mul|ਅ|sclang=1}}
**** {{desc|mul|𑈀|sclang=1}}
*** Devashesha:
**** {{desc|mul|𑠀|sclang=1}}
**** {{desc|mul|𑚀|sclang=1}}
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|mul|అ|sclang=1}}
** Kadamba:
*** {{desc|mul|ಅ|sclang=1}}
** {{desc|mul|𑌅|sclang=1}} [[File:GRANTHA_LETTER_A.svg|25px]] (a)
*** Pallava: [[File:Pallava_A.svg|15px]] (a)
**** {{desc|mul|အ|sclang=1}}
**** {{desc|mul|അ|sclang=1}}
**** {{desc|mul|අ|sclang=1}}
*** Kawi:
**** {{desc|mul|ꦄ|sclang=1}}
**** {{desc|mul|ᮃ|sclang=1}}
**** {{desc|mul|ᜀ|sclang=1}} [[File:TAGALOG_LETTER_A.svg|15px]]
*** {{desc|mul|អ|sclang=1}}
**** {{desc|mul|ອ|sclang=1}}
**** {{desc|mul|อ|sclang=1}}
** {{desc|mul|அ|sclang=1}}
** Tamil-Brahmi:
** Vatteluttu:
* Tocharian: [[File:Tocharian_letter_a.gif|20px]] (a)
{{bottom}}
==Prakrit==
===Alternative forms===
* {{alt|pra|𑀬}}
===Etymology===
{{dercat|pra|ine-pro|iir-pro|inc-pro|inh=3}}
{{inh+|pra|sa|च}}. Cognate with {{cog|pi|ca}}.
===Conjunction===
{{pra-con}}
# [[and]]
# [[also]], [[moreover]]
===References===
* {{R:inc:Woolner|11}}
* {{R:pra:Sheth}}
hlxtfsnz50k0k3h5z4bmii0r0rnlooo
230640
230639
2026-04-05T14:35:02Z
Lee
19
[[:en:𑀅]] වෙතින් එක් සංශෝධනයක්
230639
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Possibly from {{cog|arc|𐡀}}, although this is debated. Compare {{cog|he|א}}.
===Letter===
{{head|mul|letter|tr=a}}
# {{n-g|the first [[vowel]] of the [[Brahmi]] script}}
====Usage notes====
This character also has the form [[File:Brah a.svg|12px]].
====Descendants====
{{top2}}
* Gupta: [[File:Gupta_allahabad_a.svg|15px]], [[File:Gupta_ashoka_a.svg|15px]], [[File:Gupta_girnar_a.svg|15px]], [[File:Gupta_gujarat_a.svg|15px]] (a)
** Nagari: [[File:Nagari1035_a.svg|15px]] (a)
*** {{desc|mul|अ|sclang=1}}
**** {{desc|mul|𑘁|sclang=1}}
*** {{desc|mul|અ|sclang=1}}
*** {{desc|mul|𑦠|sclang=1}}
** Kalinga:
*** {{desc|mul|ଅ|sclang=1}}
** {{desc|mul|𑖀|sclang=1}}
*** Traditional Assamese: [[File:Kamarupi_a.svg|20px]]
*** {{desc|mul|অ|sclang=1}}
*** {{desc|mul|ཨ|sclang=1}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_a.svg|15px]] (a)
**** Soyombo: [[File:Soyombo_a.svg|15px]] (a)
** {{desc|mul|𑆃|sclang=1}}
*** Landa scripts:
**** {{desc|mul|ਅ|sclang=1}}
**** {{desc|mul|𑈀|sclang=1}}
*** Devashesha:
**** {{desc|mul|𑠀|sclang=1}}
**** {{desc|mul|𑚀|sclang=1}}
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|mul|అ|sclang=1}}
** Kadamba:
*** {{desc|mul|ಅ|sclang=1}}
** {{desc|mul|𑌅|sclang=1}} [[File:GRANTHA_LETTER_A.svg|25px]] (a)
*** Pallava: [[File:Pallava_A.svg|15px]] (a)
**** {{desc|mul|အ|sclang=1}}
**** {{desc|mul|അ|sclang=1}}
**** {{desc|mul|අ|sclang=1}}
*** Kawi:
**** {{desc|mul|ꦄ|sclang=1}}
**** {{desc|mul|ᮃ|sclang=1}}
**** {{desc|mul|ᜀ|sclang=1}} [[File:TAGALOG_LETTER_A.svg|15px]]
*** {{desc|mul|អ|sclang=1}}
**** {{desc|mul|ອ|sclang=1}}
**** {{desc|mul|อ|sclang=1}}
** {{desc|mul|அ|sclang=1}}
** Tamil-Brahmi:
** Vatteluttu:
* Tocharian: [[File:Tocharian_letter_a.gif|20px]] (a)
{{bottom}}
==Prakrit==
===Alternative forms===
* {{alt|pra|𑀬}}
===Etymology===
{{dercat|pra|ine-pro|iir-pro|inc-pro|inh=3}}
{{inh+|pra|sa|च}}. Cognate with {{cog|pi|ca}}.
===Conjunction===
{{pra-con}}
# [[and]]
# [[also]], [[moreover]]
===References===
* {{R:inc:Woolner|11}}
* {{R:pra:Sheth}}
hlxtfsnz50k0k3h5z4bmii0r0rnlooo
230656
230640
2026-04-05T14:39:55Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230656
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
===Glyph origin===
Possibly from {{cog|arc|𐡀}}, although this is debated. Compare {{cog|he|א}}.
=== අකුර ===
{{head|mul|letter|tr=a}}
# {{n-g|the first [[vowel]] of the [[Brahmi]] script}}
==== භාවිත සටහන් ====
This character also has the form [[File:Brah a.svg|12px]].
====Descendants====
{{top2}}
* Gupta: [[File:Gupta_allahabad_a.svg|15px]], [[File:Gupta_ashoka_a.svg|15px]], [[File:Gupta_girnar_a.svg|15px]], [[File:Gupta_gujarat_a.svg|15px]] (a)
** Nagari: [[File:Nagari1035_a.svg|15px]] (a)
*** {{desc|mul|अ|sclang=1}}
**** {{desc|mul|𑘁|sclang=1}}
*** {{desc|mul|અ|sclang=1}}
*** {{desc|mul|𑦠|sclang=1}}
** Kalinga:
*** {{desc|mul|ଅ|sclang=1}}
** {{desc|mul|𑖀|sclang=1}}
*** Traditional Assamese: [[File:Kamarupi_a.svg|20px]]
*** {{desc|mul|অ|sclang=1}}
*** {{desc|mul|ཨ|sclang=1}}
** Nepali scripts:
*** Ranjana: [[File:Ranjana_a.svg|15px]] (a)
**** Soyombo: [[File:Soyombo_a.svg|15px]] (a)
** {{desc|mul|𑆃|sclang=1}}
*** Landa scripts:
**** {{desc|mul|ਅ|sclang=1}}
**** {{desc|mul|𑈀|sclang=1}}
*** Devashesha:
**** {{desc|mul|𑠀|sclang=1}}
**** {{desc|mul|𑚀|sclang=1}}
* Southern Brahmi:
** Bhattiprolu:
*** {{desc|mul|అ|sclang=1}}
** Kadamba:
*** {{desc|mul|ಅ|sclang=1}}
** {{desc|mul|𑌅|sclang=1}} [[File:GRANTHA_LETTER_A.svg|25px]] (a)
*** Pallava: [[File:Pallava_A.svg|15px]] (a)
**** {{desc|mul|အ|sclang=1}}
**** {{desc|mul|അ|sclang=1}}
**** {{desc|mul|අ|sclang=1}}
*** Kawi:
**** {{desc|mul|ꦄ|sclang=1}}
**** {{desc|mul|ᮃ|sclang=1}}
**** {{desc|mul|ᜀ|sclang=1}} [[File:TAGALOG_LETTER_A.svg|15px]]
*** {{desc|mul|អ|sclang=1}}
**** {{desc|mul|ອ|sclang=1}}
**** {{desc|mul|อ|sclang=1}}
** {{desc|mul|அ|sclang=1}}
** Tamil-Brahmi:
** Vatteluttu:
* Tocharian: [[File:Tocharian_letter_a.gif|20px]] (a)
{{bottom}}
== ප්රාකෘත ==
=== වෙනත් ආකාර ===
* {{alt|pra|𑀬}}
=== නිරුක්තිය ===
{{dercat|pra|ine-pro|iir-pro|inc-pro|inh=3}}
{{inh+|pra|sa|च}}. Cognate with {{cog|pi|ca}}.
===Conjunction===
{{pra-con}}
# [[and]]
# [[also]], [[moreover]]
=== මූලාශ්ර ===
* {{R:inc:Woolner|11}}
* {{R:pra:Sheth}}
ap5203pctbh4ayoo9nf00q94dya2z9z
𑀄
0
141711
230641
2024-09-10T14:05:25Z
en>ChromeBones
0
230641
wikitext
text/x-wiki
{{character info}}
==Sanskrit==
===Letter===
{{head|sa|letter|tr=f}}
# the sign {{m|sa|उपध्मानीय}}, occurring as a result of [[external]] [[sandhi]] between a [[visarga]] and an [[unvoiced]] [[bilabial]] ({{m|sa|𑀧}}, {{m|sa|𑀨}}) in [[Vedic]] [[Sanskrit]]
tq4veyol2gwgzrzj9eu0rimsv2c92cz
230642
230641
2026-04-05T14:35:19Z
Lee
19
[[:en:𑀄]] වෙතින් එක් සංශෝධනයක්
230641
wikitext
text/x-wiki
{{character info}}
==Sanskrit==
===Letter===
{{head|sa|letter|tr=f}}
# the sign {{m|sa|उपध्मानीय}}, occurring as a result of [[external]] [[sandhi]] between a [[visarga]] and an [[unvoiced]] [[bilabial]] ({{m|sa|𑀧}}, {{m|sa|𑀨}}) in [[Vedic]] [[Sanskrit]]
tq4veyol2gwgzrzj9eu0rimsv2c92cz
230655
230642
2026-04-05T14:39:45Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230655
wikitext
text/x-wiki
{{character info}}
== සංස්කෘත ==
=== අකුර ===
{{head|sa|letter|tr=f}}
# the sign {{m|sa|उपध्मानीय}}, occurring as a result of [[external]] [[sandhi]] between a [[visarga]] and an [[unvoiced]] [[bilabial]] ({{m|sa|𑀧}}, {{m|sa|𑀨}}) in [[Vedic]] [[Sanskrit]]
qz8xb2hwayes6tor13lvdct3wxgf7a1
𑀃
0
141712
230643
2024-09-10T14:01:40Z
en>ChromeBones
0
230643
wikitext
text/x-wiki
{{character info}}
==Sanskrit==
===Letter===
{{head|sa|letter|tr=x}}
# the sign {{m|sa|जिह्वामूलीय|tr=jihvā́mūlīya}}, occurring as a result of [[external]] [[sandhi]] between a [[visarga]] and an [[unvoiced]] [[velar]] ({{m|sa|𑀓}}, {{m|sa|𑀔}}) in [[Vedic]] [[Sanskrit]]
ja22hmmncx2deyn4ajp6wx08s8b756x
230644
230643
2026-04-05T14:36:52Z
Lee
19
[[:en:𑀃]] වෙතින් එක් සංශෝධනයක්
230643
wikitext
text/x-wiki
{{character info}}
==Sanskrit==
===Letter===
{{head|sa|letter|tr=x}}
# the sign {{m|sa|जिह्वामूलीय|tr=jihvā́mūlīya}}, occurring as a result of [[external]] [[sandhi]] between a [[visarga]] and an [[unvoiced]] [[velar]] ({{m|sa|𑀓}}, {{m|sa|𑀔}}) in [[Vedic]] [[Sanskrit]]
ja22hmmncx2deyn4ajp6wx08s8b756x
230654
230644
2026-04-05T14:39:35Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230654
wikitext
text/x-wiki
{{character info}}
== සංස්කෘත ==
=== අකුර ===
{{head|sa|letter|tr=x}}
# the sign {{m|sa|जिह्वामूलीय|tr=jihvā́mūlīya}}, occurring as a result of [[external]] [[sandhi]] between a [[visarga]] and an [[unvoiced]] [[velar]] ({{m|sa|𑀓}}, {{m|sa|𑀔}}) in [[Vedic]] [[Sanskrit]]
5u9pj7nnwa4zbszgk5gpew4d03855lz
𑀂
0
141713
230645
2022-06-23T15:56:43Z
en>AleksiB 1945
0
230645
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Likely related to other visarga signs, such as {{lang|mul|sc=Deva|[[ः]]}}.
===Letter===
{{head|mul|letter|tr=a}}
# {{n-g|The equivalent of the [[visarga]] in the Brahmi script}}.
djvl8nry4tyf07px62mf6yt1aiupdgd
230646
230645
2026-04-05T14:37:06Z
Lee
19
[[:en:𑀂]] වෙතින් එක් සංශෝධනයක්
230645
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Likely related to other visarga signs, such as {{lang|mul|sc=Deva|[[ः]]}}.
===Letter===
{{head|mul|letter|tr=a}}
# {{n-g|The equivalent of the [[visarga]] in the Brahmi script}}.
djvl8nry4tyf07px62mf6yt1aiupdgd
230653
230646
2026-04-05T14:39:25Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230653
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
===Glyph origin===
Likely related to other visarga signs, such as {{lang|mul|sc=Deva|[[ः]]}}.
=== අකුර ===
{{head|mul|letter|tr=a}}
# {{n-g|The equivalent of the [[visarga]] in the Brahmi script}}.
cuftrn5dt7sc4gq4ijekr1q6ryw0vo8
𑀁
0
141714
230647
2022-06-23T15:57:10Z
en>AleksiB 1945
0
230647
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Likely related to other anusvara signs, such as {{lang|mul|sc=Deva|[[ं]]}}.
===Letter===
{{head|mul|letter}}
# {{n-g|The equivalent of the [[anusvara]] in the Brahmi script}}.
4f0kdvdcbzwn6wswr1zvrlw1upgus5b
230648
230647
2026-04-05T14:37:27Z
Lee
19
[[:en:𑀁]] වෙතින් එක් සංශෝධනයක්
230647
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Likely related to other anusvara signs, such as {{lang|mul|sc=Deva|[[ं]]}}.
===Letter===
{{head|mul|letter}}
# {{n-g|The equivalent of the [[anusvara]] in the Brahmi script}}.
4f0kdvdcbzwn6wswr1zvrlw1upgus5b
230652
230648
2026-04-05T14:39:15Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230652
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
===Glyph origin===
Likely related to other anusvara signs, such as {{lang|mul|sc=Deva|[[ं]]}}.
=== අකුර ===
{{head|mul|letter}}
# {{n-g|The equivalent of the [[anusvara]] in the Brahmi script}}.
9pfe2x0u5uqyxkqd72fiyil3j2z5gji
𑀀
0
141715
230649
2022-06-23T15:57:29Z
en>AleksiB 1945
0
230649
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Likely related to other candrabindu signs, such as {{lang|mul|sc=Deva|[[ँ]]}}.
===Letter===
{{head|mul|letter}}
# {{n-g|The equivalent of the [[candrabindu]] in the Brahmi script}}.
pwyhenm8sllkvukvd4qszkbrbj1awgq
230650
230649
2026-04-05T14:37:43Z
Lee
19
[[:en:𑀀]] වෙතින් එක් සංශෝධනයක්
230649
wikitext
text/x-wiki
{{character info}}
==Translingual==
===Glyph origin===
Likely related to other candrabindu signs, such as {{lang|mul|sc=Deva|[[ँ]]}}.
===Letter===
{{head|mul|letter}}
# {{n-g|The equivalent of the [[candrabindu]] in the Brahmi script}}.
pwyhenm8sllkvukvd4qszkbrbj1awgq
230651
230650
2026-04-05T14:39:05Z
Pinthura
2424
යොමු තොරතුරු පරිවර්තනය
230651
wikitext
text/x-wiki
{{character info}}
== සර්ව භාෂාමය ==
===Glyph origin===
Likely related to other candrabindu signs, such as {{lang|mul|sc=Deva|[[ँ]]}}.
=== අකුර ===
{{head|mul|letter}}
# {{n-g|The equivalent of the [[candrabindu]] in the Brahmi script}}.
ockexbmf9sorpq76qbfxhbg32m28k3c
Module:Armi-translit
828
141716
230661
2025-03-06T14:49:17Z
en>Theknightwho
0
Remove unnecessary check.
230661
Scribunto
text/plain
local export = {}
local tt = {
["𐡀"] = "ʾ", -- aleph
["𐡁"] = "b", -- beth
["𐡂"] = "g", -- gimel
["𐡃"] = "d", -- daleth
["𐡄"] = "h", -- he
["𐡅"] = "w", -- waw
["𐡆"] = "z", -- zayin
["𐡇"] = "ḥ", -- heth
["𐡈"] = "ṭ", -- teth
["𐡉"] = "y", -- yodh
["𐡊"] = "k", -- khaph
["𐡋"] = "l", -- lamedh
["𐡌"] = "m", -- mem
["𐡍"] = "n", -- nun
["𐡎"] = "s", -- samekh
["𐡏"] = "ʿ", -- ayin
["𐡐"] = "p", -- pe
["𐡑"] = "ṣ", -- sadhe
["𐡒"] = "q", -- qoph
["𐡓"] = "r", -- resh
["𐡔"] = "š", -- shin
["𐡕"] = "t", -- taw
["𐡗"] = "|", -- section sign
["𐡘"] = "1", -- one
["𐡙"] = "2", -- two
["𐡚"] = "3", -- three
["𐡛"] = "10", -- ten
["𐡜"] = "20", -- twenty
["𐡝"] = "100", -- one hundred
["𐡞"] = "1000", -- one thousand
["𐡟"] = "10000", -- ten thousand
}
function export.tr(text, lang, sc)
-- Transliterate characters
text = mw.ustring.gsub(text, '.', tt)
return text
end
return export
f9nx8ypdsi00mwip7d7tnmfnn6ih4fa
230662
230661
2026-04-05T14:40:37Z
Lee
19
[[:en:Module:Armi-translit]] වෙතින් එක් සංශෝධනයක්
230661
Scribunto
text/plain
local export = {}
local tt = {
["𐡀"] = "ʾ", -- aleph
["𐡁"] = "b", -- beth
["𐡂"] = "g", -- gimel
["𐡃"] = "d", -- daleth
["𐡄"] = "h", -- he
["𐡅"] = "w", -- waw
["𐡆"] = "z", -- zayin
["𐡇"] = "ḥ", -- heth
["𐡈"] = "ṭ", -- teth
["𐡉"] = "y", -- yodh
["𐡊"] = "k", -- khaph
["𐡋"] = "l", -- lamedh
["𐡌"] = "m", -- mem
["𐡍"] = "n", -- nun
["𐡎"] = "s", -- samekh
["𐡏"] = "ʿ", -- ayin
["𐡐"] = "p", -- pe
["𐡑"] = "ṣ", -- sadhe
["𐡒"] = "q", -- qoph
["𐡓"] = "r", -- resh
["𐡔"] = "š", -- shin
["𐡕"] = "t", -- taw
["𐡗"] = "|", -- section sign
["𐡘"] = "1", -- one
["𐡙"] = "2", -- two
["𐡚"] = "3", -- three
["𐡛"] = "10", -- ten
["𐡜"] = "20", -- twenty
["𐡝"] = "100", -- one hundred
["𐡞"] = "1000", -- one thousand
["𐡟"] = "10000", -- ten thousand
}
function export.tr(text, lang, sc)
-- Transliterate characters
text = mw.ustring.gsub(text, '.', tt)
return text
end
return export
f9nx8ypdsi00mwip7d7tnmfnn6ih4fa
Module:Shrd-translit
828
141717
230668
2024-08-09T16:09:03Z
en>Svartava
0
230668
Scribunto
text/plain
local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local match = m_str_utils.match
local toNFC = mw.ustring.toNFC
local u = m_str_utils.char
local consonants = {
['𑆑']='k', ['𑆒']='kh', ['𑆓']='g', ['𑆔']='gh', ['𑆕']='ṅ',
['𑆖']='c', ['𑆗']='ch', ['𑆘']='j', ['𑆙']='jh', ['𑆚']='ñ',
['𑆛']='ṭ', ['𑆜']='ṭh', ['𑆝']='ḍ', ['𑆞']='ḍh', ['𑆟']='ṇ',
['𑆠']='t', ['𑆡']='th', ['𑆢']='d', ['𑆣']='dh', ['𑆤']='n',
['𑆥']='p', ['𑆦']='ph', ['𑆧']='b', ['𑆨']='bh', ['𑆩']='m',
['𑆪']='y', ['𑆫']='r', ['𑆬']='l', ['𑆮']='v', ['𑆭']='ḷ',
['𑆯']='ś', ['𑆰']='ṣ', ['𑆱']='s', ['𑆲']='h',
}
local diacritics = {
['𑆳']='ā', ['𑆴']='i', ['𑆵']='ī', ['𑆶']='u', ['𑆷']='ū', ['𑆸']='ṛ', ['𑆹']='ṝ',
['𑆺']='ḷ', ['𑆻']='ḹ', ['𑆼'] = 'e', ['𑆽']='ai', ['𑆾']='o', ['𑆿']='au', ['𑇀']='',
}
local diatrema = {
['𑆅']='ï', ['𑆇']='ü',
}
local tt = {
-- vowels
['𑆃']='a', ['𑆄']='ā', ['𑆅']='i', ['𑆆']='ī', ['𑆇']='u', ['𑆈']='ū', ['𑆉']='ṛ', ['𑆊']='ṝ',
['𑆋']='ḷ', ['𑆌']='ḹ', ['𑆍']='e', ['𑆎']='ai', ['𑆏']='o', ['𑆐']='au',
-- chandrabindu
['𑆀']='m̐', --until a better method is found
-- anusvara
['𑆁']='ṃ', --until a better method is found
-- visarga
['𑆂']='ḥ',
-- avagraha
['𑇁']='’',
--numerals
['𑇐']='0', ['𑇑']='1', ['𑇒']='2', ['𑇓']='3', ['𑇔']='4', ['𑇕']='5', ['𑇖']='6', ['𑇗']='7', ['𑇘']='8', ['𑇙']='9',
--punctuation
['𑇆']='.', --double danda
['𑇅']='.', --danda
--Vedic extensions
['𑇂']='x', ['𑇃']='f',
--Om
['𑇄']='oṃ',
--reconstructed
['*'] = '',
}
function export.tr(text, lang, sc)
text = mw.ustring.gsub(
text,
'([𑆑𑆒𑆓𑆔𑆕𑆖𑆗𑆘𑆙𑆚𑆛𑆜𑆝𑆞𑆟𑆠𑆡𑆢𑆣𑆤𑆥𑆦𑆧𑆨𑆩𑆪𑆫𑆬𑆮𑆭𑆯𑆰𑆱𑆲])'..
'([𑆳𑆴𑆵𑆶𑆷𑆸𑆹𑆺𑆻𑆼𑆽𑆾𑆿𑇀]?)'..
'([𑆅𑆇]?)',
function(c, d, e)
if d == "" and e ~= "" then
return consonants[c] .. 'a' .. diatrema[e]
elseif e ~= "" then
return consonants[c] .. diacritics[d] .. tt[e]
elseif d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
-- Adjacent vowel letters needing dieresis
text = gsub(text, '([𑆃])([𑆅𑆇])', function(a, b) return tt[a]..diatrema[b] end)
text = gsub(text, '.', tt)
return text
end
return export
ro5f9x7dky1a1zv6lt96sr6h726kdci
230669
230668
2026-04-05T14:41:26Z
Lee
19
[[:en:Module:Shrd-translit]] වෙතින් එක් සංශෝධනයක්
230668
Scribunto
text/plain
local export = {}
local m_str_utils = require("Module:string utilities")
local gsub = m_str_utils.gsub
local match = m_str_utils.match
local toNFC = mw.ustring.toNFC
local u = m_str_utils.char
local consonants = {
['𑆑']='k', ['𑆒']='kh', ['𑆓']='g', ['𑆔']='gh', ['𑆕']='ṅ',
['𑆖']='c', ['𑆗']='ch', ['𑆘']='j', ['𑆙']='jh', ['𑆚']='ñ',
['𑆛']='ṭ', ['𑆜']='ṭh', ['𑆝']='ḍ', ['𑆞']='ḍh', ['𑆟']='ṇ',
['𑆠']='t', ['𑆡']='th', ['𑆢']='d', ['𑆣']='dh', ['𑆤']='n',
['𑆥']='p', ['𑆦']='ph', ['𑆧']='b', ['𑆨']='bh', ['𑆩']='m',
['𑆪']='y', ['𑆫']='r', ['𑆬']='l', ['𑆮']='v', ['𑆭']='ḷ',
['𑆯']='ś', ['𑆰']='ṣ', ['𑆱']='s', ['𑆲']='h',
}
local diacritics = {
['𑆳']='ā', ['𑆴']='i', ['𑆵']='ī', ['𑆶']='u', ['𑆷']='ū', ['𑆸']='ṛ', ['𑆹']='ṝ',
['𑆺']='ḷ', ['𑆻']='ḹ', ['𑆼'] = 'e', ['𑆽']='ai', ['𑆾']='o', ['𑆿']='au', ['𑇀']='',
}
local diatrema = {
['𑆅']='ï', ['𑆇']='ü',
}
local tt = {
-- vowels
['𑆃']='a', ['𑆄']='ā', ['𑆅']='i', ['𑆆']='ī', ['𑆇']='u', ['𑆈']='ū', ['𑆉']='ṛ', ['𑆊']='ṝ',
['𑆋']='ḷ', ['𑆌']='ḹ', ['𑆍']='e', ['𑆎']='ai', ['𑆏']='o', ['𑆐']='au',
-- chandrabindu
['𑆀']='m̐', --until a better method is found
-- anusvara
['𑆁']='ṃ', --until a better method is found
-- visarga
['𑆂']='ḥ',
-- avagraha
['𑇁']='’',
--numerals
['𑇐']='0', ['𑇑']='1', ['𑇒']='2', ['𑇓']='3', ['𑇔']='4', ['𑇕']='5', ['𑇖']='6', ['𑇗']='7', ['𑇘']='8', ['𑇙']='9',
--punctuation
['𑇆']='.', --double danda
['𑇅']='.', --danda
--Vedic extensions
['𑇂']='x', ['𑇃']='f',
--Om
['𑇄']='oṃ',
--reconstructed
['*'] = '',
}
function export.tr(text, lang, sc)
text = mw.ustring.gsub(
text,
'([𑆑𑆒𑆓𑆔𑆕𑆖𑆗𑆘𑆙𑆚𑆛𑆜𑆝𑆞𑆟𑆠𑆡𑆢𑆣𑆤𑆥𑆦𑆧𑆨𑆩𑆪𑆫𑆬𑆮𑆭𑆯𑆰𑆱𑆲])'..
'([𑆳𑆴𑆵𑆶𑆷𑆸𑆹𑆺𑆻𑆼𑆽𑆾𑆿𑇀]?)'..
'([𑆅𑆇]?)',
function(c, d, e)
if d == "" and e ~= "" then
return consonants[c] .. 'a' .. diatrema[e]
elseif e ~= "" then
return consonants[c] .. diacritics[d] .. tt[e]
elseif d == "" then
return consonants[c] .. 'a'
else
return consonants[c] .. diacritics[d]
end
end)
-- Adjacent vowel letters needing dieresis
text = gsub(text, '([𑆃])([𑆅𑆇])', function(a, b) return tt[a]..diatrema[b] end)
text = gsub(text, '.', tt)
return text
end
return export
ro5f9x7dky1a1zv6lt96sr6h726kdci
Module:Shrd-translit/testcases/documentation
828
141718
230671
2024-03-06T04:04:04Z
en>WingerBot
0
need a blank line between preceding text and testcase invocation (manually assisted)
230671
wikitext
text/x-wiki
This is the unit-testing module for [[Module:Shrd-translit]].
{{#invoke:Shrd-translit/testcases|run_tests|differs_at=1}}
45y8y88ui00fl0yl0moxlsuw65moanp
230672
230671
2026-04-05T14:41:42Z
Lee
19
[[:en:Module:Shrd-translit/testcases/documentation]] වෙතින් එක් සංශෝධනයක්
230671
wikitext
text/x-wiki
This is the unit-testing module for [[Module:Shrd-translit]].
{{#invoke:Shrd-translit/testcases|run_tests|differs_at=1}}
45y8y88ui00fl0yl0moxlsuw65moanp
Module:Shrd-translit/testcases
828
141719
230673
2024-08-03T10:45:36Z
en>Kutchkutch
0
230673
Scribunto
text/plain
-- Unit tests for [[Module:shrd-translit]]. Refresh page to run tests.
local tests = require('Module:UnitTests')
local shrd_translit = require('Module:Shrd-translit')
local full_link = require('Module:links').full_link
local sa = require('Module:languages').getByCode('sa')
--TO DO
function tests:do_test_translit(sharada, roman)
self:equals(sharada, shrd_translit.tr(sharada, 'sa', 'Shrd'), roman)
end
function tests:test_translit_sharada()
local examples = {
{'𑆮𑆳𑆑𑇀', 'vāk'},
{'𑆮𑆳𑆑', 'vāka'},
{'𑆃𑆢𑆸𑆰𑇀𑆛', 'adṛṣṭa'},
{'𑆱𑆾𑇁𑆲𑆩𑇀', 'so’ham'},
{'𑆢𑆶𑆂𑆒', 'duḥkha' },
{'𑆃𑆑𑇀𑆒𑆅', 'akkhaï' },
}
self:iterate(examples, "do_test_translit")
end
return tests
hwr8z5uway6k8h7s3pgiodprjh6uu5m
230675
230673
2026-04-05T14:41:46Z
Lee
19
[[:en:Module:Shrd-translit/testcases]] වෙතින් එක් සංශෝධනයක්
230673
Scribunto
text/plain
-- Unit tests for [[Module:shrd-translit]]. Refresh page to run tests.
local tests = require('Module:UnitTests')
local shrd_translit = require('Module:Shrd-translit')
local full_link = require('Module:links').full_link
local sa = require('Module:languages').getByCode('sa')
--TO DO
function tests:do_test_translit(sharada, roman)
self:equals(sharada, shrd_translit.tr(sharada, 'sa', 'Shrd'), roman)
end
function tests:test_translit_sharada()
local examples = {
{'𑆮𑆳𑆑𑇀', 'vāk'},
{'𑆮𑆳𑆑', 'vāka'},
{'𑆃𑆢𑆸𑆰𑇀𑆛', 'adṛṣṭa'},
{'𑆱𑆾𑇁𑆲𑆩𑇀', 'so’ham'},
{'𑆢𑆶𑆂𑆒', 'duḥkha' },
{'𑆃𑆑𑇀𑆒𑆅', 'akkhaï' },
}
self:iterate(examples, "do_test_translit")
end
return tests
hwr8z5uway6k8h7s3pgiodprjh6uu5m
Module:Shrd-translit/documentation
828
141720
230676
2021-09-05T14:02:41Z
en>Kutchkutch
0
Created page with "{{translit module documentation|Shrd}} <includeonly>[[Category:Indo-Aryan transliteration modules]]</includeonly>"
230676
wikitext
text/x-wiki
{{translit module documentation|Shrd}}
<includeonly>[[Category:Indo-Aryan transliteration modules]]</includeonly>
10sxid4bcb25s6gki1e5sszcvldq9bj
230677
230676
2026-04-05T14:41:49Z
Lee
19
[[:en:Module:Shrd-translit/documentation]] වෙතින් එක් සංශෝධනයක්
230676
wikitext
text/x-wiki
{{translit module documentation|Shrd}}
<includeonly>[[Category:Indo-Aryan transliteration modules]]</includeonly>
10sxid4bcb25s6gki1e5sszcvldq9bj
Module:mr-Modi-translit
828
141721
230682
2024-04-05T03:05:44Z
en>Theknightwho
0
Use faster implementation of mw.ustring.char.
230682
Scribunto
text/plain
local export = {}
local u = require("Module:string/char")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
local ZWJ = u(0x200D)
local conv = {
-- consonants
['𑘎']='k', ['𑘏']='kh', ['𑘐']='g', ['𑘑']='gh', ['𑘒']='ṅ',
['𑘓']='c', ['𑘔']='ch', ['𑘕']='j', ['𑘖']='jh', ['𑘗']='ñ',
['𑘘']='ṭ', ['𑘙']='ṭh', ['𑘚']='ḍ', ['𑘛']='ḍh', ['𑘜']='ṇ',
['𑘝']='t', ['𑘞']='th', ['𑘟']='d', ['𑘠']='dh', ['𑘡']='n',
['𑘢']='p', ['𑘣']='ph', ['𑘤']='b', ['𑘥']='bh', ['𑘦']='m',
['𑘧']='y', ['𑘨']='r', ['𑘩']='l', ['𑘪']='v', ['𑘯']='ḷ',
['𑘫']='ś', ['𑘬']='ṣ', ['𑘭']='s', ['𑘮']='h',
['𑘨𑘿'..ZWJ] = 'r',
-- ['𑘕𑘿𑘗'] = 'dny',
-- vowel diacritics
---- only in script charts: ['𑘱'] = 'i', ['𑘴'] ='ū',
['𑘳'] = 'u', ['𑘹'] = 'e', ['𑘻'] = 'o',
['𑘰'] = 'ā', ['𑘲'] = 'ī',
['𑘵'] = 'ru',
['𑘺'] = 'ai', ['𑘼'] = 'au',
-- ['𑘰𑙀'] = 'ŏ',
['𑙀'] = 'ĕ',
-- vowel signs
---- only in script charts: ['𑘂'] = 'i', ['𑘅'] ='ū',
['𑘀'] = 'a', ['𑘄'] = 'u', ['𑘊'] = 'e', ['𑘌'] = 'o',
['𑘁'] = 'ā', ['𑘃'] = 'ī',
['𑘆'] = 'ŕ',
['𑘋'] = 'ai', ['𑘍'] = 'au',
['𑘁𑙀'] = 'ŏ',
['𑘀𑙀'] = 'ĕ', ['𑘊𑙀'] = 'ĕ',
['𑘌𑘦𑘿'] = 'om',
-- chandrabindu
--- ['𑙀𑘽'] = '̃',
-- anusvara
['𑘽'] = 'ṁ',
-- visarga
['𑘾'] = 'ḥ',
-- virama
['𑘿'] = '',
-- numerals
['𑙐'] = '0', ['𑙑'] = '1', ['𑙒'] = '2', ['𑙓'] = '3', ['𑙔'] = '4',
['𑙕'] = '5', ['𑙖'] = '6', ['𑙗'] = '7', ['𑙘'] = '8', ['𑙙'] = '9',
-- punctuation
['𑙁'] = '.', -- danda
['𑙂'] = '.', -- double danda
['+'] = '', -- compound separator
-- abbreviation sign
['𑙃'] = '.',
}
local nasal_assim = {
['𑘎'] = '𑘒', ['𑘏'] = '𑘒', ['𑘐'] = '𑘒', ['𑘑'] = '𑘒',
['𑘓'] = '𑘗', ['𑘔'] = '𑘗', ['𑘕'] = '𑘗', ['𑘖'] = '𑘗',
['𑘘'] = '𑘜', ['𑘙'] = '𑘜', ['𑘚'] = '𑘜', ['𑘛'] = '𑘜',
['𑘢'] = '𑘦', ['𑘣'] = '𑘦', ['𑘤'] = '𑘦', ['𑘥'] = '𑘦', ['𑘦'] = '𑘦',
['𑘧'] = 'i', ['𑘨'] = '𑘄', ['𑘩'] = '𑘩', ['𑘪'] = '𑘄',
['𑘫'] = '𑘄', ['𑘬'] = '𑘄', ['𑘭'] = '𑘄', ['𑘮'] = '𑘄',
}
local perm_cl = {
['𑘦𑘿𑘩'] = true, ['𑘪𑘿𑘩'] = true, ['𑘡𑘿𑘩'] = true,
}
local all_cons, special_cons = '𑘎𑘏𑘐𑘑𑘒𑘓𑘔𑘕𑘖𑘗𑘘𑘙𑘚𑘛𑘝𑘞𑘟𑘠𑘢𑘣𑘤𑘥𑘫𑘬𑘭𑘧𑘨𑘩𑘪𑘮𑘜𑘡𑘦𑘯', '𑘟𑘝𑘧𑘨𑘩𑘪𑘮𑘡𑘦'
local vowel, vowel_sign = '%*a𑘱𑘳𑘵𑘹𑘻𑘰𑘲𑘴𑘺𑘼𑙀', '𑘀𑘂𑘄𑘊𑘌𑘁𑘃𑘅𑘆𑘋𑘍𑘀𑙀'
local syncope_pattern = '([' .. vowel .. vowel_sign .. '])([' .. all_cons .. '])a([' .. all_cons .. '])([ं]?[' .. vowel .. vowel_sign .. '])'
local function rev_string(text)
local char_array, i = {}, 1
for char in string.gmatch(text, "[%z\1-\127\194-\244][\128-\191]*") do -- UTF-8 character pattern
char_array[i] = char
i = i + 1
end
return table.concat(require("Module:table").reverse(char_array))
end
function export.tr(text, lang, sc)
-- text = gsub(text, 'ाँ', 'ॉ' .. 'ं')
-- text = gsub(text, 'ँ', 'ॅ' .. 'ं')
text = gsub(text, '([^' .. vowel .. vowel_sign .. '])𑘽 ', '%1𑘀 ')
text = gsub(text, '([^' .. vowel .. vowel_sign .. '])𑘽$', '%1𑘀')
text = gsub(text, '([' .. all_cons .. '])([' .. vowel .. '𑘿]?)', function(c, d)
return c .. (d == "" and 'a' or d) end)
for word in mw.ustring.gmatch(text, "[𑘀-𑙙a]+") do
local orig_word = word
word = rev_string(word)
word = gsub(word, '^a([' .. all_cons .. '][' .. vowel .. vowel_sign .. '])', '%1')
while find(word, syncope_pattern) do
word = gsub(word, syncope_pattern, '%1%2%3%4')
end
word = gsub(word, '(.?)𑘽(.)', function(succ, prev)
return succ .. (succ..prev == "a" and "𑘿𑘦" or
(succ == "" and find(prev, '[' .. vowel .. ']') and "̃" or nasal_assim[succ] or "n")) .. prev end)
text = gsub(text, orig_word, rev_string(word))
end
text = gsub(text, '.', conv)
text = gsub(text, 'a([iu])̃', 'a͠%1')
text = gsub(text, 'aa', 'a')
text = gsub(text, 'ñjñ', 'ndny')
text = gsub(text, 'jñ', 'dny')
return mw.ustring.toNFC(text)
end
return export
gj5tdm2ion1f1zvtsbr3xcko9tvtngu
230683
230682
2026-04-05T14:44:00Z
Lee
19
[[:en:Module:mr-Modi-translit]] වෙතින් එක් සංශෝධනයක්
230682
Scribunto
text/plain
local export = {}
local u = require("Module:string/char")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
local ZWJ = u(0x200D)
local conv = {
-- consonants
['𑘎']='k', ['𑘏']='kh', ['𑘐']='g', ['𑘑']='gh', ['𑘒']='ṅ',
['𑘓']='c', ['𑘔']='ch', ['𑘕']='j', ['𑘖']='jh', ['𑘗']='ñ',
['𑘘']='ṭ', ['𑘙']='ṭh', ['𑘚']='ḍ', ['𑘛']='ḍh', ['𑘜']='ṇ',
['𑘝']='t', ['𑘞']='th', ['𑘟']='d', ['𑘠']='dh', ['𑘡']='n',
['𑘢']='p', ['𑘣']='ph', ['𑘤']='b', ['𑘥']='bh', ['𑘦']='m',
['𑘧']='y', ['𑘨']='r', ['𑘩']='l', ['𑘪']='v', ['𑘯']='ḷ',
['𑘫']='ś', ['𑘬']='ṣ', ['𑘭']='s', ['𑘮']='h',
['𑘨𑘿'..ZWJ] = 'r',
-- ['𑘕𑘿𑘗'] = 'dny',
-- vowel diacritics
---- only in script charts: ['𑘱'] = 'i', ['𑘴'] ='ū',
['𑘳'] = 'u', ['𑘹'] = 'e', ['𑘻'] = 'o',
['𑘰'] = 'ā', ['𑘲'] = 'ī',
['𑘵'] = 'ru',
['𑘺'] = 'ai', ['𑘼'] = 'au',
-- ['𑘰𑙀'] = 'ŏ',
['𑙀'] = 'ĕ',
-- vowel signs
---- only in script charts: ['𑘂'] = 'i', ['𑘅'] ='ū',
['𑘀'] = 'a', ['𑘄'] = 'u', ['𑘊'] = 'e', ['𑘌'] = 'o',
['𑘁'] = 'ā', ['𑘃'] = 'ī',
['𑘆'] = 'ŕ',
['𑘋'] = 'ai', ['𑘍'] = 'au',
['𑘁𑙀'] = 'ŏ',
['𑘀𑙀'] = 'ĕ', ['𑘊𑙀'] = 'ĕ',
['𑘌𑘦𑘿'] = 'om',
-- chandrabindu
--- ['𑙀𑘽'] = '̃',
-- anusvara
['𑘽'] = 'ṁ',
-- visarga
['𑘾'] = 'ḥ',
-- virama
['𑘿'] = '',
-- numerals
['𑙐'] = '0', ['𑙑'] = '1', ['𑙒'] = '2', ['𑙓'] = '3', ['𑙔'] = '4',
['𑙕'] = '5', ['𑙖'] = '6', ['𑙗'] = '7', ['𑙘'] = '8', ['𑙙'] = '9',
-- punctuation
['𑙁'] = '.', -- danda
['𑙂'] = '.', -- double danda
['+'] = '', -- compound separator
-- abbreviation sign
['𑙃'] = '.',
}
local nasal_assim = {
['𑘎'] = '𑘒', ['𑘏'] = '𑘒', ['𑘐'] = '𑘒', ['𑘑'] = '𑘒',
['𑘓'] = '𑘗', ['𑘔'] = '𑘗', ['𑘕'] = '𑘗', ['𑘖'] = '𑘗',
['𑘘'] = '𑘜', ['𑘙'] = '𑘜', ['𑘚'] = '𑘜', ['𑘛'] = '𑘜',
['𑘢'] = '𑘦', ['𑘣'] = '𑘦', ['𑘤'] = '𑘦', ['𑘥'] = '𑘦', ['𑘦'] = '𑘦',
['𑘧'] = 'i', ['𑘨'] = '𑘄', ['𑘩'] = '𑘩', ['𑘪'] = '𑘄',
['𑘫'] = '𑘄', ['𑘬'] = '𑘄', ['𑘭'] = '𑘄', ['𑘮'] = '𑘄',
}
local perm_cl = {
['𑘦𑘿𑘩'] = true, ['𑘪𑘿𑘩'] = true, ['𑘡𑘿𑘩'] = true,
}
local all_cons, special_cons = '𑘎𑘏𑘐𑘑𑘒𑘓𑘔𑘕𑘖𑘗𑘘𑘙𑘚𑘛𑘝𑘞𑘟𑘠𑘢𑘣𑘤𑘥𑘫𑘬𑘭𑘧𑘨𑘩𑘪𑘮𑘜𑘡𑘦𑘯', '𑘟𑘝𑘧𑘨𑘩𑘪𑘮𑘡𑘦'
local vowel, vowel_sign = '%*a𑘱𑘳𑘵𑘹𑘻𑘰𑘲𑘴𑘺𑘼𑙀', '𑘀𑘂𑘄𑘊𑘌𑘁𑘃𑘅𑘆𑘋𑘍𑘀𑙀'
local syncope_pattern = '([' .. vowel .. vowel_sign .. '])([' .. all_cons .. '])a([' .. all_cons .. '])([ं]?[' .. vowel .. vowel_sign .. '])'
local function rev_string(text)
local char_array, i = {}, 1
for char in string.gmatch(text, "[%z\1-\127\194-\244][\128-\191]*") do -- UTF-8 character pattern
char_array[i] = char
i = i + 1
end
return table.concat(require("Module:table").reverse(char_array))
end
function export.tr(text, lang, sc)
-- text = gsub(text, 'ाँ', 'ॉ' .. 'ं')
-- text = gsub(text, 'ँ', 'ॅ' .. 'ं')
text = gsub(text, '([^' .. vowel .. vowel_sign .. '])𑘽 ', '%1𑘀 ')
text = gsub(text, '([^' .. vowel .. vowel_sign .. '])𑘽$', '%1𑘀')
text = gsub(text, '([' .. all_cons .. '])([' .. vowel .. '𑘿]?)', function(c, d)
return c .. (d == "" and 'a' or d) end)
for word in mw.ustring.gmatch(text, "[𑘀-𑙙a]+") do
local orig_word = word
word = rev_string(word)
word = gsub(word, '^a([' .. all_cons .. '][' .. vowel .. vowel_sign .. '])', '%1')
while find(word, syncope_pattern) do
word = gsub(word, syncope_pattern, '%1%2%3%4')
end
word = gsub(word, '(.?)𑘽(.)', function(succ, prev)
return succ .. (succ..prev == "a" and "𑘿𑘦" or
(succ == "" and find(prev, '[' .. vowel .. ']') and "̃" or nasal_assim[succ] or "n")) .. prev end)
text = gsub(text, orig_word, rev_string(word))
end
text = gsub(text, '.', conv)
text = gsub(text, 'a([iu])̃', 'a͠%1')
text = gsub(text, 'aa', 'a')
text = gsub(text, 'ñjñ', 'ndny')
text = gsub(text, 'jñ', 'dny')
return mw.ustring.toNFC(text)
end
return export
gj5tdm2ion1f1zvtsbr3xcko9tvtngu
Module:mr-Modi-translit/testcases/documentation
828
141722
230684
2024-03-06T04:03:51Z
en>WingerBot
0
need a blank line between preceding text and testcase invocation (manually assisted)
230684
wikitext
text/x-wiki
This is the unit-testing module for [[Module:mr-Modi-translit]].
{{#invoke:mr-Modi-translit/testcases|run_tests|differs_at=1|comments=1}}
d3885ojl6p40t7t66ten7hnqe9d91q7
230685
230684
2026-04-05T14:44:18Z
Lee
19
[[:en:Module:mr-Modi-translit/testcases/documentation]] වෙතින් එක් සංශෝධනයක්
230684
wikitext
text/x-wiki
This is the unit-testing module for [[Module:mr-Modi-translit]].
{{#invoke:mr-Modi-translit/testcases|run_tests|differs_at=1|comments=1}}
d3885ojl6p40t7t66ten7hnqe9d91q7
Module:mr-Modi-translit/testcases
828
141723
230686
2022-02-15T07:40:55Z
en>Kutchkutch
0
230686
Scribunto
text/plain
-- Unit tests for [[Module:mr-Modi-translit]]. Refresh page to run tests.
local tests = require('Module:UnitTests')
local mr_translit = require('Module:mr-Modi-translit')
--TO DO
function tests:do_test_translit(modi, roman, comment)
self:equals(
'<span class="Modi" lang="mr">[[' .. modi .. '#Marathi|' .. modi .. ']]</span>',
mr_translit.tr(modi, 'mr', 'Modi'),
roman,
{ comment = comment })
end
function tests:test_translit_marathi()
local examples = {
--Fundamental tests
{ '𑘥𑘰𑘨𑘝', 'bhārat' },
{ '𑘦𑘨𑘰𑘙𑘲', 'marāṭhī' },
{ '𑘮𑘵𑘟𑘧', 'hruday' },
}
self:iterate(examples, 'do_test_translit')
end
return tests
0q1y8nnp7ok71zuqhvnzbr7lj215nvs
230687
230686
2026-04-05T14:44:22Z
Lee
19
[[:en:Module:mr-Modi-translit/testcases]] වෙතින් එක් සංශෝධනයක්
230686
Scribunto
text/plain
-- Unit tests for [[Module:mr-Modi-translit]]. Refresh page to run tests.
local tests = require('Module:UnitTests')
local mr_translit = require('Module:mr-Modi-translit')
--TO DO
function tests:do_test_translit(modi, roman, comment)
self:equals(
'<span class="Modi" lang="mr">[[' .. modi .. '#Marathi|' .. modi .. ']]</span>',
mr_translit.tr(modi, 'mr', 'Modi'),
roman,
{ comment = comment })
end
function tests:test_translit_marathi()
local examples = {
--Fundamental tests
{ '𑘥𑘰𑘨𑘝', 'bhārat' },
{ '𑘦𑘨𑘰𑘙𑘲', 'marāṭhī' },
{ '𑘮𑘵𑘟𑘧', 'hruday' },
}
self:iterate(examples, 'do_test_translit')
end
return tests
0q1y8nnp7ok71zuqhvnzbr7lj215nvs
Module:mr-Modi-translit/documentation
828
141724
230688
2022-02-15T07:26:18Z
en>Kutchkutch
0
Created page with "{{translit module documentation|mr}} <includeonly>[[Category:Indo-Aryan transliteration modules]]</includeonly>"
230688
wikitext
text/x-wiki
{{translit module documentation|mr}}
<includeonly>[[Category:Indo-Aryan transliteration modules]]</includeonly>
q0o0zky03a7cgkcb33sumbtojqo1hoz
230689
230688
2026-04-05T14:44:26Z
Lee
19
[[:en:Module:mr-Modi-translit/documentation]] වෙතින් එක් සංශෝධනයක්
230688
wikitext
text/x-wiki
{{translit module documentation|mr}}
<includeonly>[[Category:Indo-Aryan transliteration modules]]</includeonly>
q0o0zky03a7cgkcb33sumbtojqo1hoz
ලසසපය
0
141725
230690
2026-04-05T15:09:32Z
WrdSrchSi
3305
Page created: + etymon|si + IPA|si + head|si|proper noun + definition
230690
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{etymon|si|id=ලසසප අ|af|si>ලසසප#නාම ප්රකෘතිය>ප්රකෘතිය|si>-අ>ප්රත්ය|tree=1}}
''[[ලසසප#නාම ප්රකෘතිය|ලසසප]] (ප්රකෘතිය) + [[-අ]] (ප්රත්යය) > ලසසප + '''ය්''' ([[ව්යඤ්ජනාගමනය]]) + -අ >'' [[ලසසපය]]
===උච්චාරණය===
* {{IPA|si|/ˈlasəsapəjə/}}
=== සංඥා නාම පදය ===
{{head|si|proper noun}}
# ලංකා සම සමාජ පක්ෂය.
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
nefy2d1dsgdmndlnu5nstjvmmhwwcta
බවුවා
0
141726
230691
2026-04-05T15:20:01Z
WrdSrchSi
3305
Page created: + වෙනත් ආකාර + IPA|si + definition
230691
wikitext
text/x-wiki
== සිංහල ==
===වෙනත් ආකාර===
* {{l|si|බව්වා#නාම පදය|බව්වා}}
=== නිරුක්තිය ===
{{rfe|si}}
===උච්චාරණය===
* {{IPA|si|/ˈbaʋuʋaː/}}
=== නාම පදය ===
{{si-noun|බවුවෝ}}
# කුඩා දරුවන් ගේ බසෙහි [[බල්ලා]] සඳහා යෙදෙයි.
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
q2fe2fjz184vzxjfapi29fqzns0ld7v
අටළොස්
0
141727
230692
2026-04-06T10:23:18Z
Lee
19
'== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි
230692
wikitext
text/x-wiki
== සිංහල ==
=== නිරුක්තිය ===
{{rfe|si}}
=== නාම පදය ===
{{si-noun}}
# {{rfdef|si}}
<!--
==== පරිවර්තන ====
{{trans-top|පරිවර්තන}}
* ඉංග්රීසි: {{t|en|<<ඉංග්රීසි වචනය>>}}
{{trans-bottom}}
=== අමතර අවධානයට ===
* {{l|si|<<ආශ්රිත පවතින වෙනත් වචන>>}}
-->
37g9s13iio6w9i2yw7aw46v28viw7h4