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.47.0-wmf.4 case-sensitive මාධ්‍යය විශේෂ සාකච්ඡාව පරිශීලක පරිශීලක සාකච්ඡාව වික්ෂනරි වික්ෂනරි සාකච්ඡාව ගොනුව ගොනුව සාකච්ඡාව මාධ්‍යවිකි මාධ්‍යවිකි සාකච්ඡාව සැකිල්ල සැකිලි සාකච්ඡාව උදවු උදවු සාකච්ඡාව ප්‍රවර්ගය ප්‍රවර්ග සාකච්ඡාව TimedText TimedText talk Module Module talk Event Event talk Portuguese 0 2181 235468 186020 2026-06-02T10:58:49Z Lee 19 /* නාම පදය */ 235468 wikitext text/x-wiki == ඉංග්‍රීසි == === උච්චාරණය === * {{IPA|en|/ˌpɔː.t͡ʃəˈɡiːz/|a=UK}} * {{IPA|en|/ˈpɔɹ.t͡ʃə.ɡiz/|a=GA}} * {{audio|en|en-uk-Portuguese.ogg|a=UK}} * {{audio|en|en-us-Portuguese.ogg|a=US}} * {{rhymes|en|iːz|s=3}} === නාම පදය === {{en-noun|*|s<l:archaic>}} # ''[[පෘතුගීසි]]'' === සංඥා නාම පදය === {{en-prop}} # {{senseid|en|Q5146}} ''[[පෘතුගීසි]]'' ==== අමතර අවධානයට ==== * {{langcat|pt}} * {{langlist}} {{C|en|Portuguese|Ethnonyms|Languages|Nationalities|Portugal}} {{cln|en|terms suffixed with -ese}} rzzrtmxenh25xjg6j50fy07cbbmmr8a v 0 3277 235406 228555 2026-06-02T04:42:27Z Pinthura 2424 යොමු තොරතුරු පරිවර්තනය 235406 wikitext text/x-wiki {{also|V|Appendix:Variations of "v"|∨}} {{character info}} {{character info/var|ᵛ|ⅴ|v}} {{minitoc}} == සර්ව භාෂාමය == === නිරුක්තිය 1 === [[File:Greek uc upsilon.svg|thumb|right|60px|Greek letter Υ, from which Latin V derived]] Minuscule variation of Latin {{m|mul|V}}, from seventh century Old Latin adoption of Old Italic letter {{m|mul|𐌖|tr=V}}, from {{der|mul|grc|-}} letter {{m|el|Υ||Upsilon}}. ==== අකුර ==== {{mul-letter|upper=V|lower=v|sc=Latn}} # The twenty-second letter of the [[Appendix:Latin script|basic modern Latin alphabet]]. ===== අමතර අවධානයට ===== {{Latn-script}} * {{qualifier|select symbols}} [[ʌ]] [[ʋ]] [[ᵥ]] * {{qualifier|other scripts}} Cyrillic {{m|mul|sc=Cyrl|в|tr=v||ve}}, Greek {{m|mul|sc=Grek|υ|tr=y||upsilon}}, Hebrew {{m|mul|sc=Hebr|ו|tr=w||vav}} * {{pedia}} === නිරුක්තිය 2 === Lower case form of upper case roman numeral [[V]], from abbreviation of IIIIΛ or IIIIV (representing 5), from tally stick markings resembling \\\\⋁ or ////⋀, from the practice of designating each fifth notch with a double cut, like the corresponding Western tally mark, {{l|mul|𝍸}}. ==== වෙනත් ආකාර ==== * {{l|mul|V}}, {{l|mul|Ⅴ}}, {{l|mul|ⅴ}} ==== සංඛ්‍යාංකය ==== {{head|mul|numeral|lower case Roman numeral||upper case|V}} # [[cardinal number|cardinal]] number [[five]] (5). ==== අමතර අවධානයට ==== * Previous: [[iv]] ([[four|4]]) * Next: [[vi]] ([[six|6]]) * [[w:Roman numerals|Roman numerals]] === නිරුක්තිය 3 === ==== උච්චාරණය ==== * {{audio|mul|Voiced labiodental fricative.ogg|Pronunciation of IPA {{IPAfont|[ɑvvɑʔ]}} with the sound {{IPAfont|[v]}}}} ==== සංකේතය ==== {{head|mul|symbol}} # {{lb|mul|physics}} [[velocity]] # {{lb|mul|IPA}} a {{w|voiced labiodental fricative}}. # {{lb|mul|superscript {{angbr IPA|ᵛ}}|IPA}} {{IPAfont|[v]}}-fricated [[release]] of a plosive (e.g. {{IPAfont|[bᵛ]}}, sometimes implying an [[affricate]] {{IPAfont|[b͜v]}}); {{IPAfont|[v]}}-coloring; or a weak, fleeting or epenthetic {{IPAfont|[v]}}. # {{lb|mul|UPA}} a {{w|voiced labiodental approximant}} (IPA {{IPAfont|[ʋ]}}, which it resembles in italic typeface). ===Gallery=== <gallery caption="Letter styles" perrow=3 mode=packed> File:Latin V.png|Uppercase and lowercase versions of '''V''', in normal and italic type File:Fraktur letter v.svg|Uppercase and lowercase '''V''' in [[Fraktur]] </gallery> === අමතර අවධානයට === {{Letter |page=V |NATO=Victor |Morse=···– |Braille=⠧ }} {{C|mul|Five}} == ඉංග්‍රීසි == === නිරුක්තිය 1 === From {{der|en|enm|-}} lower case letter {{m|enm|v}} (also written {{m|enm|u}}), from {{der|en|ang|-}} lower case {{m|ang|u}} and respelling of {{der|en|ang|f}} between vowels and voiced consonants. * [[File:Rune-Feoh.png|10px|Anglo-Saxon Futhorc letter {{m|mul||ᚠ|tr=f|feoh}}]] {{der|en|ang|-}} lower case {{m|ang|f}} from 7th century replacement by Latin lower case {{m|la|f}} of the Anglo-Saxon Futhorc letter {{m|mul|ᚠ|tr=f||feoh}}, derived from Etruscan letter {{m|mul|𐌅|tr=v}}. * [[File:Rune-Ur.png|10px|Anglo-Saxon Futhorc letter {{m|mul||ᚢ|tr=u|ur}}]] {{der|en|ang|-}} lower case {{m|ang|u}} from 7th century replacement by Latin lower case {{m|la|v}} of the Anglo-Saxon Futhorc letter {{m|mul|ᚢ|tr=u||ur}}, derived from Raetic letter {{m|mul||u}}. Before the 1700s, the pointed form {{m|en|v}} was written at the beginning of a word, while a rounded form {{m|en|u}} was used elsewhere, regardless of sound. So whereas {{m|en|valor}} and {{m|en|excuse}} appeared as in modern printing, {{m|en|have}} and {{m|en|upon}} were printed {{m|en||haue}} and {{m|en||vpon}}. Eventually, in the 1700s, to differentiate between the consonant and vowel sounds, the {{m|en|v}} form was used to represent the consonant, and {{m|en|u}} the vowel sound. {{m|en|v}} then preceded {{m|en|u}} in the alphabet, but the order has since reversed. ==== උච්චාරණය ==== * {{sense|phoneme}} {{IPA|en|/v/}} * {{sense|letter name}} {{IPA|en|/viː/}} (spelled {{m|en|vee}}) ** {{audio|en|en-us-v.ogg|a=US}} ** {{rhymes|en|iː|s=1}} ==== අකුර ==== {{en-letter}} # {{Latn-def|en|letter|22|vee}} ===== අමතර අවධානයට ===== {{list:Latin script letters/en}} ==== නාම පදය ==== {{en-noun|s|v's}} # a shape resembling the letter {{m|en|v}} #: {{ux|en|The impact was so strong, it bent the bar into a '''v'''.}} === නිරුක්තිය 2 === {{abbrev|en|versus}}. ====Preposition==== {{en-prep}} # {{lb|en|UK|Ireland|and|Commonwealth|_|except Canada}} {{abbreviation of|en|versus}} #: {{syn|en|v.|vs.}} #: {{uxi|en|England '''v''' Scotland}} #* {{quote-journal|en|date=3 March 2023|author=Eleanor Flegg|title=The comfort '''v''' style dilemma: Thought you couldn’t combine the two? Think again — our experts explain exactly how|journal=w:Irish Independent|volume=132|issue=53|location=Dublin|section=“Property” section|page=4|pageurl=https://www.newspapers.com/newspage/1167524333/|issn=0021-1222|oclc=500345272|nocolon=1}} ===== භාවිත සටහන් ===== * In legal contexts, usage is typically restricted to {{w|Case citations|case citations}}, and the pronunciation may be as {{l|en| versus}}, {{l|en|vee}}, {{l|en|against}}, or {{l|en|and}}, depending on the region and nature of the case. === නිරුක්තිය 3 === {{abbrev|en|very}}. ==== ක්‍රියා විශේෂණ පදය ==== {{head|en|adverb}} # {{lb|en|informal|text messaging}} {{abbreviation of|en|very}} #: {{ux|en|You were acting '''v''' rude to his boyfriend on New Year's.}} #* {{quote-book|en|passage=I'm '''v''' tired. I slept '''v''' badly, awake from 3–6 a.m., so I've slept all afternoon.|title=Life After Darkness: A Doctor's Journey Through Severe Depression|author=Cathy Wield|page=109|publisher=Radcliffe Publishing|year=2006|location=Seattle, WA|url=https://books.google.com/books?id=EVbTWWmv4AUC&pg=PA109|isbn=9781857757293}} #* {{quote-book|en|title=Deep and Meaningful Diaries from Planet Janet|passage=I said it wasn't a crush, I just thought he was '''v''' attractive.|page=253|author=Dyan Sheldon|year=2007|publisher=Candlewick Press|location=Somerville, MA|isbn=978-0763632168}} #* {{quote-journal|en|passage=Since becoming social media official, Cara Delevingne and Ashley Benson have been sashaying around town together and being '''v''' cute|journal=Pedestrian|url=https://www.pedestrian.tv/entertainment/ashley-benson-cara-delevingne-tatt/|date=July 23, 2019|accessdate=August 12, 2019|archiveurl=https://web.archive.org/web/20190723050529/https://www.pedestrian.tv/entertainment/ashley-benson-cara-delevingne-tatt/|archivedate=July 23, 2019|author=Matt Galea|title=Punters Reckon Ashley Benson's New Tatt Is A Tribute To Girlfriend Cara Delevingne}} #* {{quote-journal|en|date=2024-10-08|author=Lauren Gruber; Megan Uy|title=We Found Sooo Many Viral TikTok Items on Sale for October Prime Day|journal=w:[[Cosmopolitan (magazine)|Cosmopolitan]]|url=https://www.cosmopolitan.com/style-beauty/fashion/g36623568/viral-tiktok-items-amazon-sale/|passage=Sometimes a trip to the spa is not in the cards, even if your gel manicure has seen ''waaaay'' better days. These polish remover tools help cut costs and keep your natural nails looking '''v''' nice.}} === නිරුක්තිය 4 === Abbreviations. '''{{PAGENAME}}''' # {{lb|en|stenoscript}} {{abbreviation of|en|of}} # {{lb|en|stenoscript}} {{abbreviation of|en|very}} # {{lb|en|stenoscript}} the suffix or final syllable '''''{{m|en|-tive}}''''' or '''''{{m|en|-ive}}''''' === අමතර අවධානයට === {{col3|en|ctrl-v|delta-v|little v|v-chip|v-fib|v-line|v-mail|v-perfect|v-ring|v-tach|v-word|v-ball}} ==Azerbaijani== === උච්චාරණය === * {{qualifier|phoneme}} {{IPA|az|/v/}} === අකුර === {{az-letter|upper=V|lower=v}} # {{Latn-def|az|letter|30}} ==== අමතර අවධානයට ==== {{list:Latin script letters/az}} ==Basque== === උච්චාරණය === {{eu-IPA|uve}} === අකුර === {{eu-letter|upper=V|lower=v}} # {{Latn-def|eu|letter|23|uve}} ==== භාවිත සටහන් ==== * Used chiefly in recent loanwords and foreign proper nouns. ==== අමතර අවධානයට ==== {{list:Latin script letters/eu}} ==Catalan== === උච්චාරණය === * {{ca-IPA|vé,vé baixa}} === අකුර === {{ca-letter|upper=V|lower=v}} # {{Latn-def|ca|letter|22|ve|ve baixa}} ==== අමතර අවධානයට ==== {{list:Latin script letters/ca}} ==Czech== === වෙනත් ආකාර === * {{alt|cs|ve}} === නිරුක්තිය === {{inh+|cs|zlw-ocs|v}}, {{m|zlw-ocs|ve}}, from {{inh|cs|sla-pro|*vъ(n)}}, from {{inh|cs|ine-pro|*h₁n̥}}. === උච්චාරණය === * {{IPA|cs|/v/}} * {{audio|cs|Cs-v.ogg}} ===Preposition=== {{head|cs|preposition}} # [[in]] (inside, for an enclosed space) {{+obj|cs|loc}} #: {{uxi|cs|On je '''v''' divadle.|He is '''in''' the theater.}} # [[at]] (''indicating time'') {{+obj|cs|acc}} #: {{coi|cs|'''v''' šest hodin|'''at''' six o'clock}} # [[on]] (''indicating a day'') {{+obj|cs|acc}} #: {{coi|cs|'''v''' pátek|'''on''' Friday}} # [[in]] (''indicating a year'') {{+obj|cs|loc}} #: {{coi|cs|'''v''' roce 2007|'''in''' the year 2007}} # [[in]] (''indicating a month'') {{+obj|cs|loc}} #: {{coi|cs|'''v''' lednu|'''in''' January}} # [[in]] (used after certain verbs) {{+obj|cs|acc}} #: {{coi|cs|věřit '''v''' Boha|to believe '''in''' God}} ==== භාවිත සටහන් ==== * The more usual form is '''v''', while '''ve''' is used before words starting with '''f''', '''v''', '''w''' and certain [[consonant]] [[cluster]]s. === වැඩිදුර් කියවීම සඳහා === * {{R:cs:PSJC}} * {{R:cs:SSJC}} {{cln|cs|words without vowels}} == ඕලන්ද == === උච්චාරණය === * {{audio|nl|Nl-v.ogg}} * {{rhymes|nl|eː|s=1}} * {{sense|letter name}} {{IPA|nl|/veː/}} === අකුර === {{head|nl|letter|lower case||upper case|V}} # the twenty-second letter of the Dutch alphabet === අමතර අවධානයට === * Previous letter: [[u#Dutch|u]] * Next letter: [[w#Dutch|w]] == එස්පෙරාන්තො == === උච්චාරණය === * {{sense|letter name}} {{IPA|eo|/vo/}} * {{sense|phoneme}} {{IPA|eo|/v/}} * {{audio|eo|Eo-v.ogg}} === අකුර === {{eo-letter|upper=V|lower=v}} # {{Latn-def|eo|letter|27|vo}} ==== අමතර අවධානයට ==== {{list:Latin script letters/eo}} ==Faroese== === උච්චාරණය === * {{IPA|fo|/v/}} === අකුර === {{head|fo|letter|upper case|V}} # {{Latn-def|fo|letter|25|ve}} ==== අමතර අවධානයට ==== {{list:Latin script letters/fo}} == ෆින්ලන්ත == === නිරුක්තිය === {{fi-ety-letter}} === උච්චාරණය === * {{audio|fi|Fi-v.ogg|text=[[vee]], [[veivi]], [[tavuviiva]], [[vee]]}} === අකුර === {{fi-letter|upper=V|lower=v}} # {{Latn-def|fi|letter|22|vee}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col|fi|title=compounds |kaksois-v |tupla-v |yksöis-v }} ==== අමතර අවධානයට ==== {{list:Latin script letters/fi}} === නාම පදය === {{fi-noun}} # {{abbreviation of|fi|vuosi}} # {{abbreviation of|fi|-vuotias}} == ප්‍රංශ == === උච්චාරණය === * {{q|letter name}} {{fr-IPA|vé}} * {{audio|fr|LL-Q150 (fra)-Jules78120-v.wav}} === අකුර === {{fr-letter|upper=V|lower=v}} # the twenty-second letter of the [[Appendix:Latin script|basic modern Latin alphabet]] #* {{quote-book|fr|year=1837|author=Louis Viardot|title=L’Ingénieux Hidalgo Don Quichotte de la Manche|url=[s:fr: L’Ingénieux Hidalgo Don Quichotte de la Manche{{!}}fr.Wikisource]|original=El ingenioso hidalgo Don Quijote de la Mancha|by=Miguel de Cervantes Saavedra|section=Volume I, Chapter I|passage=Lui cherchant alors un nom qui ne s’écartât pas trop du sien, qui sentît et représentât la grande dame et la princesse, il '''v'''int à l’appeler ''Dulcinée du Toboso'', parce qu’elle était nati'''v'''e de ce '''v'''illage : nom harmonieux à son a'''v'''is, rare et distingué, et non moins expressif que tous ceux qu’il a'''v'''ait donnés à son équipage et à lui-même.|t=Through searching himself thus for a name that did not diverge too much from his own, that would suit and represent the great lady and princess, he came to call her ''Dulcinea del Toboso'', because she was a native of this village [Toboso]: a name in his opinion harmonious, rare and distinguished, and no less expressive than all the ones that he had given to his team and to himself.}} == හංගේරියානු == === උච්චාරණය === * {{sense|phoneme}} {{hu-IPA}} * {{sense|letter name}} {{hu-IPA|vé}} === අකුර === {{hu-letter|upper=V|lower=v}} # {{Latn-def|hu|letter|38|vé}} ==== වරනැඟීම ==== {{hu-infl-nom|v-|e}}{{hu-pos-tek|v-}} === අමතර අවධානයට === {{list:Latin script letters/hu}} === වැඩිදුර් කියවීම සඳහා === * {{R:ErtSz}} == අයිස්ලන්ත == === උච්චාරණය === * {{IPA|is|/vafː/|a=letter name}} === අකුර === {{head|is|letter|upper case|V}} # {{Latn-def|is|letter|26}} === අමතර අවධානයට === {{list:Latin script letters/is}} ==Ido== === උච්චාරණය === * {{IPA|io|/v/|a=context pronunciation}} * {{IPA|io|/ve/|a=letter name}} === අකුර === {{head|io|letter|upper case|V}} # {{Latn-def|io|letter|22}} ==== අමතර අවධානයට ==== {{list:Latin script letters/io}} == ඉතාලි == === අකුර === {{it-letter}} # {{Latn-def-lite|langname=Italian|it|letter|20|vu|vi}} == ජපන් == === විරාම ලක්‍ෂණය === {{head|ja|punctuation mark}} # {{lb|ja|texting|internet slang|dated}} {{l|mul|<3}} ==== සමාන පද ==== * {{ja-l|♥}} === මූලාශ්‍ර === * https://www.wdic.org/w/WDIC/v {{cln|ja|terms written in foreign scripts}} ==Kankanaey== === නිරුක්තිය === {{bor+|kne|tl|v}}. Letter pronunciation is influenced by {{der|kne|en|v}}. === උච්චාරණය === {{kne-pr|vi<a:letter name>|v<a:phoneme>}} === අකුර === {{kne-head|letter}} # {{Latn-def|kne|letter|24|vi}} ==== අමතර අවධානයට ==== {{list:Latin script letters/kne}} === මූලාශ්‍ර === * {{R:kne:Ortograpiya 2016|page=10-11}} ==Khoekhoe== === අකුර === {{head|naq|letter|upper case|V}} # {{lb|naq|obsolete|Tindall orthography}} {{ng|A letter of the Khoekhoe alphabet; modern ''[[ǂ]]''.}} == ලතින් == === වෙනත් ආකාර === * {{l|la|u}} {{qualifier|post-Classical}} === උච්චාරණය === * {{sense|phoneme}} {{IPA|la|/w/|/u/|/uː/}} === අකුර === {{head|la|letter|lower case||upper case|V}} # {{lb|la|sometimes with ''[[littera]]''}} The 20th letter of the [[Latin]] alphabet. === අමතර අවධානයට === * Previous letter: [[t]] * Next letter: [[x]] === මූලාශ්‍ර === * {{R:du Cange}} * {{R:Peck}} {{cln|la|letters|sort=V}} ==Latvian== {{wikipedia|lang=lv}} === නිරුක්තිය === Proposed in 1908 as part of the new Latvian spelling by the scientific commission headed by [[w:Kārlis Mīlenbahs|K. Mīlenbahs]], which was accepted and began to be taught in schools in 1909. Prior to that, Latvian had been written in German [[Fraktur]], and sporadically in [[Cyrillic]]. === උච්චාරණය === * {{lv-IPA|v}} {{rfap|lv}} === අකුර === [[File:Latin alphabet Vv.svg|thumb|200px|V]] {{lv-letter|upper=V|lower=v}} # {{Latn-def|lv|letter|31|vē}} ==== අමතර අවධානයට ==== * ''Letters of the Latvian alphabet:'' *: '''{{l|lv|burts|burti}}:''' {{l|lv|A}}{{l|lv|a}}, {{l|lv|Ā}}{{l|lv|ā}}, {{l|lv|B}}{{l|lv|b}}, {{l|lv|C}}{{l|lv|c}}, {{l|lv|Č}}{{l|lv|č}}, {{l|lv|D}}{{l|lv|d}}, {{l|lv|E}}{{l|lv|e}}, {{l|lv|Ē}}{{l|lv|ē}}, {{l|lv|F}}{{l|lv|f}}, {{l|lv|G}}{{l|lv|g}}, {{l|lv|Ģ}}{{l|lv|ģ}}, {{l|lv|H}}{{l|lv|h}}, {{l|lv|I}}{{l|lv|i}}, {{l|lv|Ī}}{{l|lv|ī}}, {{l|lv|J}}{{l|lv|j}}, {{l|lv|K}}{{l|lv|k}}, {{l|lv|Ķ}}{{l|lv|ķ}}, {{l|lv|L}}{{l|lv|l}}, {{l|lv|Ļ}}{{l|lv|ļ}}, {{l|lv|M}}{{l|lv|m}}, {{l|lv|N}}{{l|lv|n}}, {{l|lv|Ņ}}{{l|lv|ņ}}, {{l|lv|O}}{{l|lv|o}}, {{l|lv|P}}{{l|lv|p}}, {{l|lv|R}}{{l|lv|r}}, {{l|lv|S}}{{l|lv|s}}, {{l|lv|Š}}{{l|lv|š}}, {{l|lv|T}}{{l|lv|t}}, {{l|lv|U}}{{l|lv|u}}, {{l|lv|Ū}}{{l|lv|ū}}, {{l|lv|V}}{{l|lv|v}}, {{l|lv|Z}}{{l|lv|z}}, {{l|lv|Ž}}{{l|lv|ž}} ==Livonian== === උච්චාරණය === * {{qualifier|phoneme}} {{liv-IPA|v}} === අකුර === {{head|liv|letter|upper case|V}} # {{Latn-def|liv|letter|37}} === අමතර අවධානයට === {{list:Latin script letters/liv}} ==Malay== === අකුර === {{ms-letter|upper=V|lower=v}} # {{Latn-def|ms|letter|22}} ==== අමතර අවධානයට ==== {{list:Latin script letters/ms}} ==Maltese== === උච්චාරණය === * {{IPA|mt|/v/}} * {{IPA|mt|/f/}} {{q|by final devoicing or assimilation to a following voiceless obstruent}} * With very few exceptions, this letter occurs only in borrowings. === අකුර === {{head|mt|letter|lower case||upper case|V}} # {{Latn-def|mt|letter|26}} === අමතර අවධානයට === {{list:Latin script letters/mt}} ==Mandarin== === අකුර === {{cmn-pinyin|notr=1}} # {{nonstandard form of|cmn|ü}} ==== භාවිත සටහන් ==== {{orth|v}} is sometimes used as a substitute for {{orth|ü}} in Hanyu Pinyin-based input systems. As a result, it occasionally appears in print as well, though this is nonstandard. ==Mapudungun== === උච්චාරණය === * {{qualifier|phoneme}} {{IPA|arn|/ɨ/}} === අකුර === {{head|arn|letter|upper case|V}} # {{Latn-def|arn|letter|24}} ==== අමතර අවධානයට ==== {{list:Latin script letters/arn}} There are multiple alphabets for writing Mapudungun. The letters that are not in brackets are from the unified alphabet, while the ones in brackets are from the four other alphabets. == මධ්‍යකාලීන ප්‍රංශ == === නිරුක්තිය === {{inh|frm|la|u}}, {{m|la|v}}. === අකුර === {{head|frm|letter}} # {{l|mul|u}} (letter) # {{l|mul|v}} (letter) ==== භාවිත සටහන් ==== * ''u'' and ''v'' were represented by a single character in Middle French, although scholars consider them to be separate letters both in terms of usage and in terms of pronunciation.{{attention|frm|citation needed!}} ==North Frisian== === උච්චාරණය === * Like {{m|frr|w}}, which see. === අකුර === {{head|frr|letter|lower case||upper case|V}} # {{lb|frr|chiefly|Sylt}} {{Latn-def|frr|letter|indef=1}} ==== නිරුක්තිය ==== * Sylt Frisian regularly replaces ⟨{{l|frr|w}}⟩ with ⟨{{l|frr||v}}⟩ word-finally after a long or unstressed vowel. * Otherwise ⟨{{l|frr||v}}⟩ may be retained in Latinate words, but the usual practice in all dialects (including Sylt) is to use ⟨{{l|frr|w}}⟩ like in native words (e.g. {{m|frr|witamiin}} for less common {{m|frr||vitamiin}}). === අමතර අවධානයට === * {{sense|North Frisian letters}} {{l|frr|[[a]], [[ä]], [[å]], [[ā]], [[b]], [[c]], [[d]], [[đ]], [[e]], [[ē]], [[f]], [[g]], [[h]], [[i]], [[j]], [[k]], [[l]], [[m]], [[n]], [[o]], [[ö]], [[p]], [[r]], [[s]], [[t]], [[u]], [[ü]], [[v]], [[w]] ([[q]], [[x]], [[y]], [[z]])}} == නෝර්වීජියානු == === උච්චාරණය === * {{sense|letter name}} {{IPA|no|/ʋeː/}} * {{sense|phoneme}} {{IPA|no|/ʋ/|/v/|/f/}} * {{audio|nb|LL-Q9043 (nor)-Jon Harald Søby (WMNO)-v.wav}} === අකුර === {{head|no|letter}} # ''The 22nd letter of the Norwegian alphabet''. ==Nupe== === උච්චාරණය === * {{sense|phoneme}} {{IPA|nup|/v/}} === අකුර === {{nup-letter|upper=V|lower=v}} # {{Latn-def|nup|letter|26}} ==== අමතර අවධානයට ==== {{list:Latin script letters/nup}} ==Old Czech== === වෙනත් ආකාර === * {{alt|zlw-ocs|u||often before labial consonants}} === නිරුක්තිය === {{inh+|zlw-ocs|sla-pro|*vъ(n)}} , from {{inh|zlw-ocs|ine-pro|*h₁n̥}}. ===Preposition=== {{head|zlw-ocs|preposition}} # [[in]] (inside, for an enclosed space) (''followed by the [[locative case]]'') # [[in]] (used after certain verbs) (''followed by the [[accusative case]]'') #: {{uxi|zlw-ocs|vyjěti '''v''' boj|go '''into''' battle}} ====Descendants==== * {{desc|cs|v}} === වැඩිදුර් කියවීම සඳහා === * {{R:zlw-ocs:Gebauer}} == පෘතුගීසි == === අකුර === {{pt-letter|upper=V|lower=v}} # {{Latn-def|pt|letter|22|vê}} ==== අමතර අවධානයට ==== {{list:Latin script letters/pt}} ==Romani== === උච්චාරණය === * {{IPA|rom|/v/}} === අකුර === {{head|rom|letter|lower case||upper case|V}} # {{lb|rom|International Standard}} {{Latn-def|rom|letter|29}} # {{lb|rom|Pan-Vlax}} {{Latn-def|rom|letter|30}} ==== අමතර අවධානයට ==== {{list:Latin script letters/rom}} == රුමේනියානු == === උච්චාරණය === * {{IPA|ro|/v/}} === අකුර === {{ro-letter|upper=V|lower=v}} # {{Latn-def|ro|letter|27|ve|vî}} ==== අමතර අවධානයට ==== {{list:Latin script letters/ro}} == සර්බෝ-ක්‍රොඒෂියානු == === වෙනත් ආකාර === * {{alt|sh|V||uppercase|}} === උච්චාරණය === * {{qualifier|phoneme}} {{IPA|sh|/ʋ/}} === අකුර === {{sh-letter}} # The 28th letter of the Serbo-Croatian Latin alphabet ([[gajica]]), preceded by {{l|sh|u}} and followed by {{l|sh|z}}. # {{obsolete form of|sh|u}} ===Preposition=== {{sh-preposition}} # {{lb|sh|Kajkavian}} [[in]], [[at]] {{+obj|sh|loc}} # {{lb|sh|Kajkavian}} [[to]], [[into]] {{+obj|sh|acc}} # {{lb|sh|Kajkavian}} [[on]], [[in]], [[at]], [[during]] {{qualifier|in expressions concerning time}} {{+obj|sh|acc}} # {{lb|sh|Kajkavian}} [[in]], [[during]] {{qualifier|in expressions concerning time}} {{+obj|sh|loc}} ==== සමාන පද ==== * {{l|sh|u}}, {{l|sh|vu}}, {{l|sh|f}} ==Skolt Sami== === උච්චාරණය === * {{qualifier|phoneme}} {{IPA|sms|/v/}} === අකුර === {{head|sms|letter|upper case|V}} # {{Latn-def|sms|letter|32}} === අමතර අවධානයට === {{list:Latin script letters/sms}} ==Slovak== === වෙනත් ආකාර === * {{alt|sk|vo}} === නිරුක්තිය === {{inh+|sk|sla-pro|*vъ(n)}}. === උච්චාරණය === * {{sk-IPA}} ===Preposition=== {{head|sk|preposition}} {{rfdef|sk}} === වැඩිදුර් කියවීම සඳහා === * {{R:sk:SDK}} ==Slovene== === නිරුක්තිය 1 === ==== අකුර ==== {{sl-letter|r}} # {{Latn-def|sl|letter|23|ve}} # {{Latn-def|sl|letter|31|alphabet name=Resian}} # {{Latn-def|sl|letter|24|alphabet name=Natisone Valley dialect}} ===== වෙනත් ආකාර ===== * (''uppercase'') {{l|sl|V}} ===== අමතර අවධානයට ===== {{list:Latin script letters/sl}} === නිරුක්තිය 2 === From {{inh|sl|sla-pro|*vъ(n)}}. ==== උච්චාරණය ==== * {{sl-IPA|v}} ====Preposition==== {{sl-head|prep|-}} # (''answering question [[where]]'') (''with [[locative case|locative]]'') [[in]], [[inside]], [[at]] # (''answering question [[where]] to'') (''with [[accusative case|accusative]]'') [[to]], [[into]] # (''indicating a day'') (''with [[accusative case|accusative]]'') [[on]], [[in]], [[at]], [[during]] (in expressions concerning time) # (''indicating a [[month]] or period of time'') (''with [[locative case|locative]]'') [[in]], [[during]] #: {{uxi|sl|'''V''' tem aprilu je veliko deževalo.|This April it was raining a lot.}} #: {{uxi|sl|'''V''' petih letih ni padla niti kapljica dežja.|Within five years not even a droplet of rain has fallen.}} === වැඩිදුර් කියවීම සඳහා === * {{R:sl:Fran}} == ස්පාඤ්ඤ == === උච්චාරණය === {{es-pr |raw:/b/<q:phoneme> |ve<q:letter name><qq:traditional, spelled {{m|es|ve}}>,uve<qq:common in most countries, spelled {{m|es|uve}}><audio:Letter v es es.flac<a:Spain>> }} * {{q|common in some countries}}{{es-pr |ve corta<qq:spelled {{m|es|ve corta}}><bullets:2> |ve baja<qq:spelled {{m|es|ve baja}}><bullets:2> |ve pequeña<qq:spelled {{m|es|ve pequeña}}><bullets:2> |ve chica<qq:spelled {{m|es|ve chica}}><bullets:2> }} === අකුර === {{head|es|letter|lower case||upper case|V}} # the twenty-third (23rd) letter of the Spanish alphabet ==== භාවිත සටහන් ==== * The common letter names, as well as phrases like {{m|es|ve de vaca}} are used to distinguish the letter {{m|es|v}} from the letter {{m|es|b}}. This is done because the two letters represent a single phoneme in modern Spanish, causing their traditional names {{m|es|be}} and {{m|es|ve}} both to be pronounced as {{IPAchar|/ˈbe/}}. ==== අමතර අවධානයට ==== {{list:Latin script letters/es}} ==Tagalog== === නිරුක්තිය === {{bor+|tl|es|v}}. Each pronunciation has a different source: * Filipino alphabet pronunciation is influenced by {{der-lite|tl|en|v}}. * Abecedario pronunciation is from {{der-lite|tl|es|v}}. === උච්චාරණය === {{tl-pr |ví<qq:letter name, Filipino alphabet> |vé<qq:letter name, Abecedario> |+<qq:phoneme> }} === අකුර === {{tl-letter|b=vi}} # {{tl-letter-def|24|vi|alph=fil}} # {{lb|tl|historical}} {{tl-letter-def|25|ve|alph=abec}} ==== භාවිත සටහන් ==== * This letter is mostly used only in proper nouns, unadapted loanwords, or Spanish-based spellings. * Some purists of Tagalog replace ''v'' in words with {{m|tl|b}}. ==== අමතර අවධානයට ==== {{list:Latin script letters/tl}} === වැඩිදුර් කියවීම සඳහා === * {{R:Pambansang Diksiyonaryo}} ==Turkish== === අකුර === {{tr-letter|upper=V|lower=v}} # {{Latn-def|tr|letter|27|ve}} ==== අමතර අවධානයට ==== {{list:Latin script letters/tr}} == වියට්නාම == === උච්චාරණය 1 === {{vi-IPA|vờ}} === උච්චාරණය 2 === {{vi-IPA|vê}} === නිරුක්තිය 1 === Borrowed from {{bor|vi|fr|v}}. ==== අකුර ==== {{vi-letter|lower=v|upper=V}} # {{Latn-def|vi|letter|24|vờ|vê}} ==== අමතර අවධානයට ==== * {{see-temp|list:Latin script letters/vi}} === නිරුක්තිය 2 === ==== ක්‍රියා විශේෂණ පදය ==== {{vi-adv}} # {{lb|vi|slang|Internet|text messaging}} {{abbreviation of|vi|[[vậy]]}} ====Particle==== {{vi-particle}} # {{lb|vi|slang|Internet|text messaging}} {{abbreviation of|vi|[[vậy]]}} {{cln|vi|1-letter abbreviations}} ==Yele== === උච්චාරණය === *{{IPA|yle|/β/}} === අකුර === {{head|yle|letter|upper case|V}} # {{ng|A letter of the [[Yele]] alphabet.}} ==== ව්‍යුත්පන්න යෙදුම් ==== There is a digraph for palatalized {{angbr|vy}}. ==== අමතර අවධානයට ==== {{list:Latin script letters/yle}} ==Zulu== === අකුර === {{zu-letter}} # {{Latn-def|zu|letter|22}} ==== අමතර අවධානයට ==== {{list:Latin script letters/zu}} nw4cltx9boihfgo4h7t7gdzghq5d6yg go 0 3984 235401 204472 2026-06-02T04:38:16Z Lee 19 /* ක්‍රියා පදය */ 235401 wikitext text/x-wiki == ඉංග්‍රීසි == ==== උච්චාරණය ==== * {{enPR|gō}}, {{IPA|en|/ɡoʊ/}} ** {{IPA|en|[ɡəʊ]|a=RP}} ** {{IPA|en|/ɡoʊ/|a=GA}} ** {{IPA|en|[ɡəʉ]|a=Australia}} ** {{IPA|en|[ɡɐʉ]|a=New Zealand}} ** {{IPA|en|[ɡu]|a={{w|Black Country}}}} * {{audio|en|en-uk-to go.ogg|text=to go|a=UK}} * {{audio|en|en-us-go.ogg|a=US}} * {{audio|en|EN-AU ck1 go.ogg|a=AU}} * {{hyph|en|go}} * {{rhymes|en|əʊ|s=1}} ==== ක්‍රියා පදය ==== {{en-verb|go<goes,,went:yode[obsolete]:goed[nonstandard],gone:went[nonstandard]>}} # {{l|si|යන්න}} # {{l|si|යනවා}} {{cln|en|contranyms|irregular verbs|nouns with irregular plurals|suppletive verbs|two-letter words|verbs with weak preterite but strong past participle}} {{C|en|Gaits}} pg55g9hm3c75m3byz0zkpqwh1zxrcij daughter 0 4939 235353 214152 2026-06-01T15:13:07Z Lee 19 235353 wikitext text/x-wiki == ඉංග්‍රීසි == === නිරුක්තිය === From {{inh|en|enm|doughter}}, {{m|enm|doghter}}, from {{inh|en|ang|dohtor|t=daughter}}, from {{inh|en|gmw-pro|*dohter}}, from {{inh|en|gem-pro|*duhtēr}}, from {{inh|en|ine-pro|*dʰugh₂tḗr}}. === උච්චාරණය === * {{enPR|dôʹtər|a=RP}}, {{IPA|en|/ˈdɔːtə(ɹ)/}} * {{audio|en|En-uk-daughter.ogg|a=UK}} * {{enPR|dô'tər|a=GA}}, {{IPA|en|/ˈdɔ.tɚ/|/ˈdɔ.t̬ɚ/|[ˈdɔ.ɾɚ]}} * {{enPR|dä'tər|a=cot-caught}}, {{IPA|en|/ˈdɑ.tɚ/|[ˈdɑ.ɾɚ]}} * {{audio|en|en-us-daughter.ogg|a=US}} * {{enPR|dô'tŭ|a=Australia}}, {{IPA|en|/ˈdoːtɐ/}} * {{homophones|en|dotter|aa=cot-caught}} * {{hyphenation|en|daugh|ter}} * {{rhymes|en|ɔːtə(ɹ)|s=2}} === නාම පදය === {{en-noun|s|daughtren<l:archaic>}} # [[දුව]] {{cln|en|endearing terms|terms of address}} {{C|en|Female family members}} opbish802obpn77rfjeftwxcdhzt2v3 උපග්‍රන්ථය:ගැටපද විවරණය 0 5232 235337 211761 2026-06-01T14:33:29Z Lee 19 /* O */ 235337 wikitext text/x-wiki '''A glossary of terms used in the body of this dictionary.''' See also ''[[Wiktionary:Glossary]]'', which contains terms used elsewhere in the Wiktionary community, and ''[[Appendix:Glossary of rhetoric]]'', which explains commonly used [[#rhetoric|rhetorical]] terms. {{compactTOC|num=yes}} ==0–9== ; 1st person : ''See '''{{glossary|first person}}'''.'' ; 2nd person : ''See '''{{glossary|second person}}'''.'' ; 3rd person : ''See '''{{glossary|third person}}'''.'' ==Symbols== ; * : An [[asterisk#Noun|asterisk]] appearing before a term (an affix, a root, a word, etc.), indicates the term is not attested but reconstructed; for example, {{m|ine-pro|*werdʰh₁om}} is the reconstructed Proto-Indo-European word for ''word''. ; [&nbsp;] : [[bracket#Noun|Brackets]] surrounding a quotation indicate that the quotation either contains a mere mention of a term (for example, "some people find the word '''''manoeuvre''''' hard to spell") rather than an actual use of it (for example, "we need to '''manoeuvre''' carefully to avoid causing upset"), or does not provide an actual instance of a term but provides information about a related term. ; † : In a Chinese entry, a [[dagger#Noun|dagger]] indicates that a sense is obsolete in Modern Standard Chinese, though it may be preserved in fossilized compounds and expressions or other varieties of Chinese. ==අ== ; {{anchor|අනතීත}}{{anchor|අනතීත}}[[අනතීත]] : වර්තමාන-අනාගත ==A== ; {{anchor|a.}}[[a]]. : "[[ante|Ante]]" (Latin for "before"). Hence, a quotation from "''a.'' 1924" is a quotation from no later than the year 1923. ; {{anchor|abbreviation}}[[abbreviation]] : A shortened form of a word or phrase, such as an [[#initialism|initialism]], [[#acronym|acronym]], or [[#clipping|clipping]]. ; {{anchor|අවදි}}{{anchor|අවදි විබත්}}{{anchor|ablative case}}{{anchor|ablative}} [[අවදි විබත්]] ([[ablative case]]) : A [[#case|case]] that indicates separation, or moving away from something. It is used alone or with certain [[#preposition|prepositions]]. For example, if English had a fully [[#productive|productive]] case system that included the ablative case, then in the phrase ''came from the city'', either "the city" or "from the city" would likely be in the ablative. In some languages, such as Latin, this case has acquired many other uses and does not strictly indicate separation anymore. ; {{anchor|ablaut}}{{anchor|grade}}[[ablaut]] : In [[Proto-Indo-European]], or any of its descendants (the [[Indo-European]] languages), a system of [[#vowel|vowel]] alternation in which the vowels that are used in various parts of the word can change depending on meaning. The system is used for purposes of [[#inflection|inflection]] and word derivation. In the Germanic languages, it forms the basis of the [[#strong verb|strong verbs]]. A specific form of ablaut is referred to as a '''grade'''; see for instance [[#zero-grade|zero-grade]]. (More at {{pedia|Indo-European ablaut}}) ; {{anchor|absolutive}}{{anchor|absolutive case}}[[absolutive case]] : A [[#case|case]] used to indicate the [[patient#Noun|patient]] or [[experiencer]] of a [[#verb|verb]]'s action. ; {{anchor|abstract noun}}[[abstract noun]] : A [[#noun|noun]] that denotes an idea, emotion, feeling, quality or other abstract or intangible concept, as opposed to a concrete item, or a physical object. [[#antonym|Antonym]] of [[#concrete noun|concrete noun]]. ; {{anchor|abstract verb}}{{anchor|abstract}}[[abstract verb]] : In the {{w|Slavic languages}}, a verb of motion whose motion is multidirectional (as opposed to unidirectional) or indirect, or whose action is repeated or in a series ([[#iterative|iterative]]). Also called an [[#indeterminate verb|indeterminate verb]]. The opposite type of verb, which expresses a single, completed action, is termed a [[#concrete verb|concrete verb]] (or a [[#determinate verb|determinate verb]]). Motion verbs in the {{w|Slavic languages}} come in abstract/concrete lexical pairs, e.g. {{cog|ru|ходи́ть||to [[go]] (abstract)}} vs. {{m|ru|идти́||to [[go]] (concrete)}}, {{m|ru|бе́гать||to run (abstract)}} vs. {{m|ru|бежа́ть||to run (concrete)}}, {{m|ru|носи́ть||to carry (abstract)}} vs. {{m|ru|нести́||to carry (concrete)}}. English does not make this distinction. For example, "I went to the post office" could be abstract (if I went there and came back, i.e. multidirectional) or concrete (if I am there now, i.e. unidirectional), and different Russian verbs would be used to translate "went" in these two circumstances. In Polish coming back does not cause abstract verbs to be used, only doing something many times (''Chodzę do biura.'' 'I go to the office (every day).' vs. ''Idę do biura'' 'I am going to the office (now).') or moving without target (''Chodzę po pokoju'' 'I am walking around the room.' vs. ''Idę przez pokój.'' 'I am walking across the room.') does. Abstract verbs are always [[#imperfective aspect|imperfective]] in {{glossary|aspect}}, even with prefixes that are normally associated with the [[#perfective aspect|perfective aspect]] (e.g. Polish ''przybiegać''). ; {{anchor|accusative case}}{{anchor|accusative}}{{anchor|acc.}}[[accusative case]], acc. : A [[#case|case]] that is usually used as the [[#direct object|direct object]] of a [[#verb|verb]]. For example, if English had a fully [[#productive|productive]] case system, then ''ball'' in "The man threw the ball" would most likely be in the accusative. ; {{anchor|acronym}}[[acronym]] : An [[#abbreviation|abbreviation]] that is pronounced as the “word” it would spell, such as ''[[NATO]]''. ; {{anchor|active}}{{anchor|active voice}}[[active voice]] : The [[#voice|voice]] verb form in which the grammatical [[#subject|subject]] is the person or thing doing the action ([[cf.]] [[#passive voice|passive voice]]), e.g. ''The boy kicked the ball.'' (See also {{pedia|Voice (grammar)}}) ; {{anchor|acute}}{{anchor|acute accent}}[[acute accent]] : A [[#diacritic|diacritic]] mark ( ´ ) used that can be placed above a number of letters in many languages of the Latin, Greek and Cyrillic writing systems. ; {{anchor|AD}}[[AD]] : Anno Domini. Year-numbering system equivalent to [[CE]]. ; ''adj'' : ''See '''{{glossary|adjective}}'''.'' ; {{anchor|adjective}}[[adjective]] : A word like {{m|en|big}} or {{m|en|childish}} that usually serves to modify a [[#noun|noun]]. ; {{anchor|adverb}}[[adverb]] : A word like {{m|en|very}}, {{m|en|wickedly}} or {{m|en|often}} that usually serves to modify an [[#adjective|adjective]], [[#verb|verb]], or other adverb.<!-- Compare ''{{glossary|modifier}}''. --> ; {{anchor|adverbial}}[[adverbial]] : Relating to an [[#adverb|adverb]]. For example, an ''adverbial participle'' is a [[#participle|participle]] that functions like an adverb in a sentence. ; {{anchor|adverbial clause}}[[adverbial clause]] : A type of [[#dependent clause|dependent clause]] that modifies a verb in an [[#adverbial|adverbial]] fashion. Examples are '''''When my friend arrives''', I will take him out to dinner'' and '''''If it rains''', I will go home'' (the latter example being specifically a ''conditional clause''). ; {{anchor|affix}}{{anchor|af}}{{anchor|agent nouns}}[[affix]] : A [[bound morpheme]] added to a word’s stem; a [[prefix]], [[suffix]], [[interfix]], etc. In the narrow sense, {{syn of|und|#suffix|suffix|nocap=1}}. ; {{anchor|agentive}}{{anchor|agent noun}}{{anchor|agent nouns}}[[agent noun]] : A noun that denotes an agent who does the action denoted by the verb from which the noun is derived, such as "cutter" derived from "to cut". ; {{anchor|AHD}}AHD : The ''[[w:American Heritage Dictionary|American Heritage Dictionary]]''. For historical reasons, this abbreviation is sometimes used here to identify a respelled pronunciation that is given in [[#enPR|enPR]] form. ; {{anchor|alternative form}}Alternative form : A word etymologically related but varying somehow to another. ; {{anchor|ambitransitive verb}}{{anchor|ambitransitive}}[[ambitransitive verb]] : Capable of being either {{glossary|transitive}} or {{glossary|intransitive}} depending on usage. For instance, {{m|en|eat}} and {{m|en|read}} optionally take a [[#direct object|direct object]]: "I eat daily", "She likes to read" (both intransitive), "Read this book", "I do not eat meat" (both transitive). [[#ergative verb|Ergative verbs]] (q.v.) are a kind of ambitransitive verb. ; {{anchor|anglicisation}}{{anchor|anglicization}}{{anchor|anglicised}}{{anchor|anglicized}}[[anglicisation]], [[anglicization]] : The modification of a foreign ([[#loanword|borrowed]]) word to make it more English in form. ; {{anchor|angry register}}[[angry]] [[#register|register]] : Belonging to the angry linguistic [[#register|register]], used only when the speaker is angry. This register is quite rare, but is found in the {{w|Bikol languages}} of the central Philippines. ; {{anchor|animate}}{{anchor|animacy}}[[animate]] : Having a [[referent]] that includes a human or animal. Many languages (such as the {{w|Slavic languages}}) classify nouns based on animacy, using different [[#inflection|inflection]]s or words with animate and inanimate nouns. (See also {{pedia|Animacy}}) ; {{anchor|antepenultima}}{{anchor|antepenultimate}}{{anchor|antepenult}}[[antepenultima]] : The third-to-last [[#syllable|syllable]] of a word, before the [[#penultima|penultima]]. ; {{anchor|antonym}}{{anchor|antonymous}}[[antonym]] : A word with a meaning that is the opposite of a meaning of another word. For example, {{m|en|good}} is an antonym of {{m|en|bad}}. Contrast [[#synonym|synonym]]. ; {{anchor|aorist}}{{anchor|aorist tense}}[[aorist]] : A grammatical category of [[#verb|verbs]] that is often a [[#perfective|perfective]] past. (See also {{pedia|aorist}}) ; {{anchor|apheresis}}{{anchor|apheretic}}{{anchor|aphaeresis}}{{anchor|aphaeretic}}[[apheresis]] : The removal of a letter or sound from the beginning of a word. ; {{anchor|aphesis}}{{anchor|aphetic}}[[aphesis]] : The removal of an initial unstressed sound from a word, the process by which {{m|en|escarp}} became {{m|en|scarp}}. Words derived in this way are called aphetic. ; {{anchor|apocopic}}{{anchor|apocope}}{{anchor|apocopate}}{{anchor|apocopated}}{{anchor|apocopation}}[[apocope]] : Omission of the final sound or syllable of a word without changing its morphological structure or meaning. Occurs in Italian, Spanish, and other languages. ; {{anchor|approximant}}[[approximant]] : A [[#consonant|consonant]] sound produced by restricting the air flow through the mouth only slightly, resulting in a smooth sound. In English, the approximants are {{IPAchar|/l/}}, {{IPAchar|/ɹ/}}, {{IPAchar|/w/}}, {{IPAchar|/j/}} (as in the initial sounds of ''loo'', ''rue'', ''woo'' and ''you''). Approximants are distinguished from [[#fricative|fricative]]s, in which the air is constricted enough to cause a rough, hissing or buzzing sound, and [[#plosive|plosive]]s, in which the air is blocked completely for a short period of time. ; {{anchor|archaic}}{{anchor|archaism}}[[archaic]] : No longer in general use, but still found in some contemporary texts that aim for an antique style, like historical novels. For example, {{m|en|thee}} and {{m|en|thou}} are archaic pronouns, having been completely superseded by {{m|en|you}}.<!--Sometimes understood by educated people, but rarely used in current texts or speech.--> ''Archaic'' is a stronger term than ''[[#dated|dated]]'', but not as strong as ''[[#obsolete|obsolete]]''. (See [[Wiktionary:Obsolete and archaic terms]].) Whereas an archaic term names a still-extant thing or non-outdated concept, a [[#historical|historical]] term names a former thing or outdated concept. ; {{anchor|areal}}{{anchor|areal feature}}[[areal]] {{nobold|{{wikipedia|Areal feature}}}} : Distributed across multiple languages inhabiting a particular area, due to [[w:language contact|language contact]] among them rather than due to [[inheritance]] from a common ancestor. The term can be applied either to words (see ''{{glossary|loanword}}'') or features of languages such as in [[w:grammar|grammar]], [[w:morphology|morphology]], and [[w:phonology|phonology]]. See also ''{{glossary|Wanderwort}}'' and ''{{glossary|stratum}}''. ; {{anchor|article}}[[article]] : A type of [[#determiner|determiner]] that is used as a grammatical indicator in some languages, and is usually central to the grammar and syntax of that language. In English, the articles are the [[#definite|definite]] article {{m|en|the}}, and the [[#indefinite|indefinite]] articles {{m|en|a}} and {{m|en|an}}. Some languages may have more articles, such as the French [[#partitive|partitive]] articles {{m|fr|du}}, {{m|fr|de la}} and {{m|fr|des}}, while many languages lack articles altogether. ; {{anchor|aspect}}[[aspect]] {{nobold|{{wikipedia|Grammatical aspect}}}} : A property of a verb form indicating the nature of an action as [[#perfective|perfective]] (complete) or [[#imperfective|imperfective]] (incomplete or continuing). ; {{anchor|aspirated_h}}[[aspirated h]] : In French, an initial ⟨h⟩ that is treated as a [[#consonant|consonant]]; that is to say, [[liaison]] and [[elision]] are not permitted at the beginning of a word with an aspirated ⟨h⟩. ; {{anchor|assimilation}}{{anchor|assimilate}}{{anchor|assimilated}}[[assimilation]] {{nobold|{{wikipedia|Assimilation (phonology)}}}} : Assimilation is a common phonological process by which one sound becomes more like a nearby sound. This can occur either within a word or between words. See also ''{{glossary|dissimilation}}''. ; {{anchor|attributive}}{{anchor|attributively}}[[attributive]] :# An adjective that stands in a syntactic position where it directly modifies a noun, as opposed to a [[#predicative|predicative]] adjective, which stands in a [[#predicate|predicate]] position but which modifies the [[#subject|subject]] of the [[#clause|clause]]. For example, in ''the big green house'', ''big'' and ''green'' are attributive adjectives, whereas in ''The house is big and green'', ''big'' and ''green'' are predicative adjectives. Some adjectives are only-attributive like {{m|en|close#Adjective}} (in ''a close friend'') or {{m|en|plain}} (in ''plain nonsense''). :# A noun or adjective (or phrase) that names a real object with the ''attributes'' of another real object. This is in contrast to a [[#substantive|substantive]] noun or adjective, which names a real object that is the actual ''substance'' named by the noun or adjective. ; {{anchor|augment}}{{anchor|augmented}}[[augment]] {{nobold|{{wikipedia|Augment (linguistics)}}}} : In some Indo-European languages, a prefixed [[#vowel|vowel]] (usually '''e-'''; '''έ''' or '''ή''' in Greek, '''a-''' in Sanskrit) indicating a past tense in a verb. ; {{anchor|augmentative}}[[augmentative]] : A word form expressing large size, importance, intensity, or seniority. ; {{anchor|auxiliary verb}}[[auxiliary verb]] or {{anchor|auxiliary}}[[auxiliary]] : A verb that accompanies another verb in a clause. It is used to indicate distinctions in {{glossary|tense}}, {{glossary|mood}}, {{glossary|voice}}, {{glossary|aspect}} or other grammatical nuances. English examples are {{m|en|can}}, {{m|en|will}}, {{m|en|have}}, {{m|en|be}}. ; {{anchor|avoidance}}[[avoidance]] term : A word standardly used to replace a [[taboo]] word. (See also {{pedia|Naming taboo}}) ==B== ; {{anchor|back-formation}}[[back-formation]] : A term formed by removing an apparent or real prefix or suffix from an older term; for example, the noun {{m|en|pea}} arose because the final {{IPAchar|/z/}} sound in {{m|en|pease}} sounded like a plural suffix. Similarly, the verb {{m|en|edit}} is a back-formation from the earlier noun {{m|en|editor}}. Not to be confused with [[#clipping|clipping]], which just shortens a word without changing meaning or part of speech. ; {{anchor|back vowel}} [[back vowel]] : Vowel sound produced in the back of the mouth. Examples in English include /uː/ in {{l|en|rule}} or /əʊ/ in {{l|en|pole}}. Contrasts to a [[#front vowel|front vowel]]. ; {{anchor|backronym}}[[backronym]] : A word that is either not an [[#acronym|acronym]] but is taken to be one and for which a full form is invented by [[#back-formation|back-formation]], or is an acronym and for which an alternative full form is invented by back-formation. ; {{anchor|backslang}}[[backslang]] : A form of [[#slang|slang]] in which the spelling of words is reversed. ; {{anchor|bahuvrihi}}[[bahuvrihi]] : Another term for an ''[[#exocentric|exocentric]] compound''. Contrast [[#tatpurusa|tatpurusa]], [[#karmadharaya|karmadharaya]] and [[#dvandva|dvandva]]. ; {{anchor|barytone}}[[barytone]] : With the stress elsewhere than upon the final syllable. Compare with [[#oxytone|oxytone]], [[#paroxytone|paroxytone]], and [[#proparoxytone|proparoxytone]]. ; {{anchor|BC}}[[BC]] : Before Christ. Year-numbering system equivalent to [[#BCE|BCE]]. ; {{anchor|BCE}}[[BCE]] : Before the Common, Current or Christian Era. Year-numbering system equivalent to [[BC]]. [[AD]] is expressed as [[#CE|CE]]. To automatically switch most dates to use the "BC"/"AD" style, visit [[WT:Per-browser preferences]]. ; {{anchor|blend}}[[blend]] : A word or name that combines two words, typically starting with the start of one word and ending with the end of another, such as {{m|en|smog}} (from {{m|en|smoke}} and {{m|en|fog}}) or {{m|en||Wiktionary}} (from {{m|en|wiki}} and {{m|en|dictionary}}). Many blends are [[#portmanteau|portmanteaus]]. ; {{anchor|bowdlerization}}[[bowdlerize|bowdleriz]]ation : The removal, from a text, of words or phrases that are considered offensive or vulgar. ; {{anchor|broadly}}{{anchor|broad}}[[broadly]] : Indicates a less precise (wider) use of words; short for ''broadly speaking''. For most practical purposes, synonymous with ''[[#loosely|loosely]]''<!--because the differentiable nuance whereby "loosely" can sometimes imply some degree of prescriptive deprecation, whereas "broadly" less often and less strongly does so, is beyond-scope for this glossary; that is, for this glossary's purposes, "broadly" and "loosely" are interchangeable in practice-->. Contrast ''[[#strict|strict]]'' (''narrow'') senses. ==C== ; {{g|c}} : ''See '''{{glossary|common gender}}'''.'' ; {{anchor|c.}}{{anchor|ca.}}c., ca. : "[[circa|Circa]]" ("about"). Hence, a quotation from "c. 1924" or "ca. 1924" is a quotation from approximately 1924. ; {{anchor|calque}}{{anchor|loan translation}}{{anchor|calqued}}[[calque]] : A borrowing by word-for-word translation: a [[loan translation]]. For example, the English expression ''[[it goes without saying]]'' is a calque (a literal, word-for-word translation) of {{m+|fr|ça va sans dire}}, and ''[[flea market]]'' is a calque of {{m+|fr|marché aux puces|lit=[[market]] with [[flea]]s}}. Contrariwise, the term ''[[skyscraper]]'' was calqued into French as {{m|fr|gratte-ciel|lit=scrapes-sky}}. A semantic calque, also known as [[#semantic loan|semantic loan]], works similarly but does not create new terms. (''see'' {{pedia|Calque}}) ; {{anchor|case}}[[case]] : One of the forms of a noun, used to indicate its function in the phrase or sentence. Examples include: [[#nominative case|nominative]], [[#accusative case|accusative]], [[#genitive case|genitive]], [[#dative case|dative]]. ; cat. : Abbreviation for {{m|en|category}}. : Without the period, the [[w:ISO 639-3|ISO 639-3]] code for the Catalan language. ; {{anchor|category}}[[category]] : A collection of entries, used to categorize or group entries of words that are similar in syntax (for example, English plural nouns) or in sense (for example, English words pertaining to sports); ''see'' [[Wiktionary:Categorization]]. ; {{anchor|catenative}}{{anchor|catenative verb}}[[catenative]] verb : A [[#verb|verb]] able to be immediately followed by the full or bare [[#infinitive|infinitive]], or [[#gerund|gerund]] (i.e. non-finite verbs). : → [[Appendix:English catenative verbs]] ; {{anchor|causative}}{{anchor|causative verb}}[[causative]] verb : A transitive verb that is derived from another verb, and expresses the act of making someone/something do the action of the base verb. Examples in English are: {{m|en|lay}} (cause to {{m|en|lie}}), {{m|en|set}} (cause to {{m|en|sit}}) and {{m|en|raise}} (cause to {{m|en|rise}}). Compare '''[[#factitive|factitive verb]]s''' (e.g. {{m|en|shorten}}, {{m|en|enslave}}), which are similar but are derived from adjectives or nouns. ; {{anchor|CE}}[[CE]] : Common, Current or Christian Era. Year-numbering system equivalent to [[AD]]. To automatically switch most dates to use the "BC"/"AD" style, visit [[WT:Per-browser preferences]]. ; {{anchor|cf.}}[[cf.]] : "Confer"; "see"; "compare"&nbsp; – often used to indicate a word with similar, or opposite meaning. ; {{anchor|circumlocutory}}[[circumlocutory]] : Refers to a roundabout or indirect way of speaking; the use of more words than necessary to express an idea. ; {{anchor|CJKV}}{{anchor|CJKV}}[[CJK]], [[CJKV]] : Chinese, Japanese, Korean{{,}} (and Vietnamese); [[w:CJK characters|CJK characters]]. ; {{anchor|classifier}}[[classifier]] : See [[#counter|counter]]. ; {{anchor|clause}}[[clause]] : A word or group of words that functions as a single unit in the [[#syntax|syntax]] of a [[#sentence|sentence]], where the [[#head|head]] (or central) word is a [[#verb|verb]]; normally distinguished from a [[#phrase|phrase]], which is a similar unit where the head word is some other [[#part of speech|part of speech]], such as a [[#noun|noun]], [[#adjective|adjective]] or [[#preposition|preposition]]. For example, the [[#sentence|sentence]] ''The man entered the house, which was large and blue'' contains two clauses, the [[#independent clause|independent clause]] ''The man entered the house'' and the [[#dependent clause|dependent clause]] ''which was large and blue'' (here the dependent clause is specifically a [[#relative clause|relative clause]], although not all dependent clauses are relative clauses). ; {{anchor|ක්ලිප් කිරීම්}}{{anchor|clipping}} [[ක්ලිප් කිරීම්]] ([[clipping]]) : A shortening of a word, without changing meaning or part of speech. Not to be confused with [[#back-formation|back-formation]], which changes meaning, or [[#ellipsis|ellipsis]], which shortens by omission of whole words. Also differs from [[#abbreviation|abbreviation]], which shortens the written—rather than spoken—form of a word or phrase. See also ''[[#apheresis|apheresis]]'', ''[[#apocope|apocope]]''. : → {{pedia|Clipping (morphology)}} ; {{anchor|clitic}}[[clitic]] : A word that attaches to a phrase and cannot be used on its own, such as English ''[['s|-'s]]''. Many languages have clitic [[#pronouns|pronouns]] ([[#weak_pronoun|weak pronouns]]), which may be contrasted with [[#emphatic|emphatic]] or [[#strong|strong]] pronouns; for example, English ''[['em]]'' is a clitic version of ''[[them]]'', and always attaches to the preceding word (usually the [[#verb|verb]]). ; {{anchor|cognate}}[[cognate]] : [[descend|Descended]] from the same source [[#lexeme|lexeme]] of an [[ancestor]] language. ; {{anchor|coinage}}{{anchor|coined}}[[coinage]] : A new word intentionally created with a definite meaning. ; {{anchor|collective}}{{anchor|collectively}}{{anchor|collective noun}}[[collective]] : Expressing a collection or aggregate of individuals by a [[#singular|singular]] form. : → [[:Category:Collective nouns by language]]<!-- lb collective, collectively --> ; {{anchor|colloquial}}[[colloquial]] : Denotes words belonging to a spoken or vernacular variety of a language. These words are only properly used in a casual or familiar context. This label is only used with some languages; with others it is treated as a synonym of ''[[#informal|informal]]''. If used, ''colloquial'' is stronger than ''informal'' (a general rule of thumb is that informal words may be used in the running text of a newspaper article, while a colloquial term would likely not appear without quotation marks). : '''Note:''' It is a common misconception that ''colloquial'' somehow denotes "local" or a word being "[[#regional|regional]]". This is incorrect; the word root for ''colloquial'' is related to {{m|en|locution}}, not {{m|en|location}}. ; {{anchor|c}}{{anchor|common}}{{anchor|common gender}} [[common gender]], {{g|c}} : "Of common [[#gender|gender]]". Some languages have a distinct common gender that combines [[#masculine|masculine]] and [[#feminine|feminine]] but is distinguished from [[#neuter|neuter]]. In other languages, a "noun of common gender" is a pair of nouns, one masculine and one feminine, that are identical in form, and that have the same sense except that one refers to men and the other to women. Distinguish [[#epicene|epicene]]. ; {{anchor|comparable}}[[comparable]] : Of an adjective or adverb: able to be compared, having [[#comparative|comparative]] and [[#superlative|superlative]] forms that end in ''-er'' and ''-est'' (adjectives only), or in conjunction with the words ''more'' or ''most'', or sometimes ''further'' or ''furthest''. Examples: ''big'', ''bigger'', and ''biggest''; ''talented'', ''more talented'', and ''most talented''; ''upstairs'', ''further upstairs'', and ''furthest upstairs''. Some adjectives are truly '''[[#uncomparable|uncomparable]]''', such as ''daily'', ''additional'', and ''else''. Many other adjectives, such as ''unique'', ''existential'', and ''bearable'' are generally considered uncomparable, but controversially so, where examples can be readily cited of something being "''more bearable''" or "''most perfect''". ; {{anchor|comparative}}[[comparative]] : An [[#inflection|inflection]], or different form, of a '''[[#comparable|comparable]]''' adjective showing a relative quality, usually denoting "to a greater extent" but not "to the ultimate extent". (See also ''[[#superlative|superlative]]'' and ''[[#degrees of comparison|degrees of comparison]]''.) In English, the ''comparative'' form is usually formed by appending ''-er'', or using the word ''more''. For example, the comparative of ''hard'' is "''harder''"; of ''difficult'', "''more difficult''". ; {{anchor|compound}}[[compound]] : A word or name that combines two or more words without altering them, such as ''[[dishcloth]]'' (from ''[[dish]]'' and ''[[cloth]]'') or ''[[keyboard]]'' (from ''[[key]]'' and ''[[board]]''). Compound terms are indicated in etymologies using {{temp|compound}}. (See also ''[[WT:ETY#Compound]]''.) ; {{anchor|concrete noun}}[[concrete noun]] : A [[#noun|noun]] that denotes something tangible or material, such as a person or place. [[#antonym|Antonym]] of [[#abstract noun|abstract noun]]. ; {{anchor|concrete verb}}{{anchor|concrete}}[[concrete verb]] : In the {{w|Slavic languages}}, a verb of motion whose motion is unidirectional and expresses a single, completed action. Opposed to [[#abstract verb|abstract verbs]], whose motion is multidirectional or indirect, or whose action is repeated or in a series ([[#iterative|iterative]]). Also called a [[#determinate verb|determinate verb]]. See ''[[#abstract verb|abstract verb]]'' for more discussion. ; {{anchor|conditional}}{{anchor|conditional mood}}[[conditional mood]] : The [[#mood|mood]] of a [[#verb|verb]] used to signify that something is [[contingent]] upon the outcome of something else. The conditional mood in English is normally introduced by the word ''would'', as in ''If I were rich, I would be happy''. ; {{anchor|conjugation}}[[conjugation]] : The [[#inflection|inflection]] of [[#verb|verb]]s. See also ''[[#declension|declension]]''. ; {{anchor|conjunction}}[[conjunction]] : A word used to join other words or phrases together into sentences. ; {{anchor|connegative}}[[connegative]] : A [[verb]] form used with the [[#negative verb|negative verb]]. ; {{anchor|consonant}}[[consonant]] : Any sound that is not the dominant sound of a [[#syllable|syllable]], the dominant sound generally being a [[#vowel|vowel]]. ; {{anchor|consonantism}}[[consonantism]] : The sequence of [[#consonant|consonants]], or the quality peculiar to the consonants of a given word or group of words. ; {{anchor|construct state}}[[construct state]] : In some languages, a grammatical form that is used in construing a noun or adjective with another noun or adjective. In the [[Semitic]] languages, the construct form is usually a noun modified by a following noun in a genitive construction. The construct state of such a noun ''X'' can usually be translated to English as ''X of''. In [[Persian]], the construct state is typically used for all nouns and adjectives in a [[noun phrase]] except the very last. ; {{anchor|contamination}}[[contamination]] : Influence of one term on the development of another term whereby they come to have similar meanings or similar sound, [[conflation]]. ; {{anchor|contraction}}{{anchor|contracted}}[[contraction]] : A word or phrase shortened in speech, sometimes represented in writing with a [[punctuation mark]] in place of missing letters (e.g. {{noncog|en|-}} {{m|en|do}} {{m|en|not}} → {{m|en|don't}} or {{noncog|ro|-}} {{m|ro|nu}} {{m|ro|e}} → {{m|ro|nu-i}}). ; {{anchor|contranym}}[[contranym]] : A term with two opposite meanings. ; {{anchor|conversion}}[[conversion]] : The process whereby a new word is created without changing the form, often by allowing the word to function as a new part of speech. ; {{anchor|coordinate term}}[[coordinate term]] : A term that is a different type of the same [[#hypernym|hypernym]] (loosely "category"). ''Car'' and ''bicycle'' are coordinate terms to each other, both being [[#hyponym|hyponyms]] of a shared [[#hypernym|hypernym]] ''vehicle''. Although the term can be applied broadly – e.g. ''car'' and ''asteroid'' are both ''things'' –, such usage is not useful in Wiktionary. ; {{anchor|coordinative}}[[coordinative]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which the two parts are coordinated and the intended meaning of the compound as a whole is a combination of the two parts. Also known as a ''[[#dvandva|dvandva]] compound''. Examples in English are not common but are found in many other languages, e.g. {{m+|el|μαχαιροπίρουνο||cutlery|lit=knife-fork}} and {{m+|yi|טאַטע־מאַמע||parents|lit=papa-mama}}. Contrast [[#exocentric|exocentric]] and [[#endocentric|endocentric]] compounds. ; {{anchor|copula}}{{anchor|copulative}}[[copula]] : A verb that links and equates its [[#subject|subject]] with its object; also called a [[#linking verb|linking verb]]. The most common copula is the verb ''to be'', but others exist, such as ''to seem'', ''to appear'' and ''to sound''. The object of a copula often has special properties. For example, it can be an [[#adjective|adjective]] (''John is '''very tall''''') when most verbs require their objects to be [[#noun|noun]]s or [[#pronoun|pronoun]]s. In addition, in languages with [[#case|case]] distinctions, the object of a copula is most commonly in the [[#nominative|nominative]] case, while the object of other verbs is usually in a different case, such as the [[#accusative|accusative]] case. Many languages (e.g. {{cog|ru|-}}, {{cog|he|-}}, and {{cog|ar|-}}) use a ''null copula'' (i.e. no word at all) in the present tense when English would use the words ''am'', ''are'' or ''is''. ; {{anchor|corruption}}{{l|en|corruption|id=usage prescription}} : A [[#nonstandard|nonstandard]] form of a word, expression, or text, assigned a value judgment as being [[debase]]d, especially when resulting from [[misunderstanding]], [[transcription]] error, or [[mishear]]ing; this term is applied in usage prescription but not in modern linguistic science.<!--[[w:Language change]] addresses the epistemological problem with the value judgment, even when misapprehension was the causative factor.--> ; {{anchor|countable}}[[countable]], countable noun, [[count noun]] : Describes a noun which can be freely used with the [[indefinite article]] (''a'' or ''an'' in English) and with numbers, and which therefore has a [[plural]] form. [[#antonym|Antonym]]: ''[[#uncountable|uncountable]]'' or ''mass noun''. ; {{anchor|counter}}[[counter]] : In linguistics, counters, [[measure word]]s or [[classifier]]s are words that are used in combination with a numeral to indicate an amount of something represented by some noun. They denote a unit or measurement and are used with [[mass noun]]s, and sometimes also with [[count noun]]s. (Compare ''[[#singulative|singulative]].'') ==D== ; {{anchor|dated}}[[dated]] : Formerly in common use, and still in occasional use, but now unfashionable; for example, ''[[wireless]]'' in the sense of "broadcast radio tuner", ''[[groovy]]'', and ''[[gay]]'' in the sense of "bright" or "happy" are all dated. ''Dated'' is not as strong as ''[[#archaic|archaic]]'' or ''[[#obsolete|obsolete]]''. See [[Wiktionary:Obsolete and archaic terms]]. ; {{anchor|සපදන් විබත්}}{{anchor|dative case}}{{anchor|dative}}{{anchor|dat}}[[සපදන් විබත්]] ([[dative case]]), dat. : A [[#case|case]] that is usually used as the [[#indirect object|indirect object]] of a verb. For example, if English had a fully [[#productive|productive]] case system, then ''him'' in "She gave him the ball" would most likely be in the dative. ; {{anchor|declension}}[[declension]] : The [[#inflection|inflection]] of [[#noun|noun]]s and words like them, or used together with them (i.e. [[#nominal|nominal]]s). See also ''[[#conjugation|conjugation]]''. ; {{anchor|defective}}[[defective]] : Normally would be expected to have a full set of [[#inflection|inflected]] forms, but some of the inflections do not exist or are never used. English examples are the defective verbs {{m|en|can}} and {{m|en|shall}}, which do not have [[#infinitive|infinitive]] forms (there is no ''to can'' or ''to shall''). ; {{anchor|defective spelling}}defective spelling : In languages with [[mater lectionis|matres lectionis]] ([[#consonant|consonant]] letters representing [[#vowel|vowels]]), the form including no additional ones, this may still include a mater lectionis. ; {{anchor|definite}}[[definite]] : Refers to forms of words that present something as known, identified, or immediately identifiable; in English, this is the basic meaning of the [[#article|article]] ''[[the]]''; in some languages, this is a nominal or adjectival [[#inflection|inflection]]. In the Germanic languages, adjectives inflected as definite are referred to as "weak". In Hungarian, the definite conjugation is used to indicate [[:w:Hungarian verbs#Definite and indefinite conjugations|definite objects]], including ''him, her, it, them,'' and the formal ''you.'' ; {{anchor|degrees of comparison}}[[degrees of comparison]] : [[#inflection|Inflections]] of adjectives and adverbs which allow comparisons. English has three ''degrees of comparison'': [[#positive|positive]], [[#comparative|comparative]] and [[#superlative|superlative]]. Some other languages have other degrees, e.g.: [[comparative superlative]], [[relative superlative]], [[elative]]. ; {{anchor|denominal}}[[denominal]] : Derived from a [[#noun|noun]]. ; {{anchor|dependent}}[[dependent]] : (In Greek and in the Gaelic languages) A verb form which is not used independently but preceded by a particle to form the negative or a tense form. ; {{anchor|dependent clause}}[[dependent clause]] : A [[#clause|clause]] that cannot stand on its own as a complete [[#sentence|sentence]], as opposed to an [[#independent clause|independent clause]]. Also known as a [[#subordinate clause|subordinate clause]]. Logically, a dependent clause modifies a word in another clause in the sentence. Common examples are (1) [[#relative clause|relative clause]]s (also known as "adjective clauses" or "adjectival clauses"), which modify nouns (e.g. ''The man '''whom I saw yesterday''' is leaving today''); (2) [[#adverbial clause|adverbial clause]]s, which modify verbs in an adverbial fashion (e.g. '''''When it is time to leave''', I will go home''), and [[#noun clause|noun clause]]s, which take the place of nouns (e.g. ''I said '''that my name is John''''' or ''I suggested '''that he leave'''''). (''see'' {{pedia|Dependent clause}}) ; {{anchor|deponent}}[[deponent]] : (In Greek, Latin, and some Gaelic and Nordic languages) A verb with an active meaning which conjugates in a passive manner. ; {{anchor|derived terms}}[[Wiktionary:Entry layout explained#Derived terms|derived terms]] : A post-[[POS]] heading listing terms in the same language that are morphological derivatives. ; [[derogatory]] : ''See '''{{glossary|pejorative}}'''.'' ; {{anchor|descendants}}[[Wiktionary:Entry layout explained#Descendants|descendants]] : A post-[[POS]] heading listing terms in other languages that have borrowed or inherited the word. ; {{anchor|descriptive}}[[descriptive]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which one part modifies the other, where both parts refer to the intended meaning of the compound as a whole. Also known as a ''[[karmadharaya]] compound''. The intended meaning of the compound as a whole is an extension of the sum-of-parts meaning of the compound. Examples in English are "[[blackboard]]" (a type of board which is [often] black) and "[[houseboat]]" (a boat which is also a house). Contrast [[#determinative|determinative]] compounds, where the modified component but not the modifier refer to the intended meaning as a whole, as in "[[rainbow]]" and "[[footstool]]". Descriptive compounds are a subtype of [[#endocentric|endocentric]] compounds, which are in turn contrasted with [[#exocentric|exocentric]] and [[#coordinative|coordinative]] compounds. ;{{anchor|desiderative}}[[desiderative]] : A verb form indicating a wish. ; {{anchor|determinate verb}}{{anchor|determinate}}[[determinate verb]] : In the {{w|Slavic languages}}, another term for ''[[#concrete verb|concrete verb]]''. ; {{anchor|determinative}}[[determinative]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which one part modifies the other, where the modified component (but not the modifier) refers to the intended meaning of the compound as a whole. Also known as a ''[[tatpurusa]] compound''. Examples in English are "[[rainbow]]" (a type of [[bow]], caused by the rain) and "[[footstool]]" (a type of [[stool]], intended for one's feet). Contrast [[#descriptive|descriptive]] compounds, where both the modifier and modified component refer to the intended meaning as a whole, as in "[[blackboard]]" or "[[houseboat]]". Determinative compounds are a subtype of [[#endocentric|endocentric]] compounds, which in turn are contrasted with [[#exocentric|exocentric]] and [[#coordinative|coordinative]] compounds. ; {{anchor|determiner}}[[determiner]] : A noun modifier that expresses the in-context reference or quantity of a noun or noun phrase. Determiners are often considered adjectives, but in fact are not quite the same; for example, in English, {{m|en|big}} is an adjective, so “the big car” is grammatical while *“He saw big car” is not, but {{m|en|some}} is a determiner, so *“the some car” is not grammatical while “He saw some car” is. In English, adjectives can ''sometimes'' stand alone without a noun, while determiners nearly ''always'' can (contrast *“He saw big” with “He saw some”), such that they are sometimes considered pronouns as well as adjectives. ; {{anchor|deverbal}}[[deverbal]] : A word, often a [[#substantive|substantive]], derived from a [[#verb|verb]]. Contrast ''[[#denominal|denominal]]''. ; {{anchor|diachrony}}{{anchor|diachronic}}{{anchor|diachronically}}[[diachrony]] {{nobold|{{wikipedia|Diachrony_and_synchrony|Diachrony and synchrony}}}} : A viewpoint of analysis of a language or phrase within a language which considers the [[historical linguistics|historical changes]] over time which have shaped its state at a given later time. The term is typically used to contrast with ''{{glossary|synchrony}}''. ; {{anchor|diacritic}}{{anchor|diacritical}}{{anchor|diacritical mark}}[[diacritic]] : A diacritic – also diacritical mark, diacritical point, diacritical sign, or an accent – is a [[#glyph|glyph]] added to a letter, or basic glyph. Examples: [[#acute|acute]] ( ´ ), double acute ( ˝ ), [[#breve|breve]] ( ˘ ), inverted breve ( ̑ ), [[#cedilla|cedilla]] ( ¸ ), [[#diaeresis|diaeresis]]/[[#umlaut|umlaut]] ( ¨ ), [[#macron|macron]] ( ¯ ), [[overring|overring]] ( ˚ ), [[#perispomene|perispomene]] ( ͂ ), etc. The main use of a diacritical mark is to change the sound-values of the letters or cadence of a word to which they are added. Examples are the diaereses in the borrowed French words {{m|en|naïve}} and {{m|en|Noël}}, which show that the vowel with the diaeresis mark is pronounced separately from the preceding vowel; the acute and [[#grave|grave]] accents, which can indicate that a final vowel is to be pronounced, as in {{m|en|saké}} and poetic ''breathèd''; and the cedilla under the ⟨c⟩ in the borrowed French word {{m|en|façade}}, which shows it is pronounced {{IPAchar|/s/}} rather than {{IPAchar|/k/}}. ; {{anchor|diaeresis}}{{anchor|diaresis}}{{anchor|dieresis}}[[diaeresis]] : A [[#diacritic|diacritic]] ( ¨ ) placed over a [[#vowel|vowel]] letter indicating that it is sounded separately. ; {{anchor|dialectal}}[[dialectal]] : Of or relating to a [[dialect]]. ; {{anchor|diminutive}}[[අල්පාර්ථ පද]] ([[diminutive]]) : A word form expressing smallness, youth, endearment, unimportance, or contempt. ; {{anchor|direct object}}[[direct object]] : The [[#noun|noun]] or noun [[#phrase|phrase]] that a [[#verb|verb]] is directly acting upon. In some languages direct objects are marked with the [[#accusative case|accusative case]]. : → [[#transitive verb|transitive verb]], [[#indirect object|indirect object]] ; {{anchor|dissimilation}}{{anchor|dissimilate}}{{anchor|dissimilated}}[[dissimilation]] {{nobold|{{wikipedia|Dissimilation}}}} : A phonological process whereby one of a pair of similar sounds within a word or phrase becomes dissimilar: for example, the shift l…l > r…l in the derivation of {{m+|frm|coronnel}} from Old Italian {{m|it|colonnello}}. It has an opposite effect to [[#assimilation|assimilation]]. ; {{anchor|displaced}}[[displace]]d : Of an older word: having been replaced by a newer word. ; {{anchor|ditransitive verb}}{{anchor|ditransitive}}[[ditransitive verb]] : (of a verb) taking two objects, such as {{m|en|give}} in “Give me the ball” (where {{m|en|me}} is an [[#indirect object|indirect object]] and {{m|en|ball|the ball}} is a [[#direct object|direct object]]). Compare [[#intransitive verb|intransitive verb]] and [[#transitive verb|transitive verb]]. ; {{anchor|doublet}}[[doublet]] : One of two (or more) words in a language that have the same [[#etymology|etymological]] root but have come to the modern language through different routes. Doublets can come about e.g., as [[#loanword|loanwords]] from two different but related languages, as loanwords acquired from the same language at two different stages, as one loanword from a related language plus its native [[#cognate|cognate]], or as derivatives formed at two different stages in the history of a language. ; {{anchor|dual}}{{anchor|dual number}}[[dual]], [[dual number]] : A [[#number|grammatical number]] that indicates exactly two items or individuals. Usually contrasts with [[#singular number|singular]] and [[#plural number|plural]]. ; {{anchor|dummy pronoun}} {{w|dummy pronoun}} : A [[#pronoun|pronoun]] that has no referent. For instance, {{m|en|it}} in ''it is good to know that you are okay'' is a dummy [[#subject|subject]]. It is used in order to provide the verb {{m|en|is}} with a syntactic subject, because English does not allow a [[w:null-subject language|null subject]]. ; {{anchor|dvandva}}[[dvandva]] : Another term for a ''[[#coordinative|coordinative]] compound''. Contrast [[#bahuvrihi|bahuvrihi]], [[#tatpurusa|tatpurusa]] and [[#karmadharaya|karmadharaya]]. ; {{anchor|dysphemism}}[[dysphemism]] : A term carrying negative connotations or imagery to replace a (more) neutral original. Contrast ''[[#euphemism|euphemism]]''. ==E== ; {{anchor|ed.}}ed. : "[[editor|Editor]]" (or sometimes "edition"). This abbreviation is often used in attributing quotations; the editor of a compilation is generally the individual in charge of selecting what works to include. ; {{anchor|elative}}[[elative]] : In [[Semitic]] languages, a stage of gradation that can be used both for a [[superlative]] and [[comparative]]. (See also ''[[#degrees of comparison|degrees of comparison]]''.) ; {{anchor|elative case}}[[elative case]] : A [[#case|case]] which expresses "moving out of". ; {{anchor|elision}}{{anchor|elided}}[[elision]] : The removal of a [[#phoneme|phoneme]] or sequence of phonemes from a word, particularly at the beginning or end. ; {{anchor|ellipsis}}[[ellipsis]] : The omission of a word or phrase that can be inferred from the context. ; {{anchor|elongated}}[[elongated]] : With [[letter]]s added for [[emphasis]], like "stoooop!" Usually this is [[nonstandard]] writing, but in some uses, such as in interjections, this is normal: "awwwww!", "shhhh!" ; {{anchor|emphatic}}[[emphatic]] : Taking particular stress. English's [[#reflexive|reflexive]] pronouns double as emphatic ones, as in "I myself have not seen it" (where "myself" emphasizes the role of the speaker); some other languages (such as Greek) have emphatic pronouns that they distinguish from ''[[#weak pronoun|weak]]'' or ''[[#clitic|clitic]]'' pronouns. ; {{anchor|enclisis}}[[enclisis]] : The phonetic joining of a word with the preceding word. In modern Greek this may result in an extra stress on the first word, thus: ::: {{l|el|το όνομα μου είναι|"το όνο<u>μα</u> μου είναι"}} ''becomes'' {{l|el|το όνομά μου είναι|"το όνο<u>μά</u> μου είναι"}} ; {{anchor|endonym}}{{anchor|autonym}}[[endonym]] : A name used by a group or category of people to refer to themselves or their language (contrast [[#exonym|exonym]]). Also called [[autonym]] or [[selfname]]. ; {{anchor|endocentric}}[[endocentric]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which one part modifies the other, where the modified compound refer to the intended meaning of the compound as a whole. Examples in English are "[[blackboard]]" (a type of [[board]]), "[[houseboat]]" (a type of [[boat]]), "[[rainbow]]" (a type of [[bow]]) and "[[footstool]]" (a type of stool). Endocentric compounds are categorized into two subtypes, [[#descriptive|descriptive]] compounds (where the modifier also refers to the intended meaning of the compound as a whole, as in [[blackboard]] and [[houseboat]]) and [[#determinative|determinative]] compounds (where the modifier does not refer to the intended meaning of the compound as a whole, as in [[rainbow]] and [[footstool]]). For example, a [[houseboat]] is a type of [[house]] as well as a type of [[boat]], and a [[blackboard]] is (usually) [[black]]. However, a [[rainbow]] is not a type of [[rain]] (rather it is a [[bow]] that is caused ''by'' the rain), and similarly a [[footstool]] is not a type of [[foot]] (it is a stool intended ''for'' the feet). Endocentric compounds are contrasted with [[#exocentric|exocentric]] and [[#coordinative|coordinative]] compounds. ; {{anchor|enPR}}enPR : Wiktionary's [[Wiktionary:English Phonemic Representation|English Phonemic Representation]] system. Details in the [[Appendix:English pronunciation|English pronunciation key]]. ; {{anchor|epenthesis}}{{anchor|epenthetic}}[[epenthesis]] : The insertion of a [[#phoneme|phoneme]], letter, or [[#syllable|syllable]] into a word, usually to satisfy the phonological constraints of a language or poetic context. In careful use epenthesis only refers to insertions in the middle of a word: cf. [[#prothesis|prothesis]], [[#paragoge|paragoge]]. ; {{anchor|epicene}}[[epicene]] : Having a single form for both male and female referents. ; {{anchor|eponym}}[[eponym]] : A word formed from a real or fictive person’s name. Compare [[#toponym|toponym]], a word derived from a place name. ; {{anchor|eponymous}}[[eponymous]] : Using its own name as a title for a work of art. ; {{anchor|equative}}[[equative]] : A construction showing an equal quality; for example, the equative of {{m|en|happy}} is {{m|en||as happy as}}. In some languages, such as Welsh and Old Irish, the equative is a distinct form of the adjective. ; {{anchor|ergative case}}[[ergative case]] : A [[#case|case]] used in some languages, which marks the [[#subject|subject]] of a [[#transitive verb|transitive verb]], but not the subject of an [[#intransitive verb|intransitive verb]]. ; {{anchor|ergative}}{{anchor|ergative verb}}[[ergative verb]] : A verb that can be transitive or intransitive, where the intransitive [[#subject|subject]] is the [[patient#Noun|patient]], the same role as the transitive object. Essentially, an ergative is an intransitive verb that is its own [[#causative|causative]] when used transitively. For example, {{m|en|break}} is an ergative verb. The same thing happens to the window in "The window broke" (subject) as in "I broke the window" ([[#direct object|direct object]]), but in the second example there is also an [[#agent|agent]] which causes the window to break. ; {{anchor|etymology}}[[etymology]] : An account of the origin and historical development of a word. ; {{anchor|etymon}}[[etymon]] : The source word of a given word. ; {{anchor|euphemism}}[[euphemism]] : A term that is less vulgar or less offensive than the one it replaces. Contrast ''[[#dysphemism|dysphemism]]''. ; {{anchor|excessive spelling}}excessive spelling : In languages with [[mater lectionis|matres lectionis]] ([[#consonant|consonant]] letters representing [[#vowel|vowels]]) a form including one or more additional ones. For example in Hebrew {{m|he|אדום||red}} of {{m|he|אָדֹם}}, an added {{m|he||ו|vav}} indicating {{IPAchar|/o/}}. ; {{anchor|excrescent}}[[excrescent]] : A sound in a word without [[#etymology|etymological]] reason, added for articulatory purposes. ; {{anchor|exocentric}}[[exocentric]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which the first part modifies the second and neither part alone conveys the intended meaning. Examples in English are "[[barefoot]]" (i.e. "having bare feet"; neither component refers to a person) and "[[houndstooth]]" (i.e. "resembling a hound's tooth"; neither component refers to fabric). Also known as a ''[[#bahuvrihi|bahuvrihi]] [[#compound|compound]]''. Contrast [[#endocentric|endocentric]] (with its subtypes [[#determinative|determinative]] and [[#descriptive|descriptive]]) and [[#coordinative|coordinative]]. ; {{anchor|exonym}}[[exonym]] : A name for a place, people or language used by foreigners instead of the native-language version (the [[#endonym|endonym]]). ; {{anchor|expletive}}[[expletive]] : A [[#vulgar|vulgar]] term, an [[#intensifier|intensifier]], or a word without meaning added to fill a syntactic position. ; {{anchor|eye dialect}}{{anchor|eye spelling}}[[eye dialect]] {{nobold|{{wikipedia|eye dialect}}}} : A deliberate misspelling used in writing to indicate the speech of a poorly educated character; the spelling represents how they would spell the words if they were asked to write them down. As such, it is the functional opposite of [[#pronunciation spelling|pronunciation spelling]]. ==F== ; {{g|f}} : ''See '''{{glossary|feminine}}'''.'' ; {{anchor|factitive}}{{anchor|factitive verb}}[[factitive]] verb : A transitive verb that is derived from an adjective or noun, and expresses the act of making someone/something have the properties (or have more of the properties) of the base adjective or noun. Examples in English are: {{m|en|shorten}} (make {{m|en|shorter}}), {{m|en|strengthen}} (make {{m|en|stronger}}) and {{m|en|enslave}} (make a {{m|en|slave}}). Compare '''[[#causative|causative verb]]s''', which are similar but are derived from other verbs. ; {{anchor|false cognate}}[[false cognate]] : A word in a language that bears a phonetic and semantic resemblance to a word in another or the same language but is not etymologically related to it and thus not a true [[#cognate|cognate]]. Examples include {{cog|en|day}}/{{cog|pt|dia}}, {{cog|de|Feuer}}/{{cog|fr|feu}} (both meaning "fire"), {{cog|ms|dua}}/{{cog|sa|द्व}} (both meaning "two"), and {{cog|en|dog}}/{{cog|vmb|dog}}. ; {{anchor|false friend}}[[false friend]] : A word in a language that bears a phonetic resemblance to a word in another language, often because of a common etymology, but has a different meaning. Examples include {{cog|en|parent}}/{{cog|pt|parente||relative}} and {{cog|en|embarrassed}}/{{cog|es|embarazada||pregnant}}. ; {{anchor|familiar}}[[familiar]] : Describes a context where those conversing, through speech or written word, are well acquainted with one another and in casual situations often use more '''[[#informal|informal]]''' or '''[[#colloquial|colloquial]]''' terms to communicate. ; {{anchor|f}}{{anchor|feminine}}[[feminine]], {{g|f}} : "Feminine"; said of a word belonging to the feminine [[#gender|gender]], which is usually contrasted with the [[#masculine|masculine]] gender, and also often with a [[#neuter|neuter]] gender. ; {{anchor|figurative}}[[figurative]] : Not [[#literally|literal]]. Of [[figure of speech|figures of speech]], words or expressions used as [[#metaphorical|metaphors]] or [[#simile|similes]], e.g. saying that a greedy person is a pig or is like a pig, or as [[#metonym|metonyms]], e.g. using 'crown' to refer to the monarchy. ; {{anchor|උත්තම පුරුෂ}}[[උත්තම පුරුෂ]] : පහත දැක්වෙන [[#first person]] කොටස බලන්න. ; {{anchor|first person}}{{anchor|first-person}}[[first person]], {{anchor|1st person}}[[1st person]] : A [[#person|grammatical person]] that indicates the speaker him/her/itself, or a group to which the speaker belongs. Examples are the English pronouns {{m|en|I}} and {{m|en|we}}. ; {{anchor|fl.}}[[fl.]] : "[[floruit|Floruit]]" (Latin for "he/she flourished"). Used when the exact dates of a person's birth and death are unknown to denote a date or period during which the person was known to have been alive or active. ; {{anchor|focus}}[[focus]] : An adverb that indicates focus within the sentence. ; {{anchor|folk etymology}}{{anchor|folk etymologies}}{{anchor|folk etymological}}[[folk etymology]] {{nobold|{{wikipedia|folk etymology}}}} : A misunderstanding of the [[#etymology|etymology]] of a word; a false [[#etymology|etymology]] that incorrectly explains the origin of a word. ; {{anchor|formal}}[[formal]] : Describes word choice and [[syntax]] which is mainly appropriate in formal contexts, such as in official or legal documents, essays, and sometimes when talking with one's superiors or elders. '''[[#informal|Informal]]''' terms, frequently those that originate through casual speech ('''[[#colloquial|colloquial]]'''), are often inappropriate in formal contexts. See also ''[[#higher register|higher register]]''. ; {{anchor|fossil word}}{{anchor|fossil}}{{anchor|fossilised}}{{anchor|fossilized}}[[fossil word]] : A word that is broadly [[#obsolete|obsolete]] but remains in currency because it is contained within an [[#idiom|idiom]] that is still in use. ; {{anchor|fpl}}''fpl'' : "[[#feminine|Feminine]] [[#plural|plural]]"; of feminine gender and plural number. ; {{anchor|frequentative}}[[frequentative]] : Expressing [[repetition]] of an action. ; {{anchor|fricative}}[[fricative]] : A [[#consonant|consonant]] sound produced by air flowing through a constriction in the mouth, and typically producing a sibilant, hissing, buzzing or otherwise "rough" quality. In English, there are fricatives that are [[#voiceless|voiceless]] {{IPAchar|/f/}}, {{IPAchar|/s/}}, {{IPAchar|/ʃ/}}, {{IPAchar|/θ/}} (as in the final sounds of ''buff'', ''bus'', ''bash'' and ''bath''), and there are corresponding [[#voiced|voiced]] sounds {{IPAchar|/v/}}, {{IPAchar|/z/}}, {{IPAchar|/ʒ/}}, {{IPAchar|/ð/}} (as in the final sounds of ''above'', ''buzz'', ''beige'' and ''bathe''). Fricatives are distinguished from [[#plosive|plosive]]s, in which the air is blocked completely for a short period of time, and [[#approximant|approximant]]s, in which the air is not constricted enough to cause the characteristic rough sound of a fricative. ; {{anchor|front vowel}}[[front vowel]] : A [[#vowel|vowel]] produced in the front of the mouth. In English, the front vowels are {{IPAchar|/æ/}}, {{IPAchar|/ɛ/}}, {{IPAchar|/eɪ/}}, {{IPAchar|/ɪ/}}, {{IPAchar|/i/}} (as in the vowels of ''bat'', ''bet'', ''bait'', ''bit'', and ''beat'' respectively). Contrasts to a [[#back vowel|back vowel]]. ; {{anchor|future perfect}}[[future perfect]] : A [[#tense|tense]] that expresses action completed at some time in the future; in English it is formed by use of ''will have'' (or ''shall have'') and a [[#past|past]] [[#participle|participle]]. ; {{anchor|future}}{{anchor|future tense}}[[future tense]] : The [[#tense|tense]] of a [[#verb|verb]] used to refer to an event, transaction or occurrence that has not yet happened, is expected to happen in the future, or might never happen. An English example is {{m|en|will}} {{m|en|go}} in ''I will go home tomorrow''. ==G== ; {{anchor|gemination}}[[gemination]] : A phenomenon when a [[#consonant|consonant]] is pronounced for an audibly longer period of time than is done normally. ; {{anchor|ලිංග භේදය}}[[ලිංග භේදය]] : පහත [[#gender]] වෙත යොමු වන්න. ; {{anchor|gender}}[[gender]] : A way of classifying [[#noun|nouns]] in some languages. In such languages, each noun has a specific gender (often determined by its meaning and/or form), and other words (especially [[#adjective|adjectives]] and [[#pronouns|pronouns]]) will often change form to agree with the noun's gender. See also [[#noun class|noun class]]. ; {{anchor|gender neutral}}{{anchor|gender-neutral}}[[gender-neutral]] : Of language constructs, not indicating or restricted by gender, and thus applicable to those of any gender and to those of no gender. ; {{anchor|genericized trademark}}[[genericized trademark]] : A successful brand name or trademark that has come to refer to the generic class of objects rather than the specific brand type. ; {{anchor|සබඳ විබත්}} {{anchor|genitive}}{{anchor|genitive case}}[[සබඳ විබත්]] ([[genitive case]]) : A [[#case|case]] that expresses possession or relation, equivalent to the English {{m|en|of}}. ; {{anchor|gerund}}[[gerund]] : Any of various non-finite [[#verb|verb]] forms in various languages. In English, a "gerund" is a verb in its ''[[-ing]]'' form when used in a way that resembles the use of a [[#noun|noun]]. In other languages it often functions as an [[#adverb|adverb]] to form [[#adverbial|adverbial]] phrases or the continuous tense. ; {{anchor|ghost word}}[[ghost word]] : A [[fictitious]] or [[erroneous]] word, originally meaningless (not used in practice), that has been published in a dictionary or similarly authoritative reference work or otherwise listed as genuine, generally as the result of misinterpretation, misreading, or typographical error. ; grammatical number : ''See '''{{glossary|number}}'''.'' ; grammatical person : ''See '''{{glossary|person}}'''.'' ; {{anchor|grave}}{{anchor|grave accent}}[[grave accent]] : A [[#diacritic|diacritic]] mark ( ` ) used in many languages to distinguish the pronunciations of [[#vowel|vowels]]. ==H== ; {{anchor|habitual}}[[habitual]] : A verbal [[#aspect|aspect]] specifying an action as occurring habitually: the subject performs the action usually, ordinarily, or customarily. Also called '''[[consuetudinal]]'''. ; {{anchor|hapax legomenon}}[[hapax legomenon]], {{anchor|hapax}}[[hapax]] : In [[corpus linguistics]], a word that occurs only once within a given corpus, either in the written record of an entire language, in the works of an author, or in a single text. ; {{anchor|haplology}}{{anchor|haplological}}[[haplology]] : The [[#elision|elision]] or [[#deletion|deletion]] of a part of a word (a sequence of [[#phoneme|phonemes]], or a series of letters) that is repeated (either exactly or with slight change). An example of haplological pronunciation is the UK English pronunciation of {{m|en|library}} as if spelled {{m|en||libry}}, where the sequence of [[#phoneme|phonemes]] {{IPAchar|/ɹəɹ/}} is shortened to {{IPAchar|/ɹ/}}. An example of haplology relating to spelling is {{m|en|symbology}}, from {{affix|en|symbol|-ology}}, where the sequence ''olol'' is shortened to ''ol''. Contrast with [[#reduplication|reduplication]], the repetition of a part of a word. ; {{anchor|hedge}}{{ll|en|hedge|id=pragmatics}} : In [[pragmatics]], a term (word, phrase, or clause) used to lessen the force of an utterance: for instance, to avoid giving insult or bragging about one's knowledge. ; {{anchor|higher register}}[[higher]] [[#register|register]] : Belonging to the higher linguistic [[#register|register]], meaning that it might be used when the speaker wishes to sound refined or educated, in [[#formal|formal]] situations, or when writing. Such terms are usually less common or known and are not used in everyday speech. See also ''[[#literary|literary]]'' which is a sub-category. ; {{anchor|historical}}[[historical]] : Describing an ''object'' or ''concept'' which is no longer extant or current; for example, {{m|en|Czechoslovakia}}, {{m|en|stomacher}}, or {{m|en|phlogiston}}. Distinguish: a ''historical'' term is still in use but refers to a thing which no longer exists; an ''[[#obsolete|obsolete]]'' term is no longer in use, while the thing it once referred to may or may not exist. Whereas an [[#archaic|archaic]] term names a still-extant thing or non-outdated concept, a historical term names a former thing or outdated concept. ; {{anchor|holonym}}[[holonym]] : A term describing something that is formed by other smaller, somehow combined or related things. For example, ''[[tree]]'' is a holonym of ''[[leaf]]''; ''[[body]]'' is a holonym of ''[[arm]]''; ''[[Canada]]'' is a holonym of ''[[British Columbia]]'' etc. The opposite of holonym, which describes things that are ''part'' of a whole, is called ''[[#meronym|meronym]]''. ; {{anchor|homograph}}[[homograph]] : A word that is spelled the same as another word, usually having a different [[#etymology|etymology]]. ; {{anchor|homophone}}[[homophone]] : A word which is pronounced the same as another word but differs in spelling, meaning or origin. ; {{anchor|hot word}}[[hot]] word : A newly coined term, or newly adopted sense of an existing term, that has become very popular in a short time. It is kept provisionally as it is likely to remain in usage, even though it fails the "spanning at least one year" requirement of the [[WT:CFI|Criteria For Inclusion]] on Wiktionary. ; {{anchor|humorous}}[[humorous]] : A word which is considered inherently [[jocular]] in some way. ; {{anchor|hyperbole}}{{anchor|hyperbolic}}[[hyperbole]] : Deliberate or unintentional overstatement, particularly if extreme. ; {{anchor|hypercorrect}}{{anchor|hypercorrection}}[[hypercorrect]] : Incorrect because of the misapplication of a standard rule; for example, {{m|en|octopi}} used as the plural form of {{m|en|octopus}} is hypercorrect because {{m|en|-us}} → {{m|en|-i}} is the rule for forming plurals of [[Appendix:Latin second declension#Masculine|originally-masculine nouns of the Latin second declension]], whereas {{m|en||octopus}} actually derives from Ancient Greek and has the plural form {{m|en|octopodes}} consistent with its etymology. ; {{anchor|hyperforeign}}{{anchor|hyperforeignism}}[[hyperforeign]] : Incorrectly applying foreign reading rules, such as in pronouncing the "j" in [[Taj Mahal]] or [[Beijing]] as {{IPAchar|[ʒ]}} rather than {{IPAchar|[dʒ]}}, or dropping the {{IPAchar|[t]}} in [[claret]]. ; {{anchor|hypernym}}[[hypernym]] or [[hyperonym]] : A term indicating a [[category]] another term is part of, informally called “blanket” or “umbrella” term. For example, ''[[animal]]'' is a hypernym of ''[[bird]]'', which is in turn a hypernym of ''[[eagle]]''. The opposite of hypernym, which indicates terms pertaining to a category, is ''[[#hyponym|hyponym]]''. ; {{anchor|hyperthesis}}{{anchor|hyperthetic}}[[hyperthesis]] : A form of [[#metathesis|metathesis]] in which non-contiguous sounds are switched. ; {{anchor|hyphenation}}[[hyphenation]] : The splitting of a word across a line boundary, with a hyphen at the end of the first part. For example, the hyphenation of {{m|en|hyphenation}} is given as "hy‧phen‧ation" meaning that it is split across a line break as ''hy-phenation'' or as ''hyphen-ation''. ; {{anchor|hyponym}}[[hyponym]] : A more specific term within a category described by another term, indicating a “type-of” relationship. For instance, ''[[alternative rock]]'' is a hyponym of ''[[rock]]'', which in turn is a hyponym of ''[[music]]''. The opposite of hyponym, which describes larger categories, is [[#hypernym|hypernym]]. ==I== ; {{anchor|ideophone}}{{anchor|ideophonic}}[[ideophone]] : A word that evokes an idea in sound, often a vivid impression of certain sensations or sensory perceptions, e.g. sound, movement, color, shape, or action. They may be more common in East Asian languages. In Chinese lexicography, such sense is usually described as {{lang|zh|……[[的]][[樣子]]}} or {{lang|zh|……[[貌]]}}, i.e. “the appearance of ...”. The attributive form is {{l|en|ideophonic}}. ; {{anchor|idiom}}[[idiom]] : A phrase whose meaning is unapparent or unobvious from the individual words that make it up, such as {{m|en|beat around the bush||avoid an uncomfortable topic}}, {{m|en|come a cropper||suffer misfortune}}, or {{m|en|pay through the nose||pay an unusually large amount}}. Idioms are often, but not always ''[[#set phrase|set phrases]]'', and are usually distinct from ''[[#proverb|proverbs]]''. ; {{anchor|idiomatic}}[[idiomatic]] : Pertaining or conforming to the mode of expression characteristic of a language. Idioms, [[collocation]]s{{,}} and [[modal verb]]s are examples of idiomatic language. ; {{anchor|imitative}}{{anchor|Imitative}}[[imitative]] : [[imitate|Imitating]] or [[represent]]ing the [[sound#Noun|sound]] of something. ; {{anchor|imparisyllabic}}[[imparisyllabic]] : A word with one or more inflections with more syllables than the lemma form. For example: the Greek {{m|el|μπακάλης|t=grocer}} and {{m|el|μπακάληδες|t=grocers}} and the Latin {{m|la|mens|t=mind}} and {{m|la|mentis|t=minds}} ([[cf.]] [[#parisyllabic|parisyllabic]]). ; {{anchor|imperfect}}[[imperfect]] : The [[#imperfective past|imperfective past]] tense of a verb, indicating that the action described happened repeatedly, habitually or continuously. ; {{anchor|විධි ක්‍රියා}}[[විධි ක්‍රියා]] : අණ කිරීමක් හෝ නියෝගයක් හඟවන [[#ක්‍රියා පද|ක්‍රියා පද]]. සිංහල උදාහරණයක් ලෙස ''යන්න!'' දැක්විය හැකිය. ; {{anchor|imperative}}{{anchor|imperative mood}}[[imperative mood]] : The [[#mood|mood]] of a [[#verb|verb]] expressing an order or command. An English example is the command ''go!'' ; {{anchor|imperfective}}{{anchor|imperfective aspect}}[[imperfective]] : An [[#aspect|aspect]] of the [[verb]] which denotes an action or condition that does not have a fixed temporal boundary, but is [[habitual]], [[unfinished]], [[continuous]], [[repetitive]] or [[in progress]]. Common in {{w|Slavic languages}} such as {{cog|ru|-}}. Contrast ''[[#perfective|perfective]].'' (''see'' {{pedia|Imperfective aspect}}) ; {{anchor|imperfective past}}imperfective past : A verb form of [[#imperfective|imperfective]] [[#aspect|aspect]] and [[#past|past]] [[#tense|tense]], which is used to describe an action or event which was happening habitually, continuously or repeatedly in the past, as in “Tom was painting the fence” or “Tom used to paint the fence.” ; {{anchor|impersonal}}[[impersonal]] : A lack of [[#person|grammatical person]] altogether, or an indefinite/undefined person. An example is the English pronoun {{m|en|one}}. See also [[#impersonal verb|impersonal verb]]s. ; {{anchor|impersonal verb}}[[impersonal]] verb : A verb that cannot take a [[#subject|subject]], or takes a third-person neuter subject pronoun (e.g. {{m|en|it}}) without an [[antecedent]]. The term {{m|en|weather verb}} is also sometimes used in some texts, since such verbs of weather (e.g. {{m|en|rain}}) are impersonal in many languages. Many verbs that are personal and [[#active|active]] in English are expressed in other languages using impersonal constructions. An example is the English sentence "I must do it", expressed in {{cog|fr|-}} using the impersonal verb {{m|fr|falloir||to be [[necessary]]}}, as in {{m|fr|[[il]] [[falloir|faut]] [[que]] [[je]] [[il|le]] [[faire|fasse]]|lit='''It is necessary''' that I do it}}. ; {{anchor|inanimate}}[[inanimate]] : Having a [[referent]] that does not include a human or animal. Many languages (such as the {{w|Slavic languages}}) classify nouns based on animacy, using different [[#inflection|inflections]] or words with animate and inanimate nouns. For verbs, this indicates that they are usually applied only to inanimate objects or concepts, and rarely used in the first or second persons. ; {{anchor|indeclinable}}[[indeclinable]], {{anchor|undeclinable}}[[undeclinable]], {{anchor|invariable}}[[invariable]] or {{anchor|invariant}}[[invariant]] : In languages with [[#inflection|inflection]], lacking distinct inflected forms when they would be expected to exist. Indeclinable words have the same form in all cases. For example, the English noun {{m|en|sheep}} is invariable because its plural is also {{m|en|sheep}}. [[#acronym|Acronyms]] and [[#loanword|loanword]]s are often indeclinable in many languages. Poorly-attested words from ancient languages are sometimes denoted "indeclinable" when they can't be assigned to a declension class with certainty. ; {{anchor|indefinite}}[[indefinite]] : Refers to forms of words that present something as not yet identified or not immediately identifiable; in English, this is the basic meaning of the [[article]] ''[[a]]''; in some languages, this is a nominal or adjectival [[#inflection|inflection]]. In the Germanic languages, adjectives inflected as indefinite are referred to as "strong". In Hungarian, the indefinite conjugation indicates [[#intransitive verb|no object]] or [[:w:Hungarian verbs#Definite and indefinite conjugations|indefinite objects]], including ''me, us,'' and the informal ''you.'' ; {{anchor|independent clause}}[[independent clause]] : A [[#clause|clause]] that can stand on its own as a complete [[#sentence|sentence]], as opposed to a [[#dependent clause|dependent clause]]. ; {{anchor|indeterminate verb}}{{anchor|indeterminate}}[[indeterminate verb]] : In the {{w|Slavic languages}}, another term for ''[[#abstract verb|abstract verb]]''. ; {{anchor|indicative}}{{anchor|indicative mood}}[[indicative mood]] : The [[#mood|mood]] of a [[#verb|verb]] used in ordinary factual or objective statements. ; {{anchor|indirect object}}[[indirect object]] : A grammatical role of a [[#ditransitive verb|ditransitive verb]] that usually manifests as a recipient or goal. In some languages indirect objects are marked with the [[#dative case|dative case]]. : → [[#direct object|direct object]] ; {{anchor|infix}}[[infix]] : A [[morpheme]] or [[affix]] inserted inside a word. ; {{anchor|infinitive}}[[infinitive]] : A non-[[finite]] verb form considered [[neutral]] with respect to [[#inflection|inflection]]; depending on language variously found used with [[auxiliary verb]]s, in [[subordinate clause]]s, or acting as a [[#gerund|gerund]], and often as the [[dictionary form]]. In English, the infinitive is formed with the word ''[[to]]'', e.g. ''to [[read]]''. ; {{anchor|inflected}}{{anchor|inflection}}{{anchor|inflectional}}[[inflection]] : The change in form of a word to represent various grammatical categories, such as [[#tense|tense]] (e.g. past tense, present tense, future tense) or [[#number|number]] (e.g. singular, plural). For example, the verb {{m|en|run}} may be inflected to produce {{m|en|runs}}, {{m|en|ran}}, and {{m|en|running}}. In highly inflected languages, such as Latin, there will be many more forms. Two major types of inflection are [[#conjugation|conjugation]] (inflection of [[#verb|verbs]]) and [[#declension|declension]] (inflection of [[#noun|nouns]], [[#adjective|adjectives]], and [[#pronoun|pronouns]]). ; {{anchor|informal}}[[informal]] : Denotes spoken or written words that are used primarily in a [[#familiar|familiar]] or casual context. Do not confuse with ''[[#slang|slang]]'' or ''[[#nonstandard|nonstandard]]''. See also ''[[#colloquial|colloquial]]''. ; {{anchor|inherited}}[[inherit]]ed : Denotes words which etymologically are not [[Appendix:Glossary#loanword|borrowings]] but derive through regular or sporadic [[#sound change|sound change]], without additional affixation, from a corresponding term in the language that is its direct historical ancestor. For example, English {{m|en|fairy}} is ''inherited'' from Middle English {{m|enm|fairye}}. ; {{anchor|initialism}}[[initialism]] : An [[#abbreviation|abbreviation]] that is formed from the initial letters of a sequence of words. Initialisms that are pronounced as words, such as {{m|en|UNICEF}}, are usually called {{m|en||[[#acronym|acronyms]]}}, so the term {{m|en||initialism}} is generally only used for those that are pronounced letter by letter, such as {{m|en|U.S.}} ; {{anchor|inline reference}}inline reference : A reference whose point of application is indicated in the text. ; {{anchor|කරණ විබත්}}{{anchor|instrumental case}}{{anchor|instrumental}}{{anchor|ins}}[[කරණ විබත්]] ([[instrumental case]]), ins. : A [[#case|case]] used to express means or agency—and is generally indicated in English by "by" or "with" with the objective. ; {{anchor|intensifier}}{{anchor|intensifying}}[[intensifier]] : A [[#word|word]] or [[#particle|particle]] that heightens the intensity of meaning of a term. ; {{anchor|interjection}}[[interjection]] : An expression of emotion ("ouch!", "wow!") or any of several kinds of expression that functions as a replacement of a sentence ([[prosentence]]) or that are not syntactically connected to a sentence, including curses ("damn!"), greetings ("hey", "bye"), response particles ("okay", "oh!", "m-hm", "huh?"), and hesitation markers ("uh", "er", "um"), and perhaps profanities, discourse markers and fillers. ; {{anchor|internationalism}}[[internationalism]] : A loanword that occurs in several languages with the same or similar meaning and etymology, due to the occurrence of several simultaneous borrowings and/or a chain of successive borrowings happening in quick succession. This commonly results in the exact etymological lineage of a term being difficult or impossible to trace for a given language. For example ''bus, doctor, hotel, internet, taxi,'' or ''television.''<!-- find better, more or fewer examples, if you like: https://en.wikipedia.org/wiki/Internationalism_(linguistics)#Examples --> ; {{anchor|අකර්මක}} {{anchor|අකර්මක ක්‍රියා පද}} {{anchor|intransitive verb}}{{anchor|intransitive}}[[අකර්මක ක්‍රියා පද]] ([[intransitive verb]]) : Of a [[#verb|verb]]: not taking a [[#direct object|direct object]]; not [[#transitive|transitive]]. For example, the verb {{m|en|listen}} does not usually take a direct object; it is grammatically incorrect to say "I listened the concert" (instead of the correct "I listened to the concert" with the [[#indirect object|indirect object]] "to the concert"). : Of an adposition (such as a [[#preposition|preposition]]), or of an [[#adverb|adverb]]: not having a [[#nominal|nominal]] complement. For example, using the following prepositions or adverbs without a complement (here in parentheses): {{m|en|down}} (the stairs), {{m|en|under}} (the bridge), {{m|en|inside}} (the building), {{m|en|aboard}} (the ship), {{m|en|underneath}} (the table), {{m|en|here}}, {{m|en|there}}, {{m|en|abroad}}, {{m|en|downtown}}, {{m|en|afterwards}}, … ; {{anchor|invariable}}[[invariable]] : ''See '''{{glossary|indeclinable}}'''.'' ; {{anchor|invariant}}[[invariant]] : ''See '''{{glossary|indeclinable}}'''.'' ; {{anchor|iotation}}[[iotation]] : A specific occurrence of [[#palatalization|palatalization]] that occurred in the {{w|Proto-Slavic language}}, in which a [[#consonant|consonant]] combined with the palatal approximant {{IPAchar|/j/}} to form a palatalized [[#consonant|consonant]]. Also, any similar process occurring in a later {{w|Slavic languages|Slavic language}} or elsewhere. For example, under certain circumstances in {{w|Russian language|Russian}}, underlying ''s; z; t; d; k; g'' are iotated to ''š; ž; č or šč; ž; č; ž'' respectively (pronounced {{IPAchar|/ʂ/}}; {{IPAchar|/ʐ/}}; {{IPAchar|/t͡ɕ/}} or {{IPAchar|/ɕː/}}; {{IPAchar|/ʐ/}}; {{IPAchar|/t͡ɕ/}}; {{IPAchar|/ʐ/}} respectively). (See ''[[Appendix:Russian verbs#Slavic iotation]]'' for the full iotation rules in {{w|Russian language|Russian}}; other {{w|Slavic languages}} behave similarly.) ; {{anchor|IPA}}[[IPA]] : The [[w:International Phonetic Alphabet|International Phonetic Alphabet]]; a standardized system for transcribing the sounds in any spoken language. ; {{anchor|ʾiʿrāb}} [[ʾiʿrāb]] : Also called [[desinential inflection]]; in Arabic: {{m|ar|إِعْرَابٌ||tr=ʾiʿrāb, ʾiʿrābun}}. A number of [[#inflection|inflectional]] endings, applied to Arabic nouns, adjectives, and verbs, which—with minor exceptions—do not appear in writing, and moreover are not pronounced in [[pausa]], i.e. at the end of a sentence or before a pause. Nevertheless, these endings are a regular and required element of Qur'ānic and Classical Arabic. In Modern Standard Arabic, however, they are rather often avoided due to dialectal influence. In nouns and adjectives, the ʾiʿrāb primarily has the function of marking the cases ([[#nominative|nominative]], [[#genitive|genitive]], [[#accusative|accusative]]), while in verbs it marks the moods ([[#indicative|indicative]], [[#subjunctive|subjunctive]], [[#jussive|jussive]]). All of these are only occasionally distinguishable without application of the ʾiʿrāb. See {{w|ʾIʿrab}} on Wikipedia. ; {{anchor|irregular}}[[irregular]] : Not following the usual rules of [[#inflection|inflection]]; for example, the plural of English {{m|en|man}} is {{m|en|men}}, which is irregular; the regularly formed plural would have been *''mans''. ; {{anchor|iterative}}[[iterative]] : Expressive of an action that is repeated with frequency. ==J== ; {{anchor|jussive}}{{anchor|jussive mood}}[[jussive|jussive mood]] : In certain languages (e.g. Hebrew, Arabic and Esperanto), a [[#mood|mood]] of a [[#verb|verb]] used to indicate a command, permission or agreement with a request (distinct from the [[#imperative mood|imperative]]). ==K== ; {{anchor|karmadharaya}}[[karmadharaya]] : Another term for a ''[[#descriptive|descriptive]] compound''. Contrast [[#bahuvrihi|bahuvrihi]], [[#tatpurusa|tatpurusa]] and [[#dvandva|dvandva]]. ; {{anchor|Katharevousa}}[[Katharevousa]] : The [[classical language|classically]] based artificial ([[w:standard language|standardized]]) Greek language created at the start of Greece's independence from the [[w:Ottoman Empire|Ottoman Empire]]. It was used for all formal and official purposes until 1976.<br>(Note: In Wiktionary, Katharevousa terms are entered under (modern) [[:Category:Greek language|Greek]].) (See also {{pedia|Katharevousa}}) ; {{anchor|Kulturwort}}{{anchor|culture word}}[[Kulturwort]] : A type of {{glossary|Wanderwort}} which is specific to a particular culture or which is spread by an influential cross-cultural phenomenon. Kulturworts (or ''Kulturwörter'') are often names of products distributed by trade and religious or ideological terms. ==L== ; {{anchor|learned borrowing}}[[learned borrowing]] : A [[#loanword|loanword]] that was borrowed from a [[classical language]] such as Latin, Ancient Greek or Sanskrit, and which has not undergone significant reshaping due to [[#sound change|sound change]] or analogy with inherited terms. Opposed to [[#semi-learned borrowing|semi-learned borrowings]], which have been significantly reshaped, and [[#inherited|inherited]] terms, which have undergone all the normal sound changes of a language. For example, the Portuguese term {{m|pt|artículo||[[articulus]]}} is a learned borrowing from {{cog|la|articulus||joint, limb, division}}. The term {{m|pt|artigo||article}} is a semi-learned borrowing from the same term, which was borrowed early enough to undergo later sound changes that [[lenite]]d ''c'' into ''g'' and deleted ''l'' between vowels; and the term {{m|pt|artelho||toe}} is inherited from the same Latin term. ; {{anchor|lemma}}[[lemma]] : The headword or citation form of an [[#inflection|inflected]] word, i.e. the form under which a word is found in a dictionary. For example, in English, nouns are usually listed under their singular form (''apple'', rather than ''apples''), and verbs under their infinitive form (''open'', rather than ''opens'', ''opened'' or ''opening''). Which form is used as the lemma varies from language to language. For verbs, for example, French, German, Spanish and many other European languages use the [[infinitive]], but Latin, Greek and Bulgarian use the [[first-person]] [[singular]] [[present]] [[indicative]], while Macedonian uses the [[third-person]] [[singular]] [[present]] [[indicative]], and Arabic and Hebrew use the [[masculine]] [[third-person]] [[singular]] [[past]] [[indicative]]. See also [[Wiktionary:Lemmas]]. ; {{anchor|letter case}}[[letter case]] : The distinction between [[majuscule]] ([[uppercase]]) and [[minuscule]] ([[lowercase]]) letters. ; {{anchor|lexeme}}[[lexeme]] : The abstract "word" underlying a set of inflections; for example, {{m|en||gives}} and {{m|en||given}} belong to the same lexeme, which is usually identified by its lemma form {{m|en|give}}. See also: (1) [[w:lexeme|Wikipedia's article on ''lexeme''s]], (2) [[Wiktionary:Languages with more than one grammatical gender]], (3) [[#C|conjugation]] and (4) [[#D|declension]]. ; {{anchor|liaison}} [[liaison]] : The phonological fusion of two consecutive words and the manner in which this occurs, for example intrusion, consonant-vowel linking, etc. ; {{anchor|ligature}} [[ligature]] : A character that visually combines multiple letters, such as {{m|mul|æ}}, {{m|mul|œ}}, {{m|mul|ß}} or {{m|mul|ij}}. ; {{anchor|linking verb}}[[linking verb]] : Another term for [[#copula|copula]]. ; {{anchor|literally}}[[literally]] : Exactly as stated; read or understood without additional interpretation; not [[#figurative|figurative]] or [[#metaphorical|metaphorical]]. ; {{anchor|literary}}[[literary]] : A [[#higher register|higher]] [[#register|register]] found mainly in literature. ; {{anchor|litotes}}[[litotes]] : (from {{cog|grc|-}} [[λιτότης]]) is a rhetorical figure involving ''[[understatement]]'' that consists of saying that something has ''less'' of one thing to mean ''more'' of the opposite. E.g.: ''he is not very clever'' instead of ''he is a stupid idiot'' ; ''she's not very pretty'' instead of ''she's ugly'', etc. Not to be confused with [[#euphemism|euphemism]] (although litotes can be used for the purpose of euphemism) or [[#meiosis|meiosis]], which is a similar figure of speech that also uses understatement. ; {{anchor|loanblend}} [[loanblend]] : A [[#partial calque|partial calque]]. ; {{anchor|loanword}}[[loanword]] (also {{anchor|loan}}[[loan]] or [[borrowing]]){{anchor|borrowed}}{{anchor|borrowing}} : A word that was adopted (borrowed) from another language, rather than formed within the language or inherited from a more ancient form of the same language. Loanwords may still be recognisably foreign (having non-native spelling or unusual pronunciation), or have become completely assimilated into the language (no longer perceived as foreign). For example, in English, {{m|en|schadenfreude}} is still recognisably German, while {{m|en|cellar}} is fully assimilated and no longer recognisably Latin (from {{m|la|cellārium}}). Sometimes a loanword can be both fully assimilated ''and'' still recognised as foreign, e.g. [[taco]], [[burrito]], etc. Compare [[#calque|loan translation]] ([[calque]]). ; {{anchor|අදර විබත්}}{{anchor|locative case}}{{anchor|locative}}{{anchor|loc}}[[අදර විබත්]] ([[locative case]]), loc. : "[[locative|Locative]]". A [[#case|case]] used to indicate place, or the place where, or wherein. It corresponds roughly to the English prepositions "in", "on", "at", and "by". Some languages use the same locative case construct to indicate when, so the English phrase "in summer" would use the locative case construct. ; {{anchor|locative-qualitative case}}{{anchor|locative-qualitative}}[[locative-qualitative case]] : Nouns in the form of the locative-qualitative case are qualifiers in the sentence and signify the locational or temporal mark of the qualified word. The qualifier is not specific but general or universalized. (See also ''[[Appendix:Uyghur nouns]]''.) ; {{anchor|loosely}}{{anchor|loose}}{{anchor|loosely speaking}}[[loosely]] : Indicates an imprecise use of words (wider, broader); short for ''loosely speaking''. Contrast ''strict'' or ''narrow'' sense; ''[[#strictly|strictly]]''. ==M== ; {{g|m}} : ''See '''{{glossary|masculine}}'''.'' ; m. pl. : ''See '''{{glossary|mpl}}'''.'' ; {{anchor|macron}}{{anchor|macron}}[[macron]] : A short, straight, horizontal [[#diacritic|diacritical]] mark ( ¯ ) placed over any of various letters, usually to indicate that the pronunciation of a [[#vowel|vowel]] is long. ; {{anchor|m}}{{anchor|masculine}}[[masculine]], {{g|m}} : Belonging to the male grammatical [[#gender|gender]], in languages that have gender distinctions. ; [[mass noun]] : ''See '''{{glossary|uncountable}}'''.'' ; {{anchor|measure word}}[[measure word]] : ''See '''{{glossary|counter}}'''.'' ; {{anchor|mediopassive}}[[mediopassive]] : In Ancient Greek, a category of [[#inflection|inflected]] form in certain [[#tense|tenses]] that contrasts with the [[#active voice|active voice]], and may have meanings characteristic of the [[#middle voice|middle voice]] and [[#passive voice|passive voice]].<!-- Middle-voice forms may also be used with a passive meaning, and passive-voice forms with a middle meaning, which complicates the picture. --> In other tenses, there is a three-way contrast between active-, middle-{{,}} and passive-voice forms. See also [[#middle voice|middle voice]]. ; {{anchor|meiosis}}[[meiosis]] : A form of ''[[understatement]]'' that consists of downplaying or diminishing the focal quality of a statement for contrastive, humorous or dramatic effect, sometimes deployed as part of a [[#higher register|higher register]]. E.g.: ''that was actually quite good'' instead of ''that was excellent'' ; ''he is somewhat displeased'' instead of ''he is furious'', etc. Not to be confused with [[#euphemism|euphemism]] (although meiosis can be used for the purpose of euphemism) or [[#litotes|litotes]], which is a similar figure of speech that also uses understatement. ; {{anchor|men's speech}}[[men]]'s [[speech]] : In certain languages (for example, {{w|Karajá language}}), men and women use or historically used distinct words and inflected forms. ; {{anchor|meronym}}[[meronym]] : A term that denotes a part of the whole that is denoted by another term. ''The word "arm" is a '''meronym''' of the word "body"''. The term which describes the ''whole'', as being an opposite of meronym, is ''[[#holonym|holonym]]''. ; {{anchor|metaphorical}}{{anchor|metaphor}}[[metaphorical]] : The use of a word or phrase as a [[metaphor]] to refer to something that it is not, invoking a direct similarity between the word or phrase used and the thing described. See also [[#simile|simile]] and [[#figurative|figurative]]. ; {{anchor|metanalysis}}[[metanalysis]] : See [[#rebracketing|rebracketing]]. ; {{anchor|metathesis}}{{anchor|metathetic}}{{anchor|metathesise}}{{anchor|metathesize}}{{anchor|metathesised}}{{anchor|metathesized}}[[metathesis]] : A [[#sound change|sound change]] in which two sounds or groups of sounds exchange position in a word. A form showing metathesis is described as {{m|en|metathetic}}. The sounds may be adjacent, as in {{m|en|ax}}, the metathetic form of the verb {{m|en|ask}}, or farther apart, as in {{noncog|es|palabra}} from {{noncog|la|parabola}}; there, the sound change is [[#hyperthesis|hyperthesis]]. ; {{anchor|metonym}}{{anchor|metonymic}}{{anchor|metonymical}}{{anchor|metonymically}}[[metonym]] : A word that names an object from a single characteristic of it or of a closely related object, e.g. 'crown' for the sovereign in a monarchy. ; {{anchor|middle voice}}{{anchor|middle-voice}}[[middle voice]] : The [[#voice|voice]] verb form in which the [[#subject|subject]] of a verb performs some action upon itself, it falls somewhere between the [[#active voice|active]] and [[#passive voice|passive]] voices. Found in a few languages (e.g. [[Sanskrit]], [[Ancient Greek]], [[Icelandic]]). (''see'' {{pedia|Voice (grammar)}}) ; {{anchor|minced oath}}[[minced oath]] : A euphemism based on a profanity that has been altered to reduce or remove the objectionable characteristics of the original expression. Examples in English include {{m|en|heck}} instead of {{m|en|hell}} and {{m|en|dang}} instead of {{m|en|damn}}. ; {{anchor|mixed}}{{anchor|mixed declension}}[[mixed]] : A type of declension in German that uses endings that are a combination of [[#strong declension|strong]] and [[#weak declension|weak]] endings. In adjectives, the mixed declension is used when accompanied by an indefinite article, or more generally by an {{m|de|ein}}-word (a determiner that has a null ending in the nominative masculine and neuter singular, similar to the indefinite article {{m|de|ein}}). The mixed declension uses strong endings precisely in those inflections where the indefinite article has a null ending, and weak endings otherwise. By analogy, nouns declined according to the mixed declension look like strong nouns in the singular (with genitive in ''-s'' and/or ''-es'') but weak nouns in the plural (with plural in ''-n'' and/or ''-en''). Most mixed nouns were once weak nouns that have transitioned to strong nouns in the singular but maintain the original weak plural ending. See [[:Category:German mixed nouns]] for a list of German mixed nouns. ; {{anchor|monolectic}}[[monolectic]] : Used of a grammatical form accomplished with one word ([[cf.]] [[#polylectic|polylectic]] and [[#periphrastic|periphrastic]]). ; {{anchor|monosyllable}}[[monosyllable]] : A word consisting of only one [[#syllable|syllable]]. ; {{anchor|mood}}[[grammatical mood|mood]] : One of the forms of a [[#verb|verb]], used to indicate the speaker's attitude toward what they are saying (e.g. a statement of fact, of desire, of command, etc.). Examples include [[#indicative mood|indicative]], [[#subjunctive mood|subjunctive]], [[#imperative mood|imperative]], [[#conditional mood|conditional]]. (''see'' {{pedia|Grammatical mood}}) ; {{anchor|mpl}}''mpl'', ''m.&nbsp;pl.'' : [[#masculine|Masculine]] [[#plural|plural]]. ; {{anchor|mute_h}}[[mute h]] : In French, an initial &lt;h&gt; that is treated like a [[#vowel|vowel]]; that is to say, [[liaison]] and [[elision]] are permitted at the beginning of words that have a mute h. ==N== ; {{g|n}} : ''See '''{{glossary|neuter}}'''.'' ; ''n'' : ''See '''{{glossary|noun}}'''.'' ; {{anchor|narrowly}}{{anchor|narrow}}[[narrowly]] : Indicates a more precise use of words; short for ''narrowly speaking''. For most practical purposes, synonymous with ''[[#strictly|strictly]]''<!--because the differentiable nuance whereby "strictly" can sometimes imply some degree of prescriptive deprecation, whereas "narrowly" less often and less strongly does so, is beyond-scope for this glossary; that is, for this glossary's purposes, "narrowly" and "strictly" are interchangeable in practice-->. Contrast ''[[#loose|loose]]'' (''broad'') senses. ; {{anchor|nasal infix}}nasal infix : The [[#infix|infix]] {{m|ine-pro||-né-}} or {{m|ine-pro||-n-}} in [[Proto-Indo-European]], one of the affixes marking the [[#imperfective|imperfective]] aspect. It appears in several of the [[:Category:Indo-European languages|Indo-European languages]]: for instance, Latin {{m|la|vincit|vi'''n'''cit|t=wins}}, {{m|la|vīcit|t=has won}}; Ancient Greek {{m|grc|λαμβάνω|λα'''μ'''βάνω|t=I take}}, {{m|grc|ἔλᾰβον|t=I took}}. ; {{anchor|negative polarity}}{{anchor|negative polarity_item}}{{anchor|negative_polarity}}{{anchor|negative_polarity_item}}negative polarity item : A term or construction that is generally found only in negative sentences, questions, conditionals, and certain other “negative polarity” contexts; for example, {{m|en|anyone}} is a negative polarity item, as one can say "I did not see anyone", "Did you see anyone?" and "If anyone wants this, speak up now", but not *"I saw anyone." Several expressions have similar properties, such as {{m|en|budge an inch}}: "I won't budge an inch" and "Will he even budge an inch?", but not normally *"He budged an inch in the negotiations." (''see'' {{pedia|Polarity item}}) ; {{anchor|negative_verb}}[[negative verb]] : An [[#auxiliary verb|auxiliary verb]] used to form negatives of verbs in some languages. See also ''[[#connegative|connegative]]''. ; {{anchor|neologism}}[[neologism]] : A newly coined term or meaning. See [[Wiktionary:Neologisms]]. ; {{anchor|n}}{{anchor|neuter}}[[neuter]], {{g|n}} : Of neuter [[#gender|gender]]: having a form which is not [[#masculine|masculine]] nor [[#feminine|feminine]]; or having a form which is not of [[#common gender|common gender]]. ; {{anchor|nominal}}[[nominal]] : Related to [[#noun|noun]]s. See also ''[[#denominal|denominal]]''. : As a noun, it refers to any [[#part of speech|part of speech]] that is noun-like in some way, and normally includes [[#noun|noun]]s themselves along with [[#adjective|adjective]]s, [[#pronoun|pronoun]]s and [[#determiner|determiner]]s. The [[#inflection|inflection]] of nominals is commonly called [[#declension|declension]]. ; {{anchor|පෙර}}{{anchor|පෙර විබත්}}{{anchor|nominative}}{{anchor|nominative case}}[[පෙර විබත්]] ([[nominative case]]) : A [[#case|case]] that is usually used as the [[#subject|subject]] of a [[#verb|verb]]. For example, if English had a fully [[#productive|productive]] case system, then (the) ''man'' in "The man threw the ball" would most likely be in the nominative case. ; {{anchor|nominalisation}}{{anchor|nominalization}}{{anchor|substantivisation}}{{anchor|substantivization}}[[nominalization]] or [[substantivization]] : The use of a word which is not a [[#noun|noun]] (e.g. a [[#verb|verb]] or [[#adjective|adjective]]) as a noun. ; {{anchor|nonce}}{{anchor|nonce word}}[[nonce word]] : A word invented for the occasion. ; {{anchor|nonfinite}}{{anchor|non-finite}}[[nonfinite]], [[non-finite]] : Of a verb – lacking grammatical [[#person|person]] and [[#number|number]] attributes; most nonfinite verbs found in English are [[#infinitive|infinitives]], [[#participle|participles]] and [[#gerund|gerunds]]. ; {{anchor|non-past}}{{anchor|non-past tense}}[[non-past|non-past tense]] : The [[#tense|tense]] of a [[#verb|verb]] that does not pertain to the [[#past|past]]; in particular, applicable to both the [[#present|present]] and the [[#future|future]]. Common in some languages, such as Arabic. In English, the main verb in the sentences ''I am running tomorrow'' and ''I am running now'' can be said to be in the non-past tense, since the same verb can be used to express both the present and the future. ; {{anchor|nonstandard}}[[nonstandard]] : Not conforming to the language as accepted by the majority of its speakers. ; {{anchor|nonvirile}}[[nonvirile]] : In Slavic languages, a plural [[#gender|gender]] used for all groups that do not contain men, as well as plurals of [[#masculine|masculine]] animate, masculine inanimate, [[#feminine|feminine]] and [[#neuter|neuter]] nouns. Contrast ''[[#virile|virile]]''. ; not comparable : ''See '''{{glossary|uncomparable}}'''.'' ; {{anchor|noun}}[[noun]] : A word that refers to a person (such as an {{m|en|actress}}), a place, a physical thing (such as {{m|en|wood}}), or concept (such as {{m|en|beauty}}, {{m|en|joy}}, or {{m|en|time}}). See also [[#countable|countable]], [[#uncountable|uncountable]] and [[#plural|plural]]. ; {{anchor|noun class}}[[noun class]] : In some languages (especially the [[Bantu]] languages), a way of classifying nouns much like [[#gender|gender]], but determined by other considerations such as the type and shape of an object, whether it is [[#animate|animate]] or [[#inanimate|inanimate]], a person or non-person, and so on. ; {{anchor|noun clause}}[[noun clause]] : A type of [[#dependent clause|dependent clause]] that takes the place of nouns. Examples are ''I said '''that my name is John''''' as well as ''I suggested '''that he leave''''' and '''''That the color of the sky on Mars is pinking-red''' is surprising to me''. Noun clauses can also be [[#nonfinite|nonfinite]] (i.e. with the verb in the form of an [[#infinitive|infinitive]]), as in ''I asked '''him to leave''''' (compare the [[#synonym|synonymous]] ''I asked '''that he leave''''', expressed using a [[#finite|finite]] verb). ; {{anchor|number}}[[number]], {{anchor|grammatical number}}grammatical number : A grammatical category that indicates how many items or individuals. Examples are [[#singular number|singular]], [[#plural number|plural]] and [[#dual number|dual]]. ; {{anchor|number}}[[numeronym]] :A [[number]]-based [[word]] such as {{l|en|9/11}} and {{l|en|24/7}}. ==O== ; {{anchor|object}}{{anchor|grammatical object}}[[object]] {{nobold|{{wikipedia|Object (grammar)}}}} : The entity that is acted upon by a [[#verb|verb]]. For example, in the sentence ''Tom studies grammar'', the word ''grammar'' is the object. Contrast [[#subject|subject]]. : → [[#direct object|direct object]], [[#indirect object|indirect object]] ; {{anchor|oblique}}{{anchor|oblique case}}[[oblique case]], {{anchor|කම් විබත්}}{{anchor|objective}}{{anchor|objective case}} [[කම් විබත්]] ([[objective case]]) : Any case that is neither [[#nominative case|nominative]] nor [[#vocative case|vocative]]. The term is therefore often plural ("the oblique cases"); but in some languages, such as [[Hindustani]] and [[Old French]], the oblique is a particular case form, used for example (in Old French) for the [[#direct object|direct object]] and with prepositions. ; {{anchor|අභාවයට ගිය}}{{anchor|obs}}{{anchor|obsolete}} ''[[අභාවයට ගිය]]'', ''[[obsolete]]'', ''obs.'' : No longer in use, and (of a term<!--as opposed to a spelling-->) no longer likely to be understood. ''Obsolete'' is a stronger term than ''[[#archaic|archaic]]'', and a much stronger term than ''[[#dated|dated]]''. See [[Wiktionary:Obsolete and archaic terms]]. Distinguish: an obsolete term is no longer in use, while the thing it once referred to may or may not exist; a historical term is still in use, but refers to a thing which no longer exists. ; {{anchor|OED}}OED : ''[[w:Oxford English Dictionary|Oxford English Dictionary]]''. Also '''SOED''' (Shorter), '''OED1''' (1st edition), '''OED2''' (2nd edition), '''NOED''' (New). ; {{anchor|offensive}} [[offensive]] : Language that is intended or likely to cause offense; a kind of [[impolite]] language. ; {{anchor|onomatopoeia}}{{anchor|onomatopoeic}}[[onomatopoeia]] : A word that is meant to sound like what it represents. English examples are {{m|en|kaboom}}, {{m|en|cuckoo}}, {{m|en|tweet}} and {{m|en|ding dong}}. ; {{anchor|optative mood}}[[optative mood]] : A category of verb form (a [[#mood|mood]]) that expresses wishes along with other meanings. Such a category occurs in Ancient Greek and Sanskrit. ; {{anchor|orthographic borrowing}}[[orthographic]] [[borrowing]] : A [[#loanword|loanword]] that has been borrowed in its written form and re-pronounced according to the conventions of the target language, particularly in East Asian languages written with Chinese characters. For example, the Chinese name {{m|zh|毛泽东|tr=Máo Zédōng}} is rendered in Japanese as {{m|ja|毛沢東|tr=Mō Takutō}}: the spelling is the same, but the characters have been pronounced as if they were Japanese words, leading to a significantly different pronunciation. Sometimes, the pronunciations in the source and donor language have no etymological relationship. For example, the Japanese noun {{ja-r|葉%書|は%がき|postcard}} was orthographically borrowed into Korean as {{ko-l|엽서|葉書|postcard}}. ; {{anchor|outdated}}[[outdated]] : see ''[[#dated|dated]]'' ; {{anchor|oxytone}}{{anchor|oxytonic}}[[oxytone]] : With the stress upon the final syllable (e.g. {{m|el|εθνικός}}). Compare with [[#paroxytone|paroxytone]], [[#proparoxytone|proparoxytone]], and [[#barytone|barytone]]. ==P== ; {{anchor|p.}}p. : ''post'' or after, often used in quotations. Hence, a quotation from "p. 1924" is a quotation from no earlier than 1924. : ''See '''{{glossary|plural}}'''.'' ; {{anchor|palatalization}}[[palatalization]] # The state or quality of being [[palatalized]], i.e. of pronouncing a sound with the tongue against the [[palate]] of the mouth that normally is not so pronounced. Some languages, such as [[Russian]] and [[Irish]], have pairs of palatalized and unpalatalized [[#consonant|consonant]] [[#phoneme|phonemes]]. # A [[#sound change|sound change]] that involves a change of consonants to become palatalized or move in the direction of the palate; one of the most common of sound changes, and usually triggered by a following {{IPAchar|/e/}}, {{IPAchar|/i/}} or {{IPAchar|/j/}}. In English, palatalization (known as {{w|yod-coalescence}}) converted {{IPAchar|/t/}} {{IPAchar|/d/}} {{IPAchar|/s/}} {{IPAchar|/z/}} to {{IPAchar|/t͡ʃ/}} {{IPAchar|/d͡ʒ/}} {{IPAchar|/ʃ/}} {{IPAchar|/ʒ/}} before a {{IPAchar|/j/}} (which was later lost), resulting in the sounds found in ''na'''t'''ure'', ''proce'''d'''ure'', ''pre'''ss'''ure'', ''mea'''s'''ure'', where the spelling still indicates the sound as it was prior to palatalization. Palatalization still operates [[synchronically]] before a {{IPAchar|/j/}}, producing, for instance, the pronunciations {{m|en|gotcha}} and {{m|en|didja}} from {{m|en|[[got]] [[you]]}} and {{m|en|[[did]] [[you]]}}. (See also {{pedia|Palatalization}}) ; {{anchor|palindrome}}[[palindrome]] : A word, phrase, number or any other [[sequence]] of units which has the property of reading the same [[forwards]] as it does [[backwards]], character for character, sometimes disregarding punctuation, [[capitalization]] and [[diacritic]]s. ; {{anchor|paradigm}} [[paradigm]] : A set of all forms which contain a common element, especially the set of all [[#inflection|inflectional]] forms of a word or a particular grammatical category. ; {{anchor|paragoge}}{{anchor|paragogic}} [[paragoge]] : The addition of sounds at the end of a word without changing its morphological structure or meaning. ; {{anchor|parisyllabic}}[[parisyllabic]] : A word whose inflections contain the same number of syllables as the lemma form ([[cf.]] [[#imparisyllabic|imparisyllabic]]). ; {{anchor|paroxytone}}[[paroxytone]] : With the stress upon the [[#penultima|penultimate]] (second to last) syllable (e.g. {{m|el|εθνολόγος}}). (Compare with ''[[#oxytone|oxytone]]'', ''[[#proparoxytone|proparoxytone]]'' and ''[[#barytone|barytone]]''.) ; {{anchor|part of speech}}[[part of speech]], {{anchor|POS}}POS, {{anchor|POS}}PoS : The category that a word belongs to, with respect to how it's used as part of phrases and sentences. Examples are [[#noun|noun]]s, [[#adjective|adjective]]s and [[#verb|verb]]s. The part of speech is inherent in the word itself, and is independent of any specific role that the word may have within any given sentence (e.g. subject, [[#direct object|direct object]]). Words may belong to more than one part of speech: English {{m|en|this}} is both a [[#determiner|determiner]] and a [[#pronoun|pronoun]], while {{m|en|coat}} is both a noun and a verb. ; {{anchor|partial calque}}{{anchor|loan blend}}{{anchor|partially calqued}}[[partial calque]] : A term which is only in part a [[#calque|calque]] or [[loan translation]], such that some parts have been translated word-for-word and other parts have been [[#loanword|borrowed]] directly. For example, the English term ''[[liverwurst]]'' is a partial calque of {{m+|de|Leberwurst}}; the first part {{m|de|Leber||liver}} was translated, but the second part {{m|de|Wurst||sausage}} was borrowed without translation. A partial calque is also known as a ''[[loanblend]]''. (''see'' {{pedia|Partial calque}}) ; {{anchor|participial}}{{anchor|participle}}{{anchor|participles}}[[participle]] : A form of a [[#verb|verb]] that may function as an [[#adjective|adjective]] or [[#noun|noun]]. {{cog|en|-}} has two types of participles: the [[#present|present]] participle and the [[#past|past]] participle. In other languages, also [[#future|future]], [[#perfect|perfect]], [[#future perfect|future perfect]] participles. ; {{anchor|particle}}[[particle]] : A word that does not fall into the usual [[#part of speech|part of speech]] categories, but which modifies another word or the sentence as a whole. The English term ''[[like#Particle|like]]'' is used as a particle in many dialects. Particles are more common in other Indo-European languages (e.g. German {{m|de|doch}}, which marks a sentence as being surprising or rebutting a previous statement) and in East Asian languages (e.g. Japanese {{m|ja|は}}, which marks the topic of a sentence). Many [[#clitic|clitics]] are particles. ; {{anchor|partitive}}[[partitive]] : Indicating partialness or indeterminateness, such as "some water" or "something nice". In Dutch, it is a word form that is used when referring to undetermined things or amounts (example: ''iets interessants'' = "something interesting"). French has special partitive [[#article|article]]s which qualify indefinite [[#mass noun|mass noun]]s (example: ''J'ai '''du''' café'' can be translated as either "I have '''some''' coffee" or simply "I have coffee"). ; {{anchor|partitive case}}[[partitive case]] : A [[#case|case]] that expresses a partial object or an action that is not performed to completion. ; {{anchor|passive}}{{anchor|passive voice}}[[passive voice]] : the [[#voice|voice]] verb form in which the subject is not the person or thing doing the action, and is usually having the action done on them ([[cf.]] [[#active voice|active voice]]), e.g. ''the ball was kicked (by the boy).'' (See also {{pedia|Voice (grammar)}}) ; {{anchor|past}}{{anchor|past tense}}[[past tense]] : The [[#tense|tense]] of a [[#verb|verb]] used to refer to an event, transaction, or occurrence that did happen or has happened, or an object that existed, at a point in time before now. An English example is {{m|en|saw}} in ''I saw my friend yesterday''. ; {{anchor|past historic}}[[past historic]] : A [[#tense|tense]] found primarily in writing in some languages, especially certain {{w|Romance languages}}. It has the same meaning as the [[#preterite|preterite]] but is used particularly in [[narrative]]. ; {{anchor|past perfect}}past perfect : Same as ''[[#pluperfect|pluperfect]]''. ; {{anchor|pejorative}}{{anchor|derogatory}}[[pejorative]] (or [[derogatory]]) : A word form expressing a negative or belittling attitude towards the person or thing referred to. Compare {{m+|en|artsy-fartsy}} with the neutral equivalent {{m|en|artistic}}. Some languages have specific prefixes or suffixes for expressing a pejorative attitude, e.g. {{m+|es|-ucho}}/{{m|es|-acho}} or {{m+|en|schm-}}. ; {{anchor|penultima}}{{anchor|penult}}[[penultima]] : The next-to-last [[#syllable|syllable]] of a word. ; {{anchor|perfect}}[[perfect]] : The [[#aspect|aspect]] of a verb indicating that the action described is completed. In English, it consists of the verb ''have'' + the past participle, e.g. ''Tom has painted the fence'' or ''Tom has taken medicine''. Depending on the tense of ''have'' one can have present perfect, which are represented in the previous examples, or past perfect: ''Tom had painted the fence'', ''Tom had taken medicine''. ''To have painted'' is a perfect infinitive. See also ''[[#imperfect|Imperfect]]''. Not to be confused with ''[[#perfective|perfective]]''. ; {{anchor|perfective}}{{anchor|perfective aspect}}[[perfective]] : The [[#aspect|aspect]] of a verb that denotes viewing the event the verb describes as a simple whole rather than as having internal structure. For example, "she sat down" as opposed to "she was sitting down". As this may often lead to an interpretation of completeness of what is expressed by the verb, this aspect is generally associated with the past and future tenses. Common in {{w|Slavic languages}} such as {{cog|ru|-}}. This term is often used interchangeably with ''[[#aorist|aorist]] aspect''. Not to be confused with ''[[#perfect|perfect]]''. (''see'' {{pedia|Perfective aspect}}) ; {{anchor|periphrastic}}[[periphrastic]] : Using more words to produce a grammatical effect. For example, "more fair" is a ''periphrastic'' form of "fairer". The English future tense requires ''periphrastic'' usage: "I ''will write'' an essay." ([[#Cf.|Cf.]] ''[[#monolectic|monolectic]]'' and ''[[#polylectic|polylectic]]''.) ; {{anchor|person}}[[person]], {{anchor|grammatical person}}grammatical person : A grammatical category that indicates the relationship between the speaker and what is being spoken of. Examples are [[#first person|first person]], [[#second person|second person]] and [[#third person|third person]]. ; {{anchor|phoneme}}[[phoneme]] : An indivisible unit of sound in a given language, an abstraction of the physical speech sounds. ; {{anchor|phono-semantic compound}}[[phono-semantic compound]] : A Chinese character ([[#CJKV|CJKV]] character) composed of a component which is related to the meaning the character and another component which is related to the sound of the character, example: the character {{zh-l|媽|lit=mother}} ([[Old Chinese|OC]] *maːʔ) is a phono-semantic compound made up of the semantic {{zh-l|*女|lit=female}} (on the left-hand side of {{lang|zh|媽/妈}}) and the phonetic {{zh-l|馬}} (OC *mraːʔ) (on the right-hand side of {{lang|zh|媽/妈}}). ; {{anchor|phono-semantic matching}}[[phono-semantic matching]] : A word [[#borrowing|borrowed]] into one language from another in a way that completely or partially preserves both the original sound and meaning. Phono-semantic matchings are especially common in Mandarin Chinese; examples are {{zh-l|可口可乐/可口可樂|tr=Kěkǒu kělè|t=Coca-Cola|lit=tasty [and] entertaining}} and {{zh-l|万维网/萬維網|tr=wàn wéi wǎng|t=world wide web|lit=myriad dimensional net}}. ; {{anchor|phrase}}[[phrase]] # A word or group of words that functions as a single unit in the [[#syntax|syntax]] of a [[#sentence|sentence]], usually consisting of a [[#head|head]], or central word, and elaborating words. Examples are ''the good boy'' (a [[#noun|noun]] phrase), ''very strange'' (an [[#adjective|adjective]] phrase), and ''in the house'' (a [[#preposition|prepositional]] phrase). Normally distinguished from a [[#clause|clause]], a similar group of words that contains a [[#verb|verb]]. # Same as [[#set phrase|set phrase]]. ; {{anchor|piecewise doublet}}[[piecewise]] [[doublet]] : One of two (or more) derived words in a language that consist of components that all have the same [[#etymology|etymological]] roots, but which have been entered the language at different points in time; in other words, one of two (or more) words that can be split into individual components and all of those components are [[#doublet|doublets]] of the equivalent components of the other words. ; pl. : ''See '''{{glossary|plural}}'''.'' ; {{anchor|plosive}}[[plosive]] : A [[#consonant|consonant]] sound produced by completely blocking the airflow through the mouth for a short time. In English, the plosives are [[#voiceless|voiceless]] {{IPAchar|/p/}}, {{IPAchar|/t/}}, {{IPAchar|/k/}} (as in the initial sounds of ''pea'', ''tea'', ''key'') and the corresponding [[#voiced|voiced]] sounds {{IPAchar|/b/}}, {{IPAchar|/d/}}, {{IPAchar|/ɡ/}} (as in the initial sounds of ''buy'', ''die'', ''guy''). Plosives are distinguished from [[#fricative|fricative]]s, in which the air is mostly but not completely blocked, enough to cause a rough, hissing or buzzing sound, and [[#approximant|approximant]]s, in which the airflow is only slightly constricted, resulting in a smooth sound. ; {{anchor|pluperfect}}[[pluperfect]] : A verb form of [[#perfect|perfect]] [[#aspect|aspect]] and [[#past|past]] [[#tense|tense]], which is used to describe an action or event which is regarded as having been completed in the past, in relation to a time already in the past. E.g. ''Tom had painted the fence before I got there''. ; {{anchor|බහුවචන}}{{anchor|plural}}{{anchor|Plural}}[[බහුවචන]] ([[plural]]), {{anchor|plural number}}plural number, {{anchor|pl}}{{anchor|pl.}}pl., p. : A [[#number|grammatical number]] that indicates multiple items or individuals. Most languages contrast it with [[#singular number|singular]], and plural indicates two or more. Some languages also possess the [[#dual number|dual]] or even [[#trial number|trial]] numbers; in these instances the plural indicates more than the highest specific number. ; {{anchor|plurale tantum}}[[plurale tantum]] (plural = pluralia tantum) : Same as plural only (see below). ; {{anchor|plural only}}{{anchor|plurale tantum}}{{anchor|pluralia tantum}}[[plural]] [[only]] : A noun (or a sense of a noun) that is inherently plural and is not used (or is not used in the same sense) in the singular, such as ''[[pants]]'' in the senses of "trousers" and "underpants", or ''[[wheels]]'' in the sense of "car", is ''plural only'' or ''a [[plurale tantum]]''. In practice, most pluralia tantum are found in the singular in rare cases. (''See'' [[:Category:English pluralia tantum]].) Contrast words which are '''[[singular]] [[only]] ([[singulare tantum|singularia tantum]])'''. ; {{anchor|polylectic}}[[polylectic]] : Used of a grammatical form accomplished with more than one word ([[cf.]] [[#monolectic|monolectic]] and [[#periphrastic|periphrastic]]). ; {{anchor|portmanteau}}{{anchor|Portmanteau}}[[portmanteau]] : A [[#blend|blend]] that combines meanings. ; POS, PoS : ''See '''{{glossary|part of speech}}'''.'' ; {{anchor|positive}}[[positive]] : The 'normal' form of the [[#degrees of comparison|degrees of comparison]] of an adjective or adverb. Thus [[big]] is the ''positive'' form of the trio ''big'', ''bigger'', ''biggest''. ; {{anchor|possessional adjective}}[[possessional adjective]] : An adjective indicating that a noun is in possession of some other noun (or a quality of that noun), commonly formed in English by adding the suffix {{m|en|-ed}}, {{m|en|-ful}}, {{m|en|-y}}, {{m|en|-ous}}, {{m|en|-able}}, {{m|en|-ual}}, {{m|en|-ish}}, {{m|en|-ar}}, {{m|en|-esque}} or {{m|en|-like}}. For example, an animal is [[bushy-tailed]] if it is in possession of a bushy tail, a person filled with disdain is [[disdainful]], and a garden is [[leafy]] if there are many leaves on the plants there. Commonly [[#idiomatic|idiomatic]], such as in [[pinheaded]] or [[red-faced]]. Not to be confused with [[#possessive adjective|possessive adjectives]], which indicate who possesses a noun, or [[#relational adjective|relational adjectives]], which are often formed in the same way. See also [[#privative adjective|privative adjectives]], which denote the opposite. ; {{anchor|possessive determiner}}{{anchor|possessive adjective}}[[possessive determiner]] (or possessive adjective) : A [[#determiner|determiner]] that indicates ownership. For example, in "her book", the word "her" indicates whose book it is. Not to be confused with [[#possessional adjective|possessional adjectives]], which indicate what a noun possesses. ; {{anchor|postpositive}}[[postpositive]] : Placed after the word modified. ; {{anchor|preconsonantal}}[[preconsonantal]] : Immediately preceding a [[#consonant|consonant]] or consonant sound. ; {{anchor|predicate}} [[predicate]] : The part of a [[#sentence|sentence]] that follows the [[#subject|subject]]. This generally consists of the [[#verb|verb]] and any [[#object|object]]s. It can also consist of a [[#linking verb|linking verb]] (e.g. "to be", "to seem", etc.) and a following [[#adjective|adjective]], which is termed a ''predicate adjective'' or ''predicative adjective'' (contrasted with an ''[[#attributive|attributive]] adjective'', which directly modifies a [[#noun|noun]]). An example would be {{m|en|good}} in ''The food is good''. Some languages, such as {{cog|de|-}} and {{cog|ru|-}}, have a special declension for predicate adjectives. ; {{anchor|predicative}}{{anchor|predicatively}}[[predicative]] : Describes a term that acts as the [[#predicate|predicate]] or part of the predicate of a [[#sentence|sentence]] (e.g. a ''predicative [[#adjective|adjective]]'', such as {{m|en|good}} in ''The food is good''). Some adjectives are only-predicative like {{m|en|afraid}} or {{m|en|glad}} in English.―In {{cog|ru|-}}, it often specifically refers to an adjective-like [[#part of speech|part of speech]] that serves as the entire predicate of a sentence in an [[#impersonal|impersonal]] construction. Such constructions often cannot be translated word-for-word in English. An example is {{m|ru|ску́чно||it is [[boring]]}} in the sentence {{m|ru|[[я|мне]] [[ску́чно]]||I am [[bored]]|lit='''It is boring''' to [[me]]}}. ; {{anchor|prefix}}{{anchor|prefixed}}{{anchor|prefixation}}[[prefix]] : A [[morpheme]] added to the beginning of a word to modify its meaning. ; {{anchor|prescriptive}}[[prescriptive]] : (as a context label for a word or phrase) Correct and consistent according to linguistic rules, but not in general use. ; {{anchor|prevocalic}}[[prevocalic]] : Immediately preceding a [[#vowel|vowel]] or vowel sound. ; {{anchor|preposition}}[[preposition]] : A word, normally non-[[#inflection|inflect]]ing, that is typically employed to connect a following [[#noun|noun]] or [[#pronoun|pronoun]], in an [[#adjective|adjectival]] or [[#adverb|adverbial]] sense, with some other word. Examples of prepositions in English are ''in'', ''from'' and ''during''. Note that some languages have [[#postposition|postposition]]s instead of prepositions; they function like prepositions but come ''after'' the noun or pronoun being connected. ; {{anchor|prepositional case}}{{anchor|prepositional}}[[prepositional case]] : A [[#case|case]] used in certain languages, especially {{cog|ru|-}}, after certain [[#preposition|preposition]]s. In {{cog|ru|-}}, it corresponds to the [[#locative case|locative case]] in other {{w|Slavic language}}s. ; {{anchor|present}}{{anchor|present tense}}[[present tense]] : The [[#tense|tense]] of a [[#verb|verb]] used primarily to refer to an event, transaction, or occurrence happening now or at the present time. The verb {{m|en|see}} in ''I see my friend in the window'' is in the present tense. In many languages, including English, the present tense may also be used to refer to past or future events in certain contexts: ''My plane leaves tomorrow morning'' (where {{m|en|leave}} is a present verb that refers to the future), or: ''John Lennon dies of gunshot wounds'' (as in a headline, where {{m|en|dies}} is a present verb that refers to the past; see [[historical present]]). While such uses are somewhat exceptional in English, the present tense is used much more widely in many languages. For example, the German present tense also covers some or most of the uses of the English future (''I will do'') and present perfect (''I have done''). ; {{anchor|preterite}}[[preterite]] (also spelled [[preterit]]) : A [[#tense|tense]] showing an action at a determined moment in the past. In general it is thus the union of the [[#past tense|past tense]] with the [[#perfective|perfective]] aspect, although in some languages it is little more than a synonym for past tense. ; {{anchor|preterite-present verb}}[[preterite-present verb]] : In [[Germanic]] languages, a verb that displays (or historically displayed) [[#ablaut|ablaut]] in the present tense, and thereby had ''present'' tense forms resembling the ''past'' (or ''preterite'') tense of a [[#strong verb|strong verb]]. Most languages have no more than a handful of such verbs, and they are often used as [[#auxiliary verb|auxiliary verbs]]. English examples are {{m|en|shall}}, {{m|en|can}}, {{m|en|may}}. Contrast [[#strong verb|strong verb]], [[#weak verb|weak verb]]. ; {{anchor|privative adjective}}[[privative adjective]] # An adjective indicating that a noun refers to an object that is not of the class which that noun ordinarily refers to. For example, in the term "fake weapon", the word "fake" denotes that the object is not a weapon, just as the word "toy" in "toy car" denotes that it is not a car. # An adjective indicating that a noun lacks some other noun (or a quality of that noun), usually formed in English by adding the suffix {{m|en|-less}} or {{m|en|-free}} to the noun that is absent. For example, someone is [[beardless]] if they don't have a beard, while a coffee might be [[sugar-free]] if it contains no sugar. Commonly [[#idiomatic|idiomatic]], such as in [[brainless]] or [[heartless]]. See also [[#possessional adjective|possessional adjectives]], which denote the opposite. ; {{anchor|productive}}[[productive]] : Used to form new words and phrases. For example, when a new verb appears in Modern English, the productive suffix {{m|en|-ed}} is used to form its past participle; by contrast, the suffix ''[[-en]]'' appears in many existing past participles, but is not productive, in that it is not (usually) used to form new ones. ; {{anchor|progressive}}[[progressive]] : The [[#aspect|aspect]] of a verb, indicating that the action described is, was or will be continuing, uncompleted or repeated. A verb form indicating that an action is [[in progress]]. In English, formed from a combination of ''be'' + the present participle (''-ing'' form) of the verb. So one can have present progressive (e.g. '''''is''' painting''), past progressive (e.g. '''''was''' painting''), future progressive (e.g. '''''will be''' painting''), etc. Similar to, but less general than, the [[#imperfective|imperfective]] [[#aspect|aspect]]. (See also ''[[#continuous|continuous]]''.) ; {{anchor|pronominal verb}}{{anchor|pronominal}}[[pronominal verb]] : A form of [[#verb|verb]] that has an attached [[#pronoun|pronoun]], prominent feature of [[Romance language|Romance]] and Slavic languages. The verb-pronoun combination can have [[#reflexive|reflexive]], [[#reciprocal|reciprocal]], [[#passive|passive]], [[#subjective|subjective]] or [[#idiomatic|idiomatic]] semantics. ; {{anchor|pronoun}}[[pronoun]] : A [[#part of speech|part of speech]] that acts as a substitute for a [[#noun|noun]] or [[noun phrase]] and refers to a topic of the discussion. Pronouns can refer to a participant in the discussion and can be used instead of a person's name, such as with the pronouns {{m|en|I}} and {{m|en|you}}. Other pronouns, such as {{m|en|he}}, {{m|en|she}}, and {{m|en|it}}, can be used to refer to other people or objects that have already been mentioned without repeating their names. ; {{anchor|pronunciation spelling}}[[pronunciation spelling]] {{nobold|{{wikipedia|pronunciation spelling}}}} : A deliberate misspelling used in writing, typically to indicate the speech of a particular dialect, even if the speaker may have perfect spelling. As such, it is the functional opposite of [[#eye dialect|eye dialect]]. ; {{anchor|proparoxytone}}[[proparoxytone]] : With the stress upon the [[#antepenultimate|antepenultimate]] (third to last) syllable (e.g. {{m|el|εθνικότητα}}). (Compare with ''[[#oxytone|oxytone]]'', ''[[#paroxytone|paroxytone]]'', and ''[[#barytone|barytone]]''.) ; {{anchor|proper noun}}[[proper noun]] : A kind of [[#noun|noun]] that usually refers to a specific, unique thing, such as {{m|en|Earth}} and {{m|en|Alps|the Alps}}, though one language's proper noun may translate to another language using a ''common'' (not proper) noun. In English, proper nouns are usually capitalized, as are common nouns and adjectives derived from proper nouns. The same word may have both common-noun and proper-noun senses (such as {{m|en|German}}, which is both a proper noun denoting a certain language, and a common noun denoting a person from Germany), and most proper nouns can sometimes be used as common nouns – e.g. {{m|en|John}} is a proper noun that is a first name, but can be used a common noun with plural {{m|en|Johns}} meaning "people named John". ; {{anchor|proscribed}}[[proscribe]]d : Some authorities or commentators recommend or warn against the listed usage. ; {{anchor|prothesis}}[[prothesis]] :The prepending of [[#phoneme|phonemes]] at the beginning of a word without changing its morphological structure, as in {{m|en|nother}}, from {{m|en|other}} (“a whole nother thing”), or Spanish {{m|es|esfera}} from Latin {{m|la|sphaera||sphere}}. ; {{anchor|proverb}}[[proverb]] : A [[#phrase|phrase]] expressing a basic truth which may be applied to common situations. ; {{anchor|pseudoacronym|pseudo-acronym}}[[pseudo-acronym]] : A word that has the form of an [[#acronym|acronym]] or [[#initialism|initialism]] but no longer stands for anything. (See also {{pedia|Pseudo-acronym}}) ; {{anchor|pseudoanglicism|pseudo-anglicism}}[[pseudo-anglicism]] : A word in a non-English language that is formed from English elements and may appear to be English, but that does not exist as an English word with the same meaning, such as {{m|de|Flipper||pinball machine}}, {{m|ja|サラリーマン||white-collar worker|tr=sararīman}} and {{m|sv|afterwork||informal gathering after work}}. ; {{anchor|pseudo-loan}}[[pseudo-loan]] : A word in one language that appears to be a direct borrowing from another language, but does not exist in that language or has an unrelated meaning. Examples are {{m+|fr|footing||jogging}}, {{m+|de|Bodybag||messenger bag, courier bag}}, {{m+|ja|サラリーマン||white-collar worker, '[[salaryman]]'|tr=sararīman}} and {{m+|sv|afterwork||informal gathering after work}}. Depending on the source language, more specific terms may be in use, e.g. ''[[pseudo-anglicism]]'' for pseudo-loans from English; ''{{w|wasei-eigo}}'' specifically for Japanese-language pseudo-loans from English; ''[[:Category:Pseudo-loans from Latin by language|pseudo-Latinism]]'' for pseudo-loans from Latin (cf. [[hocus pocus]], [[noli illegitimi carborundum]]); ''[[:Category:Pseudo-loans_from_Spanish_by_language|pseudo-Hispanism]]'' for pseudo-loans from Spanish (cf. [[no problemo]], [[que sera sera]]); ''[[:Category:Pseudo-loans_from_French_by_language|pseudo-Gallicism]]'' for pseudo-loans from French (cf. [[vive la différence]], [[nom de plume]], [[triple entendre]]); ''[[:Category:Pseudo-loans from German by language|pseudo-Germanism]]'' (from German), ''[[:Category:Pseudo-loans from Japanese by language|pseudo-Japonism]]'' (from Japanese), ''pseudo-Arabism'' (from Arabic), ''pseudo-Italianism'' (from Italian), etc. ==R== ; {{anchor|rare}}[[rare]] : A term or sense that is attested but not used commonly either in spoken or written language, even less so than [[#uncommon|uncommon]] terms. ; {{anchor|reanalysis}}{{anchor|reanalysed}}{{anchor|reanalyzed}}[[reanalysis]] : Analysis of a [[#lexeme|lexeme]] with a different structure from its original, often by misunderstanding. For example, ''[[hamburger]]'', which is originally ''[[Hamburg]]'' + ''[[-er]]'', was reanalyzed as ''[[ham]]'' + ''[[-burger]]'', which produced words like ''[[cheeseburger]]''. ; {{anchor|rebracketing}}{{anchor|metanalysis}}[[rebracketing]] : The process by which a word originally derived from one source is broken down or bracketed into a different set of factors. The understanding of ''[[hamburger]]'' as ''[[ham]] + [[burger]]'' (rather than ''[[Hamburg]]'' + ''[[-er]]'') is an example of rebracketing. Also called '''[[metanalysis]]'''. ; {{anchor|reciprocal}}[[reciprocal]] : Used to indicate that subjects have other subjects as object. Pronouns can be reciprocal (in English ''[[each other]]''), as well as verbs [[reciprocal]] quality as [[#lexeme|lexeme]]s. ; {{anchor|reconstruction}}{{anchor|reconstructed}}[[reconstruction]] : A word that is not recorded in actual texts or other media, but has been recreated from its descendant forms, using the [[comparative method]] of linguistics. ; {{anchor|reducible}}[[reducible]] : In the {{w|Slavic languages}}, a word (especially a noun or adjective) with an alternation between a vowel and no vowel in different forms of the word, pursuant to {{w|Havlík's law|Havlík’s law}}. In Russian, for example, the reducible masculine noun {{m|ru|вене́ц||[[crown]]}} appears unreduced (with /e/ in the final syllable) in the masculine singular, and reduced (with no /e/) in other forms, e.g. genitive singular {{m|ru|венца́}}, nominative plural {{m|ru|венцы́}}. ; {{anchor|reduplication}}{{anchor|reduplicated}} [[reduplication]] : The repetition of a word or a part of a word (as few as two [[#phoneme|phonemes]] in a word, or the whole sequence of phonemes in the word) with no or slight change. Compare [[#haplology|haplology]], the [[#elision|elision]] of a repeated part of a word. ; {{anchor|reflexive}}[[reflexive]] : Referring back to the subject, or having an object equal to the subject. Pronouns can be reflexive (e.g. ''[[myself]]'', ''[[oneself]]''). [[Romance language|Romance]] and Slavic languages make extensive use of reflexive verb forms (e.g. {{ncog|it|lavarsi}}, {{ncog|es|lavarse||to wash oneself}}). These are part of a larger group of [[#pronominal verb|pronominal verbs]]. ; {{anchor|register}}[[register#English:_language register|register]] {{nobold|{{wikipedia|Register (sociolinguistics)}}}} : A variety of a language used for a particular purpose or in a particular social setting. Encompasses variants such as [[#slang|slang]], [[#colloquial|colloquial]], [[#informal|informal]], [[#formal|formal]], etc. ; {{anchor|related terms}}[[Wiktionary:Entry layout explained#Related terms|related terms]] : Words in the same language that have strong etymological connections but are '''not''' derived terms. ; {{anchor|relational}}{{anchor|relational adjective}}[[relational]] : Refers to a type of adjective in some languages, e.g. {{cog|la|-}}, {{cog|grc|-}} and the {{w|Slavic languages}}, that takes the place of a noun when it modifies another noun. Consider an English phrase such as ''chicken soup''. In English, this phrase can be constructed by simply placing a noun such as ''chicken'' in the position normally occupied by an adjective, i.e. directly before the noun. In languages such as {{cog|ru|-}}, however, this cannot be done, and instead the word {{m|ru|ку́рица||chicken}} must be replaced by the relational adjective {{m|ru|кури́ный||related to chickens}} when forming the Russian equivalent {{m|ru|[[кури́ный]] [[суп]]||chicken soup}}. Generally, adjectives of this sort cannot be qualified by ''more'', ''less'' or ''very''. ; {{anchor|relative}}[[relative]] :# Marking a [[#relative clause|relative clause]]. Often used of pronouns, such as {{m|en|the tree '''[[which]]'''...}}. :# In the {{w|Bantu languages}}, a [[#part of speech|part of speech]] that resembles an [[#adjective|adjective]] in function, but behaves morphologically and syntactically like a [[#relative clause|relative clause]]. ; {{anchor|relative clause}}[[relative clause]] {{nobold|{{wikipedia|Relative clause}}}} : A [[#subordinate clause|subordinate clause]] that modifies a [[#noun|noun]]. In ''The man who I saw yesterday is leaving today'', the clause ''who I saw yesterday'' is a relative clause. In English, relative clauses are often introduced by a [[#relative|relative]] [[#pronoun|pronoun]] such as ''who'', ''which'' or ''that'', but other languages often have different strategies for marking relative clauses. ; {{anchor|respelling}}[[respelling]] : A different spelling of a word, especially to show its pronunciation. ; {{anchor|retronym}}[[retronym]] : A new word or phrase coined for an old object or concept whose original name has become used for something else or is no longer unique (such as acoustic guitar where guitar used to mean this but can now also refer to an electric guitar). ; {{anchor|rhetoric}}[[rhetoric]] # The art of effective or persuasive speaking or writing. # A string of words that are designed to impress or confuse, rather than communicate. (See also ''[[Appendix:Glossary of rhetoric]]''.) ; {{anchor|rhetorical question}}[[rhetorical question]] : A question to which the speaker does not expect an answer ; {{anchor|rhotacism}}[[rhotacism]], {{anchor|rhotacization}}[[rhotacization]] : A [[#sound change|sound change]] that converts one consonant (usually a voiced alveolar consonant: /z/, /d/, /l/, or /n/) to a [[rhotic]] consonant in a certain environment, most commonly /z/ to /r/. ; {{anchor|Romanization}}{{anchor|Romanisation}}{{anchor|romanization}}{{anchor|romanisation}}[[Romanization]], [[Romanisation]] : [[#transliteration|Transliteration]] of a string in a non-Latin script into the Latin or Roman one: for instance, {{m|el|συγγνώμη|tr=-}} can be romanized as ''singnómi''. ; {{anchor|root}}[[root]] : The part of a word that forms its core and gives its most basic meaning; also the part of the word that is left when all [[#affix|affix]]es are removed. For example, in {{m|en|insubordination}}, the root is {{m|en||ord}}, while in {{m|en|unspeakableness}} it is {{m|en|speak}}. The root is often the first part of the word (as in [[Uralic]] and often in [[Indo-European]] languages), but it may also be the last part, or it may only consist of the consonants of the word (as in the [[Afroasiatic]] languages). ==S== ; s : ''See '''{{glossary|singular}}'''.'' ; {{anchor|SAMPA}}[[SAMPA]] : [[w:SAMPA|SAMPA]] (Speech Assessment Methods Phonetic Alphabet), a set of systems for representing the phonemes of various languages in plain [[ASCII]] text. Not to be confused with [[w:X–SAMPA|X–SAMPA]], the system for representing the ''full'' International Phonetic Alphabet in plain ASCII text. ; {{anchor|script}}[[script]] : A writing system adapted to a particular language or set of languages. ; {{anchor|second person}}{{anchor|second-person}}[[second person]], {{anchor|2nd person}}[[2nd person]] : A [[#person|grammatical person]] that indicates the person or group that one is speaking to. Examples are the English pronouns {{m|en|you}} and {{m|en|thou}}. ; {{anchor|second-person-object}}{{anchor|second-person-object form}}{{anchor|second person object}}second-person-object form : A type of conjugation in [[Hungarian]] (aside from [[#definite|definite]] and [[#indefinite|indefinite]]) which indicates a first-person singular subject and a second-person (whether singular or plural, but informally addressed) object, for example {{m|hu|szeretlek|szeret'''lek'''|'''I''' love '''you'''}} or {{m|hu|látlak|lát'''lak'''|'''I''' see '''you'''}}. ; {{anchor|semantic loan}}{{anchor|ශබ්දාර්ථවිභාග ණයට ගැනීම්}} [[ශබ්දාර්ථවිභාග ණයට ගැනීම්]] ([[semantic loan]]) : A word or expression created by [[#loanword|borrowing]] a meaning from another language and assigning it to a word or expression that already exists in the borrowing language, also called semantic calque. (Compare [[#calque|calque]], a new word or expression created by translation.) For example, the French word {{m|fr|souris|lit=mouse}} was given the additional meaning ''[[computer]] [[mouse]]'' in imitation of {{m+|en|mouse}}, which already had both meanings. (''see'' {{pedia|Semantic loan}}) ; {{anchor|semelfactive}}[[semelfactive]] : A verbal [[#aspect|aspect]], a subclass of [[#perfective|perfective]], which denotes a [[momentary]] or [[punctual]] event (e.g. to [[sneeze]], to [[blink]], to [[knock]]). In {{w|Slavic languages}} such as {{cog|ru|-}}, often used to express actions performed once. (''See'' {{pedia|Semelfactive}}) ; {{anchor|semi-learned borrowing}}[[semi-learned borrowing]] : A [[#loanword|loanword]] that was borrowed from a [[classical language]] such as Latin or Sanskrit (especially when borrowed into a descendant of the same language), which has been partly reshaped by later [[#sound change|sound change]] or analogy with inherited terms. Opposed to [[#learned borrowing|learned borrowings]], which have not been similarly reshaped, and [[#inherited|inherited]] terms, which have undergone all the normal sound changes of a language. For example, the Portuguese term {{m|pt|artigo||article}} is a semi-learned borrowing from {{cog|la|articulus||joint, limb, division}}, which was borrowed early enough to undergo later sound changes that [[lenite]]d ''c'' into ''g'' and deleted ''l'' between vowels, but did not undergo earlier sound changes, such as lowering short ''i'' to ''e''. In comparison, {{m|pt|artelho||toe}} is inherited from the same Latin term, and {{m|pt|artículo||[[articulus]]}} is a learned borrowing from the same Latin term. ; {{anchor|semivowel}}[[semivowel]] : A sound which has some qualities of a [[#consonant|consonant]] and some qualities of a [[#vowel|vowel]]. ; {{anchor|sentence}}[[sentence]] : A syntactic unit that expresses a complete thought and consists of one or more [[#clause|clause]]s joined together. ; {{anchor|sentence adverb}} [[sentence adverb]] : An adverb that modifies an entire clause or sentence rather than a single word or phrase. ; {{anchor|set phrase}}{{anchor|set expression}}{{anchor|multiword phrase}}{{anchor|multiword expression}}[[set phrase]] : [[w:Set phrase|Set phrase]], a common [[expression]] (a [[#phrase|phrase]]) whose [[wording]] is not subject to [[variation]], or alternately, whose words cannot be replaced by [[#synonym|synonymous]] words without [[compromise|compromising]] the meaning. Set phrases may include [[#idiom|idiom]]s, [[#proverb|proverbs]], and [[#colloquial|colloquialisms]]. For example, ''flight simulator'' is a set phrase because it has a special meaning that ''flying simulator'' doesn't. ; sg. : ''See '''{{glossary|singular}}'''.'' ; SGV : ''See '''{{glossary|singulative}}'''.'' ; {{anchor|shortening}}[[shortening]] : A shortened form of a word(s), including [[#abbreviation|abbreviations]], [[#acronym|acronyms]], [[#contraction|contractions]], [[#initialism|initialisms]], [[#short form|short forms]]. ; {{anchor|short_form}}short form : A shortened term which is itself a stand-alone term; eg. {{m|en|Acts}}, a short form used to refer to {{m|en|Acts of the Apostles}}. ; {{anchor|sic}}''[[sic]]'' : A Latin adverb meaning "thus, so". It is traditionally placed inside square brackets and used in quotations to indicate that the preceding is not a copying error, but is in fact a verbatim reflection of the source. (For example, if a source contains a typographical error, someone quoting the source might add [sic] to make clear that the error was in the original source.) ; {{anchor|siglum}}[[siglum]] (pl. sigla) : A letter or other symbol that stands for a word or name; eg. {{m|la|ꝓ}} is a medieval Latin siglum for the word {{m|la|pro}}. ; {{anchor|simile}}[[simile]] : A [[figure of speech]] in which one thing is compared to another; in English, it generally uses [[like]] or [[as]]; see [[#metaphorical|metaphor]] and [[#figurative|figurative]]. ; {{anchor|simplex}}[[simplex]] : A simple word, one without [[#affix|affixes]]. ; {{anchor|ඒක වචන}}[[ඒක වචන]] : පහත [[#singular]] වෙත යොමු වන්න. ; {{anchor|singular}}{{anchor|Singular}}[[singular]], {{anchor|singular number}}singular number, {{anchor|sg}}{{anchor|sg.}}sg., {{anchor|s}}s : A [[#number|grammatical number]] that indicates exactly one item or individual. Usually contrasts with [[#plural number|plural]], and, in some languages, with [[#dual number|dual]]. ; {{anchor|singulative}}[[singulative]], {{anchor|singulative number}}singulative number, {{anchor|SGV}}SGV : The marked singular form of an unmarked [[#mass noun|mass noun]]. ; {{anchor|Sino-Xenic}}[[Sino-Xenic]] : Refers to pronunciations in [[Japanese]], [[Korean]] and [[Vietnamese]] languages (grouped with Chinese as [[#CJKV|CJKV]]) of terms or components derived from medieval [[Chinese]]. ; {{anchor|s.l.}}[[s.l.#Etymology 2|s.l.]] : {{noncog|la|[[sine]] [[locō]]|lit=without a place}}, used to indicate that the place of publication is not stated in a work. ; {{anchor|slang}}[[slang]] : Denotes language that is unique to a particular profession or subject, i.e. [[jargon]]. Also refers to the specialized language of a social group, sometimes used to make what is said unintelligible to those who are not members of the group, i.e. [[cant]]. Such language is usually outside of conventional usage, and is mostly inappropriate in [[#formal|formal]] contexts. ; {{anchor|slavic first palatalization}}{{w|Slavic first palatalization}} : A specific occurrence of [[#palatalization|palatalization]] that occurred in the {{w|Proto-Slavic language}}, in which the [[#velar|velar]] consonants ''*k *g *x'' when followed by any of the [[#front vowel|front vowel]]s ''*e *ě *ь *i'' became the sounds ''*č *ž *š'', respectively. The Slavic first palatalization is still an active process in many modern {{w|Slavic languages}}. For example, before certain suffixes in {{cog|ru|-}}, the consonants {{lang|ru|к г х ц}} become {{lang|ru|ч ж ш ч}} respectively. Other {{w|Slavic languages}} behave similarly. (''See'' {{pedia|Slavic first palatalization}}) ; {{anchor|slavic progressive palatalization}}{{w|Slavic progressive palatalization}} : A specific occurrence of [[#palatalization|palatalization]] that occurred in the {{w|Proto-Slavic language}}, in which the [[#velar|velar]] consonants ''*k *g *x'' when preceded by either of the [[#front vowel|front vowel]]s ''*ь *i'' (possibly with an intervening ''n'') became the sounds ''*c dz s/š'', respectively, with ''s'' occurring in East and South Slavic but ''š'' occurring in West Slavic. (See also {{pedia|Slavic progressive palatalization}}) ; {{anchor|s.n.}}[[s.n.]] : {{noncog|la|[[sine]] [[nōmine]]|lit=without a name}}, used to indicate that the name of the publisher is not stated in a work. ; {{anchor|snowclone}}[[snowclone]] : A type of {{l|en|cliché}} which uses an old {{glossary|idiom}} formulaically in a new context. (See also ''[[Appendix:English snowclones]]'' and {{pedia|Snowclone}}) ; {{anchor|solemn}} [[solemn]] : Used to evoke a sense of current events being highly important. Examples of situations where solemn language is likely to be used are liturgical events, various ceremonies, and public speeches. Solemn terms are often dated or archaic, and once belonged in the neutral register. ; {{anchor|sound change}}[[sound change]] : A change in the pronunciation of a sound in a given language, usually according to regular rules. An example of such a change in English is the deletion of ''h'' in the {{IPAchar|/hw/}} cluster found in words such as ''which'' and ''whale'', making them [[homophonous]] with ''witch'' and ''wail'', respectively. (This sound change is found in most varieties of English, but not in Scottish English or in some conservative American English and Irish English varieties. See {{w|Pronunciation of English ⟨wh⟩}}.) ; {{anchor|sound symbolism}}{{anchor|sound-symbolic}}[[sound symbolism]] : The idea that [[phoneme]]s or clusters of phonemes carry intrinsic meaning in a language. For example, the phoneme cluster ''gl-'' appears to mean "light" in English in words such as [[gleam]], [[glisten]], [[glare]], [[glossy]] and [[glow]]. (''See'' {{pedia|sound symbolism}} ''Also see'' {{pedia|phonestheme}}) ; {{anchor|spelling pronunciation}}[[spelling pronunciation]] : A pronunciation affected by the written form of the word, diverging from the original inherited form. Some spelling pronunciation are considered mistakes or non-standard, while others have historically become universally accepted and completely replaced the original pronunciations. (''See'' {{pedia|Spelling pronunciation}}) ; {{anchor|stem}}[[stem]] : The part of an [[#inflection|inflected]] word that the ending is attached to. For example, Latin {{m|la||mens-}} (stem, "table") + {{m|la|-ae}} (ending, 1st-declension nominative plural) &rarr; {{m|la|mensae}} (full word, "tables", nominative plural). ; {{anchor|stratum}}{{anchor|strate}}{{anchor|adstratum}}{{anchor|adstrate}}[[stratum]] {{nobold|{{wikipedia|stratum (linguistics)}}}} : A language that influences another by [[w:language contact|contact]], typically due to close geographic proximity (often both spoken simultaneously in the same land) and some form of cultural contact. A stratum can be further classified as [[#substrate|substrate]], [[#superstrate|superstrate]], or adstrate. ; {{anchor|strictly}}{{anchor|strict}}[[strictly]] : Indicates a more precise use of words; short for ''strictly speaking'' ([[sensu stricto]]). Contrast ''loose'' or ''broad'' (''wide'') sense; ''[[#loosely|loosely]]''. ; {{anchor|strong declension}}{{l|en|strong declension}} : In German, a declension of adjectives, and of masculine and neuter nouns, that is defined in opposition to the [[#weak declension|weak declension]] and [[#mixed declension|mixed declension]]. Strong nouns (typically) form their genitive in ''-s'' and/or ''-es'' and do not form their plural by adding ''-n'' and/or ''-en''. In adjectives, the strong declension is a set of endings used when the adjective is not accompanied by a definite or indefinite article, and includes a fuller set of endings than that of the weak or mixed declensions (hence the name). Note that "strong", "weak" and "mixed" refer to inherent declensional properties of nouns, but all adjectives can be declined according to all three declensions, depending on whether an article precedes and what type of article it is. By analogy, the term "strong declension" is sometimes used in other inflected Germanic languages such as {{w|Icelandic}} and {{w|Old English}}. In these languages, adjectives are formed similarly to German but there is typically not a single strong noun declension. Rather, a strong noun is any noun that does not follow the weak declension. ; {{anchor|strong pronoun}} strong pronoun : (''Greek'') An [[#emphatic|emphatic pronoun]]. ; {{anchor|strong conjugation}} ; {{anchor|strong verb}} [[strong verb]] and strong conjugation : In [[Germanic]] languages, a verb that displays [[#ablaut|ablaut]]. More specifically, a verb that has a change in [[#vowel|vowel]] between present and past. An English example is {{m|en|drink}}, {{m|en|drank}}, {{m|en|drunk}}. Note that some verbs show a vowel change, but not as a result of ablaut (e.g. {{m|en|think}}, {{m|en|thought}}); these are not considered strong verbs. Contrast [[#weak verb|weak verb]], [[#preterite-present verb|preterite-present verb]]. ; {{anchor|subject}}[[subject]] {{nobold|{{wikipedia|subject (grammar)}}}} : In a [[#clause|clause]]: the word or word group (usually a noun phrase) that is dealt with. In [[#active voice|active clauses]] with [[#verb|verbs]] denoting an action, the subject and the actor are usually the same. Contrast [[#object|object]]. ; {{anchor|subjunctive}}{{anchor|subjunctive mood}}{{anchor|conjunctive}}[[subjunctive mood]] : The [[#mood|mood]] of a [[#verb|verb]] expressing an action or state which is hypothetical or anticipated rather than actual, including wishes and commands. Some English examples are ''if I '''were''' rich'' and ''it’s important that he '''be''' here''. ; {{anchor|subordinate clause}}[[subordinate clause]] : Same as [[#dependent clause|dependent clause]]. ; {{anchor|substantive}}[[substantive]] :# A noun or adjective (or phrase), that names a real object with ''substance''. This is in contrast to an [[#attributive|attributive]] noun or adjective, which names a real object that carries the ''attributes'' of the named noun or adjective. :# In [[Mongolic]] languages, it sometimes refers to a single [[#part of speech|part of speech]] that collectively encompasses nouns, adjectives and adverbs, due to their shared morphological behaviour. ; substantivization : ''See '''{{glossary|nominalization}}'''.'' ; {{anchor|substratum}}{{anchor|substrate}}[[substratum]] : A language [[#stratum|stratum]] which has lower cultural or political prestige than the one which it influences. Many historical '''substrate''' languages have gone extinct without ever having been attested, and so they must be inferred from their influences on surviving or attested languages. One such example is the [[Pre-Greek]] substratum. ; {{anchor|suffix}}{{anchor|suffixed}}[[suffix]] : A [[morpheme]] added to the end of a word to modify its meaning. ; {{anchor|superlative}}[[superlative]] : An [[#inflection|inflection]], or different form, of a '''[[#comparable|comparable]]''' adjective showing a relative quality, denoting "to the ultimate extent". (See also ''[[#comparative|comparative]]'' and ''[[#degrees of comparison|degrees of comparison]]''.) In English, the superlative form is often formed by appending ''-est'', or using the word ''most''. For example, the superlative of ''big'' is "''biggest''"; of ''confident'', "''most confident''". ; {{anchor|superseded}}[[supersede]]d : Especially of a spelling, formerly standard, and still frequently encountered, but now deprecated in favor of another form as the result of a spelling reform. Examples in Portuguese: {{m|pt|idéia}} instead of {{m|pt|ideia}}, {{m|pt|freqüente}} instead of {{m|pt|frequente}}, {{m|pt|microondas}} instead of {{m|pt|micro-ondas}}, all replaced in the {{w|Portuguese Language Orthographic Agreement of 1990|1990 Orthographic Agreement}}, which was fully implemented only by 2015. ; {{anchor|superstratum}}{{anchor|superstrate}}[[superstratum]] : A language [[#stratum|stratum]] which has higher cultural or political prestige than the one which it influences. One historical example is the '''superstrate''' effect of [[Old Norman]] French on late [[Old English]] in the centuries following the 11th-century [[w:Norman conquest of England|Norman conquest of England]]. ; {{anchor|supine}}[[supine]] : A term for an [[infinite]] verb form in some languages. In Latin, a type of [[#verbal noun|verbal noun]], used for the [[#ablative|ablative]] and [[#accusative|accusative]] case of an [[#infinitive|infinitive]]. In Swedish, a form related to the [[#past participle|past participle]], used to form [[#perfect|perfect]] tenses. In Slovene and Lower Sorbian, a form related to the infinitive, used to indicate purpose after a verb of movement. ; {{anchor|suppletion}}{{anchor|suppletive}}[[suppletion]], [[suppletive]] : The situation in which the inflected forms of a word come from two or more unrelated roots: for example, {{m|en|go}} and {{m|en|went}}; {{m|en|be}}, {{m|en|is}}{{,}} and {{m|en|was}}. One or more of these forms, or the entire [[#paradigm|paradigm]] of the word, may then be called suppletive. Examples from various languages may be found from [[:Category:Suppletive verbs by language]]. ; {{anchor|surface etymology}}{{anchor|surface analysis}}{{anchor|surface}}{{anchor|equivalent to}}[[surface analysis]], [[surface etymology]] : The [[apparent]] etymology of a term by an [[analysis]] based on components occurring in the form of the language at a later point in time, i.e. that term's {{glossary|synchronic}} makeup: for example, the analysis {{m|en|earth}} + {{m|en|-en}} for {{m|en|earthen}}, which actually was inherited via Middle English from Old English, in which it occurred as {{m|ang|eorþen|eorthen}}. ; {{anchor|syllable}}[[syllable]] : A unit of human speech that is interpreted by the listener as a single sound. (''See'' {{pedia|Syllable}}) ; {{anchor|synchrony}}{{anchor|synchronic}}{{anchor|synchronically}}[[synchrony]] {{nobold|{{wikipedia|Diachrony_and_synchrony|Diachrony and synchrony}}}} : The viewpoint of analysis of a language which considers only its state at one point (or period) in time, not accounting for historical language change or etymology (as opposed to {{glossary|diachrony}}). A purely '''synchronic''' analysis of a word or phrase (as e.g. from the intuition of a speaker of the language) which may differ from its true etymological derivation is termed a {{glossary|surface analysis}}. ; {{anchor|syncope}}{{anchor|syncopic}}{{anchor|syncopation}}{{anchor|syncopated}}[[syncope]] : The deletion or elision of sounds inside a word (not at the beginning or end), most often a single [[#vowel|vowel]], but sometimes a [[#consonant|consonant]] or a sequence of vowels or consonants. Deletion at the beginning of a word is called [[#apheresis|apheresis]], at the end [[#apocope|apocope]]. ; {{anchor|syncretism}}<!-- {{anchor|syncretic}} -->[[syncretism]] : The situation in which two or more [[#inflection|inflected]] forms of a word are identical. For example, {{m+|en|walked}} is both the simple past and the past participle of {{m|en|walk}}, and {{m+|grc|ἄλλο}} is the neuter nominative, accusative{{,}} and vocative singular of {{m|grc|ἄλλος}}.<!-- Is the adjective syncretic used in this context? If so, how? --> ; {{anchor|synonym}}[[synonym]] : A word or phrase with a meaning that is the same as, or very similar to, another word or phrase. Contrast [[#antonym|antonym]]. ==T== ; {{anchor|tashif}}{{m|ar|صحف|تَصْحِيف}} : When a copyist has set wrong points ([[i'jam|ʾiʿjām]]) upon the skeleton ([[rasm]]) of the (Arabic) script. ; {{anchor|tatpurusa}}[[tatpurusa]] : Another term for a ''[[#determinative|determinative]] compound''. Contrast [[#bahuvrihi|bahuvrihi]], [[#karmadharaya|karmadharaya]] and [[#dvandva|dvandva]]. ; {{anchor|tautology}}[[tautology]] : Redundant use of words, a [[pleonasm]], an unnecessary and tedious repetition. ; {{anchor|tense}}[[tense]] : One of the forms of a [[#verb|verb]], used to distinguish when an action or state of being occurs or exists. The basic tenses in many languages are [[#present tense|present]], [[#past tense|past]], [[#future tense|future]]. (''see'' {{pedia|Grammatical tense}}) ; {{anchor|thematicization}}[[thematicization]] : [[insertion|Insertion]] of a [[thematic vowel]] on the [[root]] or [[stem]] of the word to make it [[undergo]] one of the [[productive]] [[vocalic]] inflections. ; {{anchor|අන්‍ය පුරුෂ}}[[අන්‍ය පුරුෂ]], {{anchor|ප්‍රථම පුරුෂ}}[[ප්‍රථම පුරුෂ]] : පහත දැක්වෙන [[#third person]] කොටස බලන්න. ; {{anchor|third person}}{{anchor|third-person}}[[third person]], {{anchor|3rd person}}[[3rd person]] : A [[#person|grammatical person]] that indicates someone or something that is neither the person or group to which the speaker belongs, nor the person or group that the speaker is speaking to. Examples are the English pronouns {{m|en|he}}, {{m|en|she}}, {{m|en|it}}, {{m|en|this}}, {{m|en|that}}, and so on. All [[#noun|nouns]] are generally considered third person. In some languages (like German, Italian, Spanish, Portuguese, and Hungarian), the third-person conjugation is also used to express the formal ''you'' (sometimes combined with the plural and/or capitalizing the personal pronoun in writing). ; {{anchor|tmesis}}{{anchor|diacope}}[[tmesis]] : The insertion of one or more words between the components of a [[#compound|compound]] word. ; {{anchor|tone}}[[tone]] : The pitch of a given syllable in languages where changing the pitch changes the basic meaning of the word. In {{w|Mandarin Chinese}}, for example, the word pronounced /ma/ (like English {{m|en|ma}}), when pronounced with a high, level tone means "mother", but when pronounced with a rising tone means "bother", and when pronounced with a falling tone means "scold". ; {{anchor|toponym}}[[toponym]] : A placename, or a word derived from one. ; {{anchor|topicalized}}[[topicalized]] form : In some languages, such as Okinawan, a topicalized form of a word is a contraction of that word, used as the phrase [[topic]], with the topic marker. ; {{anchor|tr.}}{{anchor|tran.}}tr., tran. : Translator or translated, often used in quotations. ; {{anchor|transferred sense}}[[transferred sense]], transf. : A (usually [[#loosely|looser]]) meaning of a word or [[#phrase|phrase]] developed from a [[#metaphorical|metaphorical]] application of its original signification (for example, ''hunger'' has the primary and original sense “want of food”, “craving appetite”, whence developed the transferred sense of “any strong desire or craving”). ; {{anchor|transgressive}}[[transgressive]] : A verb form in some Balto-Slavic languages that expresses a coincidentally proceeding or following action. ; {{anchor|සකර්මක}}[[සකර්මක]] : පහත [[#transitive verb]] වෙත යොමු වන්න. ; {{anchor|transitive verb}}{{anchor|transitive}}[[transitive verb]] : A verb which requires one or more [[#object|objects]] (e.g. ''I '''kick''' the ball''); contrast '''[[#intransitive verb|intransitive verb]]'''. (See also {{pedia|Transitivity (grammar)}}) ; {{anchor|translation hub}}translation hub : An English multi-word entry that is unidiomatic ([[WT:Glossary#S|sum of parts]]) and exists purely to host translations and enable navigation from one non-English entry to another non-English entry. An example: [[two days after tomorrow]]. See [[:Category:English translation hubs]] for more. ; {{anchor|transliteration}}[[Wiktionary:Transliteration|transliteration]] : The conversion of text in one [[#script|script]] into an equivalent in another [[#script|script]], or an instance of text so converted (for example, ''Ševčenko'' and ''Shevchenko'' are transliterations of Ukrainian ''Шевченко'' from Cyrillic script to Latin script, according to two different systems). Transliteration is conducted on a letter-by-letter basis (contrasted with [[transcription]] which is converted on the basis of sounds). This may be extended to the conversion of [[#diacritic|diacritical]] marks into alternate forms without diacritical marks in the same script (e.g. Mörder → Moerder). ; {{anchor|transnumeral}}{{anchor|transnumeral number}}[[transnumeral]] : A [[#number|grammatical number]] that is ambiguous as to whether it refers to the [[#singular|singular]] or [[#plural|plural]]. Found in [[Sino-Tibetan]] languages such as [[Chinese]] and [[Japanese]], as well as some [[Austronesian]] languages such as [[Indonesian]] and [[Malay]]. When a language also has a plural (or some other) number, they are commonly only used for clarity or emphasis. ; {{anchor|troponym}}[[troponym]] : A verb that indicates more precisely the manner of doing something by replacing a verb of a more generalized meaning, e.g. “to boil” for “to cook”. ; {{anchor|twice-borrowed}}[[twice-borrowed]] : Terms in one language that were borrowed from a second language that originally borrowed the term from the first language. (More at {{pedia|Reborrowing}}) ==U== ; {{anchor|UK}}UK : UK English, that is, the English of the [[United Kingdom]]. ; {{anchor|umlaut}}[[umlaut]] : A [[#sound change|sound change]] where a [[#vowel|vowel]] is modified to conform more closely to the vowel in the next [[#syllable|syllable]]. ; {{anchor|unadapted borrowing}}{{anchor|Unadapted borrowing}}[[unadapted]] [[borrowing]] : A [[#loanword|loanword]] that has not been conformed to the morpho-syntactic, phonological and/or phonotactical rules of the target language. For example, {{cog|en|cubiculum}} is an unadapted borrowing from {{cog|la|cubiculum}}, while {{cog|en|cubicle}} is a standard borrowing from the same Latin word. ; {{anchor|uncommon}}[[uncommon]] : A term or sense that is attested but not used commonly either in spoken or written language, but more commonly than [[#rare|rare]] terms. ; {{anchor|uncomparable}}[[uncomparable]], not comparable : (of adjectives) unable to be compared, or lacking a [[#comparative|comparative]] and [[#superlative|superlative]] function. ''See'' '''[[#comparable|comparable]]'''. Examples of adjectives that are not comparable: ''annual'', ''first'', ''extra'', ''satin'', ''six-figure''. ; {{anchor|uncountable}}{{anchor|Uncountable}}{{anchor|mass_noun}}[[uncountable]], uncountable noun, [[mass noun]] : A noun that cannot be used freely with numbers or the [[indefinite article]], and which therefore usually takes no [[plural]] form. For example, the English noun {{m|en|information}} is a mass noun, and at least in its principal senses is uncountable in most varieties of English. For those senses, we cannot say that we have *''one information'', nor that we have *''many information'' (or *''many informations''). Many mass noun senses often have corresponding plural [[#countable|count]] senses that denote ''types'' of the mass sense, ''instances'' of the mass sense, or ''portions (servings)'' of the mass sense. For example, the main sense of {{m|en|butter}} is the uncountable sense, so the plural form ''butters'' is seldom used, although it occasionally is used to mean "types of butter" (''many [[herb butter]]s contain garlic'') or "[packets of] butter". Compare also other implicit references to a container and the portion/serving that it contains (''get me a water, order two sodas, have a few beers''). Many languages do not distinguish between countable and uncountable nouns. [[#antonym|Antonym]]: ''[[#countable|countable]]'', or ''count noun''. ; [[undeclinable]] : ''See '''{{glossary|indeclinable}}'''.'' ; {{anchor|univerbation}}{{anchor|Univerbation}}[[univerbation]] : A single word formed from a fixed expression of several words. For example, the single word ''albeit'' comes from the Middle English expression ''al be it'', in which ''al'' means ''although''. ; {{anchor|usage notes}}usage notes : Additional information on current and historic use of the term in written or spoken language. ==V== ; ''v'' : ''See '''{{glossary|verb}}'''.'' ; {{anchor|var.}}{{anchor|varia lectio}}{{anchor|variae lectiones}}{{anchor|variant reading}}{{anchor|variant}}[[varia lectio]], [[variant reading]], [[variant]] : Any one of the readings of a given word or passage in a text which differ from copy to copy, from edition to edition, from manuscript to manuscript, or from translation to translation. ; {{anchor|velar}}[[velar]] : A [[#consonant|consonant]] made with the tongue touching the [[soft palate]] (also known as the [[velum]]). In English these include {{IPAchar|/k/}}, {{IPAchar|/ɡ/}}, {{IPAchar|/ŋ/}}, as in the final consonants of ''sack'', ''sag'', and ''sang'', respectively. ; {{anchor|verb}}{{anchor|verbs}}[[verb]] : A word that indicates an action, occurrence or state of being. The [[#inflection|inflection]] of verbs is commonly called [[#conjugation|conjugation]]. ; {{anchor|verbal noun}}[[verbal noun]] : A [[noun]] formed from a [[verb]]. ; {{anchor|verlan}}[[verlan]] : A type of [[#backslang|backslang]] used in French, in which the order of the [[#syllable|syllables]] or sounds of words is changed, usually with the last [[#syllable|syllable]] coming first. Examples are {{m|fr|barjot}} from {{m|fr|jobard||crazy}} and {{m|fr|meuf}} from {{m|fr|femme||woman}}. Sometimes this transformation is applied recursively, e.g. {{m|fr|beuteu}}, a verlan form of {{m|fr|teub}}, which is itself a clipped verlan form of {{m|fr|bite||dick}}. ; {{anchor|virile}}[[virile]] : In Slavic languages, a plural [[#gender|gender]] used for groups that include men and for [[#masculine|masculine]] personal nouns. ; {{anchor|අලප්}}{{anchor|අලප් විබත්}}{{anchor|vocative}}{{anchor|vocative case}} [[අලප් විබත්]] ([[vocative case]]) : A [[#case|case]] which indicates that someone or something is being directly addressed (spoken to), often by name. For example, in the English phrase ''He's dead, Jim'' the name {{m|en|Jim}} would be a vocative. ; {{anchor|voice}}[[voice]] : A verb characteristic (expressed in some languages by inflection) indicating its relationship with the subject. The usual voices are: [[#active voice|active]], [[#passive voice|passive]] and [[#middle voice|middle]]. (See also {{pedia|Voice (grammar)}}.) ; {{anchor|voiced}}[[voiced]] : A sound produced with vibration of the [[vocal cord]]s; a type of [[#voicing|voicing]]. ; {{anchor|voiceless}}[[voiceless]] : A sound produced without vibration of the [[vocal cord]]s; a type of [[#voicing|voicing]]. ; {{anchor|voicing}}[[voicing]] : A characteristic of sounds, indicating whether they are produced with vibration of the [[vocal cord]]s. In English, all [[#vowel|vowels]] are voiced, as well as all [[#approximant|approximant]] consonants, but [[#plosive|plosive]] and [[#fricative|fricative]] consonants can be either voiced or voiceless. Examples of voiced sounds in English are {{IPAchar|/v/}}, {{IPAchar|/z/}}, {{IPAchar|/b/}}, {{IPAchar|/d/}}, and the corresponding voiceless sounds are {{IPAchar|/f/}}, {{IPAchar|/s/}}, {{IPAchar|/p/}}, {{IPAchar|/t/}}. Whispering is a type of speech production in which all sounds are pronounced voiceless. ; {{anchor|vowel}}[[vowel]] : A sound produced by the vocal cords with relatively little restriction of the oral cavity, forming the prominent sound of a [[#syllable|syllable]]. ; {{anchor|vulgar}}[[vulgar]] : Language considered distasteful or obscene. : See also: '''{{glossary|offensive}}''', '''{{glossary|pejorative}}'''. ==W== ; {{anchor|wanderwort}}{{anchor|wanderword}}[[Wanderwort]] or [[wanderword]] : A wordform which has spread over a substantial area, or to many regions, outside of that of its language of origin, typically due to cultural exchange resulting from travel and trade. Wanderworts are a type of [[#loanword|loanword]], but a Wanderwort may or may not be an {{glossary|areal}} word. See also ''{{glossary|Kulturwort}}''. Contrast [[#stratum|strata]]. ; {{anchor|weak declension}}{{l|en|weak declension}} : A declension of adjectives and nouns in several {{w|Germanic languages}}, which originally had (and in some languages still have) an ''-n-'' in most of their forms. The weak adjective declension is used in conjunction with [[#definite|definite]] [[#article|article]]s. The weak noun declension is simply one of several possible noun declensions, so-named because it uses the same endings as weak adjectives. See the Wikipedia article on the {{w|weak inflection}} for more information. ; {{anchor|weak pronoun}}{{anchor|weak_pronoun}}{{l|en|weak pronoun}} : A pronoun of one syllable which is dependent on another word and cannot be used on its own; sometimes called ''[[#clitic|clitic]]''. Compare with [[#emphatic|emphatic]] or [[#strong verb|strong]]. ; {{anchor|weak verb}}[[weak verb]] : In [[Germanic]] languages, a verb that forms the past tense using a suffix containing a [[dental]] consonant (''d'', ''t'', ''ð'' or similar). Verbs of this type are considered "regular" in most Germanic languages, but there are also irregular weak verbs, such as English {{m|en|think}}, {{m|en|thought}} and {{m|en|have}}, {{m|en|had}}. Contrast [[#strong verb|strong verb]], [[#preterite-present verb|preterite-present verb]]. ; {{anchor|WMF}}WMF : Wikimedia Foundation, Inc., the parent organization of Wiktionary and other projects. ; {{anchor|women's speech}}[[women]]'s [[speech]] : In certain languages (for example, {{w|Karajá language}}), men and women use or historically used distinct words and inflected forms. ==X== ; {{anchor|X-SAMPA}}[[X-SAMPA]] : [[w:X-SAMPA|Extended SAMPA]], a system for representing the full [[International Phonetic Alphabet]] (IPA) in plain text ([[ASCII]]). For a template that converts X-SAMPA to IPA, see {{temp|x2i}}. ==Y== ==Z== ; {{anchor|zero-grade}}{{anchor|zero grade}}[[zero-grade]] : In [[Proto-Indo-European]] [[linguistics]], an [[ablaut]] form of a root characterized by the absence of the basic ablauting [[#vowel|vowel]] [[#phoneme|phonemes]] */e/ and */o/. For example, {{m|ine-pro||*bʰr̥-}} is the '''zero-grade''' of the Indo-European root {{m|ine-pro|*bʰer-}} meaning ‘to carry, bear’. [[ප්‍රවර්ගය:වික්ෂනරි මූලාශ්‍ර|Glossary]] [[en:Appendix:Glossary]] 37k20xmv8xsts1wdju3o513vr24rdqs 235380 235337 2026-06-02T03:37:56Z Lee 19 /* A */ 235380 wikitext text/x-wiki '''A glossary of terms used in the body of this dictionary.''' See also ''[[Wiktionary:Glossary]]'', which contains terms used elsewhere in the Wiktionary community, and ''[[Appendix:Glossary of rhetoric]]'', which explains commonly used [[#rhetoric|rhetorical]] terms. {{compactTOC|num=yes}} ==0–9== ; 1st person : ''See '''{{glossary|first person}}'''.'' ; 2nd person : ''See '''{{glossary|second person}}'''.'' ; 3rd person : ''See '''{{glossary|third person}}'''.'' ==Symbols== ; * : An [[asterisk#Noun|asterisk]] appearing before a term (an affix, a root, a word, etc.), indicates the term is not attested but reconstructed; for example, {{m|ine-pro|*werdʰh₁om}} is the reconstructed Proto-Indo-European word for ''word''. ; [&nbsp;] : [[bracket#Noun|Brackets]] surrounding a quotation indicate that the quotation either contains a mere mention of a term (for example, "some people find the word '''''manoeuvre''''' hard to spell") rather than an actual use of it (for example, "we need to '''manoeuvre''' carefully to avoid causing upset"), or does not provide an actual instance of a term but provides information about a related term. ; † : In a Chinese entry, a [[dagger#Noun|dagger]] indicates that a sense is obsolete in Modern Standard Chinese, though it may be preserved in fossilized compounds and expressions or other varieties of Chinese. ==අ== ; {{anchor|අනතීත}}{{anchor|අනතීත}}[[අනතීත]] : වර්තමාන-අනාගත ==A== ; {{anchor|a.}}[[a]]. : "[[ante|Ante]]" (Latin for "before"). Hence, a quotation from "''a.'' 1924" is a quotation from no later than the year 1923. ; {{anchor|abbreviation}}[[abbreviation]] : A shortened form of a word or phrase, such as an [[#initialism|initialism]], [[#acronym|acronym]], or [[#clipping|clipping]]. ; {{anchor|අවදි}}{{anchor|අවදි විබත්}}{{anchor|ablative case}}{{anchor|ablative}} [[අවදි විබත්]] ([[ablative case]]) : A [[#case|case]] that indicates separation, or moving away from something. It is used alone or with certain [[#preposition|prepositions]]. For example, if English had a fully [[#productive|productive]] case system that included the ablative case, then in the phrase ''came from the city'', either "the city" or "from the city" would likely be in the ablative. In some languages, such as Latin, this case has acquired many other uses and does not strictly indicate separation anymore. ; {{anchor|ablaut}}{{anchor|grade}}[[ablaut]] : In [[Proto-Indo-European]], or any of its descendants (the [[Indo-European]] languages), a system of [[#vowel|vowel]] alternation in which the vowels that are used in various parts of the word can change depending on meaning. The system is used for purposes of [[#inflection|inflection]] and word derivation. In the Germanic languages, it forms the basis of the [[#strong verb|strong verbs]]. A specific form of ablaut is referred to as a '''grade'''; see for instance [[#zero-grade|zero-grade]]. (More at {{pedia|Indo-European ablaut}}) ; {{anchor|absolutive}}{{anchor|absolutive case}}[[absolutive case]] : A [[#case|case]] used to indicate the [[patient#Noun|patient]] or [[experiencer]] of a [[#verb|verb]]'s action. ; {{anchor|abstract noun}}[[abstract noun]] : A [[#noun|noun]] that denotes an idea, emotion, feeling, quality or other abstract or intangible concept, as opposed to a concrete item, or a physical object. [[#antonym|Antonym]] of [[#concrete noun|concrete noun]]. ; {{anchor|abstract verb}}{{anchor|abstract}}[[abstract verb]] : In the {{w|Slavic languages}}, a verb of motion whose motion is multidirectional (as opposed to unidirectional) or indirect, or whose action is repeated or in a series ([[#iterative|iterative]]). Also called an [[#indeterminate verb|indeterminate verb]]. The opposite type of verb, which expresses a single, completed action, is termed a [[#concrete verb|concrete verb]] (or a [[#determinate verb|determinate verb]]). Motion verbs in the {{w|Slavic languages}} come in abstract/concrete lexical pairs, e.g. {{cog|ru|ходи́ть||to [[go]] (abstract)}} vs. {{m|ru|идти́||to [[go]] (concrete)}}, {{m|ru|бе́гать||to run (abstract)}} vs. {{m|ru|бежа́ть||to run (concrete)}}, {{m|ru|носи́ть||to carry (abstract)}} vs. {{m|ru|нести́||to carry (concrete)}}. English does not make this distinction. For example, "I went to the post office" could be abstract (if I went there and came back, i.e. multidirectional) or concrete (if I am there now, i.e. unidirectional), and different Russian verbs would be used to translate "went" in these two circumstances. In Polish coming back does not cause abstract verbs to be used, only doing something many times (''Chodzę do biura.'' 'I go to the office (every day).' vs. ''Idę do biura'' 'I am going to the office (now).') or moving without target (''Chodzę po pokoju'' 'I am walking around the room.' vs. ''Idę przez pokój.'' 'I am walking across the room.') does. Abstract verbs are always [[#imperfective aspect|imperfective]] in {{glossary|aspect}}, even with prefixes that are normally associated with the [[#perfective aspect|perfective aspect]] (e.g. Polish ''przybiegać''). ; {{anchor|accusative case}}{{anchor|accusative}}{{anchor|acc.}}[[accusative case]], acc. : A [[#case|case]] that is usually used as the [[#direct object|direct object]] of a [[#verb|verb]]. For example, if English had a fully [[#productive|productive]] case system, then ''ball'' in "The man threw the ball" would most likely be in the accusative. ; {{anchor|acronym}}[[acronym]] : An [[#abbreviation|abbreviation]] that is pronounced as the “word” it would spell, such as ''[[NATO]]''. ; {{anchor|active}}{{anchor|active voice}}[[active voice]] : The [[#voice|voice]] verb form in which the grammatical [[#subject|subject]] is the person or thing doing the action ([[cf.]] [[#passive voice|passive voice]]), e.g. ''The boy kicked the ball.'' (See also {{pedia|Voice (grammar)}}) ; {{anchor|acute}}{{anchor|acute accent}}[[acute accent]] : A [[#diacritic|diacritic]] mark ( ´ ) used that can be placed above a number of letters in many languages of the Latin, Greek and Cyrillic writing systems. ; {{anchor|AD}}[[AD]] : Anno Domini. Year-numbering system equivalent to [[CE]]. ; ''adj'' : ''See '''{{glossary|adjective}}'''.'' ; {{anchor|adjective}}[[adjective]] : A word like {{m|en|big}} or {{m|en|childish}} that usually serves to modify a [[#noun|noun]]. ; {{anchor|adverb}}[[adverb]] : A word like {{m|en|very}}, {{m|en|wickedly}} or {{m|en|often}} that usually serves to modify an [[#adjective|adjective]], [[#verb|verb]], or other adverb.<!-- Compare ''{{glossary|modifier}}''. --> ; {{anchor|adverbial}}[[adverbial]] : Relating to an [[#adverb|adverb]]. For example, an ''adverbial participle'' is a [[#participle|participle]] that functions like an adverb in a sentence. ; {{anchor|adverbial clause}}[[adverbial clause]] : A type of [[#dependent clause|dependent clause]] that modifies a verb in an [[#adverbial|adverbial]] fashion. Examples are '''''When my friend arrives''', I will take him out to dinner'' and '''''If it rains''', I will go home'' (the latter example being specifically a ''conditional clause''). ; {{anchor|affix}}{{anchor|af}}{{anchor|agent nouns}}[[affix]] : A [[bound morpheme]] added to a word’s stem; a [[prefix]], [[suffix]], [[interfix]], etc. In the narrow sense, {{syn of|und|#suffix|suffix|nocap=1}}. ; {{anchor|agentive}}{{anchor|agent noun}}{{anchor|agent nouns}}[[agent noun]] : A noun that denotes an agent who does the action denoted by the verb from which the noun is derived, such as "cutter" derived from "to cut". ; {{anchor|AHD}}AHD : The ''[[w:American Heritage Dictionary|American Heritage Dictionary]]''. For historical reasons, this abbreviation is sometimes used here to identify a respelled pronunciation that is given in [[#enPR|enPR]] form. ; {{anchor|alternative form}}Alternative form : A word etymologically related but varying somehow to another. ; {{anchor|ambitransitive verb}}{{anchor|ambitransitive}}[[ambitransitive verb]] : Capable of being either {{glossary|transitive}} or {{glossary|intransitive}} depending on usage. For instance, {{m|en|eat}} and {{m|en|read}} optionally take a [[#direct object|direct object]]: "I eat daily", "She likes to read" (both intransitive), "Read this book", "I do not eat meat" (both transitive). [[#ergative verb|Ergative verbs]] (q.v.) are a kind of ambitransitive verb. ; {{anchor|anglicisation}}{{anchor|anglicization}}{{anchor|anglicised}}{{anchor|anglicized}}[[anglicisation]], [[anglicization]] : The modification of a foreign ([[#loanword|borrowed]]) word to make it more English in form. ; {{anchor|angry register}}[[angry]] [[#register|register]] : Belonging to the angry linguistic [[#register|register]], used only when the speaker is angry. This register is quite rare, but is found in the {{w|Bikol languages}} of the central Philippines. ; {{anchor|animate}}{{anchor|animacy}}[[animate]] : Having a [[referent]] that includes a human or animal. Many languages (such as the {{w|Slavic languages}}) classify nouns based on animacy, using different [[#inflection|inflection]]s or words with animate and inanimate nouns. (See also {{pedia|Animacy}}) ; {{anchor|antepenultima}}{{anchor|antepenultimate}}{{anchor|antepenult}}[[antepenultima]] : The third-to-last [[#syllable|syllable]] of a word, before the [[#penultima|penultima]]. ; {{anchor|antonym}}{{anchor|antonymous}}[[antonym]] : A word with a meaning that is the opposite of a meaning of another word. For example, {{m|en|good}} is an antonym of {{m|en|bad}}. Contrast [[#synonym|synonym]]. ; {{anchor|aorist}}{{anchor|aorist tense}}[[aorist]] : A grammatical category of [[#verb|verbs]] that is often a [[#perfective|perfective]] past. (See also {{pedia|aorist}}) ; {{anchor|apheresis}}{{anchor|apheretic}}{{anchor|aphaeresis}}{{anchor|aphaeretic}}[[apheresis]] : The removal of a letter or sound from the beginning of a word. ; {{anchor|aphesis}}{{anchor|aphetic}}[[aphesis]] : The removal of an initial unstressed sound from a word, the process by which {{m|en|escarp}} became {{m|en|scarp}}. Words derived in this way are called aphetic. ; {{anchor|apocopic}}{{anchor|apocope}}{{anchor|apocopate}}{{anchor|apocopated}}{{anchor|apocopation}}[[apocope]] : Omission of the final sound or syllable of a word without changing its morphological structure or meaning. Occurs in Italian, Spanish, and other languages. ; {{anchor|approximant}}[[approximant]] : A [[#consonant|consonant]] sound produced by restricting the air flow through the mouth only slightly, resulting in a smooth sound. In English, the approximants are {{IPAchar|/l/}}, {{IPAchar|/ɹ/}}, {{IPAchar|/w/}}, {{IPAchar|/j/}} (as in the initial sounds of ''loo'', ''rue'', ''woo'' and ''you''). Approximants are distinguished from [[#fricative|fricative]]s, in which the air is constricted enough to cause a rough, hissing or buzzing sound, and [[#plosive|plosive]]s, in which the air is blocked completely for a short period of time. ; {{anchor|පෞරාණික}}{{anchor|archaic}}{{anchor|archaism}}[[පෞරාණික]], [[archaic]] : No longer in general use, but still found in some contemporary texts that aim for an antique style, like historical novels. For example, {{m|en|thee}} and {{m|en|thou}} are archaic pronouns, having been completely superseded by {{m|en|you}}.<!--Sometimes understood by educated people, but rarely used in current texts or speech.--> ''Archaic'' is a stronger term than ''[[#dated|dated]]'', but not as strong as ''[[#obsolete|obsolete]]''. (See [[Wiktionary:Obsolete and archaic terms]].) Whereas an archaic term names a still-extant thing or non-outdated concept, a [[#historical|historical]] term names a former thing or outdated concept. ; {{anchor|areal}}{{anchor|areal feature}}[[areal]] {{nobold|{{wikipedia|Areal feature}}}} : Distributed across multiple languages inhabiting a particular area, due to [[w:language contact|language contact]] among them rather than due to [[inheritance]] from a common ancestor. The term can be applied either to words (see ''{{glossary|loanword}}'') or features of languages such as in [[w:grammar|grammar]], [[w:morphology|morphology]], and [[w:phonology|phonology]]. See also ''{{glossary|Wanderwort}}'' and ''{{glossary|stratum}}''. ; {{anchor|article}}[[article]] : A type of [[#determiner|determiner]] that is used as a grammatical indicator in some languages, and is usually central to the grammar and syntax of that language. In English, the articles are the [[#definite|definite]] article {{m|en|the}}, and the [[#indefinite|indefinite]] articles {{m|en|a}} and {{m|en|an}}. Some languages may have more articles, such as the French [[#partitive|partitive]] articles {{m|fr|du}}, {{m|fr|de la}} and {{m|fr|des}}, while many languages lack articles altogether. ; {{anchor|aspect}}[[aspect]] {{nobold|{{wikipedia|Grammatical aspect}}}} : A property of a verb form indicating the nature of an action as [[#perfective|perfective]] (complete) or [[#imperfective|imperfective]] (incomplete or continuing). ; {{anchor|aspirated_h}}[[aspirated h]] : In French, an initial ⟨h⟩ that is treated as a [[#consonant|consonant]]; that is to say, [[liaison]] and [[elision]] are not permitted at the beginning of a word with an aspirated ⟨h⟩. ; {{anchor|assimilation}}{{anchor|assimilate}}{{anchor|assimilated}}[[assimilation]] {{nobold|{{wikipedia|Assimilation (phonology)}}}} : Assimilation is a common phonological process by which one sound becomes more like a nearby sound. This can occur either within a word or between words. See also ''{{glossary|dissimilation}}''. ; {{anchor|attributive}}{{anchor|attributively}}[[attributive]] :# An adjective that stands in a syntactic position where it directly modifies a noun, as opposed to a [[#predicative|predicative]] adjective, which stands in a [[#predicate|predicate]] position but which modifies the [[#subject|subject]] of the [[#clause|clause]]. For example, in ''the big green house'', ''big'' and ''green'' are attributive adjectives, whereas in ''The house is big and green'', ''big'' and ''green'' are predicative adjectives. Some adjectives are only-attributive like {{m|en|close#Adjective}} (in ''a close friend'') or {{m|en|plain}} (in ''plain nonsense''). :# A noun or adjective (or phrase) that names a real object with the ''attributes'' of another real object. This is in contrast to a [[#substantive|substantive]] noun or adjective, which names a real object that is the actual ''substance'' named by the noun or adjective. ; {{anchor|augment}}{{anchor|augmented}}[[augment]] {{nobold|{{wikipedia|Augment (linguistics)}}}} : In some Indo-European languages, a prefixed [[#vowel|vowel]] (usually '''e-'''; '''έ''' or '''ή''' in Greek, '''a-''' in Sanskrit) indicating a past tense in a verb. ; {{anchor|augmentative}}[[augmentative]] : A word form expressing large size, importance, intensity, or seniority. ; {{anchor|auxiliary verb}}[[auxiliary verb]] or {{anchor|auxiliary}}[[auxiliary]] : A verb that accompanies another verb in a clause. It is used to indicate distinctions in {{glossary|tense}}, {{glossary|mood}}, {{glossary|voice}}, {{glossary|aspect}} or other grammatical nuances. English examples are {{m|en|can}}, {{m|en|will}}, {{m|en|have}}, {{m|en|be}}. ; {{anchor|avoidance}}[[avoidance]] term : A word standardly used to replace a [[taboo]] word. (See also {{pedia|Naming taboo}}) ==B== ; {{anchor|back-formation}}[[back-formation]] : A term formed by removing an apparent or real prefix or suffix from an older term; for example, the noun {{m|en|pea}} arose because the final {{IPAchar|/z/}} sound in {{m|en|pease}} sounded like a plural suffix. Similarly, the verb {{m|en|edit}} is a back-formation from the earlier noun {{m|en|editor}}. Not to be confused with [[#clipping|clipping]], which just shortens a word without changing meaning or part of speech. ; {{anchor|back vowel}} [[back vowel]] : Vowel sound produced in the back of the mouth. Examples in English include /uː/ in {{l|en|rule}} or /əʊ/ in {{l|en|pole}}. Contrasts to a [[#front vowel|front vowel]]. ; {{anchor|backronym}}[[backronym]] : A word that is either not an [[#acronym|acronym]] but is taken to be one and for which a full form is invented by [[#back-formation|back-formation]], or is an acronym and for which an alternative full form is invented by back-formation. ; {{anchor|backslang}}[[backslang]] : A form of [[#slang|slang]] in which the spelling of words is reversed. ; {{anchor|bahuvrihi}}[[bahuvrihi]] : Another term for an ''[[#exocentric|exocentric]] compound''. Contrast [[#tatpurusa|tatpurusa]], [[#karmadharaya|karmadharaya]] and [[#dvandva|dvandva]]. ; {{anchor|barytone}}[[barytone]] : With the stress elsewhere than upon the final syllable. Compare with [[#oxytone|oxytone]], [[#paroxytone|paroxytone]], and [[#proparoxytone|proparoxytone]]. ; {{anchor|BC}}[[BC]] : Before Christ. Year-numbering system equivalent to [[#BCE|BCE]]. ; {{anchor|BCE}}[[BCE]] : Before the Common, Current or Christian Era. Year-numbering system equivalent to [[BC]]. [[AD]] is expressed as [[#CE|CE]]. To automatically switch most dates to use the "BC"/"AD" style, visit [[WT:Per-browser preferences]]. ; {{anchor|blend}}[[blend]] : A word or name that combines two words, typically starting with the start of one word and ending with the end of another, such as {{m|en|smog}} (from {{m|en|smoke}} and {{m|en|fog}}) or {{m|en||Wiktionary}} (from {{m|en|wiki}} and {{m|en|dictionary}}). Many blends are [[#portmanteau|portmanteaus]]. ; {{anchor|bowdlerization}}[[bowdlerize|bowdleriz]]ation : The removal, from a text, of words or phrases that are considered offensive or vulgar. ; {{anchor|broadly}}{{anchor|broad}}[[broadly]] : Indicates a less precise (wider) use of words; short for ''broadly speaking''. For most practical purposes, synonymous with ''[[#loosely|loosely]]''<!--because the differentiable nuance whereby "loosely" can sometimes imply some degree of prescriptive deprecation, whereas "broadly" less often and less strongly does so, is beyond-scope for this glossary; that is, for this glossary's purposes, "broadly" and "loosely" are interchangeable in practice-->. Contrast ''[[#strict|strict]]'' (''narrow'') senses. ==C== ; {{g|c}} : ''See '''{{glossary|common gender}}'''.'' ; {{anchor|c.}}{{anchor|ca.}}c., ca. : "[[circa|Circa]]" ("about"). Hence, a quotation from "c. 1924" or "ca. 1924" is a quotation from approximately 1924. ; {{anchor|calque}}{{anchor|loan translation}}{{anchor|calqued}}[[calque]] : A borrowing by word-for-word translation: a [[loan translation]]. For example, the English expression ''[[it goes without saying]]'' is a calque (a literal, word-for-word translation) of {{m+|fr|ça va sans dire}}, and ''[[flea market]]'' is a calque of {{m+|fr|marché aux puces|lit=[[market]] with [[flea]]s}}. Contrariwise, the term ''[[skyscraper]]'' was calqued into French as {{m|fr|gratte-ciel|lit=scrapes-sky}}. A semantic calque, also known as [[#semantic loan|semantic loan]], works similarly but does not create new terms. (''see'' {{pedia|Calque}}) ; {{anchor|case}}[[case]] : One of the forms of a noun, used to indicate its function in the phrase or sentence. Examples include: [[#nominative case|nominative]], [[#accusative case|accusative]], [[#genitive case|genitive]], [[#dative case|dative]]. ; cat. : Abbreviation for {{m|en|category}}. : Without the period, the [[w:ISO 639-3|ISO 639-3]] code for the Catalan language. ; {{anchor|category}}[[category]] : A collection of entries, used to categorize or group entries of words that are similar in syntax (for example, English plural nouns) or in sense (for example, English words pertaining to sports); ''see'' [[Wiktionary:Categorization]]. ; {{anchor|catenative}}{{anchor|catenative verb}}[[catenative]] verb : A [[#verb|verb]] able to be immediately followed by the full or bare [[#infinitive|infinitive]], or [[#gerund|gerund]] (i.e. non-finite verbs). : → [[Appendix:English catenative verbs]] ; {{anchor|causative}}{{anchor|causative verb}}[[causative]] verb : A transitive verb that is derived from another verb, and expresses the act of making someone/something do the action of the base verb. Examples in English are: {{m|en|lay}} (cause to {{m|en|lie}}), {{m|en|set}} (cause to {{m|en|sit}}) and {{m|en|raise}} (cause to {{m|en|rise}}). Compare '''[[#factitive|factitive verb]]s''' (e.g. {{m|en|shorten}}, {{m|en|enslave}}), which are similar but are derived from adjectives or nouns. ; {{anchor|CE}}[[CE]] : Common, Current or Christian Era. Year-numbering system equivalent to [[AD]]. To automatically switch most dates to use the "BC"/"AD" style, visit [[WT:Per-browser preferences]]. ; {{anchor|cf.}}[[cf.]] : "Confer"; "see"; "compare"&nbsp; – often used to indicate a word with similar, or opposite meaning. ; {{anchor|circumlocutory}}[[circumlocutory]] : Refers to a roundabout or indirect way of speaking; the use of more words than necessary to express an idea. ; {{anchor|CJKV}}{{anchor|CJKV}}[[CJK]], [[CJKV]] : Chinese, Japanese, Korean{{,}} (and Vietnamese); [[w:CJK characters|CJK characters]]. ; {{anchor|classifier}}[[classifier]] : See [[#counter|counter]]. ; {{anchor|clause}}[[clause]] : A word or group of words that functions as a single unit in the [[#syntax|syntax]] of a [[#sentence|sentence]], where the [[#head|head]] (or central) word is a [[#verb|verb]]; normally distinguished from a [[#phrase|phrase]], which is a similar unit where the head word is some other [[#part of speech|part of speech]], such as a [[#noun|noun]], [[#adjective|adjective]] or [[#preposition|preposition]]. For example, the [[#sentence|sentence]] ''The man entered the house, which was large and blue'' contains two clauses, the [[#independent clause|independent clause]] ''The man entered the house'' and the [[#dependent clause|dependent clause]] ''which was large and blue'' (here the dependent clause is specifically a [[#relative clause|relative clause]], although not all dependent clauses are relative clauses). ; {{anchor|ක්ලිප් කිරීම්}}{{anchor|clipping}} [[ක්ලිප් කිරීම්]] ([[clipping]]) : A shortening of a word, without changing meaning or part of speech. Not to be confused with [[#back-formation|back-formation]], which changes meaning, or [[#ellipsis|ellipsis]], which shortens by omission of whole words. Also differs from [[#abbreviation|abbreviation]], which shortens the written—rather than spoken—form of a word or phrase. See also ''[[#apheresis|apheresis]]'', ''[[#apocope|apocope]]''. : → {{pedia|Clipping (morphology)}} ; {{anchor|clitic}}[[clitic]] : A word that attaches to a phrase and cannot be used on its own, such as English ''[['s|-'s]]''. Many languages have clitic [[#pronouns|pronouns]] ([[#weak_pronoun|weak pronouns]]), which may be contrasted with [[#emphatic|emphatic]] or [[#strong|strong]] pronouns; for example, English ''[['em]]'' is a clitic version of ''[[them]]'', and always attaches to the preceding word (usually the [[#verb|verb]]). ; {{anchor|cognate}}[[cognate]] : [[descend|Descended]] from the same source [[#lexeme|lexeme]] of an [[ancestor]] language. ; {{anchor|coinage}}{{anchor|coined}}[[coinage]] : A new word intentionally created with a definite meaning. ; {{anchor|collective}}{{anchor|collectively}}{{anchor|collective noun}}[[collective]] : Expressing a collection or aggregate of individuals by a [[#singular|singular]] form. : → [[:Category:Collective nouns by language]]<!-- lb collective, collectively --> ; {{anchor|colloquial}}[[colloquial]] : Denotes words belonging to a spoken or vernacular variety of a language. These words are only properly used in a casual or familiar context. This label is only used with some languages; with others it is treated as a synonym of ''[[#informal|informal]]''. If used, ''colloquial'' is stronger than ''informal'' (a general rule of thumb is that informal words may be used in the running text of a newspaper article, while a colloquial term would likely not appear without quotation marks). : '''Note:''' It is a common misconception that ''colloquial'' somehow denotes "local" or a word being "[[#regional|regional]]". This is incorrect; the word root for ''colloquial'' is related to {{m|en|locution}}, not {{m|en|location}}. ; {{anchor|c}}{{anchor|common}}{{anchor|common gender}} [[common gender]], {{g|c}} : "Of common [[#gender|gender]]". Some languages have a distinct common gender that combines [[#masculine|masculine]] and [[#feminine|feminine]] but is distinguished from [[#neuter|neuter]]. In other languages, a "noun of common gender" is a pair of nouns, one masculine and one feminine, that are identical in form, and that have the same sense except that one refers to men and the other to women. Distinguish [[#epicene|epicene]]. ; {{anchor|comparable}}[[comparable]] : Of an adjective or adverb: able to be compared, having [[#comparative|comparative]] and [[#superlative|superlative]] forms that end in ''-er'' and ''-est'' (adjectives only), or in conjunction with the words ''more'' or ''most'', or sometimes ''further'' or ''furthest''. Examples: ''big'', ''bigger'', and ''biggest''; ''talented'', ''more talented'', and ''most talented''; ''upstairs'', ''further upstairs'', and ''furthest upstairs''. Some adjectives are truly '''[[#uncomparable|uncomparable]]''', such as ''daily'', ''additional'', and ''else''. Many other adjectives, such as ''unique'', ''existential'', and ''bearable'' are generally considered uncomparable, but controversially so, where examples can be readily cited of something being "''more bearable''" or "''most perfect''". ; {{anchor|comparative}}[[comparative]] : An [[#inflection|inflection]], or different form, of a '''[[#comparable|comparable]]''' adjective showing a relative quality, usually denoting "to a greater extent" but not "to the ultimate extent". (See also ''[[#superlative|superlative]]'' and ''[[#degrees of comparison|degrees of comparison]]''.) In English, the ''comparative'' form is usually formed by appending ''-er'', or using the word ''more''. For example, the comparative of ''hard'' is "''harder''"; of ''difficult'', "''more difficult''". ; {{anchor|compound}}[[compound]] : A word or name that combines two or more words without altering them, such as ''[[dishcloth]]'' (from ''[[dish]]'' and ''[[cloth]]'') or ''[[keyboard]]'' (from ''[[key]]'' and ''[[board]]''). Compound terms are indicated in etymologies using {{temp|compound}}. (See also ''[[WT:ETY#Compound]]''.) ; {{anchor|concrete noun}}[[concrete noun]] : A [[#noun|noun]] that denotes something tangible or material, such as a person or place. [[#antonym|Antonym]] of [[#abstract noun|abstract noun]]. ; {{anchor|concrete verb}}{{anchor|concrete}}[[concrete verb]] : In the {{w|Slavic languages}}, a verb of motion whose motion is unidirectional and expresses a single, completed action. Opposed to [[#abstract verb|abstract verbs]], whose motion is multidirectional or indirect, or whose action is repeated or in a series ([[#iterative|iterative]]). Also called a [[#determinate verb|determinate verb]]. See ''[[#abstract verb|abstract verb]]'' for more discussion. ; {{anchor|conditional}}{{anchor|conditional mood}}[[conditional mood]] : The [[#mood|mood]] of a [[#verb|verb]] used to signify that something is [[contingent]] upon the outcome of something else. The conditional mood in English is normally introduced by the word ''would'', as in ''If I were rich, I would be happy''. ; {{anchor|conjugation}}[[conjugation]] : The [[#inflection|inflection]] of [[#verb|verb]]s. See also ''[[#declension|declension]]''. ; {{anchor|conjunction}}[[conjunction]] : A word used to join other words or phrases together into sentences. ; {{anchor|connegative}}[[connegative]] : A [[verb]] form used with the [[#negative verb|negative verb]]. ; {{anchor|consonant}}[[consonant]] : Any sound that is not the dominant sound of a [[#syllable|syllable]], the dominant sound generally being a [[#vowel|vowel]]. ; {{anchor|consonantism}}[[consonantism]] : The sequence of [[#consonant|consonants]], or the quality peculiar to the consonants of a given word or group of words. ; {{anchor|construct state}}[[construct state]] : In some languages, a grammatical form that is used in construing a noun or adjective with another noun or adjective. In the [[Semitic]] languages, the construct form is usually a noun modified by a following noun in a genitive construction. The construct state of such a noun ''X'' can usually be translated to English as ''X of''. In [[Persian]], the construct state is typically used for all nouns and adjectives in a [[noun phrase]] except the very last. ; {{anchor|contamination}}[[contamination]] : Influence of one term on the development of another term whereby they come to have similar meanings or similar sound, [[conflation]]. ; {{anchor|contraction}}{{anchor|contracted}}[[contraction]] : A word or phrase shortened in speech, sometimes represented in writing with a [[punctuation mark]] in place of missing letters (e.g. {{noncog|en|-}} {{m|en|do}} {{m|en|not}} → {{m|en|don't}} or {{noncog|ro|-}} {{m|ro|nu}} {{m|ro|e}} → {{m|ro|nu-i}}). ; {{anchor|contranym}}[[contranym]] : A term with two opposite meanings. ; {{anchor|conversion}}[[conversion]] : The process whereby a new word is created without changing the form, often by allowing the word to function as a new part of speech. ; {{anchor|coordinate term}}[[coordinate term]] : A term that is a different type of the same [[#hypernym|hypernym]] (loosely "category"). ''Car'' and ''bicycle'' are coordinate terms to each other, both being [[#hyponym|hyponyms]] of a shared [[#hypernym|hypernym]] ''vehicle''. Although the term can be applied broadly – e.g. ''car'' and ''asteroid'' are both ''things'' –, such usage is not useful in Wiktionary. ; {{anchor|coordinative}}[[coordinative]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which the two parts are coordinated and the intended meaning of the compound as a whole is a combination of the two parts. Also known as a ''[[#dvandva|dvandva]] compound''. Examples in English are not common but are found in many other languages, e.g. {{m+|el|μαχαιροπίρουνο||cutlery|lit=knife-fork}} and {{m+|yi|טאַטע־מאַמע||parents|lit=papa-mama}}. Contrast [[#exocentric|exocentric]] and [[#endocentric|endocentric]] compounds. ; {{anchor|copula}}{{anchor|copulative}}[[copula]] : A verb that links and equates its [[#subject|subject]] with its object; also called a [[#linking verb|linking verb]]. The most common copula is the verb ''to be'', but others exist, such as ''to seem'', ''to appear'' and ''to sound''. The object of a copula often has special properties. For example, it can be an [[#adjective|adjective]] (''John is '''very tall''''') when most verbs require their objects to be [[#noun|noun]]s or [[#pronoun|pronoun]]s. In addition, in languages with [[#case|case]] distinctions, the object of a copula is most commonly in the [[#nominative|nominative]] case, while the object of other verbs is usually in a different case, such as the [[#accusative|accusative]] case. Many languages (e.g. {{cog|ru|-}}, {{cog|he|-}}, and {{cog|ar|-}}) use a ''null copula'' (i.e. no word at all) in the present tense when English would use the words ''am'', ''are'' or ''is''. ; {{anchor|corruption}}{{l|en|corruption|id=usage prescription}} : A [[#nonstandard|nonstandard]] form of a word, expression, or text, assigned a value judgment as being [[debase]]d, especially when resulting from [[misunderstanding]], [[transcription]] error, or [[mishear]]ing; this term is applied in usage prescription but not in modern linguistic science.<!--[[w:Language change]] addresses the epistemological problem with the value judgment, even when misapprehension was the causative factor.--> ; {{anchor|countable}}[[countable]], countable noun, [[count noun]] : Describes a noun which can be freely used with the [[indefinite article]] (''a'' or ''an'' in English) and with numbers, and which therefore has a [[plural]] form. [[#antonym|Antonym]]: ''[[#uncountable|uncountable]]'' or ''mass noun''. ; {{anchor|counter}}[[counter]] : In linguistics, counters, [[measure word]]s or [[classifier]]s are words that are used in combination with a numeral to indicate an amount of something represented by some noun. They denote a unit or measurement and are used with [[mass noun]]s, and sometimes also with [[count noun]]s. (Compare ''[[#singulative|singulative]].'') ==D== ; {{anchor|dated}}[[dated]] : Formerly in common use, and still in occasional use, but now unfashionable; for example, ''[[wireless]]'' in the sense of "broadcast radio tuner", ''[[groovy]]'', and ''[[gay]]'' in the sense of "bright" or "happy" are all dated. ''Dated'' is not as strong as ''[[#archaic|archaic]]'' or ''[[#obsolete|obsolete]]''. See [[Wiktionary:Obsolete and archaic terms]]. ; {{anchor|සපදන් විබත්}}{{anchor|dative case}}{{anchor|dative}}{{anchor|dat}}[[සපදන් විබත්]] ([[dative case]]), dat. : A [[#case|case]] that is usually used as the [[#indirect object|indirect object]] of a verb. For example, if English had a fully [[#productive|productive]] case system, then ''him'' in "She gave him the ball" would most likely be in the dative. ; {{anchor|declension}}[[declension]] : The [[#inflection|inflection]] of [[#noun|noun]]s and words like them, or used together with them (i.e. [[#nominal|nominal]]s). See also ''[[#conjugation|conjugation]]''. ; {{anchor|defective}}[[defective]] : Normally would be expected to have a full set of [[#inflection|inflected]] forms, but some of the inflections do not exist or are never used. English examples are the defective verbs {{m|en|can}} and {{m|en|shall}}, which do not have [[#infinitive|infinitive]] forms (there is no ''to can'' or ''to shall''). ; {{anchor|defective spelling}}defective spelling : In languages with [[mater lectionis|matres lectionis]] ([[#consonant|consonant]] letters representing [[#vowel|vowels]]), the form including no additional ones, this may still include a mater lectionis. ; {{anchor|definite}}[[definite]] : Refers to forms of words that present something as known, identified, or immediately identifiable; in English, this is the basic meaning of the [[#article|article]] ''[[the]]''; in some languages, this is a nominal or adjectival [[#inflection|inflection]]. In the Germanic languages, adjectives inflected as definite are referred to as "weak". In Hungarian, the definite conjugation is used to indicate [[:w:Hungarian verbs#Definite and indefinite conjugations|definite objects]], including ''him, her, it, them,'' and the formal ''you.'' ; {{anchor|degrees of comparison}}[[degrees of comparison]] : [[#inflection|Inflections]] of adjectives and adverbs which allow comparisons. English has three ''degrees of comparison'': [[#positive|positive]], [[#comparative|comparative]] and [[#superlative|superlative]]. Some other languages have other degrees, e.g.: [[comparative superlative]], [[relative superlative]], [[elative]]. ; {{anchor|denominal}}[[denominal]] : Derived from a [[#noun|noun]]. ; {{anchor|dependent}}[[dependent]] : (In Greek and in the Gaelic languages) A verb form which is not used independently but preceded by a particle to form the negative or a tense form. ; {{anchor|dependent clause}}[[dependent clause]] : A [[#clause|clause]] that cannot stand on its own as a complete [[#sentence|sentence]], as opposed to an [[#independent clause|independent clause]]. Also known as a [[#subordinate clause|subordinate clause]]. Logically, a dependent clause modifies a word in another clause in the sentence. Common examples are (1) [[#relative clause|relative clause]]s (also known as "adjective clauses" or "adjectival clauses"), which modify nouns (e.g. ''The man '''whom I saw yesterday''' is leaving today''); (2) [[#adverbial clause|adverbial clause]]s, which modify verbs in an adverbial fashion (e.g. '''''When it is time to leave''', I will go home''), and [[#noun clause|noun clause]]s, which take the place of nouns (e.g. ''I said '''that my name is John''''' or ''I suggested '''that he leave'''''). (''see'' {{pedia|Dependent clause}}) ; {{anchor|deponent}}[[deponent]] : (In Greek, Latin, and some Gaelic and Nordic languages) A verb with an active meaning which conjugates in a passive manner. ; {{anchor|derived terms}}[[Wiktionary:Entry layout explained#Derived terms|derived terms]] : A post-[[POS]] heading listing terms in the same language that are morphological derivatives. ; [[derogatory]] : ''See '''{{glossary|pejorative}}'''.'' ; {{anchor|descendants}}[[Wiktionary:Entry layout explained#Descendants|descendants]] : A post-[[POS]] heading listing terms in other languages that have borrowed or inherited the word. ; {{anchor|descriptive}}[[descriptive]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which one part modifies the other, where both parts refer to the intended meaning of the compound as a whole. Also known as a ''[[karmadharaya]] compound''. The intended meaning of the compound as a whole is an extension of the sum-of-parts meaning of the compound. Examples in English are "[[blackboard]]" (a type of board which is [often] black) and "[[houseboat]]" (a boat which is also a house). Contrast [[#determinative|determinative]] compounds, where the modified component but not the modifier refer to the intended meaning as a whole, as in "[[rainbow]]" and "[[footstool]]". Descriptive compounds are a subtype of [[#endocentric|endocentric]] compounds, which are in turn contrasted with [[#exocentric|exocentric]] and [[#coordinative|coordinative]] compounds. ;{{anchor|desiderative}}[[desiderative]] : A verb form indicating a wish. ; {{anchor|determinate verb}}{{anchor|determinate}}[[determinate verb]] : In the {{w|Slavic languages}}, another term for ''[[#concrete verb|concrete verb]]''. ; {{anchor|determinative}}[[determinative]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which one part modifies the other, where the modified component (but not the modifier) refers to the intended meaning of the compound as a whole. Also known as a ''[[tatpurusa]] compound''. Examples in English are "[[rainbow]]" (a type of [[bow]], caused by the rain) and "[[footstool]]" (a type of [[stool]], intended for one's feet). Contrast [[#descriptive|descriptive]] compounds, where both the modifier and modified component refer to the intended meaning as a whole, as in "[[blackboard]]" or "[[houseboat]]". Determinative compounds are a subtype of [[#endocentric|endocentric]] compounds, which in turn are contrasted with [[#exocentric|exocentric]] and [[#coordinative|coordinative]] compounds. ; {{anchor|determiner}}[[determiner]] : A noun modifier that expresses the in-context reference or quantity of a noun or noun phrase. Determiners are often considered adjectives, but in fact are not quite the same; for example, in English, {{m|en|big}} is an adjective, so “the big car” is grammatical while *“He saw big car” is not, but {{m|en|some}} is a determiner, so *“the some car” is not grammatical while “He saw some car” is. In English, adjectives can ''sometimes'' stand alone without a noun, while determiners nearly ''always'' can (contrast *“He saw big” with “He saw some”), such that they are sometimes considered pronouns as well as adjectives. ; {{anchor|deverbal}}[[deverbal]] : A word, often a [[#substantive|substantive]], derived from a [[#verb|verb]]. Contrast ''[[#denominal|denominal]]''. ; {{anchor|diachrony}}{{anchor|diachronic}}{{anchor|diachronically}}[[diachrony]] {{nobold|{{wikipedia|Diachrony_and_synchrony|Diachrony and synchrony}}}} : A viewpoint of analysis of a language or phrase within a language which considers the [[historical linguistics|historical changes]] over time which have shaped its state at a given later time. The term is typically used to contrast with ''{{glossary|synchrony}}''. ; {{anchor|diacritic}}{{anchor|diacritical}}{{anchor|diacritical mark}}[[diacritic]] : A diacritic – also diacritical mark, diacritical point, diacritical sign, or an accent – is a [[#glyph|glyph]] added to a letter, or basic glyph. Examples: [[#acute|acute]] ( ´ ), double acute ( ˝ ), [[#breve|breve]] ( ˘ ), inverted breve ( ̑ ), [[#cedilla|cedilla]] ( ¸ ), [[#diaeresis|diaeresis]]/[[#umlaut|umlaut]] ( ¨ ), [[#macron|macron]] ( ¯ ), [[overring|overring]] ( ˚ ), [[#perispomene|perispomene]] ( ͂ ), etc. The main use of a diacritical mark is to change the sound-values of the letters or cadence of a word to which they are added. Examples are the diaereses in the borrowed French words {{m|en|naïve}} and {{m|en|Noël}}, which show that the vowel with the diaeresis mark is pronounced separately from the preceding vowel; the acute and [[#grave|grave]] accents, which can indicate that a final vowel is to be pronounced, as in {{m|en|saké}} and poetic ''breathèd''; and the cedilla under the ⟨c⟩ in the borrowed French word {{m|en|façade}}, which shows it is pronounced {{IPAchar|/s/}} rather than {{IPAchar|/k/}}. ; {{anchor|diaeresis}}{{anchor|diaresis}}{{anchor|dieresis}}[[diaeresis]] : A [[#diacritic|diacritic]] ( ¨ ) placed over a [[#vowel|vowel]] letter indicating that it is sounded separately. ; {{anchor|dialectal}}[[dialectal]] : Of or relating to a [[dialect]]. ; {{anchor|diminutive}}[[අල්පාර්ථ පද]] ([[diminutive]]) : A word form expressing smallness, youth, endearment, unimportance, or contempt. ; {{anchor|direct object}}[[direct object]] : The [[#noun|noun]] or noun [[#phrase|phrase]] that a [[#verb|verb]] is directly acting upon. In some languages direct objects are marked with the [[#accusative case|accusative case]]. : → [[#transitive verb|transitive verb]], [[#indirect object|indirect object]] ; {{anchor|dissimilation}}{{anchor|dissimilate}}{{anchor|dissimilated}}[[dissimilation]] {{nobold|{{wikipedia|Dissimilation}}}} : A phonological process whereby one of a pair of similar sounds within a word or phrase becomes dissimilar: for example, the shift l…l > r…l in the derivation of {{m+|frm|coronnel}} from Old Italian {{m|it|colonnello}}. It has an opposite effect to [[#assimilation|assimilation]]. ; {{anchor|displaced}}[[displace]]d : Of an older word: having been replaced by a newer word. ; {{anchor|ditransitive verb}}{{anchor|ditransitive}}[[ditransitive verb]] : (of a verb) taking two objects, such as {{m|en|give}} in “Give me the ball” (where {{m|en|me}} is an [[#indirect object|indirect object]] and {{m|en|ball|the ball}} is a [[#direct object|direct object]]). Compare [[#intransitive verb|intransitive verb]] and [[#transitive verb|transitive verb]]. ; {{anchor|doublet}}[[doublet]] : One of two (or more) words in a language that have the same [[#etymology|etymological]] root but have come to the modern language through different routes. Doublets can come about e.g., as [[#loanword|loanwords]] from two different but related languages, as loanwords acquired from the same language at two different stages, as one loanword from a related language plus its native [[#cognate|cognate]], or as derivatives formed at two different stages in the history of a language. ; {{anchor|dual}}{{anchor|dual number}}[[dual]], [[dual number]] : A [[#number|grammatical number]] that indicates exactly two items or individuals. Usually contrasts with [[#singular number|singular]] and [[#plural number|plural]]. ; {{anchor|dummy pronoun}} {{w|dummy pronoun}} : A [[#pronoun|pronoun]] that has no referent. For instance, {{m|en|it}} in ''it is good to know that you are okay'' is a dummy [[#subject|subject]]. It is used in order to provide the verb {{m|en|is}} with a syntactic subject, because English does not allow a [[w:null-subject language|null subject]]. ; {{anchor|dvandva}}[[dvandva]] : Another term for a ''[[#coordinative|coordinative]] compound''. Contrast [[#bahuvrihi|bahuvrihi]], [[#tatpurusa|tatpurusa]] and [[#karmadharaya|karmadharaya]]. ; {{anchor|dysphemism}}[[dysphemism]] : A term carrying negative connotations or imagery to replace a (more) neutral original. Contrast ''[[#euphemism|euphemism]]''. ==E== ; {{anchor|ed.}}ed. : "[[editor|Editor]]" (or sometimes "edition"). This abbreviation is often used in attributing quotations; the editor of a compilation is generally the individual in charge of selecting what works to include. ; {{anchor|elative}}[[elative]] : In [[Semitic]] languages, a stage of gradation that can be used both for a [[superlative]] and [[comparative]]. (See also ''[[#degrees of comparison|degrees of comparison]]''.) ; {{anchor|elative case}}[[elative case]] : A [[#case|case]] which expresses "moving out of". ; {{anchor|elision}}{{anchor|elided}}[[elision]] : The removal of a [[#phoneme|phoneme]] or sequence of phonemes from a word, particularly at the beginning or end. ; {{anchor|ellipsis}}[[ellipsis]] : The omission of a word or phrase that can be inferred from the context. ; {{anchor|elongated}}[[elongated]] : With [[letter]]s added for [[emphasis]], like "stoooop!" Usually this is [[nonstandard]] writing, but in some uses, such as in interjections, this is normal: "awwwww!", "shhhh!" ; {{anchor|emphatic}}[[emphatic]] : Taking particular stress. English's [[#reflexive|reflexive]] pronouns double as emphatic ones, as in "I myself have not seen it" (where "myself" emphasizes the role of the speaker); some other languages (such as Greek) have emphatic pronouns that they distinguish from ''[[#weak pronoun|weak]]'' or ''[[#clitic|clitic]]'' pronouns. ; {{anchor|enclisis}}[[enclisis]] : The phonetic joining of a word with the preceding word. In modern Greek this may result in an extra stress on the first word, thus: ::: {{l|el|το όνομα μου είναι|"το όνο<u>μα</u> μου είναι"}} ''becomes'' {{l|el|το όνομά μου είναι|"το όνο<u>μά</u> μου είναι"}} ; {{anchor|endonym}}{{anchor|autonym}}[[endonym]] : A name used by a group or category of people to refer to themselves or their language (contrast [[#exonym|exonym]]). Also called [[autonym]] or [[selfname]]. ; {{anchor|endocentric}}[[endocentric]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which one part modifies the other, where the modified compound refer to the intended meaning of the compound as a whole. Examples in English are "[[blackboard]]" (a type of [[board]]), "[[houseboat]]" (a type of [[boat]]), "[[rainbow]]" (a type of [[bow]]) and "[[footstool]]" (a type of stool). Endocentric compounds are categorized into two subtypes, [[#descriptive|descriptive]] compounds (where the modifier also refers to the intended meaning of the compound as a whole, as in [[blackboard]] and [[houseboat]]) and [[#determinative|determinative]] compounds (where the modifier does not refer to the intended meaning of the compound as a whole, as in [[rainbow]] and [[footstool]]). For example, a [[houseboat]] is a type of [[house]] as well as a type of [[boat]], and a [[blackboard]] is (usually) [[black]]. However, a [[rainbow]] is not a type of [[rain]] (rather it is a [[bow]] that is caused ''by'' the rain), and similarly a [[footstool]] is not a type of [[foot]] (it is a stool intended ''for'' the feet). Endocentric compounds are contrasted with [[#exocentric|exocentric]] and [[#coordinative|coordinative]] compounds. ; {{anchor|enPR}}enPR : Wiktionary's [[Wiktionary:English Phonemic Representation|English Phonemic Representation]] system. Details in the [[Appendix:English pronunciation|English pronunciation key]]. ; {{anchor|epenthesis}}{{anchor|epenthetic}}[[epenthesis]] : The insertion of a [[#phoneme|phoneme]], letter, or [[#syllable|syllable]] into a word, usually to satisfy the phonological constraints of a language or poetic context. In careful use epenthesis only refers to insertions in the middle of a word: cf. [[#prothesis|prothesis]], [[#paragoge|paragoge]]. ; {{anchor|epicene}}[[epicene]] : Having a single form for both male and female referents. ; {{anchor|eponym}}[[eponym]] : A word formed from a real or fictive person’s name. Compare [[#toponym|toponym]], a word derived from a place name. ; {{anchor|eponymous}}[[eponymous]] : Using its own name as a title for a work of art. ; {{anchor|equative}}[[equative]] : A construction showing an equal quality; for example, the equative of {{m|en|happy}} is {{m|en||as happy as}}. In some languages, such as Welsh and Old Irish, the equative is a distinct form of the adjective. ; {{anchor|ergative case}}[[ergative case]] : A [[#case|case]] used in some languages, which marks the [[#subject|subject]] of a [[#transitive verb|transitive verb]], but not the subject of an [[#intransitive verb|intransitive verb]]. ; {{anchor|ergative}}{{anchor|ergative verb}}[[ergative verb]] : A verb that can be transitive or intransitive, where the intransitive [[#subject|subject]] is the [[patient#Noun|patient]], the same role as the transitive object. Essentially, an ergative is an intransitive verb that is its own [[#causative|causative]] when used transitively. For example, {{m|en|break}} is an ergative verb. The same thing happens to the window in "The window broke" (subject) as in "I broke the window" ([[#direct object|direct object]]), but in the second example there is also an [[#agent|agent]] which causes the window to break. ; {{anchor|etymology}}[[etymology]] : An account of the origin and historical development of a word. ; {{anchor|etymon}}[[etymon]] : The source word of a given word. ; {{anchor|euphemism}}[[euphemism]] : A term that is less vulgar or less offensive than the one it replaces. Contrast ''[[#dysphemism|dysphemism]]''. ; {{anchor|excessive spelling}}excessive spelling : In languages with [[mater lectionis|matres lectionis]] ([[#consonant|consonant]] letters representing [[#vowel|vowels]]) a form including one or more additional ones. For example in Hebrew {{m|he|אדום||red}} of {{m|he|אָדֹם}}, an added {{m|he||ו|vav}} indicating {{IPAchar|/o/}}. ; {{anchor|excrescent}}[[excrescent]] : A sound in a word without [[#etymology|etymological]] reason, added for articulatory purposes. ; {{anchor|exocentric}}[[exocentric]] [[compound]] : A [[#nominal|nominal]] [[#compound|compound]] in which the first part modifies the second and neither part alone conveys the intended meaning. Examples in English are "[[barefoot]]" (i.e. "having bare feet"; neither component refers to a person) and "[[houndstooth]]" (i.e. "resembling a hound's tooth"; neither component refers to fabric). Also known as a ''[[#bahuvrihi|bahuvrihi]] [[#compound|compound]]''. Contrast [[#endocentric|endocentric]] (with its subtypes [[#determinative|determinative]] and [[#descriptive|descriptive]]) and [[#coordinative|coordinative]]. ; {{anchor|exonym}}[[exonym]] : A name for a place, people or language used by foreigners instead of the native-language version (the [[#endonym|endonym]]). ; {{anchor|expletive}}[[expletive]] : A [[#vulgar|vulgar]] term, an [[#intensifier|intensifier]], or a word without meaning added to fill a syntactic position. ; {{anchor|eye dialect}}{{anchor|eye spelling}}[[eye dialect]] {{nobold|{{wikipedia|eye dialect}}}} : A deliberate misspelling used in writing to indicate the speech of a poorly educated character; the spelling represents how they would spell the words if they were asked to write them down. As such, it is the functional opposite of [[#pronunciation spelling|pronunciation spelling]]. ==F== ; {{g|f}} : ''See '''{{glossary|feminine}}'''.'' ; {{anchor|factitive}}{{anchor|factitive verb}}[[factitive]] verb : A transitive verb that is derived from an adjective or noun, and expresses the act of making someone/something have the properties (or have more of the properties) of the base adjective or noun. Examples in English are: {{m|en|shorten}} (make {{m|en|shorter}}), {{m|en|strengthen}} (make {{m|en|stronger}}) and {{m|en|enslave}} (make a {{m|en|slave}}). Compare '''[[#causative|causative verb]]s''', which are similar but are derived from other verbs. ; {{anchor|false cognate}}[[false cognate]] : A word in a language that bears a phonetic and semantic resemblance to a word in another or the same language but is not etymologically related to it and thus not a true [[#cognate|cognate]]. Examples include {{cog|en|day}}/{{cog|pt|dia}}, {{cog|de|Feuer}}/{{cog|fr|feu}} (both meaning "fire"), {{cog|ms|dua}}/{{cog|sa|द्व}} (both meaning "two"), and {{cog|en|dog}}/{{cog|vmb|dog}}. ; {{anchor|false friend}}[[false friend]] : A word in a language that bears a phonetic resemblance to a word in another language, often because of a common etymology, but has a different meaning. Examples include {{cog|en|parent}}/{{cog|pt|parente||relative}} and {{cog|en|embarrassed}}/{{cog|es|embarazada||pregnant}}. ; {{anchor|familiar}}[[familiar]] : Describes a context where those conversing, through speech or written word, are well acquainted with one another and in casual situations often use more '''[[#informal|informal]]''' or '''[[#colloquial|colloquial]]''' terms to communicate. ; {{anchor|f}}{{anchor|feminine}}[[feminine]], {{g|f}} : "Feminine"; said of a word belonging to the feminine [[#gender|gender]], which is usually contrasted with the [[#masculine|masculine]] gender, and also often with a [[#neuter|neuter]] gender. ; {{anchor|figurative}}[[figurative]] : Not [[#literally|literal]]. Of [[figure of speech|figures of speech]], words or expressions used as [[#metaphorical|metaphors]] or [[#simile|similes]], e.g. saying that a greedy person is a pig or is like a pig, or as [[#metonym|metonyms]], e.g. using 'crown' to refer to the monarchy. ; {{anchor|උත්තම පුරුෂ}}[[උත්තම පුරුෂ]] : පහත දැක්වෙන [[#first person]] කොටස බලන්න. ; {{anchor|first person}}{{anchor|first-person}}[[first person]], {{anchor|1st person}}[[1st person]] : A [[#person|grammatical person]] that indicates the speaker him/her/itself, or a group to which the speaker belongs. Examples are the English pronouns {{m|en|I}} and {{m|en|we}}. ; {{anchor|fl.}}[[fl.]] : "[[floruit|Floruit]]" (Latin for "he/she flourished"). Used when the exact dates of a person's birth and death are unknown to denote a date or period during which the person was known to have been alive or active. ; {{anchor|focus}}[[focus]] : An adverb that indicates focus within the sentence. ; {{anchor|folk etymology}}{{anchor|folk etymologies}}{{anchor|folk etymological}}[[folk etymology]] {{nobold|{{wikipedia|folk etymology}}}} : A misunderstanding of the [[#etymology|etymology]] of a word; a false [[#etymology|etymology]] that incorrectly explains the origin of a word. ; {{anchor|formal}}[[formal]] : Describes word choice and [[syntax]] which is mainly appropriate in formal contexts, such as in official or legal documents, essays, and sometimes when talking with one's superiors or elders. '''[[#informal|Informal]]''' terms, frequently those that originate through casual speech ('''[[#colloquial|colloquial]]'''), are often inappropriate in formal contexts. See also ''[[#higher register|higher register]]''. ; {{anchor|fossil word}}{{anchor|fossil}}{{anchor|fossilised}}{{anchor|fossilized}}[[fossil word]] : A word that is broadly [[#obsolete|obsolete]] but remains in currency because it is contained within an [[#idiom|idiom]] that is still in use. ; {{anchor|fpl}}''fpl'' : "[[#feminine|Feminine]] [[#plural|plural]]"; of feminine gender and plural number. ; {{anchor|frequentative}}[[frequentative]] : Expressing [[repetition]] of an action. ; {{anchor|fricative}}[[fricative]] : A [[#consonant|consonant]] sound produced by air flowing through a constriction in the mouth, and typically producing a sibilant, hissing, buzzing or otherwise "rough" quality. In English, there are fricatives that are [[#voiceless|voiceless]] {{IPAchar|/f/}}, {{IPAchar|/s/}}, {{IPAchar|/ʃ/}}, {{IPAchar|/θ/}} (as in the final sounds of ''buff'', ''bus'', ''bash'' and ''bath''), and there are corresponding [[#voiced|voiced]] sounds {{IPAchar|/v/}}, {{IPAchar|/z/}}, {{IPAchar|/ʒ/}}, {{IPAchar|/ð/}} (as in the final sounds of ''above'', ''buzz'', ''beige'' and ''bathe''). Fricatives are distinguished from [[#plosive|plosive]]s, in which the air is blocked completely for a short period of time, and [[#approximant|approximant]]s, in which the air is not constricted enough to cause the characteristic rough sound of a fricative. ; {{anchor|front vowel}}[[front vowel]] : A [[#vowel|vowel]] produced in the front of the mouth. In English, the front vowels are {{IPAchar|/æ/}}, {{IPAchar|/ɛ/}}, {{IPAchar|/eɪ/}}, {{IPAchar|/ɪ/}}, {{IPAchar|/i/}} (as in the vowels of ''bat'', ''bet'', ''bait'', ''bit'', and ''beat'' respectively). Contrasts to a [[#back vowel|back vowel]]. ; {{anchor|future perfect}}[[future perfect]] : A [[#tense|tense]] that expresses action completed at some time in the future; in English it is formed by use of ''will have'' (or ''shall have'') and a [[#past|past]] [[#participle|participle]]. ; {{anchor|future}}{{anchor|future tense}}[[future tense]] : The [[#tense|tense]] of a [[#verb|verb]] used to refer to an event, transaction or occurrence that has not yet happened, is expected to happen in the future, or might never happen. An English example is {{m|en|will}} {{m|en|go}} in ''I will go home tomorrow''. ==G== ; {{anchor|gemination}}[[gemination]] : A phenomenon when a [[#consonant|consonant]] is pronounced for an audibly longer period of time than is done normally. ; {{anchor|ලිංග භේදය}}[[ලිංග භේදය]] : පහත [[#gender]] වෙත යොමු වන්න. ; {{anchor|gender}}[[gender]] : A way of classifying [[#noun|nouns]] in some languages. In such languages, each noun has a specific gender (often determined by its meaning and/or form), and other words (especially [[#adjective|adjectives]] and [[#pronouns|pronouns]]) will often change form to agree with the noun's gender. See also [[#noun class|noun class]]. ; {{anchor|gender neutral}}{{anchor|gender-neutral}}[[gender-neutral]] : Of language constructs, not indicating or restricted by gender, and thus applicable to those of any gender and to those of no gender. ; {{anchor|genericized trademark}}[[genericized trademark]] : A successful brand name or trademark that has come to refer to the generic class of objects rather than the specific brand type. ; {{anchor|සබඳ විබත්}} {{anchor|genitive}}{{anchor|genitive case}}[[සබඳ විබත්]] ([[genitive case]]) : A [[#case|case]] that expresses possession or relation, equivalent to the English {{m|en|of}}. ; {{anchor|gerund}}[[gerund]] : Any of various non-finite [[#verb|verb]] forms in various languages. In English, a "gerund" is a verb in its ''[[-ing]]'' form when used in a way that resembles the use of a [[#noun|noun]]. In other languages it often functions as an [[#adverb|adverb]] to form [[#adverbial|adverbial]] phrases or the continuous tense. ; {{anchor|ghost word}}[[ghost word]] : A [[fictitious]] or [[erroneous]] word, originally meaningless (not used in practice), that has been published in a dictionary or similarly authoritative reference work or otherwise listed as genuine, generally as the result of misinterpretation, misreading, or typographical error. ; grammatical number : ''See '''{{glossary|number}}'''.'' ; grammatical person : ''See '''{{glossary|person}}'''.'' ; {{anchor|grave}}{{anchor|grave accent}}[[grave accent]] : A [[#diacritic|diacritic]] mark ( ` ) used in many languages to distinguish the pronunciations of [[#vowel|vowels]]. ==H== ; {{anchor|habitual}}[[habitual]] : A verbal [[#aspect|aspect]] specifying an action as occurring habitually: the subject performs the action usually, ordinarily, or customarily. Also called '''[[consuetudinal]]'''. ; {{anchor|hapax legomenon}}[[hapax legomenon]], {{anchor|hapax}}[[hapax]] : In [[corpus linguistics]], a word that occurs only once within a given corpus, either in the written record of an entire language, in the works of an author, or in a single text. ; {{anchor|haplology}}{{anchor|haplological}}[[haplology]] : The [[#elision|elision]] or [[#deletion|deletion]] of a part of a word (a sequence of [[#phoneme|phonemes]], or a series of letters) that is repeated (either exactly or with slight change). An example of haplological pronunciation is the UK English pronunciation of {{m|en|library}} as if spelled {{m|en||libry}}, where the sequence of [[#phoneme|phonemes]] {{IPAchar|/ɹəɹ/}} is shortened to {{IPAchar|/ɹ/}}. An example of haplology relating to spelling is {{m|en|symbology}}, from {{affix|en|symbol|-ology}}, where the sequence ''olol'' is shortened to ''ol''. Contrast with [[#reduplication|reduplication]], the repetition of a part of a word. ; {{anchor|hedge}}{{ll|en|hedge|id=pragmatics}} : In [[pragmatics]], a term (word, phrase, or clause) used to lessen the force of an utterance: for instance, to avoid giving insult or bragging about one's knowledge. ; {{anchor|higher register}}[[higher]] [[#register|register]] : Belonging to the higher linguistic [[#register|register]], meaning that it might be used when the speaker wishes to sound refined or educated, in [[#formal|formal]] situations, or when writing. Such terms are usually less common or known and are not used in everyday speech. See also ''[[#literary|literary]]'' which is a sub-category. ; {{anchor|historical}}[[historical]] : Describing an ''object'' or ''concept'' which is no longer extant or current; for example, {{m|en|Czechoslovakia}}, {{m|en|stomacher}}, or {{m|en|phlogiston}}. Distinguish: a ''historical'' term is still in use but refers to a thing which no longer exists; an ''[[#obsolete|obsolete]]'' term is no longer in use, while the thing it once referred to may or may not exist. Whereas an [[#archaic|archaic]] term names a still-extant thing or non-outdated concept, a historical term names a former thing or outdated concept. ; {{anchor|holonym}}[[holonym]] : A term describing something that is formed by other smaller, somehow combined or related things. For example, ''[[tree]]'' is a holonym of ''[[leaf]]''; ''[[body]]'' is a holonym of ''[[arm]]''; ''[[Canada]]'' is a holonym of ''[[British Columbia]]'' etc. The opposite of holonym, which describes things that are ''part'' of a whole, is called ''[[#meronym|meronym]]''. ; {{anchor|homograph}}[[homograph]] : A word that is spelled the same as another word, usually having a different [[#etymology|etymology]]. ; {{anchor|homophone}}[[homophone]] : A word which is pronounced the same as another word but differs in spelling, meaning or origin. ; {{anchor|hot word}}[[hot]] word : A newly coined term, or newly adopted sense of an existing term, that has become very popular in a short time. It is kept provisionally as it is likely to remain in usage, even though it fails the "spanning at least one year" requirement of the [[WT:CFI|Criteria For Inclusion]] on Wiktionary. ; {{anchor|humorous}}[[humorous]] : A word which is considered inherently [[jocular]] in some way. ; {{anchor|hyperbole}}{{anchor|hyperbolic}}[[hyperbole]] : Deliberate or unintentional overstatement, particularly if extreme. ; {{anchor|hypercorrect}}{{anchor|hypercorrection}}[[hypercorrect]] : Incorrect because of the misapplication of a standard rule; for example, {{m|en|octopi}} used as the plural form of {{m|en|octopus}} is hypercorrect because {{m|en|-us}} → {{m|en|-i}} is the rule for forming plurals of [[Appendix:Latin second declension#Masculine|originally-masculine nouns of the Latin second declension]], whereas {{m|en||octopus}} actually derives from Ancient Greek and has the plural form {{m|en|octopodes}} consistent with its etymology. ; {{anchor|hyperforeign}}{{anchor|hyperforeignism}}[[hyperforeign]] : Incorrectly applying foreign reading rules, such as in pronouncing the "j" in [[Taj Mahal]] or [[Beijing]] as {{IPAchar|[ʒ]}} rather than {{IPAchar|[dʒ]}}, or dropping the {{IPAchar|[t]}} in [[claret]]. ; {{anchor|hypernym}}[[hypernym]] or [[hyperonym]] : A term indicating a [[category]] another term is part of, informally called “blanket” or “umbrella” term. For example, ''[[animal]]'' is a hypernym of ''[[bird]]'', which is in turn a hypernym of ''[[eagle]]''. The opposite of hypernym, which indicates terms pertaining to a category, is ''[[#hyponym|hyponym]]''. ; {{anchor|hyperthesis}}{{anchor|hyperthetic}}[[hyperthesis]] : A form of [[#metathesis|metathesis]] in which non-contiguous sounds are switched. ; {{anchor|hyphenation}}[[hyphenation]] : The splitting of a word across a line boundary, with a hyphen at the end of the first part. For example, the hyphenation of {{m|en|hyphenation}} is given as "hy‧phen‧ation" meaning that it is split across a line break as ''hy-phenation'' or as ''hyphen-ation''. ; {{anchor|hyponym}}[[hyponym]] : A more specific term within a category described by another term, indicating a “type-of” relationship. For instance, ''[[alternative rock]]'' is a hyponym of ''[[rock]]'', which in turn is a hyponym of ''[[music]]''. The opposite of hyponym, which describes larger categories, is [[#hypernym|hypernym]]. ==I== ; {{anchor|ideophone}}{{anchor|ideophonic}}[[ideophone]] : A word that evokes an idea in sound, often a vivid impression of certain sensations or sensory perceptions, e.g. sound, movement, color, shape, or action. They may be more common in East Asian languages. In Chinese lexicography, such sense is usually described as {{lang|zh|……[[的]][[樣子]]}} or {{lang|zh|……[[貌]]}}, i.e. “the appearance of ...”. The attributive form is {{l|en|ideophonic}}. ; {{anchor|idiom}}[[idiom]] : A phrase whose meaning is unapparent or unobvious from the individual words that make it up, such as {{m|en|beat around the bush||avoid an uncomfortable topic}}, {{m|en|come a cropper||suffer misfortune}}, or {{m|en|pay through the nose||pay an unusually large amount}}. Idioms are often, but not always ''[[#set phrase|set phrases]]'', and are usually distinct from ''[[#proverb|proverbs]]''. ; {{anchor|idiomatic}}[[idiomatic]] : Pertaining or conforming to the mode of expression characteristic of a language. Idioms, [[collocation]]s{{,}} and [[modal verb]]s are examples of idiomatic language. ; {{anchor|imitative}}{{anchor|Imitative}}[[imitative]] : [[imitate|Imitating]] or [[represent]]ing the [[sound#Noun|sound]] of something. ; {{anchor|imparisyllabic}}[[imparisyllabic]] : A word with one or more inflections with more syllables than the lemma form. For example: the Greek {{m|el|μπακάλης|t=grocer}} and {{m|el|μπακάληδες|t=grocers}} and the Latin {{m|la|mens|t=mind}} and {{m|la|mentis|t=minds}} ([[cf.]] [[#parisyllabic|parisyllabic]]). ; {{anchor|imperfect}}[[imperfect]] : The [[#imperfective past|imperfective past]] tense of a verb, indicating that the action described happened repeatedly, habitually or continuously. ; {{anchor|විධි ක්‍රියා}}[[විධි ක්‍රියා]] : අණ කිරීමක් හෝ නියෝගයක් හඟවන [[#ක්‍රියා පද|ක්‍රියා පද]]. සිංහල උදාහරණයක් ලෙස ''යන්න!'' දැක්විය හැකිය. ; {{anchor|imperative}}{{anchor|imperative mood}}[[imperative mood]] : The [[#mood|mood]] of a [[#verb|verb]] expressing an order or command. An English example is the command ''go!'' ; {{anchor|imperfective}}{{anchor|imperfective aspect}}[[imperfective]] : An [[#aspect|aspect]] of the [[verb]] which denotes an action or condition that does not have a fixed temporal boundary, but is [[habitual]], [[unfinished]], [[continuous]], [[repetitive]] or [[in progress]]. Common in {{w|Slavic languages}} such as {{cog|ru|-}}. Contrast ''[[#perfective|perfective]].'' (''see'' {{pedia|Imperfective aspect}}) ; {{anchor|imperfective past}}imperfective past : A verb form of [[#imperfective|imperfective]] [[#aspect|aspect]] and [[#past|past]] [[#tense|tense]], which is used to describe an action or event which was happening habitually, continuously or repeatedly in the past, as in “Tom was painting the fence” or “Tom used to paint the fence.” ; {{anchor|impersonal}}[[impersonal]] : A lack of [[#person|grammatical person]] altogether, or an indefinite/undefined person. An example is the English pronoun {{m|en|one}}. See also [[#impersonal verb|impersonal verb]]s. ; {{anchor|impersonal verb}}[[impersonal]] verb : A verb that cannot take a [[#subject|subject]], or takes a third-person neuter subject pronoun (e.g. {{m|en|it}}) without an [[antecedent]]. The term {{m|en|weather verb}} is also sometimes used in some texts, since such verbs of weather (e.g. {{m|en|rain}}) are impersonal in many languages. Many verbs that are personal and [[#active|active]] in English are expressed in other languages using impersonal constructions. An example is the English sentence "I must do it", expressed in {{cog|fr|-}} using the impersonal verb {{m|fr|falloir||to be [[necessary]]}}, as in {{m|fr|[[il]] [[falloir|faut]] [[que]] [[je]] [[il|le]] [[faire|fasse]]|lit='''It is necessary''' that I do it}}. ; {{anchor|inanimate}}[[inanimate]] : Having a [[referent]] that does not include a human or animal. Many languages (such as the {{w|Slavic languages}}) classify nouns based on animacy, using different [[#inflection|inflections]] or words with animate and inanimate nouns. For verbs, this indicates that they are usually applied only to inanimate objects or concepts, and rarely used in the first or second persons. ; {{anchor|indeclinable}}[[indeclinable]], {{anchor|undeclinable}}[[undeclinable]], {{anchor|invariable}}[[invariable]] or {{anchor|invariant}}[[invariant]] : In languages with [[#inflection|inflection]], lacking distinct inflected forms when they would be expected to exist. Indeclinable words have the same form in all cases. For example, the English noun {{m|en|sheep}} is invariable because its plural is also {{m|en|sheep}}. [[#acronym|Acronyms]] and [[#loanword|loanword]]s are often indeclinable in many languages. Poorly-attested words from ancient languages are sometimes denoted "indeclinable" when they can't be assigned to a declension class with certainty. ; {{anchor|indefinite}}[[indefinite]] : Refers to forms of words that present something as not yet identified or not immediately identifiable; in English, this is the basic meaning of the [[article]] ''[[a]]''; in some languages, this is a nominal or adjectival [[#inflection|inflection]]. In the Germanic languages, adjectives inflected as indefinite are referred to as "strong". In Hungarian, the indefinite conjugation indicates [[#intransitive verb|no object]] or [[:w:Hungarian verbs#Definite and indefinite conjugations|indefinite objects]], including ''me, us,'' and the informal ''you.'' ; {{anchor|independent clause}}[[independent clause]] : A [[#clause|clause]] that can stand on its own as a complete [[#sentence|sentence]], as opposed to a [[#dependent clause|dependent clause]]. ; {{anchor|indeterminate verb}}{{anchor|indeterminate}}[[indeterminate verb]] : In the {{w|Slavic languages}}, another term for ''[[#abstract verb|abstract verb]]''. ; {{anchor|indicative}}{{anchor|indicative mood}}[[indicative mood]] : The [[#mood|mood]] of a [[#verb|verb]] used in ordinary factual or objective statements. ; {{anchor|indirect object}}[[indirect object]] : A grammatical role of a [[#ditransitive verb|ditransitive verb]] that usually manifests as a recipient or goal. In some languages indirect objects are marked with the [[#dative case|dative case]]. : → [[#direct object|direct object]] ; {{anchor|infix}}[[infix]] : A [[morpheme]] or [[affix]] inserted inside a word. ; {{anchor|infinitive}}[[infinitive]] : A non-[[finite]] verb form considered [[neutral]] with respect to [[#inflection|inflection]]; depending on language variously found used with [[auxiliary verb]]s, in [[subordinate clause]]s, or acting as a [[#gerund|gerund]], and often as the [[dictionary form]]. In English, the infinitive is formed with the word ''[[to]]'', e.g. ''to [[read]]''. ; {{anchor|inflected}}{{anchor|inflection}}{{anchor|inflectional}}[[inflection]] : The change in form of a word to represent various grammatical categories, such as [[#tense|tense]] (e.g. past tense, present tense, future tense) or [[#number|number]] (e.g. singular, plural). For example, the verb {{m|en|run}} may be inflected to produce {{m|en|runs}}, {{m|en|ran}}, and {{m|en|running}}. In highly inflected languages, such as Latin, there will be many more forms. Two major types of inflection are [[#conjugation|conjugation]] (inflection of [[#verb|verbs]]) and [[#declension|declension]] (inflection of [[#noun|nouns]], [[#adjective|adjectives]], and [[#pronoun|pronouns]]). ; {{anchor|informal}}[[informal]] : Denotes spoken or written words that are used primarily in a [[#familiar|familiar]] or casual context. Do not confuse with ''[[#slang|slang]]'' or ''[[#nonstandard|nonstandard]]''. See also ''[[#colloquial|colloquial]]''. ; {{anchor|inherited}}[[inherit]]ed : Denotes words which etymologically are not [[Appendix:Glossary#loanword|borrowings]] but derive through regular or sporadic [[#sound change|sound change]], without additional affixation, from a corresponding term in the language that is its direct historical ancestor. For example, English {{m|en|fairy}} is ''inherited'' from Middle English {{m|enm|fairye}}. ; {{anchor|initialism}}[[initialism]] : An [[#abbreviation|abbreviation]] that is formed from the initial letters of a sequence of words. Initialisms that are pronounced as words, such as {{m|en|UNICEF}}, are usually called {{m|en||[[#acronym|acronyms]]}}, so the term {{m|en||initialism}} is generally only used for those that are pronounced letter by letter, such as {{m|en|U.S.}} ; {{anchor|inline reference}}inline reference : A reference whose point of application is indicated in the text. ; {{anchor|කරණ විබත්}}{{anchor|instrumental case}}{{anchor|instrumental}}{{anchor|ins}}[[කරණ විබත්]] ([[instrumental case]]), ins. : A [[#case|case]] used to express means or agency—and is generally indicated in English by "by" or "with" with the objective. ; {{anchor|intensifier}}{{anchor|intensifying}}[[intensifier]] : A [[#word|word]] or [[#particle|particle]] that heightens the intensity of meaning of a term. ; {{anchor|interjection}}[[interjection]] : An expression of emotion ("ouch!", "wow!") or any of several kinds of expression that functions as a replacement of a sentence ([[prosentence]]) or that are not syntactically connected to a sentence, including curses ("damn!"), greetings ("hey", "bye"), response particles ("okay", "oh!", "m-hm", "huh?"), and hesitation markers ("uh", "er", "um"), and perhaps profanities, discourse markers and fillers. ; {{anchor|internationalism}}[[internationalism]] : A loanword that occurs in several languages with the same or similar meaning and etymology, due to the occurrence of several simultaneous borrowings and/or a chain of successive borrowings happening in quick succession. This commonly results in the exact etymological lineage of a term being difficult or impossible to trace for a given language. For example ''bus, doctor, hotel, internet, taxi,'' or ''television.''<!-- find better, more or fewer examples, if you like: https://en.wikipedia.org/wiki/Internationalism_(linguistics)#Examples --> ; {{anchor|අකර්මක}} {{anchor|අකර්මක ක්‍රියා පද}} {{anchor|intransitive verb}}{{anchor|intransitive}}[[අකර්මක ක්‍රියා පද]] ([[intransitive verb]]) : Of a [[#verb|verb]]: not taking a [[#direct object|direct object]]; not [[#transitive|transitive]]. For example, the verb {{m|en|listen}} does not usually take a direct object; it is grammatically incorrect to say "I listened the concert" (instead of the correct "I listened to the concert" with the [[#indirect object|indirect object]] "to the concert"). : Of an adposition (such as a [[#preposition|preposition]]), or of an [[#adverb|adverb]]: not having a [[#nominal|nominal]] complement. For example, using the following prepositions or adverbs without a complement (here in parentheses): {{m|en|down}} (the stairs), {{m|en|under}} (the bridge), {{m|en|inside}} (the building), {{m|en|aboard}} (the ship), {{m|en|underneath}} (the table), {{m|en|here}}, {{m|en|there}}, {{m|en|abroad}}, {{m|en|downtown}}, {{m|en|afterwards}}, … ; {{anchor|invariable}}[[invariable]] : ''See '''{{glossary|indeclinable}}'''.'' ; {{anchor|invariant}}[[invariant]] : ''See '''{{glossary|indeclinable}}'''.'' ; {{anchor|iotation}}[[iotation]] : A specific occurrence of [[#palatalization|palatalization]] that occurred in the {{w|Proto-Slavic language}}, in which a [[#consonant|consonant]] combined with the palatal approximant {{IPAchar|/j/}} to form a palatalized [[#consonant|consonant]]. Also, any similar process occurring in a later {{w|Slavic languages|Slavic language}} or elsewhere. For example, under certain circumstances in {{w|Russian language|Russian}}, underlying ''s; z; t; d; k; g'' are iotated to ''š; ž; č or šč; ž; č; ž'' respectively (pronounced {{IPAchar|/ʂ/}}; {{IPAchar|/ʐ/}}; {{IPAchar|/t͡ɕ/}} or {{IPAchar|/ɕː/}}; {{IPAchar|/ʐ/}}; {{IPAchar|/t͡ɕ/}}; {{IPAchar|/ʐ/}} respectively). (See ''[[Appendix:Russian verbs#Slavic iotation]]'' for the full iotation rules in {{w|Russian language|Russian}}; other {{w|Slavic languages}} behave similarly.) ; {{anchor|IPA}}[[IPA]] : The [[w:International Phonetic Alphabet|International Phonetic Alphabet]]; a standardized system for transcribing the sounds in any spoken language. ; {{anchor|ʾiʿrāb}} [[ʾiʿrāb]] : Also called [[desinential inflection]]; in Arabic: {{m|ar|إِعْرَابٌ||tr=ʾiʿrāb, ʾiʿrābun}}. A number of [[#inflection|inflectional]] endings, applied to Arabic nouns, adjectives, and verbs, which—with minor exceptions—do not appear in writing, and moreover are not pronounced in [[pausa]], i.e. at the end of a sentence or before a pause. Nevertheless, these endings are a regular and required element of Qur'ānic and Classical Arabic. In Modern Standard Arabic, however, they are rather often avoided due to dialectal influence. In nouns and adjectives, the ʾiʿrāb primarily has the function of marking the cases ([[#nominative|nominative]], [[#genitive|genitive]], [[#accusative|accusative]]), while in verbs it marks the moods ([[#indicative|indicative]], [[#subjunctive|subjunctive]], [[#jussive|jussive]]). All of these are only occasionally distinguishable without application of the ʾiʿrāb. See {{w|ʾIʿrab}} on Wikipedia. ; {{anchor|irregular}}[[irregular]] : Not following the usual rules of [[#inflection|inflection]]; for example, the plural of English {{m|en|man}} is {{m|en|men}}, which is irregular; the regularly formed plural would have been *''mans''. ; {{anchor|iterative}}[[iterative]] : Expressive of an action that is repeated with frequency. ==J== ; {{anchor|jussive}}{{anchor|jussive mood}}[[jussive|jussive mood]] : In certain languages (e.g. Hebrew, Arabic and Esperanto), a [[#mood|mood]] of a [[#verb|verb]] used to indicate a command, permission or agreement with a request (distinct from the [[#imperative mood|imperative]]). ==K== ; {{anchor|karmadharaya}}[[karmadharaya]] : Another term for a ''[[#descriptive|descriptive]] compound''. Contrast [[#bahuvrihi|bahuvrihi]], [[#tatpurusa|tatpurusa]] and [[#dvandva|dvandva]]. ; {{anchor|Katharevousa}}[[Katharevousa]] : The [[classical language|classically]] based artificial ([[w:standard language|standardized]]) Greek language created at the start of Greece's independence from the [[w:Ottoman Empire|Ottoman Empire]]. It was used for all formal and official purposes until 1976.<br>(Note: In Wiktionary, Katharevousa terms are entered under (modern) [[:Category:Greek language|Greek]].) (See also {{pedia|Katharevousa}}) ; {{anchor|Kulturwort}}{{anchor|culture word}}[[Kulturwort]] : A type of {{glossary|Wanderwort}} which is specific to a particular culture or which is spread by an influential cross-cultural phenomenon. Kulturworts (or ''Kulturwörter'') are often names of products distributed by trade and religious or ideological terms. ==L== ; {{anchor|learned borrowing}}[[learned borrowing]] : A [[#loanword|loanword]] that was borrowed from a [[classical language]] such as Latin, Ancient Greek or Sanskrit, and which has not undergone significant reshaping due to [[#sound change|sound change]] or analogy with inherited terms. Opposed to [[#semi-learned borrowing|semi-learned borrowings]], which have been significantly reshaped, and [[#inherited|inherited]] terms, which have undergone all the normal sound changes of a language. For example, the Portuguese term {{m|pt|artículo||[[articulus]]}} is a learned borrowing from {{cog|la|articulus||joint, limb, division}}. The term {{m|pt|artigo||article}} is a semi-learned borrowing from the same term, which was borrowed early enough to undergo later sound changes that [[lenite]]d ''c'' into ''g'' and deleted ''l'' between vowels; and the term {{m|pt|artelho||toe}} is inherited from the same Latin term. ; {{anchor|lemma}}[[lemma]] : The headword or citation form of an [[#inflection|inflected]] word, i.e. the form under which a word is found in a dictionary. For example, in English, nouns are usually listed under their singular form (''apple'', rather than ''apples''), and verbs under their infinitive form (''open'', rather than ''opens'', ''opened'' or ''opening''). Which form is used as the lemma varies from language to language. For verbs, for example, French, German, Spanish and many other European languages use the [[infinitive]], but Latin, Greek and Bulgarian use the [[first-person]] [[singular]] [[present]] [[indicative]], while Macedonian uses the [[third-person]] [[singular]] [[present]] [[indicative]], and Arabic and Hebrew use the [[masculine]] [[third-person]] [[singular]] [[past]] [[indicative]]. See also [[Wiktionary:Lemmas]]. ; {{anchor|letter case}}[[letter case]] : The distinction between [[majuscule]] ([[uppercase]]) and [[minuscule]] ([[lowercase]]) letters. ; {{anchor|lexeme}}[[lexeme]] : The abstract "word" underlying a set of inflections; for example, {{m|en||gives}} and {{m|en||given}} belong to the same lexeme, which is usually identified by its lemma form {{m|en|give}}. See also: (1) [[w:lexeme|Wikipedia's article on ''lexeme''s]], (2) [[Wiktionary:Languages with more than one grammatical gender]], (3) [[#C|conjugation]] and (4) [[#D|declension]]. ; {{anchor|liaison}} [[liaison]] : The phonological fusion of two consecutive words and the manner in which this occurs, for example intrusion, consonant-vowel linking, etc. ; {{anchor|ligature}} [[ligature]] : A character that visually combines multiple letters, such as {{m|mul|æ}}, {{m|mul|œ}}, {{m|mul|ß}} or {{m|mul|ij}}. ; {{anchor|linking verb}}[[linking verb]] : Another term for [[#copula|copula]]. ; {{anchor|literally}}[[literally]] : Exactly as stated; read or understood without additional interpretation; not [[#figurative|figurative]] or [[#metaphorical|metaphorical]]. ; {{anchor|literary}}[[literary]] : A [[#higher register|higher]] [[#register|register]] found mainly in literature. ; {{anchor|litotes}}[[litotes]] : (from {{cog|grc|-}} [[λιτότης]]) is a rhetorical figure involving ''[[understatement]]'' that consists of saying that something has ''less'' of one thing to mean ''more'' of the opposite. E.g.: ''he is not very clever'' instead of ''he is a stupid idiot'' ; ''she's not very pretty'' instead of ''she's ugly'', etc. Not to be confused with [[#euphemism|euphemism]] (although litotes can be used for the purpose of euphemism) or [[#meiosis|meiosis]], which is a similar figure of speech that also uses understatement. ; {{anchor|loanblend}} [[loanblend]] : A [[#partial calque|partial calque]]. ; {{anchor|loanword}}[[loanword]] (also {{anchor|loan}}[[loan]] or [[borrowing]]){{anchor|borrowed}}{{anchor|borrowing}} : A word that was adopted (borrowed) from another language, rather than formed within the language or inherited from a more ancient form of the same language. Loanwords may still be recognisably foreign (having non-native spelling or unusual pronunciation), or have become completely assimilated into the language (no longer perceived as foreign). For example, in English, {{m|en|schadenfreude}} is still recognisably German, while {{m|en|cellar}} is fully assimilated and no longer recognisably Latin (from {{m|la|cellārium}}). Sometimes a loanword can be both fully assimilated ''and'' still recognised as foreign, e.g. [[taco]], [[burrito]], etc. Compare [[#calque|loan translation]] ([[calque]]). ; {{anchor|අදර විබත්}}{{anchor|locative case}}{{anchor|locative}}{{anchor|loc}}[[අදර විබත්]] ([[locative case]]), loc. : "[[locative|Locative]]". A [[#case|case]] used to indicate place, or the place where, or wherein. It corresponds roughly to the English prepositions "in", "on", "at", and "by". Some languages use the same locative case construct to indicate when, so the English phrase "in summer" would use the locative case construct. ; {{anchor|locative-qualitative case}}{{anchor|locative-qualitative}}[[locative-qualitative case]] : Nouns in the form of the locative-qualitative case are qualifiers in the sentence and signify the locational or temporal mark of the qualified word. The qualifier is not specific but general or universalized. (See also ''[[Appendix:Uyghur nouns]]''.) ; {{anchor|loosely}}{{anchor|loose}}{{anchor|loosely speaking}}[[loosely]] : Indicates an imprecise use of words (wider, broader); short for ''loosely speaking''. Contrast ''strict'' or ''narrow'' sense; ''[[#strictly|strictly]]''. ==M== ; {{g|m}} : ''See '''{{glossary|masculine}}'''.'' ; m. pl. : ''See '''{{glossary|mpl}}'''.'' ; {{anchor|macron}}{{anchor|macron}}[[macron]] : A short, straight, horizontal [[#diacritic|diacritical]] mark ( ¯ ) placed over any of various letters, usually to indicate that the pronunciation of a [[#vowel|vowel]] is long. ; {{anchor|m}}{{anchor|masculine}}[[masculine]], {{g|m}} : Belonging to the male grammatical [[#gender|gender]], in languages that have gender distinctions. ; [[mass noun]] : ''See '''{{glossary|uncountable}}'''.'' ; {{anchor|measure word}}[[measure word]] : ''See '''{{glossary|counter}}'''.'' ; {{anchor|mediopassive}}[[mediopassive]] : In Ancient Greek, a category of [[#inflection|inflected]] form in certain [[#tense|tenses]] that contrasts with the [[#active voice|active voice]], and may have meanings characteristic of the [[#middle voice|middle voice]] and [[#passive voice|passive voice]].<!-- Middle-voice forms may also be used with a passive meaning, and passive-voice forms with a middle meaning, which complicates the picture. --> In other tenses, there is a three-way contrast between active-, middle-{{,}} and passive-voice forms. See also [[#middle voice|middle voice]]. ; {{anchor|meiosis}}[[meiosis]] : A form of ''[[understatement]]'' that consists of downplaying or diminishing the focal quality of a statement for contrastive, humorous or dramatic effect, sometimes deployed as part of a [[#higher register|higher register]]. E.g.: ''that was actually quite good'' instead of ''that was excellent'' ; ''he is somewhat displeased'' instead of ''he is furious'', etc. Not to be confused with [[#euphemism|euphemism]] (although meiosis can be used for the purpose of euphemism) or [[#litotes|litotes]], which is a similar figure of speech that also uses understatement. ; {{anchor|men's speech}}[[men]]'s [[speech]] : In certain languages (for example, {{w|Karajá language}}), men and women use or historically used distinct words and inflected forms. ; {{anchor|meronym}}[[meronym]] : A term that denotes a part of the whole that is denoted by another term. ''The word "arm" is a '''meronym''' of the word "body"''. The term which describes the ''whole'', as being an opposite of meronym, is ''[[#holonym|holonym]]''. ; {{anchor|metaphorical}}{{anchor|metaphor}}[[metaphorical]] : The use of a word or phrase as a [[metaphor]] to refer to something that it is not, invoking a direct similarity between the word or phrase used and the thing described. See also [[#simile|simile]] and [[#figurative|figurative]]. ; {{anchor|metanalysis}}[[metanalysis]] : See [[#rebracketing|rebracketing]]. ; {{anchor|metathesis}}{{anchor|metathetic}}{{anchor|metathesise}}{{anchor|metathesize}}{{anchor|metathesised}}{{anchor|metathesized}}[[metathesis]] : A [[#sound change|sound change]] in which two sounds or groups of sounds exchange position in a word. A form showing metathesis is described as {{m|en|metathetic}}. The sounds may be adjacent, as in {{m|en|ax}}, the metathetic form of the verb {{m|en|ask}}, or farther apart, as in {{noncog|es|palabra}} from {{noncog|la|parabola}}; there, the sound change is [[#hyperthesis|hyperthesis]]. ; {{anchor|metonym}}{{anchor|metonymic}}{{anchor|metonymical}}{{anchor|metonymically}}[[metonym]] : A word that names an object from a single characteristic of it or of a closely related object, e.g. 'crown' for the sovereign in a monarchy. ; {{anchor|middle voice}}{{anchor|middle-voice}}[[middle voice]] : The [[#voice|voice]] verb form in which the [[#subject|subject]] of a verb performs some action upon itself, it falls somewhere between the [[#active voice|active]] and [[#passive voice|passive]] voices. Found in a few languages (e.g. [[Sanskrit]], [[Ancient Greek]], [[Icelandic]]). (''see'' {{pedia|Voice (grammar)}}) ; {{anchor|minced oath}}[[minced oath]] : A euphemism based on a profanity that has been altered to reduce or remove the objectionable characteristics of the original expression. Examples in English include {{m|en|heck}} instead of {{m|en|hell}} and {{m|en|dang}} instead of {{m|en|damn}}. ; {{anchor|mixed}}{{anchor|mixed declension}}[[mixed]] : A type of declension in German that uses endings that are a combination of [[#strong declension|strong]] and [[#weak declension|weak]] endings. In adjectives, the mixed declension is used when accompanied by an indefinite article, or more generally by an {{m|de|ein}}-word (a determiner that has a null ending in the nominative masculine and neuter singular, similar to the indefinite article {{m|de|ein}}). The mixed declension uses strong endings precisely in those inflections where the indefinite article has a null ending, and weak endings otherwise. By analogy, nouns declined according to the mixed declension look like strong nouns in the singular (with genitive in ''-s'' and/or ''-es'') but weak nouns in the plural (with plural in ''-n'' and/or ''-en''). Most mixed nouns were once weak nouns that have transitioned to strong nouns in the singular but maintain the original weak plural ending. See [[:Category:German mixed nouns]] for a list of German mixed nouns. ; {{anchor|monolectic}}[[monolectic]] : Used of a grammatical form accomplished with one word ([[cf.]] [[#polylectic|polylectic]] and [[#periphrastic|periphrastic]]). ; {{anchor|monosyllable}}[[monosyllable]] : A word consisting of only one [[#syllable|syllable]]. ; {{anchor|mood}}[[grammatical mood|mood]] : One of the forms of a [[#verb|verb]], used to indicate the speaker's attitude toward what they are saying (e.g. a statement of fact, of desire, of command, etc.). Examples include [[#indicative mood|indicative]], [[#subjunctive mood|subjunctive]], [[#imperative mood|imperative]], [[#conditional mood|conditional]]. (''see'' {{pedia|Grammatical mood}}) ; {{anchor|mpl}}''mpl'', ''m.&nbsp;pl.'' : [[#masculine|Masculine]] [[#plural|plural]]. ; {{anchor|mute_h}}[[mute h]] : In French, an initial &lt;h&gt; that is treated like a [[#vowel|vowel]]; that is to say, [[liaison]] and [[elision]] are permitted at the beginning of words that have a mute h. ==N== ; {{g|n}} : ''See '''{{glossary|neuter}}'''.'' ; ''n'' : ''See '''{{glossary|noun}}'''.'' ; {{anchor|narrowly}}{{anchor|narrow}}[[narrowly]] : Indicates a more precise use of words; short for ''narrowly speaking''. For most practical purposes, synonymous with ''[[#strictly|strictly]]''<!--because the differentiable nuance whereby "strictly" can sometimes imply some degree of prescriptive deprecation, whereas "narrowly" less often and less strongly does so, is beyond-scope for this glossary; that is, for this glossary's purposes, "narrowly" and "strictly" are interchangeable in practice-->. Contrast ''[[#loose|loose]]'' (''broad'') senses. ; {{anchor|nasal infix}}nasal infix : The [[#infix|infix]] {{m|ine-pro||-né-}} or {{m|ine-pro||-n-}} in [[Proto-Indo-European]], one of the affixes marking the [[#imperfective|imperfective]] aspect. It appears in several of the [[:Category:Indo-European languages|Indo-European languages]]: for instance, Latin {{m|la|vincit|vi'''n'''cit|t=wins}}, {{m|la|vīcit|t=has won}}; Ancient Greek {{m|grc|λαμβάνω|λα'''μ'''βάνω|t=I take}}, {{m|grc|ἔλᾰβον|t=I took}}. ; {{anchor|negative polarity}}{{anchor|negative polarity_item}}{{anchor|negative_polarity}}{{anchor|negative_polarity_item}}negative polarity item : A term or construction that is generally found only in negative sentences, questions, conditionals, and certain other “negative polarity” contexts; for example, {{m|en|anyone}} is a negative polarity item, as one can say "I did not see anyone", "Did you see anyone?" and "If anyone wants this, speak up now", but not *"I saw anyone." Several expressions have similar properties, such as {{m|en|budge an inch}}: "I won't budge an inch" and "Will he even budge an inch?", but not normally *"He budged an inch in the negotiations." (''see'' {{pedia|Polarity item}}) ; {{anchor|negative_verb}}[[negative verb]] : An [[#auxiliary verb|auxiliary verb]] used to form negatives of verbs in some languages. See also ''[[#connegative|connegative]]''. ; {{anchor|neologism}}[[neologism]] : A newly coined term or meaning. See [[Wiktionary:Neologisms]]. ; {{anchor|n}}{{anchor|neuter}}[[neuter]], {{g|n}} : Of neuter [[#gender|gender]]: having a form which is not [[#masculine|masculine]] nor [[#feminine|feminine]]; or having a form which is not of [[#common gender|common gender]]. ; {{anchor|nominal}}[[nominal]] : Related to [[#noun|noun]]s. See also ''[[#denominal|denominal]]''. : As a noun, it refers to any [[#part of speech|part of speech]] that is noun-like in some way, and normally includes [[#noun|noun]]s themselves along with [[#adjective|adjective]]s, [[#pronoun|pronoun]]s and [[#determiner|determiner]]s. The [[#inflection|inflection]] of nominals is commonly called [[#declension|declension]]. ; {{anchor|පෙර}}{{anchor|පෙර විබත්}}{{anchor|nominative}}{{anchor|nominative case}}[[පෙර විබත්]] ([[nominative case]]) : A [[#case|case]] that is usually used as the [[#subject|subject]] of a [[#verb|verb]]. For example, if English had a fully [[#productive|productive]] case system, then (the) ''man'' in "The man threw the ball" would most likely be in the nominative case. ; {{anchor|nominalisation}}{{anchor|nominalization}}{{anchor|substantivisation}}{{anchor|substantivization}}[[nominalization]] or [[substantivization]] : The use of a word which is not a [[#noun|noun]] (e.g. a [[#verb|verb]] or [[#adjective|adjective]]) as a noun. ; {{anchor|nonce}}{{anchor|nonce word}}[[nonce word]] : A word invented for the occasion. ; {{anchor|nonfinite}}{{anchor|non-finite}}[[nonfinite]], [[non-finite]] : Of a verb – lacking grammatical [[#person|person]] and [[#number|number]] attributes; most nonfinite verbs found in English are [[#infinitive|infinitives]], [[#participle|participles]] and [[#gerund|gerunds]]. ; {{anchor|non-past}}{{anchor|non-past tense}}[[non-past|non-past tense]] : The [[#tense|tense]] of a [[#verb|verb]] that does not pertain to the [[#past|past]]; in particular, applicable to both the [[#present|present]] and the [[#future|future]]. Common in some languages, such as Arabic. In English, the main verb in the sentences ''I am running tomorrow'' and ''I am running now'' can be said to be in the non-past tense, since the same verb can be used to express both the present and the future. ; {{anchor|nonstandard}}[[nonstandard]] : Not conforming to the language as accepted by the majority of its speakers. ; {{anchor|nonvirile}}[[nonvirile]] : In Slavic languages, a plural [[#gender|gender]] used for all groups that do not contain men, as well as plurals of [[#masculine|masculine]] animate, masculine inanimate, [[#feminine|feminine]] and [[#neuter|neuter]] nouns. Contrast ''[[#virile|virile]]''. ; not comparable : ''See '''{{glossary|uncomparable}}'''.'' ; {{anchor|noun}}[[noun]] : A word that refers to a person (such as an {{m|en|actress}}), a place, a physical thing (such as {{m|en|wood}}), or concept (such as {{m|en|beauty}}, {{m|en|joy}}, or {{m|en|time}}). See also [[#countable|countable]], [[#uncountable|uncountable]] and [[#plural|plural]]. ; {{anchor|noun class}}[[noun class]] : In some languages (especially the [[Bantu]] languages), a way of classifying nouns much like [[#gender|gender]], but determined by other considerations such as the type and shape of an object, whether it is [[#animate|animate]] or [[#inanimate|inanimate]], a person or non-person, and so on. ; {{anchor|noun clause}}[[noun clause]] : A type of [[#dependent clause|dependent clause]] that takes the place of nouns. Examples are ''I said '''that my name is John''''' as well as ''I suggested '''that he leave''''' and '''''That the color of the sky on Mars is pinking-red''' is surprising to me''. Noun clauses can also be [[#nonfinite|nonfinite]] (i.e. with the verb in the form of an [[#infinitive|infinitive]]), as in ''I asked '''him to leave''''' (compare the [[#synonym|synonymous]] ''I asked '''that he leave''''', expressed using a [[#finite|finite]] verb). ; {{anchor|number}}[[number]], {{anchor|grammatical number}}grammatical number : A grammatical category that indicates how many items or individuals. Examples are [[#singular number|singular]], [[#plural number|plural]] and [[#dual number|dual]]. ; {{anchor|number}}[[numeronym]] :A [[number]]-based [[word]] such as {{l|en|9/11}} and {{l|en|24/7}}. ==O== ; {{anchor|object}}{{anchor|grammatical object}}[[object]] {{nobold|{{wikipedia|Object (grammar)}}}} : The entity that is acted upon by a [[#verb|verb]]. For example, in the sentence ''Tom studies grammar'', the word ''grammar'' is the object. Contrast [[#subject|subject]]. : → [[#direct object|direct object]], [[#indirect object|indirect object]] ; {{anchor|oblique}}{{anchor|oblique case}}[[oblique case]], {{anchor|කම් විබත්}}{{anchor|objective}}{{anchor|objective case}} [[කම් විබත්]] ([[objective case]]) : Any case that is neither [[#nominative case|nominative]] nor [[#vocative case|vocative]]. The term is therefore often plural ("the oblique cases"); but in some languages, such as [[Hindustani]] and [[Old French]], the oblique is a particular case form, used for example (in Old French) for the [[#direct object|direct object]] and with prepositions. ; {{anchor|අභාවයට ගිය}}{{anchor|obs}}{{anchor|obsolete}} ''[[අභාවයට ගිය]]'', ''[[obsolete]]'', ''obs.'' : No longer in use, and (of a term<!--as opposed to a spelling-->) no longer likely to be understood. ''Obsolete'' is a stronger term than ''[[#archaic|archaic]]'', and a much stronger term than ''[[#dated|dated]]''. See [[Wiktionary:Obsolete and archaic terms]]. Distinguish: an obsolete term is no longer in use, while the thing it once referred to may or may not exist; a historical term is still in use, but refers to a thing which no longer exists. ; {{anchor|OED}}OED : ''[[w:Oxford English Dictionary|Oxford English Dictionary]]''. Also '''SOED''' (Shorter), '''OED1''' (1st edition), '''OED2''' (2nd edition), '''NOED''' (New). ; {{anchor|offensive}} [[offensive]] : Language that is intended or likely to cause offense; a kind of [[impolite]] language. ; {{anchor|onomatopoeia}}{{anchor|onomatopoeic}}[[onomatopoeia]] : A word that is meant to sound like what it represents. English examples are {{m|en|kaboom}}, {{m|en|cuckoo}}, {{m|en|tweet}} and {{m|en|ding dong}}. ; {{anchor|optative mood}}[[optative mood]] : A category of verb form (a [[#mood|mood]]) that expresses wishes along with other meanings. Such a category occurs in Ancient Greek and Sanskrit. ; {{anchor|orthographic borrowing}}[[orthographic]] [[borrowing]] : A [[#loanword|loanword]] that has been borrowed in its written form and re-pronounced according to the conventions of the target language, particularly in East Asian languages written with Chinese characters. For example, the Chinese name {{m|zh|毛泽东|tr=Máo Zédōng}} is rendered in Japanese as {{m|ja|毛沢東|tr=Mō Takutō}}: the spelling is the same, but the characters have been pronounced as if they were Japanese words, leading to a significantly different pronunciation. Sometimes, the pronunciations in the source and donor language have no etymological relationship. For example, the Japanese noun {{ja-r|葉%書|は%がき|postcard}} was orthographically borrowed into Korean as {{ko-l|엽서|葉書|postcard}}. ; {{anchor|outdated}}[[outdated]] : see ''[[#dated|dated]]'' ; {{anchor|oxytone}}{{anchor|oxytonic}}[[oxytone]] : With the stress upon the final syllable (e.g. {{m|el|εθνικός}}). Compare with [[#paroxytone|paroxytone]], [[#proparoxytone|proparoxytone]], and [[#barytone|barytone]]. ==P== ; {{anchor|p.}}p. : ''post'' or after, often used in quotations. Hence, a quotation from "p. 1924" is a quotation from no earlier than 1924. : ''See '''{{glossary|plural}}'''.'' ; {{anchor|palatalization}}[[palatalization]] # The state or quality of being [[palatalized]], i.e. of pronouncing a sound with the tongue against the [[palate]] of the mouth that normally is not so pronounced. Some languages, such as [[Russian]] and [[Irish]], have pairs of palatalized and unpalatalized [[#consonant|consonant]] [[#phoneme|phonemes]]. # A [[#sound change|sound change]] that involves a change of consonants to become palatalized or move in the direction of the palate; one of the most common of sound changes, and usually triggered by a following {{IPAchar|/e/}}, {{IPAchar|/i/}} or {{IPAchar|/j/}}. In English, palatalization (known as {{w|yod-coalescence}}) converted {{IPAchar|/t/}} {{IPAchar|/d/}} {{IPAchar|/s/}} {{IPAchar|/z/}} to {{IPAchar|/t͡ʃ/}} {{IPAchar|/d͡ʒ/}} {{IPAchar|/ʃ/}} {{IPAchar|/ʒ/}} before a {{IPAchar|/j/}} (which was later lost), resulting in the sounds found in ''na'''t'''ure'', ''proce'''d'''ure'', ''pre'''ss'''ure'', ''mea'''s'''ure'', where the spelling still indicates the sound as it was prior to palatalization. Palatalization still operates [[synchronically]] before a {{IPAchar|/j/}}, producing, for instance, the pronunciations {{m|en|gotcha}} and {{m|en|didja}} from {{m|en|[[got]] [[you]]}} and {{m|en|[[did]] [[you]]}}. (See also {{pedia|Palatalization}}) ; {{anchor|palindrome}}[[palindrome]] : A word, phrase, number or any other [[sequence]] of units which has the property of reading the same [[forwards]] as it does [[backwards]], character for character, sometimes disregarding punctuation, [[capitalization]] and [[diacritic]]s. ; {{anchor|paradigm}} [[paradigm]] : A set of all forms which contain a common element, especially the set of all [[#inflection|inflectional]] forms of a word or a particular grammatical category. ; {{anchor|paragoge}}{{anchor|paragogic}} [[paragoge]] : The addition of sounds at the end of a word without changing its morphological structure or meaning. ; {{anchor|parisyllabic}}[[parisyllabic]] : A word whose inflections contain the same number of syllables as the lemma form ([[cf.]] [[#imparisyllabic|imparisyllabic]]). ; {{anchor|paroxytone}}[[paroxytone]] : With the stress upon the [[#penultima|penultimate]] (second to last) syllable (e.g. {{m|el|εθνολόγος}}). (Compare with ''[[#oxytone|oxytone]]'', ''[[#proparoxytone|proparoxytone]]'' and ''[[#barytone|barytone]]''.) ; {{anchor|part of speech}}[[part of speech]], {{anchor|POS}}POS, {{anchor|POS}}PoS : The category that a word belongs to, with respect to how it's used as part of phrases and sentences. Examples are [[#noun|noun]]s, [[#adjective|adjective]]s and [[#verb|verb]]s. The part of speech is inherent in the word itself, and is independent of any specific role that the word may have within any given sentence (e.g. subject, [[#direct object|direct object]]). Words may belong to more than one part of speech: English {{m|en|this}} is both a [[#determiner|determiner]] and a [[#pronoun|pronoun]], while {{m|en|coat}} is both a noun and a verb. ; {{anchor|partial calque}}{{anchor|loan blend}}{{anchor|partially calqued}}[[partial calque]] : A term which is only in part a [[#calque|calque]] or [[loan translation]], such that some parts have been translated word-for-word and other parts have been [[#loanword|borrowed]] directly. For example, the English term ''[[liverwurst]]'' is a partial calque of {{m+|de|Leberwurst}}; the first part {{m|de|Leber||liver}} was translated, but the second part {{m|de|Wurst||sausage}} was borrowed without translation. A partial calque is also known as a ''[[loanblend]]''. (''see'' {{pedia|Partial calque}}) ; {{anchor|participial}}{{anchor|participle}}{{anchor|participles}}[[participle]] : A form of a [[#verb|verb]] that may function as an [[#adjective|adjective]] or [[#noun|noun]]. {{cog|en|-}} has two types of participles: the [[#present|present]] participle and the [[#past|past]] participle. In other languages, also [[#future|future]], [[#perfect|perfect]], [[#future perfect|future perfect]] participles. ; {{anchor|particle}}[[particle]] : A word that does not fall into the usual [[#part of speech|part of speech]] categories, but which modifies another word or the sentence as a whole. The English term ''[[like#Particle|like]]'' is used as a particle in many dialects. Particles are more common in other Indo-European languages (e.g. German {{m|de|doch}}, which marks a sentence as being surprising or rebutting a previous statement) and in East Asian languages (e.g. Japanese {{m|ja|は}}, which marks the topic of a sentence). Many [[#clitic|clitics]] are particles. ; {{anchor|partitive}}[[partitive]] : Indicating partialness or indeterminateness, such as "some water" or "something nice". In Dutch, it is a word form that is used when referring to undetermined things or amounts (example: ''iets interessants'' = "something interesting"). French has special partitive [[#article|article]]s which qualify indefinite [[#mass noun|mass noun]]s (example: ''J'ai '''du''' café'' can be translated as either "I have '''some''' coffee" or simply "I have coffee"). ; {{anchor|partitive case}}[[partitive case]] : A [[#case|case]] that expresses a partial object or an action that is not performed to completion. ; {{anchor|passive}}{{anchor|passive voice}}[[passive voice]] : the [[#voice|voice]] verb form in which the subject is not the person or thing doing the action, and is usually having the action done on them ([[cf.]] [[#active voice|active voice]]), e.g. ''the ball was kicked (by the boy).'' (See also {{pedia|Voice (grammar)}}) ; {{anchor|past}}{{anchor|past tense}}[[past tense]] : The [[#tense|tense]] of a [[#verb|verb]] used to refer to an event, transaction, or occurrence that did happen or has happened, or an object that existed, at a point in time before now. An English example is {{m|en|saw}} in ''I saw my friend yesterday''. ; {{anchor|past historic}}[[past historic]] : A [[#tense|tense]] found primarily in writing in some languages, especially certain {{w|Romance languages}}. It has the same meaning as the [[#preterite|preterite]] but is used particularly in [[narrative]]. ; {{anchor|past perfect}}past perfect : Same as ''[[#pluperfect|pluperfect]]''. ; {{anchor|pejorative}}{{anchor|derogatory}}[[pejorative]] (or [[derogatory]]) : A word form expressing a negative or belittling attitude towards the person or thing referred to. Compare {{m+|en|artsy-fartsy}} with the neutral equivalent {{m|en|artistic}}. Some languages have specific prefixes or suffixes for expressing a pejorative attitude, e.g. {{m+|es|-ucho}}/{{m|es|-acho}} or {{m+|en|schm-}}. ; {{anchor|penultima}}{{anchor|penult}}[[penultima]] : The next-to-last [[#syllable|syllable]] of a word. ; {{anchor|perfect}}[[perfect]] : The [[#aspect|aspect]] of a verb indicating that the action described is completed. In English, it consists of the verb ''have'' + the past participle, e.g. ''Tom has painted the fence'' or ''Tom has taken medicine''. Depending on the tense of ''have'' one can have present perfect, which are represented in the previous examples, or past perfect: ''Tom had painted the fence'', ''Tom had taken medicine''. ''To have painted'' is a perfect infinitive. See also ''[[#imperfect|Imperfect]]''. Not to be confused with ''[[#perfective|perfective]]''. ; {{anchor|perfective}}{{anchor|perfective aspect}}[[perfective]] : The [[#aspect|aspect]] of a verb that denotes viewing the event the verb describes as a simple whole rather than as having internal structure. For example, "she sat down" as opposed to "she was sitting down". As this may often lead to an interpretation of completeness of what is expressed by the verb, this aspect is generally associated with the past and future tenses. Common in {{w|Slavic languages}} such as {{cog|ru|-}}. This term is often used interchangeably with ''[[#aorist|aorist]] aspect''. Not to be confused with ''[[#perfect|perfect]]''. (''see'' {{pedia|Perfective aspect}}) ; {{anchor|periphrastic}}[[periphrastic]] : Using more words to produce a grammatical effect. For example, "more fair" is a ''periphrastic'' form of "fairer". The English future tense requires ''periphrastic'' usage: "I ''will write'' an essay." ([[#Cf.|Cf.]] ''[[#monolectic|monolectic]]'' and ''[[#polylectic|polylectic]]''.) ; {{anchor|person}}[[person]], {{anchor|grammatical person}}grammatical person : A grammatical category that indicates the relationship between the speaker and what is being spoken of. Examples are [[#first person|first person]], [[#second person|second person]] and [[#third person|third person]]. ; {{anchor|phoneme}}[[phoneme]] : An indivisible unit of sound in a given language, an abstraction of the physical speech sounds. ; {{anchor|phono-semantic compound}}[[phono-semantic compound]] : A Chinese character ([[#CJKV|CJKV]] character) composed of a component which is related to the meaning the character and another component which is related to the sound of the character, example: the character {{zh-l|媽|lit=mother}} ([[Old Chinese|OC]] *maːʔ) is a phono-semantic compound made up of the semantic {{zh-l|*女|lit=female}} (on the left-hand side of {{lang|zh|媽/妈}}) and the phonetic {{zh-l|馬}} (OC *mraːʔ) (on the right-hand side of {{lang|zh|媽/妈}}). ; {{anchor|phono-semantic matching}}[[phono-semantic matching]] : A word [[#borrowing|borrowed]] into one language from another in a way that completely or partially preserves both the original sound and meaning. Phono-semantic matchings are especially common in Mandarin Chinese; examples are {{zh-l|可口可乐/可口可樂|tr=Kěkǒu kělè|t=Coca-Cola|lit=tasty [and] entertaining}} and {{zh-l|万维网/萬維網|tr=wàn wéi wǎng|t=world wide web|lit=myriad dimensional net}}. ; {{anchor|phrase}}[[phrase]] # A word or group of words that functions as a single unit in the [[#syntax|syntax]] of a [[#sentence|sentence]], usually consisting of a [[#head|head]], or central word, and elaborating words. Examples are ''the good boy'' (a [[#noun|noun]] phrase), ''very strange'' (an [[#adjective|adjective]] phrase), and ''in the house'' (a [[#preposition|prepositional]] phrase). Normally distinguished from a [[#clause|clause]], a similar group of words that contains a [[#verb|verb]]. # Same as [[#set phrase|set phrase]]. ; {{anchor|piecewise doublet}}[[piecewise]] [[doublet]] : One of two (or more) derived words in a language that consist of components that all have the same [[#etymology|etymological]] roots, but which have been entered the language at different points in time; in other words, one of two (or more) words that can be split into individual components and all of those components are [[#doublet|doublets]] of the equivalent components of the other words. ; pl. : ''See '''{{glossary|plural}}'''.'' ; {{anchor|plosive}}[[plosive]] : A [[#consonant|consonant]] sound produced by completely blocking the airflow through the mouth for a short time. In English, the plosives are [[#voiceless|voiceless]] {{IPAchar|/p/}}, {{IPAchar|/t/}}, {{IPAchar|/k/}} (as in the initial sounds of ''pea'', ''tea'', ''key'') and the corresponding [[#voiced|voiced]] sounds {{IPAchar|/b/}}, {{IPAchar|/d/}}, {{IPAchar|/ɡ/}} (as in the initial sounds of ''buy'', ''die'', ''guy''). Plosives are distinguished from [[#fricative|fricative]]s, in which the air is mostly but not completely blocked, enough to cause a rough, hissing or buzzing sound, and [[#approximant|approximant]]s, in which the airflow is only slightly constricted, resulting in a smooth sound. ; {{anchor|pluperfect}}[[pluperfect]] : A verb form of [[#perfect|perfect]] [[#aspect|aspect]] and [[#past|past]] [[#tense|tense]], which is used to describe an action or event which is regarded as having been completed in the past, in relation to a time already in the past. E.g. ''Tom had painted the fence before I got there''. ; {{anchor|බහුවචන}}{{anchor|plural}}{{anchor|Plural}}[[බහුවචන]] ([[plural]]), {{anchor|plural number}}plural number, {{anchor|pl}}{{anchor|pl.}}pl., p. : A [[#number|grammatical number]] that indicates multiple items or individuals. Most languages contrast it with [[#singular number|singular]], and plural indicates two or more. Some languages also possess the [[#dual number|dual]] or even [[#trial number|trial]] numbers; in these instances the plural indicates more than the highest specific number. ; {{anchor|plurale tantum}}[[plurale tantum]] (plural = pluralia tantum) : Same as plural only (see below). ; {{anchor|plural only}}{{anchor|plurale tantum}}{{anchor|pluralia tantum}}[[plural]] [[only]] : A noun (or a sense of a noun) that is inherently plural and is not used (or is not used in the same sense) in the singular, such as ''[[pants]]'' in the senses of "trousers" and "underpants", or ''[[wheels]]'' in the sense of "car", is ''plural only'' or ''a [[plurale tantum]]''. In practice, most pluralia tantum are found in the singular in rare cases. (''See'' [[:Category:English pluralia tantum]].) Contrast words which are '''[[singular]] [[only]] ([[singulare tantum|singularia tantum]])'''. ; {{anchor|polylectic}}[[polylectic]] : Used of a grammatical form accomplished with more than one word ([[cf.]] [[#monolectic|monolectic]] and [[#periphrastic|periphrastic]]). ; {{anchor|portmanteau}}{{anchor|Portmanteau}}[[portmanteau]] : A [[#blend|blend]] that combines meanings. ; POS, PoS : ''See '''{{glossary|part of speech}}'''.'' ; {{anchor|positive}}[[positive]] : The 'normal' form of the [[#degrees of comparison|degrees of comparison]] of an adjective or adverb. Thus [[big]] is the ''positive'' form of the trio ''big'', ''bigger'', ''biggest''. ; {{anchor|possessional adjective}}[[possessional adjective]] : An adjective indicating that a noun is in possession of some other noun (or a quality of that noun), commonly formed in English by adding the suffix {{m|en|-ed}}, {{m|en|-ful}}, {{m|en|-y}}, {{m|en|-ous}}, {{m|en|-able}}, {{m|en|-ual}}, {{m|en|-ish}}, {{m|en|-ar}}, {{m|en|-esque}} or {{m|en|-like}}. For example, an animal is [[bushy-tailed]] if it is in possession of a bushy tail, a person filled with disdain is [[disdainful]], and a garden is [[leafy]] if there are many leaves on the plants there. Commonly [[#idiomatic|idiomatic]], such as in [[pinheaded]] or [[red-faced]]. Not to be confused with [[#possessive adjective|possessive adjectives]], which indicate who possesses a noun, or [[#relational adjective|relational adjectives]], which are often formed in the same way. See also [[#privative adjective|privative adjectives]], which denote the opposite. ; {{anchor|possessive determiner}}{{anchor|possessive adjective}}[[possessive determiner]] (or possessive adjective) : A [[#determiner|determiner]] that indicates ownership. For example, in "her book", the word "her" indicates whose book it is. Not to be confused with [[#possessional adjective|possessional adjectives]], which indicate what a noun possesses. ; {{anchor|postpositive}}[[postpositive]] : Placed after the word modified. ; {{anchor|preconsonantal}}[[preconsonantal]] : Immediately preceding a [[#consonant|consonant]] or consonant sound. ; {{anchor|predicate}} [[predicate]] : The part of a [[#sentence|sentence]] that follows the [[#subject|subject]]. This generally consists of the [[#verb|verb]] and any [[#object|object]]s. It can also consist of a [[#linking verb|linking verb]] (e.g. "to be", "to seem", etc.) and a following [[#adjective|adjective]], which is termed a ''predicate adjective'' or ''predicative adjective'' (contrasted with an ''[[#attributive|attributive]] adjective'', which directly modifies a [[#noun|noun]]). An example would be {{m|en|good}} in ''The food is good''. Some languages, such as {{cog|de|-}} and {{cog|ru|-}}, have a special declension for predicate adjectives. ; {{anchor|predicative}}{{anchor|predicatively}}[[predicative]] : Describes a term that acts as the [[#predicate|predicate]] or part of the predicate of a [[#sentence|sentence]] (e.g. a ''predicative [[#adjective|adjective]]'', such as {{m|en|good}} in ''The food is good''). Some adjectives are only-predicative like {{m|en|afraid}} or {{m|en|glad}} in English.―In {{cog|ru|-}}, it often specifically refers to an adjective-like [[#part of speech|part of speech]] that serves as the entire predicate of a sentence in an [[#impersonal|impersonal]] construction. Such constructions often cannot be translated word-for-word in English. An example is {{m|ru|ску́чно||it is [[boring]]}} in the sentence {{m|ru|[[я|мне]] [[ску́чно]]||I am [[bored]]|lit='''It is boring''' to [[me]]}}. ; {{anchor|prefix}}{{anchor|prefixed}}{{anchor|prefixation}}[[prefix]] : A [[morpheme]] added to the beginning of a word to modify its meaning. ; {{anchor|prescriptive}}[[prescriptive]] : (as a context label for a word or phrase) Correct and consistent according to linguistic rules, but not in general use. ; {{anchor|prevocalic}}[[prevocalic]] : Immediately preceding a [[#vowel|vowel]] or vowel sound. ; {{anchor|preposition}}[[preposition]] : A word, normally non-[[#inflection|inflect]]ing, that is typically employed to connect a following [[#noun|noun]] or [[#pronoun|pronoun]], in an [[#adjective|adjectival]] or [[#adverb|adverbial]] sense, with some other word. Examples of prepositions in English are ''in'', ''from'' and ''during''. Note that some languages have [[#postposition|postposition]]s instead of prepositions; they function like prepositions but come ''after'' the noun or pronoun being connected. ; {{anchor|prepositional case}}{{anchor|prepositional}}[[prepositional case]] : A [[#case|case]] used in certain languages, especially {{cog|ru|-}}, after certain [[#preposition|preposition]]s. In {{cog|ru|-}}, it corresponds to the [[#locative case|locative case]] in other {{w|Slavic language}}s. ; {{anchor|present}}{{anchor|present tense}}[[present tense]] : The [[#tense|tense]] of a [[#verb|verb]] used primarily to refer to an event, transaction, or occurrence happening now or at the present time. The verb {{m|en|see}} in ''I see my friend in the window'' is in the present tense. In many languages, including English, the present tense may also be used to refer to past or future events in certain contexts: ''My plane leaves tomorrow morning'' (where {{m|en|leave}} is a present verb that refers to the future), or: ''John Lennon dies of gunshot wounds'' (as in a headline, where {{m|en|dies}} is a present verb that refers to the past; see [[historical present]]). While such uses are somewhat exceptional in English, the present tense is used much more widely in many languages. For example, the German present tense also covers some or most of the uses of the English future (''I will do'') and present perfect (''I have done''). ; {{anchor|preterite}}[[preterite]] (also spelled [[preterit]]) : A [[#tense|tense]] showing an action at a determined moment in the past. In general it is thus the union of the [[#past tense|past tense]] with the [[#perfective|perfective]] aspect, although in some languages it is little more than a synonym for past tense. ; {{anchor|preterite-present verb}}[[preterite-present verb]] : In [[Germanic]] languages, a verb that displays (or historically displayed) [[#ablaut|ablaut]] in the present tense, and thereby had ''present'' tense forms resembling the ''past'' (or ''preterite'') tense of a [[#strong verb|strong verb]]. Most languages have no more than a handful of such verbs, and they are often used as [[#auxiliary verb|auxiliary verbs]]. English examples are {{m|en|shall}}, {{m|en|can}}, {{m|en|may}}. Contrast [[#strong verb|strong verb]], [[#weak verb|weak verb]]. ; {{anchor|privative adjective}}[[privative adjective]] # An adjective indicating that a noun refers to an object that is not of the class which that noun ordinarily refers to. For example, in the term "fake weapon", the word "fake" denotes that the object is not a weapon, just as the word "toy" in "toy car" denotes that it is not a car. # An adjective indicating that a noun lacks some other noun (or a quality of that noun), usually formed in English by adding the suffix {{m|en|-less}} or {{m|en|-free}} to the noun that is absent. For example, someone is [[beardless]] if they don't have a beard, while a coffee might be [[sugar-free]] if it contains no sugar. Commonly [[#idiomatic|idiomatic]], such as in [[brainless]] or [[heartless]]. See also [[#possessional adjective|possessional adjectives]], which denote the opposite. ; {{anchor|productive}}[[productive]] : Used to form new words and phrases. For example, when a new verb appears in Modern English, the productive suffix {{m|en|-ed}} is used to form its past participle; by contrast, the suffix ''[[-en]]'' appears in many existing past participles, but is not productive, in that it is not (usually) used to form new ones. ; {{anchor|progressive}}[[progressive]] : The [[#aspect|aspect]] of a verb, indicating that the action described is, was or will be continuing, uncompleted or repeated. A verb form indicating that an action is [[in progress]]. In English, formed from a combination of ''be'' + the present participle (''-ing'' form) of the verb. So one can have present progressive (e.g. '''''is''' painting''), past progressive (e.g. '''''was''' painting''), future progressive (e.g. '''''will be''' painting''), etc. Similar to, but less general than, the [[#imperfective|imperfective]] [[#aspect|aspect]]. (See also ''[[#continuous|continuous]]''.) ; {{anchor|pronominal verb}}{{anchor|pronominal}}[[pronominal verb]] : A form of [[#verb|verb]] that has an attached [[#pronoun|pronoun]], prominent feature of [[Romance language|Romance]] and Slavic languages. The verb-pronoun combination can have [[#reflexive|reflexive]], [[#reciprocal|reciprocal]], [[#passive|passive]], [[#subjective|subjective]] or [[#idiomatic|idiomatic]] semantics. ; {{anchor|pronoun}}[[pronoun]] : A [[#part of speech|part of speech]] that acts as a substitute for a [[#noun|noun]] or [[noun phrase]] and refers to a topic of the discussion. Pronouns can refer to a participant in the discussion and can be used instead of a person's name, such as with the pronouns {{m|en|I}} and {{m|en|you}}. Other pronouns, such as {{m|en|he}}, {{m|en|she}}, and {{m|en|it}}, can be used to refer to other people or objects that have already been mentioned without repeating their names. ; {{anchor|pronunciation spelling}}[[pronunciation spelling]] {{nobold|{{wikipedia|pronunciation spelling}}}} : A deliberate misspelling used in writing, typically to indicate the speech of a particular dialect, even if the speaker may have perfect spelling. As such, it is the functional opposite of [[#eye dialect|eye dialect]]. ; {{anchor|proparoxytone}}[[proparoxytone]] : With the stress upon the [[#antepenultimate|antepenultimate]] (third to last) syllable (e.g. {{m|el|εθνικότητα}}). (Compare with ''[[#oxytone|oxytone]]'', ''[[#paroxytone|paroxytone]]'', and ''[[#barytone|barytone]]''.) ; {{anchor|proper noun}}[[proper noun]] : A kind of [[#noun|noun]] that usually refers to a specific, unique thing, such as {{m|en|Earth}} and {{m|en|Alps|the Alps}}, though one language's proper noun may translate to another language using a ''common'' (not proper) noun. In English, proper nouns are usually capitalized, as are common nouns and adjectives derived from proper nouns. The same word may have both common-noun and proper-noun senses (such as {{m|en|German}}, which is both a proper noun denoting a certain language, and a common noun denoting a person from Germany), and most proper nouns can sometimes be used as common nouns – e.g. {{m|en|John}} is a proper noun that is a first name, but can be used a common noun with plural {{m|en|Johns}} meaning "people named John". ; {{anchor|proscribed}}[[proscribe]]d : Some authorities or commentators recommend or warn against the listed usage. ; {{anchor|prothesis}}[[prothesis]] :The prepending of [[#phoneme|phonemes]] at the beginning of a word without changing its morphological structure, as in {{m|en|nother}}, from {{m|en|other}} (“a whole nother thing”), or Spanish {{m|es|esfera}} from Latin {{m|la|sphaera||sphere}}. ; {{anchor|proverb}}[[proverb]] : A [[#phrase|phrase]] expressing a basic truth which may be applied to common situations. ; {{anchor|pseudoacronym|pseudo-acronym}}[[pseudo-acronym]] : A word that has the form of an [[#acronym|acronym]] or [[#initialism|initialism]] but no longer stands for anything. (See also {{pedia|Pseudo-acronym}}) ; {{anchor|pseudoanglicism|pseudo-anglicism}}[[pseudo-anglicism]] : A word in a non-English language that is formed from English elements and may appear to be English, but that does not exist as an English word with the same meaning, such as {{m|de|Flipper||pinball machine}}, {{m|ja|サラリーマン||white-collar worker|tr=sararīman}} and {{m|sv|afterwork||informal gathering after work}}. ; {{anchor|pseudo-loan}}[[pseudo-loan]] : A word in one language that appears to be a direct borrowing from another language, but does not exist in that language or has an unrelated meaning. Examples are {{m+|fr|footing||jogging}}, {{m+|de|Bodybag||messenger bag, courier bag}}, {{m+|ja|サラリーマン||white-collar worker, '[[salaryman]]'|tr=sararīman}} and {{m+|sv|afterwork||informal gathering after work}}. Depending on the source language, more specific terms may be in use, e.g. ''[[pseudo-anglicism]]'' for pseudo-loans from English; ''{{w|wasei-eigo}}'' specifically for Japanese-language pseudo-loans from English; ''[[:Category:Pseudo-loans from Latin by language|pseudo-Latinism]]'' for pseudo-loans from Latin (cf. [[hocus pocus]], [[noli illegitimi carborundum]]); ''[[:Category:Pseudo-loans_from_Spanish_by_language|pseudo-Hispanism]]'' for pseudo-loans from Spanish (cf. [[no problemo]], [[que sera sera]]); ''[[:Category:Pseudo-loans_from_French_by_language|pseudo-Gallicism]]'' for pseudo-loans from French (cf. [[vive la différence]], [[nom de plume]], [[triple entendre]]); ''[[:Category:Pseudo-loans from German by language|pseudo-Germanism]]'' (from German), ''[[:Category:Pseudo-loans from Japanese by language|pseudo-Japonism]]'' (from Japanese), ''pseudo-Arabism'' (from Arabic), ''pseudo-Italianism'' (from Italian), etc. ==R== ; {{anchor|rare}}[[rare]] : A term or sense that is attested but not used commonly either in spoken or written language, even less so than [[#uncommon|uncommon]] terms. ; {{anchor|reanalysis}}{{anchor|reanalysed}}{{anchor|reanalyzed}}[[reanalysis]] : Analysis of a [[#lexeme|lexeme]] with a different structure from its original, often by misunderstanding. For example, ''[[hamburger]]'', which is originally ''[[Hamburg]]'' + ''[[-er]]'', was reanalyzed as ''[[ham]]'' + ''[[-burger]]'', which produced words like ''[[cheeseburger]]''. ; {{anchor|rebracketing}}{{anchor|metanalysis}}[[rebracketing]] : The process by which a word originally derived from one source is broken down or bracketed into a different set of factors. The understanding of ''[[hamburger]]'' as ''[[ham]] + [[burger]]'' (rather than ''[[Hamburg]]'' + ''[[-er]]'') is an example of rebracketing. Also called '''[[metanalysis]]'''. ; {{anchor|reciprocal}}[[reciprocal]] : Used to indicate that subjects have other subjects as object. Pronouns can be reciprocal (in English ''[[each other]]''), as well as verbs [[reciprocal]] quality as [[#lexeme|lexeme]]s. ; {{anchor|reconstruction}}{{anchor|reconstructed}}[[reconstruction]] : A word that is not recorded in actual texts or other media, but has been recreated from its descendant forms, using the [[comparative method]] of linguistics. ; {{anchor|reducible}}[[reducible]] : In the {{w|Slavic languages}}, a word (especially a noun or adjective) with an alternation between a vowel and no vowel in different forms of the word, pursuant to {{w|Havlík's law|Havlík’s law}}. In Russian, for example, the reducible masculine noun {{m|ru|вене́ц||[[crown]]}} appears unreduced (with /e/ in the final syllable) in the masculine singular, and reduced (with no /e/) in other forms, e.g. genitive singular {{m|ru|венца́}}, nominative plural {{m|ru|венцы́}}. ; {{anchor|reduplication}}{{anchor|reduplicated}} [[reduplication]] : The repetition of a word or a part of a word (as few as two [[#phoneme|phonemes]] in a word, or the whole sequence of phonemes in the word) with no or slight change. Compare [[#haplology|haplology]], the [[#elision|elision]] of a repeated part of a word. ; {{anchor|reflexive}}[[reflexive]] : Referring back to the subject, or having an object equal to the subject. Pronouns can be reflexive (e.g. ''[[myself]]'', ''[[oneself]]''). [[Romance language|Romance]] and Slavic languages make extensive use of reflexive verb forms (e.g. {{ncog|it|lavarsi}}, {{ncog|es|lavarse||to wash oneself}}). These are part of a larger group of [[#pronominal verb|pronominal verbs]]. ; {{anchor|register}}[[register#English:_language register|register]] {{nobold|{{wikipedia|Register (sociolinguistics)}}}} : A variety of a language used for a particular purpose or in a particular social setting. Encompasses variants such as [[#slang|slang]], [[#colloquial|colloquial]], [[#informal|informal]], [[#formal|formal]], etc. ; {{anchor|related terms}}[[Wiktionary:Entry layout explained#Related terms|related terms]] : Words in the same language that have strong etymological connections but are '''not''' derived terms. ; {{anchor|relational}}{{anchor|relational adjective}}[[relational]] : Refers to a type of adjective in some languages, e.g. {{cog|la|-}}, {{cog|grc|-}} and the {{w|Slavic languages}}, that takes the place of a noun when it modifies another noun. Consider an English phrase such as ''chicken soup''. In English, this phrase can be constructed by simply placing a noun such as ''chicken'' in the position normally occupied by an adjective, i.e. directly before the noun. In languages such as {{cog|ru|-}}, however, this cannot be done, and instead the word {{m|ru|ку́рица||chicken}} must be replaced by the relational adjective {{m|ru|кури́ный||related to chickens}} when forming the Russian equivalent {{m|ru|[[кури́ный]] [[суп]]||chicken soup}}. Generally, adjectives of this sort cannot be qualified by ''more'', ''less'' or ''very''. ; {{anchor|relative}}[[relative]] :# Marking a [[#relative clause|relative clause]]. Often used of pronouns, such as {{m|en|the tree '''[[which]]'''...}}. :# In the {{w|Bantu languages}}, a [[#part of speech|part of speech]] that resembles an [[#adjective|adjective]] in function, but behaves morphologically and syntactically like a [[#relative clause|relative clause]]. ; {{anchor|relative clause}}[[relative clause]] {{nobold|{{wikipedia|Relative clause}}}} : A [[#subordinate clause|subordinate clause]] that modifies a [[#noun|noun]]. In ''The man who I saw yesterday is leaving today'', the clause ''who I saw yesterday'' is a relative clause. In English, relative clauses are often introduced by a [[#relative|relative]] [[#pronoun|pronoun]] such as ''who'', ''which'' or ''that'', but other languages often have different strategies for marking relative clauses. ; {{anchor|respelling}}[[respelling]] : A different spelling of a word, especially to show its pronunciation. ; {{anchor|retronym}}[[retronym]] : A new word or phrase coined for an old object or concept whose original name has become used for something else or is no longer unique (such as acoustic guitar where guitar used to mean this but can now also refer to an electric guitar). ; {{anchor|rhetoric}}[[rhetoric]] # The art of effective or persuasive speaking or writing. # A string of words that are designed to impress or confuse, rather than communicate. (See also ''[[Appendix:Glossary of rhetoric]]''.) ; {{anchor|rhetorical question}}[[rhetorical question]] : A question to which the speaker does not expect an answer ; {{anchor|rhotacism}}[[rhotacism]], {{anchor|rhotacization}}[[rhotacization]] : A [[#sound change|sound change]] that converts one consonant (usually a voiced alveolar consonant: /z/, /d/, /l/, or /n/) to a [[rhotic]] consonant in a certain environment, most commonly /z/ to /r/. ; {{anchor|Romanization}}{{anchor|Romanisation}}{{anchor|romanization}}{{anchor|romanisation}}[[Romanization]], [[Romanisation]] : [[#transliteration|Transliteration]] of a string in a non-Latin script into the Latin or Roman one: for instance, {{m|el|συγγνώμη|tr=-}} can be romanized as ''singnómi''. ; {{anchor|root}}[[root]] : The part of a word that forms its core and gives its most basic meaning; also the part of the word that is left when all [[#affix|affix]]es are removed. For example, in {{m|en|insubordination}}, the root is {{m|en||ord}}, while in {{m|en|unspeakableness}} it is {{m|en|speak}}. The root is often the first part of the word (as in [[Uralic]] and often in [[Indo-European]] languages), but it may also be the last part, or it may only consist of the consonants of the word (as in the [[Afroasiatic]] languages). ==S== ; s : ''See '''{{glossary|singular}}'''.'' ; {{anchor|SAMPA}}[[SAMPA]] : [[w:SAMPA|SAMPA]] (Speech Assessment Methods Phonetic Alphabet), a set of systems for representing the phonemes of various languages in plain [[ASCII]] text. Not to be confused with [[w:X–SAMPA|X–SAMPA]], the system for representing the ''full'' International Phonetic Alphabet in plain ASCII text. ; {{anchor|script}}[[script]] : A writing system adapted to a particular language or set of languages. ; {{anchor|second person}}{{anchor|second-person}}[[second person]], {{anchor|2nd person}}[[2nd person]] : A [[#person|grammatical person]] that indicates the person or group that one is speaking to. Examples are the English pronouns {{m|en|you}} and {{m|en|thou}}. ; {{anchor|second-person-object}}{{anchor|second-person-object form}}{{anchor|second person object}}second-person-object form : A type of conjugation in [[Hungarian]] (aside from [[#definite|definite]] and [[#indefinite|indefinite]]) which indicates a first-person singular subject and a second-person (whether singular or plural, but informally addressed) object, for example {{m|hu|szeretlek|szeret'''lek'''|'''I''' love '''you'''}} or {{m|hu|látlak|lát'''lak'''|'''I''' see '''you'''}}. ; {{anchor|semantic loan}}{{anchor|ශබ්දාර්ථවිභාග ණයට ගැනීම්}} [[ශබ්දාර්ථවිභාග ණයට ගැනීම්]] ([[semantic loan]]) : A word or expression created by [[#loanword|borrowing]] a meaning from another language and assigning it to a word or expression that already exists in the borrowing language, also called semantic calque. (Compare [[#calque|calque]], a new word or expression created by translation.) For example, the French word {{m|fr|souris|lit=mouse}} was given the additional meaning ''[[computer]] [[mouse]]'' in imitation of {{m+|en|mouse}}, which already had both meanings. (''see'' {{pedia|Semantic loan}}) ; {{anchor|semelfactive}}[[semelfactive]] : A verbal [[#aspect|aspect]], a subclass of [[#perfective|perfective]], which denotes a [[momentary]] or [[punctual]] event (e.g. to [[sneeze]], to [[blink]], to [[knock]]). In {{w|Slavic languages}} such as {{cog|ru|-}}, often used to express actions performed once. (''See'' {{pedia|Semelfactive}}) ; {{anchor|semi-learned borrowing}}[[semi-learned borrowing]] : A [[#loanword|loanword]] that was borrowed from a [[classical language]] such as Latin or Sanskrit (especially when borrowed into a descendant of the same language), which has been partly reshaped by later [[#sound change|sound change]] or analogy with inherited terms. Opposed to [[#learned borrowing|learned borrowings]], which have not been similarly reshaped, and [[#inherited|inherited]] terms, which have undergone all the normal sound changes of a language. For example, the Portuguese term {{m|pt|artigo||article}} is a semi-learned borrowing from {{cog|la|articulus||joint, limb, division}}, which was borrowed early enough to undergo later sound changes that [[lenite]]d ''c'' into ''g'' and deleted ''l'' between vowels, but did not undergo earlier sound changes, such as lowering short ''i'' to ''e''. In comparison, {{m|pt|artelho||toe}} is inherited from the same Latin term, and {{m|pt|artículo||[[articulus]]}} is a learned borrowing from the same Latin term. ; {{anchor|semivowel}}[[semivowel]] : A sound which has some qualities of a [[#consonant|consonant]] and some qualities of a [[#vowel|vowel]]. ; {{anchor|sentence}}[[sentence]] : A syntactic unit that expresses a complete thought and consists of one or more [[#clause|clause]]s joined together. ; {{anchor|sentence adverb}} [[sentence adverb]] : An adverb that modifies an entire clause or sentence rather than a single word or phrase. ; {{anchor|set phrase}}{{anchor|set expression}}{{anchor|multiword phrase}}{{anchor|multiword expression}}[[set phrase]] : [[w:Set phrase|Set phrase]], a common [[expression]] (a [[#phrase|phrase]]) whose [[wording]] is not subject to [[variation]], or alternately, whose words cannot be replaced by [[#synonym|synonymous]] words without [[compromise|compromising]] the meaning. Set phrases may include [[#idiom|idiom]]s, [[#proverb|proverbs]], and [[#colloquial|colloquialisms]]. For example, ''flight simulator'' is a set phrase because it has a special meaning that ''flying simulator'' doesn't. ; sg. : ''See '''{{glossary|singular}}'''.'' ; SGV : ''See '''{{glossary|singulative}}'''.'' ; {{anchor|shortening}}[[shortening]] : A shortened form of a word(s), including [[#abbreviation|abbreviations]], [[#acronym|acronyms]], [[#contraction|contractions]], [[#initialism|initialisms]], [[#short form|short forms]]. ; {{anchor|short_form}}short form : A shortened term which is itself a stand-alone term; eg. {{m|en|Acts}}, a short form used to refer to {{m|en|Acts of the Apostles}}. ; {{anchor|sic}}''[[sic]]'' : A Latin adverb meaning "thus, so". It is traditionally placed inside square brackets and used in quotations to indicate that the preceding is not a copying error, but is in fact a verbatim reflection of the source. (For example, if a source contains a typographical error, someone quoting the source might add [sic] to make clear that the error was in the original source.) ; {{anchor|siglum}}[[siglum]] (pl. sigla) : A letter or other symbol that stands for a word or name; eg. {{m|la|ꝓ}} is a medieval Latin siglum for the word {{m|la|pro}}. ; {{anchor|simile}}[[simile]] : A [[figure of speech]] in which one thing is compared to another; in English, it generally uses [[like]] or [[as]]; see [[#metaphorical|metaphor]] and [[#figurative|figurative]]. ; {{anchor|simplex}}[[simplex]] : A simple word, one without [[#affix|affixes]]. ; {{anchor|ඒක වචන}}[[ඒක වචන]] : පහත [[#singular]] වෙත යොමු වන්න. ; {{anchor|singular}}{{anchor|Singular}}[[singular]], {{anchor|singular number}}singular number, {{anchor|sg}}{{anchor|sg.}}sg., {{anchor|s}}s : A [[#number|grammatical number]] that indicates exactly one item or individual. Usually contrasts with [[#plural number|plural]], and, in some languages, with [[#dual number|dual]]. ; {{anchor|singulative}}[[singulative]], {{anchor|singulative number}}singulative number, {{anchor|SGV}}SGV : The marked singular form of an unmarked [[#mass noun|mass noun]]. ; {{anchor|Sino-Xenic}}[[Sino-Xenic]] : Refers to pronunciations in [[Japanese]], [[Korean]] and [[Vietnamese]] languages (grouped with Chinese as [[#CJKV|CJKV]]) of terms or components derived from medieval [[Chinese]]. ; {{anchor|s.l.}}[[s.l.#Etymology 2|s.l.]] : {{noncog|la|[[sine]] [[locō]]|lit=without a place}}, used to indicate that the place of publication is not stated in a work. ; {{anchor|slang}}[[slang]] : Denotes language that is unique to a particular profession or subject, i.e. [[jargon]]. Also refers to the specialized language of a social group, sometimes used to make what is said unintelligible to those who are not members of the group, i.e. [[cant]]. Such language is usually outside of conventional usage, and is mostly inappropriate in [[#formal|formal]] contexts. ; {{anchor|slavic first palatalization}}{{w|Slavic first palatalization}} : A specific occurrence of [[#palatalization|palatalization]] that occurred in the {{w|Proto-Slavic language}}, in which the [[#velar|velar]] consonants ''*k *g *x'' when followed by any of the [[#front vowel|front vowel]]s ''*e *ě *ь *i'' became the sounds ''*č *ž *š'', respectively. The Slavic first palatalization is still an active process in many modern {{w|Slavic languages}}. For example, before certain suffixes in {{cog|ru|-}}, the consonants {{lang|ru|к г х ц}} become {{lang|ru|ч ж ш ч}} respectively. Other {{w|Slavic languages}} behave similarly. (''See'' {{pedia|Slavic first palatalization}}) ; {{anchor|slavic progressive palatalization}}{{w|Slavic progressive palatalization}} : A specific occurrence of [[#palatalization|palatalization]] that occurred in the {{w|Proto-Slavic language}}, in which the [[#velar|velar]] consonants ''*k *g *x'' when preceded by either of the [[#front vowel|front vowel]]s ''*ь *i'' (possibly with an intervening ''n'') became the sounds ''*c dz s/š'', respectively, with ''s'' occurring in East and South Slavic but ''š'' occurring in West Slavic. (See also {{pedia|Slavic progressive palatalization}}) ; {{anchor|s.n.}}[[s.n.]] : {{noncog|la|[[sine]] [[nōmine]]|lit=without a name}}, used to indicate that the name of the publisher is not stated in a work. ; {{anchor|snowclone}}[[snowclone]] : A type of {{l|en|cliché}} which uses an old {{glossary|idiom}} formulaically in a new context. (See also ''[[Appendix:English snowclones]]'' and {{pedia|Snowclone}}) ; {{anchor|solemn}} [[solemn]] : Used to evoke a sense of current events being highly important. Examples of situations where solemn language is likely to be used are liturgical events, various ceremonies, and public speeches. Solemn terms are often dated or archaic, and once belonged in the neutral register. ; {{anchor|sound change}}[[sound change]] : A change in the pronunciation of a sound in a given language, usually according to regular rules. An example of such a change in English is the deletion of ''h'' in the {{IPAchar|/hw/}} cluster found in words such as ''which'' and ''whale'', making them [[homophonous]] with ''witch'' and ''wail'', respectively. (This sound change is found in most varieties of English, but not in Scottish English or in some conservative American English and Irish English varieties. See {{w|Pronunciation of English ⟨wh⟩}}.) ; {{anchor|sound symbolism}}{{anchor|sound-symbolic}}[[sound symbolism]] : The idea that [[phoneme]]s or clusters of phonemes carry intrinsic meaning in a language. For example, the phoneme cluster ''gl-'' appears to mean "light" in English in words such as [[gleam]], [[glisten]], [[glare]], [[glossy]] and [[glow]]. (''See'' {{pedia|sound symbolism}} ''Also see'' {{pedia|phonestheme}}) ; {{anchor|spelling pronunciation}}[[spelling pronunciation]] : A pronunciation affected by the written form of the word, diverging from the original inherited form. Some spelling pronunciation are considered mistakes or non-standard, while others have historically become universally accepted and completely replaced the original pronunciations. (''See'' {{pedia|Spelling pronunciation}}) ; {{anchor|stem}}[[stem]] : The part of an [[#inflection|inflected]] word that the ending is attached to. For example, Latin {{m|la||mens-}} (stem, "table") + {{m|la|-ae}} (ending, 1st-declension nominative plural) &rarr; {{m|la|mensae}} (full word, "tables", nominative plural). ; {{anchor|stratum}}{{anchor|strate}}{{anchor|adstratum}}{{anchor|adstrate}}[[stratum]] {{nobold|{{wikipedia|stratum (linguistics)}}}} : A language that influences another by [[w:language contact|contact]], typically due to close geographic proximity (often both spoken simultaneously in the same land) and some form of cultural contact. A stratum can be further classified as [[#substrate|substrate]], [[#superstrate|superstrate]], or adstrate. ; {{anchor|strictly}}{{anchor|strict}}[[strictly]] : Indicates a more precise use of words; short for ''strictly speaking'' ([[sensu stricto]]). Contrast ''loose'' or ''broad'' (''wide'') sense; ''[[#loosely|loosely]]''. ; {{anchor|strong declension}}{{l|en|strong declension}} : In German, a declension of adjectives, and of masculine and neuter nouns, that is defined in opposition to the [[#weak declension|weak declension]] and [[#mixed declension|mixed declension]]. Strong nouns (typically) form their genitive in ''-s'' and/or ''-es'' and do not form their plural by adding ''-n'' and/or ''-en''. In adjectives, the strong declension is a set of endings used when the adjective is not accompanied by a definite or indefinite article, and includes a fuller set of endings than that of the weak or mixed declensions (hence the name). Note that "strong", "weak" and "mixed" refer to inherent declensional properties of nouns, but all adjectives can be declined according to all three declensions, depending on whether an article precedes and what type of article it is. By analogy, the term "strong declension" is sometimes used in other inflected Germanic languages such as {{w|Icelandic}} and {{w|Old English}}. In these languages, adjectives are formed similarly to German but there is typically not a single strong noun declension. Rather, a strong noun is any noun that does not follow the weak declension. ; {{anchor|strong pronoun}} strong pronoun : (''Greek'') An [[#emphatic|emphatic pronoun]]. ; {{anchor|strong conjugation}} ; {{anchor|strong verb}} [[strong verb]] and strong conjugation : In [[Germanic]] languages, a verb that displays [[#ablaut|ablaut]]. More specifically, a verb that has a change in [[#vowel|vowel]] between present and past. An English example is {{m|en|drink}}, {{m|en|drank}}, {{m|en|drunk}}. Note that some verbs show a vowel change, but not as a result of ablaut (e.g. {{m|en|think}}, {{m|en|thought}}); these are not considered strong verbs. Contrast [[#weak verb|weak verb]], [[#preterite-present verb|preterite-present verb]]. ; {{anchor|subject}}[[subject]] {{nobold|{{wikipedia|subject (grammar)}}}} : In a [[#clause|clause]]: the word or word group (usually a noun phrase) that is dealt with. In [[#active voice|active clauses]] with [[#verb|verbs]] denoting an action, the subject and the actor are usually the same. Contrast [[#object|object]]. ; {{anchor|subjunctive}}{{anchor|subjunctive mood}}{{anchor|conjunctive}}[[subjunctive mood]] : The [[#mood|mood]] of a [[#verb|verb]] expressing an action or state which is hypothetical or anticipated rather than actual, including wishes and commands. Some English examples are ''if I '''were''' rich'' and ''it’s important that he '''be''' here''. ; {{anchor|subordinate clause}}[[subordinate clause]] : Same as [[#dependent clause|dependent clause]]. ; {{anchor|substantive}}[[substantive]] :# A noun or adjective (or phrase), that names a real object with ''substance''. This is in contrast to an [[#attributive|attributive]] noun or adjective, which names a real object that carries the ''attributes'' of the named noun or adjective. :# In [[Mongolic]] languages, it sometimes refers to a single [[#part of speech|part of speech]] that collectively encompasses nouns, adjectives and adverbs, due to their shared morphological behaviour. ; substantivization : ''See '''{{glossary|nominalization}}'''.'' ; {{anchor|substratum}}{{anchor|substrate}}[[substratum]] : A language [[#stratum|stratum]] which has lower cultural or political prestige than the one which it influences. Many historical '''substrate''' languages have gone extinct without ever having been attested, and so they must be inferred from their influences on surviving or attested languages. One such example is the [[Pre-Greek]] substratum. ; {{anchor|suffix}}{{anchor|suffixed}}[[suffix]] : A [[morpheme]] added to the end of a word to modify its meaning. ; {{anchor|superlative}}[[superlative]] : An [[#inflection|inflection]], or different form, of a '''[[#comparable|comparable]]''' adjective showing a relative quality, denoting "to the ultimate extent". (See also ''[[#comparative|comparative]]'' and ''[[#degrees of comparison|degrees of comparison]]''.) In English, the superlative form is often formed by appending ''-est'', or using the word ''most''. For example, the superlative of ''big'' is "''biggest''"; of ''confident'', "''most confident''". ; {{anchor|superseded}}[[supersede]]d : Especially of a spelling, formerly standard, and still frequently encountered, but now deprecated in favor of another form as the result of a spelling reform. Examples in Portuguese: {{m|pt|idéia}} instead of {{m|pt|ideia}}, {{m|pt|freqüente}} instead of {{m|pt|frequente}}, {{m|pt|microondas}} instead of {{m|pt|micro-ondas}}, all replaced in the {{w|Portuguese Language Orthographic Agreement of 1990|1990 Orthographic Agreement}}, which was fully implemented only by 2015. ; {{anchor|superstratum}}{{anchor|superstrate}}[[superstratum]] : A language [[#stratum|stratum]] which has higher cultural or political prestige than the one which it influences. One historical example is the '''superstrate''' effect of [[Old Norman]] French on late [[Old English]] in the centuries following the 11th-century [[w:Norman conquest of England|Norman conquest of England]]. ; {{anchor|supine}}[[supine]] : A term for an [[infinite]] verb form in some languages. In Latin, a type of [[#verbal noun|verbal noun]], used for the [[#ablative|ablative]] and [[#accusative|accusative]] case of an [[#infinitive|infinitive]]. In Swedish, a form related to the [[#past participle|past participle]], used to form [[#perfect|perfect]] tenses. In Slovene and Lower Sorbian, a form related to the infinitive, used to indicate purpose after a verb of movement. ; {{anchor|suppletion}}{{anchor|suppletive}}[[suppletion]], [[suppletive]] : The situation in which the inflected forms of a word come from two or more unrelated roots: for example, {{m|en|go}} and {{m|en|went}}; {{m|en|be}}, {{m|en|is}}{{,}} and {{m|en|was}}. One or more of these forms, or the entire [[#paradigm|paradigm]] of the word, may then be called suppletive. Examples from various languages may be found from [[:Category:Suppletive verbs by language]]. ; {{anchor|surface etymology}}{{anchor|surface analysis}}{{anchor|surface}}{{anchor|equivalent to}}[[surface analysis]], [[surface etymology]] : The [[apparent]] etymology of a term by an [[analysis]] based on components occurring in the form of the language at a later point in time, i.e. that term's {{glossary|synchronic}} makeup: for example, the analysis {{m|en|earth}} + {{m|en|-en}} for {{m|en|earthen}}, which actually was inherited via Middle English from Old English, in which it occurred as {{m|ang|eorþen|eorthen}}. ; {{anchor|syllable}}[[syllable]] : A unit of human speech that is interpreted by the listener as a single sound. (''See'' {{pedia|Syllable}}) ; {{anchor|synchrony}}{{anchor|synchronic}}{{anchor|synchronically}}[[synchrony]] {{nobold|{{wikipedia|Diachrony_and_synchrony|Diachrony and synchrony}}}} : The viewpoint of analysis of a language which considers only its state at one point (or period) in time, not accounting for historical language change or etymology (as opposed to {{glossary|diachrony}}). A purely '''synchronic''' analysis of a word or phrase (as e.g. from the intuition of a speaker of the language) which may differ from its true etymological derivation is termed a {{glossary|surface analysis}}. ; {{anchor|syncope}}{{anchor|syncopic}}{{anchor|syncopation}}{{anchor|syncopated}}[[syncope]] : The deletion or elision of sounds inside a word (not at the beginning or end), most often a single [[#vowel|vowel]], but sometimes a [[#consonant|consonant]] or a sequence of vowels or consonants. Deletion at the beginning of a word is called [[#apheresis|apheresis]], at the end [[#apocope|apocope]]. ; {{anchor|syncretism}}<!-- {{anchor|syncretic}} -->[[syncretism]] : The situation in which two or more [[#inflection|inflected]] forms of a word are identical. For example, {{m+|en|walked}} is both the simple past and the past participle of {{m|en|walk}}, and {{m+|grc|ἄλλο}} is the neuter nominative, accusative{{,}} and vocative singular of {{m|grc|ἄλλος}}.<!-- Is the adjective syncretic used in this context? If so, how? --> ; {{anchor|synonym}}[[synonym]] : A word or phrase with a meaning that is the same as, or very similar to, another word or phrase. Contrast [[#antonym|antonym]]. ==T== ; {{anchor|tashif}}{{m|ar|صحف|تَصْحِيف}} : When a copyist has set wrong points ([[i'jam|ʾiʿjām]]) upon the skeleton ([[rasm]]) of the (Arabic) script. ; {{anchor|tatpurusa}}[[tatpurusa]] : Another term for a ''[[#determinative|determinative]] compound''. Contrast [[#bahuvrihi|bahuvrihi]], [[#karmadharaya|karmadharaya]] and [[#dvandva|dvandva]]. ; {{anchor|tautology}}[[tautology]] : Redundant use of words, a [[pleonasm]], an unnecessary and tedious repetition. ; {{anchor|tense}}[[tense]] : One of the forms of a [[#verb|verb]], used to distinguish when an action or state of being occurs or exists. The basic tenses in many languages are [[#present tense|present]], [[#past tense|past]], [[#future tense|future]]. (''see'' {{pedia|Grammatical tense}}) ; {{anchor|thematicization}}[[thematicization]] : [[insertion|Insertion]] of a [[thematic vowel]] on the [[root]] or [[stem]] of the word to make it [[undergo]] one of the [[productive]] [[vocalic]] inflections. ; {{anchor|අන්‍ය පුරුෂ}}[[අන්‍ය පුරුෂ]], {{anchor|ප්‍රථම පුරුෂ}}[[ප්‍රථම පුරුෂ]] : පහත දැක්වෙන [[#third person]] කොටස බලන්න. ; {{anchor|third person}}{{anchor|third-person}}[[third person]], {{anchor|3rd person}}[[3rd person]] : A [[#person|grammatical person]] that indicates someone or something that is neither the person or group to which the speaker belongs, nor the person or group that the speaker is speaking to. Examples are the English pronouns {{m|en|he}}, {{m|en|she}}, {{m|en|it}}, {{m|en|this}}, {{m|en|that}}, and so on. All [[#noun|nouns]] are generally considered third person. In some languages (like German, Italian, Spanish, Portuguese, and Hungarian), the third-person conjugation is also used to express the formal ''you'' (sometimes combined with the plural and/or capitalizing the personal pronoun in writing). ; {{anchor|tmesis}}{{anchor|diacope}}[[tmesis]] : The insertion of one or more words between the components of a [[#compound|compound]] word. ; {{anchor|tone}}[[tone]] : The pitch of a given syllable in languages where changing the pitch changes the basic meaning of the word. In {{w|Mandarin Chinese}}, for example, the word pronounced /ma/ (like English {{m|en|ma}}), when pronounced with a high, level tone means "mother", but when pronounced with a rising tone means "bother", and when pronounced with a falling tone means "scold". ; {{anchor|toponym}}[[toponym]] : A placename, or a word derived from one. ; {{anchor|topicalized}}[[topicalized]] form : In some languages, such as Okinawan, a topicalized form of a word is a contraction of that word, used as the phrase [[topic]], with the topic marker. ; {{anchor|tr.}}{{anchor|tran.}}tr., tran. : Translator or translated, often used in quotations. ; {{anchor|transferred sense}}[[transferred sense]], transf. : A (usually [[#loosely|looser]]) meaning of a word or [[#phrase|phrase]] developed from a [[#metaphorical|metaphorical]] application of its original signification (for example, ''hunger'' has the primary and original sense “want of food”, “craving appetite”, whence developed the transferred sense of “any strong desire or craving”). ; {{anchor|transgressive}}[[transgressive]] : A verb form in some Balto-Slavic languages that expresses a coincidentally proceeding or following action. ; {{anchor|සකර්මක}}[[සකර්මක]] : පහත [[#transitive verb]] වෙත යොමු වන්න. ; {{anchor|transitive verb}}{{anchor|transitive}}[[transitive verb]] : A verb which requires one or more [[#object|objects]] (e.g. ''I '''kick''' the ball''); contrast '''[[#intransitive verb|intransitive verb]]'''. (See also {{pedia|Transitivity (grammar)}}) ; {{anchor|translation hub}}translation hub : An English multi-word entry that is unidiomatic ([[WT:Glossary#S|sum of parts]]) and exists purely to host translations and enable navigation from one non-English entry to another non-English entry. An example: [[two days after tomorrow]]. See [[:Category:English translation hubs]] for more. ; {{anchor|transliteration}}[[Wiktionary:Transliteration|transliteration]] : The conversion of text in one [[#script|script]] into an equivalent in another [[#script|script]], or an instance of text so converted (for example, ''Ševčenko'' and ''Shevchenko'' are transliterations of Ukrainian ''Шевченко'' from Cyrillic script to Latin script, according to two different systems). Transliteration is conducted on a letter-by-letter basis (contrasted with [[transcription]] which is converted on the basis of sounds). This may be extended to the conversion of [[#diacritic|diacritical]] marks into alternate forms without diacritical marks in the same script (e.g. Mörder → Moerder). ; {{anchor|transnumeral}}{{anchor|transnumeral number}}[[transnumeral]] : A [[#number|grammatical number]] that is ambiguous as to whether it refers to the [[#singular|singular]] or [[#plural|plural]]. Found in [[Sino-Tibetan]] languages such as [[Chinese]] and [[Japanese]], as well as some [[Austronesian]] languages such as [[Indonesian]] and [[Malay]]. When a language also has a plural (or some other) number, they are commonly only used for clarity or emphasis. ; {{anchor|troponym}}[[troponym]] : A verb that indicates more precisely the manner of doing something by replacing a verb of a more generalized meaning, e.g. “to boil” for “to cook”. ; {{anchor|twice-borrowed}}[[twice-borrowed]] : Terms in one language that were borrowed from a second language that originally borrowed the term from the first language. (More at {{pedia|Reborrowing}}) ==U== ; {{anchor|UK}}UK : UK English, that is, the English of the [[United Kingdom]]. ; {{anchor|umlaut}}[[umlaut]] : A [[#sound change|sound change]] where a [[#vowel|vowel]] is modified to conform more closely to the vowel in the next [[#syllable|syllable]]. ; {{anchor|unadapted borrowing}}{{anchor|Unadapted borrowing}}[[unadapted]] [[borrowing]] : A [[#loanword|loanword]] that has not been conformed to the morpho-syntactic, phonological and/or phonotactical rules of the target language. For example, {{cog|en|cubiculum}} is an unadapted borrowing from {{cog|la|cubiculum}}, while {{cog|en|cubicle}} is a standard borrowing from the same Latin word. ; {{anchor|uncommon}}[[uncommon]] : A term or sense that is attested but not used commonly either in spoken or written language, but more commonly than [[#rare|rare]] terms. ; {{anchor|uncomparable}}[[uncomparable]], not comparable : (of adjectives) unable to be compared, or lacking a [[#comparative|comparative]] and [[#superlative|superlative]] function. ''See'' '''[[#comparable|comparable]]'''. Examples of adjectives that are not comparable: ''annual'', ''first'', ''extra'', ''satin'', ''six-figure''. ; {{anchor|uncountable}}{{anchor|Uncountable}}{{anchor|mass_noun}}[[uncountable]], uncountable noun, [[mass noun]] : A noun that cannot be used freely with numbers or the [[indefinite article]], and which therefore usually takes no [[plural]] form. For example, the English noun {{m|en|information}} is a mass noun, and at least in its principal senses is uncountable in most varieties of English. For those senses, we cannot say that we have *''one information'', nor that we have *''many information'' (or *''many informations''). Many mass noun senses often have corresponding plural [[#countable|count]] senses that denote ''types'' of the mass sense, ''instances'' of the mass sense, or ''portions (servings)'' of the mass sense. For example, the main sense of {{m|en|butter}} is the uncountable sense, so the plural form ''butters'' is seldom used, although it occasionally is used to mean "types of butter" (''many [[herb butter]]s contain garlic'') or "[packets of] butter". Compare also other implicit references to a container and the portion/serving that it contains (''get me a water, order two sodas, have a few beers''). Many languages do not distinguish between countable and uncountable nouns. [[#antonym|Antonym]]: ''[[#countable|countable]]'', or ''count noun''. ; [[undeclinable]] : ''See '''{{glossary|indeclinable}}'''.'' ; {{anchor|univerbation}}{{anchor|Univerbation}}[[univerbation]] : A single word formed from a fixed expression of several words. For example, the single word ''albeit'' comes from the Middle English expression ''al be it'', in which ''al'' means ''although''. ; {{anchor|usage notes}}usage notes : Additional information on current and historic use of the term in written or spoken language. ==V== ; ''v'' : ''See '''{{glossary|verb}}'''.'' ; {{anchor|var.}}{{anchor|varia lectio}}{{anchor|variae lectiones}}{{anchor|variant reading}}{{anchor|variant}}[[varia lectio]], [[variant reading]], [[variant]] : Any one of the readings of a given word or passage in a text which differ from copy to copy, from edition to edition, from manuscript to manuscript, or from translation to translation. ; {{anchor|velar}}[[velar]] : A [[#consonant|consonant]] made with the tongue touching the [[soft palate]] (also known as the [[velum]]). In English these include {{IPAchar|/k/}}, {{IPAchar|/ɡ/}}, {{IPAchar|/ŋ/}}, as in the final consonants of ''sack'', ''sag'', and ''sang'', respectively. ; {{anchor|verb}}{{anchor|verbs}}[[verb]] : A word that indicates an action, occurrence or state of being. The [[#inflection|inflection]] of verbs is commonly called [[#conjugation|conjugation]]. ; {{anchor|verbal noun}}[[verbal noun]] : A [[noun]] formed from a [[verb]]. ; {{anchor|verlan}}[[verlan]] : A type of [[#backslang|backslang]] used in French, in which the order of the [[#syllable|syllables]] or sounds of words is changed, usually with the last [[#syllable|syllable]] coming first. Examples are {{m|fr|barjot}} from {{m|fr|jobard||crazy}} and {{m|fr|meuf}} from {{m|fr|femme||woman}}. Sometimes this transformation is applied recursively, e.g. {{m|fr|beuteu}}, a verlan form of {{m|fr|teub}}, which is itself a clipped verlan form of {{m|fr|bite||dick}}. ; {{anchor|virile}}[[virile]] : In Slavic languages, a plural [[#gender|gender]] used for groups that include men and for [[#masculine|masculine]] personal nouns. ; {{anchor|අලප්}}{{anchor|අලප් විබත්}}{{anchor|vocative}}{{anchor|vocative case}} [[අලප් විබත්]] ([[vocative case]]) : A [[#case|case]] which indicates that someone or something is being directly addressed (spoken to), often by name. For example, in the English phrase ''He's dead, Jim'' the name {{m|en|Jim}} would be a vocative. ; {{anchor|voice}}[[voice]] : A verb characteristic (expressed in some languages by inflection) indicating its relationship with the subject. The usual voices are: [[#active voice|active]], [[#passive voice|passive]] and [[#middle voice|middle]]. (See also {{pedia|Voice (grammar)}}.) ; {{anchor|voiced}}[[voiced]] : A sound produced with vibration of the [[vocal cord]]s; a type of [[#voicing|voicing]]. ; {{anchor|voiceless}}[[voiceless]] : A sound produced without vibration of the [[vocal cord]]s; a type of [[#voicing|voicing]]. ; {{anchor|voicing}}[[voicing]] : A characteristic of sounds, indicating whether they are produced with vibration of the [[vocal cord]]s. In English, all [[#vowel|vowels]] are voiced, as well as all [[#approximant|approximant]] consonants, but [[#plosive|plosive]] and [[#fricative|fricative]] consonants can be either voiced or voiceless. Examples of voiced sounds in English are {{IPAchar|/v/}}, {{IPAchar|/z/}}, {{IPAchar|/b/}}, {{IPAchar|/d/}}, and the corresponding voiceless sounds are {{IPAchar|/f/}}, {{IPAchar|/s/}}, {{IPAchar|/p/}}, {{IPAchar|/t/}}. Whispering is a type of speech production in which all sounds are pronounced voiceless. ; {{anchor|vowel}}[[vowel]] : A sound produced by the vocal cords with relatively little restriction of the oral cavity, forming the prominent sound of a [[#syllable|syllable]]. ; {{anchor|vulgar}}[[vulgar]] : Language considered distasteful or obscene. : See also: '''{{glossary|offensive}}''', '''{{glossary|pejorative}}'''. ==W== ; {{anchor|wanderwort}}{{anchor|wanderword}}[[Wanderwort]] or [[wanderword]] : A wordform which has spread over a substantial area, or to many regions, outside of that of its language of origin, typically due to cultural exchange resulting from travel and trade. Wanderworts are a type of [[#loanword|loanword]], but a Wanderwort may or may not be an {{glossary|areal}} word. See also ''{{glossary|Kulturwort}}''. Contrast [[#stratum|strata]]. ; {{anchor|weak declension}}{{l|en|weak declension}} : A declension of adjectives and nouns in several {{w|Germanic languages}}, which originally had (and in some languages still have) an ''-n-'' in most of their forms. The weak adjective declension is used in conjunction with [[#definite|definite]] [[#article|article]]s. The weak noun declension is simply one of several possible noun declensions, so-named because it uses the same endings as weak adjectives. See the Wikipedia article on the {{w|weak inflection}} for more information. ; {{anchor|weak pronoun}}{{anchor|weak_pronoun}}{{l|en|weak pronoun}} : A pronoun of one syllable which is dependent on another word and cannot be used on its own; sometimes called ''[[#clitic|clitic]]''. Compare with [[#emphatic|emphatic]] or [[#strong verb|strong]]. ; {{anchor|weak verb}}[[weak verb]] : In [[Germanic]] languages, a verb that forms the past tense using a suffix containing a [[dental]] consonant (''d'', ''t'', ''ð'' or similar). Verbs of this type are considered "regular" in most Germanic languages, but there are also irregular weak verbs, such as English {{m|en|think}}, {{m|en|thought}} and {{m|en|have}}, {{m|en|had}}. Contrast [[#strong verb|strong verb]], [[#preterite-present verb|preterite-present verb]]. ; {{anchor|WMF}}WMF : Wikimedia Foundation, Inc., the parent organization of Wiktionary and other projects. ; {{anchor|women's speech}}[[women]]'s [[speech]] : In certain languages (for example, {{w|Karajá language}}), men and women use or historically used distinct words and inflected forms. ==X== ; {{anchor|X-SAMPA}}[[X-SAMPA]] : [[w:X-SAMPA|Extended SAMPA]], a system for representing the full [[International Phonetic Alphabet]] (IPA) in plain text ([[ASCII]]). For a template that converts X-SAMPA to IPA, see {{temp|x2i}}. ==Y== ==Z== ; {{anchor|zero-grade}}{{anchor|zero grade}}[[zero-grade]] : In [[Proto-Indo-European]] [[linguistics]], an [[ablaut]] form of a root characterized by the absence of the basic ablauting [[#vowel|vowel]] [[#phoneme|phonemes]] */e/ and */o/. For example, {{m|ine-pro||*bʰr̥-}} is the '''zero-grade''' of the Indo-European root {{m|ine-pro|*bʰer-}} meaning ‘to carry, bear’. [[ප්‍රවර්ගය:වික්ෂනරි මූලාශ්‍ර|Glossary]] [[en:Appendix:Glossary]] blbg1g9w09kur6nj0nysdlw5jh880mc Module:sinhala 828 5451 235330 234896 2026-06-01T14:26:05Z Lee 19 "obsolete" සිට "අභාවයට ගිය" වෙතට 235330 Scribunto text/plain local en_utilities_module = "Module:en-utilities" local p = {} -- p stands for package local m_strutils = require("Module:en-utilities") -- ගැටළු සහගත වචන දැනට පරීක්ෂාවට ලක් කෙරෙයි local words_with_issues = { "female", "male", } local english2sinhala = {} -- සම්බන්ධ කිරීම් english2sinhala["and"] = "සහ" english2sinhala["in"] = "තුළ" -- තරමක් දිග යෙදුම් english2sinhala["Former name of"] = " සඳහා පෙර දී භාවිතා වූ නාමය" english2sinhala["former name of"] = " සඳහා පෙර දී භාවිතා වූ නාමය" english2sinhala["Alternative spelling of"] = " යන යෙදුමේ වෛකල්පික අක්ෂර වින්‍යාසයක්" english2sinhala["an alternative spelling "] = "වෛකල්පික අක්ෂර වින්‍යාසයක් " english2sinhala["Chinese simplified forms"] = "චීන සරලීකෘත ස්වරූප" english2sinhala["Initialism of"] = " යන යෙදුමේ මුලකුරු ලෙස සටහන් කළ ස්වරූපය" english2sinhala["terms inherited"] = "උරුම වූ" english2sinhala["Synonym of"] = " යන්නට සමාන අරුත් ඇති පදයක්" -- ස්ථාන නාම සඳහා english2sinhala["small village"] = "කුඩා ගම්මානය" -- විශේෂ english2sinhala["the simplified"] = "සරලීකෘත" english2sinhala["related-to"] = "ආශ්‍රිත" english2sinhala["Name"] = "නාම" english2sinhala["name"] = "නාම" english2sinhala["set"] = "කුලක" english2sinhala["type"] = "වර්ග" english2sinhala["grouping"] = "කාණ්ඩ" -- සැකිලි ප්‍රවර්ග සඳහා අවශ්‍ය දත්ත english2sinhala["Auto-table"] = "ස්වයංක්‍රීය-වගු" english2sinhala["data"] = "දත්ත" english2sinhala["Data"] = "දත්ත" english2sinhala["Administration"] = "පරිපාලන" english2sinhala["Archive"] = "ලේඛනාරක්ෂණ" english2sinhala["Audio"] = "ශ්‍රව්‍ය සහාය" english2sinhala["Number"] = "සංඛ්‍යා" english2sinhala["Morphology"] = "පදිම විචාර" english2sinhala["String manipulation"] = "පෙළ හැසිරවීම්" -- english2sinhala["derivational"] = "ව්‍යුත්පන්නක" english2sinhala["nominal"] = "නොමිනල්" -- english2sinhala["data modules"] = "දත්ත මොඩියුල" english2sinhala["Sortkey-generating"] = "සෝට්කී-ජනක" english2sinhala["Page generation"] = "පිටු ජනක" -- english2sinhala["Template"] = "සැකිල්ල" -- english2sinhala["Pronunciation"] = "උච්චාරණ" english2sinhala["Verification"] = "සත්‍යාපන" -- english2sinhala["Etymology templates"] = "නිරුක්ති සැකිලි" english2sinhala["Translation templates"] = "පරිවර්තන සැකිලි" english2sinhala["Appendix templates"] = "උපග්‍රන්ථ සැකිලි" english2sinhala["reference templates"] = "මූලාශ්‍ර සැකිලි" -- english2sinhala["poetic terms"] = "කාව්‍යමය යෙදුම්" -- english2sinhala["hanja"] = "හන්ජා" english2sinhala["hanzi"] = "හන්සු" -- english2sinhala["Character"] = "අනුලක්ෂණ" english2sinhala["symbols"] = "සංකේත" english2sinhala["clipping"] = "ක්ලිප් කිරීම" english2sinhala["roots"] = "මූල" english2sinhala["morphemes"] = "පදාණු" english2sinhala["morpheme"] = "පදාණුව" english2sinhala["punctuation marks"] = "විරාම ලක්‍ෂණ" -- english2sinhala["imperative"] = "විධි ක්‍රියා" english2sinhala["nominative"] = "පෙර විබත්" english2sinhala["ablative"] = "අවදි විබත්" english2sinhala["vocative"] = "අලප් විබත්" -- english2sinhala["transitive"] = "සකර්මක" english2sinhala["intransitive"] = "අකර්මක" -- english2sinhala["uncomparable"] = "සැසඳිය නොහැකි" english2sinhala["comparable"] = "සැසඳිය හැකි" -- english2sinhala["uncomparable adjectives"] = "සැසඳිය නොහැකි නාම විශේෂණ පද" english2sinhala["comparable adjectives"] = "සැසඳිය හැකි නාම විශේෂණ පද" english2sinhala["epicene adjectives"] = "උභයලිංගික නාම විශේෂණ පද" english2sinhala["transitive verbs"] = "සකර්මක ක්‍රියා පද" -- english2sinhala["first-person"] = "උත්තම පුරුෂ" english2sinhala["first person"] = "උත්තම පුරුෂ" english2sinhala["third-person"] = "අන්‍ය පුරුෂ" english2sinhala["third person"] = "අන්‍ය පුරුෂ" -- english2sinhala["gender"] = "ලිංග භේදය" english2sinhala["feminine"] = "ස්ත්‍රී ලිංග" english2sinhala["masculine"] = "පුරුෂ ලිංග" english2sinhala["female"] = "ස්ත්‍රී ලිංග" english2sinhala["male"] = "පුරුෂ ලිංග" english2sinhala["unknown-gender"] = "ලිංග භේදය නොදන්නා" english2sinhala["given names"] = "පුද්ගල නාම" english2sinhala["given name"] = "පුද්ගල නාමය" english2sinhala["female given names"] = "ස්ත්‍රී ලිංග පුද්ගල නාම" english2sinhala["male given names"] = "පුරුෂ ලිංග පුද්ගල නාම" english2sinhala["male given name"] = "පුරුෂ ලිංග පුද්ගල නාමය" english2sinhala["diminutives of "] = " සඳහා වන අල්පාර්ථ පද" english2sinhala["diminutives of male given names"] = "පුරුෂ ලිංග පුද්ගල නාම සඳහා වන අල්පාර්ථ පද" -- english2sinhala["pronoun forms"] = "සර්වනාම ස්වරූප" english2sinhala["proper noun forms"] = "සංඥා නාම පද ස්වරූප" english2sinhala["adjective forms"] = "නාම විශේෂණ පද ස්වරූප" english2sinhala["noun forms"] = "නාම පද ස්වරූප" english2sinhala["verb forms"] = "ක්‍රියා පද ස්වරූප" english2sinhala["suffix form"] = "ප්‍රත්‍ය ස්වරූපය" english2sinhala["suffix forms"] = "ප්‍රත්‍ය ස්වරූප" english2sinhala["quotation"] = "උපුටා දැක්වීම" english2sinhala["quotations"] = "උපුටා දැක්වීම්" english2sinhala["usage example"] = "භාවිත නිදර්ශනය" english2sinhala["usage examples"] = "භාවිත නිදර්ශන" english2sinhala["Wikipedia"] = "විකිපීඩියාව" english2sinhala["wikipedia"] = "විකිපීඩියාව" english2sinhala["singular"] = "ඒක වචන" english2sinhala["singula"] = "ඒක වචන" english2sinhala["plural"] = "බහුවචන" english2sinhala["plurals"] = "බහුවචන" english2sinhala["noun"] = "නාම පදය" english2sinhala["nouns"] = "නාම පද" english2sinhala["particle"] = "නිපාත පදය" english2sinhala["particles"] = "නිපාත පද" english2sinhala["verb"] = "ක්‍රියා පදය" english2sinhala["verbs"] = "ක්‍රියා පද" english2sinhala["adjective"] = "නාම විශේෂණ පදය" english2sinhala["adjectives"] = "නාම විශේෂණ පද" english2sinhala["adverb"] = "ක්‍රියා විශේෂණ පදය" english2sinhala["adverbs"] = "ක්‍රියා විශේෂණ පද" english2sinhala["prefix"] = "උපසර්ගය" english2sinhala["prefixes"] = "උපසර්ග" english2sinhala["suffix"] = "ප්‍රත්‍යය" english2sinhala["suffixes"] = "ප්‍රත්‍ය" english2sinhala["letter"] = "අකුර" english2sinhala["letters"] = "අකුරු" english2sinhala["numeral"] = "සංඛ්‍යාංකය" english2sinhala["numerals"] = "සංඛ්‍යාංක" english2sinhala["numeral symbol"] = "සංඛ්‍යාංක සංකේතය" english2sinhala["numeral symbols"] = "සංඛ්‍යාංක සංකේත" english2sinhala["numbers"] = "සංඛ්‍යාව" english2sinhala["numbers"] = "සංඛ්‍යා" english2sinhala["lemma"] = "පාඨය" english2sinhala["lemmas"] = "පාඨ" english2sinhala["pronoun"] = "සර්වනාමය" english2sinhala["pronouns"] = "සර්වනාම" english2sinhala["phrase"] = "වාක්‍ය ඛණ්ඩය" english2sinhala["phrases"] = "වාක්‍ය ඛණ්ඩ" english2sinhala["phrasebook"] = "වාක්‍ය ඛණ්ඩ පොත" english2sinhala["Geography"] = "භූගෝලවේදය" english2sinhala["geography"] = "භූගෝලවේදය" english2sinhala["Oceanography"] = "සාගරවේදය" english2sinhala["oceanography"] = "සාගරවේදය" english2sinhala["continent"] = "මහාද්වීපය" english2sinhala["Continent"] = "මහාද්වීපය" english2sinhala["continents"] = "මහාද්වීප" english2sinhala["Continents"] = "මහාද්වීප" english2sinhala["island"] = "දූපත" english2sinhala["country"] = "රට" english2sinhala["countries"] = "රටවල්" english2sinhala["language"] = "භාෂාව" english2sinhala["Language"] = "භාෂාව" english2sinhala["languages"] = "භාෂා" english2sinhala["Languages"] = "භාෂා" english2sinhala["surname"] = "පෙළපත් නාමය" english2sinhala["surnames"] = "පෙළපත් නාම" english2sinhala["proper noun"] = "සංඥා නාම පදය" english2sinhala["proper nouns"] = "සංඥා නාම පද" english2sinhala["abbreviation"] = "කෙටි යෙදුම" english2sinhala["abbreviations"] = "කෙටි යෙදුම්" english2sinhala["interjections"] = "විශ්මයාර්ථ පද" english2sinhala["misspellings"] = "අක්ෂර වින්‍යාස දෝෂ" -- -- පහත කොටසේ "terms" සඳහා "පද" යනුවෙන් භාවිතය, ගැටළු සහගත බව පෙනෙයි. -- එය "යෙදුම්" වලට මාරු කොට බලමු. -- english2sinhala["term"] = "පදය" -- english2sinhala["terms"] = "පද" -- නව ආකාරය english2sinhala["term"] = "යෙදුම" english2sinhala["terms"] = "යෙදුම්" -- english2sinhala["colle"] = "පද" english2sinhala["collective noun"] = "සමූහවාචී නාම පදය" english2sinhala["collective nouns"] = "සමූහවාචී නාම පද" english2sinhala["countable noun"] = "ගැණිය හැකි නාම පදය" english2sinhala["countable nouns"] = "ගැණිය හැකි නාම පද" english2sinhala["countable proper noun"] = "ගැණිය හැකි සංඥා නාම පදය" english2sinhala["countable proper nouns"] = "ගැණිය හැකි සංඥා නාම පද" english2sinhala["uncountable noun"] = "නොගැණිය හැකි නාම පදය" english2sinhala["uncountable nouns"] = "නොගැණිය හැකි නාම පද" english2sinhala["indeclinable nouns"] = "අව්‍යය නාම පද" english2sinhala["inflection"] = "වරනැගීම" english2sinhala["Inflection"] = "වරනැගීම" english2sinhala["inflections"] = "වරනැගීම්" english2sinhala["Inflections"] = "වරනැගීම්" english2sinhala["transliteration"] = "අක්ෂර පරිවර්තනය" english2sinhala["Transliteration"] = "අක්ෂර පරිවර්තනය" english2sinhala["transliterations"] = "අක්ෂර පරිවර්තන" english2sinhala["Transliterations"] = "අක්ෂර පරිවර්තන" english2sinhala["romanization"] = "රෝමානුකරණය" english2sinhala["romanizations"] = "රෝමානුකරණ" -- english2sinhala["entry name-generating"] = "ප්‍රවේශ නාම-ජනනය" -- english2sinhala["Entry name-generating"] = "ප්‍රවේශ නාම-ජනනය" -- english2sinhala["entry name-generatings"] = "ප්‍රවේශ නාම-ජනක" -- english2sinhala["Entry name-generatings"] = "ප්‍රවේශ නාම-ජනක" english2sinhala["Religion"] = "ආගම" english2sinhala["Buddhism"] = "බුදු දහම සහ බුද්ධාගම" english2sinhala["Places"] = "ස්ථාන" english2sinhala["places"] = "ස්ථාන" -- අක්ෂරක්‍රම english2sinhala["Cyrillic"] = "සිරිලික්" english2sinhala["Devanagari"] = "දේවනාගරි" english2sinhala["Brahmi"] = "බ්‍රාහ්මී" english2sinhala["Braille"] = "බ්‍රේල්" english2sinhala["Han"] = "හන්" english2sinhala["Hiragana"] = "හිරගනා" english2sinhala["Katakana"] = "කතකනා" english2sinhala["Flag semaphore"] = "ධජ සංඥා" -- -- [ Module:ja-see ] සඳහා english2sinhala["the hiragana spelling"] = "හිරගනා අක්ෂර වින්‍යාසය" -- භාෂා පවුල් english2sinhala["Anglic"] = "ඇන්ග්ලික්" english2sinhala["Germanic"] = "ජර්මානු" english2sinhala["Koreanic"] = "කොරියානු" english2sinhala["Indo-Aryan"] = "ඉන්දු-ආර්ය" english2sinhala["Indo-Iranian"] = "ඉන්දු-ඉරාන" english2sinhala["Middle Indo-Aryan"] = "මධ්‍යකාලීන ඉන්දු-ආර්ය" english2sinhala["Indo-European"] = "ඉන්දු-යුරෝපීය" english2sinhala["Anglo-Frisian"] = "ඇන්ග්ලෝ-ෆ්‍රිසියන්" -- භාෂා english2sinhala["Algerian Arabic"] = "ඇල්ජීරියානු අරාබි" english2sinhala["Amharic"] = "ඇම්හාරික්" english2sinhala["Ancient Greek"] = "පුරාතන ග්‍රීක" english2sinhala["Anglo-Norman"] = "ඇන්ග්ලෝ-නෝමන්" english2sinhala["Arabic"] = "අරාබි" english2sinhala["Armenian"] = "ආමේනියානු" english2sinhala["Aymara"] = "අයිමාරා" english2sinhala["Azerbaijani"] = "අසර්බයිජානි" english2sinhala["Okinawan"] = "ඔකිනවා" english2sinhala["Basque"] = "බාස්ක්" english2sinhala["Bengali"] = "බෙංගාලි" english2sinhala["Bihari"] = "බිහාරී" english2sinhala["Breton"] = "බ්‍රෙටන්" english2sinhala["Bulgarian"] = "බල්ගේරියානු" english2sinhala["Burmese"] = "බුරුම" english2sinhala["Cantonese"] = "කැන්ටනීස්" english2sinhala["Chinese"] = "චීන" english2sinhala["Min Nan"] = "මින් නන්" english2sinhala["Coptic"] = "කොප්ටික්" english2sinhala["Cornish"] = "කෝනිෂ්" english2sinhala["Czech"] = "චෙක්" english2sinhala["Danish"] = "ඩෙන්මාර්ක" english2sinhala["Dhivehi"] = "දිවෙහි" english2sinhala["Dutch"] = "ඕලන්ද" english2sinhala["Egyptian"] = "ඊජිප්තු" english2sinhala["English"] = "ඉංග්‍රීසි" english2sinhala["Old English"] = "පුරාතන ඉංග්‍රීසි" english2sinhala["Middle English"] = "මධ්‍යකාලීන ඉංග්‍රීසි" english2sinhala["Esperanto"] = "එස්පෙරාන්තො" english2sinhala["Estonian"] = "එස්තෝනියානු" english2sinhala["Finnish"] = "ෆින්ලන්ත" english2sinhala["French"] = "ප්‍රංශ" english2sinhala["Old French"] = "පුරාතන ප්‍රංශ" english2sinhala["Middle French"] = "මධ්‍යකාලීන ප්‍රංශ" english2sinhala["Georgian"] = "ජෝර්ජියානු" english2sinhala["German"] = "ජර්මානු" english2sinhala["Greek"] = "ග්‍රීක" english2sinhala["Gujarati"] = "ගුජරාටි" english2sinhala["Hebrew"] = "හීබෲ" english2sinhala["Hindi"] = "හින්දි" english2sinhala["Hungarian"] = "හංගේරියානු" english2sinhala["Icelandic"] = "අයිස්ලන්ත" english2sinhala["Indonesian"] = "ඉන්දුනීසියානු" english2sinhala["Irish"] = "අයිරිෂ්" english2sinhala["Italian"] = "ඉතාලි" english2sinhala["Japanese"] = "ජපන්" english2sinhala["Javanese"] = "ජාවා" english2sinhala["Kannada"] = "කන්නඩ" english2sinhala["Kashmiri"] = "කාෂ්මීරි" english2sinhala["Kongo"] = "කොංගෝ" english2sinhala["Korean"] = "කොරියානු" english2sinhala["Lao"] = "ලාඕ" english2sinhala["Old Latin"] = "පුරාතන ලතින්" english2sinhala["Latin"] = "ලතින්" english2sinhala["Malay"] = "මැලේ" english2sinhala["Malayalam"] = "මලයාලම්" english2sinhala["Mandarin"] = "මැන්ඩරීන්" english2sinhala["Manx"] = "මැන්ක්ස්" english2sinhala["Marathi"] = "මරාථි" english2sinhala["Mongolian"] = "මොංගෝලියානු" english2sinhala["Norwegian"] = "නෝර්වීජියානු" english2sinhala["the Netherlands"] = "නෙදර්ලන්තය" english2sinhala["Pali"] = "පාලි" english2sinhala["Persian"] = "පර්සියානු" english2sinhala["Middle Persian"] = "මධ්‍යකාලීන පර්සියානු" english2sinhala["Polish"] = "පෝලන්ත" english2sinhala["Portuguese"] = "පෘතුගීසි" english2sinhala["Prakrit"] = "ප්‍රාකෘත" english2sinhala["Helu Prakrit"] = "එළු ප්‍රාකෘත" english2sinhala["Ashokan Prakrit"] = "අශෝක ප්‍රාකෘත" english2sinhala["Epigraphic Prakrit"] = "අභිලේඛන ප්‍රාකෘත" english2sinhala["Proto-Indo-Iranian"] = "ප්‍රොටෝ-ඉන්දු-ඉරාන" english2sinhala["Proto-Italic"] = "ප්‍රොටෝ-ඉතාලිකා" english2sinhala["Proto-Indo-European"] = "ප්‍රොටෝ-ඉන්දු-යුරෝපීය" english2sinhala["Proto-Basque"] = "ප්‍රොටෝ-බාස්ක්" english2sinhala["Proto-West Germanic"] = "ප්‍රොටෝ-බටහිර ජර්මානු" english2sinhala["Proto-Germanic"] = "ප්‍රොටෝ-ජර්මානු" english2sinhala["Quechua"] = "ක්වෙච්වා" english2sinhala["Romanian"] = "රුමේනියානු" english2sinhala["Russian"] = "රුසියානු" english2sinhala["Belarusian"] = "බෙලරුසියානු" english2sinhala["Macedonian"] = "මැසඩෝනියානු" english2sinhala["Serbo-Croatian"] = "සර්බෝ-ක්‍රොඒෂියානු" english2sinhala["Sanskrit"] = "සංස්කෘත" english2sinhala["Scottish Gaelic"] = "ස්කොට්ස් ගේලික්" english2sinhala["Sindhi"] = "සින්ධි" english2sinhala["Sinhala"] = "සිංහල" english2sinhala["Sinhalese"] = "සිංහල" english2sinhala["Somali"] = "සෝමාලි" english2sinhala["Spanish"] = "ස්පාඤ්ඤ" english2sinhala["Old Spanish"] = "පුරාතන ස්පාඤ්ඤ" english2sinhala["Sundanese"] = "සුන්ඩා" english2sinhala["Swedish"] = "ස්වීඩන්" english2sinhala["Old Tamil"] = "පුරාතන දෙමළ" english2sinhala["Tamil"] = "දෙමළ" english2sinhala["Telugu"] = "තෙලිඟු" english2sinhala["Thai"] = "තායි" english2sinhala["Tibetan"] = "තිබ්බත" english2sinhala["Translingual"] = "සර්ව භාෂාමය" english2sinhala["Turkish"] = "තුර්කි" english2sinhala["Ukrainian"] = "යුක්‍රේනියානු" english2sinhala["Urdu"] = "උර්දු" english2sinhala["Uzbek"] = "උස්බෙක්" english2sinhala["Vietnamese"] = "වියට්නාම" english2sinhala["Welsh"] = "වේල්ස" english2sinhala["Yiddish"] = "යිඩිශ්" english2sinhala["Zulu"] = "සූලූ" -- රටවල් english2sinhala["Hungary"] = "හංගේරියාව" english2sinhala["Slovakia"] = "ස්ලෝවැකියාව" english2sinhala["Croatia"] = "ක්‍රොඒෂියාව" english2sinhala["Serbia"] = "සර්බියාව" english2sinhala["Afghanistan"] = "ඇෆ්ගනිස්ථානය" english2sinhala["Africa"] = "අප්‍රිකාව" english2sinhala["Algeria"] = "ඇල්ජීරියාව" english2sinhala["America"] = "ඇමෙරිකාව" english2sinhala["Armenia"] = "ආමේනියාව" english2sinhala["Asia"] = "ආසියාව" english2sinhala["South Asia"] = "දකුණු ආසියාව" english2sinhala["Australia"] = "ඕස්ට්‍රේලියාව" english2sinhala["Azerbaijan"] = "අසර්බයිජානය" english2sinhala["Bahrain"] = "බහරේනය" english2sinhala["Bangladesh"] = "බංගලිදේශය" english2sinhala["Belgium"] = "බෙල්ජියම" english2sinhala["Bhutan"] = "භූතානය" english2sinhala["Brazil"] = "බ්‍රසීලය" english2sinhala["Brunei"] = "බෲනායි" english2sinhala["Bulgaria"] = "බල්ගේරියාව" english2sinhala["Cambodia"] = "කාම්බෝජය" english2sinhala["Canada"] = "කැනඩාව" english2sinhala["Central America"] = "මධ්‍යම ඇමෙරිකාව" english2sinhala["Chile"] = "චිලී" english2sinhala["China"] = "චීනය" english2sinhala["Croatia"] = "ක්‍රොඒෂියාව" english2sinhala["Cyprus"] = "සයිප්‍රසය" english2sinhala["Denmark"] = "ඩෙන්මාර්කය" english2sinhala["Earth"] = "පෘථිවිය" english2sinhala["East Timor (Timor-Leste)"] = "නැගෙනහිර ටිමෝරය" english2sinhala["Egypt"] = "ඊජිප්තුව" english2sinhala["Europe"] = "යුරෝපය" english2sinhala["Finland"] = "ෆින්ලන්තය" english2sinhala["France"] = "ප්‍රංශය" english2sinhala["Gabon"] = "ගැබොන්" english2sinhala["Georgia"] = "ජෝජියාව" english2sinhala["Germany"] = "ජර්මනිය" english2sinhala["Ghana"] = "ඝානාව" english2sinhala["Gibraltar"] = "ජිබ්‍රෝල්ටාව" english2sinhala["Greece"] = "ග්‍රීසිය" english2sinhala["Iceland"] = "අයිස්ලන්තය" english2sinhala["India"] = "ඉන්දියාව" english2sinhala["Indonesia"] = "ඉන්දුනීසියාව" english2sinhala["Iran"] = "ඉරානය" english2sinhala["Iraq"] = "ඉරාකය" english2sinhala["Israel"] = "ඊශ්‍රායලය" english2sinhala["Italy"] = "ඉතාලිය" english2sinhala["Japan"] = "ජපානය" english2sinhala["Jordan"] = "ජෝදානය" english2sinhala["Kazakhstan"] = "කසක්ස්තානය" english2sinhala["Kuwait"] = "කුවේටය" english2sinhala["Kyrgyzstan"] = "කිර්ගිස්තානය" english2sinhala["Laos"] = "ලාඕසය" english2sinhala["Lebanon"] = "ලෙබනනය" english2sinhala["Malaysia"] = "මලයාසියාව" english2sinhala["Maldives"] = "මාලදිවයින" english2sinhala["Mongolia"] = "මොන්ගෝලියාව" english2sinhala["Myanmar"] = "මියන්මාරය" english2sinhala["Nepal"] = "නේපාලය" english2sinhala["North America"] = "උතුරු ඇමෙරිකාව" english2sinhala["North Korea"] = "උතුරු කොරියාව" english2sinhala["Oceania"] = "ඕෂනියාව" english2sinhala["Oman"] = "ඕමානය" english2sinhala["Pakistan"] = "පාකිස්ථානය" english2sinhala["Philippines"] = "පිලිපීනය" english2sinhala["Poland"] = "පෝලන්තය" english2sinhala["Portugal"] = "පෘතුගාලය" english2sinhala["Qatar"] = "කටාරය" english2sinhala["Romania"] = "රුමේනියාව" english2sinhala["Russia"] = "රුසියාව" english2sinhala["Saudi Arabia"] = "සෞදි අරාබිය" english2sinhala["Singapore"] = "සිංගප්පූරුව" english2sinhala["Spain"] = "ස්පාඤ්ඤය" english2sinhala["South America"] = "දකුණු ඇමෙරිකාව" english2sinhala["South Korea"] = "දකුණු කොරියාව" english2sinhala["Sri Lanka"] = "ශ්‍රී ලංකාව" english2sinhala["Sweden"] = "ස්වීඩනය" english2sinhala["Syria"] = "සිරියාව" english2sinhala["Tajikistan"] = "ටජිකිස්ථානය" english2sinhala["Thailand"] = "තායිලන්තය" english2sinhala["Turkey"] = "තුර්කිය" english2sinhala["Turkmenistan"] = "තුර්ක්මෙනිස්තානය" english2sinhala["Ukraine"] = "යුක්‍රේනය" english2sinhala["United Arab Emirates"] = "එක්සත් අරාබි එමීර් රාජ්‍යය" english2sinhala["Uzbekistan"] = "උස්බෙකිස්තානය" english2sinhala["Vietnam"] = "වියට්නාමය" english2sinhala["Yemen"] = "යේමනය" english2sinhala["Zambia"] = "සැම්බියාව" english2sinhala["Zimbabwe"] = "සිම්බාබ්වේ" english2sinhala["the Gambia"] = "ගැම්බියාව" english2sinhala["the United States"] = "යුනයිටඩ් ස්ටේට්ස්" english2sinhala["the world"] = "ලෝකය" local singular2plural = {} -- විශේෂ singular2plural["දත්ත"] = "දත්ත" -- singular2plural["හන්ජා"] = "හන්ජා" singular2plural["සැකිල්ල"] = "සැකිලි" singular2plural["මූලය"] = "මූල" -- singular2plural["non-lemma form"] = "ලෙමා-නොවන ස්වරූප" singular2plural["non-lemma"] = "ලෙමා-නොවන" -- singular2plural["ක්ලිප් කිරීම"] = "ක්ලිප් කිරීම්" singular2plural["පදාණුව"] = "පදාණු" singular2plural["උපුටා දැක්වීම"] = "උපුටා දැක්වීම්" singular2plural["භාවිත නිදර්ශනය"] = "භාවිත නිදර්ශන" singular2plural["අබුගිඩා"] = "අබුගිඩා" singular2plural["ජර්මානු පුරුෂ ලිංග, නාම පදය"] = "ජර්මානු පුරුෂ ලිංග, නාම පද" singular2plural["ස්පාඤ්ඤ පුරුෂ ලිංග, නාම පදය"] = "ස්පාඤ්ඤ පුරුෂ ලිංග, නාම පද" singular2plural["පුරුෂ ලිංග නාම පදය"] = "පුරුෂ ලිංග නාම පද" singular2plural["පුරුෂ ලිංග, නාම පදය"] = "පුරුෂ ලිංග, නාම පද" singular2plural["පුරුෂ ලිංග පුද්ගල නාමය"] = "පුරුෂ ලිංග පුද්ගල නාම" singular2plural["ස්ත්‍රී ලිංග, නාම පදය"] = "ස්ත්‍රී ලිංග, නාම පද" singular2plural["බහුවචනය"] = "බහුවචන" singular2plural["නාම පදය"] = "නාම පද" singular2plural["නිපාත පදය"] = "නිපාත පද" singular2plural["ක්‍රියා පදය"] = "ක්‍රියා පද" singular2plural["නාම විශේෂණ පදය"] = "නාම විශේෂණ පද" singular2plural["ක්‍රියා විශේෂණ පදය"] = "ක්‍රියා විශේෂණ පද" singular2plural["ප්‍රත්‍ය ස්වරූපය"] = "ප්‍රත්‍ය ස්වරූප" singular2plural["ප්‍රත්‍යය"] = "ප්‍රත්‍ය" singular2plural["අකුර"] = "අකුරු" singular2plural["පාඨය"] = "පාඨ" singular2plural["සර්වනාමය"] = "සර්වනාම" singular2plural["මහාද්වීපය"] = "මහාද්වීප" singular2plural["දූපත"] = "දූපත්" singular2plural["රට"] = "රටවල්" singular2plural["භාෂාව"] = "භාෂා" singular2plural["පෙළපත් නාමය"] = "පෙළපත් නාම" singular2plural["සංඥා නාම පදය"] = "සංඥා නාම පද" singular2plural["කෙටි යෙදුම"] = "කෙටි යෙදුම්" singular2plural["පදය"] = "පද" singular2plural["සමූහවාචී නාම පදය"] = "සමූහවාචී නාම පද" singular2plural["ගැණිය හැකි නාම පදය"] = "ගැණිය හැකි නාම පද" singular2plural["ගැණිය හැකි සංඥා නාම පදය"] = "ගැණිය හැකි සංඥා නාම පද" singular2plural["වරනැගීම"] = "වරනැගීම්" singular2plural["සංඛ්‍යාංක සංකේතය"] = "සංඛ්‍යාංක සංකේත" singular2plural["අක්ෂර පරිවර්තනය"] = "අක්ෂර පරිවර්තන" -- singular2plural["ප්‍රවේශ නාම-ජනනය"] = "ප්‍රවේශ නාම-ජනක" local english2adjective = {} english2adjective["archaic"] = "පෞරාණික" english2adjective["dated"] = "යල් පැන ගිය" english2adjective["obsolete"] = "අභාවයට ගිය" english2adjective["List"] = "ලැයිස්තු" english2adjective["Entry name-generating"] = "ප්‍රවේශ නාම-ජනක" english2adjective["nominal"] = "නොමිනල්" english2adjective["Maintenance"] = "නඩත්තු කටයුතු" english2adjective["mixed"] = "මිශ්‍ර" english2adjective["Testcase"] = "පිරික්සුම් ආදර්ශක" english2adjective["Language and script"] = "භාෂා සහ අක්ෂරක්‍රම" english2adjective["Transliteration"] = "අක්ෂර පරිවර්තන" english2adjective["Transliteration testcases"] = "අක්ෂර පරිවර්තන පිරික්සුම් ආදර්ශක" english2adjective["Utility"] = "උපයෝගිතා" english2adjective["Headword-line"] = "යොමු වචන පේළි" english2adjective["Language-specific utility"] = "භාෂාවක් හා සබැඳි උපයෝගිතා" -- function p.hello( frame ) return "Hello, world!" end function p.sinhala_adjective( word ) -- require('Module:debug').track("sinhala.sinhala adjective.word = " .. word) local sinhala_word = p.sinhala( word ) -- require('Module:debug').track("sinhala.sinhala adjective.direct translation = " .. word) -- සටහන: නාම විශේෂණය සඳහා කළ යුතු විශේෂ යමක් පවතියි ද? local adjective = p.adjective( word ) if adjective ~= nil then -- require('Module:debug').track("sinhala.sinhala adjective.adjective = " .. adjective) sinhala_word = adjective end -- return sinhala_word end function p.search_adjective( word ) local sinhala_word = nil -- require('Module:debug').track("sinhala.search adjective.word = " .. word) local trans = english2adjective[word] if trans ~= nil then -- require('Module:debug').track("sinhala.adjective.trans = " .. trans) sinhala_word = trans end return sinhala_word end function p.adjective( word ) -- -- ගැටළු සඳහා පරීක්ෂාව -- for _,v in pairs(words_with_issues) do -- if v == word then -- error("පරීක්ෂාවට ලක්වෙන ස්ථානයකි.") -- -- do something -- break -- end -- end -- require('Module:debug').track("sinhala.adjective.word = " .. word) -- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න local adjective = p.search_adjective( word ) if adjective ~= nil then -- require('Module:debug').track("sinhala.adjective.adjective = " .. adjective) return adjective end -- බොහෝවිට නාම විශේෂණ ස්වරූපය වන්නේ බහු වචනය නේ ද? local sinhala_plural = p.sinhala_plural( word ) if sinhala_plural ~= nil then -- require('Module:debug').track("sinhala.adjective.sinhala plural = " .. sinhala_plural) return sinhala_plural end local plural = p.plural( word ) if plural ~= nil then -- require('Module:debug').track("sinhala.adjective.plural = " .. plural) return plural end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි වචනයම ලබා දෙන්න return word end function p.sinhala_plural( word ) local sinhala_word = p.sinhala( word ) return p.plural( sinhala_word ) end function p.sinhala( word ) -- -- ගැටළු සඳහා පරීක්ෂාව -- for _,v in pairs(words_with_issues) do -- if v == word then -- error("පරීක්ෂාවට ලක්වෙන ස්ථානයකි.") -- -- do something -- break -- end -- end local trans = english2sinhala[word] -- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න if trans ~= nil then return trans end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි වචනයම ලබා දෙන්න return word end function p.search_plural( word ) local result = nil if word ~= nil then -- require('Module:debug').track("sinhala.search plural.word = " .. word) local plural_word = singular2plural[word] -- දත්ත ලැයිස්තුව මුලින්ම පරික්ෂාකර බලන්න if plural_word ~= nil then -- require('Module:debug').track("sinhala.search plural.plural word = " .. plural_word) return plural_word end end return result end function p.plural( word ) if word ~= nil then local result = p.search_plural( word ) if result ~= nil then return result end -- ලතින් අකුරු නොවේ නම් බොහෝ විට සිංහල වචනයක් විය හැකිය. -- require('Module:debug').track("sinhala.plural.word = " .. word) if not string.find(word, "%a$") then return word end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි ආකාරයේ වචනයම ලබා දෙන්න return m_strutils.pluralize(word) -- if word:find("x$") then -- return word .. "es" -- else -- return word .. "s" -- end end return word end local function pluralize(...) pluralize = require(en_utilities_module).pluralize return pluralize(...) end function p.sinhala_pluralize( word ) if word ~= nil then local result = p.search_plural( word ) if result ~= nil then return result end -- නොදන්නා වචන සඳහා ඉංග්‍රීසි ආකාරයේ වචනයම ලබා දෙන්න return pluralize( word ) end return word end return p 6e9mvex1mkqqztewobhgjmj1cj2mbp6 Module:category tree/pragmatic properties 828 6062 235265 228217 2026-04-29T02:27:38Z en>Koavf 0 Reverted edits by [[Special:Contributions/Koavf|Koavf]]. If you think this rollback is in error, please leave a message on my talk page. 235265 Scribunto text/plain local labels = {} local raw_categories = {} local string_utilities_module = "Module:string utilities" local ucfirst = require(string_utilities_module).ucfirst ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by usage"] = { description = "{{{langname}}} terms categorized by the manner and context in which they are used by speakers.", umbrella_parents = "Fundamental", parents = {{name = "{{{langcat}}}", raw = true}}, } local function generate_category_with_senses(typ, desc, distinguish, other_types_in_group) if distinguish then distinguish = "\n\n" .. distinguish else distinguish = "" end local function make_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, ("Category:{{{langname}}} " .. pos):format(other_type)) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end local function make_umbrella_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, "Category:" .. ucfirst((pos .. " by language"):format(other_type))) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end labels[("%s terms"):format(typ)] = { description = ("{{{langname}}} terms that %s."):format(desc), additional = ("To categorize into this category, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword.\n\nIf the term is merely a variant (alternative form) of a term " .. "in general use, it should be categorized instead in {{cl|{{{langname}}} %s forms}} (using " .. "{{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}). If only some senses of the term are %s, " .. "it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, using {{tl|lb|{{{langcode}}}|%s}} " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), parents = {"terms by usage"}, preceding = make_preceding("%s terms"), umbrella = { preceding = make_umbrella_preceding("%s terms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> " .. "(template '''tlb''', not '''lb'''), which should typically be placed next to the headword. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized instead in " .. "{{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>). " .. "If only some senses of the term are %s, it should be categorized instead in {{cl|<var>langname</var> terms with %s senses}}, " .. "using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''lb''' instead of '''tlb'''), which should " .. "typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), } } labels[("terms with %s senses"):format(typ)] = { description = ("{{{langname}}} terms with individual senses that %s."):format(desc), additional = ("To categorize into this category, use {{tl|lb|{{{langcode}}}|%s}} (template '''lb''', not '''tlb'''), " .. "which should typically be placed next to the individual sense.\n\nIf the term itself, in all its senses, is %s, " .. "it should be placed in {{cl|{{{langname}}} %s terms}} instead, using {{tl|tlb|{{{langcode}}}|%s}} " .. "(template '''tlb''' instead of '''lb'''), which should typically be placed next to the headword. " .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized in " .. "{{cl|{{{langname}}} %s forms}} (using {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}).%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), parents = {{name = "terms by usage", sort = ("%s senses"):format(typ)}}, breadcrumb = ("with %s senses"):format(typ), preceding = make_preceding("terms with %s senses"), umbrella = { preceding = make_umbrella_preceding("terms with %s senses"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''', not '''tlb'''), which should typically be placed next to the individual sense. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term itself, in all its senses, is %s, it should be placed in {{cl|<var>langname</var> %s terms}} instead, using " .. "<code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> (template '''tlb''' instead of '''lb'''), which should " .. "typically be placed next to the headword. If the term is merely a variant (alternative form) of a term in general use, " .. "it should be categorized in {{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), } } labels[("%s forms"):format(typ)] = { description = ("{{{langname}}} forms that %s; and serve as alternative forms of the same terms in general use."):format(desc), additional = ("To categorize into this category, use {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}.\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|{{{langname}}} %s terms}} " .. "instead; to do this, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), which should typically be placed next to the " .. "headword. If only some senses of the term are %s, it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, " .. "using {{tl|lb|{{{langcode}}}|%s}} (template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), parents = {{name = ("%s terms"):format(typ), sort = "forms"}}, breadcrumb = "forms", preceding = make_preceding("%s forms"), umbrella = { preceding = make_umbrella_preceding("%s forms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>. (<code><var>langcode</var></code> is the " .. "appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|<var>langname</var> %s terms}} " .. "instead; to do this, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword. If only some senses of the term are %s, it should be categorized instead " .. "in {{cl|<var>langname</var> terms with %s senses}}, using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), } } end local function generate_related_categories_with_senses(info) for typ, spec in pairs(info) do local other_types = {} for other_type, _ in pairs(info) do if other_type ~= typ then table.insert(other_types, other_type) end end table.sort(other_types) generate_category_with_senses(typ, spec.desc, spec.distinguish, other_types) end end generate_related_categories_with_senses { archaic = { desc = "are no longer in general use but still encountered in older literature, sometimes still used for special effect, and typically recognized by native speakers", distinguish = "Archaic POS should be distinguished from dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers; and on the other hand from obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, dated = { desc = "are no longer fashionable and thus are [[anachronistic]], but still sometimes in use, especially by older speakers", distinguish = "Dated POS should be distinguished from archaic POS, which are no longer in use (except occasionally for special effect) but are still sometimes encountered in older literature and are typically recognized by native speakers; and obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, obsolete = { desc = "are no longer in use and not usually recognized by native speakers, but still sometimes found in older literature", distinguish = "Obsolete POS should be distinguished from archaic POS, which, although no longer in general use, are still occasionally used for special effect and are typically recognized by native speakers; and dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers.", }, } generate_related_categories_with_senses { rare = { desc = "are rarely found in general use and may not be recognized by some native speakers", distinguish = "Rare POS should be distinguished from uncommon POS, which are not common but used enough to be generally recognized.", }, uncommon = { desc = "are in general use but not common", distinguish = "Uncommon POS should be distinguished from rare POS, which are infrequent enough that they are sometimes not recognized by native speakers.", }, } labels["2channel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|2channel}}.", parents = {"internet slang"}, } labels["4chan slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|4chan}}.", parents = {"internet slang"}, } labels["4chan /lgbt/ slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the /lgbt/ board of the website {{w|4chan}}.", parents = {"4chan slang", "LGBTQ slang"}, } labels["angry register terms"] = { description = "{{{langname}}} terms belonging to an angry linguistic register, used only when the speaker is angry.", parents = {"terms by usage"}, } labels["anti-LGBTQ slurs"] = { description = "{{{langname}}} terms that are intended to offend [[LGBTQ]] people.", parents = {"offensive terms"}, } labels["autological terms"] = { description = "{{{langname}}} terms that possess the property they themselves describe.", parents = {"terms by usage"}, } labels["back slang"] = { description = "{{{langname}}} terms in which the written word is spoken phonemically backwards to form a coded language.", parents = {"cant"}, } labels["cant"] = { description = "{{{langname}}} terms used to form secret languages that are typically restricted to members of a specific group.", parents = {"slang"}, } labels["censored spellings"] = { description = "{{{langname}}} spellings where some characters have been changed in an effort to reduce the shock value of the original term.", parents = {"terms by usage"}, } labels["childish terms"] = { description = "{{{langname}}} terms that are typically only used by, or to, children.", parents = {"terms by usage", "informal terms"}, } labels["colloquialisms"] = { description = "{{{langname}}} terms that are likely to be used primarily in casual conversation rather than in more formal written works, speeches, and discourse.", parents = {"terms by usage"}, } labels["corporate jargon"] = { description = "{{{langname}}} terms (typically for non-business-specific concepts) that are used especially in a [[business]] or [[corporate]] [[context]].", additional = "See also [[:Category:Businesses]], [[:Category:Business]] and language-specific categories thereof for terms related to business-specific concepts.", parents = {"terms by usage"}, } labels["criminal slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to criminals.", parents = {"slang"}, } labels["derogatory terms"] = { description = "{{{langname}}} terms that are intended to [[disparage]], [[demean]], [[insult]] or [[offend]].", parents = {"terms by usage"}, } labels["dialectal terms"] = { description = "{{{langname}}} terms that are not used in standard language but only in dialects.", parents = {"terms by usage"}, } labels["dis legomena"] = { description = "{{{langname}}} terms that are attested only twice in the entire corpus.", parents = {"terms by usage"}, } labels["drag slang"] = { description = "{{{langname}}} [[slang]] terms used in the [[drag]] community.", parents = {"LGBTQ slang"}, } labels["ecclesiastical terms"] = { description = "{{{langname}}} terms used only by religious figures.", parents = {"terms by usage"}, } labels["eggcorns"] = { description = "{{{langname}}} [[eggcorn]]s, terms which are misconstructed.", parents = {"misconstructions"}, } labels["emoticons"] = { description = "{{{langname}}} characters, or sequences of characters, that imitate expressions and other objects by means of [[pareidolia]].", parents = {"internet slang", "text messaging slang"}, } labels["endearing terms"] = { description = "{{{langname}}} terms that are used to show affection or endearment to another person.", parents = {"terms by usage"}, } labels["ethnic slurs"] = { description = "{{{langname}}} terms that are intended to offend certain ethnic groups.", parents = {"offensive terms"}, } labels["expressive terms"] = { description = "{{{langname}}} terms with additional expressive content compared with the basic meaning of the term.", additional = "This term is common in Slavic lexicography and is found in most Czech, Slovak and Polish dictionaries, but there is no exact equivalent in English lexicography. The closest equivalents might be a combination of ''colloquial'' and either ''endearing'' or ''pejorative'', as the case may be.", parents = {"terms by usage"}, } labels["eye dialect"] = { description = "{{{langname}}} nonstandard spellings, which however do not change pronunciation, deliberately used by an author to indicate that the speaker uses a nonstandard or dialectal speech.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["familiar terms"] = { description = "{{{langname}}} terms whose use is typically to contexts of friendly intimacy.", parents = {"terms by usage"}, } labels["fandom slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to fans of one or more works of fiction.", parents = {"slang"}, } labels["filter-avoidance spellings"] = { description = "Deliberate misspellings of {{{langname}}} terms that are used to avoid [[w:Wordfilter|wordfilters]].", parents = {"deliberate misspellings"}, } labels["folk poetic terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of oral or folk poetry.", parents = {"terms by usage", "poetic terms"}, } labels["formal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to polite, ceremonious, non-casual contexts.", parents = {"terms by usage"}, } labels["gay slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to homosexual people.", parents = {"LGBTQ slang"}, } labels["gender-critical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to gender-critical feminists.", parents = {"slang", "Category:{{{langcode}}}:Gender-critical feminism"}, } labels["gender-neutral terms"] = { description = "{{{langname}}} terms that are applicable to all people, independent of gender.", parents = {"terms by usage"}, } labels["graffiti slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to creators of [[graffiti#Noun|graffiti]].", parents = {"slang", "Category:{{{langcode}}}:Art"}, } labels["higher register terms"] = { description = "{{{langname}}} terms belonging to a higher linguistic register, such as literary terms; such terms are somewhat less common or known.", parents = {"terms by usage"}, } labels["historical terms"] = { description = "{{{langname}}} terms that refer to obsolete things or concepts.", parents = {"terms by usage"}, } labels["honorific terms"] = { description = "{{{langname}}} [[honorific]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["polite terms"] = { description = "{{{langname}}} [[polite]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["hapax legomena"] = { description = "{{{langname}}} terms that are attested only once in the entire corpus.", parents = {"terms by usage"}, } labels["humble terms"] = { description = "{{{langname}}} [[humble]] terms, which are used to show humility towards the addressee, indicating that the speaker has a lower social standing.", parents = {"honorific terms"}, } labels["hypercorrections"] = { description = "{{{langname}}} forms of other terms by misapplications of grammatical or orthographical rules.", parents = {"nonstandard terms", "nonstandard forms"}, } labels["hyperforeign terms"] = { description = "{{{langname}}} terms created by misapplying the perceived grammatical, orthographical or phonetical rules of another language.", parents = {"hypercorrections"}, } labels["incel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to incels.", parents = {"slang", "Category:{{{langcode}}}:Incel community"}, } labels["imperfective forms"] = { description = "{{{langname}}} verbs that serve as imperfective variants of perfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["informal forms"] = { description = "{{{langname}}} terms that can be used in casual, non-ceremonious conversations as alternative forms of other terms.", additional = "Informal non-lemma form variants also belong here.", parents = {"informal terms"}, } labels["informal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to casual, non‐ceremonious conversations.", parents = {"terms by usage"}, } labels["deliberate misspellings"] = { description = "Deliberate misspellings of {{{langname}}} terms.", parents = {"misspellings"}, } labels["internet laughter slang"] = { description = "{{{langname}}} [[slang]] terms that are used as substitutes for laughter in internet-related contexts.", additional = "::''Note: The majority of items that <u>could</u> be here do not meet Wiktionary's [[WT:CFI|criteria for inclusion]].''", parents = {"internet slang"}, } labels["internet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to internet users.", parents = {"slang"}, } labels["humorous terms"] = { description = "{{{langname}}} terms that are humorous, amusing or joking.", parents = {"terms by usage"}, } labels["journalistic terms"] = { description = "{{{langname}}} terms that are used especially in [[journalistic]] language, i.e. in newspapers and magazines.", parents = {"terms by usage"}, } labels["kennings"] = { description = "{{{langname}}} metaphorical compounds or phrases describing basic objects in an allusive fashion, used especially in Germanic poetry.", parents = {"poetic terms"}, } labels["leetspeak"] = { description = "{{{langname}}} which are used in [[leetspeak]], a variety of internet slang that focuses on substitution of letters by other characters which are similar in appearance.", parents = {"internet slang"}, } labels["LGBTQ slang"] = { description = "{{{langname}}} [[slang]] terms which are used predominantly among [[LGBTQ]] people.", parents = {"slang", "Category:{{{langcode}}}:LGBTQ"}, } labels["literary terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of literature.", parents = {"higher register terms"}, } labels["medical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to medical doctors, such as physicians and surgeons.", parents = {"slang"}, } labels["military slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to military personnel.", parents = {"slang"}, } labels["misconstructions"] = { description = "Terms wrongly built due to a misunderstanding of their parts.", parents = {"nonstandard forms"}, } labels["misromanizations"] = { description = "Common misromanizations of {{{langname}}} terms.", parents = {"nonstandard forms"}, } labels["misspellings"] = { description = "Common accidental misspellings of {{{langname}}} terms and some terms which are deliberate misspellings.", parents = {"nonstandard forms"}, } labels["multiplicity slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to the {{l|en|multiplicity|id=multiple personalities}} [[community]].", parents = {"slang", "Category:{{{langcode}}}:Multiplicity (psychology)"}, } labels["naval slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to naval personnel.", parents = {"military slang"}, } labels["nonstandard forms"] = { description = "{{{langname}}} forms of standard terms that are considered improper, incorrect or commonly misused.", parents = {"nonstandard terms"}, } labels["nonstandard terms"] = { description = "{{{langname}}} terms that are considered improper, incorrect or commonly misused.", parents = {"terms by usage"}, } labels["numismatic slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to numismatists.", parents = {"slang", "Category:{{{langcode}}}:Currency"}, } labels["offensive terms"] = { description = "{{{langname}}} terms that are typically considered to offend people.", parents = {"terms by usage"}, } labels["officialese terms"] = { description = "{{{langname}}} terms that are chiefly used by official sources, and are often bureaucratic-sounding.", parents = {"terms by usage"}, } labels["oxymorons"] = { description = "{{{langname}}} terms that are juxtapositions of opposing ideas.", parents = {"terms by usage"}, } labels["perfective forms"] = { description = "{{{langname}}} verbs that serve as perfective variants of imperfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["placeholder terms"] = { description = "{{{langname}}} terms used to refer to items for which one does not know or cannot recall the name, or is unable to or does not care to specify precisely.", parents = {"terms by usage"}, } labels["poetic forms"] = { description = "{{{langname}}} terms that can be used in works of poetry as poetic alternative forms of other terms.", additional = "Poetic non-lemma form variants also belong here.", parents = {"poetic terms"}, } labels["poetic terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of poetry.", parents = {"terms by usage", "literary terms"}, } labels["post-nominal letters"] = { description = "{{{langname}}} Post-nominal letters - also called post-nominal initials, post-nominal titles or designatory letters are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute or fraternity.", parents = {"terms by usage"}, } labels["prison slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to detainees in correctional institutions.", parents = {"slang"}, } labels["proscribed terms"] = { description = "{{{langname}}} terms whose usage is proscribed; thus, they are considered wrong according to prescriptive sources.", parents = {"terms by usage", "nonstandard terms"}, } labels["puristic terms"] = { description = "{{{langname}}} terms adopted for [[w:Linguistic purism|linguistic purism]].", parents = {"terms by usage"}, } labels["radio slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to radio communication.", parents = {"slang"}, } labels["Reddit slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|Reddit}}.", parents = {"internet slang"}, } labels["religious slurs"] = { description = "{{{langname}}} terms that are intended to offend members of certain religions.", parents = {"offensive terms"}, } labels["reverential terms"] = { description = "{{{langname}}} [[reverential]] terms, which are used to exalt the addressee, indicating that they have a higher social standing than the speaker.", parents = {"honorific terms"}, } labels["royal terms"] = { description = "{{{langname}}} terms used only by royalty.", parents = {"terms by usage"}, } labels["rustic terms"] = { description = "{{{langname}}} terms whose use is typically restricted rural speech.", parents = {"terms by usage"}, } labels["school slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to schools and school pupils.", parents = {"slang"}, } labels["self-deprecatory terms"] = { description = "{{{langname}}} [[self-deprecatory]] terms.", parents = {"terms by usage"}, } labels["short forms"] = { description = "{{{langname}}} terms that are [[short form]]s of other terms, often used informally.", parents = {"terms by usage", "shortenings"}, } labels["slang"] = { description = "{{{langname}}} [[colloquial]] terms that are typically used to mark membership in a cultural subgroup.", parents = {"terms by usage"}, } labels["solemn terms"] = { description = "{{{langname}}} terms that are used to instill a sense of somberness.", parents = {"terms by usage"}, } labels["student slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to colleges, universities, and their students.", parents = {"slang"}, } labels["superseded forms"] = { description = "{{{langname}}} forms that have been superseded by other forms due to changes in spelling conventions.", parents = {"terms by usage", "terms by orthographic property"}, } labels["swear words"] = { description = "{{{langname}}} terms that are used to swear, such as to express strong anger or frustration.", parents = {"vulgarities"}, } labels["technical terms"] = { description = "{{{langname}}} terms that are usually or exclusively used in technical/scientific writing.", parents = {"terms by usage"}, } labels["terms of address"] = { description = "{{{langname}}} terms used to refer to another person.", parents = {"terms by usage"}, } labels["terms used in hendiadys"] = { description = "{{{langname}}} words or senses which are used only in {{w|hendiadys}}.", parents = {"terms by usage"}, } labels["terms with historical senses"] = { description = "{{{langname}}} terms with senses that refer to things or concepts mainly known for their historical value.", parents = {"terms by usage"}, } labels["terms with transferred senses"] = { description = "{{{langname}}} terms with [[Appendix:Glossary#transferred senses|transferred senses]].", parents = {"terms by usage"}, } labels["terms with uncertain meaning"] = { description = "{{{langname}}} terms whose meaning is unknown or disputed.", parents = {"terms by usage"}, } labels["text messaging slang"] = { description = "{{{langname}}} terms used for [[text messaging]] on mobile phones or similar devices, usually consisting of heavily abbreviated forms.", parents = {"slang"}, } labels["tone indicators"] = { description = "{{{langname}}} symbols used to denote or clarify the intent of a preceeding or occasionally following message.", parents = {"internet slang"}, } labels["trademarks"] = { description = "{{{langname}}} terms that identify legal entities, their products and services, by means of legal protection — to some extent, in a number of jurisdictions — against unauthorized use of the terms.", parents = {"terms by usage"}, } labels["transgender slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to transgender people.", parents = {"LGBTQ slang", "Category:{{{langcode}}}:Transgender"}, } labels["TV Tropes slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|TV Tropes}}.", parents = {"internet slang"}, } labels["umlautless spellings"] = { description = "{{{langname}}} terms that are the result of the original terms' [[umlaut]]s being substituted.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["Usenet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of {{w|Usenet}}.", parents = {"internet slang"}, } labels["men's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#men's speech|men's speech]].", parents = {"terms by usage"}, } labels["women's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#women's speech|women's speech]].", parents = {"terms by usage"}, } labels["vulgarities"] = { description = "{{{langname}}} terms whose tone (rather than the meaning) is offensive to polite company.", parents = {"terms by usage"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Terms by usage subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by usage subcategories by language"] = { description = "Umbrella categories covering topics related to terms categorized by their usage, such as slang, obsolete or archaic forms and vulgarities.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", {name = "terms by usage", is_label = true, sort = " "}, }, } return {LABELS = labels, RAW_CATEGORIES = raw_categories} tsjuedsf82lc1tcz85zlfmoe402rtpj 235266 235265 2026-06-01T12:11:10Z Lee 19 [[:en:Module:category_tree/pragmatic_properties]] වෙතින් එක් සංශෝධනයක් 235265 Scribunto text/plain local labels = {} local raw_categories = {} local string_utilities_module = "Module:string utilities" local ucfirst = require(string_utilities_module).ucfirst ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by usage"] = { description = "{{{langname}}} terms categorized by the manner and context in which they are used by speakers.", umbrella_parents = "Fundamental", parents = {{name = "{{{langcat}}}", raw = true}}, } local function generate_category_with_senses(typ, desc, distinguish, other_types_in_group) if distinguish then distinguish = "\n\n" .. distinguish else distinguish = "" end local function make_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, ("Category:{{{langname}}} " .. pos):format(other_type)) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end local function make_umbrella_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, "Category:" .. ucfirst((pos .. " by language"):format(other_type))) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end labels[("%s terms"):format(typ)] = { description = ("{{{langname}}} terms that %s."):format(desc), additional = ("To categorize into this category, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword.\n\nIf the term is merely a variant (alternative form) of a term " .. "in general use, it should be categorized instead in {{cl|{{{langname}}} %s forms}} (using " .. "{{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}). If only some senses of the term are %s, " .. "it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, using {{tl|lb|{{{langcode}}}|%s}} " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), parents = {"terms by usage"}, preceding = make_preceding("%s terms"), umbrella = { preceding = make_umbrella_preceding("%s terms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> " .. "(template '''tlb''', not '''lb'''), which should typically be placed next to the headword. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized instead in " .. "{{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>). " .. "If only some senses of the term are %s, it should be categorized instead in {{cl|<var>langname</var> terms with %s senses}}, " .. "using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''lb''' instead of '''tlb'''), which should " .. "typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), } } labels[("terms with %s senses"):format(typ)] = { description = ("{{{langname}}} terms with individual senses that %s."):format(desc), additional = ("To categorize into this category, use {{tl|lb|{{{langcode}}}|%s}} (template '''lb''', not '''tlb'''), " .. "which should typically be placed next to the individual sense.\n\nIf the term itself, in all its senses, is %s, " .. "it should be placed in {{cl|{{{langname}}} %s terms}} instead, using {{tl|tlb|{{{langcode}}}|%s}} " .. "(template '''tlb''' instead of '''lb'''), which should typically be placed next to the headword. " .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized in " .. "{{cl|{{{langname}}} %s forms}} (using {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}).%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), parents = {{name = "terms by usage", sort = ("%s senses"):format(typ)}}, breadcrumb = ("with %s senses"):format(typ), preceding = make_preceding("terms with %s senses"), umbrella = { preceding = make_umbrella_preceding("terms with %s senses"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''', not '''tlb'''), which should typically be placed next to the individual sense. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term itself, in all its senses, is %s, it should be placed in {{cl|<var>langname</var> %s terms}} instead, using " .. "<code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> (template '''tlb''' instead of '''lb'''), which should " .. "typically be placed next to the headword. If the term is merely a variant (alternative form) of a term in general use, " .. "it should be categorized in {{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), } } labels[("%s forms"):format(typ)] = { description = ("{{{langname}}} forms that %s; and serve as alternative forms of the same terms in general use."):format(desc), additional = ("To categorize into this category, use {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}.\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|{{{langname}}} %s terms}} " .. "instead; to do this, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), which should typically be placed next to the " .. "headword. If only some senses of the term are %s, it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, " .. "using {{tl|lb|{{{langcode}}}|%s}} (template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), parents = {{name = ("%s terms"):format(typ), sort = "forms"}}, breadcrumb = "forms", preceding = make_preceding("%s forms"), umbrella = { preceding = make_umbrella_preceding("%s forms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>. (<code><var>langcode</var></code> is the " .. "appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|<var>langname</var> %s terms}} " .. "instead; to do this, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword. If only some senses of the term are %s, it should be categorized instead " .. "in {{cl|<var>langname</var> terms with %s senses}}, using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), } } end local function generate_related_categories_with_senses(info) for typ, spec in pairs(info) do local other_types = {} for other_type, _ in pairs(info) do if other_type ~= typ then table.insert(other_types, other_type) end end table.sort(other_types) generate_category_with_senses(typ, spec.desc, spec.distinguish, other_types) end end generate_related_categories_with_senses { archaic = { desc = "are no longer in general use but still encountered in older literature, sometimes still used for special effect, and typically recognized by native speakers", distinguish = "Archaic POS should be distinguished from dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers; and on the other hand from obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, dated = { desc = "are no longer fashionable and thus are [[anachronistic]], but still sometimes in use, especially by older speakers", distinguish = "Dated POS should be distinguished from archaic POS, which are no longer in use (except occasionally for special effect) but are still sometimes encountered in older literature and are typically recognized by native speakers; and obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, obsolete = { desc = "are no longer in use and not usually recognized by native speakers, but still sometimes found in older literature", distinguish = "Obsolete POS should be distinguished from archaic POS, which, although no longer in general use, are still occasionally used for special effect and are typically recognized by native speakers; and dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers.", }, } generate_related_categories_with_senses { rare = { desc = "are rarely found in general use and may not be recognized by some native speakers", distinguish = "Rare POS should be distinguished from uncommon POS, which are not common but used enough to be generally recognized.", }, uncommon = { desc = "are in general use but not common", distinguish = "Uncommon POS should be distinguished from rare POS, which are infrequent enough that they are sometimes not recognized by native speakers.", }, } labels["2channel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|2channel}}.", parents = {"internet slang"}, } labels["4chan slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|4chan}}.", parents = {"internet slang"}, } labels["4chan /lgbt/ slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the /lgbt/ board of the website {{w|4chan}}.", parents = {"4chan slang", "LGBTQ slang"}, } labels["angry register terms"] = { description = "{{{langname}}} terms belonging to an angry linguistic register, used only when the speaker is angry.", parents = {"terms by usage"}, } labels["anti-LGBTQ slurs"] = { description = "{{{langname}}} terms that are intended to offend [[LGBTQ]] people.", parents = {"offensive terms"}, } labels["autological terms"] = { description = "{{{langname}}} terms that possess the property they themselves describe.", parents = {"terms by usage"}, } labels["back slang"] = { description = "{{{langname}}} terms in which the written word is spoken phonemically backwards to form a coded language.", parents = {"cant"}, } labels["cant"] = { description = "{{{langname}}} terms used to form secret languages that are typically restricted to members of a specific group.", parents = {"slang"}, } labels["censored spellings"] = { description = "{{{langname}}} spellings where some characters have been changed in an effort to reduce the shock value of the original term.", parents = {"terms by usage"}, } labels["childish terms"] = { description = "{{{langname}}} terms that are typically only used by, or to, children.", parents = {"terms by usage", "informal terms"}, } labels["colloquialisms"] = { description = "{{{langname}}} terms that are likely to be used primarily in casual conversation rather than in more formal written works, speeches, and discourse.", parents = {"terms by usage"}, } labels["corporate jargon"] = { description = "{{{langname}}} terms (typically for non-business-specific concepts) that are used especially in a [[business]] or [[corporate]] [[context]].", additional = "See also [[:Category:Businesses]], [[:Category:Business]] and language-specific categories thereof for terms related to business-specific concepts.", parents = {"terms by usage"}, } labels["criminal slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to criminals.", parents = {"slang"}, } labels["derogatory terms"] = { description = "{{{langname}}} terms that are intended to [[disparage]], [[demean]], [[insult]] or [[offend]].", parents = {"terms by usage"}, } labels["dialectal terms"] = { description = "{{{langname}}} terms that are not used in standard language but only in dialects.", parents = {"terms by usage"}, } labels["dis legomena"] = { description = "{{{langname}}} terms that are attested only twice in the entire corpus.", parents = {"terms by usage"}, } labels["drag slang"] = { description = "{{{langname}}} [[slang]] terms used in the [[drag]] community.", parents = {"LGBTQ slang"}, } labels["ecclesiastical terms"] = { description = "{{{langname}}} terms used only by religious figures.", parents = {"terms by usage"}, } labels["eggcorns"] = { description = "{{{langname}}} [[eggcorn]]s, terms which are misconstructed.", parents = {"misconstructions"}, } labels["emoticons"] = { description = "{{{langname}}} characters, or sequences of characters, that imitate expressions and other objects by means of [[pareidolia]].", parents = {"internet slang", "text messaging slang"}, } labels["endearing terms"] = { description = "{{{langname}}} terms that are used to show affection or endearment to another person.", parents = {"terms by usage"}, } labels["ethnic slurs"] = { description = "{{{langname}}} terms that are intended to offend certain ethnic groups.", parents = {"offensive terms"}, } labels["expressive terms"] = { description = "{{{langname}}} terms with additional expressive content compared with the basic meaning of the term.", additional = "This term is common in Slavic lexicography and is found in most Czech, Slovak and Polish dictionaries, but there is no exact equivalent in English lexicography. The closest equivalents might be a combination of ''colloquial'' and either ''endearing'' or ''pejorative'', as the case may be.", parents = {"terms by usage"}, } labels["eye dialect"] = { description = "{{{langname}}} nonstandard spellings, which however do not change pronunciation, deliberately used by an author to indicate that the speaker uses a nonstandard or dialectal speech.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["familiar terms"] = { description = "{{{langname}}} terms whose use is typically to contexts of friendly intimacy.", parents = {"terms by usage"}, } labels["fandom slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to fans of one or more works of fiction.", parents = {"slang"}, } labels["filter-avoidance spellings"] = { description = "Deliberate misspellings of {{{langname}}} terms that are used to avoid [[w:Wordfilter|wordfilters]].", parents = {"deliberate misspellings"}, } labels["folk poetic terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of oral or folk poetry.", parents = {"terms by usage", "poetic terms"}, } labels["formal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to polite, ceremonious, non-casual contexts.", parents = {"terms by usage"}, } labels["gay slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to homosexual people.", parents = {"LGBTQ slang"}, } labels["gender-critical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to gender-critical feminists.", parents = {"slang", "Category:{{{langcode}}}:Gender-critical feminism"}, } labels["gender-neutral terms"] = { description = "{{{langname}}} terms that are applicable to all people, independent of gender.", parents = {"terms by usage"}, } labels["graffiti slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to creators of [[graffiti#Noun|graffiti]].", parents = {"slang", "Category:{{{langcode}}}:Art"}, } labels["higher register terms"] = { description = "{{{langname}}} terms belonging to a higher linguistic register, such as literary terms; such terms are somewhat less common or known.", parents = {"terms by usage"}, } labels["historical terms"] = { description = "{{{langname}}} terms that refer to obsolete things or concepts.", parents = {"terms by usage"}, } labels["honorific terms"] = { description = "{{{langname}}} [[honorific]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["polite terms"] = { description = "{{{langname}}} [[polite]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["hapax legomena"] = { description = "{{{langname}}} terms that are attested only once in the entire corpus.", parents = {"terms by usage"}, } labels["humble terms"] = { description = "{{{langname}}} [[humble]] terms, which are used to show humility towards the addressee, indicating that the speaker has a lower social standing.", parents = {"honorific terms"}, } labels["hypercorrections"] = { description = "{{{langname}}} forms of other terms by misapplications of grammatical or orthographical rules.", parents = {"nonstandard terms", "nonstandard forms"}, } labels["hyperforeign terms"] = { description = "{{{langname}}} terms created by misapplying the perceived grammatical, orthographical or phonetical rules of another language.", parents = {"hypercorrections"}, } labels["incel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to incels.", parents = {"slang", "Category:{{{langcode}}}:Incel community"}, } labels["imperfective forms"] = { description = "{{{langname}}} verbs that serve as imperfective variants of perfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["informal forms"] = { description = "{{{langname}}} terms that can be used in casual, non-ceremonious conversations as alternative forms of other terms.", additional = "Informal non-lemma form variants also belong here.", parents = {"informal terms"}, } labels["informal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to casual, non‐ceremonious conversations.", parents = {"terms by usage"}, } labels["deliberate misspellings"] = { description = "Deliberate misspellings of {{{langname}}} terms.", parents = {"misspellings"}, } labels["internet laughter slang"] = { description = "{{{langname}}} [[slang]] terms that are used as substitutes for laughter in internet-related contexts.", additional = "::''Note: The majority of items that <u>could</u> be here do not meet Wiktionary's [[WT:CFI|criteria for inclusion]].''", parents = {"internet slang"}, } labels["internet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to internet users.", parents = {"slang"}, } labels["humorous terms"] = { description = "{{{langname}}} terms that are humorous, amusing or joking.", parents = {"terms by usage"}, } labels["journalistic terms"] = { description = "{{{langname}}} terms that are used especially in [[journalistic]] language, i.e. in newspapers and magazines.", parents = {"terms by usage"}, } labels["kennings"] = { description = "{{{langname}}} metaphorical compounds or phrases describing basic objects in an allusive fashion, used especially in Germanic poetry.", parents = {"poetic terms"}, } labels["leetspeak"] = { description = "{{{langname}}} which are used in [[leetspeak]], a variety of internet slang that focuses on substitution of letters by other characters which are similar in appearance.", parents = {"internet slang"}, } labels["LGBTQ slang"] = { description = "{{{langname}}} [[slang]] terms which are used predominantly among [[LGBTQ]] people.", parents = {"slang", "Category:{{{langcode}}}:LGBTQ"}, } labels["literary terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of literature.", parents = {"higher register terms"}, } labels["medical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to medical doctors, such as physicians and surgeons.", parents = {"slang"}, } labels["military slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to military personnel.", parents = {"slang"}, } labels["misconstructions"] = { description = "Terms wrongly built due to a misunderstanding of their parts.", parents = {"nonstandard forms"}, } labels["misromanizations"] = { description = "Common misromanizations of {{{langname}}} terms.", parents = {"nonstandard forms"}, } labels["misspellings"] = { description = "Common accidental misspellings of {{{langname}}} terms and some terms which are deliberate misspellings.", parents = {"nonstandard forms"}, } labels["multiplicity slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to the {{l|en|multiplicity|id=multiple personalities}} [[community]].", parents = {"slang", "Category:{{{langcode}}}:Multiplicity (psychology)"}, } labels["naval slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to naval personnel.", parents = {"military slang"}, } labels["nonstandard forms"] = { description = "{{{langname}}} forms of standard terms that are considered improper, incorrect or commonly misused.", parents = {"nonstandard terms"}, } labels["nonstandard terms"] = { description = "{{{langname}}} terms that are considered improper, incorrect or commonly misused.", parents = {"terms by usage"}, } labels["numismatic slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to numismatists.", parents = {"slang", "Category:{{{langcode}}}:Currency"}, } labels["offensive terms"] = { description = "{{{langname}}} terms that are typically considered to offend people.", parents = {"terms by usage"}, } labels["officialese terms"] = { description = "{{{langname}}} terms that are chiefly used by official sources, and are often bureaucratic-sounding.", parents = {"terms by usage"}, } labels["oxymorons"] = { description = "{{{langname}}} terms that are juxtapositions of opposing ideas.", parents = {"terms by usage"}, } labels["perfective forms"] = { description = "{{{langname}}} verbs that serve as perfective variants of imperfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["placeholder terms"] = { description = "{{{langname}}} terms used to refer to items for which one does not know or cannot recall the name, or is unable to or does not care to specify precisely.", parents = {"terms by usage"}, } labels["poetic forms"] = { description = "{{{langname}}} terms that can be used in works of poetry as poetic alternative forms of other terms.", additional = "Poetic non-lemma form variants also belong here.", parents = {"poetic terms"}, } labels["poetic terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of poetry.", parents = {"terms by usage", "literary terms"}, } labels["post-nominal letters"] = { description = "{{{langname}}} Post-nominal letters - also called post-nominal initials, post-nominal titles or designatory letters are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute or fraternity.", parents = {"terms by usage"}, } labels["prison slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to detainees in correctional institutions.", parents = {"slang"}, } labels["proscribed terms"] = { description = "{{{langname}}} terms whose usage is proscribed; thus, they are considered wrong according to prescriptive sources.", parents = {"terms by usage", "nonstandard terms"}, } labels["puristic terms"] = { description = "{{{langname}}} terms adopted for [[w:Linguistic purism|linguistic purism]].", parents = {"terms by usage"}, } labels["radio slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to radio communication.", parents = {"slang"}, } labels["Reddit slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|Reddit}}.", parents = {"internet slang"}, } labels["religious slurs"] = { description = "{{{langname}}} terms that are intended to offend members of certain religions.", parents = {"offensive terms"}, } labels["reverential terms"] = { description = "{{{langname}}} [[reverential]] terms, which are used to exalt the addressee, indicating that they have a higher social standing than the speaker.", parents = {"honorific terms"}, } labels["royal terms"] = { description = "{{{langname}}} terms used only by royalty.", parents = {"terms by usage"}, } labels["rustic terms"] = { description = "{{{langname}}} terms whose use is typically restricted rural speech.", parents = {"terms by usage"}, } labels["school slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to schools and school pupils.", parents = {"slang"}, } labels["self-deprecatory terms"] = { description = "{{{langname}}} [[self-deprecatory]] terms.", parents = {"terms by usage"}, } labels["short forms"] = { description = "{{{langname}}} terms that are [[short form]]s of other terms, often used informally.", parents = {"terms by usage", "shortenings"}, } labels["slang"] = { description = "{{{langname}}} [[colloquial]] terms that are typically used to mark membership in a cultural subgroup.", parents = {"terms by usage"}, } labels["solemn terms"] = { description = "{{{langname}}} terms that are used to instill a sense of somberness.", parents = {"terms by usage"}, } labels["student slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to colleges, universities, and their students.", parents = {"slang"}, } labels["superseded forms"] = { description = "{{{langname}}} forms that have been superseded by other forms due to changes in spelling conventions.", parents = {"terms by usage", "terms by orthographic property"}, } labels["swear words"] = { description = "{{{langname}}} terms that are used to swear, such as to express strong anger or frustration.", parents = {"vulgarities"}, } labels["technical terms"] = { description = "{{{langname}}} terms that are usually or exclusively used in technical/scientific writing.", parents = {"terms by usage"}, } labels["terms of address"] = { description = "{{{langname}}} terms used to refer to another person.", parents = {"terms by usage"}, } labels["terms used in hendiadys"] = { description = "{{{langname}}} words or senses which are used only in {{w|hendiadys}}.", parents = {"terms by usage"}, } labels["terms with historical senses"] = { description = "{{{langname}}} terms with senses that refer to things or concepts mainly known for their historical value.", parents = {"terms by usage"}, } labels["terms with transferred senses"] = { description = "{{{langname}}} terms with [[Appendix:Glossary#transferred senses|transferred senses]].", parents = {"terms by usage"}, } labels["terms with uncertain meaning"] = { description = "{{{langname}}} terms whose meaning is unknown or disputed.", parents = {"terms by usage"}, } labels["text messaging slang"] = { description = "{{{langname}}} terms used for [[text messaging]] on mobile phones or similar devices, usually consisting of heavily abbreviated forms.", parents = {"slang"}, } labels["tone indicators"] = { description = "{{{langname}}} symbols used to denote or clarify the intent of a preceeding or occasionally following message.", parents = {"internet slang"}, } labels["trademarks"] = { description = "{{{langname}}} terms that identify legal entities, their products and services, by means of legal protection — to some extent, in a number of jurisdictions — against unauthorized use of the terms.", parents = {"terms by usage"}, } labels["transgender slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to transgender people.", parents = {"LGBTQ slang", "Category:{{{langcode}}}:Transgender"}, } labels["TV Tropes slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|TV Tropes}}.", parents = {"internet slang"}, } labels["umlautless spellings"] = { description = "{{{langname}}} terms that are the result of the original terms' [[umlaut]]s being substituted.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["Usenet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of {{w|Usenet}}.", parents = {"internet slang"}, } labels["men's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#men's speech|men's speech]].", parents = {"terms by usage"}, } labels["women's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#women's speech|women's speech]].", parents = {"terms by usage"}, } labels["vulgarities"] = { description = "{{{langname}}} terms whose tone (rather than the meaning) is offensive to polite company.", parents = {"terms by usage"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Terms by usage subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by usage subcategories by language"] = { description = "Umbrella categories covering topics related to terms categorized by their usage, such as slang, obsolete or archaic forms and vulgarities.", additional = "{{{umbrella_meta_msg}}}", parents = { "Umbrella metacategories", {name = "terms by usage", is_label = true, sort = " "}, }, } return {LABELS = labels, RAW_CATEGORIES = raw_categories} tsjuedsf82lc1tcz85zlfmoe402rtpj 235267 235266 2026-06-01T12:11:49Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 235267 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local string_utilities_module = "Module:string utilities" local ucfirst = require(string_utilities_module).ucfirst ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by usage"] = { description = "{{{langname}}} terms categorized by the manner and context in which they are used by speakers.", umbrella_parents = "මූලධර්ම", parents = {{name = "{{{langcat}}}", raw = true}}, } local function generate_category_with_senses(typ, desc, distinguish, other_types_in_group) if distinguish then distinguish = "\n\n" .. distinguish else distinguish = "" end local function make_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, ("Category:{{{langname}}} " .. pos):format(other_type)) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end local function make_umbrella_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, "Category:" .. ucfirst((pos .. " by language"):format(other_type))) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end labels[("%s terms"):format(typ)] = { description = ("{{{langname}}} terms that %s."):format(desc), additional = ("To categorize into this category, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword.\n\nIf the term is merely a variant (alternative form) of a term " .. "in general use, it should be categorized instead in {{cl|{{{langname}}} %s forms}} (using " .. "{{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}). If only some senses of the term are %s, " .. "it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, using {{tl|lb|{{{langcode}}}|%s}} " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), parents = {"terms by usage"}, preceding = make_preceding("%s terms"), umbrella = { preceding = make_umbrella_preceding("%s terms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> " .. "(template '''tlb''', not '''lb'''), which should typically be placed next to the headword. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized instead in " .. "{{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>). " .. "If only some senses of the term are %s, it should be categorized instead in {{cl|<var>langname</var> terms with %s senses}}, " .. "using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''lb''' instead of '''tlb'''), which should " .. "typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), } } labels[("terms with %s senses"):format(typ)] = { description = ("{{{langname}}} terms with individual senses that %s."):format(desc), additional = ("To categorize into this category, use {{tl|lb|{{{langcode}}}|%s}} (template '''lb''', not '''tlb'''), " .. "which should typically be placed next to the individual sense.\n\nIf the term itself, in all its senses, is %s, " .. "it should be placed in {{cl|{{{langname}}} %s terms}} instead, using {{tl|tlb|{{{langcode}}}|%s}} " .. "(template '''tlb''' instead of '''lb'''), which should typically be placed next to the headword. " .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized in " .. "{{cl|{{{langname}}} %s forms}} (using {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}).%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), parents = {{name = "terms by usage", sort = ("%s senses"):format(typ)}}, breadcrumb = ("with %s senses"):format(typ), preceding = make_preceding("terms with %s senses"), umbrella = { preceding = make_umbrella_preceding("terms with %s senses"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''', not '''tlb'''), which should typically be placed next to the individual sense. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term itself, in all its senses, is %s, it should be placed in {{cl|<var>langname</var> %s terms}} instead, using " .. "<code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> (template '''tlb''' instead of '''lb'''), which should " .. "typically be placed next to the headword. If the term is merely a variant (alternative form) of a term in general use, " .. "it should be categorized in {{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), } } labels[("%s forms"):format(typ)] = { description = ("{{{langname}}} forms that %s; and serve as alternative forms of the same terms in general use."):format(desc), additional = ("To categorize into this category, use {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}.\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|{{{langname}}} %s terms}} " .. "instead; to do this, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), which should typically be placed next to the " .. "headword. If only some senses of the term are %s, it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, " .. "using {{tl|lb|{{{langcode}}}|%s}} (template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), parents = {{name = ("%s terms"):format(typ), sort = "forms"}}, breadcrumb = "forms", preceding = make_preceding("%s forms"), umbrella = { preceding = make_umbrella_preceding("%s forms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>. (<code><var>langcode</var></code> is the " .. "appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|<var>langname</var> %s terms}} " .. "instead; to do this, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword. If only some senses of the term are %s, it should be categorized instead " .. "in {{cl|<var>langname</var> terms with %s senses}}, using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), } } end local function generate_related_categories_with_senses(info) for typ, spec in pairs(info) do local other_types = {} for other_type, _ in pairs(info) do if other_type ~= typ then table.insert(other_types, other_type) end end table.sort(other_types) generate_category_with_senses(typ, spec.desc, spec.distinguish, other_types) end end generate_related_categories_with_senses { archaic = { desc = "are no longer in general use but still encountered in older literature, sometimes still used for special effect, and typically recognized by native speakers", distinguish = "Archaic POS should be distinguished from dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers; and on the other hand from obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, dated = { desc = "are no longer fashionable and thus are [[anachronistic]], but still sometimes in use, especially by older speakers", distinguish = "Dated POS should be distinguished from archaic POS, which are no longer in use (except occasionally for special effect) but are still sometimes encountered in older literature and are typically recognized by native speakers; and obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, obsolete = { desc = "are no longer in use and not usually recognized by native speakers, but still sometimes found in older literature", distinguish = "Obsolete POS should be distinguished from archaic POS, which, although no longer in general use, are still occasionally used for special effect and are typically recognized by native speakers; and dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers.", }, } generate_related_categories_with_senses { rare = { desc = "are rarely found in general use and may not be recognized by some native speakers", distinguish = "Rare POS should be distinguished from uncommon POS, which are not common but used enough to be generally recognized.", }, uncommon = { desc = "are in general use but not common", distinguish = "Uncommon POS should be distinguished from rare POS, which are infrequent enough that they are sometimes not recognized by native speakers.", }, } labels["2channel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|2channel}}.", parents = {"internet slang"}, } labels["4chan slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|4chan}}.", parents = {"internet slang"}, } labels["4chan /lgbt/ slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the /lgbt/ board of the website {{w|4chan}}.", parents = {"4chan slang", "LGBTQ slang"}, } labels["angry register terms"] = { description = "{{{langname}}} terms belonging to an angry linguistic register, used only when the speaker is angry.", parents = {"terms by usage"}, } labels["anti-LGBTQ slurs"] = { description = "{{{langname}}} terms that are intended to offend [[LGBTQ]] people.", parents = {"offensive terms"}, } labels["autological terms"] = { description = "{{{langname}}} terms that possess the property they themselves describe.", parents = {"terms by usage"}, } labels["back slang"] = { description = "{{{langname}}} terms in which the written word is spoken phonemically backwards to form a coded language.", parents = {"cant"}, } labels["cant"] = { description = "{{{langname}}} terms used to form secret languages that are typically restricted to members of a specific group.", parents = {"slang"}, } labels["censored spellings"] = { description = "{{{langname}}} spellings where some characters have been changed in an effort to reduce the shock value of the original term.", parents = {"terms by usage"}, } labels["childish terms"] = { description = "{{{langname}}} terms that are typically only used by, or to, children.", parents = {"terms by usage", "informal terms"}, } labels["colloquialisms"] = { description = "{{{langname}}} terms that are likely to be used primarily in casual conversation rather than in more formal written works, speeches, and discourse.", parents = {"terms by usage"}, } labels["corporate jargon"] = { description = "{{{langname}}} terms (typically for non-business-specific concepts) that are used especially in a [[business]] or [[corporate]] [[context]].", additional = "See also [[:Category:Businesses]], [[:Category:Business]] and language-specific categories thereof for terms related to business-specific concepts.", parents = {"terms by usage"}, } labels["criminal slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to criminals.", parents = {"slang"}, } labels["derogatory terms"] = { description = "{{{langname}}} terms that are intended to [[disparage]], [[demean]], [[insult]] or [[offend]].", parents = {"terms by usage"}, } labels["dialectal terms"] = { description = "{{{langname}}} terms that are not used in standard language but only in dialects.", parents = {"terms by usage"}, } labels["dis legomena"] = { description = "{{{langname}}} terms that are attested only twice in the entire corpus.", parents = {"terms by usage"}, } labels["drag slang"] = { description = "{{{langname}}} [[slang]] terms used in the [[drag]] community.", parents = {"LGBTQ slang"}, } labels["ecclesiastical terms"] = { description = "{{{langname}}} terms used only by religious figures.", parents = {"terms by usage"}, } labels["eggcorns"] = { description = "{{{langname}}} [[eggcorn]]s, terms which are misconstructed.", parents = {"misconstructions"}, } labels["emoticons"] = { description = "{{{langname}}} characters, or sequences of characters, that imitate expressions and other objects by means of [[pareidolia]].", parents = {"internet slang", "text messaging slang"}, } labels["endearing terms"] = { description = "{{{langname}}} terms that are used to show affection or endearment to another person.", parents = {"terms by usage"}, } labels["ethnic slurs"] = { description = "{{{langname}}} terms that are intended to offend certain ethnic groups.", parents = {"offensive terms"}, } labels["expressive terms"] = { description = "{{{langname}}} terms with additional expressive content compared with the basic meaning of the term.", additional = "This term is common in Slavic lexicography and is found in most Czech, Slovak and Polish dictionaries, but there is no exact equivalent in English lexicography. The closest equivalents might be a combination of ''colloquial'' and either ''endearing'' or ''pejorative'', as the case may be.", parents = {"terms by usage"}, } labels["eye dialect"] = { description = "{{{langname}}} nonstandard spellings, which however do not change pronunciation, deliberately used by an author to indicate that the speaker uses a nonstandard or dialectal speech.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["familiar terms"] = { description = "{{{langname}}} terms whose use is typically to contexts of friendly intimacy.", parents = {"terms by usage"}, } labels["fandom slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to fans of one or more works of fiction.", parents = {"slang"}, } labels["filter-avoidance spellings"] = { description = "Deliberate misspellings of {{{langname}}} terms that are used to avoid [[w:Wordfilter|wordfilters]].", parents = {"deliberate misspellings"}, } labels["folk poetic terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of oral or folk poetry.", parents = {"terms by usage", "කාව්‍යමය යෙදුම්"}, } labels["formal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to polite, ceremonious, non-casual contexts.", parents = {"terms by usage"}, } labels["gay slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to homosexual people.", parents = {"LGBTQ slang"}, } labels["gender-critical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to gender-critical feminists.", parents = {"slang", "Category:{{{langcode}}}:Gender-critical feminism"}, } labels["gender-neutral terms"] = { description = "{{{langname}}} terms that are applicable to all people, independent of gender.", parents = {"terms by usage"}, } labels["graffiti slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to creators of [[graffiti#Noun|graffiti]].", parents = {"slang", "Category:{{{langcode}}}:Art"}, } labels["higher register terms"] = { description = "{{{langname}}} terms belonging to a higher linguistic register, such as literary terms; such terms are somewhat less common or known.", parents = {"terms by usage"}, } labels["historical terms"] = { description = "{{{langname}}} terms that refer to obsolete things or concepts.", parents = {"terms by usage"}, } labels["honorific terms"] = { description = "{{{langname}}} [[honorific]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["polite terms"] = { description = "{{{langname}}} [[polite]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["hapax legomena"] = { description = "{{{langname}}} terms that are attested only once in the entire corpus.", parents = {"terms by usage"}, } labels["humble terms"] = { description = "{{{langname}}} [[humble]] terms, which are used to show humility towards the addressee, indicating that the speaker has a lower social standing.", parents = {"honorific terms"}, } labels["hypercorrections"] = { description = "{{{langname}}} forms of other terms by misapplications of grammatical or orthographical rules.", parents = {"nonstandard terms", "nonstandard forms"}, } labels["hyperforeign terms"] = { description = "{{{langname}}} terms created by misapplying the perceived grammatical, orthographical or phonetical rules of another language.", parents = {"hypercorrections"}, } labels["incel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to incels.", parents = {"slang", "Category:{{{langcode}}}:Incel community"}, } labels["imperfective forms"] = { description = "{{{langname}}} verbs that serve as imperfective variants of perfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["informal forms"] = { description = "{{{langname}}} terms that can be used in casual, non-ceremonious conversations as alternative forms of other terms.", additional = "Informal non-lemma form variants also belong here.", parents = {"informal terms"}, } labels["informal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to casual, non‐ceremonious conversations.", parents = {"terms by usage"}, } labels["deliberate misspellings"] = { description = "Deliberate misspellings of {{{langname}}} terms.", parents = {"misspellings"}, } labels["internet laughter slang"] = { description = "{{{langname}}} [[slang]] terms that are used as substitutes for laughter in internet-related contexts.", additional = "::''Note: The majority of items that <u>could</u> be here do not meet Wiktionary's [[WT:CFI|criteria for inclusion]].''", parents = {"internet slang"}, } labels["internet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to internet users.", parents = {"slang"}, } labels["humorous terms"] = { description = "{{{langname}}} terms that are humorous, amusing or joking.", parents = {"terms by usage"}, } labels["journalistic terms"] = { description = "{{{langname}}} terms that are used especially in [[journalistic]] language, i.e. in newspapers and magazines.", parents = {"terms by usage"}, } labels["kennings"] = { description = "{{{langname}}} metaphorical compounds or phrases describing basic objects in an allusive fashion, used especially in Germanic poetry.", parents = {"කාව්‍යමය යෙදුම්"}, } labels["leetspeak"] = { description = "{{{langname}}} which are used in [[leetspeak]], a variety of internet slang that focuses on substitution of letters by other characters which are similar in appearance.", parents = {"internet slang"}, } labels["LGBTQ slang"] = { description = "{{{langname}}} [[slang]] terms which are used predominantly among [[LGBTQ]] people.", parents = {"slang", "Category:{{{langcode}}}:LGBTQ"}, } labels["literary terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of literature.", parents = {"higher register terms"}, } labels["medical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to medical doctors, such as physicians and surgeons.", parents = {"slang"}, } labels["military slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to military personnel.", parents = {"slang"}, } labels["misconstructions"] = { description = "Terms wrongly built due to a misunderstanding of their parts.", parents = {"nonstandard forms"}, } labels["misromanizations"] = { description = "Common misromanizations of {{{langname}}} terms.", parents = {"nonstandard forms"}, } labels["අක්ෂර වින්‍යාස දෝෂ"] = { description = "Common accidental misspellings of {{{langname}}} terms and some terms which are deliberate misspellings.", parents = {"nonstandard forms"}, } labels["multiplicity slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to the {{l|en|multiplicity|id=multiple personalities}} [[community]].", parents = {"slang", "Category:{{{langcode}}}:Multiplicity (psychology)"}, } labels["naval slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to naval personnel.", parents = {"military slang"}, } labels["nonstandard forms"] = { description = "{{{langname}}} forms of standard terms that are considered improper, incorrect or commonly misused.", parents = {"nonstandard terms"}, } labels["nonstandard terms"] = { description = "{{{langname}}} terms that are considered improper, incorrect or commonly misused.", parents = {"terms by usage"}, } labels["numismatic slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to numismatists.", parents = {"slang", "Category:{{{langcode}}}:Currency"}, } labels["offensive terms"] = { description = "{{{langname}}} terms that are typically considered to offend people.", parents = {"terms by usage"}, } labels["officialese terms"] = { description = "{{{langname}}} terms that are chiefly used by official sources, and are often bureaucratic-sounding.", parents = {"terms by usage"}, } labels["oxymorons"] = { description = "{{{langname}}} terms that are juxtapositions of opposing ideas.", parents = {"terms by usage"}, } labels["perfective forms"] = { description = "{{{langname}}} verbs that serve as perfective variants of imperfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["placeholder terms"] = { description = "{{{langname}}} terms used to refer to items for which one does not know or cannot recall the name, or is unable to or does not care to specify precisely.", parents = {"terms by usage"}, } labels["poetic forms"] = { description = "{{{langname}}} terms that can be used in works of poetry as poetic alternative forms of other terms.", additional = "Poetic non-lemma form variants also belong here.", parents = {"poetic terms"}, } labels["කාව්‍යමය යෙදුම්"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of poetry.", parents = {"terms by usage", "literary terms"}, } labels["post-nominal letters"] = { description = "{{{langname}}} Post-nominal letters - also called post-nominal initials, post-nominal titles or designatory letters are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute or fraternity.", parents = {"terms by usage"}, } labels["prison slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to detainees in correctional institutions.", parents = {"slang"}, } labels["proscribed terms"] = { description = "{{{langname}}} terms whose usage is proscribed; thus, they are considered wrong according to prescriptive sources.", parents = {"terms by usage", "nonstandard terms"}, } labels["puristic terms"] = { description = "{{{langname}}} terms adopted for [[w:Linguistic purism|linguistic purism]].", parents = {"terms by usage"}, } labels["radio slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to radio communication.", parents = {"slang"}, } labels["Reddit slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|Reddit}}.", parents = {"internet slang"}, } labels["religious slurs"] = { description = "{{{langname}}} terms that are intended to offend members of certain religions.", parents = {"offensive terms"}, } labels["reverential terms"] = { description = "{{{langname}}} [[reverential]] terms, which are used to exalt the addressee, indicating that they have a higher social standing than the speaker.", parents = {"honorific terms"}, } labels["royal terms"] = { description = "{{{langname}}} terms used only by royalty.", parents = {"terms by usage"}, } labels["rustic terms"] = { description = "{{{langname}}} terms whose use is typically restricted rural speech.", parents = {"terms by usage"}, } labels["school slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to schools and school pupils.", parents = {"slang"}, } labels["self-deprecatory terms"] = { description = "{{{langname}}} [[self-deprecatory]] terms.", parents = {"terms by usage"}, } labels["කෙටි ස්වරූප"] = { description = "{{{langname}}} terms that are [[short form]]s of other terms, often used informally.", parents = {"terms by usage", "කෙටි කිරීම් ආකාර"}, } labels["slang"] = { description = "{{{langname}}} [[colloquial]] terms that are typically used to mark membership in a cultural subgroup.", parents = {"terms by usage"}, } labels["solemn terms"] = { description = "{{{langname}}} terms that are used to instill a sense of somberness.", parents = {"terms by usage"}, } labels["student slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to colleges, universities, and their students.", parents = {"slang"}, } labels["superseded forms"] = { description = "{{{langname}}} forms that have been superseded by other forms due to changes in spelling conventions.", parents = {"terms by usage", "terms by orthographic property"}, } labels["swear words"] = { description = "{{{langname}}} terms that are used to swear, such as to express strong anger or frustration.", parents = {"vulgarities"}, } labels["technical terms"] = { description = "{{{langname}}} terms that are usually or exclusively used in technical/scientific writing.", parents = {"terms by usage"}, } labels["terms of address"] = { description = "{{{langname}}} terms used to refer to another person.", parents = {"terms by usage"}, } labels["terms used in hendiadys"] = { description = "{{{langname}}} words or senses which are used only in {{w|hendiadys}}.", parents = {"terms by usage"}, } labels["යෙදුම්, ඓතිහාසික අරුත් සහිත"] = { description = "{{{langname}}} terms with senses that refer to things or concepts mainly known for their historical value.", parents = {"terms by usage"}, } labels["terms with transferred senses"] = { description = "{{{langname}}} terms with [[Appendix:Glossary#transferred senses|transferred senses]].", parents = {"terms by usage"}, } labels["terms with uncertain meaning"] = { description = "{{{langname}}} terms whose meaning is unknown or disputed.", parents = {"terms by usage"}, } labels["text messaging slang"] = { description = "{{{langname}}} terms used for [[text messaging]] on mobile phones or similar devices, usually consisting of heavily abbreviated forms.", parents = {"slang"}, } labels["tone indicators"] = { description = "{{{langname}}} symbols used to denote or clarify the intent of a preceeding or occasionally following message.", parents = {"internet slang"}, } labels["trademarks"] = { description = "{{{langname}}} terms that identify legal entities, their products and services, by means of legal protection — to some extent, in a number of jurisdictions — against unauthorized use of the terms.", parents = {"terms by usage"}, } labels["transgender slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to transgender people.", parents = {"LGBTQ slang", "Category:{{{langcode}}}:Transgender"}, } labels["TV Tropes slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|TV Tropes}}.", parents = {"internet slang"}, } labels["umlautless spellings"] = { description = "{{{langname}}} terms that are the result of the original terms' [[umlaut]]s being substituted.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["Usenet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of {{w|Usenet}}.", parents = {"internet slang"}, } labels["men's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#men's speech|men's speech]].", parents = {"terms by usage"}, } labels["women's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#women's speech|women's speech]].", parents = {"terms by usage"}, } labels["vulgarities"] = { description = "{{{langname}}} terms whose tone (rather than the meaning) is offensive to polite company.", parents = {"terms by usage"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Terms by usage subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by usage subcategories by language"] = { description = "Umbrella categories covering topics related to terms categorized by their usage, such as slang, obsolete or archaic forms and vulgarities.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by usage", is_label = true, sort = " "}, }, } return {LABELS = labels, RAW_CATEGORIES = raw_categories} 8iruap5ziwsbid87j1w8yku7w0ty2ac 235268 235267 2026-06-01T12:14:18Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 235268 Scribunto text/plain local m_sinhala = require("Module:sinhala") local labels = {} local raw_categories = {} local string_utilities_module = "Module:string utilities" local ucfirst = require(string_utilities_module).ucfirst ----------------------------------------------------------------------------- -- -- -- LABELS -- -- -- ----------------------------------------------------------------------------- labels["terms by usage"] = { description = "{{{langname}}} terms categorized by the manner and context in which they are used by speakers.", umbrella_parents = "මූලධර්ම", parents = {{name = "{{{langcat}}}", raw = true}}, } local function generate_category_with_senses(typ, desc, distinguish, other_types_in_group) if distinguish then distinguish = "\n\n" .. distinguish else distinguish = "" end local function make_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, ("Category:{{{langname}}} " .. pos):format(other_type)) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end local function make_umbrella_preceding(pos) if not other_types_in_group then return nil end local cats = {} for _, other_type in ipairs(other_types_in_group) do table.insert(cats, "Category:" .. ucfirst((pos .. " by language"):format(other_type))) end return ("{{also|%s}}"):format(table.concat(cats, "|")) end labels[("%s terms"):format(typ)] = { description = ("{{{langname}}} terms that %s."):format(desc), additional = ("To categorize into this category, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword.\n\nIf the term is merely a variant (alternative form) of a term " .. "in general use, it should be categorized instead in {{cl|{{{langname}}} %s forms}} (using " .. "{{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}). If only some senses of the term are %s, " .. "it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, using {{tl|lb|{{{langcode}}}|%s}} " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), parents = {"terms by usage"}, preceding = make_preceding("%s terms"), umbrella = { preceding = make_umbrella_preceding("%s terms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> " .. "(template '''tlb''', not '''lb'''), which should typically be placed next to the headword. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized instead in " .. "{{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>). " .. "If only some senses of the term are %s, it should be categorized instead in {{cl|<var>langname</var> terms with %s senses}}, " .. "using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''lb''' instead of '''tlb'''), which should " .. "typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "terms")), } } labels[("යෙදුම්, %s අරුත් සහිත"):format(m_sinhala.sinhala_adjective(typ))] = { description = ("{{{langname}}} terms with individual senses that %s."):format(desc), additional = ("To categorize into this category, use {{tl|lb|{{{langcode}}}|%s}} (template '''lb''', not '''tlb'''), " .. "which should typically be placed next to the individual sense.\n\nIf the term itself, in all its senses, is %s, " .. "it should be placed in {{cl|{{{langname}}} %s terms}} instead, using {{tl|tlb|{{{langcode}}}|%s}} " .. "(template '''tlb''' instead of '''lb'''), which should typically be placed next to the headword. " .. "If the term is merely a variant (alternative form) of a term in general use, it should be categorized in " .. "{{cl|{{{langname}}} %s forms}} (using {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}).%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), parents = {{name = "terms by usage", sort = ("%s senses"):format(typ)}}, breadcrumb = ("%s අරුත් සහිත"):format(typ), preceding = make_preceding("යෙදුම්, %s අරුත් සහිත"), umbrella = { preceding = make_umbrella_preceding("terms with %s senses"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''', not '''tlb'''), which should typically be placed next to the individual sense. " .. "(<code><var>langcode</var></code> is the appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term itself, in all its senses, is %s, it should be placed in {{cl|<var>langname</var> %s terms}} instead, using " .. "<code><nowiki>{{</nowiki>tlb|<var>langcode</var>|%s}}</code> (template '''tlb''' instead of '''lb'''), which should " .. "typically be placed next to the headword. If the term is merely a variant (alternative form) of a term in general use, " .. "it should be categorized in {{cl|<var>langname</var> %s forms}} (using <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "senses")), } } labels[("%s රූපාකාර"):format(m_sinhala.sinhala_adjective(typ))] = { description = ("{{{langname}}} forms that %s; and serve as alternative forms of the same terms in general use."):format(desc), additional = ("To categorize into this category, use {{tl|%s form of|{{{langcode}}}|...}} or {{tl|%s spelling of|{{{langcode}}}|...}}.\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|{{{langname}}} %s terms}} " .. "instead; to do this, use {{tl|tlb|{{{langcode}}}|%s}} (template '''tlb''', not '''lb'''), which should typically be placed next to the " .. "headword. If only some senses of the term are %s, it should be categorized instead in {{cl|{{{langname}}} terms with %s senses}}, " .. "using {{tl|lb|{{{langcode}}}|%s}} (template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), parents = {{name = ("%s terms"):format(typ), sort = "forms"}}, breadcrumb = "forms", preceding = make_preceding("%s forms"), umbrella = { preceding = make_umbrella_preceding("%s forms"), additional = ("To categorize into this category, use <code><nowiki>{{</nowiki>%s form of|<var>langcode</var>|...}}</code> " .. "or <code><nowiki>{{</nowiki>%s spelling of|<var>langcode</var>|...}}</code>. (<code><var>langcode</var></code> is the " .. "appropriate language code for the language in question; see [[Wiktionary:List of languages]].)\n\n" .. "If the term is not merely a variant (alternative form) of a term in general use, it should be placed in {{cl|<var>langname</var> %s terms}} " .. "instead; to do this, use <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> (template '''tlb''', not '''lb'''), " .. "which should typically be placed next to the headword. If only some senses of the term are %s, it should be categorized instead " .. "in {{cl|<var>langname</var> terms with %s senses}}, using <code><nowiki>{{</nowiki>lb|<var>langcode</var>|%s}}</code> " .. "(template '''lb''' instead of '''tlb'''), which should typically be placed next to the individual sense.%s"):format( typ, typ, typ, typ, typ, typ, typ, distinguish:gsub("POS", "forms")), } } end local function generate_related_categories_with_senses(info) for typ, spec in pairs(info) do local other_types = {} for other_type, _ in pairs(info) do if other_type ~= typ then table.insert(other_types, other_type) end end table.sort(other_types) generate_category_with_senses(typ, spec.desc, spec.distinguish, other_types) end end generate_related_categories_with_senses { archaic = { desc = "are no longer in general use but still encountered in older literature, sometimes still used for special effect, and typically recognized by native speakers", distinguish = "Archaic POS should be distinguished from dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers; and on the other hand from obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, dated = { desc = "are no longer fashionable and thus are [[anachronistic]], but still sometimes in use, especially by older speakers", distinguish = "Dated POS should be distinguished from archaic POS, which are no longer in use (except occasionally for special effect) but are still sometimes encountered in older literature and are typically recognized by native speakers; and obsolete POS, which are no longer in use at all and are not usually recognized by native speakers.", }, obsolete = { desc = "are no longer in use and not usually recognized by native speakers, but still sometimes found in older literature", distinguish = "Obsolete POS should be distinguished from archaic POS, which, although no longer in general use, are still occasionally used for special effect and are typically recognized by native speakers; and dated POS, which are merely [[unfashionable]] and [[anachronistic]] but still sometimes used, especially by older speakers.", }, } generate_related_categories_with_senses { rare = { desc = "are rarely found in general use and may not be recognized by some native speakers", distinguish = "Rare POS should be distinguished from uncommon POS, which are not common but used enough to be generally recognized.", }, uncommon = { desc = "are in general use but not common", distinguish = "Uncommon POS should be distinguished from rare POS, which are infrequent enough that they are sometimes not recognized by native speakers.", }, } labels["2channel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|2channel}}.", parents = {"internet slang"}, } labels["4chan slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|4chan}}.", parents = {"internet slang"}, } labels["4chan /lgbt/ slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the /lgbt/ board of the website {{w|4chan}}.", parents = {"4chan slang", "LGBTQ slang"}, } labels["angry register terms"] = { description = "{{{langname}}} terms belonging to an angry linguistic register, used only when the speaker is angry.", parents = {"terms by usage"}, } labels["anti-LGBTQ slurs"] = { description = "{{{langname}}} terms that are intended to offend [[LGBTQ]] people.", parents = {"offensive terms"}, } labels["autological terms"] = { description = "{{{langname}}} terms that possess the property they themselves describe.", parents = {"terms by usage"}, } labels["back slang"] = { description = "{{{langname}}} terms in which the written word is spoken phonemically backwards to form a coded language.", parents = {"cant"}, } labels["cant"] = { description = "{{{langname}}} terms used to form secret languages that are typically restricted to members of a specific group.", parents = {"slang"}, } labels["censored spellings"] = { description = "{{{langname}}} spellings where some characters have been changed in an effort to reduce the shock value of the original term.", parents = {"terms by usage"}, } labels["childish terms"] = { description = "{{{langname}}} terms that are typically only used by, or to, children.", parents = {"terms by usage", "informal terms"}, } labels["colloquialisms"] = { description = "{{{langname}}} terms that are likely to be used primarily in casual conversation rather than in more formal written works, speeches, and discourse.", parents = {"terms by usage"}, } labels["corporate jargon"] = { description = "{{{langname}}} terms (typically for non-business-specific concepts) that are used especially in a [[business]] or [[corporate]] [[context]].", additional = "See also [[:Category:Businesses]], [[:Category:Business]] and language-specific categories thereof for terms related to business-specific concepts.", parents = {"terms by usage"}, } labels["criminal slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to criminals.", parents = {"slang"}, } labels["derogatory terms"] = { description = "{{{langname}}} terms that are intended to [[disparage]], [[demean]], [[insult]] or [[offend]].", parents = {"terms by usage"}, } labels["dialectal terms"] = { description = "{{{langname}}} terms that are not used in standard language but only in dialects.", parents = {"terms by usage"}, } labels["dis legomena"] = { description = "{{{langname}}} terms that are attested only twice in the entire corpus.", parents = {"terms by usage"}, } labels["drag slang"] = { description = "{{{langname}}} [[slang]] terms used in the [[drag]] community.", parents = {"LGBTQ slang"}, } labels["ecclesiastical terms"] = { description = "{{{langname}}} terms used only by religious figures.", parents = {"terms by usage"}, } labels["eggcorns"] = { description = "{{{langname}}} [[eggcorn]]s, terms which are misconstructed.", parents = {"misconstructions"}, } labels["emoticons"] = { description = "{{{langname}}} characters, or sequences of characters, that imitate expressions and other objects by means of [[pareidolia]].", parents = {"internet slang", "text messaging slang"}, } labels["endearing terms"] = { description = "{{{langname}}} terms that are used to show affection or endearment to another person.", parents = {"terms by usage"}, } labels["ethnic slurs"] = { description = "{{{langname}}} terms that are intended to offend certain ethnic groups.", parents = {"offensive terms"}, } labels["expressive terms"] = { description = "{{{langname}}} terms with additional expressive content compared with the basic meaning of the term.", additional = "This term is common in Slavic lexicography and is found in most Czech, Slovak and Polish dictionaries, but there is no exact equivalent in English lexicography. The closest equivalents might be a combination of ''colloquial'' and either ''endearing'' or ''pejorative'', as the case may be.", parents = {"terms by usage"}, } labels["eye dialect"] = { description = "{{{langname}}} nonstandard spellings, which however do not change pronunciation, deliberately used by an author to indicate that the speaker uses a nonstandard or dialectal speech.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["familiar terms"] = { description = "{{{langname}}} terms whose use is typically to contexts of friendly intimacy.", parents = {"terms by usage"}, } labels["fandom slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to fans of one or more works of fiction.", parents = {"slang"}, } labels["filter-avoidance spellings"] = { description = "Deliberate misspellings of {{{langname}}} terms that are used to avoid [[w:Wordfilter|wordfilters]].", parents = {"deliberate misspellings"}, } labels["folk poetic terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of oral or folk poetry.", parents = {"terms by usage", "කාව්‍යමය යෙදුම්"}, } labels["formal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to polite, ceremonious, non-casual contexts.", parents = {"terms by usage"}, } labels["gay slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to homosexual people.", parents = {"LGBTQ slang"}, } labels["gender-critical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to gender-critical feminists.", parents = {"slang", "Category:{{{langcode}}}:Gender-critical feminism"}, } labels["gender-neutral terms"] = { description = "{{{langname}}} terms that are applicable to all people, independent of gender.", parents = {"terms by usage"}, } labels["graffiti slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to creators of [[graffiti#Noun|graffiti]].", parents = {"slang", "Category:{{{langcode}}}:Art"}, } labels["higher register terms"] = { description = "{{{langname}}} terms belonging to a higher linguistic register, such as literary terms; such terms are somewhat less common or known.", parents = {"terms by usage"}, } labels["historical terms"] = { description = "{{{langname}}} terms that refer to obsolete things or concepts.", parents = {"terms by usage"}, } labels["honorific terms"] = { description = "{{{langname}}} [[honorific]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["polite terms"] = { description = "{{{langname}}} [[polite]] terms, which are used to show deference and respect.", parents = {"terms by usage"}, } labels["hapax legomena"] = { description = "{{{langname}}} terms that are attested only once in the entire corpus.", parents = {"terms by usage"}, } labels["humble terms"] = { description = "{{{langname}}} [[humble]] terms, which are used to show humility towards the addressee, indicating that the speaker has a lower social standing.", parents = {"honorific terms"}, } labels["hypercorrections"] = { description = "{{{langname}}} forms of other terms by misapplications of grammatical or orthographical rules.", parents = {"nonstandard terms", "nonstandard forms"}, } labels["hyperforeign terms"] = { description = "{{{langname}}} terms created by misapplying the perceived grammatical, orthographical or phonetical rules of another language.", parents = {"hypercorrections"}, } labels["incel slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to incels.", parents = {"slang", "Category:{{{langcode}}}:Incel community"}, } labels["imperfective forms"] = { description = "{{{langname}}} verbs that serve as imperfective variants of perfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["informal forms"] = { description = "{{{langname}}} terms that can be used in casual, non-ceremonious conversations as alternative forms of other terms.", additional = "Informal non-lemma form variants also belong here.", parents = {"informal terms"}, } labels["informal terms"] = { description = "{{{langname}}} terms whose use is typically restricted to casual, non‐ceremonious conversations.", parents = {"terms by usage"}, } labels["deliberate misspellings"] = { description = "Deliberate misspellings of {{{langname}}} terms.", parents = {"අක්ෂර වින්‍යාස දෝෂ"}, } labels["internet laughter slang"] = { description = "{{{langname}}} [[slang]] terms that are used as substitutes for laughter in internet-related contexts.", additional = "::''Note: The majority of items that <u>could</u> be here do not meet Wiktionary's [[WT:CFI|criteria for inclusion]].''", parents = {"internet slang"}, } labels["internet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to internet users.", parents = {"slang"}, } labels["humorous terms"] = { description = "{{{langname}}} terms that are humorous, amusing or joking.", parents = {"terms by usage"}, } labels["journalistic terms"] = { description = "{{{langname}}} terms that are used especially in [[journalistic]] language, i.e. in newspapers and magazines.", parents = {"terms by usage"}, } labels["kennings"] = { description = "{{{langname}}} metaphorical compounds or phrases describing basic objects in an allusive fashion, used especially in Germanic poetry.", parents = {"කාව්‍යමය යෙදුම්"}, } labels["leetspeak"] = { description = "{{{langname}}} which are used in [[leetspeak]], a variety of internet slang that focuses on substitution of letters by other characters which are similar in appearance.", parents = {"internet slang"}, } labels["LGBTQ slang"] = { description = "{{{langname}}} [[slang]] terms which are used predominantly among [[LGBTQ]] people.", parents = {"slang", "Category:{{{langcode}}}:LGBTQ"}, } labels["literary terms"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of literature.", parents = {"higher register terms"}, } labels["medical slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to medical doctors, such as physicians and surgeons.", parents = {"slang"}, } labels["military slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to military personnel.", parents = {"slang"}, } labels["misconstructions"] = { description = "Terms wrongly built due to a misunderstanding of their parts.", parents = {"nonstandard forms"}, } labels["misromanizations"] = { description = "Common misromanizations of {{{langname}}} terms.", parents = {"nonstandard forms"}, } labels["අක්ෂර වින්‍යාස දෝෂ"] = { description = "Common accidental misspellings of {{{langname}}} terms and some terms which are deliberate misspellings.", parents = {"nonstandard forms"}, } labels["multiplicity slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to the {{l|en|multiplicity|id=multiple personalities}} [[community]].", parents = {"slang", "Category:{{{langcode}}}:Multiplicity (psychology)"}, } labels["naval slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to naval personnel.", parents = {"military slang"}, } labels["nonstandard forms"] = { description = "{{{langname}}} forms of standard terms that are considered improper, incorrect or commonly misused.", parents = {"nonstandard terms"}, } labels["nonstandard terms"] = { description = "{{{langname}}} terms that are considered improper, incorrect or commonly misused.", parents = {"terms by usage"}, } labels["numismatic slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to numismatists.", parents = {"slang", "Category:{{{langcode}}}:Currency"}, } labels["offensive terms"] = { description = "{{{langname}}} terms that are typically considered to offend people.", parents = {"terms by usage"}, } labels["officialese terms"] = { description = "{{{langname}}} terms that are chiefly used by official sources, and are often bureaucratic-sounding.", parents = {"terms by usage"}, } labels["oxymorons"] = { description = "{{{langname}}} terms that are juxtapositions of opposing ideas.", parents = {"terms by usage"}, } labels["perfective forms"] = { description = "{{{langname}}} verbs that serve as perfective variants of imperfective verbs, sharing the same base set of meanings.", parents = {"terms by usage"}, } labels["placeholder terms"] = { description = "{{{langname}}} terms used to refer to items for which one does not know or cannot recall the name, or is unable to or does not care to specify precisely.", parents = {"terms by usage"}, } labels["poetic forms"] = { description = "{{{langname}}} terms that can be used in works of poetry as poetic alternative forms of other terms.", additional = "Poetic non-lemma form variants also belong here.", parents = {"poetic terms"}, } labels["කාව්‍යමය යෙදුම්"] = { description = "{{{langname}}} terms whose usage is typically restricted to works of poetry.", parents = {"terms by usage", "literary terms"}, } labels["post-nominal letters"] = { description = "{{{langname}}} Post-nominal letters - also called post-nominal initials, post-nominal titles or designatory letters are letters placed after the name of a person to indicate that the individual holds a position, educational degree, accreditation, office, military decoration, or honour, or is a member of a religious institute or fraternity.", parents = {"terms by usage"}, } labels["prison slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to detainees in correctional institutions.", parents = {"slang"}, } labels["proscribed terms"] = { description = "{{{langname}}} terms whose usage is proscribed; thus, they are considered wrong according to prescriptive sources.", parents = {"terms by usage", "nonstandard terms"}, } labels["puristic terms"] = { description = "{{{langname}}} terms adopted for [[w:Linguistic purism|linguistic purism]].", parents = {"terms by usage"}, } labels["radio slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to radio communication.", parents = {"slang"}, } labels["Reddit slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|Reddit}}.", parents = {"internet slang"}, } labels["religious slurs"] = { description = "{{{langname}}} terms that are intended to offend members of certain religions.", parents = {"offensive terms"}, } labels["reverential terms"] = { description = "{{{langname}}} [[reverential]] terms, which are used to exalt the addressee, indicating that they have a higher social standing than the speaker.", parents = {"honorific terms"}, } labels["royal terms"] = { description = "{{{langname}}} terms used only by royalty.", parents = {"terms by usage"}, } labels["rustic terms"] = { description = "{{{langname}}} terms whose use is typically restricted rural speech.", parents = {"terms by usage"}, } labels["school slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to schools and school pupils.", parents = {"slang"}, } labels["self-deprecatory terms"] = { description = "{{{langname}}} [[self-deprecatory]] terms.", parents = {"terms by usage"}, } labels["කෙටි ස්වරූප"] = { description = "{{{langname}}} terms that are [[short form]]s of other terms, often used informally.", parents = {"terms by usage", "කෙටි කිරීම් ආකාර"}, } labels["slang"] = { description = "{{{langname}}} [[colloquial]] terms that are typically used to mark membership in a cultural subgroup.", parents = {"terms by usage"}, } labels["solemn terms"] = { description = "{{{langname}}} terms that are used to instill a sense of somberness.", parents = {"terms by usage"}, } labels["student slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to colleges, universities, and their students.", parents = {"slang"}, } labels["superseded forms"] = { description = "{{{langname}}} forms that have been superseded by other forms due to changes in spelling conventions.", parents = {"terms by usage", "terms by orthographic property"}, } labels["swear words"] = { description = "{{{langname}}} terms that are used to swear, such as to express strong anger or frustration.", parents = {"vulgarities"}, } labels["technical terms"] = { description = "{{{langname}}} terms that are usually or exclusively used in technical/scientific writing.", parents = {"terms by usage"}, } labels["terms of address"] = { description = "{{{langname}}} terms used to refer to another person.", parents = {"terms by usage"}, } labels["terms used in hendiadys"] = { description = "{{{langname}}} words or senses which are used only in {{w|hendiadys}}.", parents = {"terms by usage"}, } labels["යෙදුම්, ඓතිහාසික අරුත් සහිත"] = { description = "{{{langname}}} terms with senses that refer to things or concepts mainly known for their historical value.", parents = {"terms by usage"}, } labels["terms with transferred senses"] = { description = "{{{langname}}} terms with [[Appendix:Glossary#transferred senses|transferred senses]].", parents = {"terms by usage"}, } labels["terms with uncertain meaning"] = { description = "{{{langname}}} terms whose meaning is unknown or disputed.", parents = {"terms by usage"}, } labels["text messaging slang"] = { description = "{{{langname}}} terms used for [[text messaging]] on mobile phones or similar devices, usually consisting of heavily abbreviated forms.", parents = {"slang"}, } labels["tone indicators"] = { description = "{{{langname}}} symbols used to denote or clarify the intent of a preceeding or occasionally following message.", parents = {"internet slang"}, } labels["trademarks"] = { description = "{{{langname}}} terms that identify legal entities, their products and services, by means of legal protection — to some extent, in a number of jurisdictions — against unauthorized use of the terms.", parents = {"terms by usage"}, } labels["transgender slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to transgender people.", parents = {"LGBTQ slang", "Category:{{{langcode}}}:Transgender"}, } labels["TV Tropes slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of the website {{w|TV Tropes}}.", parents = {"internet slang"}, } labels["umlautless spellings"] = { description = "{{{langname}}} terms that are the result of the original terms' [[umlaut]]s being substituted.", parents = {"nonstandard forms", "terms by orthographic property"}, } labels["Usenet slang"] = { description = "{{{langname}}} [[slang]] terms whose usage is typically restricted to users of {{w|Usenet}}.", parents = {"internet slang"}, } labels["men's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#men's speech|men's speech]].", parents = {"terms by usage"}, } labels["women's speech terms"] = { description = "{{{langname}}} terms and forms used in [[Appendix:Glossary#women's speech|women's speech]].", parents = {"terms by usage"}, } labels["vulgarities"] = { description = "{{{langname}}} terms whose tone (rather than the meaning) is offensive to polite company.", parents = {"terms by usage"}, } -- Add 'umbrella_parents' key if not already present. for key, data in pairs(labels) do if not data.umbrella_parents then data.umbrella_parents = "Terms by usage subcategories by language" end end ----------------------------------------------------------------------------- -- -- -- RAW CATEGORIES -- -- -- ----------------------------------------------------------------------------- raw_categories["Terms by usage subcategories by language"] = { description = "Umbrella categories covering topics related to terms categorized by their usage, such as slang, obsolete or archaic forms and vulgarities.", additional = "{{{umbrella_meta_msg}}}", parents = { "ඡත්‍ර මෙටා ප්‍රවර්ග", {name = "terms by usage", is_label = true, sort = " "}, }, } return {LABELS = labels, RAW_CATEGORIES = raw_categories} fthr1w1zisrlq2pzsdqq8s4126vl1em Module:languages/data/3/s/extra 828 6331 235450 220343 2026-02-09T06:08:13Z en>Hazarasp 0 Merging Lushootseed varieties per [[WT:LTR#Merge Skagit and Snohomish into Lushootseed]] 235450 Scribunto text/plain local m = {} m["saa"] = { } m["sab"] = { aliases = {"Bugle", "Murire", "Muoy"}, varieties = {"Sabanero", {"Bokotá", "Bogota"}}, } m["sac"] = { varieties = {{"Sac", "Sauk"}, "Kickapoo", {"Mesquakie", "Meskwaki"}}, } m["sad"] = { } m["sae"] = { } m["saf"] = { } m["sah"] = { aliases = {"Sakha"}, } m["saj"] = { varieties = {"Pa'disua", "Tala'i"}, } m["sak"] = { aliases = {"Shake"}, } m["sam"] = { aliases = {"Samaritan"}, } m["sao"] = { } m["saq"] = { } m["sar"] = { aliases = {"Sarabeca", "Saraveka", "Sarave"}, } m["sas"] = { } m["sat"] = { } m["sau"] = { } m["sav"] = { } m["saw"] = { } m["sax"] = { aliases = {"Saa"}, } m["say"] = { } m["saz"] = { } m["sba"] = { } m["sbb"] = { } m["sbc"] = { aliases = {"Kele (New Guinea)", "Kele (Papua New Guinea)", "Kele"}, } m["sbd"] = { } m["sbe"] = { aliases = {"Saliba"}, } m["sbf"] = { aliases = {"Mikeyir", "Mekeyir", "Mekeyer"}, } m["sbg"] = { } m["sbh"] = { -- I'm guessing these are varieties, since they represent the names of the two islands on which the language -- (Sori-Harengan) is spoken. varieties = {"Sori", "Harengan"}, } m["sbi"] = { } m["sbj"] = { } m["sbk"] = { } m["sbl"] = { } m["sbm"] = { } m["sbn"] = { } m["sbo"] = { } m["sbp"] = { } m["sbq"] = { aliases = {"Sileibi"}, } m["sbr"] = { } m["sbs"] = { } m["sbt"] = { pseudo_families = "paa", } m["sbu"] = { } m["sbv"] = { } m["sbw"] = { } m["sbx"] = { } m["sby"] = { } m["sbz"] = { } m["scb"] = { } m["sce"] = { aliases = {"Santa"}, } m["scf"] = { } m["scg"] = { } m["sch"] = { -- Alias vs. variety here is a guess; Wikipedia says "Sakachep also known as Khelma" and says the ethnicity is -- "The Khelma, also known as the Sakachep" but Ethnologue also says "dialects are Khelma, Thangachep, and Sakachep" -- which may be bogus. aliases = {"Khelma"}, } m["sci"] = { } m["sck"] = { } m["scl"] = { -- These represent different valleys where the language is spoken, hence likely distinct dialects. varieties = {"Gilgiti", "Astori", "Chilasi"}, } m["scn"] = { } m["sco"] = { aliases = {"Lowland Scots"}, } m["scp"] = { aliases = {"Hyolmo", "Yohlmo", "Helambu Sherpa"}, -- Wikipedia says Syuba/Kagate (code skw) may be close enough to be a dialect. Langtang is mutually intelligible -- with Yolmo but often considered a separate language; yet we don't have a code for it so I'm putting it as a -- variety. varieties = {"Melamchi Valley Yolmo", "Langtang", "Lamjung Yolmo", "Ilam Yolmo"}, } m["scq"] = { aliases = {"Chung"}, } m["scs"] = { } m["scu"] = { } m["scv"] = { } m["scw"] = { } m["scx"] = { aliases = {"Siculian"}, } m["scz"] = { aliases = {"Shaetlan", "Shetlandic"}, } m["sda"] = { } m["sdb"] = { aliases = {"Shabaki"}, } m["sdc"] = { } m["sde"] = { } m["sdf"] = { aliases = {"Sarliya"}, } m["sdg"] = { } m["sdh"] = { -- Kermanshahi can refer either to Southern Kurdish as a whole or to the prestige dialect. We distinct the latter -- as Kermanshani with an n following ''Habib Borjian, “KERMANSHAH vii. Languages and Dialects,” Encyclopædia -- Iranica, Vol. 16, Fasc. 3, New York, 2017, pp. 327-331.'' but this may not make a lot of sense. aliases = {"Kermanshahi", "Kermanshahi Kurdish"}, -- We classify Laki as a separate language but it is often considered a dialect of Southern Kurdish. varieties = {{"Kermanshani", "Kermanshani Kurdish"}, {"Kolya'i", "Kolyā'i"}, "Zangana", "Kalhori", {"Sanjābi", "Sanjabi"}, {"Feyli", "Fayli", "Ilāmi", "Ilami"}}, } m["sdj"] = { } m["sdk"] = { } m["sdl"] = { } m["sdm"] = { } m["sdn"] = { } m["sdo"] = { aliases = {"Bukar-Sadong"}, } m["sdp"] = { } m["sdr"] = { } m["sds"] = { } m["sdu"] = { } m["sdx"] = { } m["sea"] = { } -- seb is a duplicate code of spp m["sec"] = { } m["sed"] = { } m["see"] = { } m["sef"] = { } m["seg"] = { } m["seh"] = { varieties = {{"Malawi Sena", "Malawian Sena"}, {"Nuclear Sena", "Mozambican Sena"}}, -- includes [swk] for Malawian Sena, but [bwg] for Barwe is distinct } m["sei"] = { } m["sej"] = { } m["sek"] = { aliases = {"Tsek'ene"}, varieties = {{"Kwadacha", "Kwadacha Sekani", "Kwadacha Tsek'ene"}}, } m["sen"] = { } m["seo"] = { aliases = {"Asabano", -- Glottolog's name "Suarmin", -- old ISO name "Asabo", -- used in Foley (2005) and Foley (2018); may be a typo "Duranmin", -- in e.g. Laycock and Z'graggen (1975), Conrad (1988) }, pseudo_families = "paa", } m["sep"] = { } m["seq"] = { } m["ser"] = { -- Wikipedia treats Kitanemuk as a separate language but it says it may have been a dialect (it is extinct). varieties = {"Kitanemuk"}, } m["ses"] = { aliases = {"Koyraboro Senni Songhay", "Koyraboro Senni Songhai", "Koroboro Senni"}, -- other_names = {"Eastern Songhay"}, -- this is a geographic grouping of Songhay languages including Koyraboro Senni } m["set"] = { varieties = {"Central Sentani", "East Sentani", "West Sentani"}, } m["seu"] = { } m["sev"] = { } m["sew"] = { } m["sey"] = { } m["sez"] = { aliases = {"Senthang"}, } m["sfb"] = { } m["sfe"] = { } m["sfm"] = { } m["sfs"] = { } m["sfw"] = { } m["sga"] = { } m["sgb"] = { } m["sgc"] = { } m["sgd"] = { } m["sge"] = { } m["sgg"] = { aliases = {"Swiss German Sign Language"}, } m["sgh"] = { } m["sgi"] = { } m["sgk"] = { } m["sgm"] = { } m["sgp"] = { } m["sgr"] = { aliases = {"Sangsari"}, } m["sgs"] = { } m["sgt"] = { aliases = {"Brokpa"}, } m["sgu"] = { } m["sgw"] = { } m["sgx"] = { } m["sgy"] = { -- FIXME: Sanglich is the name of the language as used in Tajikistan, while Sanglechi is the name as used in -- Afghanistan. Hence they could be different dialects, but provisionally I'm classifying them as aliases. aliases = {"Sanglich"}, -- "Warduji" may not exist at all } m["sgz"] = { } m["sha"] = { } m["shb"] = { aliases = {"Yanam", "Yanam-Ninam", "Xiriana", "Xiriâna", "Shiriana", "Xirixana", "Shirishana"}, } m["shc"] = { } m["shd"] = { } m["she"] = { } m["shg"] = { aliases = {"Shwa", "Shwakhwe"}, } m["shh"] = { aliases = {"Shoshoni"}, varieties = {{"Gosiute", "Goshute"}, {"Eastern Shoshone", "Eastern Shoshoni"}, {"Western Shoshone", "Western Shoshoni"}, {"Northern Shoshone", "Northern Shoshoni"}}, } m["shi"] = { aliases = {"Tachelhit", "Chleuh", "Shilha", "Tashlhiyt", "Tashelhit Berber", "Tachelhit Berber", "Tashlhiyt Berber", "Soussian"}, } m["shj"] = { } m["shk"] = { } m["shl"] = { } m["shm"] = { } m["shn"] = { aliases = {"Kwam Tai", "Kam Tai", "Tai Yai"}, } m["sho"] = { } m["shp"] = { } m["shq"] = { } m["shr"] = { } m["shs"] = { } m["sht"] = { } m["shu"] = { } m["shv"] = { aliases = {"Jibbali"}, } m["shw"] = { } m["shx"] = { aliases = {"Ho Ne", "Ho Nte"}, } m["shy"] = { aliases = {"Shawiya Berber", "Chaouïa", "Tacawit"}, } m["shz"] = { } m["sia"] = { } m["sib"] = { } m["sid"] = { aliases = {"Sidaama"}, } m["sie"] = { } m["sif"] = { } m["sig"] = { } m["sih"] = { aliases = {"Sishee", "Zire"}, } m["sii"] = { } m["sij"] = { } m["sik"] = { } m["sil"] = { } m["sim"] = { aliases = {"Mende", "Seim", -- our old name }, } m["sip"] = { aliases = {"Bhutia", "Dranjongke", "Dranjoke", "Denjongka", "Denzongpeke", "Denzongke"}, } m["siq"] = { } m["sir"] = { } m["sis"] = { } m["siu"] = { aliases = {"Galu"}, -- Glottolog's name } m["siv"] = { } m["siw"] = { varieties = {"Baitsi"}, } m["six"] = { aliases = {"Garia", "Kari"}, } m["siy"] = { } m["siz"] = { aliases = {"Siwa", "Siwan", "Siwa Berber"}, } m["sja"] = { } m["sjb"] = { } m["sjc"] = { aliases = {"Shao-Jiang Min", "Shaojiang Chinese", "Shao-Jiang Chinese"}, } m["sjd"] = { } m["sje"] = { } m["sjg"] = { } m["sjk"] = { } m["sjl"] = { -- Per Wikipedia, these are two languages. There is also a yet more divergent variety Bangru (Northern Miji). varieties = { {"Western Miji", "Dmay", "Dhammai", "Dhəmmai", "Sajalang", "Sajolang"}, {"Eastern Miji", "Namrai", "Nəmrai"}, } } m["sjm"] = { } m["sjn"] = { } m["sjo"] = { aliases = {"Sibo", "Sibe", "Xibo"}, } m["sjp"] = { } m["sjr"] = { } m["sjs"] = { -- from Wikipedia aliases = {"Senhaja De Srair", "Sanhaja de Srair", "Senhajiyya", "Chelha", "Chelha n Senhaja", "Chelha n Isenhajen", "Tamazight n Senhaja", "Tasenhaji"}, } m["sjt"] = { } m["sju"] = { } m["sjw"] = { } -- [ska] Skagit is treated as part of [lut] Lushootseed m["skb"] = { } m["skc"] = { aliases = {"Sauk"}, } m["skd"] = { } m["ske"] = { aliases = {"Seke"}, } m["skf"] = { aliases = {"Mekens", "Mekem", "Amniapé"}, -- Glottolog refers to the third variety as Siokweriat corresponding to Koarategayat etc. varieties = {{"Sakirabiá", "Sakïrabiát", "Sakiráp", "Sakurabiat"}, {"Koaratira", "Guaratira", "Kanoé"}, {"Koarategayat", "Guaratégaya", "Guarategaja", "Warategáya"}}, } m["skh"] = { } m["ski"] = { other_names = {"Sikanese"}, } m["skj"] = { -- compare 'ths' } m["skk"] = { } m["skm"] = { other_names = {"Kutong"}, } m["skn"] = { } m["sko"] = { } m["skp"] = { } m["skq"] = { } m["skr"] = { other_names = {"Siraiki", "Seraiki"}, } m["sks"] = { aliases = {"Maya"}, other_names = {"Banar", "Suaro", "Turutap", "Yakiba"}, varieties = {"Pila", "Saki"}, } m["skt"] = { other_names = {"Kisakata", "Lesa", "Odual", "Saka", "Bai", "Kibai", "Bay", "Kibay", "Djia", "Dia", "Dja", "Kidjia", "Wadia", "Tuku", "Ketu", "Batow"}, } m["sku"] = { } m["skv"] = { } m["skw"] = { other_names = {"Skepi Dutch", "Skepi Dutch Creole", "Essequibo Dutch"}, } m["skx"] = { } m["sky"] = { aliases = {"Sikayana"}, } m["skz"] = { } m["slc"] = { other_names = {"Saliba", "Sáliba", "Saliva", "Sáliva"}, } m["sld"] = { aliases = {"Sissala"}, } m["sle"] = { } m["slf"] = { other_names = {"Swiss Italian Sign Language"}, } m["slg"] = { } -- [slh] Southern Puget Sound Salish is treated as part of [lut] Lushootseed -- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["slj"] = { } m["sll"] = { varieties = {"Keri", {"Salt", "Salt (Salt-Yui)"}}, } m["slm"] = { aliases = {"Siyama"}, } m["sln"] = { } m["slp"] = { other_names = {"Solor", "Solorese"}, } m["slr"] = { } m["sls"] = { } m["slt"] = { } m["slu"] = { } m["slw"] = { } m["slx"] = { } m["sly"] = { } m["slz"] = { } m["sma"] = { } m["smb"] = { } m["smc"] = { } m["smd"] = { } m["smf"] = { } m["smg"] = { } m["smh"] = { } m["smj"] = { } m["smk"] = { other_names = {"Binubolinao"}, } m["sml"] = { } m["smm"] = { } m["smn"] = { } m["smp"] = { other_names = {"Samaritan"}, } m["smq"] = { } m["smr"] = { other_names = {"Simalur", "Devayan", "Defayan", "Simolol", "Simulul", "Simeuloë"}, } m["sms"] = { } m["smt"] = { } m["smu"] = { } m["smv"] = { } m["smw"] = { } m["smx"] = { } m["smy"] = { } m["smz"] = { varieties = {"Koopei", "Mainoki"}, } m["snb"] = { } m["snc"] = { } m["sne"] = { } m["snf"] = { } m["sng"] = { other_names = {"Sanga", "Luba-Sanga", "Sanga (Democratic Republic of Congo)", "Sanga (Democratic Republic of the Congo)"}, } m["sni"] = { } m["snj"] = { } m["snk"] = { } m["snl"] = { } m["snm"] = { } m["snn"] = { } -- [sno] Snohomish is treated as part of [lut] Lushootseed m["snp"] = { varieties = {"Alango", "Fowe", "Kemanimowe", "Keto", "Kolepa", "Komoigaleka", "Komongu", "Laiya", "Lambau", "Olumba", {"Ona", "Ona (Papua New Guinea)"}, "Wando", "Yamofowe", "Yandime"}, } m["snq"] = { other_names = {"Chango"}, } m["snr"] = { aliases = {"Sihan (Gum)"}, -- per Glottolog } m["sns"] = { } m["snu"] = { } m["snv"] = { } m["snw"] = { } m["snx"] = { } m["sny"] = { varieties = {"Hiyowe", "Saniyo"}, } m["snz"] = { aliases = {"Kow", "Sinsauru"}, -- Sinsauru is an alias per Wikipedia varieties = {"Asas", "Saipa"}, } m["soa"] = { aliases = {"Lao Song", "Song"}, } m["sob"] = { } m["soc"] = { other_names = {"So"}, } m["sod"] = { } m["soe"] = { } m["sog"] = { } m["soh"] = { other_names = {"Aka", "Sillok"}, } m["soi"] = { other_names = {"Sonaha", "Sonahaa", "Sunah", "Sunha"}, } m["sok"] = { } m["sol"] = { } m["soo"] = { other_names = {"Songo", "Tsong"}, } m["sop"] = { } m["soq"] = { } m["sor"] = { } m["sos"] = { other_names = {"Seeku", "Sembla", "Sambla"}, } m["sou"] = { aliases = {"Dambro", "Pak Tai"}, } m["sov"] = { } m["sow"] = { } m["sox"] = { other_names = {"So", "Sso", "Shwo", "Fo"}, } m["soy"] = { } m["soz"] = { } m["spb"] = { other_names = {"Sepa"}, } m["spc"] = { other_names = {"Kaliana", "Kariana", "Kaliána", "Sapä́", "Sape"}, } m["spd"] = { } m["spe"] = { other_names = {"Sepa", "Sepa (Papua New Guinea)"}, } m["spg"] = { } m["spi"] = { } m["spk"] = { } m["spl"] = { varieties = {"North Selepet", "South Selepet"}, } m["spm"] = { } m["spn"] = { } m["spo"] = { other_names = {"Montana Salish", "Salish", "Séliš", "Kalispel-Pend d'oreille", "Kalispel"}, } m["spp"] = { other_names = {"Suppire", "Supyire Senoufo", "Supyire Senufo", "Shempire Senoufo", "Shempire"}, } m["spr"] = { } m["sps"] = { } m["spt"] = { } m["spu"] = { } m["spv"] = { other_names = {"Kosali", "Koshali"}, } m["spx"] = { other_names = {"Old Sabellic", "Old Sabellian", "Middle Adriatic", "Central Adriatic"}, } m["spy"] = { } m["sqa"] = { } m["sqh"] = { } m["sqk"] = { } m["sqm"] = { } m["sqn"] = { } m["sqo"] = { } m["sqq"] = { } m["sqr"] = { } m["sqs"] = { } m["sqt"] = { aliases = {"Socotri"}, } m["squ"] = { } m["sra"] = { } m["srb"] = { } m["sre"] = { } m["srf"] = { } m["srg"] = { } m["srh"] = { } m["sri"] = { } m["srk"] = { aliases = {"Serudung"}, } m["srl"] = { varieties = {"Eastern Isirawa", "Western Isirawa"}, } m["srm"] = { } m["srn"] = { } m["srq"] = { } m["srr"] = { } m["srs"] = { aliases = {"Sarcee", "Sarsi", "Tsuu T'ina", "Tsu T'ina"}, } m["srt"] = { } m["sru"] = { other_names = {"Paíter", "Suruí-Paíter", "Suruí de Rondônia", "Suruí do Jiparaná"}, } m["srv"] = { } m["srw"] = { } m["srx"] = { } m["sry"] = { } m["srz"] = { } m["ssb"] = { } m["ssc"] = { } m["ssd"] = { } m["sse"] = { } m["ssf"] = { other_names = {"Sao"}, } m["ssg"] = { } m["ssh"] = { } m["ssi"] = { other_names = {"Bhilki"}, } m["ssj"] = { } m["ssk"] = { } m["ssl"] = { } m["ssm"] = { } m["sso"] = { } m["ssp"] = { } m["ssq"] = { } m["ssr"] = { other_names = {"Swiss French Sign Language"}, } m["sss"] = { } m["sst"] = { varieties = {"Dinga", "Gunangi", {"Kebai", "Kebai (Sinasina)"}, {"Kere", "Kere (Sinasina)"}, "Kondo", "Nimai", "Tabare"}, } m["ssu"] = { } m["ssv"] = { } m["ssx"] = { } m["ssy"] = { } m["ssz"] = { } m["stb"] = { } m["std"] = { } m["ste"] = { } m["stf"] = { } m["stg"] = { } m["sth"] = { other_names = {"Cant"}, } m["sti"] = { } m["stj"] = { } m["stk"] = { } m["stm"] = { } m["stn"] = { } m["sto"] = { } m["stp"] = { } m["stq"] = { other_names = {"East Frisian", "Eastern Frisian"}, -- Saterland F is a dialect of East F; see [[WT:T:ASTQ]] } m["str"] = { } m["sts"] = { } m["stt"] = { } m["stu"] = { } m["stv"] = { } m["stw"] = { } m["sty"] = { } m["sua"] = { } m["sub"] = { } m["suc"] = { } m["sue"] = { } m["sug"] = { } m["sui"] = { } m["suk"] = { } m["suo"] = { aliases = {"Bouni-Bobe", -- Glottolog "Sumo"}, -- alternative name in Wikipedia varieties = {"Bobe", "Bouni"}, -- per Glottolog } m["suq"] = { } m["sur"] = { other_names = {"Sura", "Mupun"}, } m["sus"] = { } m["sut"] = { } m["suv"] = { } m["suw"] = { } m["sux"] = { } m["suy"] = { } m["suz"] = { } m["sva"] = { } m["svb"] = { } m["svc"] = { } m["sve"] = { } m["svk"] = { } m["svm"] = { aliases = {"Slavo-molisano", "Molise Slavic", "Molise Croatian"}, } m["svs"] = { pseudo_families = "paa", } m["svx"] = { } m["swb"] = { } m["swf"] = { } m["swg"] = { } m["swi"] = { aliases = {"Ai Sui", "Shui", "Sui Li", "Suipo"}, } m["swj"] = { } m["swl"] = { } m["swm"] = { } m["swn"] = { other_names = {"Sawknah", "Fezzan", "Fogaha"}, } m["swo"] = { } m["swp"] = { } m["swq"] = { } m["swr"] = { } m["sws"] = { } m["swt"] = { varieties = {"Lalamana", "Lona", "Nuclear Sawila", "Salimana", "Sileba"}, } m["swu"] = { } m["sww"] = { } m["swx"] = { other_names = {"Zuruahá", "Suruaha", "Suruwaha", "Zuruaha", "Índios do Coxodoá"}, } m["swy"] = { } m["sxb"] = { } m["sxc"] = { } m["sxe"] = { } m["sxg"] = { other_names = {"Shuhi", "Xumi"}, } m["sxk"] = { } m["sxl"] = { other_names = {"Selian"}, } m["sxm"] = { } m["sxn"] = { } m["sxo"] = { } m["sxr"] = { } m["sxs"] = { } -- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["sxw"] = { } m["sya"] = { } m["syb"] = { } m["syc"] = { } m["syi"] = { } m["syk"] = { } m["syl"] = { aliases = {"Sylhetti", "Sileti", "Siloti", "Syloti", "Syloty"} } m["sym"] = { } m["syn"] = { } m["syo"] = { } m["sys"] = { } m["syw"] = { aliases = {"Syuba"}, } m["syx"] = { other_names = {"Shamay", "Samayi", "Samay", "Shamayi"}, } m["syy"] = { } m["sza"] = { } m["szb"] = { varieties = {"Apmisibil", "Nuclear Ngalum", "Sibil"}, } m["szc"] = { } m["szd"] = { } m["sze"] = { } m["szg"] = { } m["szl"] = { aliases = {"Upper Silesian", "Silesian Polish", "Upper Silesian Polish"}, } m["szn"] = { } m["szp"] = { other_names = {"Inanwatan"}, } m["szv"] = { other_names = {"Isu", "Isu (Fako Division)", "Isuwu", "Suwu", "Subu"}, } m["szw"] = { other_names = {"Weda", "Weda-Sawai", "Kobe", "Faya-Mafa", "Messa-Dote"}, } m["szy"] = { } return m sb9mr4edjax9m9vqnxuuvf9p7zpvlqm 235451 235450 2026-06-02T10:41:03Z Lee 19 [[:en:Module:languages/data/3/s/extra]] වෙතින් එක් සංශෝධනයක් 235450 Scribunto text/plain local m = {} m["saa"] = { } m["sab"] = { aliases = {"Bugle", "Murire", "Muoy"}, varieties = {"Sabanero", {"Bokotá", "Bogota"}}, } m["sac"] = { varieties = {{"Sac", "Sauk"}, "Kickapoo", {"Mesquakie", "Meskwaki"}}, } m["sad"] = { } m["sae"] = { } m["saf"] = { } m["sah"] = { aliases = {"Sakha"}, } m["saj"] = { varieties = {"Pa'disua", "Tala'i"}, } m["sak"] = { aliases = {"Shake"}, } m["sam"] = { aliases = {"Samaritan"}, } m["sao"] = { } m["saq"] = { } m["sar"] = { aliases = {"Sarabeca", "Saraveka", "Sarave"}, } m["sas"] = { } m["sat"] = { } m["sau"] = { } m["sav"] = { } m["saw"] = { } m["sax"] = { aliases = {"Saa"}, } m["say"] = { } m["saz"] = { } m["sba"] = { } m["sbb"] = { } m["sbc"] = { aliases = {"Kele (New Guinea)", "Kele (Papua New Guinea)", "Kele"}, } m["sbd"] = { } m["sbe"] = { aliases = {"Saliba"}, } m["sbf"] = { aliases = {"Mikeyir", "Mekeyir", "Mekeyer"}, } m["sbg"] = { } m["sbh"] = { -- I'm guessing these are varieties, since they represent the names of the two islands on which the language -- (Sori-Harengan) is spoken. varieties = {"Sori", "Harengan"}, } m["sbi"] = { } m["sbj"] = { } m["sbk"] = { } m["sbl"] = { } m["sbm"] = { } m["sbn"] = { } m["sbo"] = { } m["sbp"] = { } m["sbq"] = { aliases = {"Sileibi"}, } m["sbr"] = { } m["sbs"] = { } m["sbt"] = { pseudo_families = "paa", } m["sbu"] = { } m["sbv"] = { } m["sbw"] = { } m["sbx"] = { } m["sby"] = { } m["sbz"] = { } m["scb"] = { } m["sce"] = { aliases = {"Santa"}, } m["scf"] = { } m["scg"] = { } m["sch"] = { -- Alias vs. variety here is a guess; Wikipedia says "Sakachep also known as Khelma" and says the ethnicity is -- "The Khelma, also known as the Sakachep" but Ethnologue also says "dialects are Khelma, Thangachep, and Sakachep" -- which may be bogus. aliases = {"Khelma"}, } m["sci"] = { } m["sck"] = { } m["scl"] = { -- These represent different valleys where the language is spoken, hence likely distinct dialects. varieties = {"Gilgiti", "Astori", "Chilasi"}, } m["scn"] = { } m["sco"] = { aliases = {"Lowland Scots"}, } m["scp"] = { aliases = {"Hyolmo", "Yohlmo", "Helambu Sherpa"}, -- Wikipedia says Syuba/Kagate (code skw) may be close enough to be a dialect. Langtang is mutually intelligible -- with Yolmo but often considered a separate language; yet we don't have a code for it so I'm putting it as a -- variety. varieties = {"Melamchi Valley Yolmo", "Langtang", "Lamjung Yolmo", "Ilam Yolmo"}, } m["scq"] = { aliases = {"Chung"}, } m["scs"] = { } m["scu"] = { } m["scv"] = { } m["scw"] = { } m["scx"] = { aliases = {"Siculian"}, } m["scz"] = { aliases = {"Shaetlan", "Shetlandic"}, } m["sda"] = { } m["sdb"] = { aliases = {"Shabaki"}, } m["sdc"] = { } m["sde"] = { } m["sdf"] = { aliases = {"Sarliya"}, } m["sdg"] = { } m["sdh"] = { -- Kermanshahi can refer either to Southern Kurdish as a whole or to the prestige dialect. We distinct the latter -- as Kermanshani with an n following ''Habib Borjian, “KERMANSHAH vii. Languages and Dialects,” Encyclopædia -- Iranica, Vol. 16, Fasc. 3, New York, 2017, pp. 327-331.'' but this may not make a lot of sense. aliases = {"Kermanshahi", "Kermanshahi Kurdish"}, -- We classify Laki as a separate language but it is often considered a dialect of Southern Kurdish. varieties = {{"Kermanshani", "Kermanshani Kurdish"}, {"Kolya'i", "Kolyā'i"}, "Zangana", "Kalhori", {"Sanjābi", "Sanjabi"}, {"Feyli", "Fayli", "Ilāmi", "Ilami"}}, } m["sdj"] = { } m["sdk"] = { } m["sdl"] = { } m["sdm"] = { } m["sdn"] = { } m["sdo"] = { aliases = {"Bukar-Sadong"}, } m["sdp"] = { } m["sdr"] = { } m["sds"] = { } m["sdu"] = { } m["sdx"] = { } m["sea"] = { } -- seb is a duplicate code of spp m["sec"] = { } m["sed"] = { } m["see"] = { } m["sef"] = { } m["seg"] = { } m["seh"] = { varieties = {{"Malawi Sena", "Malawian Sena"}, {"Nuclear Sena", "Mozambican Sena"}}, -- includes [swk] for Malawian Sena, but [bwg] for Barwe is distinct } m["sei"] = { } m["sej"] = { } m["sek"] = { aliases = {"Tsek'ene"}, varieties = {{"Kwadacha", "Kwadacha Sekani", "Kwadacha Tsek'ene"}}, } m["sen"] = { } m["seo"] = { aliases = {"Asabano", -- Glottolog's name "Suarmin", -- old ISO name "Asabo", -- used in Foley (2005) and Foley (2018); may be a typo "Duranmin", -- in e.g. Laycock and Z'graggen (1975), Conrad (1988) }, pseudo_families = "paa", } m["sep"] = { } m["seq"] = { } m["ser"] = { -- Wikipedia treats Kitanemuk as a separate language but it says it may have been a dialect (it is extinct). varieties = {"Kitanemuk"}, } m["ses"] = { aliases = {"Koyraboro Senni Songhay", "Koyraboro Senni Songhai", "Koroboro Senni"}, -- other_names = {"Eastern Songhay"}, -- this is a geographic grouping of Songhay languages including Koyraboro Senni } m["set"] = { varieties = {"Central Sentani", "East Sentani", "West Sentani"}, } m["seu"] = { } m["sev"] = { } m["sew"] = { } m["sey"] = { } m["sez"] = { aliases = {"Senthang"}, } m["sfb"] = { } m["sfe"] = { } m["sfm"] = { } m["sfs"] = { } m["sfw"] = { } m["sga"] = { } m["sgb"] = { } m["sgc"] = { } m["sgd"] = { } m["sge"] = { } m["sgg"] = { aliases = {"Swiss German Sign Language"}, } m["sgh"] = { } m["sgi"] = { } m["sgk"] = { } m["sgm"] = { } m["sgp"] = { } m["sgr"] = { aliases = {"Sangsari"}, } m["sgs"] = { } m["sgt"] = { aliases = {"Brokpa"}, } m["sgu"] = { } m["sgw"] = { } m["sgx"] = { } m["sgy"] = { -- FIXME: Sanglich is the name of the language as used in Tajikistan, while Sanglechi is the name as used in -- Afghanistan. Hence they could be different dialects, but provisionally I'm classifying them as aliases. aliases = {"Sanglich"}, -- "Warduji" may not exist at all } m["sgz"] = { } m["sha"] = { } m["shb"] = { aliases = {"Yanam", "Yanam-Ninam", "Xiriana", "Xiriâna", "Shiriana", "Xirixana", "Shirishana"}, } m["shc"] = { } m["shd"] = { } m["she"] = { } m["shg"] = { aliases = {"Shwa", "Shwakhwe"}, } m["shh"] = { aliases = {"Shoshoni"}, varieties = {{"Gosiute", "Goshute"}, {"Eastern Shoshone", "Eastern Shoshoni"}, {"Western Shoshone", "Western Shoshoni"}, {"Northern Shoshone", "Northern Shoshoni"}}, } m["shi"] = { aliases = {"Tachelhit", "Chleuh", "Shilha", "Tashlhiyt", "Tashelhit Berber", "Tachelhit Berber", "Tashlhiyt Berber", "Soussian"}, } m["shj"] = { } m["shk"] = { } m["shl"] = { } m["shm"] = { } m["shn"] = { aliases = {"Kwam Tai", "Kam Tai", "Tai Yai"}, } m["sho"] = { } m["shp"] = { } m["shq"] = { } m["shr"] = { } m["shs"] = { } m["sht"] = { } m["shu"] = { } m["shv"] = { aliases = {"Jibbali"}, } m["shw"] = { } m["shx"] = { aliases = {"Ho Ne", "Ho Nte"}, } m["shy"] = { aliases = {"Shawiya Berber", "Chaouïa", "Tacawit"}, } m["shz"] = { } m["sia"] = { } m["sib"] = { } m["sid"] = { aliases = {"Sidaama"}, } m["sie"] = { } m["sif"] = { } m["sig"] = { } m["sih"] = { aliases = {"Sishee", "Zire"}, } m["sii"] = { } m["sij"] = { } m["sik"] = { } m["sil"] = { } m["sim"] = { aliases = {"Mende", "Seim", -- our old name }, } m["sip"] = { aliases = {"Bhutia", "Dranjongke", "Dranjoke", "Denjongka", "Denzongpeke", "Denzongke"}, } m["siq"] = { } m["sir"] = { } m["sis"] = { } m["siu"] = { aliases = {"Galu"}, -- Glottolog's name } m["siv"] = { } m["siw"] = { varieties = {"Baitsi"}, } m["six"] = { aliases = {"Garia", "Kari"}, } m["siy"] = { } m["siz"] = { aliases = {"Siwa", "Siwan", "Siwa Berber"}, } m["sja"] = { } m["sjb"] = { } m["sjc"] = { aliases = {"Shao-Jiang Min", "Shaojiang Chinese", "Shao-Jiang Chinese"}, } m["sjd"] = { } m["sje"] = { } m["sjg"] = { } m["sjk"] = { } m["sjl"] = { -- Per Wikipedia, these are two languages. There is also a yet more divergent variety Bangru (Northern Miji). varieties = { {"Western Miji", "Dmay", "Dhammai", "Dhəmmai", "Sajalang", "Sajolang"}, {"Eastern Miji", "Namrai", "Nəmrai"}, } } m["sjm"] = { } m["sjn"] = { } m["sjo"] = { aliases = {"Sibo", "Sibe", "Xibo"}, } m["sjp"] = { } m["sjr"] = { } m["sjs"] = { -- from Wikipedia aliases = {"Senhaja De Srair", "Sanhaja de Srair", "Senhajiyya", "Chelha", "Chelha n Senhaja", "Chelha n Isenhajen", "Tamazight n Senhaja", "Tasenhaji"}, } m["sjt"] = { } m["sju"] = { } m["sjw"] = { } -- [ska] Skagit is treated as part of [lut] Lushootseed m["skb"] = { } m["skc"] = { aliases = {"Sauk"}, } m["skd"] = { } m["ske"] = { aliases = {"Seke"}, } m["skf"] = { aliases = {"Mekens", "Mekem", "Amniapé"}, -- Glottolog refers to the third variety as Siokweriat corresponding to Koarategayat etc. varieties = {{"Sakirabiá", "Sakïrabiát", "Sakiráp", "Sakurabiat"}, {"Koaratira", "Guaratira", "Kanoé"}, {"Koarategayat", "Guaratégaya", "Guarategaja", "Warategáya"}}, } m["skh"] = { } m["ski"] = { other_names = {"Sikanese"}, } m["skj"] = { -- compare 'ths' } m["skk"] = { } m["skm"] = { other_names = {"Kutong"}, } m["skn"] = { } m["sko"] = { } m["skp"] = { } m["skq"] = { } m["skr"] = { other_names = {"Siraiki", "Seraiki"}, } m["sks"] = { aliases = {"Maya"}, other_names = {"Banar", "Suaro", "Turutap", "Yakiba"}, varieties = {"Pila", "Saki"}, } m["skt"] = { other_names = {"Kisakata", "Lesa", "Odual", "Saka", "Bai", "Kibai", "Bay", "Kibay", "Djia", "Dia", "Dja", "Kidjia", "Wadia", "Tuku", "Ketu", "Batow"}, } m["sku"] = { } m["skv"] = { } m["skw"] = { other_names = {"Skepi Dutch", "Skepi Dutch Creole", "Essequibo Dutch"}, } m["skx"] = { } m["sky"] = { aliases = {"Sikayana"}, } m["skz"] = { } m["slc"] = { other_names = {"Saliba", "Sáliba", "Saliva", "Sáliva"}, } m["sld"] = { aliases = {"Sissala"}, } m["sle"] = { } m["slf"] = { other_names = {"Swiss Italian Sign Language"}, } m["slg"] = { } -- [slh] Southern Puget Sound Salish is treated as part of [lut] Lushootseed -- "sli" "Silesian German" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["slj"] = { } m["sll"] = { varieties = {"Keri", {"Salt", "Salt (Salt-Yui)"}}, } m["slm"] = { aliases = {"Siyama"}, } m["sln"] = { } m["slp"] = { other_names = {"Solor", "Solorese"}, } m["slr"] = { } m["sls"] = { } m["slt"] = { } m["slu"] = { } m["slw"] = { } m["slx"] = { } m["sly"] = { } m["slz"] = { } m["sma"] = { } m["smb"] = { } m["smc"] = { } m["smd"] = { } m["smf"] = { } m["smg"] = { } m["smh"] = { } m["smj"] = { } m["smk"] = { other_names = {"Binubolinao"}, } m["sml"] = { } m["smm"] = { } m["smn"] = { } m["smp"] = { other_names = {"Samaritan"}, } m["smq"] = { } m["smr"] = { other_names = {"Simalur", "Devayan", "Defayan", "Simolol", "Simulul", "Simeuloë"}, } m["sms"] = { } m["smt"] = { } m["smu"] = { } m["smv"] = { } m["smw"] = { } m["smx"] = { } m["smy"] = { } m["smz"] = { varieties = {"Koopei", "Mainoki"}, } m["snb"] = { } m["snc"] = { } m["sne"] = { } m["snf"] = { } m["sng"] = { other_names = {"Sanga", "Luba-Sanga", "Sanga (Democratic Republic of Congo)", "Sanga (Democratic Republic of the Congo)"}, } m["sni"] = { } m["snj"] = { } m["snk"] = { } m["snl"] = { } m["snm"] = { } m["snn"] = { } -- [sno] Snohomish is treated as part of [lut] Lushootseed m["snp"] = { varieties = {"Alango", "Fowe", "Kemanimowe", "Keto", "Kolepa", "Komoigaleka", "Komongu", "Laiya", "Lambau", "Olumba", {"Ona", "Ona (Papua New Guinea)"}, "Wando", "Yamofowe", "Yandime"}, } m["snq"] = { other_names = {"Chango"}, } m["snr"] = { aliases = {"Sihan (Gum)"}, -- per Glottolog } m["sns"] = { } m["snu"] = { } m["snv"] = { } m["snw"] = { } m["snx"] = { } m["sny"] = { varieties = {"Hiyowe", "Saniyo"}, } m["snz"] = { aliases = {"Kow", "Sinsauru"}, -- Sinsauru is an alias per Wikipedia varieties = {"Asas", "Saipa"}, } m["soa"] = { aliases = {"Lao Song", "Song"}, } m["sob"] = { } m["soc"] = { other_names = {"So"}, } m["sod"] = { } m["soe"] = { } m["sog"] = { } m["soh"] = { other_names = {"Aka", "Sillok"}, } m["soi"] = { other_names = {"Sonaha", "Sonahaa", "Sunah", "Sunha"}, } m["sok"] = { } m["sol"] = { } m["soo"] = { other_names = {"Songo", "Tsong"}, } m["sop"] = { } m["soq"] = { } m["sor"] = { } m["sos"] = { other_names = {"Seeku", "Sembla", "Sambla"}, } m["sou"] = { aliases = {"Dambro", "Pak Tai"}, } m["sov"] = { } m["sow"] = { } m["sox"] = { other_names = {"So", "Sso", "Shwo", "Fo"}, } m["soy"] = { } m["soz"] = { } m["spb"] = { other_names = {"Sepa"}, } m["spc"] = { other_names = {"Kaliana", "Kariana", "Kaliána", "Sapä́", "Sape"}, } m["spd"] = { } m["spe"] = { other_names = {"Sepa", "Sepa (Papua New Guinea)"}, } m["spg"] = { } m["spi"] = { } m["spk"] = { } m["spl"] = { varieties = {"North Selepet", "South Selepet"}, } m["spm"] = { } m["spn"] = { } m["spo"] = { other_names = {"Montana Salish", "Salish", "Séliš", "Kalispel-Pend d'oreille", "Kalispel"}, } m["spp"] = { other_names = {"Suppire", "Supyire Senoufo", "Supyire Senufo", "Shempire Senoufo", "Shempire"}, } m["spr"] = { } m["sps"] = { } m["spt"] = { } m["spu"] = { } m["spv"] = { other_names = {"Kosali", "Koshali"}, } m["spx"] = { other_names = {"Old Sabellic", "Old Sabellian", "Middle Adriatic", "Central Adriatic"}, } m["spy"] = { } m["sqa"] = { } m["sqh"] = { } m["sqk"] = { } m["sqm"] = { } m["sqn"] = { } m["sqo"] = { } m["sqq"] = { } m["sqr"] = { } m["sqs"] = { } m["sqt"] = { aliases = {"Socotri"}, } m["squ"] = { } m["sra"] = { } m["srb"] = { } m["sre"] = { } m["srf"] = { } m["srg"] = { } m["srh"] = { } m["sri"] = { } m["srk"] = { aliases = {"Serudung"}, } m["srl"] = { varieties = {"Eastern Isirawa", "Western Isirawa"}, } m["srm"] = { } m["srn"] = { } m["srq"] = { } m["srr"] = { } m["srs"] = { aliases = {"Sarcee", "Sarsi", "Tsuu T'ina", "Tsu T'ina"}, } m["srt"] = { } m["sru"] = { other_names = {"Paíter", "Suruí-Paíter", "Suruí de Rondônia", "Suruí do Jiparaná"}, } m["srv"] = { } m["srw"] = { } m["srx"] = { } m["sry"] = { } m["srz"] = { } m["ssb"] = { } m["ssc"] = { } m["ssd"] = { } m["sse"] = { } m["ssf"] = { other_names = {"Sao"}, } m["ssg"] = { } m["ssh"] = { } m["ssi"] = { other_names = {"Bhilki"}, } m["ssj"] = { } m["ssk"] = { } m["ssl"] = { } m["ssm"] = { } m["sso"] = { } m["ssp"] = { } m["ssq"] = { } m["ssr"] = { other_names = {"Swiss French Sign Language"}, } m["sss"] = { } m["sst"] = { varieties = {"Dinga", "Gunangi", {"Kebai", "Kebai (Sinasina)"}, {"Kere", "Kere (Sinasina)"}, "Kondo", "Nimai", "Tabare"}, } m["ssu"] = { } m["ssv"] = { } m["ssx"] = { } m["ssy"] = { } m["ssz"] = { } m["stb"] = { } m["std"] = { } m["ste"] = { } m["stf"] = { } m["stg"] = { } m["sth"] = { other_names = {"Cant"}, } m["sti"] = { } m["stj"] = { } m["stk"] = { } m["stm"] = { } m["stn"] = { } m["sto"] = { } m["stp"] = { } m["stq"] = { other_names = {"East Frisian", "Eastern Frisian"}, -- Saterland F is a dialect of East F; see [[WT:T:ASTQ]] } m["str"] = { } m["sts"] = { } m["stt"] = { } m["stu"] = { } m["stv"] = { } m["stw"] = { } m["sty"] = { } m["sua"] = { } m["sub"] = { } m["suc"] = { } m["sue"] = { } m["sug"] = { } m["sui"] = { } m["suk"] = { } m["suo"] = { aliases = {"Bouni-Bobe", -- Glottolog "Sumo"}, -- alternative name in Wikipedia varieties = {"Bobe", "Bouni"}, -- per Glottolog } m["suq"] = { } m["sur"] = { other_names = {"Sura", "Mupun"}, } m["sus"] = { } m["sut"] = { } m["suv"] = { } m["suw"] = { } m["sux"] = { } m["suy"] = { } m["suz"] = { } m["sva"] = { } m["svb"] = { } m["svc"] = { } m["sve"] = { } m["svk"] = { } m["svm"] = { aliases = {"Slavo-molisano", "Molise Slavic", "Molise Croatian"}, } m["svs"] = { pseudo_families = "paa", } m["svx"] = { } m["swb"] = { } m["swf"] = { } m["swg"] = { } m["swi"] = { aliases = {"Ai Sui", "Shui", "Sui Li", "Suipo"}, } m["swj"] = { } m["swl"] = { } m["swm"] = { } m["swn"] = { other_names = {"Sawknah", "Fezzan", "Fogaha"}, } m["swo"] = { } m["swp"] = { } m["swq"] = { } m["swr"] = { } m["sws"] = { } m["swt"] = { varieties = {"Lalamana", "Lona", "Nuclear Sawila", "Salimana", "Sileba"}, } m["swu"] = { } m["sww"] = { } m["swx"] = { other_names = {"Zuruahá", "Suruaha", "Suruwaha", "Zuruaha", "Índios do Coxodoá"}, } m["swy"] = { } m["sxb"] = { } m["sxc"] = { } m["sxe"] = { } m["sxg"] = { other_names = {"Shuhi", "Xumi"}, } m["sxk"] = { } m["sxl"] = { other_names = {"Selian"}, } m["sxm"] = { } m["sxn"] = { } m["sxo"] = { } m["sxr"] = { } m["sxs"] = { } -- "sxu" "Upper Saxon" IS SUBSUMED INTO "gmw-ecg" "East Central German" m["sxw"] = { } m["sya"] = { } m["syb"] = { } m["syc"] = { } m["syi"] = { } m["syk"] = { } m["syl"] = { aliases = {"Sylhetti", "Sileti", "Siloti", "Syloti", "Syloty"} } m["sym"] = { } m["syn"] = { } m["syo"] = { } m["sys"] = { } m["syw"] = { aliases = {"Syuba"}, } m["syx"] = { other_names = {"Shamay", "Samayi", "Samay", "Shamayi"}, } m["syy"] = { } m["sza"] = { } m["szb"] = { varieties = {"Apmisibil", "Nuclear Ngalum", "Sibil"}, } m["szc"] = { } m["szd"] = { } m["sze"] = { } m["szg"] = { } m["szl"] = { aliases = {"Upper Silesian", "Silesian Polish", "Upper Silesian Polish"}, } m["szn"] = { } m["szp"] = { other_names = {"Inanwatan"}, } m["szv"] = { other_names = {"Isu", "Isu (Fako Division)", "Isuwu", "Suwu", "Subu"}, } m["szw"] = { other_names = {"Weda", "Weda-Sawai", "Kobe", "Faya-Mafa", "Messa-Dote"}, } m["szy"] = { } return m sb9mr4edjax9m9vqnxuuvf9p7zpvlqm Module:module categorization 828 6853 235476 231499 2026-04-15T18:57:23Z en>Surjection 0 Changed protection settings for "[[Module:module categorization]]" ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite)) 235476 Scribunto text/plain local export = {} local put_module = "Module:parse utilities" local rsplit = mw.text.split local rfind = mw.ustring.find local unpack = unpack or table.unpack -- Lua 5.2 compatibility local keyword_to_module_type = { common = "Language-specific utility", utilities = "Language-specific utility", headword = "Headword-line", translit = "Transliteration", infl = "Inflection", inflection = "Inflection", decl = "Inflection", declension = "Inflection", adecl = "Inflection", conj = "Inflection", conjugation = "Inflection", noun = "Inflection", nouns = "Inflection", pronoun = "Inflection", pronouns = "Inflection", verb = "Inflection", verbs = "Inflection", adjective = "Inflection", adjectives = "Inflection", adj = "Inflection", nominal = "Inflection", nominals = "Inflection", pron = "Pronunciation", pronun = "Pronunciation", pronunc = "Pronunciation", pronunciation = "Pronunciation", IPA = "Pronunciation", stripdiacritics = "Diacritic-stripping", sortkey = "Sortkey-generating", } -- If a module type is here, we will generate a lang-specific module-type category such as -- [[:Category:Pali inflection modules]]. local module_type_generates_lang_specific_cat = { ["Inflection"] = true, ["Data"] = true, ["Testcase"] = true, } -- If a module type is here, we will generate a lang-specific module-type category such as -- [[:Category:Pali inflection modules]]. The value is a module that returns a function that fetches all the -- languages that use a given module for transliteration/diacritic-stripping/sortkey generation. local languages_from_module_name = { ["Transliteration"] = "Module:languages/byTranslitModule", ["Transliteration testcase"] = "Module:languages/byTranslitModule", ["Diacritic-stripping"] = "Module:languages/byStripDiacriticsModule", ["Sortkey-generating"] = "Module:languages/bySortkeyModule", } local module_type_patterns = { {"/data%f[-/%z]", "Data"}, {"/testcases%f[-/%z]", function(typ) if typ == "Pronunciation" then return "Pronunciation testcase" elseif typ == "Transliteration" then return "Transliteration testcase" else return "Testcase" end end}, } -- Split an argument on comma, but not comma followed by whitespace. local function split_on_comma(val) if val:find(",%s") then return require(put_module).split_on_comma(val) else return rsplit(val, ",") end end local function get_lang_or_script(code) return code == "-" and code or require("Module:languages").getByCode(code, nil, "allow etym") or require("Module:languages").getByCode(code .. "-pro", nil, "allow etym") or require("Module:scripts").getByCode(code) end local function obj_code(obj) if obj == "-" then return obj end return obj:getCode() end local function infer_lang_or_script_code(name) local hyphen_parts = rsplit(name, "%-") for i = #hyphen_parts - 1, 1, -1 do local code = table.concat(hyphen_parts, "-", 1, i) local obj = get_lang_or_script(code) if obj then local rest = table.concat(hyphen_parts, "-", i + 1) return obj, rest end end return nil, nil end local function infer_lang_and_script_codes(name) local objs = {} while true do local obj, rest = infer_lang_or_script_code(name) if not obj then return objs, name end if #objs > 0 and obj:getCode() == "to" then -- skip 'to' in e.g. [[Module:ks-Arab-to-Deva-translit]]; it's not Tongan else table.insert(objs, obj) end name = rest end end --[==[ Main entry point. Can be called from Lua or another module. `return_raw` set to true makes function return a table of categories with {"[[Category:"} and {"]]"} stripped away. It is used by [[Module:documentation]]. ]==] function export.categorize(frame, return_raw, noerror) local categories = {} local function insert_cat(cat, sortkey) for _, existing_cat in ipairs(categories) do if existing_cat.name == cat then return end end table.insert(categories, {name = cat, sort = sortkey}) end local pagename if frame.args[1] then pagename = frame.args[1] end local args if frame.args.is_template then local params = { [1] = {}, -- comma-separated list of languages; by default, inferred from module name ["type"] = {}, [2] = {alias_of = "type"}, ["pagename"] = {}, -- for testing ["return_cats"] = {type = "boolean"}, -- for testing } local parent_args = frame:getParent().args args = require("Module:parameters").process(parent_args, params) else args = {} end pagename = pagename or args.pagename local title if pagename then title = mw.title.new(pagename, 'Module') else title = mw.title.getCurrentTitle() -- Fuckme, sometimes this function is called with a faked frame and a title with the namespace already chopped out, -- so this test cannot be done in that case. if title.nsText ~= "Module" then error(("This template should only be used in the Module namespace, not on page '%s'."):format(title.fullText)) end pagename = title.fullText end local subpage = title.subpageText local null_return_value = return_raw and {} or "" -- To ensure no categories are added on documentation pages. if subpage == "documentation" then return null_return_value end local root_pagename if subpage ~= pagename then root_pagename = title.rootText else root_pagename = pagename end root_pagename = root_pagename:gsub("^Module:", "") -- Take the module type(s) from type= if given, or infer from the pagename. local module_types if args.type then module_types = {} local module_type_specs = split_on_comma(args.type) for _, spec in ipairs(module_type_specs) do local modtype, sortkey = spec:match("^(.-):(.*)$") modtype = modtype or spec sortkey = sortkey and sortkey:gsub("_", " ") or nil table.insert(module_types, {type = modtype, sort = sortkey}) end else local module_type_keyword = root_pagename:match("[-%a]+[- ]([^/]+)%f[/%z]") if not module_type_keyword then if noerror then return null_return_value else error(("Could not extract module type from root pagename '%s'"):format(root_pagename)) end end local module_type = keyword_to_module_type[module_type_keyword] if not module_type then if noerror then return null_return_value else error(("Did not recognize inferred module-type keyword '%s' from root pagename '%s'"):format( module_type_keyword, root_pagename)) end end module_types = {{type = module_type}} end -- Look for additional module type(s) inferred by pattern. for _, pattern_spec in ipairs(module_type_patterns) do local pattern, inferred_type = unpack(pattern_spec) if rfind(pagename, pattern) then local function insert_module_type(typ) require("Module:table").insertIfNot(module_types, typ, {key = function(obj) return obj.type end}) end if type(inferred_type) == "string" then insert_module_type({type = inferred_type}) else local addl_types = {} for _, typ in ipairs(module_types) do table.insert(addl_types, {type = inferred_type(typ.type), sort = typ.sort}) end for _, typ in ipairs(addl_types) do insert_module_type(typ) end end end end -- If 1= specified, take the languages/scripts directly from there. Otherwise, (a) try to extract one or more -- languages/scripts from the pagename (e.g. [[Module:uk-be-headword]] -> Ukrainian and Belarusian (languages); -- [[Module:bho-Kthi-translit]] -> Bhojpuri (language) and Kaithi (script); [[Module:Deva-Kthi-translit]] -> -- Devanagari and Kaithi (scripts)); and (b) if the specified or inferred module type(s) contain a type listed in -- languages_from_module_name[], use the function referenced there to extract additional languages (i.e. all the -- languages that use the module we are processing). local inferred_objs if args[1] then inferred_objs = {} for _, code in ipairs(rsplit(args[1], ",")) do -- We need to have an indicator of families because we allow bare family codes to stand for proto-languages. if code:find("^fam:") then code = code:gsub("^fam:", "") local family = require("Module:families").getByCode(code) or error(("Unrecognized family code '%s' in [[Module:module categorization]]"):format(code)) local descendants = family:getDescendantCodes() for _, desc in ipairs(descendants) do local obj = get_lang_or_script(desc) if obj then -- make sure we skip families without proto-languages table.insert(inferred_objs, obj) end end else local obj = get_lang_or_script(code) if not obj then error(("Unrecognized language or script code '%s'"):format(code)) end table.insert(inferred_objs, obj) end end else inferred_objs = infer_lang_and_script_codes(root_pagename) for _, module_type in ipairs(module_types) do local languages_extractor = languages_from_module_name[module_type.type] if languages_extractor then local langs = require(languages_extractor)(root_pagename) if langs then for _, obj in ipairs(langs) do require("Module:table").insertIfNot(inferred_objs, obj, {key = obj_code}) end end end end if #inferred_objs == 0 then if noerror then return null_return_value else error(("Could not infer any languages or scripts from root pagename '%s'"):format(root_pagename)) end end end if pagename:find("^Module:User:") then insert_cat("User sandbox modules") elseif pagename:find("/sandbox") then insert_cat("Sandbox modules") else for _, module_type in ipairs(module_types) do for _, obj in ipairs(inferred_objs) do local function insert_overall_module_type_cat(sortkey) if module_type.type ~= "-" then insert_cat(module_type.type .. " modules", module_type.sort or sortkey) end end if obj == "-" then insert_overall_module_type_cat() else if obj:hasType("script") and module_type.type ~= "-" then insert_cat(module_type.type .. " modules by script", obj:getCanonicalName()) end local function construct_lang_or_sc_cat(obj, suffix) local prefix if obj:hasType("language") then prefix = obj:getFullName() else prefix = obj:getCategoryName() end return prefix .. " " .. suffix end insert_cat(construct_lang_or_sc_cat(obj, "modules"), module_type.type) insert_overall_module_type_cat(obj:getCanonicalName()) if module_type_generates_lang_specific_cat[module_type.type] then insert_cat(construct_lang_or_sc_cat(obj, mw.getContentLanguage():lcfirst(module_type.type) .. " modules")) end end end end end for i, catspec in ipairs(categories) do if catspec.sort then categories[i] = ("%s|%s"):format(catspec.name, catspec.sort) else categories[i] = catspec.name end end if args.return_cats then return table.concat(categories, ",") elseif return_raw then return categories else for i, cat in ipairs(categories) do categories[i] = "[[Category:" .. cat .. "]]" end return table.concat(categories) end end --[==[Table used in the documentation to {{tl|module cat}}.]==] function export.keyword_to_module_type_table() local parts = {} local function ins(text) table.insert(parts, text) end ins('{|class="wikitable"') ins("! Keyword !! Inferred module type") local keywords = {} for k, v in pairs(keyword_to_module_type) do table.insert(keywords, k) end table.sort(keywords) for _, keyword in ipairs(keywords) do ins("|-") ins(("| <code>%s</code> || <code>%s</code>"):format(keyword, keyword_to_module_type[keyword])) end ins("|}") return table.concat(parts, "\n") end return export 49kgokr598jhf8kb74maya3v6r032gc 235477 235476 2026-06-02T11:08:56Z Lee 19 [[:en:Module:module_categorization]] වෙතින් එක් සංශෝධනයක් 235476 Scribunto text/plain local export = {} local put_module = "Module:parse utilities" local rsplit = mw.text.split local rfind = mw.ustring.find local unpack = unpack or table.unpack -- Lua 5.2 compatibility local keyword_to_module_type = { common = "Language-specific utility", utilities = "Language-specific utility", headword = "Headword-line", translit = "Transliteration", infl = "Inflection", inflection = "Inflection", decl = "Inflection", declension = "Inflection", adecl = "Inflection", conj = "Inflection", conjugation = "Inflection", noun = "Inflection", nouns = "Inflection", pronoun = "Inflection", pronouns = "Inflection", verb = "Inflection", verbs = "Inflection", adjective = "Inflection", adjectives = "Inflection", adj = "Inflection", nominal = "Inflection", nominals = "Inflection", pron = "Pronunciation", pronun = "Pronunciation", pronunc = "Pronunciation", pronunciation = "Pronunciation", IPA = "Pronunciation", stripdiacritics = "Diacritic-stripping", sortkey = "Sortkey-generating", } -- If a module type is here, we will generate a lang-specific module-type category such as -- [[:Category:Pali inflection modules]]. local module_type_generates_lang_specific_cat = { ["Inflection"] = true, ["Data"] = true, ["Testcase"] = true, } -- If a module type is here, we will generate a lang-specific module-type category such as -- [[:Category:Pali inflection modules]]. The value is a module that returns a function that fetches all the -- languages that use a given module for transliteration/diacritic-stripping/sortkey generation. local languages_from_module_name = { ["Transliteration"] = "Module:languages/byTranslitModule", ["Transliteration testcase"] = "Module:languages/byTranslitModule", ["Diacritic-stripping"] = "Module:languages/byStripDiacriticsModule", ["Sortkey-generating"] = "Module:languages/bySortkeyModule", } local module_type_patterns = { {"/data%f[-/%z]", "Data"}, {"/testcases%f[-/%z]", function(typ) if typ == "Pronunciation" then return "Pronunciation testcase" elseif typ == "Transliteration" then return "Transliteration testcase" else return "Testcase" end end}, } -- Split an argument on comma, but not comma followed by whitespace. local function split_on_comma(val) if val:find(",%s") then return require(put_module).split_on_comma(val) else return rsplit(val, ",") end end local function get_lang_or_script(code) return code == "-" and code or require("Module:languages").getByCode(code, nil, "allow etym") or require("Module:languages").getByCode(code .. "-pro", nil, "allow etym") or require("Module:scripts").getByCode(code) end local function obj_code(obj) if obj == "-" then return obj end return obj:getCode() end local function infer_lang_or_script_code(name) local hyphen_parts = rsplit(name, "%-") for i = #hyphen_parts - 1, 1, -1 do local code = table.concat(hyphen_parts, "-", 1, i) local obj = get_lang_or_script(code) if obj then local rest = table.concat(hyphen_parts, "-", i + 1) return obj, rest end end return nil, nil end local function infer_lang_and_script_codes(name) local objs = {} while true do local obj, rest = infer_lang_or_script_code(name) if not obj then return objs, name end if #objs > 0 and obj:getCode() == "to" then -- skip 'to' in e.g. [[Module:ks-Arab-to-Deva-translit]]; it's not Tongan else table.insert(objs, obj) end name = rest end end --[==[ Main entry point. Can be called from Lua or another module. `return_raw` set to true makes function return a table of categories with {"[[Category:"} and {"]]"} stripped away. It is used by [[Module:documentation]]. ]==] function export.categorize(frame, return_raw, noerror) local categories = {} local function insert_cat(cat, sortkey) for _, existing_cat in ipairs(categories) do if existing_cat.name == cat then return end end table.insert(categories, {name = cat, sort = sortkey}) end local pagename if frame.args[1] then pagename = frame.args[1] end local args if frame.args.is_template then local params = { [1] = {}, -- comma-separated list of languages; by default, inferred from module name ["type"] = {}, [2] = {alias_of = "type"}, ["pagename"] = {}, -- for testing ["return_cats"] = {type = "boolean"}, -- for testing } local parent_args = frame:getParent().args args = require("Module:parameters").process(parent_args, params) else args = {} end pagename = pagename or args.pagename local title if pagename then title = mw.title.new(pagename, 'Module') else title = mw.title.getCurrentTitle() -- Fuckme, sometimes this function is called with a faked frame and a title with the namespace already chopped out, -- so this test cannot be done in that case. if title.nsText ~= "Module" then error(("This template should only be used in the Module namespace, not on page '%s'."):format(title.fullText)) end pagename = title.fullText end local subpage = title.subpageText local null_return_value = return_raw and {} or "" -- To ensure no categories are added on documentation pages. if subpage == "documentation" then return null_return_value end local root_pagename if subpage ~= pagename then root_pagename = title.rootText else root_pagename = pagename end root_pagename = root_pagename:gsub("^Module:", "") -- Take the module type(s) from type= if given, or infer from the pagename. local module_types if args.type then module_types = {} local module_type_specs = split_on_comma(args.type) for _, spec in ipairs(module_type_specs) do local modtype, sortkey = spec:match("^(.-):(.*)$") modtype = modtype or spec sortkey = sortkey and sortkey:gsub("_", " ") or nil table.insert(module_types, {type = modtype, sort = sortkey}) end else local module_type_keyword = root_pagename:match("[-%a]+[- ]([^/]+)%f[/%z]") if not module_type_keyword then if noerror then return null_return_value else error(("Could not extract module type from root pagename '%s'"):format(root_pagename)) end end local module_type = keyword_to_module_type[module_type_keyword] if not module_type then if noerror then return null_return_value else error(("Did not recognize inferred module-type keyword '%s' from root pagename '%s'"):format( module_type_keyword, root_pagename)) end end module_types = {{type = module_type}} end -- Look for additional module type(s) inferred by pattern. for _, pattern_spec in ipairs(module_type_patterns) do local pattern, inferred_type = unpack(pattern_spec) if rfind(pagename, pattern) then local function insert_module_type(typ) require("Module:table").insertIfNot(module_types, typ, {key = function(obj) return obj.type end}) end if type(inferred_type) == "string" then insert_module_type({type = inferred_type}) else local addl_types = {} for _, typ in ipairs(module_types) do table.insert(addl_types, {type = inferred_type(typ.type), sort = typ.sort}) end for _, typ in ipairs(addl_types) do insert_module_type(typ) end end end end -- If 1= specified, take the languages/scripts directly from there. Otherwise, (a) try to extract one or more -- languages/scripts from the pagename (e.g. [[Module:uk-be-headword]] -> Ukrainian and Belarusian (languages); -- [[Module:bho-Kthi-translit]] -> Bhojpuri (language) and Kaithi (script); [[Module:Deva-Kthi-translit]] -> -- Devanagari and Kaithi (scripts)); and (b) if the specified or inferred module type(s) contain a type listed in -- languages_from_module_name[], use the function referenced there to extract additional languages (i.e. all the -- languages that use the module we are processing). local inferred_objs if args[1] then inferred_objs = {} for _, code in ipairs(rsplit(args[1], ",")) do -- We need to have an indicator of families because we allow bare family codes to stand for proto-languages. if code:find("^fam:") then code = code:gsub("^fam:", "") local family = require("Module:families").getByCode(code) or error(("Unrecognized family code '%s' in [[Module:module categorization]]"):format(code)) local descendants = family:getDescendantCodes() for _, desc in ipairs(descendants) do local obj = get_lang_or_script(desc) if obj then -- make sure we skip families without proto-languages table.insert(inferred_objs, obj) end end else local obj = get_lang_or_script(code) if not obj then error(("Unrecognized language or script code '%s'"):format(code)) end table.insert(inferred_objs, obj) end end else inferred_objs = infer_lang_and_script_codes(root_pagename) for _, module_type in ipairs(module_types) do local languages_extractor = languages_from_module_name[module_type.type] if languages_extractor then local langs = require(languages_extractor)(root_pagename) if langs then for _, obj in ipairs(langs) do require("Module:table").insertIfNot(inferred_objs, obj, {key = obj_code}) end end end end if #inferred_objs == 0 then if noerror then return null_return_value else error(("Could not infer any languages or scripts from root pagename '%s'"):format(root_pagename)) end end end if pagename:find("^Module:User:") then insert_cat("User sandbox modules") elseif pagename:find("/sandbox") then insert_cat("Sandbox modules") else for _, module_type in ipairs(module_types) do for _, obj in ipairs(inferred_objs) do local function insert_overall_module_type_cat(sortkey) if module_type.type ~= "-" then insert_cat(module_type.type .. " modules", module_type.sort or sortkey) end end if obj == "-" then insert_overall_module_type_cat() else if obj:hasType("script") and module_type.type ~= "-" then insert_cat(module_type.type .. " modules by script", obj:getCanonicalName()) end local function construct_lang_or_sc_cat(obj, suffix) local prefix if obj:hasType("language") then prefix = obj:getFullName() else prefix = obj:getCategoryName() end return prefix .. " " .. suffix end insert_cat(construct_lang_or_sc_cat(obj, "modules"), module_type.type) insert_overall_module_type_cat(obj:getCanonicalName()) if module_type_generates_lang_specific_cat[module_type.type] then insert_cat(construct_lang_or_sc_cat(obj, mw.getContentLanguage():lcfirst(module_type.type) .. " modules")) end end end end end for i, catspec in ipairs(categories) do if catspec.sort then categories[i] = ("%s|%s"):format(catspec.name, catspec.sort) else categories[i] = catspec.name end end if args.return_cats then return table.concat(categories, ",") elseif return_raw then return categories else for i, cat in ipairs(categories) do categories[i] = "[[Category:" .. cat .. "]]" end return table.concat(categories) end end --[==[Table used in the documentation to {{tl|module cat}}.]==] function export.keyword_to_module_type_table() local parts = {} local function ins(text) table.insert(parts, text) end ins('{|class="wikitable"') ins("! Keyword !! Inferred module type") local keywords = {} for k, v in pairs(keyword_to_module_type) do table.insert(keywords, k) end table.sort(keywords) for _, keyword in ipairs(keywords) do ins("|-") ins(("| <code>%s</code> || <code>%s</code>"):format(keyword, keyword_to_module_type[keyword])) end ins("|}") return table.concat(parts, "\n") end return export 49kgokr598jhf8kb74maya3v6r032gc 235478 235477 2026-06-02T11:12:26Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 235478 Scribunto text/plain local m_sinhala = require("Module:sinhala") local export = {} local put_module = "Module:parse utilities" local rsplit = mw.text.split local rfind = mw.ustring.find local unpack = unpack or table.unpack -- Lua 5.2 compatibility local keyword_to_module_type = { common = "Language-specific utility", utilities = "Language-specific utility", headword = "Headword-line", translit = "Transliteration", infl = "Inflection", inflection = "Inflection", decl = "Inflection", declension = "Inflection", adecl = "Inflection", conj = "Inflection", conjugation = "Inflection", noun = "Inflection", nouns = "Inflection", pronoun = "Inflection", pronouns = "Inflection", verb = "Inflection", verbs = "Inflection", adjective = "Inflection", adjectives = "Inflection", adj = "Inflection", nominal = "Inflection", nominals = "Inflection", pron = "Pronunciation", pronun = "Pronunciation", pronunc = "Pronunciation", pronunciation = "Pronunciation", IPA = "Pronunciation", stripdiacritics = "Diacritic-stripping", sortkey = "Sortkey-generating", } -- If a module type is here, we will generate a lang-specific module-type category such as -- [[:Category:Pali inflection modules]]. local module_type_generates_lang_specific_cat = { ["Inflection"] = true, ["Data"] = true, ["Testcase"] = true, } -- If a module type is here, we will generate a lang-specific module-type category such as -- [[:Category:Pali inflection modules]]. The value is a module that returns a function that fetches all the -- languages that use a given module for transliteration/diacritic-stripping/sortkey generation. local languages_from_module_name = { ["Transliteration"] = "Module:languages/byTranslitModule", ["Transliteration testcase"] = "Module:languages/byTranslitModule", ["Diacritic-stripping"] = "Module:languages/byStripDiacriticsModule", ["Sortkey-generating"] = "Module:languages/bySortkeyModule", } local module_type_patterns = { {"/data%f[-/%z]", "Data"}, {"/testcases%f[-/%z]", function(typ) if typ == "Pronunciation" then return "Pronunciation testcase" elseif typ == "Transliteration" then return "Transliteration testcase" else return "Testcase" end end}, } -- Split an argument on comma, but not comma followed by whitespace. local function split_on_comma(val) if val:find(",%s") then return require(put_module).split_on_comma(val) else return rsplit(val, ",") end end local function get_lang_or_script(code) return code == "-" and code or require("Module:languages").getByCode(code, nil, "allow etym") or require("Module:languages").getByCode(code .. "-pro", nil, "allow etym") or require("Module:scripts").getByCode(code) end local function obj_code(obj) if obj == "-" then return obj end return obj:getCode() end local function infer_lang_or_script_code(name) local hyphen_parts = rsplit(name, "%-") for i = #hyphen_parts - 1, 1, -1 do local code = table.concat(hyphen_parts, "-", 1, i) local obj = get_lang_or_script(code) if obj then local rest = table.concat(hyphen_parts, "-", i + 1) return obj, rest end end return nil, nil end local function infer_lang_and_script_codes(name) local objs = {} while true do local obj, rest = infer_lang_or_script_code(name) if not obj then return objs, name end if #objs > 0 and obj:getCode() == "to" then -- skip 'to' in e.g. [[Module:ks-Arab-to-Deva-translit]]; it's not Tongan else table.insert(objs, obj) end name = rest end end --[==[ Main entry point. Can be called from Lua or another module. `return_raw` set to true makes function return a table of categories with {"[[Category:"} and {"]]"} stripped away. It is used by [[Module:documentation]]. ]==] function export.categorize(frame, return_raw, noerror) local categories = {} local function insert_cat(cat, sortkey) for _, existing_cat in ipairs(categories) do if existing_cat.name == cat then return end end table.insert(categories, {name = cat, sort = sortkey}) end local pagename if frame.args[1] then pagename = frame.args[1] end local args if frame.args.is_template then local params = { [1] = {}, -- comma-separated list of languages; by default, inferred from module name ["type"] = {}, [2] = {alias_of = "type"}, ["pagename"] = {}, -- for testing ["return_cats"] = {type = "boolean"}, -- for testing } local parent_args = frame:getParent().args args = require("Module:parameters").process(parent_args, params) else args = {} end pagename = pagename or args.pagename local title if pagename then title = mw.title.new(pagename, 'Module') else title = mw.title.getCurrentTitle() -- Fuckme, sometimes this function is called with a faked frame and a title with the namespace already chopped out, -- so this test cannot be done in that case. if title.nsText ~= "Module" then error(("This template should only be used in the Module namespace, not on page '%s'."):format(title.fullText)) end pagename = title.fullText end local subpage = title.subpageText local null_return_value = return_raw and {} or "" -- To ensure no categories are added on documentation pages. if subpage == "documentation" then return null_return_value end local root_pagename if subpage ~= pagename then root_pagename = title.rootText else root_pagename = pagename end root_pagename = root_pagename:gsub("^Module:", "") -- Take the module type(s) from type= if given, or infer from the pagename. local module_types if args.type then module_types = {} local module_type_specs = split_on_comma(args.type) for _, spec in ipairs(module_type_specs) do local modtype, sortkey = spec:match("^(.-):(.*)$") modtype = modtype or spec sortkey = sortkey and sortkey:gsub("_", " ") or nil table.insert(module_types, {type = modtype, sort = sortkey}) end else local module_type_keyword = root_pagename:match("[-%a]+[- ]([^/]+)%f[/%z]") if not module_type_keyword then if noerror then return null_return_value else error(("Could not extract module type from root pagename '%s'"):format(root_pagename)) end end local module_type = keyword_to_module_type[module_type_keyword] if not module_type then if noerror then return null_return_value else error(("Did not recognize inferred module-type keyword '%s' from root pagename '%s'"):format( module_type_keyword, root_pagename)) end end module_types = {{type = module_type}} end -- Look for additional module type(s) inferred by pattern. for _, pattern_spec in ipairs(module_type_patterns) do local pattern, inferred_type = unpack(pattern_spec) if rfind(pagename, pattern) then local function insert_module_type(typ) require("Module:table").insertIfNot(module_types, typ, {key = function(obj) return obj.type end}) end if type(inferred_type) == "string" then insert_module_type({type = inferred_type}) else local addl_types = {} for _, typ in ipairs(module_types) do table.insert(addl_types, {type = inferred_type(typ.type), sort = typ.sort}) end for _, typ in ipairs(addl_types) do insert_module_type(typ) end end end end -- If 1= specified, take the languages/scripts directly from there. Otherwise, (a) try to extract one or more -- languages/scripts from the pagename (e.g. [[Module:uk-be-headword]] -> Ukrainian and Belarusian (languages); -- [[Module:bho-Kthi-translit]] -> Bhojpuri (language) and Kaithi (script); [[Module:Deva-Kthi-translit]] -> -- Devanagari and Kaithi (scripts)); and (b) if the specified or inferred module type(s) contain a type listed in -- languages_from_module_name[], use the function referenced there to extract additional languages (i.e. all the -- languages that use the module we are processing). local inferred_objs if args[1] then inferred_objs = {} for _, code in ipairs(rsplit(args[1], ",")) do -- We need to have an indicator of families because we allow bare family codes to stand for proto-languages. if code:find("^fam:") then code = code:gsub("^fam:", "") local family = require("Module:families").getByCode(code) or error(("Unrecognized family code '%s' in [[Module:module categorization]]"):format(code)) local descendants = family:getDescendantCodes() for _, desc in ipairs(descendants) do local obj = get_lang_or_script(desc) if obj then -- make sure we skip families without proto-languages table.insert(inferred_objs, obj) end end else local obj = get_lang_or_script(code) if not obj then error(("Unrecognized language or script code '%s'"):format(code)) end table.insert(inferred_objs, obj) end end else inferred_objs = infer_lang_and_script_codes(root_pagename) for _, module_type in ipairs(module_types) do local languages_extractor = languages_from_module_name[module_type.type] if languages_extractor then local langs = require(languages_extractor)(root_pagename) if langs then for _, obj in ipairs(langs) do require("Module:table").insertIfNot(inferred_objs, obj, {key = obj_code}) end end end end if #inferred_objs == 0 then if noerror then return null_return_value else error(("Could not infer any languages or scripts from root pagename '%s'"):format(root_pagename)) end end end if pagename:find("^Module:User:") then insert_cat("User sandbox modules") elseif pagename:find("/sandbox") then insert_cat("වැලිපිලි මොඩියුල") else for _, module_type in ipairs(module_types) do for _, obj in ipairs(inferred_objs) do local function insert_overall_module_type_cat(sortkey) if module_type.type ~= "-" then insert_cat(m_sinhala.sinhala_adjective(module_type.type) .. " මොඩියුල", module_type.sort or sortkey) end end if obj == "-" then insert_overall_module_type_cat() else if obj:hasType("script") and module_type.type ~= "-" then insert_cat("අක්ෂරක්‍රමය අනුව " .. m_sinhala.sinhala_adjective(module_type.type) .. " මොඩියුල", obj:getCanonicalName()) end local function construct_lang_or_sc_cat(obj, suffix) local prefix local extra = "" if obj:hasType("language") then prefix = obj:getFullName() else prefix = obj:getCategoryName() extra = "පිළිබඳ " end return prefix .. " " .. extra .. suffix end insert_cat(construct_lang_or_sc_cat(obj, "මොඩියුල"), module_type.type) insert_overall_module_type_cat(obj:getCanonicalName()) if module_type_generates_lang_specific_cat[module_type.type] then insert_cat(construct_lang_or_sc_cat(obj, m_sinhala.sinhala_adjective(mw.getContentLanguage():lcfirst(module_type.type)) .. " මොඩියුල")) end end end end end for i, catspec in ipairs(categories) do if catspec.sort then categories[i] = ("%s|%s"):format(catspec.name, catspec.sort) else categories[i] = catspec.name end end if args.return_cats then return table.concat(categories, ",") elseif return_raw then return categories else for i, cat in ipairs(categories) do categories[i] = "[[Category:" .. cat .. "]]" end return table.concat(categories) end end --[==[Table used in the documentation to {{tl|module cat}}.]==] function export.keyword_to_module_type_table() local parts = {} local function ins(text) table.insert(parts, text) end ins('{|class="wikitable"') ins("! Keyword !! Inferred module type") local keywords = {} for k, v in pairs(keyword_to_module_type) do table.insert(keywords, k) end table.sort(keywords) for _, keyword in ipairs(keywords) do ins("|-") ins(("| <code>%s</code> || <code>%s</code>"):format(keyword, keyword_to_module_type[keyword])) end ins("|}") return table.concat(parts, "\n") end return export f9xcqejfjuocr1gx2879yvfqfrs5esd Module:en-headword 828 7579 235341 235155 2026-06-01T14:42:55Z Lee 19 235341 Scribunto text/plain local m_sinhala = require("Module:sinhala") local export = {} local pos_functions = {} --[==[ Author from 2020 on: mostly Benwing2, with significant contributions from Theknightwho. Based on a prior version by Rua (by now mostly rewritten), with contributions from Erutuon and others (see history for full attribution). ]==] local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local require = require local require_when_needed = require("Module:require when needed") local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local headword_module = "Module:headword" local inflection_utilities_module = "Module:inflection utilities" local parse_utilities_module = "Module:parse utilities" local JSON_module = "Module:JSON" local labels_module = "Module:labels" local links_module = "Module:links" local parameters_module = "Module:parameters" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local yesno_module = "Module:yesno" local iut = require_when_needed(inflection_utilities_module) local put = require_when_needed(parse_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local add_links_to_multiword_term = require_when_needed(headword_utilities_module, "add_links_to_multiword_term") local add_suffix = require_when_needed(en_utilities_module, "add_suffix") local apply_link_modifiers = require_when_needed(headword_utilities_module, "apply_link_modifiers") local concat = table.concat local deepEquals = require_when_needed(table_module, "deepEquals") local dump = mw.dumpObject local format_categories = require_when_needed(utilities_module, "format_categories") local full_headword = require_when_needed(headword_module, "full_headword") local get_label_info = require_when_needed(labels_module, "get_label_info") local get_link_page = require_when_needed(links_module, "get_link_page") local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local insert = table.insert local insertIfNot = require_when_needed(table_module, "insertIfNot") local ipairs = ipairs local is_regular_plural = require_when_needed(en_utilities_module, "is_regular_plural") local list_to_set = require_when_needed(table_module, "listToSet") local pairs = pairs local process_params = require_when_needed(parameters_module, "process") local remove = table.remove local remove_links = require_when_needed(links_module, "remove_links") local replacement_escape = require_when_needed(string_utilities_module, "replacement_escape") local shallowCopy = require_when_needed(table_module, "shallowCopy") local singularize = require_when_needed(en_utilities_module, "singularize") local split = require_when_needed(string_utilities_module, "split") local toJSON = require_when_needed(JSON_module, "toJSON") local toNFD = mw.ustring.toNFD local type = type local ulen = require_when_needed(string_utilities_module, "len") local ulower = require_when_needed(string_utilities_module, "lower") local umatch = require_when_needed(string_utilities_module, "match") local u = require_when_needed(string_utilities_module, "char") local ugsub = require_when_needed(string_utilities_module, "gsub") local lang = require("Module:languages").getByCode("en") local langname = lang:getCanonicalName() local list_param = {list = true, disallow_holes = true} local list_allow_holes = {list = true, allow_holes = true} local boolean_param = {type = "boolean"} local function ine(val) if val == "" then return nil else return val end end local function track(page) require("Module:debug/track")("en-headword/" .. page) return true end ------------------------------------------- UTILITY FUNCTIONS ------------------------------------------ -- Parse and return an inflection not requiring additional processing. The raw arguments come from `args[field]`, which -- is parsed for inline modifiers. local function parse_inflection(args, field, is_head) local argfield = field if type(argfield) == "table" then argfield = argfield[1] end return m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[argfield], splitchar = ",", is_head = is_head, } end -- Insert the parsed inflections in `terms` (as parsed by `parse_inflection`) into `data.inflections`, with label -- `label` and optional accelerator spec `accel`. local function insert_inflection(data, terms, label, accel, no_label) for _, termobj in ipairs(terms) do m_headword_utilities.remove_termobj_field_modifiers(termobj) end m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, no_label = no_label, accel = accel and {form = accel} or nil, } end -- Insert a fixed label `label` into the inflections for `data`. If `originating_term` is supplied, copy the qualifiers, -- labels and references from it into the fixed label. local function insert_fixed_inflection(data, label, originating_term) m_headword_utilities.insert_fixed_inflection { headdata = data, originating_term = originating_term, label = label, } end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end -- These functions are used directly in the <> format as well as in the utility functions #2 below. local function compute_double_last_cons_stem(term) local last_cons = term:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("Verb stem '" .. term .. "' must end in a consonant to use ++") end return term .. last_cons end local function compute_plusplus_s_form(term, default_s_form) if term:find("[szx]$") then -- regas -> regasses, derez -> derezzes return compute_double_last_cons_stem(term) .. "es" else return default_s_form end end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local iparams = { [1] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local parargs = frame:getParent().args local poscat = iargs[1] local pos_in_1 = not poscat if pos_in_1 then poscat = ine(parargs[1]) or mw.title.getCurrentTitle().fullText == "Template:en-head" and "interjection" or error("Part of speech must be specified in 1=") poscat = require(headword_module).canonicalize_pos(poscat) end local indexing_poscat = pos_in_1 and "head" or poscat local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["sort"] = true, ["splithyph"] = boolean_param, ["nosplithyph"] = boolean_param, ["hyphspace"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean_param", alias_of = "nolink"}, ["suffix"] = boolean_param, ["nosuffix"] = boolean_param, ["nomultiwordcat"] = boolean_param, ["abbr"] = list_param, ["the"] = true, ["def"] = {alias_of = "the"}, ["pagename"] = true, -- for testing } if pos_in_1 then params[1] = {required = true} -- required but ignored as already processed above end local pos_data = pos_functions[indexing_poscat] local pos_func if pos_data then local pos_params = pos_data.params if pos_params then for key, val in pairs(pos_params) do params[key] = val end end pos_func = pos_data.func end local args = process_params(parargs, params) -- Account for unsupported titles, e.g. 'C|N>K' instead of 'Unsupported titles/C through N to K'. local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = parse_inflection(args, "head", "is_head") local heads = user_specified_heads local autohead if args.nolink or not pagename:find("[ '%-]") then autohead = pagename else local en_no_split_apostrophe_words = list_to_set { "one's", "someone's", "he's", "she's", "it's", } local en_include_hyphen_prefixes = list_to_set { -- We don't include things that are also words even though they are often (perhaps mostly) prefixes, e.g. -- "be", "counter", "cross", "extra", "half", "mid", "over", "pan", "under". "acro", "acousto", "Afro", "agro", "anarcho", "angio", "Anglo", "ante", "anti", "arch", "auto", "bi", "bio", "cis", "co", "cryo", "crypto", "de", "demi", "eco", "electro", "Euro", "ex", "Greco", "hemi", "hydro", "hyper", "hypo", "infra", "Indo", "inter", "intra", "Judeo", "macro", "meta", "micro", "mini", "multi", "neo", "neuro", "non", "para", "peri", "post", "pre", "pro", "proto", "pseudo", "re", "semi", "sub", "super", "trans", "un", "vice", } local function is_english(term) local title = mw.title.new(term) if title and title.exists then local content = title:getContent() if content and content:find("==English==\n") then return true end end return false end local function en_split_hyphen_when_space(word) if not word:find("-", nil, true) then return nil end if args.hyphspace then return "[[" .. word:gsub("%-+", " ") .. "|" .. word .. "]]" end if args.nosplithyph then return "[[" .. word .. "]]" end if not args.splithyph then local space_word = word:gsub("%-+", " ") if is_english(space_word) then return "[[" .. space_word .. "|" .. word .. "]]" end if is_english(word) then return "[[" .. word .. "]]" end end return nil end local function en_split_apostrophe(word) local base = word:match("^(.*)'s$") if base then return "[[" .. base .. "]][[-'s|'s]]" end -- Only treat final apostrophe as possessive if preceded by something that looks like a plural ending in /z/. -- In particular we don't want to do it for words like [[truckin']]. base = word:match("^(.*[sxz])'$") if base then if base:find("s$") then local sg = singularize(base) if is_english(sg) then return "[[" .. sg .. "|" .. base .. "]][[-'|']]" end end return "[[" .. base .. "]][[-'|']]" end return "[[" .. word .. "]]" end autohead = add_links_to_multiword_term(pagename, { split_hyphen_when_space = en_split_hyphen_when_space, split_apostrophe = en_split_apostrophe, no_split_apostrophe_words = en_no_split_apostrophe_words, include_hyphen_prefixes = en_include_hyphen_prefixes, }) end if not heads[1] then heads = {{term = autohead}} else for _, headobj in ipairs(heads) do local head = headobj.term if head:find("^~") then head = apply_link_modifiers(autohead, head:sub(2), lang) headobj.term = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. headobj.term = autohead .. head end if head == autohead then track("redundant-head") end end end -- handle the=/def= if args.the == "~" then local newheads = {} for _, headobj in ipairs(heads) do local barehead = shallowCopy(headobj) insert(newheads, barehead) headobj.term = "the " .. headobj.term insert(newheads, headobj) end heads = newheads elseif args.the then local the = require(yesno_module)(args.the) if the then for _, headobj in ipairs(heads) do headobj.term = "the " .. headobj.term end end end local data = { lang = lang, pos_category = poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, -- We use our own splitting algorithm so the redundant head cat will be inaccurate. no_redundant_head_cat = true, inflections = {}, nomultiwordcat = args.nomultiwordcat, sort_key = args.sort, pagename = pagename, id = args.id, force_cat_output = force_cat, } local function inscat(cat) insert(data.categories, langname .. " " .. m_sinhala.sinhala(cat)) end local is_suffix = false if args.suffix or not args.nosuffix and pagename:find("^%-") and not pagename:find("^%-%-") and poscat ~= "suffix forms" then is_suffix = true data.pos_category = "suffixes" local singular_poscat = singularize(poscat) inscat(singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_func then pos_func(args, data, is_suffix) end local extra_categories = {} if pagename:find("[Qq]") then -- Check for q not followed by u. We want to exclude things like [[13q deletion syndrome]] and [[BFOQ]] that -- don't have a lowercase letter on either side, as well as things like [[& seq.]] and [[acq.]] that are -- abbreviations for words containing a following u. -- -- Approximate range of combining diacritics; we want to remove them so the checks below for -- a lowercase letter next to the q aren't tripped up by diacritics on the letter. local u300 = u(0x0300) local u36F = u(0x036F) local pagename_no_diacritics = ugsub(toNFD(pagename), "[" .. u300 .. "-" .. u36F .. "]", "") if pagename_no_diacritics:find("[Qq][a-tv-z]") or pagename_no_diacritics:find("[a-z]q[^u.]") or pagename_no_diacritics:find("[a-z]q$") then inscat("words containing Q not followed by U") end end -- toNFD performs decomposition, so letters that decompose to an ASCII -- vowel and a diacritic, such as é, are counted as vowels and do not do not -- need to be included in the pattern. if not umatch(ulower(toNFD(pagename)), "[aeiouyæœøəªºαεηιουω]") then inscat("words spelled without vowels") end if pagename:find("yre$") then inscat('words ending in "-yre"') end if not pagename:find(" ") and ulen(pagename) >= 25 then insert(extra_categories, "Long " .. langname .. " words") end if pagename:find("^[^aeiou ]*a[^aeiou ]*e[^aeiou ]*i[^aeiou ]*o[^aeiou ]*u[^aeiou ]*$") then inscat("words that use all vowels in alphabetical order") end parse_and_insert_inflection(data, args, "abbr", "abbreviation") if args.json then return toJSON(data) end return full_headword(data) .. (extra_categories[1] and format_categories(extra_categories, lang, args.sort) or "") end local function make_default_comparative(word) if word == "good" or word == "well" then return {"better"} elseif word == "bad" or word == "badly" then return {"worse"} elseif word == "far" then return {"further", "farther"} else return {add_suffix(word, "r")} end end local function make_default_superlative(word) if word == "good" or word == "well" then return {"best"} elseif word == "bad" or word == "badly" then return {"worst"} elseif word == "far" then return {"furthest", "farthest"} else return {add_suffix(word, "st.superlative")} end end -- This function does the common work between adjectives and adverbs. local function process_comparative_args(data, args, plpos) local pagename = data.pagename local comps = parse_inflection(args, 1) local sups = parse_inflection(args, "sup") local outcomps, outsups if args.componly then if comps[1] then error("Can't specify comparatives of comparative-only " .. plpos) end insert(data.inflections, {label = glossary_link("comparative") .. " form only"}) insert(data.categories, langname .. " comparative-only " .. plpos) -- Set to empty list so we don't get any comparatives output, but process superlatives if specified. outcomps = {} if not sups[1] then -- Set to empty list so we don't get any superlatives output unless explicitly given. outsups = {} end elseif args.suponly then if comps[1] or sups[1] then error("Can't specify comparatives or superlatives of or superlative-only " .. plpos) end insert(data.inflections, {label = glossary_link("superlative") .. " form only"}) insert(data.categories, langname .. " superlative-only " .. plpos) return end -- If the first parameter is ?, then don't show anything, just return. if comps[1] and comps[1].term == "?" then if comps[2] then error("Can't specify additional comparatives along with '?'") end if sups[1] then error("Can't specify superlatives along with '?' for the comparative") end return end if comps[1] and comps[1].term == "-" then local hyphencomp = remove(comps, 1) -- Remove the "-" but retain for qualifiers, labels, references -- Not (generally) comparable; may occasionally have a comparative if comps[1] then insert_fixed_inflection(data, "not generally <<comparable>>", hyphencomp) elseif not sups[1] then insert_fixed_inflection(data, "not <<comparable>>", hyphencomp) insert(data.categories, langname .. " uncomparable " .. plpos) return else -- No comparative, but a superlative. insert_inflection() will correctly generate 'no comparative' if we -- pass in "-" as the value. outcomps = {hyphencomp} end elseif not comps[1] then comps = {{term = "more"}} end if not outcomps then -- not if we set `outcomps` to "-" above or processed a comparative-only term outcomps = {} -- Go over each parameter given and create a comparative and superlative form. for _, compobj in ipairs(comps) do local comp = compobj.term if comp == "-" then error("Comparative of '-' only allowed as first comparative") end if comp == "+" then comp = "+more" elseif comp == "more" and pagename ~= "many" and pagename ~= "much" then comp = "+more" elseif comp == "further" and pagename ~= "far" then comp = "+further" elseif comp == "better" and pagename ~= "good" and pagename ~= "well" then comp = "+better" elseif comp:find("~") then comp = comp:gsub("~", replacement_escape(pagename)) end compobj.origterm = comp if comp == "+more" then comp = "more [[" .. pagename .. "]]" elseif comp == "+further" then comp = {"further [[" .. pagename .. "]]", "farther [[" .. pagename .. "]]"} elseif comp == "+better" then comp = "better [[" .. pagename .. "]]" elseif comp == "er" then -- Add -er. comp = add_suffix(pagename, "r") elseif comp == "ier" then if pagename:sub(-1) ~= "y" then error("Can't specify 'ier' comparative unless the term ends with 'y': " .. pagename) end comp = pagename:gsub("e?y$", "ier") elseif comp:find("^%+") then local special = m_headword_utilities.get_special_indicator(comp, "noerror") if special then comp = m_headword_utilities.handle_multiword(pagename, special, make_default_comparative) end end if type(comp) == "table" and not comp[2] then comp = comp[1] end if type(comp) == "table" then for i = 1, #comp - 1 do local outobj = shallowCopy(compobj) outobj.term = comp[i] insert(outcomps, outobj) end compobj.term = comp[#comp] insert(outcomps, compobj) else compobj.term = comp insert(outcomps, compobj) end end end if sups[1] and sups[1].term == "-" then if sups[2] then error("Can't specify '-' as superlative followed by further values") end -- No superlative. insert_inflection() will correctly generate 'no superlative' if we pass in "-" as the value. outsups = sups else if not sups[1] then sups = {{term = "+"}} end end -- `outsups` will be set if we set `outsups` to "-" above or processed a comparative-only term without superlatives. if not outsups then outsups = {} local function process_sup(sup, special, supobj, compobj) if special then sup = m_headword_utilities.handle_multiword(pagename, special, make_default_superlative) elseif sup == "-" or sup == "+" then error(("Internal error: Superlative value of '%s' should have been handled earlier"):format(sup)) elseif sup == "+most" then sup = "most [[" .. pagename .. "]]" elseif sup == "+furthest" then sup = {"furthest [[" .. pagename .. "]]", "farthest [[" .. pagename .. "]]"} elseif sup == "+best" then sup = "best [[" .. pagename .. "]]" elseif sup == "est" then -- Add -est. sup = add_suffix(pagename, "st.superlative") elseif sup == "iest" then if pagename:sub(-1) ~= "y" then error("Can't specify 'iest' superlative unless the term ends with 'y': " .. pagename) end sup = pagename:gsub("e?y$", "iest") end if type(sup) == "table" and not sup[2] then sup = sup[1] end if compobj then supobj = shallowCopy(supobj) supobj = m_headword_utilities.combine_termobj_qualifiers_labels(supobj, compobj) end if type(sup) == "table" then for i = 1, #sup - 1 do local outobj = shallowCopy(supobj) outobj.term = sup[i] insert(outsups, outobj) end supobj.term = sup[#sup] insert(outsups, supobj) else supobj.term = sup insert(outsups, supobj) end end for _, supobj in ipairs(sups) do local sup = supobj.term if sup == "-" then error("Superlative of '-' only allowed as first superlative") end if sup == "+" then if not comps[1] then error("Superlative of '+' can't be specified when there are no comparatives") end for _, compobj in ipairs(comps) do local comp = compobj.origterm local special if comp == "+more" then sup = "+most" elseif comp == "+further" then sup = "+furthest" elseif comp == "+better" then sup = "+best" elseif comp == "er" then sup = "est" elseif comp == "ier" then sup = "iest" else if comp:find("^%+") then special = m_headword_utilities.get_special_indicator(comp, "noerror") end if not special then -- If the full comparative was given, then derive the superlative by replacing -er with -- -est. if comp:sub(-2) == "er" then sup = comp:sub(1, -3) .. "est" else error(("The superlative cannot be derived automatically from comparative '%s' because it doesn't end in -er"):format(comp)) end end end process_sup(sup, special, supobj, compobj) end else local special = m_headword_utilities.get_special_indicator(sup, "noerror") -- Do some work here rather than in process_sup() so we don't end up double-processing a term with a '~' -- in it or a term that happens to be 'most' or similar after substitution of ~ in the comparative. if not special then if sup == "most" and pagename ~= "many" and pagename ~= "much" then sup = "+most" elseif sup == "furthest" and pagename ~= "far" then sup = "+furthest" elseif sup == "best" and pagename ~= "good" and pagename ~= "well" then sup = "+best" elseif sup:find("~") then sup = sup:gsub("~", replacement_escape(pagename)) end end process_sup(sup, special, supobj) end end end insert_inflection(data, outcomps, "<<comparative>>", "comparative") insert_inflection(data, outsups, "<<superlative>>", "superlative") end pos_functions["adjectives"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "adjectives") end, } pos_functions["adverbs"] = { params = { [1] = list_param, ["comp_qual"] = {list = "comp\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the comparative value", }, ["sup"] = list_param, ["sup_qual"] = {list = "sup\1_qual", allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the superlative value", }, ["componly"] = boolean_param, ["suponly"] = boolean_param, }, func = function(args, data) -- Process the comparatives and superlatives. process_comparative_args(data, args, "adverbs") end, } local function escape(str) return (str:gsub("\\([:#])", "\\\\%1") :gsub("[:#]", "\\%0")) end local function canonicalize_plural(pl, pagename, pos) if pl == "+" then return escape(add_suffix(pagename, "s.plural", pos)) elseif pl == "++" then return escape(compute_plusplus_s_form(pagename, add_suffix(pagename, "s.plural", pos))) elseif pl == "*" then return escape(pagename) elseif pl == "ies" then if pagename:sub(-1) == "y" then return escape(pagename:gsub("e?y$", pl)) end error("Can't specify 'ies' plural unless the term ends with 'y'.") elseif pl == "s" or pl == "es" or pl == "'s" then return escape(pagename .. pl) end end local function do_nouns(args, data, pos) local pagename = data.pagename pos = pos or "noun" local plurals = parse_inflection(args, 1) local function insert_plurale_tantum_inflections(is_plural_only, originating_label) if args.sg[1] then insert_fixed_inflection(data, "normally plural", originating_label) parse_and_insert_inflection(data, args, "sg", "singular") elseif is_plural_only then insert_fixed_inflection(data, "plural only", originating_label) end if args.attr[1] then parse_and_insert_inflection(data, args, "attr", "attributive") end end local function first_pl_term() return plurals[1] and plurals[1].term or nil end if first_pl_term() == "p" then -- plurale tantum if plurals[2] then error("With plurale tantum noun, can't specify more than one plural") end data.genders = {"p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections("plural only", plurals[1]) return end local function inscat(cat) insert(data.categories, langname .. " " .. m_sinhala.sinhala(cat)) end local need_default_plural = pos == "noun" if first_pl_term() == "sp" then -- construed as singular or plural sp = remove(plurals, 1) -- Remove the "sp" but retain it for its qualifiers, labels, references inscat("nouns construed as singular or plural") data.genders = {"s", "p"} -- this should auto-insert the correct 'pluralia tantum' category insert_plurale_tantum_inflections(nil, sp) need_default_plural = false elseif first_pl_term() == "-" then -- Uncountable noun; may occasionally have a plural local hyphpl = remove(plurals, 1) -- Remove the "-" but retain for qualifiers, labels, references inscat("uncountable nouns") -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert_fixed_inflection(data, "usually <<uncountable>>", hyphpl) else insert_fixed_inflection(data, "<<uncountable>>", hyphpl) end need_default_plural = false elseif first_pl_term() == "#" then -- Usually countable (e.g., "grilled cheese") local hashpl = remove(plurals, 1) -- Remove the "#" but retain for qualifiers, labels, references insert_fixed_inflection(data, "usually <<countable>>", hashpl) inscat("uncountable nouns") inscat("countable nouns") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end elseif first_pl_term() == "~" then -- Mixed countable/uncountable noun, always has a plural local tildepl = remove(plurals, 1) -- Remove the "~" but retain for qualifiers, labels, references insert_fixed_inflection(data, "<<countable>> and <<uncountable>>", tildepl) inscat("uncountable nouns") inscat("countable nouns") -- If no plural was given, add a default one now if not plurals[1] then plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end end -- Plural is unknown if first_pl_term() == "?" then local questionpl = remove(plurals, 1) -- Remove the "?" but retain for qualifiers, labels, references -- Not desired; see [[Wiktionary:Tea_room/2021/August#"Plural unknown or uncertain"]] -- insert_fixed_inflection(data, "plural unknown or uncertain", questionpl) inscat("nouns with unknown or uncertain plurals") if plurals[1] then error("Can't specify explicit plurals along with '?' for unknown/uncertain plural") end return end -- Plural is not attested if first_pl_term() == "!" then local exclampl = remove(plurals, 1) -- Remove the "!" but retain for qualifiers, labels, references insert_fixed_inflection(data, "plural not attested", exclampl) inscat("nouns with unattested plurals") if plurals[1] then error("Can't specify explicit plurals along with '!' for unattested plural") end return end -- If no plural was given, maybe add a default one, otherwise (when "-" was given or proper noun) return. if not plurals[1] then if not need_default_plural then inscat("uncountable nouns") return end plurals[1] = {term = escape(add_suffix(pagename, "s.plural", pos))} end -- There are plural forms to show, so show them. inscat("countable nouns") local irregular, indeclinable for i, pl in ipairs(plurals) do local canon_pl = canonicalize_plural(pl.term, pagename, pos) if canon_pl then pl.term = canon_pl end local pl_term = get_link_page(pl.term, lang) if not (pagename:find(" ") or is_regular_plural(pl_term, pagename)) then irregular = true if pl_term == pagename then indeclinable = true end end end if irregular then inscat("nouns with irregular plurals") end if indeclinable then inscat("indeclinable nouns") end insert_inflection(data, plurals, "plural", "p") end -- Return the parameters to be used for nouns and proper nouns. Currently the same. local noun_params = { [1] = list_param, ["pl\1qual"] = {list = true, allow_holes = true, replaced_by = false, instead = "use <l:...> or <q:...> inline modifier on the plural", }, -- The following four only used for pluralia tantum (1=p) ["sg"] = list_param, ["attr"] = list_param, } pos_functions["nouns"] = { params = noun_params, func = do_nouns, } pos_functions["proper nouns"] = { params = noun_params, func = function(args, data) return do_nouns(args, data, "proper noun") end, } local function base_default_verb_forms(verb) return escape(add_suffix(verb, "s.verb")), escape(add_suffix(verb, "ing")), escape(add_suffix(verb, "d")) end local function default_verb_forms(verb) local full_s_form, full_ing_form, full_ed_form = base_default_verb_forms(verb) if verb:find(" ") then local first, rest = verb:match("^(.-)( .*)$") local first_s_form, first_ing_form, first_ed_form = base_default_verb_forms(first) return full_s_form, full_ing_form, full_ed_form, first_s_form .. rest, first_ing_form .. rest, first_ed_form .. rest, first, rest else return full_s_form, full_ing_form, full_ed_form, nil, nil, nil, nil, nil end end local function compute_double_last_cons_stem_of_split_verb(verb, ending) local first, rest = verb:match("^(.-)( .*)$") if not first then error("Verb '" .. verb .. "' must have a space in it to use **") end local last_cons = first:match("([bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ])$") if not last_cons then error("First word '" .. first .. "' must end in a consonant to use **") end return first .. last_cons .. ending .. rest end local function check_non_nil_star_form(form, pagename) if form == nil then error("Verb '" .. pagename .. "' must have a space in it to use *, **, *l, *! or *'") end return form end local function sub_tilde(form, pagename) if not form then return nil end if form:find("~") then form = form:gsub("~", replacement_escape(pagename)) end return form end local deprecated_qual_replaced_by_inline_modifier = { list = true, allow_holes = true, replaced_by = false, instead = "use an inline modifier <q:...> or <l:...> on the value" } pos_functions["verbs"] = { params = { [1] = {list = "pres_3sg", disallow_holes = true}, ["pres_3sg\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [2] = {list = "pres_ptc", disallow_holes = true}, ["pres_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [3] = {list = "past", disallow_holes = true}, ["past\1_qual"] = deprecated_qual_replaced_by_inline_modifier, [4] = {list = "past_ptc", allow_holes = true}, ["past_ptc\1_qual"] = deprecated_qual_replaced_by_inline_modifier, ["noautolinkverb"] = boolean_param, ["angle_bracket"] = boolean_param, }, func = function(args, data) -- Get parameters local par1s local par2s = parse_inflection(args, {2, "pres_ptc"}) local par3s = parse_inflection(args, {3, "past"}) local par4s = parse_inflection(args, {4, "past_ptc"}) local pres_3sgs, pres_ptcs, pasts, past_ptcs local pagename = data.pagename ------------------------------------------- UTILITY FUNCTIONS #2 ------------------------------------------ -- These functions are used in both in the separate-parameter format and in the override params such as past_ptc2=. local full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed local lemma local function set_lemma_and_default_forms(the_lemma) lemma = the_lemma full_default_s, full_default_ing, full_default_ed, split_default_s, split_default_ing, split_default_ed, lemma_first, lemma_rest = default_verb_forms(the_lemma) end local function canonicalize_s_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_s elseif form == "*" then return check_non_nil_star_form(split_default_s, lemma) elseif form == "++" then return compute_plusplus_s_form(lemma, full_default_s) elseif form == "**" then if lemma:find("^[^ ]*[szx] ") then return compute_double_last_cons_stem_of_split_verb(lemma, "es") else return check_non_nil_star_form(split_default_s, lemma) end elseif form == "+!" then return lemma .. "s" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "s" .. lemma_rest elseif form == "+'" then return lemma .. "'s" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'s" .. lemma_rest elseif form == "+l" then if lemma:find("[szx]$") then return {{term = full_default_s, l = {"US"}}, {term = compute_plusplus_s_form(lemma, full_default_s), l = {"UK"}}} else return compute_plusplus_s_form(lemma, full_default_s) end elseif form == "*l" then if lemma:find("^[^ ]*[szx] ") then return {{term = check_non_nil_star_form(split_default_s, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "es"), l = {"UK"}}} else return check_non_nil_star_form(split_default_s, lemma) end else return sub_tilde(form, lemma) end end local function canonicalize_ing_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ing elseif form == "*" then return check_non_nil_star_form(split_default_ing, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ing" elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ing") elseif form == "+!" then return lemma .. "ing" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ing" .. lemma_rest elseif form == "+'" then return lemma .. "'ing" elseif form == "*'" then return check_non_nil_star_form(lemma_first) .. "'ing" .. lemma_rest elseif form == "+l" then return {{term = full_default_ing, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ing", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ing, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ing"), l = {"UK"}}} else return sub_tilde(form, lemma) end end local function canonicalize_ed_form(form) if form == "+" then error("Internal error: Should not see '+' here") elseif form == "^" then return full_default_ed elseif form == "*" then return check_non_nil_star_form(split_default_ed, lemma) elseif form == "++" then return compute_double_last_cons_stem(lemma) .. "ed" elseif form == "+!" then return lemma .. "ed" elseif form == "*!" then return check_non_nil_star_form(lemma_first) .. "ed" .. lemma_rest elseif form == "+'" then return {{term = lemma .. "'d"}, {term = lemma .. "'ed"}} elseif form == "*'" then return {{term = check_non_nil_star_form(lemma_first) .. "'d" .. lemma_rest}, {term = check_non_nil_star_form(lemma_first) .. "'ed" .. lemma_rest}} elseif form == "**" then return compute_double_last_cons_stem_of_split_verb(lemma, "ed") elseif form == "+l" then return {{term = full_default_ed, l = {"US"}}, {term = compute_double_last_cons_stem(lemma) .. "ed", l = {"UK"}}} elseif form == "*l" then return {{term = check_non_nil_star_form(split_default_ed, lemma), l = {"US"}}, {term = compute_double_last_cons_stem_of_split_verb(lemma, "ed"), l = {"UK"}}} else return sub_tilde(form, lemma) end end -- FIXME: options should be "+", "*", "++", "**", "+n", "*n", "++n" and "**n", but not "n" local function canonicalize_en_form(form) if form == "n" then track("n4") return add_suffix(lemma, "n") end return canonicalize_ed_form(form) end --------------------------------- MAIN PARSING/CONJUGATING CODE -------------------------------- local is_angle_bracket = args.angle_bracket if is_angle_bracket then if par2s[1] or par3s[1] or par4s[1] then error("Can't specify explicit values for 2=, 3= or 4= along with the angle-bracket format") end elseif is_angle_bracket == nil and not par2s[1] and not par3s[1] and not par4s[1] and not args[1][2] and args[1][1] and args[1][1]:find("<") then if put.term_contains_top_level_html(args[1][1]) then -- Often, term_contains_top_level_html() returns true on the angle-bracket format, which would -- make the pcall() below succeed but leave the angle brackets as-is. Check for this and only do the -- pcall() if term_contains_top_level_html() returns false. is_angle_bracket = true else -- If it's ambiguous whether it's an angle-bracket format or separate params with an inline modifier, -- try to parse as the latter. If an error occurs, treat as the former. local ok ok, par1s = pcall(parse_inflection, args, {1, "pres_3sg"}) if not ok then par1s = nil is_angle_bracket = true end end end if is_angle_bracket then -------------------------- ANGLE-BRACKET FORMAT -------------------------- -- (0) Expand multiword term with angle brackets just on the first word. local arg11 = args[1][1] if arg11:find("^<.*>$") and pagename:find(" ") then local first, rest = pagename:match("^(.-)( .*)$") arg11 = first .. arg11 .. rest end -- (1) Parse the indicator specs inside of angle brackets. local function parse_indicator_spec(angle_bracket_spec) local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) local segments = put.parse_balanced_segment_run(inside, "[", "]") local comma_separated_groups = put.split_alternating_runs(segments, ",") if #comma_separated_groups > 4 then error("Too many comma-separated parts in indicator spec, expected at most 4: " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed footnotes: '" .. concat(separated_group) .. "'") end if not footnotes then footnotes = {} end insert(footnotes, separated_group[j]) end return footnotes end local function fetch_specs(comma_separated_group) if not comma_separated_group then return {{term = "+"}} end local specs = {} local colon_separated_groups = put.split_alternating_runs(comma_separated_group, ":") for _, colon_separated_group in ipairs(colon_separated_groups) do local form = colon_separated_group[1] if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error("*, **, *l, *! and *' not allowed inside of indicator specs: " .. angle_bracket_spec) end if form == "" then form = "+" end local termobj = { term = form } local footnotes = fetch_footnotes(colon_separated_group) if footnotes then for _, footnote in ipairs(footnotes) do m_headword_utilities.add_footnote_to_termobj(termobj, footnote) end end insert(specs, termobj) end return specs end local s_specs = fetch_specs(comma_separated_groups[1]) local ing_specs = fetch_specs(comma_separated_groups[2]) local ed_specs = fetch_specs(comma_separated_groups[3]) local en_specs = fetch_specs(comma_separated_groups[4]) return { forms = {}, s_specs = s_specs, ing_specs = ing_specs, ed_specs = ed_specs, en_specs = en_specs, } end local parse_props = { parse_indicator_spec = parse_indicator_spec, } local alternant_multiword_spec = iut.parse_inflected_text(arg11, parse_props) -- (2) Check for user-specified brackets; remove any links from the lemma, but remember the original -- form so we can use it below in the 'lemma_linked' form. -- Check to see if there are brackets in the pre-text or post-text. If so, use the linked lemma (with the -- verb autolinked unless noautolinkverb is given). Otherwise, use the default headword algorithm. local function check_bracket(val) if val:find("%[%[") then alternant_multiword_spec.saw_bracket = true end end for _, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do check_bracket(alternant_or_word_spec.before_text) if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for _, word_spec in ipairs(multiword_spec.word_specs) do check_bracket(word_spec.before_text) end check_bracket(multiword_spec.post_text) end end end check_bracket(alternant_multiword_spec.post_text) iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = pagename end base.orig_lemma = base.lemma base.lemma = remove_links(base.lemma) if args.noautolinkverb or base.orig_lemma:find("%[%[") then base.linked_lemma = base.orig_lemma else base.linked_lemma = "[[" .. base.orig_lemma .. "]]" end end) -- (3) Conjugate the verbs according to the indicator specs parsed above. local all_verb_slots = { lemma = "infinitive", lemma_linked = "infinitive", s_form = "3|s|pres", ing_form = "pres|ptcp", ed_form = "past", en_form = "past|ptcp", } local function conjugate_verb(base) local function process_specs(slot, specs, canon_func, default_values, default_already_formobj) local function insert_termobj_into_slot(termobj) local formobj = m_headword_utilities.convert_termobj_to_formobj(termobj) -- If the form is -, don't insert any forms, which will result in there being no overall forms -- (in fact it will be nil). We check for that down below and substitute a single "-" as the -- form, which in turn gets turned into special labels like "no present participle". if formobj.form == "-" then if formobj.footnotes then error("Unable to preserve footnotes specified on missing form '-': FIXME: " .. dump(formobj.footnotes)) end else iut.insert_form(base.forms, slot, formobj) end end local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg insert_termobj_into_slot(arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_qualifiers_labels(canon, arg) insert_termobj_into_slot(canon) end end end for _, arg in ipairs(specs) do if arg.term == "+" then if default_values then -- will be nil if past tense specified as - and no past ptc given for _, val in ipairs(default_values) do val = shallowCopy(val) if default_already_formobj then local argformobj = m_headword_utilities.convert_termobj_to_formobj(arg) val.footnotes = iut.combine_footnotes(val.footnotes, argformobj.footnotes) iut.insert_form(base.forms, slot, val) else m_headword_utilities.combine_termobj_qualifiers_labels(val, arg) canonicalize_and_insert(val) end end end else canonicalize_and_insert(arg) end end end set_lemma_and_default_forms(base.lemma) local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then error(("Internal error: '%s' should have already thrown an error"):format(form)) end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_specs("s_form", base.s_specs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_specs("ing_form", base.ing_specs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_specs("ed_form", base.ed_specs, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_specs("en_form", base.en_specs, function(arg) return canonicalize_en_form(arg.term) end, base.forms.ed_form, "default already formobj") iut.insert_form(base.forms, "lemma", {form = base.lemma}) -- Add linked version of lemma for use in head=. We write this in a general fashion in case -- there are multiple lemma forms (which isn't possible currently at this level, although it's -- possible overall using the ((...,...)) notation). iut.insert_forms(base.forms, "lemma_linked", iut.map_forms(base.forms.lemma, function(form) if form == base.lemma and base.linked_lemma:find("%[%[") then return base.linked_lemma else return form end end)) end local inflect_props = { slot_table = all_verb_slots, inflect_word_spec = conjugate_verb, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- (4) Fetch the forms and put the conjugated lemmas in data.heads if not explicitly given. local function fetch_termobjs(slot) local forms = alternant_multiword_spec.forms[slot] -- See above. This should only occur if the user explicitly used - for a spec. if not forms or not forms[1] then return {{term = "-"}} end local termobjs = {} for _, formobj in ipairs(forms) do insert(termobjs, m_headword_utilities.convert_formobj_to_termobj(formobj)) end return termobjs end pres_3sgs = fetch_termobjs("s_form") pres_ptcs = fetch_termobjs("ing_form") pasts = fetch_termobjs("ed_form") past_ptcs = fetch_termobjs("en_form") -- Use the "linked" form of the lemma as the head if no head= explicitly given and the user specified -- brackets in one of the lemmas. Otherwise we use the default headword-linking algorithm. if not data.user_specified_heads[1] and alternant_multiword_spec.saw_bracket then data.heads = {} for _, lemma_obj in ipairs(alternant_multiword_spec.forms.lemma_linked) do insert(data.heads, m_headword_utilities.convert_formobj_to_termobj(lemma_obj)) end end else -------------------------- SEPARATE-PARAM FORMAT -------------------------- set_lemma_and_default_forms(pagename) par1s = par1s or parse_inflection(args, {1, "pres_3sg"}) pres_3sgs = {} pres_ptcs = {} pasts = {} past_ptcs = {} if not par1s[1] then par1s = {{term = "+"}} end if not par2s[1] then par2s = {{term = "+"}} end if not par3s[1] then par3s = {{term = "+"}} end if not par4s[1] then par4s = {{term = "+"}} end local function process_argument(args, dest, canon_func, default_values, default_already_canonicalized) local function canonicalize_and_insert(arg) local canon_arg = canon_func(arg) if type(canon_arg) == "string" then arg.term = canon_arg m_headword_utilities.insert_termobj_combining_duplicates(dest, arg) else for _, canon in ipairs(canon_arg) do m_headword_utilities.combine_termobj_qualifiers_labels(canon, arg) m_headword_utilities.insert_termobj_combining_duplicates(dest, canon) end end end for _, arg in ipairs(args) do if arg.term == "+" then for _, val in ipairs(default_values) do val = shallowCopy(val) m_headword_utilities.combine_termobj_qualifiers_labels(val, arg) if default_already_canonicalized then m_headword_utilities.insert_termobj_combining_duplicates(dest, val) else canonicalize_and_insert(val) end end else canonicalize_and_insert(arg) end end end local all_part_default_specs = {} local function process_and_canonicalize_s_form(arg) local form = arg.term if form == "+" then error("Internal error: '+' should have been converted to '^' by now") end if form == "^" or form == "++" or form == "+l" or form == "+!" or form == "+'" or form == "*" or form == "**" or form == "*l" or form == "*!" or form == "*'" then insert(all_part_default_specs, shallowCopy(arg)) end return canonicalize_s_form(form) end process_argument(par1s, pres_3sgs, process_and_canonicalize_s_form, {{term = "^"}}) if not all_part_default_specs[1] then all_part_default_specs[1] = {term = "^"} end process_argument(par2s, pres_ptcs, function(arg) return canonicalize_ing_form(arg.term) end, all_part_default_specs) process_argument(par3s, pasts, function(arg) return canonicalize_ed_form(arg.term) end, all_part_default_specs) process_argument(par4s, past_ptcs, function(arg) return canonicalize_en_form(arg.term) end, pasts, "default already canonicalized") end ------------------------------------------- INSERT INFLECTIONS ------------------------------------------ insert_inflection(data, pres_3sgs, "third-person singular simple present", "s-verb-form") insert_inflection(data, pres_ptcs, "present participle", "ing-form") if deepEquals(pasts, past_ptcs) then insert_inflection(data, pasts, "simple past and past participle", "ed-form", "no simple past or past participle") else insert_inflection(data, pasts, "simple past", "spast") insert_inflection(data, past_ptcs, "past participle", "past|part") end if pagename:find(" ") then -- Check for placeholder "it" local words = split(pagename, " ") for _, word in ipairs(words) do if word == "it" or word == "its" or word == "it's" then insert(data.categories, langname .. ' terms with placeholder "it"') break end end -- Check for phrasal verbs local phrasal_adverbs = list_to_set{ -- NOTE: This should only contain common phrasal adverbs, not random words like [[low]], -- [[adrift]], etc. "aback", "about", "above", "across", "after", "against", "ahead", "along", "apart", "around", "as", "aside", "at", "away", "back", "before", "behind", "below", "between", "beyond", "by", "down", "for", "forth", "from", "in", "into", "of", "off", "on", "onto", "out", "over", "past", "round", "through", "to", "together", "towards", "under", "up", "upon", "with", "without", } local allowed_non_adverb_words = list_to_set{ "it", "one", "oneself", "someone", } local base = pagename local seen_adverbs = {} -- Only consider a verb to be phrasal if it consists of a single base verb followed exclusively by either -- adverbs from `phrasal_adverbs` or placeholder words from `allowed_non_adverb_words`, where at -- least one following word is from `phrasal_adverbs` (hence [[can it]] is not a phrasal verb). while true do local prev, word = base:match("^(.+) (.-)$") if not prev then break end if phrasal_adverbs[word] then insert(seen_adverbs, word) elseif allowed_non_adverb_words[word] then -- do nothing else break end base = prev end if not base:find(" ") and seen_adverbs[1] then insert(data.categories, langname .. " phrasal verbs") for i = #seen_adverbs, 1, -1 do insert(data.categories, langname .. ' phrasal verbs formed with "' .. seen_adverbs[i] .. '"') end end end end, } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["suffix forms"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, }, func = function(args, data, is_suffix) local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, typ .. "-forming suffix") end insert(data.inflections, {label = "non-lemma form of " .. m_table.serialCommaJoin(suffix_type, {conj = "or"})}) end, } return export ig886jlshqn14by72xayyzkb56bq41k Module:languages/data/2 828 7906 235452 234128 2026-05-31T20:38:30Z en>Surjection 0 Swedish ø sorted as ö 235452 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared -- Ideally, we want to move these into [[Module:languages/data]], but because (a) it's necessary to use require on that module, and (b) they're only used in this data module, it's less memory-efficient to do that at the moment. If it becomes possible to use mw.loadData, then these should be moved there. s["de-Latn-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove, from = {"æ", "œ", "ß"}, to = {"ae", "oe", "ss"} } s["de-Latn-standardchars"] = "AaÄäBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsẞßTtUuÜüVvWwXxYyZz" s["ka-stripdiacritics"] = {remove_diacritics = c.circ} s["no-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } s["no-standardchars"] = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc s["sa-Deva-stripdiacritics"] = { -- Don't use remove_diacritics for accent marks, as १ and ३ should also be removed if (and only if) they carry any. from = {"ॐ", "[१३]?[" .. c.anudatta .. c.udatta .. c.dsvarita .. c.tsvarita .. "]+"}, to = {"ओँ"}, } s["tg-stripdiacritics"] = {remove_diacritics = c.grave .. c.acute} s["tk-stripdiacritics"] = {remove_diacritics = c.macron} local m = {} m["aa"] = { "Afar", 27811, "cus-eas", "Latn, Ethi", strip_diacritics = { Latn = {remove_diacritics = c.acute}, }, } m["ab"] = { "Abkhaz", 5111, "cau-abz", "Cyrl, Geor, Latn", translit = { Cyrl = "ab-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, from = {"^а%-"}, to = {"а"}, }, Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = { "х'ә", -- 3 chars "гь", "гә", "ӷь", "ҕь", "ӷә", "ҕә", "дә", "ё", "жь", "жә", "ҙә", "ӡә", "ӡ'", "кь", "кә", "қь", "қә", "ҟь", "ҟә", "ҫә", "тә", "ҭә", "ф'", "хь", "хә", "х'", "ҳә", "ць", "цә", "ц'", "ҵә", "ҵ'", "шь", "шә", "џь", -- 2 chars "ӷ", "ҕ", "ҙ", "ӡ", "қ", "ҟ", "ԥ", "ҧ", "ҫ", "ҭ", "ҳ", "ҵ", "ҷ", "ҽ", "ҿ", "ҩ", "џ", "ә", -- 1 char "^а", }, to = { "х" .. p[4], "г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "г" .. p[7], "г" .. p[8], "д" .. p[1], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "з" .. p[2], "з" .. p[4], "з" .. p[5], "к" .. p[1], "к" .. p[2], "к" .. p[4], "к" .. p[5], "к" .. p[7], "к" .. p[8], "с" .. p[2], "т" .. p[1], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[6], "ц" .. p[1], "ц" .. p[2], "ц" .. p[3], "ц" .. p[5], "ц" .. p[6], "ш" .. p[1], "ш" .. p[2], "ы" .. p[3], "г" .. p[3], "г" .. p[4], "з" .. p[1], "з" .. p[3], "к" .. p[3], "к" .. p[6], "п" .. p[1], "п" .. p[2], "с" .. p[1], "т" .. p[2], "х" .. p[5], "ц" .. p[4], "ч" .. p[1], "ч" .. p[2], "ч" .. p[3], "ы" .. p[1], "ы" .. p[2], "ь" .. p[1], "", } }, }, } m["ae"] = { "Avestan", 29572, "ira-cen", "Avst, Gujr, Deva", translit = { Avst = "Avst-translit" }, } m["af"] = { "Afrikaans", 14196, "gmw-frk", "Latn, Arab", ancestors = "nl", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'", from = {"['ʼ]n"}, to = {"n" .. p[1]} } }, } m["ak"] = { "Akan", 28026, "alv-ctn", "Latn", } m["am"] = { "Amharic", 28244, "sem-eth", "Ethi", translit = "Ethi-translit", } m["an"] = { "Aragonese", 8765, "roa-nar", "Latn", } m["ar"] = { "Arabic", 13955, "sem-arb", "Arab, Hebr, Syrc, Brai, Nbat", translit = { Arab = "ar-translit" }, strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["as"] = { "Assamese", 29401, "inc-bas", "as-Beng", ancestors = "inc-mas", translit = "as-translit", } m["av"] = { "Avar", 29561, "cau-ava", "Cyrl, Latn, Arab", ancestors = "oav", translit = { Cyrl = "cau-nec-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"], }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = {"гъ", "гь", "гӏ", "ё", "кк", "къ", "кь", "кӏ", "лъ", "лӏ", "тӏ", "хх", "хъ", "хь", "хӏ", "цӏ", "чӏ"}, to = {"г" .. p[1], "г" .. p[2], "г" .. p[3], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "к" .. p[4], "л" .. p[1], "л" .. p[2], "т" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[4], "ц" .. p[1], "ч" .. p[1]} }, }, } m["ay"] = { "Aymara", 4627, "sai-aym", "Latn", } m["az"] = { "Azerbaijani", 9292, "trk-ogz", "Latn, Cyrl, fa-Arab", ancestors = "trk-oat", dotted_dotless_i = true, strip_diacritics = { Latn = { from = {"ʼ"}, to = {"'"}, }, ["fa-Arab"] = { module = "ar-stripdiacritics", ["from"] = { "ۆ", "ۇ", "وْ", "ڲ", "ؽ", }, ["to"] = { "و", "و", "و", "گ", "ی", }, }, }, display_text = { Latn = { from = {"'"}, to = {"ʼ"} } }, sort_key = { Latn = { from = { "i", -- Ensure "i" comes after "ı". "ç", "ə", "ğ", "x", "ı", "q", "ö", "ş", "ü", "w" }, to = { "i" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "h" .. p[1], "i", "k" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1] } }, Cyrl = { from = {"ғ", "ә", "ы", "ј", "ҝ", "ө", "ү", "һ", "ҹ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["ba"] = { "Bashkir", 13389, "trk-kbu", "Cyrl", translit = "ba-translit", override_translit = true, sort_key = { from = {"ғ", "ҙ", "ё", "ҡ", "ң", "ө", "ҫ", "ү", "һ", "ә"}, to = {"г" .. p[1], "д" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "с" .. p[1], "у" .. p[1], "х" .. p[1], "э" .. p[1]} }, } m["be"] = { "Belarusian", 9091, "zle", "Cyrl, Latn", ancestors = "zle-mbe", translit = { Cyrl = "be-translit", }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"ґ", "ё", "і", "ў"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "у" .. p[1]} }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, from = {"ć", "č", "dz", "dź", "dž", "ch", "ł", "ń", "ś", "š", "ŭ", "ź", "ž"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "d" .. p[3], "h" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзІіЙйКкЛлМмНнОоПпРрСсТтУуЎўФфХхЦцЧчШшЫыЬьЭэЮюЯя", Latn = "AaBbCcĆćČčDdEeFfGgHhIiJjKkLlŁłMmNnŃńOoPpRrSsŚśŠšTtUuŬŭVvYyZzŹźŽž", (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["bg"] = { "Bulgarian", 7918, "zls", "Cyrl", ancestors = "cu-bgm", translit = "bg-translit", strip_diacritics = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, sort_key = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, standard_chars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. c.punc, } m["bh"] = { "Bihari", 135305, "inc-eas", "Deva", } m["bi"] = { "Bislama", 35452, "crp", "Latn", ancestors = "en", } m["bm"] = { "Bambara", 33243, "dmn-emn", "Latn, Nkoo", sort_key = { Latn = { from = {"ɛ", "ɲ", "ŋ", "ɔ"}, to = {"e" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1]} }, }, } m["bn"] = { "Bengali", 9610, "inc-bas", "Beng, Newa", ancestors = "inc-mbn", translit = { Beng = "bn-translit" }, } m["bo"] = { "Tibetan", 34271, "sit-tib", "Tibt", -- sometimes Deva? ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["br"] = { "Breton", 12107, "cel-brs", "Latn", ancestors = "xbm", sort_key = { from = {"ch", "c['ʼ’]h"}, to = {"c" .. p[1], "c" .. p[2]} }, } m["ca"] = { "Catalan", 7026, "roa-ocr", "Latn", ancestors = "roa-oca", sort_key = {remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla .. "·"}, standard_chars = "AaÀàBbCcÇçDdEeÉéÈèFfGgHhIiÍíÏïJjLlMmNnOoÓóÒòPpQqRrSsTtUuÚúÜüVvXxYyZz·" .. c.punc, } m["ce"] = { "Chechen", 33350, "cau-vay", "Cyrl, Latn, Arab", translit = { Cyrl = "cau-nec-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = {"аь", "гӏ", "ё", "кх", "къ", "кӏ", "оь", "пӏ", "тӏ", "уь", "хь", "хӏ", "цӏ", "чӏ", "юь", "яь"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "ц" .. p[1], "ч" .. p[1], "ю" .. p[1], "я" .. p[1]} }, }, } m["ch"] = { "Chamorro", 33262, "poz", "Latn", sort_key = { remove_diacritics = "'", from = {"å", "ch", "ñ", "ng"}, to = {"a" .. p[1], "c" .. p[1], "n" .. p[1], "n" .. p[2]} }, } m["co"] = { "Corsican", 33111, "roa-itr", "Latn", sort_key = { from = {"chj", "ghj", "sc", "sg"}, to = {"c" .. p[1], "g" .. p[1], "s" .. p[1], "s" .. p[2]} }, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìÏïJjLlMmNnOoÒòPpQqRrSsTtUuÙùÜüVvZz" .. c.punc, } m["cr"] = { "Cree", 33390, "alg", "Latn, Cans", translit = { Cans = "cr-translit" }, } m["cs"] = { "Czech", 9056, "zlw", "Latn", ancestors = "cs-ear", sort_key = { from = {"á", "č", "ď", "é", "ě", "ch", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "h" .. p[1], "i" .. p[1], "n" .. p[1], "o" .. p[1], "r" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "y" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĎďEeÉéĚěFfGgHhIiÍíJjKkLlMmNnŇňOoÓóPpRrŘřSsŠšTtŤťUuÚúŮůVvYyÝýZzŽž" .. c.punc, } m["cu"] = { "Old Church Slavonic", 35499, "zls", "Cyrs, Glag, Zname", translit = { Cyrs = "Cyrs-translit", Glag = "Glag-translit" }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]] } m["cv"] = { "Chuvash", 33348, "trk-ogr", "Cyrl", ancestors = "cv-mid", translit = "cv-translit", override_translit = true, sort_key = { from = {"ӑ", "ё", "ӗ", "ҫ", "ӳ"}, to = {"а" .. p[1], "е" .. p[1], "е" .. p[2], "с" .. p[1], "у" .. p[1]} }, } m["cy"] = { "Welsh", 9309, "cel-brw", "Latn", ancestors = "wlm", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. "'", from = {"ch", "dd", "ff", "ng", "ll", "ph", "rh", "th"}, to = {"c" .. p[1], "d" .. p[1], "f" .. p[1], "g" .. p[1], "l" .. p[1], "p" .. p[1], "r" .. p[1], "t" .. p[1]} }, standard_chars = "ÂâAaBbCcDdEeÊêFfGgHhIiÎîLlMmNnOoÔôPpRrSsTtUuÛûWwŴŵYyŶŷ" .. c.punc, } m["da"] = { "Danish", 9035, "gmq-eas", "Latn", ancestors = "gmq-oda", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc, } m["de"] = { "German", 188, "gmw-hgm", "Latn, Latf, Brai", ancestors = "de-ear", sort_key = { Latn = s["de-Latn-sortkey"], Latf = s["de-Latn-sortkey"], }, standard_chars = { Latn = s["de-Latn-standardchars"], Latf = s["de-Latn-standardchars"], Brai = c.braille, c.punc } } m["dv"] = { "Dhivehi", 32656, "inc-ins", "Thaa, Diak", translit = { Thaa = "dv-translit", Diak = "Diak-translit", }, ancestors = "dv-old", override_translit = true, } m["dz"] = { "Dzongkha", 33081, "sit-tib", "Tibt", ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ee"] = { "Ewe", 30005, "alv-gbe", "Latn", sort_key = { remove_diacritics = c.tilde, from = {"ɖ", "dz", "ɛ", "ƒ", "gb", "ɣ", "kp", "ny", "ŋ", "ɔ", "ts", "ʋ"}, to = {"d" .. p[1], "d" .. p[2], "e" .. p[1], "f" .. p[1], "g" .. p[1], "g" .. p[2], "k" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "t" .. p[1], "v" .. p[1]} }, } m["el"] = { "Greek", 9129, "grk", "Grek, Polyt, Brai", ancestors = "el-kth", translit = "el-translit", override_translit = true, -- Grek and Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Grek = "΅·ͺ΄ΑαΆάΒβΓγΔδΕεέΈΖζΗηΉήΘθΙιΊίΪϊΐΚκΛλΜμΝνΞξΟοΌόΠπΡρΣσςΤτΥυΎύΫϋΰΦφΧχΨψΩωΏώ", Brai = c.braille, c.punc }, } m["en"] = { "English", 1860, "gmw-ang", "Latn, Brai, Shaw, Dsrt", -- entries in Shaw or Dsrt might require prior discussion wikimedia_codes = "en, simple", ancestors = "en-ear", sort_key = { Latn = { -- Many of these are needed for sorting language names. remove_diacritics = "'\"%-%.,%s·ʻʼ" .. c.diacritics, -- These are found in pagenames. from = {"[ɒæ🅱¢©ᴄðđəǝɜɡħʜıɨłŋɲøɔœꝑꝓꝕßʋ]"}, to = {{ ["ɒ"] = "a", ["æ"] = "ae", ["🅱"] = "b", ["¢"] = "c", ["©"] = "c", ["ᴄ"] = "c", ["ð"] = "d", ["đ"] = "d", ["ə"] = "e", ["ǝ"] = "e", ["ɜ"] = "e", ["ɡ"] = "g", ["ħ"] = "h", ["ʜ"] = "h", ["ı"] = "i", ["ɨ"] = "i", ["ł"] = "l", ["ŋ"] = "n", ["ɲ"] = "n", ["ø"] = "o", ["ɔ"] = "o", ["œ"] = "oe", ["ꝑ"] = "p", ["ꝓ"] = "p", ["ꝕ"] = "p", ["ß"] = "ss", ["ʋ"] = "v", }}, }, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", Brai = c.braille, c.punc }, } m["eo"] = { "Esperanto", 143, "art", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute, from = {"ĉ", "ĝ", "ĥ", "ĵ", "ŝ", "ŭ"}, to = {"c" .. p[1], "g" .. p[1], "h" .. p[1], "j" .. p[1], "s" .. p[1], "u" .. p[1]} }, standard_chars = "AaBbCcĈĉDdEeFfGgĜĝHhĤĥIiJjĴĵKkLlMmNnOoPpRrSsŜŝTtUuŬŭVvZz" .. c.punc, } m["es"] = { "Spanish", 1321, "roa-cas", "Latn, Brai", ancestors = "es-ear", sort_key = { Latn = { remove_exceptions = {"ñ"}, remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "ñ", "º", "œ"}, to = {"a", "ae", "n" .. p[1], "o", "oe"} }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["et"] = { "Estonian", 9072, "urj-fin", "Latn", sort_key = { from = { "š", "ž", "õ", "ä", "ö", "ü", -- 2 chars "z" -- 1 char }, to = { "s" .. p[1], "s" .. p[3], "w" .. p[1], "w" .. p[2], "w" .. p[3], "w" .. p[4], "s" .. p[2] } }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvÕõÄäÖöÜü" .. c.punc, } m["eu"] = { "Basque", 8752, "euq", "Latn", sort_key = { from = {"ç", "ñ"}, to = {"c" .. p[1], "n" .. p[1]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnÑñOoPpRrSsTtUuXxZz" .. c.punc, } m["fa"] = { "Persian", 9168, "ira-swi", "fa-Arab, Hebr", ancestors = "fa-cls", strip_diacritics = { ["fa-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ٱ"}, -- character "ۂ" code U+06C2 to "ه"; hamzatu l-waṣli to a regular alif to = {"ه", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ff"] = { "Fula", 33454, "alv-fwo", "Latn, Adlm", } m["fi"] = { "Finnish", 1412, "urj-fin", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { -- used to indicate gemination of the next consonant remove_diacritics = "ˣ", from = {"’"}, to = {"'"}, }, sort_key = { -- [[Appendix:Finnish alphabet#Collation]] + "aͤ" and "oͤ" as historical variants of "ä" and "ö". remove_diacritics = "'’:" .. c.diacritics, remove_exceptions = { "a[" .. c.ringabove .. c.diaer .. c.small_e .. "]", -- åäaͤ "o[" .. c.diaer .. c.tilde .. c.dacute .. c.small_e .. "]", -- öõőoͤ "u[" .. c.diaer .. c.dacute .. "]" -- üű }, from = {"æ", "[ðđ]", "ł", "ŋ", "œ", "ß", "þ", "u[" .. c.diaer .. c.dacute .. "]", "å", "aͤ", "o[" .. c.tilde .. c.dacute .. c.small_e .. "]", "ø", "(.)['%-]"}, to = {"ae", "d", "l", "n", "oe", "ss", "th", "y", "z" .. p[1], "ä", "ö", "ö", "%1"} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÄäÖö" .. c.punc, } m["fj"] = { "Fijian", 33295, "poz-pcc", "Latn", } m["fo"] = { "Faroese", 25258, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "í", "ó", "ú", "ý", "æ", "ø"}, to = {"a" .. p[1], "d" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaÁáBbDdÐðEeFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvYyÝýÆæØø" .. c.punc, } m["fr"] = { "French", 150, "roa-oil", "Latn, Brai", ancestors = "frm", sort_key = { Latn = s["roa-oil-sortkey"] }, standard_chars = { Latn = "AaÀàÂâBbCcÇçDdEeÉéÈèÊêËëFfGgHhIiÎîÏïJjLlMmNnOoÔôŒœPpQqRrSsTtUuÙùÛûÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["fy"] = { "West Frisian", 27175, "gmw-fri", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer, from = {"y"}, to = {"i"} }, standard_chars = "AaâäàÆæBbCcDdEeéêëèFfGgHhIiïìYyỳJjKkLlMmNnOoôöòPpRrSsTtUuúûüùVvWwZz" .. c.punc, } m["ga"] = { "Irish", 9142, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = { remove_diacritics = c.acute, from = {"ḃ", "ċ", "ḋ", "ḟ", "ġ", "ṁ", "ṗ", "ṡ", "ṫ"}, to = {"bh", "ch", "dh", "fh", "gh", "mh", "ph", "sh", "th"} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚúVv" .. c.punc, } m["gd"] = { "Scottish Gaelic", 9314, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = {remove_diacritics = c.grave .. c.acute}, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìLlMmNnOoÒòPpRrSsTtUuÙù" .. c.punc, } m["gl"] = { "Galician", 9307, "roa-gap", "Latn", sort_key = { remove_diacritics = c.acute, from = {"ñ"}, to = {"n" .. p[1]} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíÏïLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxZz" .. c.punc, } m["gu"] = { "Gujarati", 5137, "inc-wes", "Arab, Gujr", ancestors = "inc-mgu", translit = { Gujr = "gu-translit", }, strip_diacritics = { Arab = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.kasra .. c.shadda .. c.sukun}, Gujr = {remove_diacritics = "઼"}, }, } m["gv"] = { "Manx", 12175, "cel-gae", "Latn", ancestors = "mga", sort_key = {remove_diacritics = c.cedilla .. "-"}, standard_chars = "AaBbCcÇçDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwYy" .. c.punc, } m["ha"] = { "Hausa", 56475, "cdc-wst", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron} }, sort_key = { Latn = { from = {"ɓ", "b'", "ɗ", "d'", "ƙ", "k'", "sh", "ƴ", "'y"}, to = {"b" .. p[1], "b" .. p[2], "d" .. p[1], "d" .. p[2], "k" .. p[1], "k" .. p[2], "s" .. p[1], "y" .. p[1], "y" .. p[2]} }, }, } m["he"] = { "Hebrew", 9288, "sem-can", "Hebr, Phnx, Brai, Samr", ancestors = "he-med", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] -- Phnx translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["hi"] = { "Hindi", 1568, "inc-hnd", "Deva, Kthi, Newa", translit = { Deva = "hi-translit" }, standard_chars = { Deva = "अआइईउऊएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहत्रज्ञक्षक़ख़ग़ज़झ़ड़ढ़फ़काखागाघाङाचाछाजाझाञाटाठाडाढाणाताथादाधानापाफाबाभामायारालावाशाषासाहात्राज्ञाक्षाक़ाख़ाग़ाज़ाझ़ाड़ाढ़ाफ़ाकिखिगिघिङिचिछिजिझिञिटिठिडिढिणितिथिदिधिनिपिफिबिभिमियिरिलिविशिषिसिहित्रिज्ञिक्षिक़िख़िग़िज़िझ़िड़िढ़िफ़िकीखीगीघीङीचीछीजीझीञीटीठीडीढीणीतीथीदीधीनीपीफीबीभीमीयीरीलीवीशीषीसीहीत्रीज्ञीक्षीक़ीख़ीग़ीज़ीझ़ीड़ीढ़ीफ़ीकुखुगुघुङुचुछुजुझुञुटुठुडुढुणुतुथुदुधुनुपुफुबुभुमुयुरुलुवुशुषुसुहुत्रुज्ञुक्षुक़ुख़ुग़ुज़ुझ़ुड़ुढ़ुफ़ुकूखूगूघूङूचूछूजूझूञूटूठूडूढूणूतूथूदूधूनूपूफूबूभूमूयूरूलूवूशूषूसूहूत्रूज्ञूक्षूक़ूख़ूग़ूज़ूझ़ूड़ूढ़ूफ़ूकेखेगेघेङेचेछेजेझेञेटेठेडेढेणेतेथेदेधेनेपेफेबेभेमेयेरेलेवेशेषेसेहेत्रेज्ञेक्षेक़ेख़ेग़ेज़ेझ़ेड़ेढ़ेफ़ेकैखैगैघैङैचैछैजैझैञैटैठैडैढैणैतैथैदैधैनैपैफैबैभैमैयैरैलैवैशैषैसैहैत्रैज्ञैक्षैक़ैख़ैग़ैज़ैझ़ैड़ैढ़ैफ़ैकोखोगोघोङोचोछोजोझोञोटोठोडोढोणोतोथोदोधोनोपोफोबोभोमोयोरोलोवोशोषोसोहोत्रोज्ञोक्षोक़ोख़ोग़ोज़ोझ़ोड़ोढ़ोफ़ोकौखौगौघौङौचौछौजौझौञौटौठौडौढौणौतौथौदौधौनौपौफौबौभौमौयौरौलौवौशौषौसौहौत्रौज्ञौक्षौक़ौख़ौग़ौज़ौझ़ौड़ौढ़ौफ़ौक्ख्ग्घ्ङ्च्छ्ज्झ्ञ्ट्ठ्ड्ढ्ण्त्थ्द्ध्न्प्फ्ब्भ्म्य्र्ल्व्श्ष्स्ह्त्र्ज्ञ्क्ष्क़्ख़्ग़्ज़्झ़्ड़्ढ़्फ़्।॥०१२३४५६७८९॰", c.punc }, } m["ho"] = { "Hiri Motu", 33617, "crp", "Latn", ancestors = "meu", } m["ht"] = { "Haitian Creole", 33491, "crp", "Latn", ancestors = "ht-sdm", sort_key = { from = { "oun", -- 3 chars "an", "ch", "è", "en", "ng", "ò", "on", "ou", "ui" -- 2 chars }, to = { "o" .. p[4], "a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "u" .. p[1] } }, } m["hu"] = { "Hungarian", 9067, "urj-ugr", "Latn, Hung", ancestors = "ohu", sort_key = { Latn = { from = { "dzs", -- 3 chars "á", "cs", "dz", "é", "gy", "í", "ly", "ny", "ó", "ö", "ő", "sz", "ty", "ú", "ü", "ű", "zs", -- 2 chars }, to = { "d" .. p[2], "a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "u" .. p[3], "z" .. p[1], } }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóÖöŐőPpQqRrSsTtUuÚúÜüŰűVvWwXxYyZz", c.punc }, } m["hy"] = { "Armenian", 8785, "hyx", "Armn, Brai", ancestors = "axm", -- Armn translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Armn = { remove_diacritics = "՛՜՞՟", from = {"եւ", "<sup>յ</sup>", "<sup>ի</sup>", "<sup>է</sup>", "յ̵", "ՙ", "՚"}, to = {"և", "յ", "ի", "է", "ֈ", "ʻ", "’"} }, }, sort_key = { Armn = { from = { "ու", "եւ", -- 2 chars "և" -- 1 char }, to = { "ւ", "եվ", "եվ" } }, }, } m["hz"] = { "Herero", 33315, "bnt-swb", "Latn", } m["ia"] = { "Interlingua", 35934, "art", "Latn", } m["id"] = { "Indonesian", 9240, "poz-mly", "Latn", ancestors = "ms", standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" .. c.punc, } m["ie"] = { "Interlingue", 35850, "art", "Latn", type = "appendix-constructed", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ}, } m["ig"] = { "Igbo", 33578, "alv-igb", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron}, sort_key = { from = {"gb", "gh", "gw", "ị", "kp", "kw", "ṅ", "nw", "ny", "ọ", "sh", "ụ"}, to = {"g" .. p[1], "g" .. p[2], "g" .. p[3], "i" .. p[1], "k" .. p[1], "k" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "o" .. p[1], "s" .. p[1], "u" .. p[1]} }, } m["ii"] = { "Nuosu", 34235, "tbq-nlo", "Yiii", translit = "ii-translit", } m["ik"] = { "Inupiaq", 27183, "esx-inu", "Latn", sort_key = { from = { "ch", "ġ", "dj", "ḷ", "ł̣", "ñ", "ng", "r̂", "sr", "zr", -- 2 chars "ł", "ŋ", "ʼ" -- 1 char }, to = { "c" .. p[1], "g" .. p[1], "h" .. p[1], "l" .. p[1], "l" .. p[3], "n" .. p[1], "n" .. p[2], "r" .. p[1], "s" .. p[1], "z" .. p[1], "l" .. p[2], "n" .. p[2], "z" .. p[2] } }, } m["io"] = { "Ido", 35224, "art", "Latn", } m["is"] = { "Icelandic", 294, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "é", "í", "ó", "ú", "ý", "þ", "æ", "ö"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaÁáBbDdÐðEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvXxYyÝýÞþÆæÖö" .. c.punc, } m["it"] = { "Italian", 652, "roa-itr", "Latn", ancestors = "roa-oit", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove}, standard_chars = "AaÀàBbCcDdEeÈèÉéFfGgHhIiÌìLlMmNnOoÒòPpQqRrSsTtUuÙùVvZz" .. c.punc, } m["iu"] = { "Inuktitut", 29921, "esx-inu", "Cans, Latn", translit = { Cans = "cr-translit" }, override_translit = true, } m["ja"] = { "Japanese", 5287, "jpx", "Jpan, Latn, Brai", ancestors = "ja-ear", translit = s["jpx-translit"], link_tr = true, display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["jv"] = { "Javanese", 33549, "poz", "Latn, Java, Arab", ancestors = "kaw", translit = { Java = "jv-translit" }, link_tr = true, strip_diacritics = { Latn = {remove_diacritics = c.circ} -- Modern jv don't use ê }, sort_key = { Latn = { from = {"å", "dh", "é", "è", "ng", "ny", "th"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "n" .. p[2], "t" .. p[1]} }, }, } m["ka"] = { "Georgian", 8108, "ccs-gzn", "Geor, Geok, Hebr", -- Hebr is used to write Judeo-Georgian ancestors = "ka-mid", -- Geor, Geok translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Geor = s["ka-stripdiacritics"], Geok = s["ka-stripdiacritics"], }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["kg"] = { "Kongo", 33702, "bnt-kng", "Latn", } m["ki"] = { "Kikuyu", 33587, "bnt-kka", "Latn", } m["kj"] = { "Kwanyama", 1405077, "bnt-ova", "Latn", } m["kk"] = { "Kazakh", 9252, "trk-kno", "Cyrl, Latn, kk-Arab", translit = { Cyrl = { from = { "Ё", "ё", "Й", "й", "Нг", "нг", "Ӯ", "ӯ", -- 2 chars; are "Ӯ" and "ӯ" actually used? "А", "а", "Ә", "ә", "Б", "б", "В", "в", "Г", "г", "Ғ", "ғ", "Д", "д", "Е", "е", "Ж", "ж", "З", "з", "И", "и", "К", "к", "Қ", "қ", "Л", "л", "М", "м", "Н", "н", "Ң", "ң", "О", "о", "Ө", "ө", "П", "п", "Р", "р", "С", "с", "Т", "т", "У", "у", "Ұ", "ұ", "Ү", "ү", "Ф", "ф", "Х", "х", "Һ", "һ", "Ц", "ц", "Ч", "ч", "Ш", "ш", "Щ", "щ", "Ъ", "ъ", "Ы", "ы", "І", "і", "Ь", "ь", "Э", "э", "Ю", "ю", "Я", "я", -- 1 char }, to = { "E", "e", "İ", "i", "Ñ", "ñ", "U", "u", "A", "a", "Ä", "ä", "B", "b", "V", "v", "G", "g", "Ğ", "ğ", "D", "d", "E", "e", "J", "j", "Z", "z", "İ", "i", "K", "k", "Q", "q", "L", "l", "M", "m", "N", "n", "Ñ", "ñ", "O", "o", "Ö", "ö", "P", "p", "R", "r", "S", "s", "T", "t", "U", "u", "Ū", "ū", "Ü", "ü", "F", "f", "X", "x", "H", "h", "S", "s", "Ç", "ç", "Ş", "ş", "Ş", "ş", "", "", "Y", "y", "I", "ı", "", "", "É", "é", "Ü", "ü", "Ä", "ä", } } }, -- override_translit = true, sort_key = { Cyrl = { from = {"ә", "ғ", "ё", "қ", "ң", "ө", "ұ", "ү", "һ", "і"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "у" .. p[2], "х" .. p[1], "ы" .. p[1]} }, }, standard_chars = { Cyrl = "АаӘәБбВвГгҒғДдЕеЁёЖжЗзИиЙйКкҚқЛлМмНнҢңОоӨөПпРрСсТтУуҰұҮүФфХхҺһЦцЧчШшЩщЪъЫыІіЬьЭэЮюЯя", c.punc }, } m["kl"] = { "Greenlandic", 25355, "esx-inu", "Latn", sort_key = { from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } } m["km"] = { "Khmer", 9205, "mkh-kmr", "Khmr", ancestors = "xhm", translit = "km-translit", } m["kn"] = { "Kannada", 33673, "dra-kan", "Knda, Tutg", ancestors = "dra-mkn", -- Knda translit in [[Module:scripts/data]] } m["ko"] = { "Korean", 9176, "qfa-kor", "Kore, Brai", ancestors = "ko-ear", translit = { Kore = "ko-translit", }, -- Kore strip_diacritics in [[Module:scripts/data]] } m["kr"] = { "Kanuri", 36094, "ssa-sah", "Latn, Arab", -- the sortkey and strip_diacritics are only for standard Kanuri; when dialectal entries get added, someone will have to work out how the dialects should be represented orthographically strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.breve} }, sort_key = { Latn = { from = {"ǝ", "ny", "ɍ", "sh"}, to = {"e" .. p[1], "n" .. p[1], "r" .. p[1], "s" .. p[1]} }, }, } m["ks"] = { "Kashmiri", 33552, "inc-kas", "ks-Arab, Deva, Shrd, Latn", translit = { ["ks-Arab"] = "ks-Arab-translit", Deva = "ks-Deva-translit", -- Shrd translit in [[Module:scripts/data]] }, } -- "kv" is treated as "koi", "kpv", see [[WT:LT]] m["kw"] = { "Cornish", 25289, "cel-brs", "Latn", ancestors = "cnx", sort_key = { from = {"ch"}, to = {"c" .. p[1]} }, } m["ky"] = { "Kyrgyz", 9255, "trk-kkp", "Cyrl, Latn, Arab", translit = { Cyrl = "ky-translit" }, override_translit = true, sort_key = { Cyrl = { from = {"ё", "ң", "ө", "ү"}, to = {"е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, } m["la"] = { "Latin", 397, "itc-laf", "Latn, Ital", ancestors = "itc-ola", -- Ital translit in [[Module:scripts/data]] (NOTE: formerly not present, probably an accidental omission) display_text = { Latn = s["itc-Latn-displaytext"] }, strip_diacritics = { Latn = s["itc-Latn-stripdiacritics"] }, sort_key = { Latn = s["itc-Latn-sortkey"] }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiLlMmNnOoPpQqRrSsTtUuVvXx", c.punc }, } m["lb"] = { "Luxembourgish", 9051, "gmw-hgm", "Latn, Brai", ancestors = "gmw-cfr", sort_key = { Latn = { from = {"ä", "ë", "é"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, }, } m["lg"] = { "Luganda", 33368, "bnt-nyg", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ŋ"}, to = {"n" .. p[1]} }, } m["li"] = { "Limburgish", 102172, "gmw-frk", "Latn", ancestors = "dum", } m["ln"] = { "Lingala", 36217, "bnt-bmo", "Latn", sort_key = { remove_diacritics = c.acute .. c.circ .. c.caron, from = {"ɛ", "gb", "mb", "mp", "nd", "ng", "nk", "ns", "nt", "ny", "nz", "ɔ"}, to = {"e" .. p[1], "g" .. p[1], "m" .. p[1], "m" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "n" .. p[4], "n" .. p[5], "n" .. p[6], "n" .. p[7], "o" .. p[1]} }, } m["lo"] = { "Lao", 9211, "tai-swe", "Laoo", -- also Tai Noi/Lao Buhan script translit = "lo-translit", sort_key = "Laoo-sortkey", standard_chars = "0-9ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯ-ໝ" .. c.punc, } m["lt"] = { "Lithuanian", 9083, "bat-eas", "Latn", ancestors = "olt", display_text = "lt-common", strip_diacritics = "lt-common", sort_key = "lt-common", standard_chars = "AaĄąBbCcČčDdEeĘęĖėFfGgHhIiĮįYyJjKkLlMmNnOoPpRrSsŠšTtUuŲųŪūVvZzŽž" .. c.punc, } m["lu"] = { "Luba-Katanga", 36157, "bnt-lub", "Latn", } m["lv"] = { "Latvian", 9078, "bat-eas", "Latn", strip_diacritics = { -- This attempts to convert vowels with tone marks to vowels either with or without macrons. Specifically, there should be no macrons if the vowel is part of a diphthong (including resonant diphthongs such pìrksts -> pirksts not #pīrksts). What we do is first convert the vowel + tone mark to a vowel + tilde in a decomposed fashion, then remove the tilde in diphthongs, then convert the remaining vowel + tilde sequences to macroned vowels, then delete any other tilde. We leave already-macroned vowels alone: Both e.g. ar and ār occur before consonants. FIXME: This still might not be sufficient. from = {"([Ee])" .. c.cedilla, "[" .. c.grave .. c.circ .. c.tilde .."]", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .. "?([^aAeEiIoOuU])", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .."?$", "([iI])" .. c.tilde .. "?([eE])" .. c.tilde .. "?", "([aAeEiIuU])" .. c.tilde, c.tilde}, to = {"%1", c.tilde, "%1%2%3", "%1%2", "%1%2", "%1" .. c.macron} }, sort_key = { from = {"ā", "č", "ē", "ģ", "ī", "ķ", "ļ", "ņ", "š", "ū", "ž"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1]} }, standard_chars = "AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽž" .. c.punc, } m["mg"] = { "Malagasy", 7930, "poz-bre", "Latn, Arab", } m["mh"] = { "Marshallese", 36280, "poz-mic", "Latn", sort_key = { from = {"ā", "ļ", "m̧", "ņ", "n̄", "o̧", "ō", "ū"}, to = {"a" .. p[1], "l" .. p[1], "m" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "u" .. p[1]} }, } m["mi"] = { "Māori", 36451, "poz-pep", "Latn", sort_key = { remove_diacritics = c.macron, from = {"ng", "wh"}, to = {"n" .. p[1], "w" .. p[1]} }, } m["mk"] = { "Macedonian", 9296, "zls", "Cyrl, Polyt", ancestors = "cu", translit = { Cyrl = "mk-translit", -- FIXME: formerly no translit specified for Polyt; unclear if the default [[Module:grc-translit]] is -- acceptable, so we disable it for now Polyt = false, }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, remove_exceptions = {"Ѓ", "ѓ", "Ќ", "ќ"} }, }, sort_key = { Cyrl = { remove_diacritics = c.grave, remove_exceptions = {"ѓ", "ќ"}, from = {"ѓ", "ѕ", "ј", "љ", "њ", "ќ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Cyrl = "АаБбВвГгДдЃѓЕеЖжЗзЅѕИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЌќУуФфХхЦцЧчЏџШш", c.punc }, } m["ml"] = { "Malayalam", 36236, "dra-mal", "Mlym", override_translit = true, -- Mlym translit in [[Module:scripts/data]] } m["mn"] = { "Mongolian", 9246, "xgn-cen", "Cyrl, Mong, Latn, Brai", ancestors = "cmg", translit = { Cyrl = "mn-translit", -- Mong translit in [[Module:scripts/data]] }, override_translit = true, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] strip_diacritics = { Cyrl = {remove_diacritics = c.grave .. c.acute}, }, sort_key = { Cyrl = { remove_diacritics = c.grave, from = {"ё", "ө", "ү"}, to = {"е" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйЛлМмНнОоӨөРрСсТтУуҮүХхЦцЧчШшЫыЬьЭэЮюЯя—", Brai = c.braille, c.punc }, } -- "mo" is treated as "ro", see [[WT:LT]] m["mr"] = { "Marathi", 1571, "inc-sou", "Deva, Modi", ancestors = "omr", translit = { Deva = "mr-translit", Modi = "mr-Modi-translit", }, strip_diacritics = { Deva = { from = {"च़", "ज़", "झ़"}, to = {"च", "ज", "झ"} }, }, } m["ms"] = { "Malay", 9237, "poz-mly", "Latn, ms-Arab", ancestors = "ms-cla", standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", c.punc }, } m["mt"] = { "Maltese", 9166, "sem-arb", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { from = {"’"}, to = {"'"}, }, ancestors = "sqr", sort_key = { from = { "ċ", "ġ", "ż", -- Convert into PUA so that decomposed form does not get caught by the next step. "([cgz])", -- Ensure "c" comes after "ċ", "g" comes after "ġ" and "z" comes after "ż". "g" .. p[1] .. "ħ", -- "għ" after initial conversion of "g". p[3], p[4], "ħ", "ie", p[5] -- Convert "ċ", "ġ", "ħ", "ie", "ż" into final output. }, to = { p[3], p[4], p[5], "%1" .. p[1], "g" .. p[2], "c", "g", "h" .. p[1], "i" .. p[1], "z" } }, } m["my"] = { "Burmese", 9228, "tbq-brm", "Mymr", ancestors = "obr", translit = "my-translit", override_translit = true, sort_key = { from = {"ျ", "ြ", "ွ", "ှ", "ဿ"}, to = {"္ယ", "္ရ", "္ဝ", "္ဟ", "သ္သ"} }, } m["na"] = { "Nauruan", 13307, "poz-mic", "Latn", } m["nb"] = { "Norwegian Bokmål", 25167, "gmq", "Latn", wikimedia_codes = "no", ancestors = "gmq-mno, da", -- da as an (but not the) ancestor of nb was agreed on - do not change without discussion sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nd"] = { "Northern Ndebele", 35613, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["ne"] = { "Nepali", 33823, "inc-pah", "Deva, Newa", translit = { Deva = "ne-translit" }, } m["ng"] = { "Ndonga", 33900, "bnt-ova", "Latn", } m["nl"] = { "Dutch", 7411, "gmw-frk", "Latn, Brai", ancestors = "dum", sort_key = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'"}, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÄäËëÏïÖöÜü", Brai = c.braille, c.punc }, } m["nn"] = { "Norwegian Nynorsk", 25164, "gmq-wes", "Latn", ancestors = "gmq-mno", strip_diacritics = { remove_diacritics = c.grave .. c.acute, }, sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["no"] = { "Norwegian", 9043, "gmq-wes", "Latn", ancestors = "gmq-mno", sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nr"] = { "Southern Ndebele", 36785, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["nv"] = { "Navajo", 13310, "apa", "Latn, Brai", sort_key = { remove_diacritics = c.acute .. c.ogonek, from = { "chʼ", "tłʼ", "tsʼ", -- 3 chars "ch", "dl", "dz", "gh", "hw", "kʼ", "kw", "sh", "tł", "ts", "zh", -- 2 chars "ł", "ʼ" -- 1 char }, to = { "c" .. p[2], "t" .. p[2], "t" .. p[4], "c" .. p[1], "d" .. p[1], "d" .. p[2], "g" .. p[1], "h" .. p[1], "k" .. p[1], "k" .. p[2], "s" .. p[1], "t" .. p[1], "t" .. p[3], "z" .. p[1], "l" .. p[1], "z" .. p[2] } }, } m["ny"] = { "Chichewa", 33273, "bnt-nys", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ng'"}, to = {"ng"} }, } m["oc"] = { "Occitan", 14185, "roa-ocr", "Latn, Hebr", ancestors = "pro", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla, from = {"([lns])·h"}, to = {"%1h"} }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["oj"] = { "Ojibwe", 33875, "alg", "Cans, Latn", sort_key = { Latn = { from = {"aa", "ʼ", "ii", "oo", "sh", "zh"}, to = {"a" .. p[1], "h" .. p[1], "i" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1]} }, }, } m["om"] = { "Oromo", 33864, "cus-eas", "Latn, Ethi", } m["or"] = { "Odia", 33810, "inc-eas", "Orya", ancestors = "inc-mor", translit = "or-translit", } m["os"] = { "Ossetian", 33968, "xsc-sar", "Cyrl, Geor, Latn", ancestors = "oos", translit = { Cyrl = "os-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = { from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, sort_key = { Cyrl = { from = {"ӕ", "гъ", "дж", "дз", "ё", "къ", "пъ", "тъ", "хъ", "цъ", "чъ"}, to = {"а" .. p[1], "г" .. p[1], "д" .. p[1], "д" .. p[2], "е" .. p[1], "к" .. p[1], "п" .. p[1], "т" .. p[1], "х" .. p[1], "ц" .. p[1], "ч" .. p[1]} }, }, } m["pa"] = { "Punjabi", 58635, "inc-pan", "Guru, pa-Arab", translit = { Guru = "Guru-translit", ["pa-Arab"] = "pa-Arab-translit", }, strip_diacritics = { ["pa-Arab"] = { remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna, from = {"ݨ", "ࣇ"}, to = {"ن", "ل"} }, }, } m["pi"] = { "Pali", 36727, "inc-mid", "Latn, Brah, Deva, Beng, Sinh, Mymr, Thai, Lana, Laoo, Khmr, Cakm", --and also Khom ancestors = "sa", translit = { -- Brah translit in [[Module:scripts/data]] Deva = "sa-translit", Beng = "pi-translit", Sinh = "si-translit", Mymr = "pi-translit", Thai = "pi-translit", Lana = "pi-translit", Laoo = "pi-translit", Khmr = "pi-translit", Cakm = "Cakm-translit", }, strip_diacritics = { Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, Mymr = { remove_diacritics = c.VS01, }, }, sort_key = { -- FIXME: This needs to be converted into the current standardized format. from = {"ā", "ī", "ū", "ḍ", "ḷ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṭ", "ॐ", "([เโ])([ก-ฮ])", "([ເໂ])([ກ-ຮ])", "ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ", u(0xFE00), u(0x200D)}, to = {"a~", "i~", "u~", "d~", "l~", "m~", "n~", "n~~", "n~~~", "t~", "ओँ", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"} }, } m["pl"] = { "Polish", 809, "zlw-lch", "Latn", ancestors = "zlw-mpl", sort_key = { from = {"ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻż" .. c.punc, } m["ps"] = { "Pashto", 58680, "ira-pat", "ps-Arab", strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.zwarakay .. c.superalef}, } m["pt"] = { "Portuguese", 5146, "roa-gap", "Latn, Brai", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "º", "œ"}, to = {"a", "ae", "o", "oe"} }, }, standard_chars = { Latn = "AaÁáÂâÃãBbCcÇçDdEeÉéÊêFfGgHhIiÍíJjLlMmNnOoÓóÔôÕõPpQqRrSsTtUuÚúVvXxZz", Brai = c.braille, c.punc }, } m["qu"] = { "Quechua", 5218, "qwe", "Latn", } m["rm"] = { "Romansh", 13199, "roa-rhe", ancestors = "rm-old", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.small_e}, } m["ro"] = { "Romanian", 7913, "roa-eas", "Latn, Cyrl, Cyrs", translit = { Cyrl = "ro-translit" }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute, from = {"ă", "â", "î", "ș", "ț"}, to = {"a" .. p[1], "a" .. p[2], "i" .. p[1], "s" .. p[1], "t" .. p[1]} }, Cyrl = { from = {"ӂ"}, to = {"ж" .. p[1]} }, }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]]; presumably not present standard_chars = { Latn = "AaĂăÂâBbCcDdEeFfGgHhIiÎîJjLlMmNnOoPpRrSsȘșTtȚțUuVvXxZz", Cyrl = "АаБбВвГгДдЕеЖжӁӂЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЫыЬьЭэЮюЯя", c.punc }, } m["ru"] = { "Russian", 7737, "zle", "Cyrl, Brai", ancestors = "zle-mru", translit = { Cyrl = "ru-translit" }, display_text = { Cyrl = { from = {"'"}, to = {"’"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"}, from = {"’"}, to = {"'"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, from = { "і", "ѣ", "ѳ", "ѵ" }, to = { "и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3] } }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя—", Brai = c.braille, (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["rw"] = { "Rwanda-Rundi", 3217514, "bnt-glb", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ .. c.macron .. c.caron}, } m["sa"] = { "Sanskrit", 11059, "inc", "as-Beng, Bali, Beng, Bhks, Brah, Mymr, xwo-Mong, Deva, Gujr, Guru, Gran, Hani, Java, Kthi, Knda, Kawi, Khar, Khmr, Laoo, Mlym, mnc-Mong, Marc, Modi, Mong, Nand, Newa, Orya, Phag, Ranj, Saur, Shrd, Sidd, Sinh, Soyo, Lana, Takr, Taml, Tang, Telu, Thai, Tibt, Tutg, Tirh, Zanb", --and also Khom; script codes sorted by canonical name rather than code for [[MOD:sa-convert]] translit = { Beng = "sa-Beng-translit", ["as-Beng"] = "sa-Beng-translit", -- Brah translit in [[Module:scripts/data]] Deva = "sa-translit", Gujr = "sa-Gujr-translit", Guru = "sa-Guru-translit", Java = "sa-Java-translit", Kthi = "sa-Kthi-translit", Khmr = "pi-translit", Knda = "sa-Knda-translit", Lana = "pi-translit", Laoo = "pi-translit", Mlym = "sa-Mlym-translit", Modi = "sa-Modi-translit", -- Mong, mnc-Mong, xwo-Mong translit in [[Module:scripts/data]] -- NOTE: Formerly used xal-translit for transliterating xwo-Mong but that only handles Cyrillic; it has -- code to transliterate xwo-Mong but it's broken so I've replaced it with the default xwo-translit. Mymr = "pi-translit", Orya = "sa-Orya-translit", -- Shrd translit in [[Module:scripts/data]] -- Sidd translit in [[Module:scripts/data]] Sinh = "si-translit", Taml = "sa-Taml-translit", Telu = "sa-Telu-translit", Thai = "pi-translit", -- Tibt translit in [[Module:scripts/data]] }, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] -- Tibt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Deva = s["sa-Deva-stripdiacritics"], Mymr = { remove_diacritics = c.VS01, }, Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, }, sort_key = { Deva = s["sa-Deva-stripdiacritics"], -- until we have a proper Sanskrit sorting algorithm. Lana = { -- Tai Tham from = {"ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ"}, to = {"ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}, }, Laoo = "Laoo-sortkey", Latn = { from = {"ā", "ī", "ū", "ḍ", "ḷ", "ḹ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṛ", "ṝ", "ś", "ṣ", "ṭ"}, to = {"a~", "i~", "u~", "d~", "l~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~"}, }, Mymr = { remove_diacritics = c.VS01, }, Thai = "Thai-sortkey", -- FIXME: The previous sort key which mixed all scripts removed ZWJ; I don't know which script(s) this was -- intended for and there are no other languages which remove it in the sort key AFAIK. If it needs to be -- removed, specify the script(s) it needs to be removed under or add handling for the "all" script that applies -- regardless of script. --all = { -- remove_diacritics = c.ZWJ, --}, }, } m["sc"] = { "Sardinian", 33976, "roa-sou", "Latn", ancestors = "sc-old", } m["sd"] = { "Sindhi", 33997, "inc-snd", "sd-Arab, Deva, Sind, Khoj", translit = { Sind = "Sind-translit", ["sd-Arab"] = "sd-Arab-translit" }, strip_diacritics = { ["sd-Arab"] = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {"ٱ"}, to = {"ا"} }, }, } m["se"] = { "Northern Sami", 33947, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. c.dotbelow .. "'ˈ"}, sort_key = { from = {"á", "č", "đ", "ŋ", "š", "ŧ", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "n" .. p[1], "s" .. p[1], "t" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĐđEeFfGgHhIiJjKkLlMmNnŊŋOoPpRrSsŠšTtŦŧUuVvZzŽž" .. c.punc, } m["sg"] = { "Sango", 33954, "crp", "Latn", ancestors = "ngb", } m["sh"] = { "Serbo-Croatian", 9301, "zls", "Latn, Cyrl, Glag, Arab", ietf_subtag = "hbs", -- ISO 639-3 code, since "sh" is deprecated from ISO 639-1 wikimedia_codes = "sh, bs, hr, sr", strip_diacritics = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"Ć", "ć", "Ś", "ś", "Ź", "ź"} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"З́", "з́", "С́", "с́"} }, }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"ć", "ś", "ź"}, from = {"č", "ć", "dž", "đ", "lj", "nj", "š", "ś", "ž", "ź"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "z" .. p[1], "z" .. p[2]} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"з́", "с́"}, from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, standard_chars = { Latn = "AaBbCcČčĆćDdĐđEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž", Cyrl = "АаБбВвГгДдЂђЕеЖжЗзИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЋћУуФфХхЦцЧчЏџШш", c.punc }, } m["si"] = { "Sinhalese", 13267, "inc-ins", "Sinh", translit = "si-translit", override_translit = true, } m["sk"] = { "Slovak", 9058, "zlw", "Latn", ancestors = "zlw-osk", sort_key = {remove_diacritics = c.acute .. c.circ .. c.diaer .. c.caron}, standard_chars = "AaÁáÄäBbCcČčDdĎďEeÉéFfGgHhIiÍíJjKkLlĹ弾MmNnŇňOoÓóÔôPpRrŔŕSsŠšTtŤťUuÚúVvYyÝýZzŽž" .. c.punc, } m["sl"] = { "Slovene", 9063, "zls", "Latn", strip_diacritics = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow, remove_exceptions = {"Ć", "ć", "Ǵ", "ǵ", "Ś", "ś", "Ź", "ź"}, from = {"Ə", "ə", "Ł", "ł"}, to = {"E", "e", "L", "l"}, }, sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dotabove .. c.ringabove .. c.dgrave .. c.invbreve .. c.dotbelow .. c.ringbelow .. c.ogonek, remove_exceptions = {"ć", "ǵ", "ś", "ź"}, from = {"ä", "č", "ć", "đ", "ə", "ë", "ǧ", "ǵ", "ï", "ł", "ö", "š", "ś", "ü", "ž", "ź"}, to = {"a" .. p[1], "c" .. p[1], "c" .. p[2], "d" .. p[1], "e", "e" .. p[1], "g" .. p[1], "g" .. p[2], "i" .. p[1], "l", "o" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]}, }, standard_chars = "AaBbCcČčDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž" .. c.punc, } m["sm"] = { "Samoan", 34011, "poz-pnp", "Latn", } m["sn"] = { "Shona", 34004, "bnt-sho", "Latn", strip_diacritics = {remove_diacritics = c.acute}, } m["so"] = { "Somali", 13275, "cus-som", "Latn, Arab, Osma", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, } m["sq"] = { "Albanian", 8748, "sqj", "Latn, Grek, ota-Arab, Elba, Todr, Vith", translit = { Elba = "Elba-translit", Vith = "Vith-translit", }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron, from = {'^[ie] (%w)', '^të (%w)'}, to = {'%1', '%1'}, }, }, sort_key = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron .. c.tilde .. c.breve .. c.caron, from = {'^[ie] (%w)', '^të (%w)', 'ç', 'dh', 'ë', 'gj', 'll', 'nj', 'rr', 'sh', 'th', 'xh', 'zh'}, to = {'%1', '%1', 'c'..p[1], 'd'..p[1], 'e'..p[1], 'g'..p[1], 'l'..p[1], 'n'..p[1], 'r'..p[1], 's'..p[1], 't'..p[1], 'x'..p[1], 'z'..p[1]}, } -- TODO: Grek if the default sort key is unsuitable }, standard_chars = { Latn = "AaBbCcÇçDdEeËëFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz", c.punc }, } m["ss"] = { "Swazi", 34014, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["st"] = { "Sotho", 34340, "bnt-sts", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["su"] = { "Sundanese", 34002, "poz-msa", "Latn, Sund, Arab", ancestors = "osn", translit = { Sund = "Sund-translit" }, } m["sv"] = { "Swedish", 9027, "gmq-eas", "Latn", ancestors = "gmq-osw-lat", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla .. "':", remove_exceptions = {"å"}, from = {"ø", "æ", "œ", "ß", "å", "aͤ", "oͤ"}, to = {"ö", "ae", "oe", "ss", "z" .. p[1], "ä", "ö"} }, standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvXxYyÅåÄäÖö" .. c.punc, } m["sw"] = { "Swahili", 7838, "bnt-swh", "Latn, Arab", sort_key = { Latn = { from = {"ng'"}, to = {"ng" .. p[1]} }, }, } m["ta"] = { "Tamil", 5885, "dra-tam", "Taml", ancestors = "ta-mid", translit = "ta-translit", override_translit = true, } m["te"] = { "Telugu", 8097, "dra-tel", "Telu", translit = "te-translit", override_translit = true, } m["tg"] = { "Tajik", 9260, "ira-swi", "Cyrl, fa-Arab, Latn", ancestors = "fa-cls", translit = { Cyrl = "tg-translit" }, override_translit = true, strip_diacritics = { Cyrl = s["tg-stripdiacritics"], Latn = s["tg-stripdiacritics"], }, sort_key = { Cyrl = { from = {"ғ", "ё", "ӣ", "қ", "ӯ", "ҳ", "ҷ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "к" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["th"] = { "Thai", 9217, "tai-swe", "Thai, Khomt, Brai", translit = { Thai = "th-translit" }, sort_key = { Thai = "Thai-sortkey" }, } m["ti"] = { "Tigrinya", 34124, "sem-eth", "Ethi", translit = "Ethi-translit", } m["tk"] = { "Turkmen", 9267, "trk-ogz", "Latn, Cyrl, Arab", strip_diacritics = { Latn = s["tk-stripdiacritics"], Cyrl = s["tk-stripdiacritics"], }, sort_key = { Latn = { from = {"ç", "ä", "ž", "ň", "ö", "ş", "ü", "ý"}, to = {"c" .. p[1], "e" .. p[1], "j" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "y" .. p[1]} }, Cyrl = { from = {"ё", "җ", "ң", "ө", "ү", "ә"}, to = {"е" .. p[1], "ж" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "э" .. p[1]} }, }, ancestors = "trk-eog", } m["tl"] = { "Tagalog", 34057, "phi", "Latn, Tglg", translit = { Tglg = "tl-translit" }, override_translit = true, strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, standard_chars = { Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy", c.punc }, sort_key = { Latn = "tl-sortkey", }, } m["tn"] = { "Tswana", 34137, "bnt-sts", "Latn", } m["to"] = { "Tongan", 34094, "poz-ton", "Latn", strip_diacritics = {remove_diacritics = c.acute}, sort_key = {remove_diacritics = c.macron}, } m["tr"] = { "Turkish", 256, "trk-ogz", "Latn", ancestors = "ota", dotted_dotless_i = true, sort_key = { from = { -- Ignore circumflex, but account for capital Î wrongly becoming ı + circ due to dotted dotless I logic. "ı" .. c.circ, c.circ, "i", -- Ensure "i" comes after "ı". "ç", "ğ", "ı", "ö", "ş", "ü" }, to = { "i", "", "i" .. p[1], "c" .. p[1], "g" .. p[1], "i", "o" .. p[1], "s" .. p[1], "u" .. p[1] } }, standard_chars = "AaÂâBbCcÇçDdEeFfGgĞğHhIıİiÎîJjKkLlMmNnOoÖöPpRrSsŞşTtUuÛûÜüVvYyZz" .. c.punc, } m["ts"] = { "Tsonga", 34327, "bnt-tsr", "Latn", } m["tt"] = { "Tatar", 25285, "trk-kbu", "Cyrl, Latn, tt-Arab", translit = { Cyrl = "tt-translit", ["tt-Arab"] = "tt-translit" }, --override_translit = true, -- enable override until Module code can detect Russian loans such as [[аэропорт]] dotted_dotless_i = true, sort_key = { Cyrl = { from = {"ә", "ў", "ғ", "ё", "җ", "қ", "ң", "ө", "ү", "һ"}, to = {"а" .. p[1], "в" .. p[1], "г" .. p[1], "е" .. p[1], "ж" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1]} }, Latn = { from = { "i", -- Ensure "i" comes after "ı". "ä", "ə", "ç", "ğ", "ı", "ñ", "ŋ", "ö", "ɵ", "ş", "ü" }, to = { "i" .. p[1], "a" .. p[1], "a" .. p[2], "c" .. p[1], "g" .. p[1], "i", "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "s" .. p[1], "u" .. p[1] } }, }, } -- "tw" is treated as "ak", see [[WT:LT]] m["ty"] = { "Tahitian", 34128, "poz-pep", "Latn", } m["ug"] = { "Uyghur", 13263, "trk-kar", "ug-Arab, Latn, Cyrl", ancestors = "chg", translit = { ["ug-Arab"] = "ug-translit", Cyrl = "ug-translit", }, override_translit = true, } m["uk"] = { "Ukrainian", 8798, "zle", "Cyrl", ancestors = "zle-muk", translit = "uk-translit", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, sort_key = { remove_diacritics = c.grave .. c.acute, from = { "ї", -- 2 chars "ґ", "є", "і" -- 1 char }, to = { "и" .. p[2], "г" .. p[1], "е" .. p[1], "и" .. p[1] } }, standard_chars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["ur"] = { "Urdu", 1617, "inc-hnd", "ur-Arab, Hebr", translit = { ["ur-Arab"] = "ur-translit" }, strip_diacritics = { ["ur-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ۂ", "ٱ"}, to = {"ہ", "ہ", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { ["ur-Arab"] = "ایببپتثجچحخدذرزژسشصضطظعغفقکگلࣇڷمنݨوؤہھئٹڈڑآے", c.punc, }, } m["uz"] = { "Uzbek", 9264, "trk-kar", "Latn, Cyrl, fa-Arab", ancestors = "chg", translit = { Cyrl = "uz-translit" }, sort_key = { Latn = { from = {"oʻ", "gʻ", "sh", "ch", "ng"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3], "z" .. p[4], "z" .. p[5]} }, Cyrl = { from = {"ё", "ў", "қ", "ғ", "ҳ"}, to = {"е" .. p[1], "я" .. p[1], "я" .. p[2], "я" .. p[3], "я" .. p[4]} }, }, strip_diacritics = { ["fa-Arab"] = "ar-stripdiacritics", }, } m["ve"] = { "Venda", 32704, "bnt-bso", "Latn", } m["vi"] = { "Vietnamese", 9199, "mkh-vie", "Latn, Hani", ancestors = "mkh-mvi", sort_key = { Latn = "vi-sortkey", Hani = "Hani-sortkey", }, } m["vo"] = { "Volapük", 36986, "art", "Latn", } m["wa"] = { "Walloon", 34219, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["wo"] = { "Wolof", 34257, "alv-fwo", "Latn, Arab, Gara", } m["xh"] = { "Xhosa", 13218, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["yi"] = { "Yiddish", 8641, "gmw-hgm", "Hebr, Latn", ancestors = "gmh", translit = { Hebr = "yi-translit", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["yo"] = { "Yoruba", 34311, "alv-yor", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.macron} }, sort_key = { Latn = { from = {"ẹ", "ɛ", "gb", "ị", "kp", "ọ", "ɔ", "ṣ", "sh", "ụ"}, to = {"e" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "o" .. p[1], "o" .. p[1], "s" .. p[1], "s" .. p[1], "u" .. p[1]} }, }, } m["za"] = { "Zhuang", 13216, "tai", "Latn, Hani", sort_key = { Latn = "za-sortkey", Hani = "Hani-sortkey", }, } m["zh"] = { "Chinese", 7850, "zhx", "Hants, Latn, Bopo, Nshu, Brai", ancestors = "ltc", generate_forms = "zh-generateforms", translit = { Hani = "zh-translit", Bopo = "zh-translit", }, sort_key = { Hani = "Hani-sortkey" }, } m["zu"] = { "Zulu", 10179, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } return require("Module:languages").finalizeData(m, "language") 5fa8phvhgeh3ec9j59qc1zn00yjd9wj 235453 235452 2026-06-02T10:42:24Z Lee 19 [[:en:Module:languages/data/2]] වෙතින් එක් සංශෝධනයක් 235452 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared -- Ideally, we want to move these into [[Module:languages/data]], but because (a) it's necessary to use require on that module, and (b) they're only used in this data module, it's less memory-efficient to do that at the moment. If it becomes possible to use mw.loadData, then these should be moved there. s["de-Latn-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove, from = {"æ", "œ", "ß"}, to = {"ae", "oe", "ss"} } s["de-Latn-standardchars"] = "AaÄäBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsẞßTtUuÜüVvWwXxYyZz" s["ka-stripdiacritics"] = {remove_diacritics = c.circ} s["no-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } s["no-standardchars"] = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc s["sa-Deva-stripdiacritics"] = { -- Don't use remove_diacritics for accent marks, as १ and ३ should also be removed if (and only if) they carry any. from = {"ॐ", "[१३]?[" .. c.anudatta .. c.udatta .. c.dsvarita .. c.tsvarita .. "]+"}, to = {"ओँ"}, } s["tg-stripdiacritics"] = {remove_diacritics = c.grave .. c.acute} s["tk-stripdiacritics"] = {remove_diacritics = c.macron} local m = {} m["aa"] = { "Afar", 27811, "cus-eas", "Latn, Ethi", strip_diacritics = { Latn = {remove_diacritics = c.acute}, }, } m["ab"] = { "Abkhaz", 5111, "cau-abz", "Cyrl, Geor, Latn", translit = { Cyrl = "ab-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, from = {"^а%-"}, to = {"а"}, }, Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = { "х'ә", -- 3 chars "гь", "гә", "ӷь", "ҕь", "ӷә", "ҕә", "дә", "ё", "жь", "жә", "ҙә", "ӡә", "ӡ'", "кь", "кә", "қь", "қә", "ҟь", "ҟә", "ҫә", "тә", "ҭә", "ф'", "хь", "хә", "х'", "ҳә", "ць", "цә", "ц'", "ҵә", "ҵ'", "шь", "шә", "џь", -- 2 chars "ӷ", "ҕ", "ҙ", "ӡ", "қ", "ҟ", "ԥ", "ҧ", "ҫ", "ҭ", "ҳ", "ҵ", "ҷ", "ҽ", "ҿ", "ҩ", "џ", "ә", -- 1 char "^а", }, to = { "х" .. p[4], "г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "г" .. p[7], "г" .. p[8], "д" .. p[1], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "з" .. p[2], "з" .. p[4], "з" .. p[5], "к" .. p[1], "к" .. p[2], "к" .. p[4], "к" .. p[5], "к" .. p[7], "к" .. p[8], "с" .. p[2], "т" .. p[1], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[6], "ц" .. p[1], "ц" .. p[2], "ц" .. p[3], "ц" .. p[5], "ц" .. p[6], "ш" .. p[1], "ш" .. p[2], "ы" .. p[3], "г" .. p[3], "г" .. p[4], "з" .. p[1], "з" .. p[3], "к" .. p[3], "к" .. p[6], "п" .. p[1], "п" .. p[2], "с" .. p[1], "т" .. p[2], "х" .. p[5], "ц" .. p[4], "ч" .. p[1], "ч" .. p[2], "ч" .. p[3], "ы" .. p[1], "ы" .. p[2], "ь" .. p[1], "", } }, }, } m["ae"] = { "Avestan", 29572, "ira-cen", "Avst, Gujr, Deva", translit = { Avst = "Avst-translit" }, } m["af"] = { "Afrikaans", 14196, "gmw-frk", "Latn, Arab", ancestors = "nl", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'", from = {"['ʼ]n"}, to = {"n" .. p[1]} } }, } m["ak"] = { "Akan", 28026, "alv-ctn", "Latn", } m["am"] = { "Amharic", 28244, "sem-eth", "Ethi", translit = "Ethi-translit", } m["an"] = { "Aragonese", 8765, "roa-nar", "Latn", } m["ar"] = { "Arabic", 13955, "sem-arb", "Arab, Hebr, Syrc, Brai, Nbat", translit = { Arab = "ar-translit" }, strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["as"] = { "Assamese", 29401, "inc-bas", "as-Beng", ancestors = "inc-mas", translit = "as-translit", } m["av"] = { "Avar", 29561, "cau-ava", "Cyrl, Latn, Arab", ancestors = "oav", translit = { Cyrl = "cau-nec-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"], }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = {"гъ", "гь", "гӏ", "ё", "кк", "къ", "кь", "кӏ", "лъ", "лӏ", "тӏ", "хх", "хъ", "хь", "хӏ", "цӏ", "чӏ"}, to = {"г" .. p[1], "г" .. p[2], "г" .. p[3], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "к" .. p[4], "л" .. p[1], "л" .. p[2], "т" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[4], "ц" .. p[1], "ч" .. p[1]} }, }, } m["ay"] = { "Aymara", 4627, "sai-aym", "Latn", } m["az"] = { "Azerbaijani", 9292, "trk-ogz", "Latn, Cyrl, fa-Arab", ancestors = "trk-oat", dotted_dotless_i = true, strip_diacritics = { Latn = { from = {"ʼ"}, to = {"'"}, }, ["fa-Arab"] = { module = "ar-stripdiacritics", ["from"] = { "ۆ", "ۇ", "وْ", "ڲ", "ؽ", }, ["to"] = { "و", "و", "و", "گ", "ی", }, }, }, display_text = { Latn = { from = {"'"}, to = {"ʼ"} } }, sort_key = { Latn = { from = { "i", -- Ensure "i" comes after "ı". "ç", "ə", "ğ", "x", "ı", "q", "ö", "ş", "ü", "w" }, to = { "i" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "h" .. p[1], "i", "k" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1] } }, Cyrl = { from = {"ғ", "ә", "ы", "ј", "ҝ", "ө", "ү", "һ", "ҹ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["ba"] = { "Bashkir", 13389, "trk-kbu", "Cyrl", translit = "ba-translit", override_translit = true, sort_key = { from = {"ғ", "ҙ", "ё", "ҡ", "ң", "ө", "ҫ", "ү", "һ", "ә"}, to = {"г" .. p[1], "д" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "с" .. p[1], "у" .. p[1], "х" .. p[1], "э" .. p[1]} }, } m["be"] = { "Belarusian", 9091, "zle", "Cyrl, Latn", ancestors = "zle-mbe", translit = { Cyrl = "be-translit", }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"ґ", "ё", "і", "ў"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "у" .. p[1]} }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, from = {"ć", "č", "dz", "dź", "dž", "ch", "ł", "ń", "ś", "š", "ŭ", "ź", "ž"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "d" .. p[3], "h" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзІіЙйКкЛлМмНнОоПпРрСсТтУуЎўФфХхЦцЧчШшЫыЬьЭэЮюЯя", Latn = "AaBbCcĆćČčDdEeFfGgHhIiJjKkLlŁłMmNnŃńOoPpRrSsŚśŠšTtUuŬŭVvYyZzŹźŽž", (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["bg"] = { "Bulgarian", 7918, "zls", "Cyrl", ancestors = "cu-bgm", translit = "bg-translit", strip_diacritics = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, sort_key = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, standard_chars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. c.punc, } m["bh"] = { "Bihari", 135305, "inc-eas", "Deva", } m["bi"] = { "Bislama", 35452, "crp", "Latn", ancestors = "en", } m["bm"] = { "Bambara", 33243, "dmn-emn", "Latn, Nkoo", sort_key = { Latn = { from = {"ɛ", "ɲ", "ŋ", "ɔ"}, to = {"e" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1]} }, }, } m["bn"] = { "Bengali", 9610, "inc-bas", "Beng, Newa", ancestors = "inc-mbn", translit = { Beng = "bn-translit" }, } m["bo"] = { "Tibetan", 34271, "sit-tib", "Tibt", -- sometimes Deva? ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["br"] = { "Breton", 12107, "cel-brs", "Latn", ancestors = "xbm", sort_key = { from = {"ch", "c['ʼ’]h"}, to = {"c" .. p[1], "c" .. p[2]} }, } m["ca"] = { "Catalan", 7026, "roa-ocr", "Latn", ancestors = "roa-oca", sort_key = {remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla .. "·"}, standard_chars = "AaÀàBbCcÇçDdEeÉéÈèFfGgHhIiÍíÏïJjLlMmNnOoÓóÒòPpQqRrSsTtUuÚúÜüVvXxYyZz·" .. c.punc, } m["ce"] = { "Chechen", 33350, "cau-vay", "Cyrl, Latn, Arab", translit = { Cyrl = "cau-nec-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = {"аь", "гӏ", "ё", "кх", "къ", "кӏ", "оь", "пӏ", "тӏ", "уь", "хь", "хӏ", "цӏ", "чӏ", "юь", "яь"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "ц" .. p[1], "ч" .. p[1], "ю" .. p[1], "я" .. p[1]} }, }, } m["ch"] = { "Chamorro", 33262, "poz", "Latn", sort_key = { remove_diacritics = "'", from = {"å", "ch", "ñ", "ng"}, to = {"a" .. p[1], "c" .. p[1], "n" .. p[1], "n" .. p[2]} }, } m["co"] = { "Corsican", 33111, "roa-itr", "Latn", sort_key = { from = {"chj", "ghj", "sc", "sg"}, to = {"c" .. p[1], "g" .. p[1], "s" .. p[1], "s" .. p[2]} }, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìÏïJjLlMmNnOoÒòPpQqRrSsTtUuÙùÜüVvZz" .. c.punc, } m["cr"] = { "Cree", 33390, "alg", "Latn, Cans", translit = { Cans = "cr-translit" }, } m["cs"] = { "Czech", 9056, "zlw", "Latn", ancestors = "cs-ear", sort_key = { from = {"á", "č", "ď", "é", "ě", "ch", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "h" .. p[1], "i" .. p[1], "n" .. p[1], "o" .. p[1], "r" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "y" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĎďEeÉéĚěFfGgHhIiÍíJjKkLlMmNnŇňOoÓóPpRrŘřSsŠšTtŤťUuÚúŮůVvYyÝýZzŽž" .. c.punc, } m["cu"] = { "Old Church Slavonic", 35499, "zls", "Cyrs, Glag, Zname", translit = { Cyrs = "Cyrs-translit", Glag = "Glag-translit" }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]] } m["cv"] = { "Chuvash", 33348, "trk-ogr", "Cyrl", ancestors = "cv-mid", translit = "cv-translit", override_translit = true, sort_key = { from = {"ӑ", "ё", "ӗ", "ҫ", "ӳ"}, to = {"а" .. p[1], "е" .. p[1], "е" .. p[2], "с" .. p[1], "у" .. p[1]} }, } m["cy"] = { "Welsh", 9309, "cel-brw", "Latn", ancestors = "wlm", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. "'", from = {"ch", "dd", "ff", "ng", "ll", "ph", "rh", "th"}, to = {"c" .. p[1], "d" .. p[1], "f" .. p[1], "g" .. p[1], "l" .. p[1], "p" .. p[1], "r" .. p[1], "t" .. p[1]} }, standard_chars = "ÂâAaBbCcDdEeÊêFfGgHhIiÎîLlMmNnOoÔôPpRrSsTtUuÛûWwŴŵYyŶŷ" .. c.punc, } m["da"] = { "Danish", 9035, "gmq-eas", "Latn", ancestors = "gmq-oda", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc, } m["de"] = { "German", 188, "gmw-hgm", "Latn, Latf, Brai", ancestors = "de-ear", sort_key = { Latn = s["de-Latn-sortkey"], Latf = s["de-Latn-sortkey"], }, standard_chars = { Latn = s["de-Latn-standardchars"], Latf = s["de-Latn-standardchars"], Brai = c.braille, c.punc } } m["dv"] = { "Dhivehi", 32656, "inc-ins", "Thaa, Diak", translit = { Thaa = "dv-translit", Diak = "Diak-translit", }, ancestors = "dv-old", override_translit = true, } m["dz"] = { "Dzongkha", 33081, "sit-tib", "Tibt", ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ee"] = { "Ewe", 30005, "alv-gbe", "Latn", sort_key = { remove_diacritics = c.tilde, from = {"ɖ", "dz", "ɛ", "ƒ", "gb", "ɣ", "kp", "ny", "ŋ", "ɔ", "ts", "ʋ"}, to = {"d" .. p[1], "d" .. p[2], "e" .. p[1], "f" .. p[1], "g" .. p[1], "g" .. p[2], "k" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "t" .. p[1], "v" .. p[1]} }, } m["el"] = { "Greek", 9129, "grk", "Grek, Polyt, Brai", ancestors = "el-kth", translit = "el-translit", override_translit = true, -- Grek and Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Grek = "΅·ͺ΄ΑαΆάΒβΓγΔδΕεέΈΖζΗηΉήΘθΙιΊίΪϊΐΚκΛλΜμΝνΞξΟοΌόΠπΡρΣσςΤτΥυΎύΫϋΰΦφΧχΨψΩωΏώ", Brai = c.braille, c.punc }, } m["en"] = { "English", 1860, "gmw-ang", "Latn, Brai, Shaw, Dsrt", -- entries in Shaw or Dsrt might require prior discussion wikimedia_codes = "en, simple", ancestors = "en-ear", sort_key = { Latn = { -- Many of these are needed for sorting language names. remove_diacritics = "'\"%-%.,%s·ʻʼ" .. c.diacritics, -- These are found in pagenames. from = {"[ɒæ🅱¢©ᴄðđəǝɜɡħʜıɨłŋɲøɔœꝑꝓꝕßʋ]"}, to = {{ ["ɒ"] = "a", ["æ"] = "ae", ["🅱"] = "b", ["¢"] = "c", ["©"] = "c", ["ᴄ"] = "c", ["ð"] = "d", ["đ"] = "d", ["ə"] = "e", ["ǝ"] = "e", ["ɜ"] = "e", ["ɡ"] = "g", ["ħ"] = "h", ["ʜ"] = "h", ["ı"] = "i", ["ɨ"] = "i", ["ł"] = "l", ["ŋ"] = "n", ["ɲ"] = "n", ["ø"] = "o", ["ɔ"] = "o", ["œ"] = "oe", ["ꝑ"] = "p", ["ꝓ"] = "p", ["ꝕ"] = "p", ["ß"] = "ss", ["ʋ"] = "v", }}, }, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", Brai = c.braille, c.punc }, } m["eo"] = { "Esperanto", 143, "art", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute, from = {"ĉ", "ĝ", "ĥ", "ĵ", "ŝ", "ŭ"}, to = {"c" .. p[1], "g" .. p[1], "h" .. p[1], "j" .. p[1], "s" .. p[1], "u" .. p[1]} }, standard_chars = "AaBbCcĈĉDdEeFfGgĜĝHhĤĥIiJjĴĵKkLlMmNnOoPpRrSsŜŝTtUuŬŭVvZz" .. c.punc, } m["es"] = { "Spanish", 1321, "roa-cas", "Latn, Brai", ancestors = "es-ear", sort_key = { Latn = { remove_exceptions = {"ñ"}, remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "ñ", "º", "œ"}, to = {"a", "ae", "n" .. p[1], "o", "oe"} }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["et"] = { "Estonian", 9072, "urj-fin", "Latn", sort_key = { from = { "š", "ž", "õ", "ä", "ö", "ü", -- 2 chars "z" -- 1 char }, to = { "s" .. p[1], "s" .. p[3], "w" .. p[1], "w" .. p[2], "w" .. p[3], "w" .. p[4], "s" .. p[2] } }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvÕõÄäÖöÜü" .. c.punc, } m["eu"] = { "Basque", 8752, "euq", "Latn", sort_key = { from = {"ç", "ñ"}, to = {"c" .. p[1], "n" .. p[1]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnÑñOoPpRrSsTtUuXxZz" .. c.punc, } m["fa"] = { "Persian", 9168, "ira-swi", "fa-Arab, Hebr", ancestors = "fa-cls", strip_diacritics = { ["fa-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ٱ"}, -- character "ۂ" code U+06C2 to "ه"; hamzatu l-waṣli to a regular alif to = {"ه", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ff"] = { "Fula", 33454, "alv-fwo", "Latn, Adlm", } m["fi"] = { "Finnish", 1412, "urj-fin", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { -- used to indicate gemination of the next consonant remove_diacritics = "ˣ", from = {"’"}, to = {"'"}, }, sort_key = { -- [[Appendix:Finnish alphabet#Collation]] + "aͤ" and "oͤ" as historical variants of "ä" and "ö". remove_diacritics = "'’:" .. c.diacritics, remove_exceptions = { "a[" .. c.ringabove .. c.diaer .. c.small_e .. "]", -- åäaͤ "o[" .. c.diaer .. c.tilde .. c.dacute .. c.small_e .. "]", -- öõőoͤ "u[" .. c.diaer .. c.dacute .. "]" -- üű }, from = {"æ", "[ðđ]", "ł", "ŋ", "œ", "ß", "þ", "u[" .. c.diaer .. c.dacute .. "]", "å", "aͤ", "o[" .. c.tilde .. c.dacute .. c.small_e .. "]", "ø", "(.)['%-]"}, to = {"ae", "d", "l", "n", "oe", "ss", "th", "y", "z" .. p[1], "ä", "ö", "ö", "%1"} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÄäÖö" .. c.punc, } m["fj"] = { "Fijian", 33295, "poz-pcc", "Latn", } m["fo"] = { "Faroese", 25258, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "í", "ó", "ú", "ý", "æ", "ø"}, to = {"a" .. p[1], "d" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaÁáBbDdÐðEeFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvYyÝýÆæØø" .. c.punc, } m["fr"] = { "French", 150, "roa-oil", "Latn, Brai", ancestors = "frm", sort_key = { Latn = s["roa-oil-sortkey"] }, standard_chars = { Latn = "AaÀàÂâBbCcÇçDdEeÉéÈèÊêËëFfGgHhIiÎîÏïJjLlMmNnOoÔôŒœPpQqRrSsTtUuÙùÛûÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["fy"] = { "West Frisian", 27175, "gmw-fri", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer, from = {"y"}, to = {"i"} }, standard_chars = "AaâäàÆæBbCcDdEeéêëèFfGgHhIiïìYyỳJjKkLlMmNnOoôöòPpRrSsTtUuúûüùVvWwZz" .. c.punc, } m["ga"] = { "Irish", 9142, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = { remove_diacritics = c.acute, from = {"ḃ", "ċ", "ḋ", "ḟ", "ġ", "ṁ", "ṗ", "ṡ", "ṫ"}, to = {"bh", "ch", "dh", "fh", "gh", "mh", "ph", "sh", "th"} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚúVv" .. c.punc, } m["gd"] = { "Scottish Gaelic", 9314, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = {remove_diacritics = c.grave .. c.acute}, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìLlMmNnOoÒòPpRrSsTtUuÙù" .. c.punc, } m["gl"] = { "Galician", 9307, "roa-gap", "Latn", sort_key = { remove_diacritics = c.acute, from = {"ñ"}, to = {"n" .. p[1]} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíÏïLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxZz" .. c.punc, } m["gu"] = { "Gujarati", 5137, "inc-wes", "Arab, Gujr", ancestors = "inc-mgu", translit = { Gujr = "gu-translit", }, strip_diacritics = { Arab = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.kasra .. c.shadda .. c.sukun}, Gujr = {remove_diacritics = "઼"}, }, } m["gv"] = { "Manx", 12175, "cel-gae", "Latn", ancestors = "mga", sort_key = {remove_diacritics = c.cedilla .. "-"}, standard_chars = "AaBbCcÇçDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwYy" .. c.punc, } m["ha"] = { "Hausa", 56475, "cdc-wst", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron} }, sort_key = { Latn = { from = {"ɓ", "b'", "ɗ", "d'", "ƙ", "k'", "sh", "ƴ", "'y"}, to = {"b" .. p[1], "b" .. p[2], "d" .. p[1], "d" .. p[2], "k" .. p[1], "k" .. p[2], "s" .. p[1], "y" .. p[1], "y" .. p[2]} }, }, } m["he"] = { "Hebrew", 9288, "sem-can", "Hebr, Phnx, Brai, Samr", ancestors = "he-med", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] -- Phnx translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["hi"] = { "Hindi", 1568, "inc-hnd", "Deva, Kthi, Newa", translit = { Deva = "hi-translit" }, standard_chars = { Deva = "अआइईउऊएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहत्रज्ञक्षक़ख़ग़ज़झ़ड़ढ़फ़काखागाघाङाचाछाजाझाञाटाठाडाढाणाताथादाधानापाफाबाभामायारालावाशाषासाहात्राज्ञाक्षाक़ाख़ाग़ाज़ाझ़ाड़ाढ़ाफ़ाकिखिगिघिङिचिछिजिझिञिटिठिडिढिणितिथिदिधिनिपिफिबिभिमियिरिलिविशिषिसिहित्रिज्ञिक्षिक़िख़िग़िज़िझ़िड़िढ़िफ़िकीखीगीघीङीचीछीजीझीञीटीठीडीढीणीतीथीदीधीनीपीफीबीभीमीयीरीलीवीशीषीसीहीत्रीज्ञीक्षीक़ीख़ीग़ीज़ीझ़ीड़ीढ़ीफ़ीकुखुगुघुङुचुछुजुझुञुटुठुडुढुणुतुथुदुधुनुपुफुबुभुमुयुरुलुवुशुषुसुहुत्रुज्ञुक्षुक़ुख़ुग़ुज़ुझ़ुड़ुढ़ुफ़ुकूखूगूघूङूचूछूजूझूञूटूठूडूढूणूतूथूदूधूनूपूफूबूभूमूयूरूलूवूशूषूसूहूत्रूज्ञूक्षूक़ूख़ूग़ूज़ूझ़ूड़ूढ़ूफ़ूकेखेगेघेङेचेछेजेझेञेटेठेडेढेणेतेथेदेधेनेपेफेबेभेमेयेरेलेवेशेषेसेहेत्रेज्ञेक्षेक़ेख़ेग़ेज़ेझ़ेड़ेढ़ेफ़ेकैखैगैघैङैचैछैजैझैञैटैठैडैढैणैतैथैदैधैनैपैफैबैभैमैयैरैलैवैशैषैसैहैत्रैज्ञैक्षैक़ैख़ैग़ैज़ैझ़ैड़ैढ़ैफ़ैकोखोगोघोङोचोछोजोझोञोटोठोडोढोणोतोथोदोधोनोपोफोबोभोमोयोरोलोवोशोषोसोहोत्रोज्ञोक्षोक़ोख़ोग़ोज़ोझ़ोड़ोढ़ोफ़ोकौखौगौघौङौचौछौजौझौञौटौठौडौढौणौतौथौदौधौनौपौफौबौभौमौयौरौलौवौशौषौसौहौत्रौज्ञौक्षौक़ौख़ौग़ौज़ौझ़ौड़ौढ़ौफ़ौक्ख्ग्घ्ङ्च्छ्ज्झ्ञ्ट्ठ्ड्ढ्ण्त्थ्द्ध्न्प्फ्ब्भ्म्य्र्ल्व्श्ष्स्ह्त्र्ज्ञ्क्ष्क़्ख़्ग़्ज़्झ़्ड़्ढ़्फ़्।॥०१२३४५६७८९॰", c.punc }, } m["ho"] = { "Hiri Motu", 33617, "crp", "Latn", ancestors = "meu", } m["ht"] = { "Haitian Creole", 33491, "crp", "Latn", ancestors = "ht-sdm", sort_key = { from = { "oun", -- 3 chars "an", "ch", "è", "en", "ng", "ò", "on", "ou", "ui" -- 2 chars }, to = { "o" .. p[4], "a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "u" .. p[1] } }, } m["hu"] = { "Hungarian", 9067, "urj-ugr", "Latn, Hung", ancestors = "ohu", sort_key = { Latn = { from = { "dzs", -- 3 chars "á", "cs", "dz", "é", "gy", "í", "ly", "ny", "ó", "ö", "ő", "sz", "ty", "ú", "ü", "ű", "zs", -- 2 chars }, to = { "d" .. p[2], "a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "u" .. p[3], "z" .. p[1], } }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóÖöŐőPpQqRrSsTtUuÚúÜüŰűVvWwXxYyZz", c.punc }, } m["hy"] = { "Armenian", 8785, "hyx", "Armn, Brai", ancestors = "axm", -- Armn translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Armn = { remove_diacritics = "՛՜՞՟", from = {"եւ", "<sup>յ</sup>", "<sup>ի</sup>", "<sup>է</sup>", "յ̵", "ՙ", "՚"}, to = {"և", "յ", "ի", "է", "ֈ", "ʻ", "’"} }, }, sort_key = { Armn = { from = { "ու", "եւ", -- 2 chars "և" -- 1 char }, to = { "ւ", "եվ", "եվ" } }, }, } m["hz"] = { "Herero", 33315, "bnt-swb", "Latn", } m["ia"] = { "Interlingua", 35934, "art", "Latn", } m["id"] = { "Indonesian", 9240, "poz-mly", "Latn", ancestors = "ms", standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" .. c.punc, } m["ie"] = { "Interlingue", 35850, "art", "Latn", type = "appendix-constructed", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ}, } m["ig"] = { "Igbo", 33578, "alv-igb", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron}, sort_key = { from = {"gb", "gh", "gw", "ị", "kp", "kw", "ṅ", "nw", "ny", "ọ", "sh", "ụ"}, to = {"g" .. p[1], "g" .. p[2], "g" .. p[3], "i" .. p[1], "k" .. p[1], "k" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "o" .. p[1], "s" .. p[1], "u" .. p[1]} }, } m["ii"] = { "Nuosu", 34235, "tbq-nlo", "Yiii", translit = "ii-translit", } m["ik"] = { "Inupiaq", 27183, "esx-inu", "Latn", sort_key = { from = { "ch", "ġ", "dj", "ḷ", "ł̣", "ñ", "ng", "r̂", "sr", "zr", -- 2 chars "ł", "ŋ", "ʼ" -- 1 char }, to = { "c" .. p[1], "g" .. p[1], "h" .. p[1], "l" .. p[1], "l" .. p[3], "n" .. p[1], "n" .. p[2], "r" .. p[1], "s" .. p[1], "z" .. p[1], "l" .. p[2], "n" .. p[2], "z" .. p[2] } }, } m["io"] = { "Ido", 35224, "art", "Latn", } m["is"] = { "Icelandic", 294, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "é", "í", "ó", "ú", "ý", "þ", "æ", "ö"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaÁáBbDdÐðEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvXxYyÝýÞþÆæÖö" .. c.punc, } m["it"] = { "Italian", 652, "roa-itr", "Latn", ancestors = "roa-oit", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove}, standard_chars = "AaÀàBbCcDdEeÈèÉéFfGgHhIiÌìLlMmNnOoÒòPpQqRrSsTtUuÙùVvZz" .. c.punc, } m["iu"] = { "Inuktitut", 29921, "esx-inu", "Cans, Latn", translit = { Cans = "cr-translit" }, override_translit = true, } m["ja"] = { "Japanese", 5287, "jpx", "Jpan, Latn, Brai", ancestors = "ja-ear", translit = s["jpx-translit"], link_tr = true, display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["jv"] = { "Javanese", 33549, "poz", "Latn, Java, Arab", ancestors = "kaw", translit = { Java = "jv-translit" }, link_tr = true, strip_diacritics = { Latn = {remove_diacritics = c.circ} -- Modern jv don't use ê }, sort_key = { Latn = { from = {"å", "dh", "é", "è", "ng", "ny", "th"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "n" .. p[2], "t" .. p[1]} }, }, } m["ka"] = { "Georgian", 8108, "ccs-gzn", "Geor, Geok, Hebr", -- Hebr is used to write Judeo-Georgian ancestors = "ka-mid", -- Geor, Geok translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Geor = s["ka-stripdiacritics"], Geok = s["ka-stripdiacritics"], }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["kg"] = { "Kongo", 33702, "bnt-kng", "Latn", } m["ki"] = { "Kikuyu", 33587, "bnt-kka", "Latn", } m["kj"] = { "Kwanyama", 1405077, "bnt-ova", "Latn", } m["kk"] = { "Kazakh", 9252, "trk-kno", "Cyrl, Latn, kk-Arab", translit = { Cyrl = { from = { "Ё", "ё", "Й", "й", "Нг", "нг", "Ӯ", "ӯ", -- 2 chars; are "Ӯ" and "ӯ" actually used? "А", "а", "Ә", "ә", "Б", "б", "В", "в", "Г", "г", "Ғ", "ғ", "Д", "д", "Е", "е", "Ж", "ж", "З", "з", "И", "и", "К", "к", "Қ", "қ", "Л", "л", "М", "м", "Н", "н", "Ң", "ң", "О", "о", "Ө", "ө", "П", "п", "Р", "р", "С", "с", "Т", "т", "У", "у", "Ұ", "ұ", "Ү", "ү", "Ф", "ф", "Х", "х", "Һ", "һ", "Ц", "ц", "Ч", "ч", "Ш", "ш", "Щ", "щ", "Ъ", "ъ", "Ы", "ы", "І", "і", "Ь", "ь", "Э", "э", "Ю", "ю", "Я", "я", -- 1 char }, to = { "E", "e", "İ", "i", "Ñ", "ñ", "U", "u", "A", "a", "Ä", "ä", "B", "b", "V", "v", "G", "g", "Ğ", "ğ", "D", "d", "E", "e", "J", "j", "Z", "z", "İ", "i", "K", "k", "Q", "q", "L", "l", "M", "m", "N", "n", "Ñ", "ñ", "O", "o", "Ö", "ö", "P", "p", "R", "r", "S", "s", "T", "t", "U", "u", "Ū", "ū", "Ü", "ü", "F", "f", "X", "x", "H", "h", "S", "s", "Ç", "ç", "Ş", "ş", "Ş", "ş", "", "", "Y", "y", "I", "ı", "", "", "É", "é", "Ü", "ü", "Ä", "ä", } } }, -- override_translit = true, sort_key = { Cyrl = { from = {"ә", "ғ", "ё", "қ", "ң", "ө", "ұ", "ү", "һ", "і"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "у" .. p[2], "х" .. p[1], "ы" .. p[1]} }, }, standard_chars = { Cyrl = "АаӘәБбВвГгҒғДдЕеЁёЖжЗзИиЙйКкҚқЛлМмНнҢңОоӨөПпРрСсТтУуҰұҮүФфХхҺһЦцЧчШшЩщЪъЫыІіЬьЭэЮюЯя", c.punc }, } m["kl"] = { "Greenlandic", 25355, "esx-inu", "Latn", sort_key = { from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } } m["km"] = { "Khmer", 9205, "mkh-kmr", "Khmr", ancestors = "xhm", translit = "km-translit", } m["kn"] = { "Kannada", 33673, "dra-kan", "Knda, Tutg", ancestors = "dra-mkn", -- Knda translit in [[Module:scripts/data]] } m["ko"] = { "Korean", 9176, "qfa-kor", "Kore, Brai", ancestors = "ko-ear", translit = { Kore = "ko-translit", }, -- Kore strip_diacritics in [[Module:scripts/data]] } m["kr"] = { "Kanuri", 36094, "ssa-sah", "Latn, Arab", -- the sortkey and strip_diacritics are only for standard Kanuri; when dialectal entries get added, someone will have to work out how the dialects should be represented orthographically strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.breve} }, sort_key = { Latn = { from = {"ǝ", "ny", "ɍ", "sh"}, to = {"e" .. p[1], "n" .. p[1], "r" .. p[1], "s" .. p[1]} }, }, } m["ks"] = { "Kashmiri", 33552, "inc-kas", "ks-Arab, Deva, Shrd, Latn", translit = { ["ks-Arab"] = "ks-Arab-translit", Deva = "ks-Deva-translit", -- Shrd translit in [[Module:scripts/data]] }, } -- "kv" is treated as "koi", "kpv", see [[WT:LT]] m["kw"] = { "Cornish", 25289, "cel-brs", "Latn", ancestors = "cnx", sort_key = { from = {"ch"}, to = {"c" .. p[1]} }, } m["ky"] = { "Kyrgyz", 9255, "trk-kkp", "Cyrl, Latn, Arab", translit = { Cyrl = "ky-translit" }, override_translit = true, sort_key = { Cyrl = { from = {"ё", "ң", "ө", "ү"}, to = {"е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, } m["la"] = { "Latin", 397, "itc-laf", "Latn, Ital", ancestors = "itc-ola", -- Ital translit in [[Module:scripts/data]] (NOTE: formerly not present, probably an accidental omission) display_text = { Latn = s["itc-Latn-displaytext"] }, strip_diacritics = { Latn = s["itc-Latn-stripdiacritics"] }, sort_key = { Latn = s["itc-Latn-sortkey"] }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiLlMmNnOoPpQqRrSsTtUuVvXx", c.punc }, } m["lb"] = { "Luxembourgish", 9051, "gmw-hgm", "Latn, Brai", ancestors = "gmw-cfr", sort_key = { Latn = { from = {"ä", "ë", "é"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, }, } m["lg"] = { "Luganda", 33368, "bnt-nyg", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ŋ"}, to = {"n" .. p[1]} }, } m["li"] = { "Limburgish", 102172, "gmw-frk", "Latn", ancestors = "dum", } m["ln"] = { "Lingala", 36217, "bnt-bmo", "Latn", sort_key = { remove_diacritics = c.acute .. c.circ .. c.caron, from = {"ɛ", "gb", "mb", "mp", "nd", "ng", "nk", "ns", "nt", "ny", "nz", "ɔ"}, to = {"e" .. p[1], "g" .. p[1], "m" .. p[1], "m" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "n" .. p[4], "n" .. p[5], "n" .. p[6], "n" .. p[7], "o" .. p[1]} }, } m["lo"] = { "Lao", 9211, "tai-swe", "Laoo", -- also Tai Noi/Lao Buhan script translit = "lo-translit", sort_key = "Laoo-sortkey", standard_chars = "0-9ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯ-ໝ" .. c.punc, } m["lt"] = { "Lithuanian", 9083, "bat-eas", "Latn", ancestors = "olt", display_text = "lt-common", strip_diacritics = "lt-common", sort_key = "lt-common", standard_chars = "AaĄąBbCcČčDdEeĘęĖėFfGgHhIiĮįYyJjKkLlMmNnOoPpRrSsŠšTtUuŲųŪūVvZzŽž" .. c.punc, } m["lu"] = { "Luba-Katanga", 36157, "bnt-lub", "Latn", } m["lv"] = { "Latvian", 9078, "bat-eas", "Latn", strip_diacritics = { -- This attempts to convert vowels with tone marks to vowels either with or without macrons. Specifically, there should be no macrons if the vowel is part of a diphthong (including resonant diphthongs such pìrksts -> pirksts not #pīrksts). What we do is first convert the vowel + tone mark to a vowel + tilde in a decomposed fashion, then remove the tilde in diphthongs, then convert the remaining vowel + tilde sequences to macroned vowels, then delete any other tilde. We leave already-macroned vowels alone: Both e.g. ar and ār occur before consonants. FIXME: This still might not be sufficient. from = {"([Ee])" .. c.cedilla, "[" .. c.grave .. c.circ .. c.tilde .."]", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .. "?([^aAeEiIoOuU])", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .."?$", "([iI])" .. c.tilde .. "?([eE])" .. c.tilde .. "?", "([aAeEiIuU])" .. c.tilde, c.tilde}, to = {"%1", c.tilde, "%1%2%3", "%1%2", "%1%2", "%1" .. c.macron} }, sort_key = { from = {"ā", "č", "ē", "ģ", "ī", "ķ", "ļ", "ņ", "š", "ū", "ž"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1]} }, standard_chars = "AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽž" .. c.punc, } m["mg"] = { "Malagasy", 7930, "poz-bre", "Latn, Arab", } m["mh"] = { "Marshallese", 36280, "poz-mic", "Latn", sort_key = { from = {"ā", "ļ", "m̧", "ņ", "n̄", "o̧", "ō", "ū"}, to = {"a" .. p[1], "l" .. p[1], "m" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "u" .. p[1]} }, } m["mi"] = { "Māori", 36451, "poz-pep", "Latn", sort_key = { remove_diacritics = c.macron, from = {"ng", "wh"}, to = {"n" .. p[1], "w" .. p[1]} }, } m["mk"] = { "Macedonian", 9296, "zls", "Cyrl, Polyt", ancestors = "cu", translit = { Cyrl = "mk-translit", -- FIXME: formerly no translit specified for Polyt; unclear if the default [[Module:grc-translit]] is -- acceptable, so we disable it for now Polyt = false, }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, remove_exceptions = {"Ѓ", "ѓ", "Ќ", "ќ"} }, }, sort_key = { Cyrl = { remove_diacritics = c.grave, remove_exceptions = {"ѓ", "ќ"}, from = {"ѓ", "ѕ", "ј", "љ", "њ", "ќ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Cyrl = "АаБбВвГгДдЃѓЕеЖжЗзЅѕИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЌќУуФфХхЦцЧчЏџШш", c.punc }, } m["ml"] = { "Malayalam", 36236, "dra-mal", "Mlym", override_translit = true, -- Mlym translit in [[Module:scripts/data]] } m["mn"] = { "Mongolian", 9246, "xgn-cen", "Cyrl, Mong, Latn, Brai", ancestors = "cmg", translit = { Cyrl = "mn-translit", -- Mong translit in [[Module:scripts/data]] }, override_translit = true, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] strip_diacritics = { Cyrl = {remove_diacritics = c.grave .. c.acute}, }, sort_key = { Cyrl = { remove_diacritics = c.grave, from = {"ё", "ө", "ү"}, to = {"е" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйЛлМмНнОоӨөРрСсТтУуҮүХхЦцЧчШшЫыЬьЭэЮюЯя—", Brai = c.braille, c.punc }, } -- "mo" is treated as "ro", see [[WT:LT]] m["mr"] = { "Marathi", 1571, "inc-sou", "Deva, Modi", ancestors = "omr", translit = { Deva = "mr-translit", Modi = "mr-Modi-translit", }, strip_diacritics = { Deva = { from = {"च़", "ज़", "झ़"}, to = {"च", "ज", "झ"} }, }, } m["ms"] = { "Malay", 9237, "poz-mly", "Latn, ms-Arab", ancestors = "ms-cla", standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", c.punc }, } m["mt"] = { "Maltese", 9166, "sem-arb", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { from = {"’"}, to = {"'"}, }, ancestors = "sqr", sort_key = { from = { "ċ", "ġ", "ż", -- Convert into PUA so that decomposed form does not get caught by the next step. "([cgz])", -- Ensure "c" comes after "ċ", "g" comes after "ġ" and "z" comes after "ż". "g" .. p[1] .. "ħ", -- "għ" after initial conversion of "g". p[3], p[4], "ħ", "ie", p[5] -- Convert "ċ", "ġ", "ħ", "ie", "ż" into final output. }, to = { p[3], p[4], p[5], "%1" .. p[1], "g" .. p[2], "c", "g", "h" .. p[1], "i" .. p[1], "z" } }, } m["my"] = { "Burmese", 9228, "tbq-brm", "Mymr", ancestors = "obr", translit = "my-translit", override_translit = true, sort_key = { from = {"ျ", "ြ", "ွ", "ှ", "ဿ"}, to = {"္ယ", "္ရ", "္ဝ", "္ဟ", "သ္သ"} }, } m["na"] = { "Nauruan", 13307, "poz-mic", "Latn", } m["nb"] = { "Norwegian Bokmål", 25167, "gmq", "Latn", wikimedia_codes = "no", ancestors = "gmq-mno, da", -- da as an (but not the) ancestor of nb was agreed on - do not change without discussion sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nd"] = { "Northern Ndebele", 35613, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["ne"] = { "Nepali", 33823, "inc-pah", "Deva, Newa", translit = { Deva = "ne-translit" }, } m["ng"] = { "Ndonga", 33900, "bnt-ova", "Latn", } m["nl"] = { "Dutch", 7411, "gmw-frk", "Latn, Brai", ancestors = "dum", sort_key = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'"}, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÄäËëÏïÖöÜü", Brai = c.braille, c.punc }, } m["nn"] = { "Norwegian Nynorsk", 25164, "gmq-wes", "Latn", ancestors = "gmq-mno", strip_diacritics = { remove_diacritics = c.grave .. c.acute, }, sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["no"] = { "Norwegian", 9043, "gmq-wes", "Latn", ancestors = "gmq-mno", sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nr"] = { "Southern Ndebele", 36785, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["nv"] = { "Navajo", 13310, "apa", "Latn, Brai", sort_key = { remove_diacritics = c.acute .. c.ogonek, from = { "chʼ", "tłʼ", "tsʼ", -- 3 chars "ch", "dl", "dz", "gh", "hw", "kʼ", "kw", "sh", "tł", "ts", "zh", -- 2 chars "ł", "ʼ" -- 1 char }, to = { "c" .. p[2], "t" .. p[2], "t" .. p[4], "c" .. p[1], "d" .. p[1], "d" .. p[2], "g" .. p[1], "h" .. p[1], "k" .. p[1], "k" .. p[2], "s" .. p[1], "t" .. p[1], "t" .. p[3], "z" .. p[1], "l" .. p[1], "z" .. p[2] } }, } m["ny"] = { "Chichewa", 33273, "bnt-nys", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ng'"}, to = {"ng"} }, } m["oc"] = { "Occitan", 14185, "roa-ocr", "Latn, Hebr", ancestors = "pro", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla, from = {"([lns])·h"}, to = {"%1h"} }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["oj"] = { "Ojibwe", 33875, "alg", "Cans, Latn", sort_key = { Latn = { from = {"aa", "ʼ", "ii", "oo", "sh", "zh"}, to = {"a" .. p[1], "h" .. p[1], "i" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1]} }, }, } m["om"] = { "Oromo", 33864, "cus-eas", "Latn, Ethi", } m["or"] = { "Odia", 33810, "inc-eas", "Orya", ancestors = "inc-mor", translit = "or-translit", } m["os"] = { "Ossetian", 33968, "xsc-sar", "Cyrl, Geor, Latn", ancestors = "oos", translit = { Cyrl = "os-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = { from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, sort_key = { Cyrl = { from = {"ӕ", "гъ", "дж", "дз", "ё", "къ", "пъ", "тъ", "хъ", "цъ", "чъ"}, to = {"а" .. p[1], "г" .. p[1], "д" .. p[1], "д" .. p[2], "е" .. p[1], "к" .. p[1], "п" .. p[1], "т" .. p[1], "х" .. p[1], "ц" .. p[1], "ч" .. p[1]} }, }, } m["pa"] = { "Punjabi", 58635, "inc-pan", "Guru, pa-Arab", translit = { Guru = "Guru-translit", ["pa-Arab"] = "pa-Arab-translit", }, strip_diacritics = { ["pa-Arab"] = { remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna, from = {"ݨ", "ࣇ"}, to = {"ن", "ل"} }, }, } m["pi"] = { "Pali", 36727, "inc-mid", "Latn, Brah, Deva, Beng, Sinh, Mymr, Thai, Lana, Laoo, Khmr, Cakm", --and also Khom ancestors = "sa", translit = { -- Brah translit in [[Module:scripts/data]] Deva = "sa-translit", Beng = "pi-translit", Sinh = "si-translit", Mymr = "pi-translit", Thai = "pi-translit", Lana = "pi-translit", Laoo = "pi-translit", Khmr = "pi-translit", Cakm = "Cakm-translit", }, strip_diacritics = { Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, Mymr = { remove_diacritics = c.VS01, }, }, sort_key = { -- FIXME: This needs to be converted into the current standardized format. from = {"ā", "ī", "ū", "ḍ", "ḷ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṭ", "ॐ", "([เโ])([ก-ฮ])", "([ເໂ])([ກ-ຮ])", "ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ", u(0xFE00), u(0x200D)}, to = {"a~", "i~", "u~", "d~", "l~", "m~", "n~", "n~~", "n~~~", "t~", "ओँ", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"} }, } m["pl"] = { "Polish", 809, "zlw-lch", "Latn", ancestors = "zlw-mpl", sort_key = { from = {"ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻż" .. c.punc, } m["ps"] = { "Pashto", 58680, "ira-pat", "ps-Arab", strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.zwarakay .. c.superalef}, } m["pt"] = { "Portuguese", 5146, "roa-gap", "Latn, Brai", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "º", "œ"}, to = {"a", "ae", "o", "oe"} }, }, standard_chars = { Latn = "AaÁáÂâÃãBbCcÇçDdEeÉéÊêFfGgHhIiÍíJjLlMmNnOoÓóÔôÕõPpQqRrSsTtUuÚúVvXxZz", Brai = c.braille, c.punc }, } m["qu"] = { "Quechua", 5218, "qwe", "Latn", } m["rm"] = { "Romansh", 13199, "roa-rhe", ancestors = "rm-old", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.small_e}, } m["ro"] = { "Romanian", 7913, "roa-eas", "Latn, Cyrl, Cyrs", translit = { Cyrl = "ro-translit" }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute, from = {"ă", "â", "î", "ș", "ț"}, to = {"a" .. p[1], "a" .. p[2], "i" .. p[1], "s" .. p[1], "t" .. p[1]} }, Cyrl = { from = {"ӂ"}, to = {"ж" .. p[1]} }, }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]]; presumably not present standard_chars = { Latn = "AaĂăÂâBbCcDdEeFfGgHhIiÎîJjLlMmNnOoPpRrSsȘșTtȚțUuVvXxZz", Cyrl = "АаБбВвГгДдЕеЖжӁӂЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЫыЬьЭэЮюЯя", c.punc }, } m["ru"] = { "Russian", 7737, "zle", "Cyrl, Brai", ancestors = "zle-mru", translit = { Cyrl = "ru-translit" }, display_text = { Cyrl = { from = {"'"}, to = {"’"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"}, from = {"’"}, to = {"'"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, from = { "і", "ѣ", "ѳ", "ѵ" }, to = { "и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3] } }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя—", Brai = c.braille, (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["rw"] = { "Rwanda-Rundi", 3217514, "bnt-glb", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ .. c.macron .. c.caron}, } m["sa"] = { "Sanskrit", 11059, "inc", "as-Beng, Bali, Beng, Bhks, Brah, Mymr, xwo-Mong, Deva, Gujr, Guru, Gran, Hani, Java, Kthi, Knda, Kawi, Khar, Khmr, Laoo, Mlym, mnc-Mong, Marc, Modi, Mong, Nand, Newa, Orya, Phag, Ranj, Saur, Shrd, Sidd, Sinh, Soyo, Lana, Takr, Taml, Tang, Telu, Thai, Tibt, Tutg, Tirh, Zanb", --and also Khom; script codes sorted by canonical name rather than code for [[MOD:sa-convert]] translit = { Beng = "sa-Beng-translit", ["as-Beng"] = "sa-Beng-translit", -- Brah translit in [[Module:scripts/data]] Deva = "sa-translit", Gujr = "sa-Gujr-translit", Guru = "sa-Guru-translit", Java = "sa-Java-translit", Kthi = "sa-Kthi-translit", Khmr = "pi-translit", Knda = "sa-Knda-translit", Lana = "pi-translit", Laoo = "pi-translit", Mlym = "sa-Mlym-translit", Modi = "sa-Modi-translit", -- Mong, mnc-Mong, xwo-Mong translit in [[Module:scripts/data]] -- NOTE: Formerly used xal-translit for transliterating xwo-Mong but that only handles Cyrillic; it has -- code to transliterate xwo-Mong but it's broken so I've replaced it with the default xwo-translit. Mymr = "pi-translit", Orya = "sa-Orya-translit", -- Shrd translit in [[Module:scripts/data]] -- Sidd translit in [[Module:scripts/data]] Sinh = "si-translit", Taml = "sa-Taml-translit", Telu = "sa-Telu-translit", Thai = "pi-translit", -- Tibt translit in [[Module:scripts/data]] }, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] -- Tibt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Deva = s["sa-Deva-stripdiacritics"], Mymr = { remove_diacritics = c.VS01, }, Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, }, sort_key = { Deva = s["sa-Deva-stripdiacritics"], -- until we have a proper Sanskrit sorting algorithm. Lana = { -- Tai Tham from = {"ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ"}, to = {"ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}, }, Laoo = "Laoo-sortkey", Latn = { from = {"ā", "ī", "ū", "ḍ", "ḷ", "ḹ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṛ", "ṝ", "ś", "ṣ", "ṭ"}, to = {"a~", "i~", "u~", "d~", "l~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~"}, }, Mymr = { remove_diacritics = c.VS01, }, Thai = "Thai-sortkey", -- FIXME: The previous sort key which mixed all scripts removed ZWJ; I don't know which script(s) this was -- intended for and there are no other languages which remove it in the sort key AFAIK. If it needs to be -- removed, specify the script(s) it needs to be removed under or add handling for the "all" script that applies -- regardless of script. --all = { -- remove_diacritics = c.ZWJ, --}, }, } m["sc"] = { "Sardinian", 33976, "roa-sou", "Latn", ancestors = "sc-old", } m["sd"] = { "Sindhi", 33997, "inc-snd", "sd-Arab, Deva, Sind, Khoj", translit = { Sind = "Sind-translit", ["sd-Arab"] = "sd-Arab-translit" }, strip_diacritics = { ["sd-Arab"] = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {"ٱ"}, to = {"ا"} }, }, } m["se"] = { "Northern Sami", 33947, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. c.dotbelow .. "'ˈ"}, sort_key = { from = {"á", "č", "đ", "ŋ", "š", "ŧ", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "n" .. p[1], "s" .. p[1], "t" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĐđEeFfGgHhIiJjKkLlMmNnŊŋOoPpRrSsŠšTtŦŧUuVvZzŽž" .. c.punc, } m["sg"] = { "Sango", 33954, "crp", "Latn", ancestors = "ngb", } m["sh"] = { "Serbo-Croatian", 9301, "zls", "Latn, Cyrl, Glag, Arab", ietf_subtag = "hbs", -- ISO 639-3 code, since "sh" is deprecated from ISO 639-1 wikimedia_codes = "sh, bs, hr, sr", strip_diacritics = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"Ć", "ć", "Ś", "ś", "Ź", "ź"} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"З́", "з́", "С́", "с́"} }, }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"ć", "ś", "ź"}, from = {"č", "ć", "dž", "đ", "lj", "nj", "š", "ś", "ž", "ź"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "z" .. p[1], "z" .. p[2]} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"з́", "с́"}, from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, standard_chars = { Latn = "AaBbCcČčĆćDdĐđEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž", Cyrl = "АаБбВвГгДдЂђЕеЖжЗзИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЋћУуФфХхЦцЧчЏџШш", c.punc }, } m["si"] = { "Sinhalese", 13267, "inc-ins", "Sinh", translit = "si-translit", override_translit = true, } m["sk"] = { "Slovak", 9058, "zlw", "Latn", ancestors = "zlw-osk", sort_key = {remove_diacritics = c.acute .. c.circ .. c.diaer .. c.caron}, standard_chars = "AaÁáÄäBbCcČčDdĎďEeÉéFfGgHhIiÍíJjKkLlĹ弾MmNnŇňOoÓóÔôPpRrŔŕSsŠšTtŤťUuÚúVvYyÝýZzŽž" .. c.punc, } m["sl"] = { "Slovene", 9063, "zls", "Latn", strip_diacritics = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow, remove_exceptions = {"Ć", "ć", "Ǵ", "ǵ", "Ś", "ś", "Ź", "ź"}, from = {"Ə", "ə", "Ł", "ł"}, to = {"E", "e", "L", "l"}, }, sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dotabove .. c.ringabove .. c.dgrave .. c.invbreve .. c.dotbelow .. c.ringbelow .. c.ogonek, remove_exceptions = {"ć", "ǵ", "ś", "ź"}, from = {"ä", "č", "ć", "đ", "ə", "ë", "ǧ", "ǵ", "ï", "ł", "ö", "š", "ś", "ü", "ž", "ź"}, to = {"a" .. p[1], "c" .. p[1], "c" .. p[2], "d" .. p[1], "e", "e" .. p[1], "g" .. p[1], "g" .. p[2], "i" .. p[1], "l", "o" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]}, }, standard_chars = "AaBbCcČčDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž" .. c.punc, } m["sm"] = { "Samoan", 34011, "poz-pnp", "Latn", } m["sn"] = { "Shona", 34004, "bnt-sho", "Latn", strip_diacritics = {remove_diacritics = c.acute}, } m["so"] = { "Somali", 13275, "cus-som", "Latn, Arab, Osma", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, } m["sq"] = { "Albanian", 8748, "sqj", "Latn, Grek, ota-Arab, Elba, Todr, Vith", translit = { Elba = "Elba-translit", Vith = "Vith-translit", }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron, from = {'^[ie] (%w)', '^të (%w)'}, to = {'%1', '%1'}, }, }, sort_key = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron .. c.tilde .. c.breve .. c.caron, from = {'^[ie] (%w)', '^të (%w)', 'ç', 'dh', 'ë', 'gj', 'll', 'nj', 'rr', 'sh', 'th', 'xh', 'zh'}, to = {'%1', '%1', 'c'..p[1], 'd'..p[1], 'e'..p[1], 'g'..p[1], 'l'..p[1], 'n'..p[1], 'r'..p[1], 's'..p[1], 't'..p[1], 'x'..p[1], 'z'..p[1]}, } -- TODO: Grek if the default sort key is unsuitable }, standard_chars = { Latn = "AaBbCcÇçDdEeËëFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz", c.punc }, } m["ss"] = { "Swazi", 34014, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["st"] = { "Sotho", 34340, "bnt-sts", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["su"] = { "Sundanese", 34002, "poz-msa", "Latn, Sund, Arab", ancestors = "osn", translit = { Sund = "Sund-translit" }, } m["sv"] = { "Swedish", 9027, "gmq-eas", "Latn", ancestors = "gmq-osw-lat", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla .. "':", remove_exceptions = {"å"}, from = {"ø", "æ", "œ", "ß", "å", "aͤ", "oͤ"}, to = {"ö", "ae", "oe", "ss", "z" .. p[1], "ä", "ö"} }, standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvXxYyÅåÄäÖö" .. c.punc, } m["sw"] = { "Swahili", 7838, "bnt-swh", "Latn, Arab", sort_key = { Latn = { from = {"ng'"}, to = {"ng" .. p[1]} }, }, } m["ta"] = { "Tamil", 5885, "dra-tam", "Taml", ancestors = "ta-mid", translit = "ta-translit", override_translit = true, } m["te"] = { "Telugu", 8097, "dra-tel", "Telu", translit = "te-translit", override_translit = true, } m["tg"] = { "Tajik", 9260, "ira-swi", "Cyrl, fa-Arab, Latn", ancestors = "fa-cls", translit = { Cyrl = "tg-translit" }, override_translit = true, strip_diacritics = { Cyrl = s["tg-stripdiacritics"], Latn = s["tg-stripdiacritics"], }, sort_key = { Cyrl = { from = {"ғ", "ё", "ӣ", "қ", "ӯ", "ҳ", "ҷ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "к" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["th"] = { "Thai", 9217, "tai-swe", "Thai, Khomt, Brai", translit = { Thai = "th-translit" }, sort_key = { Thai = "Thai-sortkey" }, } m["ti"] = { "Tigrinya", 34124, "sem-eth", "Ethi", translit = "Ethi-translit", } m["tk"] = { "Turkmen", 9267, "trk-ogz", "Latn, Cyrl, Arab", strip_diacritics = { Latn = s["tk-stripdiacritics"], Cyrl = s["tk-stripdiacritics"], }, sort_key = { Latn = { from = {"ç", "ä", "ž", "ň", "ö", "ş", "ü", "ý"}, to = {"c" .. p[1], "e" .. p[1], "j" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "y" .. p[1]} }, Cyrl = { from = {"ё", "җ", "ң", "ө", "ү", "ә"}, to = {"е" .. p[1], "ж" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "э" .. p[1]} }, }, ancestors = "trk-eog", } m["tl"] = { "Tagalog", 34057, "phi", "Latn, Tglg", translit = { Tglg = "tl-translit" }, override_translit = true, strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, standard_chars = { Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy", c.punc }, sort_key = { Latn = "tl-sortkey", }, } m["tn"] = { "Tswana", 34137, "bnt-sts", "Latn", } m["to"] = { "Tongan", 34094, "poz-ton", "Latn", strip_diacritics = {remove_diacritics = c.acute}, sort_key = {remove_diacritics = c.macron}, } m["tr"] = { "Turkish", 256, "trk-ogz", "Latn", ancestors = "ota", dotted_dotless_i = true, sort_key = { from = { -- Ignore circumflex, but account for capital Î wrongly becoming ı + circ due to dotted dotless I logic. "ı" .. c.circ, c.circ, "i", -- Ensure "i" comes after "ı". "ç", "ğ", "ı", "ö", "ş", "ü" }, to = { "i", "", "i" .. p[1], "c" .. p[1], "g" .. p[1], "i", "o" .. p[1], "s" .. p[1], "u" .. p[1] } }, standard_chars = "AaÂâBbCcÇçDdEeFfGgĞğHhIıİiÎîJjKkLlMmNnOoÖöPpRrSsŞşTtUuÛûÜüVvYyZz" .. c.punc, } m["ts"] = { "Tsonga", 34327, "bnt-tsr", "Latn", } m["tt"] = { "Tatar", 25285, "trk-kbu", "Cyrl, Latn, tt-Arab", translit = { Cyrl = "tt-translit", ["tt-Arab"] = "tt-translit" }, --override_translit = true, -- enable override until Module code can detect Russian loans such as [[аэропорт]] dotted_dotless_i = true, sort_key = { Cyrl = { from = {"ә", "ў", "ғ", "ё", "җ", "қ", "ң", "ө", "ү", "һ"}, to = {"а" .. p[1], "в" .. p[1], "г" .. p[1], "е" .. p[1], "ж" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1]} }, Latn = { from = { "i", -- Ensure "i" comes after "ı". "ä", "ə", "ç", "ğ", "ı", "ñ", "ŋ", "ö", "ɵ", "ş", "ü" }, to = { "i" .. p[1], "a" .. p[1], "a" .. p[2], "c" .. p[1], "g" .. p[1], "i", "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "s" .. p[1], "u" .. p[1] } }, }, } -- "tw" is treated as "ak", see [[WT:LT]] m["ty"] = { "Tahitian", 34128, "poz-pep", "Latn", } m["ug"] = { "Uyghur", 13263, "trk-kar", "ug-Arab, Latn, Cyrl", ancestors = "chg", translit = { ["ug-Arab"] = "ug-translit", Cyrl = "ug-translit", }, override_translit = true, } m["uk"] = { "Ukrainian", 8798, "zle", "Cyrl", ancestors = "zle-muk", translit = "uk-translit", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, sort_key = { remove_diacritics = c.grave .. c.acute, from = { "ї", -- 2 chars "ґ", "є", "і" -- 1 char }, to = { "и" .. p[2], "г" .. p[1], "е" .. p[1], "и" .. p[1] } }, standard_chars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["ur"] = { "Urdu", 1617, "inc-hnd", "ur-Arab, Hebr", translit = { ["ur-Arab"] = "ur-translit" }, strip_diacritics = { ["ur-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ۂ", "ٱ"}, to = {"ہ", "ہ", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { ["ur-Arab"] = "ایببپتثجچحخدذرزژسشصضطظعغفقکگلࣇڷمنݨوؤہھئٹڈڑآے", c.punc, }, } m["uz"] = { "Uzbek", 9264, "trk-kar", "Latn, Cyrl, fa-Arab", ancestors = "chg", translit = { Cyrl = "uz-translit" }, sort_key = { Latn = { from = {"oʻ", "gʻ", "sh", "ch", "ng"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3], "z" .. p[4], "z" .. p[5]} }, Cyrl = { from = {"ё", "ў", "қ", "ғ", "ҳ"}, to = {"е" .. p[1], "я" .. p[1], "я" .. p[2], "я" .. p[3], "я" .. p[4]} }, }, strip_diacritics = { ["fa-Arab"] = "ar-stripdiacritics", }, } m["ve"] = { "Venda", 32704, "bnt-bso", "Latn", } m["vi"] = { "Vietnamese", 9199, "mkh-vie", "Latn, Hani", ancestors = "mkh-mvi", sort_key = { Latn = "vi-sortkey", Hani = "Hani-sortkey", }, } m["vo"] = { "Volapük", 36986, "art", "Latn", } m["wa"] = { "Walloon", 34219, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["wo"] = { "Wolof", 34257, "alv-fwo", "Latn, Arab, Gara", } m["xh"] = { "Xhosa", 13218, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["yi"] = { "Yiddish", 8641, "gmw-hgm", "Hebr, Latn", ancestors = "gmh", translit = { Hebr = "yi-translit", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["yo"] = { "Yoruba", 34311, "alv-yor", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.macron} }, sort_key = { Latn = { from = {"ẹ", "ɛ", "gb", "ị", "kp", "ọ", "ɔ", "ṣ", "sh", "ụ"}, to = {"e" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "o" .. p[1], "o" .. p[1], "s" .. p[1], "s" .. p[1], "u" .. p[1]} }, }, } m["za"] = { "Zhuang", 13216, "tai", "Latn, Hani", sort_key = { Latn = "za-sortkey", Hani = "Hani-sortkey", }, } m["zh"] = { "Chinese", 7850, "zhx", "Hants, Latn, Bopo, Nshu, Brai", ancestors = "ltc", generate_forms = "zh-generateforms", translit = { Hani = "zh-translit", Bopo = "zh-translit", }, sort_key = { Hani = "Hani-sortkey" }, } m["zu"] = { "Zulu", 10179, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } return require("Module:languages").finalizeData(m, "language") 5fa8phvhgeh3ec9j59qc1zn00yjd9wj 235455 235453 2026-06-02T10:44:08Z Pinthura 2424 භාෂා නාම සිංහලට පරිවර්තනය 235455 Scribunto text/plain local m_langdata = require("Module:languages/data") -- Loaded on demand, as it may not be needed (depending on the data). local function u(...) u = require("Module:string utilities").char return u(...) end local c = m_langdata.chars local p = m_langdata.puaChars local s = m_langdata.shared -- Ideally, we want to move these into [[Module:languages/data]], but because (a) it's necessary to use require on that module, and (b) they're only used in this data module, it's less memory-efficient to do that at the moment. If it becomes possible to use mw.loadData, then these should be moved there. s["de-Latn-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove, from = {"æ", "œ", "ß"}, to = {"ae", "oe", "ss"} } s["de-Latn-standardchars"] = "AaÄäBbCcDdEeFfGgHhIiJjKkLlMmNnOoÖöPpQqRrSsẞßTtUuÜüVvWwXxYyZz" s["ka-stripdiacritics"] = {remove_diacritics = c.circ} s["no-sortkey"] = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } s["no-standardchars"] = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc s["sa-Deva-stripdiacritics"] = { -- Don't use remove_diacritics for accent marks, as १ and ३ should also be removed if (and only if) they carry any. from = {"ॐ", "[१३]?[" .. c.anudatta .. c.udatta .. c.dsvarita .. c.tsvarita .. "]+"}, to = {"ओँ"}, } s["tg-stripdiacritics"] = {remove_diacritics = c.grave .. c.acute} s["tk-stripdiacritics"] = {remove_diacritics = c.macron} local m = {} m["aa"] = { "Afar", 27811, "cus-eas", "Latn, Ethi", strip_diacritics = { Latn = {remove_diacritics = c.acute}, }, } m["ab"] = { "Abkhaz", 5111, "cau-abz", "Cyrl, Geor, Latn", translit = { Cyrl = "ab-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, from = {"^а%-"}, to = {"а"}, }, Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = { "х'ә", -- 3 chars "гь", "гә", "ӷь", "ҕь", "ӷә", "ҕә", "дә", "ё", "жь", "жә", "ҙә", "ӡә", "ӡ'", "кь", "кә", "қь", "қә", "ҟь", "ҟә", "ҫә", "тә", "ҭә", "ф'", "хь", "хә", "х'", "ҳә", "ць", "цә", "ц'", "ҵә", "ҵ'", "шь", "шә", "џь", -- 2 chars "ӷ", "ҕ", "ҙ", "ӡ", "қ", "ҟ", "ԥ", "ҧ", "ҫ", "ҭ", "ҳ", "ҵ", "ҷ", "ҽ", "ҿ", "ҩ", "џ", "ә", -- 1 char "^а", }, to = { "х" .. p[4], "г" .. p[1], "г" .. p[2], "г" .. p[5], "г" .. p[6], "г" .. p[7], "г" .. p[8], "д" .. p[1], "е" .. p[1], "ж" .. p[1], "ж" .. p[2], "з" .. p[2], "з" .. p[4], "з" .. p[5], "к" .. p[1], "к" .. p[2], "к" .. p[4], "к" .. p[5], "к" .. p[7], "к" .. p[8], "с" .. p[2], "т" .. p[1], "т" .. p[3], "ф" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[6], "ц" .. p[1], "ц" .. p[2], "ц" .. p[3], "ц" .. p[5], "ц" .. p[6], "ш" .. p[1], "ш" .. p[2], "ы" .. p[3], "г" .. p[3], "г" .. p[4], "з" .. p[1], "з" .. p[3], "к" .. p[3], "к" .. p[6], "п" .. p[1], "п" .. p[2], "с" .. p[1], "т" .. p[2], "х" .. p[5], "ц" .. p[4], "ч" .. p[1], "ч" .. p[2], "ч" .. p[3], "ы" .. p[1], "ы" .. p[2], "ь" .. p[1], "", } }, }, } m["ae"] = { "Avestan", 29572, "ira-cen", "Avst, Gujr, Deva", translit = { Avst = "Avst-translit" }, } m["af"] = { "Afrikaans", 14196, "gmw-frk", "Latn, Arab", ancestors = "nl", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'", from = {"['ʼ]n"}, to = {"n" .. p[1]} } }, } m["ak"] = { "Akan", 28026, "alv-ctn", "Latn", } m["am"] = { "ඇම්හාරික්", 28244, "sem-eth", "Ethi", translit = "Ethi-translit", } m["an"] = { "Aragonese", 8765, "roa-nar", "Latn", } m["ar"] = { "අරාබි", 13955, "sem-arb", "Arab, Hebr, Syrc, Brai, Nbat", translit = { Arab = "ar-translit" }, strip_diacritics = { Arab = "ar-stripdiacritics", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["as"] = { "Assamese", 29401, "inc-bas", "as-Beng", ancestors = "inc-mas", translit = "as-translit", } m["av"] = { "Avar", 29561, "cau-ava", "Cyrl, Latn, Arab", ancestors = "oav", translit = { Cyrl = "cau-nec-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"], }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = {"гъ", "гь", "гӏ", "ё", "кк", "къ", "кь", "кӏ", "лъ", "лӏ", "тӏ", "хх", "хъ", "хь", "хӏ", "цӏ", "чӏ"}, to = {"г" .. p[1], "г" .. p[2], "г" .. p[3], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "к" .. p[4], "л" .. p[1], "л" .. p[2], "т" .. p[1], "х" .. p[1], "х" .. p[2], "х" .. p[3], "х" .. p[4], "ц" .. p[1], "ч" .. p[1]} }, }, } m["ay"] = { "අයිමාරා", 4627, "sai-aym", "Latn", } m["az"] = { "අසර්බයිජානි", 9292, "trk-ogz", "Latn, Cyrl, fa-Arab", ancestors = "trk-oat", dotted_dotless_i = true, strip_diacritics = { Latn = { from = {"ʼ"}, to = {"'"}, }, ["fa-Arab"] = { module = "ar-stripdiacritics", ["from"] = { "ۆ", "ۇ", "وْ", "ڲ", "ؽ", }, ["to"] = { "و", "و", "و", "گ", "ی", }, }, }, display_text = { Latn = { from = {"'"}, to = {"ʼ"} } }, sort_key = { Latn = { from = { "i", -- Ensure "i" comes after "ı". "ç", "ə", "ğ", "x", "ı", "q", "ö", "ş", "ü", "w" }, to = { "i" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "h" .. p[1], "i", "k" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1] } }, Cyrl = { from = {"ғ", "ә", "ы", "ј", "ҝ", "ө", "ү", "һ", "ҹ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "и" .. p[2], "к" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["ba"] = { "Bashkir", 13389, "trk-kbu", "Cyrl", translit = "ba-translit", override_translit = true, sort_key = { from = {"ғ", "ҙ", "ё", "ҡ", "ң", "ө", "ҫ", "ү", "һ", "ә"}, to = {"г" .. p[1], "д" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "с" .. p[1], "у" .. p[1], "х" .. p[1], "э" .. p[1]} }, } m["be"] = { "බෙලරුසියානු", 9091, "zle", "Cyrl, Latn", ancestors = "zle-mbe", translit = { Cyrl = "be-translit", }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"ґ", "ё", "і", "ў"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "у" .. p[1]} }, Latn = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"Ć", "ć", "Ń", "ń", "Ś", "ś", "Ź", "ź"}, from = {"ć", "č", "dz", "dź", "dž", "ch", "ł", "ń", "ś", "š", "ŭ", "ź", "ž"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "d" .. p[3], "h" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзІіЙйКкЛлМмНнОоПпРрСсТтУуЎўФфХхЦцЧчШшЫыЬьЭэЮюЯя", Latn = "AaBbCcĆćČčDdEeFfGgHhIiJjKkLlŁłMmNnŃńOoPpRrSsŚśŠšTtUuŬŭVvYyZzŹźŽž", (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["bg"] = { "බල්ගේරියානු", 7918, "zls", "Cyrl", ancestors = "cu-bgm", translit = "bg-translit", strip_diacritics = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, sort_key = { remove_diacritics = c.grave .. c.acute, remove_exceptions = {"%f[^%z%s]ѝ%f[%z%s]"}, }, standard_chars = "АаБбВвГгДдЕеЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЬьЮюЯя" .. c.punc, } m["bh"] = { "බිහාරී", 135305, "inc-eas", "Deva", } m["bi"] = { "Bislama", 35452, "crp", "Latn", ancestors = "en", } m["bm"] = { "Bambara", 33243, "dmn-emn", "Latn, Nkoo", sort_key = { Latn = { from = {"ɛ", "ɲ", "ŋ", "ɔ"}, to = {"e" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1]} }, }, } m["bn"] = { "බෙංගාලි", 9610, "inc-bas", "Beng, Newa", ancestors = "inc-mbn", translit = { Beng = "bn-translit" }, } m["bo"] = { "ටිබෙට්", 34271, "sit-tib", "Tibt", -- sometimes Deva? ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["br"] = { "බ්‍රෙටන්", 12107, "cel-brs", "Latn", ancestors = "xbm", sort_key = { from = {"ch", "c['ʼ’]h"}, to = {"c" .. p[1], "c" .. p[2]} }, } m["ca"] = { "Catalan", 7026, "roa-ocr", "Latn", ancestors = "roa-oca", sort_key = {remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla .. "·"}, standard_chars = "AaÀàBbCcÇçDdEeÉéÈèFfGgHhIiÍíÏïJjLlMmNnOoÓóÒòPpQqRrSsTtUuÚúÜüVvXxYyZz·" .. c.punc, } m["ce"] = { "Chechen", 33350, "cau-vay", "Cyrl, Latn, Arab", translit = { Cyrl = "cau-nec-translit", Arab = "ar-translit", }, override_translit = true, display_text = { Cyrl = s["cau-Cyrl-displaytext"] }, strip_diacritics = { Cyrl = s["cau-Cyrl-stripdiacritics"], Latn = s["cau-Latn-stripdiacritics"], }, sort_key = { Cyrl = { from = {"аь", "гӏ", "ё", "кх", "къ", "кӏ", "оь", "пӏ", "тӏ", "уь", "хь", "хӏ", "цӏ", "чӏ", "юь", "яь"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "к" .. p[2], "к" .. p[3], "о" .. p[1], "п" .. p[1], "т" .. p[1], "у" .. p[1], "х" .. p[1], "х" .. p[2], "ц" .. p[1], "ч" .. p[1], "ю" .. p[1], "я" .. p[1]} }, }, } m["ch"] = { "Chamorro", 33262, "poz", "Latn", sort_key = { remove_diacritics = "'", from = {"å", "ch", "ñ", "ng"}, to = {"a" .. p[1], "c" .. p[1], "n" .. p[1], "n" .. p[2]} }, } m["co"] = { "Corsican", 33111, "roa-itr", "Latn", sort_key = { from = {"chj", "ghj", "sc", "sg"}, to = {"c" .. p[1], "g" .. p[1], "s" .. p[1], "s" .. p[2]} }, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìÏïJjLlMmNnOoÒòPpQqRrSsTtUuÙùÜüVvZz" .. c.punc, } m["cr"] = { "Cree", 33390, "alg", "Latn, Cans", translit = { Cans = "cr-translit" }, } m["cs"] = { "චෙක්", 9056, "zlw", "Latn", ancestors = "cs-ear", sort_key = { from = {"á", "č", "ď", "é", "ě", "ch", "í", "ň", "ó", "ř", "š", "ť", "ú", "ů", "ý", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "h" .. p[1], "i" .. p[1], "n" .. p[1], "o" .. p[1], "r" .. p[1], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "y" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĎďEeÉéĚěFfGgHhIiÍíJjKkLlMmNnŇňOoÓóPpRrŘřSsŠšTtŤťUuÚúŮůVvYyÝýZzŽž" .. c.punc, } m["cu"] = { "Old Church Slavonic", 35499, "zls", "Cyrs, Glag, Zname", translit = { Cyrs = "Cyrs-translit", Glag = "Glag-translit" }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]] } m["cv"] = { "Chuvash", 33348, "trk-ogr", "Cyrl", ancestors = "cv-mid", translit = "cv-translit", override_translit = true, sort_key = { from = {"ӑ", "ё", "ӗ", "ҫ", "ӳ"}, to = {"а" .. p[1], "е" .. p[1], "е" .. p[2], "с" .. p[1], "у" .. p[1]} }, } m["cy"] = { "වේල්ස", 9309, "cel-brw", "Latn", ancestors = "wlm", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. "'", from = {"ch", "dd", "ff", "ng", "ll", "ph", "rh", "th"}, to = {"c" .. p[1], "d" .. p[1], "f" .. p[1], "g" .. p[1], "l" .. p[1], "p" .. p[1], "r" .. p[1], "t" .. p[1]} }, standard_chars = "ÂâAaBbCcDdEeÊêFfGgHhIiÎîLlMmNnOoÔôPpRrSsTtUuÛûWwŴŵYyŶŷ" .. c.punc, } m["da"] = { "ඩෙන්මාර්ක", 9035, "gmq-eas", "Latn", ancestors = "gmq-oda", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla, remove_exceptions = {"å"}, from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÆæØøÅå" .. c.punc, } m["de"] = { "ජර්මානු", 188, "gmw-hgm", "Latn, Latf, Brai", ancestors = "de-ear", sort_key = { Latn = s["de-Latn-sortkey"], Latf = s["de-Latn-sortkey"], }, standard_chars = { Latn = s["de-Latn-standardchars"], Latf = s["de-Latn-standardchars"], Brai = c.braille, c.punc } } m["dv"] = { "දිවෙහි", 32656, "inc-ins", "Thaa, Diak", translit = { Thaa = "dv-translit", Diak = "Diak-translit", }, ancestors = "dv-old", override_translit = true, } m["dz"] = { "Dzongkha", 33081, "sit-tib", "Tibt", ancestors = "xct", override_translit = true, -- Tibt translit, display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ee"] = { "Ewe", 30005, "alv-gbe", "Latn", sort_key = { remove_diacritics = c.tilde, from = {"ɖ", "dz", "ɛ", "ƒ", "gb", "ɣ", "kp", "ny", "ŋ", "ɔ", "ts", "ʋ"}, to = {"d" .. p[1], "d" .. p[2], "e" .. p[1], "f" .. p[1], "g" .. p[1], "g" .. p[2], "k" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "t" .. p[1], "v" .. p[1]} }, } m["el"] = { "ග්‍රීක", 9129, "grk", "Grek, Polyt, Brai", ancestors = "el-kth", translit = "el-translit", override_translit = true, -- Grek and Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Grek = "΅·ͺ΄ΑαΆάΒβΓγΔδΕεέΈΖζΗηΉήΘθΙιΊίΪϊΐΚκΛλΜμΝνΞξΟοΌόΠπΡρΣσςΤτΥυΎύΫϋΰΦφΧχΨψΩωΏώ", Brai = c.braille, c.punc }, } m["en"] = { "ඉංග්‍රීසි", 1860, "gmw-ang", "Latn, Brai, Shaw, Dsrt", -- entries in Shaw or Dsrt might require prior discussion wikimedia_codes = "en, simple", ancestors = "en-ear", sort_key = { Latn = { -- Many of these are needed for sorting language names. remove_diacritics = "'\"%-%.,%s·ʻʼ" .. c.diacritics, -- These are found in pagenames. from = {"[ɒæ🅱¢©ᴄðđəǝɜɡħʜıɨłŋɲøɔœꝑꝓꝕßʋ]"}, to = {{ ["ɒ"] = "a", ["æ"] = "ae", ["🅱"] = "b", ["¢"] = "c", ["©"] = "c", ["ᴄ"] = "c", ["ð"] = "d", ["đ"] = "d", ["ə"] = "e", ["ǝ"] = "e", ["ɜ"] = "e", ["ɡ"] = "g", ["ħ"] = "h", ["ʜ"] = "h", ["ı"] = "i", ["ɨ"] = "i", ["ł"] = "l", ["ŋ"] = "n", ["ɲ"] = "n", ["ø"] = "o", ["ɔ"] = "o", ["œ"] = "oe", ["ꝑ"] = "p", ["ꝓ"] = "p", ["ꝕ"] = "p", ["ß"] = "ss", ["ʋ"] = "v", }}, }, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", Brai = c.braille, c.punc }, } m["eo"] = { "එස්පෙරාන්තො", 143, "art", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute, from = {"ĉ", "ĝ", "ĥ", "ĵ", "ŝ", "ŭ"}, to = {"c" .. p[1], "g" .. p[1], "h" .. p[1], "j" .. p[1], "s" .. p[1], "u" .. p[1]} }, standard_chars = "AaBbCcĈĉDdEeFfGgĜĝHhĤĥIiJjĴĵKkLlMmNnOoPpRrSsŜŝTtUuŬŭVvZz" .. c.punc, } m["es"] = { "ස්පාඤ්ඤ", 1321, "roa-cas", "Latn, Brai", ancestors = "es-ear", sort_key = { Latn = { remove_exceptions = {"ñ"}, remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "ñ", "º", "œ"}, to = {"a", "ae", "n" .. p[1], "o", "oe"} }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["et"] = { "එස්තෝනියානු", 9072, "urj-fin", "Latn", sort_key = { from = { "š", "ž", "õ", "ä", "ö", "ü", -- 2 chars "z" -- 1 char }, to = { "s" .. p[1], "s" .. p[3], "w" .. p[1], "w" .. p[2], "w" .. p[3], "w" .. p[4], "s" .. p[2] } }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvÕõÄäÖöÜü" .. c.punc, } m["eu"] = { "බාස්ක්", 8752, "euq", "Latn", sort_key = { from = {"ç", "ñ"}, to = {"c" .. p[1], "n" .. p[1]} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnÑñOoPpRrSsTtUuXxZz" .. c.punc, } m["fa"] = { "පර්සියානු", 9168, "ira-swi", "fa-Arab, Hebr", ancestors = "fa-cls", strip_diacritics = { ["fa-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ٱ"}, -- character "ۂ" code U+06C2 to "ه"; hamzatu l-waṣli to a regular alif to = {"ه", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["ff"] = { "Fula", 33454, "alv-fwo", "Latn, Adlm", } m["fi"] = { "ෆින්ලන්ත", 1412, "urj-fin", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { -- used to indicate gemination of the next consonant remove_diacritics = "ˣ", from = {"’"}, to = {"'"}, }, sort_key = { -- [[Appendix:Finnish alphabet#Collation]] + "aͤ" and "oͤ" as historical variants of "ä" and "ö". remove_diacritics = "'’:" .. c.diacritics, remove_exceptions = { "a[" .. c.ringabove .. c.diaer .. c.small_e .. "]", -- åäaͤ "o[" .. c.diaer .. c.tilde .. c.dacute .. c.small_e .. "]", -- öõőoͤ "u[" .. c.diaer .. c.dacute .. "]" -- üű }, from = {"æ", "[ðđ]", "ł", "ŋ", "œ", "ß", "þ", "u[" .. c.diaer .. c.dacute .. "]", "å", "aͤ", "o[" .. c.tilde .. c.dacute .. c.small_e .. "]", "ø", "(.)['%-]"}, to = {"ae", "d", "l", "n", "oe", "ss", "th", "y", "z" .. p[1], "ä", "ö", "ö", "%1"} }, standard_chars = "AaBbDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvYyÄäÖö" .. c.punc, } m["fj"] = { "Fijian", 33295, "poz-pcc", "Latn", } m["fo"] = { "Faroese", 25258, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "í", "ó", "ú", "ý", "æ", "ø"}, to = {"a" .. p[1], "d" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaÁáBbDdÐðEeFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvYyÝýÆæØø" .. c.punc, } m["fr"] = { "ප්‍රංශ", 150, "roa-oil", "Latn, Brai", ancestors = "frm", sort_key = { Latn = s["roa-oil-sortkey"] }, standard_chars = { Latn = "AaÀàÂâBbCcÇçDdEeÉéÈèÊêËëFfGgHhIiÎîÏïJjLlMmNnOoÔôŒœPpQqRrSsTtUuÙùÛûÜüVvXxYyZz", Brai = c.braille, c.punc }, } m["fy"] = { "West Frisian", 27175, "gmw-fri", "Latn", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer, from = {"y"}, to = {"i"} }, standard_chars = "AaâäàÆæBbCcDdEeéêëèFfGgHhIiïìYyỳJjKkLlMmNnOoôöòPpRrSsTtUuúûüùVvWwZz" .. c.punc, } m["ga"] = { "අයිරිෂ්", 9142, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = { remove_diacritics = c.acute, from = {"ḃ", "ċ", "ḋ", "ḟ", "ġ", "ṁ", "ṗ", "ṡ", "ṫ"}, to = {"bh", "ch", "dh", "fh", "gh", "mh", "ph", "sh", "th"} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíLlMmNnOoÓóPpRrSsTtUuÚúVv" .. c.punc, } m["gd"] = { "ස්කොට්ස් ගේලික්", 9314, "cel-gae", "Latn, Latg", ancestors = "mga", sort_key = {remove_diacritics = c.grave .. c.acute}, standard_chars = "AaÀàBbCcDdEeÈèFfGgHhIiÌìLlMmNnOoÒòPpRrSsTtUuÙù" .. c.punc, } m["gl"] = { "Galician", 9307, "roa-gap", "Latn", sort_key = { remove_diacritics = c.acute, from = {"ñ"}, to = {"n" .. p[1]} }, standard_chars = "AaÁáBbCcDdEeÉéFfGgHhIiÍíÏïLlMmNnÑñOoÓóPpQqRrSsTtUuÚúÜüVvXxZz" .. c.punc, } m["gu"] = { "ගුජරාටි", 5137, "inc-wes", "Arab, Gujr", ancestors = "inc-mgu", translit = { Gujr = "gu-translit", }, strip_diacritics = { Arab = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.kasra .. c.shadda .. c.sukun}, Gujr = {remove_diacritics = "઼"}, }, } m["gv"] = { "මැන්ක්ස්", 12175, "cel-gae", "Latn", ancestors = "mga", sort_key = {remove_diacritics = c.cedilla .. "-"}, standard_chars = "AaBbCcÇçDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwYy" .. c.punc, } m["ha"] = { "Hausa", 56475, "cdc-wst", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron} }, sort_key = { Latn = { from = {"ɓ", "b'", "ɗ", "d'", "ƙ", "k'", "sh", "ƴ", "'y"}, to = {"b" .. p[1], "b" .. p[2], "d" .. p[1], "d" .. p[2], "k" .. p[1], "k" .. p[2], "s" .. p[1], "y" .. p[1], "y" .. p[2]} }, }, } m["he"] = { "හීබෲ", 9288, "sem-can", "Hebr, Phnx, Brai, Samr", ancestors = "he-med", -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] -- Samr strip_diacritics, sort_key in [[Module:scripts/data]] -- Phnx translit in [[Module:scripts/data]] (NOTE: not present before, presumably an accidental omission) } m["hi"] = { "හින්දි", 1568, "inc-hnd", "Deva, Kthi, Newa", translit = { Deva = "hi-translit" }, standard_chars = { Deva = "अआइईउऊएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहत्रज्ञक्षक़ख़ग़ज़झ़ड़ढ़फ़काखागाघाङाचाछाजाझाञाटाठाडाढाणाताथादाधानापाफाबाभामायारालावाशाषासाहात्राज्ञाक्षाक़ाख़ाग़ाज़ाझ़ाड़ाढ़ाफ़ाकिखिगिघिङिचिछिजिझिञिटिठिडिढिणितिथिदिधिनिपिफिबिभिमियिरिलिविशिषिसिहित्रिज्ञिक्षिक़िख़िग़िज़िझ़िड़िढ़िफ़िकीखीगीघीङीचीछीजीझीञीटीठीडीढीणीतीथीदीधीनीपीफीबीभीमीयीरीलीवीशीषीसीहीत्रीज्ञीक्षीक़ीख़ीग़ीज़ीझ़ीड़ीढ़ीफ़ीकुखुगुघुङुचुछुजुझुञुटुठुडुढुणुतुथुदुधुनुपुफुबुभुमुयुरुलुवुशुषुसुहुत्रुज्ञुक्षुक़ुख़ुग़ुज़ुझ़ुड़ुढ़ुफ़ुकूखूगूघूङूचूछूजूझूञूटूठूडूढूणूतूथूदूधूनूपूफूबूभूमूयूरूलूवूशूषूसूहूत्रूज्ञूक्षूक़ूख़ूग़ूज़ूझ़ूड़ूढ़ूफ़ूकेखेगेघेङेचेछेजेझेञेटेठेडेढेणेतेथेदेधेनेपेफेबेभेमेयेरेलेवेशेषेसेहेत्रेज्ञेक्षेक़ेख़ेग़ेज़ेझ़ेड़ेढ़ेफ़ेकैखैगैघैङैचैछैजैझैञैटैठैडैढैणैतैथैदैधैनैपैफैबैभैमैयैरैलैवैशैषैसैहैत्रैज्ञैक्षैक़ैख़ैग़ैज़ैझ़ैड़ैढ़ैफ़ैकोखोगोघोङोचोछोजोझोञोटोठोडोढोणोतोथोदोधोनोपोफोबोभोमोयोरोलोवोशोषोसोहोत्रोज्ञोक्षोक़ोख़ोग़ोज़ोझ़ोड़ोढ़ोफ़ोकौखौगौघौङौचौछौजौझौञौटौठौडौढौणौतौथौदौधौनौपौफौबौभौमौयौरौलौवौशौषौसौहौत्रौज्ञौक्षौक़ौख़ौग़ौज़ौझ़ौड़ौढ़ौफ़ौक्ख्ग्घ्ङ्च्छ्ज्झ्ञ्ट्ठ्ड्ढ्ण्त्थ्द्ध्न्प्फ्ब्भ्म्य्र्ल्व्श्ष्स्ह्त्र्ज्ञ्क्ष्क़्ख़्ग़्ज़्झ़्ड़्ढ़्फ़्।॥०१२३४५६७८९॰", c.punc }, } m["ho"] = { "Hiri Motu", 33617, "crp", "Latn", ancestors = "meu", } m["ht"] = { "Haitian Creole", 33491, "crp", "Latn", ancestors = "ht-sdm", sort_key = { from = { "oun", -- 3 chars "an", "ch", "è", "en", "ng", "ò", "on", "ou", "ui" -- 2 chars }, to = { "o" .. p[4], "a" .. p[1], "c" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "u" .. p[1] } }, } m["hu"] = { "හංගේරියානු", 9067, "urj-ugr", "Latn, Hung", ancestors = "ohu", sort_key = { Latn = { from = { "dzs", -- 3 chars "á", "cs", "dz", "é", "gy", "í", "ly", "ny", "ó", "ö", "ő", "sz", "ty", "ú", "ü", "ű", "zs", -- 2 chars }, to = { "d" .. p[2], "a" .. p[1], "c" .. p[1], "d" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "o" .. p[2], "o" .. p[3], "s" .. p[1], "t" .. p[1], "u" .. p[1], "u" .. p[2], "u" .. p[3], "z" .. p[1], } }, }, standard_chars = { Latn = "AaÁáBbCcDdEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóÖöŐőPpQqRrSsTtUuÚúÜüŰűVvWwXxYyZz", c.punc }, } m["hy"] = { "ආමේනියානු", 8785, "hyx", "Armn, Brai", ancestors = "axm", -- Armn translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Armn = { remove_diacritics = "՛՜՞՟", from = {"եւ", "<sup>յ</sup>", "<sup>ի</sup>", "<sup>է</sup>", "յ̵", "ՙ", "՚"}, to = {"և", "յ", "ի", "է", "ֈ", "ʻ", "’"} }, }, sort_key = { Armn = { from = { "ու", "եւ", -- 2 chars "և" -- 1 char }, to = { "ւ", "եվ", "եվ" } }, }, } m["hz"] = { "Herero", 33315, "bnt-swb", "Latn", } m["ia"] = { "Interlingua", 35934, "art", "Latn", } m["id"] = { "ඉන්දුනීසියානු", 9240, "poz-mly", "Latn", ancestors = "ms", standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz" .. c.punc, } m["ie"] = { "Interlingue", 35850, "art", "Latn", type = "appendix-constructed", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ}, } m["ig"] = { "Igbo", 33578, "alv-igb", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.macron}, sort_key = { from = {"gb", "gh", "gw", "ị", "kp", "kw", "ṅ", "nw", "ny", "ọ", "sh", "ụ"}, to = {"g" .. p[1], "g" .. p[2], "g" .. p[3], "i" .. p[1], "k" .. p[1], "k" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "o" .. p[1], "s" .. p[1], "u" .. p[1]} }, } m["ii"] = { "Nuosu", 34235, "tbq-nlo", "Yiii", translit = "ii-translit", } m["ik"] = { "Inupiaq", 27183, "esx-inu", "Latn", sort_key = { from = { "ch", "ġ", "dj", "ḷ", "ł̣", "ñ", "ng", "r̂", "sr", "zr", -- 2 chars "ł", "ŋ", "ʼ" -- 1 char }, to = { "c" .. p[1], "g" .. p[1], "h" .. p[1], "l" .. p[1], "l" .. p[3], "n" .. p[1], "n" .. p[2], "r" .. p[1], "s" .. p[1], "z" .. p[1], "l" .. p[2], "n" .. p[2], "z" .. p[2] } }, } m["io"] = { "Ido", 35224, "art", "Latn", } m["is"] = { "අයිස්ලන්ත", 294, "gmq-ins", "Latn", sort_key = { from = {"á", "ð", "é", "í", "ó", "ú", "ý", "þ", "æ", "ö"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "i" .. p[1], "o" .. p[1], "u" .. p[1], "y" .. p[1], "z" .. p[1], "z" .. p[2], "z" .. p[3]} }, standard_chars = "AaÁáBbDdÐðEeÉéFfGgHhIiÍíJjKkLlMmNnOoÓóPpRrSsTtUuÚúVvXxYyÝýÞþÆæÖö" .. c.punc, } m["it"] = { "ඉතාලි", 652, "roa-itr", "Latn", ancestors = "roa-oit", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.ringabove}, standard_chars = "AaÀàBbCcDdEeÈèÉéFfGgHhIiÌìLlMmNnOoÒòPpQqRrSsTtUuÙùVvZz" .. c.punc, } m["iu"] = { "Inuktitut", 29921, "esx-inu", "Cans, Latn", translit = { Cans = "cr-translit" }, override_translit = true, } m["ja"] = { "ජපන්", 5287, "jpx", "Jpan, Latn, Brai", ancestors = "ja-ear", translit = s["jpx-translit"], link_tr = true, display_text = s["jpx-displaytext"], strip_diacritics = s["jpx-stripdiacritics"], sort_key = s["jpx-sortkey"], } m["jv"] = { "ජාවා", 33549, "poz", "Latn, Java, Arab", ancestors = "kaw", translit = { Java = "jv-translit" }, link_tr = true, strip_diacritics = { Latn = {remove_diacritics = c.circ} -- Modern jv don't use ê }, sort_key = { Latn = { from = {"å", "dh", "é", "è", "ng", "ny", "th"}, to = {"a" .. p[1], "d" .. p[1], "e" .. p[1], "e" .. p[2], "n" .. p[1], "n" .. p[2], "t" .. p[1]} }, }, } m["ka"] = { "ජෝර්ජියානු", 8108, "ccs-gzn", "Geor, Geok, Hebr", -- Hebr is used to write Judeo-Georgian ancestors = "ka-mid", -- Geor, Geok translit in [[Module:scripts/data]] override_translit = true, strip_diacritics = { Geor = s["ka-stripdiacritics"], Geok = s["ka-stripdiacritics"], }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["kg"] = { "කොංගෝ", 33702, "bnt-kng", "Latn", } m["ki"] = { "Kikuyu", 33587, "bnt-kka", "Latn", } m["kj"] = { "Kwanyama", 1405077, "bnt-ova", "Latn", } m["kk"] = { "Kazakh", 9252, "trk-kno", "Cyrl, Latn, kk-Arab", translit = { Cyrl = { from = { "Ё", "ё", "Й", "й", "Нг", "нг", "Ӯ", "ӯ", -- 2 chars; are "Ӯ" and "ӯ" actually used? "А", "а", "Ә", "ә", "Б", "б", "В", "в", "Г", "г", "Ғ", "ғ", "Д", "д", "Е", "е", "Ж", "ж", "З", "з", "И", "и", "К", "к", "Қ", "қ", "Л", "л", "М", "м", "Н", "н", "Ң", "ң", "О", "о", "Ө", "ө", "П", "п", "Р", "р", "С", "с", "Т", "т", "У", "у", "Ұ", "ұ", "Ү", "ү", "Ф", "ф", "Х", "х", "Һ", "һ", "Ц", "ц", "Ч", "ч", "Ш", "ш", "Щ", "щ", "Ъ", "ъ", "Ы", "ы", "І", "і", "Ь", "ь", "Э", "э", "Ю", "ю", "Я", "я", -- 1 char }, to = { "E", "e", "İ", "i", "Ñ", "ñ", "U", "u", "A", "a", "Ä", "ä", "B", "b", "V", "v", "G", "g", "Ğ", "ğ", "D", "d", "E", "e", "J", "j", "Z", "z", "İ", "i", "K", "k", "Q", "q", "L", "l", "M", "m", "N", "n", "Ñ", "ñ", "O", "o", "Ö", "ö", "P", "p", "R", "r", "S", "s", "T", "t", "U", "u", "Ū", "ū", "Ü", "ü", "F", "f", "X", "x", "H", "h", "S", "s", "Ç", "ç", "Ş", "ş", "Ş", "ş", "", "", "Y", "y", "I", "ı", "", "", "É", "é", "Ü", "ü", "Ä", "ä", } } }, -- override_translit = true, sort_key = { Cyrl = { from = {"ә", "ғ", "ё", "қ", "ң", "ө", "ұ", "ү", "һ", "і"}, to = {"а" .. p[1], "г" .. p[1], "е" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "у" .. p[2], "х" .. p[1], "ы" .. p[1]} }, }, standard_chars = { Cyrl = "АаӘәБбВвГгҒғДдЕеЁёЖжЗзИиЙйКкҚқЛлМмНнҢңОоӨөПпРрСсТтУуҰұҮүФфХхҺһЦцЧчШшЩщЪъЫыІіЬьЭэЮюЯя", c.punc }, } m["kl"] = { "Greenlandic", 25355, "esx-inu", "Latn", sort_key = { from = {"æ", "ø", "å"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} } } m["km"] = { "Khmer", 9205, "mkh-kmr", "Khmr", ancestors = "xhm", translit = "km-translit", } m["kn"] = { "කන්නඩ", 33673, "dra-kan", "Knda, Tutg", ancestors = "dra-mkn", -- Knda translit in [[Module:scripts/data]] } m["ko"] = { "කොරියානු", 9176, "qfa-kor", "Kore, Brai", ancestors = "ko-ear", translit = { Kore = "ko-translit", }, -- Kore strip_diacritics in [[Module:scripts/data]] } m["kr"] = { "Kanuri", 36094, "ssa-sah", "Latn, Arab", -- the sortkey and strip_diacritics are only for standard Kanuri; when dialectal entries get added, someone will have to work out how the dialects should be represented orthographically strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.breve} }, sort_key = { Latn = { from = {"ǝ", "ny", "ɍ", "sh"}, to = {"e" .. p[1], "n" .. p[1], "r" .. p[1], "s" .. p[1]} }, }, } m["ks"] = { "කාෂ්මීරි", 33552, "inc-kas", "ks-Arab, Deva, Shrd, Latn", translit = { ["ks-Arab"] = "ks-Arab-translit", Deva = "ks-Deva-translit", -- Shrd translit in [[Module:scripts/data]] }, } -- "kv" is treated as "koi", "kpv", see [[WT:LT]] m["kw"] = { "කෝනිෂ්", 25289, "cel-brs", "Latn", ancestors = "cnx", sort_key = { from = {"ch"}, to = {"c" .. p[1]} }, } m["ky"] = { "Kyrgyz", 9255, "trk-kkp", "Cyrl, Latn, Arab", translit = { Cyrl = "ky-translit" }, override_translit = true, sort_key = { Cyrl = { from = {"ё", "ң", "ө", "ү"}, to = {"е" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, } m["la"] = { "ලතින්", 397, "itc-laf", "Latn, Ital", ancestors = "itc-ola", -- Ital translit in [[Module:scripts/data]] (NOTE: formerly not present, probably an accidental omission) display_text = { Latn = s["itc-Latn-displaytext"] }, strip_diacritics = { Latn = s["itc-Latn-stripdiacritics"] }, sort_key = { Latn = s["itc-Latn-sortkey"] }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiLlMmNnOoPpQqRrSsTtUuVvXx", c.punc }, } m["lb"] = { "Luxembourgish", 9051, "gmw-hgm", "Latn, Brai", ancestors = "gmw-cfr", sort_key = { Latn = { from = {"ä", "ë", "é"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3]} }, }, } m["lg"] = { "Luganda", 33368, "bnt-nyg", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ŋ"}, to = {"n" .. p[1]} }, } m["li"] = { "Limburgish", 102172, "gmw-frk", "Latn", ancestors = "dum", } m["ln"] = { "Lingala", 36217, "bnt-bmo", "Latn", sort_key = { remove_diacritics = c.acute .. c.circ .. c.caron, from = {"ɛ", "gb", "mb", "mp", "nd", "ng", "nk", "ns", "nt", "ny", "nz", "ɔ"}, to = {"e" .. p[1], "g" .. p[1], "m" .. p[1], "m" .. p[2], "n" .. p[1], "n" .. p[2], "n" .. p[3], "n" .. p[4], "n" .. p[5], "n" .. p[6], "n" .. p[7], "o" .. p[1]} }, } m["lo"] = { "ලාඕ", 9211, "tai-swe", "Laoo", -- also Tai Noi/Lao Buhan script translit = "lo-translit", sort_key = "Laoo-sortkey", standard_chars = "0-9ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯ-ໝ" .. c.punc, } m["lt"] = { "Lithuanian", 9083, "bat-eas", "Latn", ancestors = "olt", display_text = "lt-common", strip_diacritics = "lt-common", sort_key = "lt-common", standard_chars = "AaĄąBbCcČčDdEeĘęĖėFfGgHhIiĮįYyJjKkLlMmNnOoPpRrSsŠšTtUuŲųŪūVvZzŽž" .. c.punc, } m["lu"] = { "Luba-Katanga", 36157, "bnt-lub", "Latn", } m["lv"] = { "Latvian", 9078, "bat-eas", "Latn", strip_diacritics = { -- This attempts to convert vowels with tone marks to vowels either with or without macrons. Specifically, there should be no macrons if the vowel is part of a diphthong (including resonant diphthongs such pìrksts -> pirksts not #pīrksts). What we do is first convert the vowel + tone mark to a vowel + tilde in a decomposed fashion, then remove the tilde in diphthongs, then convert the remaining vowel + tilde sequences to macroned vowels, then delete any other tilde. We leave already-macroned vowels alone: Both e.g. ar and ār occur before consonants. FIXME: This still might not be sufficient. from = {"([Ee])" .. c.cedilla, "[" .. c.grave .. c.circ .. c.tilde .."]", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .. "?([^aAeEiIoOuU])", "([aAeEiIoOuU])" .. c.tilde .."?([lrnmuiLRNMUI])" .. c.tilde .."?$", "([iI])" .. c.tilde .. "?([eE])" .. c.tilde .. "?", "([aAeEiIuU])" .. c.tilde, c.tilde}, to = {"%1", c.tilde, "%1%2%3", "%1%2", "%1%2", "%1" .. c.macron} }, sort_key = { from = {"ā", "č", "ē", "ģ", "ī", "ķ", "ļ", "ņ", "š", "ū", "ž"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "l" .. p[1], "n" .. p[1], "s" .. p[1], "u" .. p[1], "z" .. p[1]} }, standard_chars = "AaĀāBbCcČčDdEeĒēFfGgĢģHhIiĪīJjKkĶķLlĻļMmNnŅņOoPpRrSsŠšTtUuŪūVvZzŽž" .. c.punc, } m["mg"] = { "Malagasy", 7930, "poz-bre", "Latn, Arab", } m["mh"] = { "Marshallese", 36280, "poz-mic", "Latn", sort_key = { from = {"ā", "ļ", "m̧", "ņ", "n̄", "o̧", "ō", "ū"}, to = {"a" .. p[1], "l" .. p[1], "m" .. p[1], "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "u" .. p[1]} }, } m["mi"] = { "Māori", 36451, "poz-pep", "Latn", sort_key = { remove_diacritics = c.macron, from = {"ng", "wh"}, to = {"n" .. p[1], "w" .. p[1]} }, } m["mk"] = { "මැසඩෝනියානු", 9296, "zls", "Cyrl, Polyt", ancestors = "cu", translit = { Cyrl = "mk-translit", -- FIXME: formerly no translit specified for Polyt; unclear if the default [[Module:grc-translit]] is -- acceptable, so we disable it for now Polyt = false, }, strip_diacritics = { Cyrl = { remove_diacritics = c.acute, remove_exceptions = {"Ѓ", "ѓ", "Ќ", "ќ"} }, }, sort_key = { Cyrl = { remove_diacritics = c.grave, remove_exceptions = {"ѓ", "ќ"}, from = {"ѓ", "ѕ", "ј", "љ", "њ", "ќ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, -- Polyt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { Cyrl = "АаБбВвГгДдЃѓЕеЖжЗзЅѕИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЌќУуФфХхЦцЧчЏџШш", c.punc }, } m["ml"] = { "මලයාලම්", 36236, "dra-mal", "Mlym", override_translit = true, -- Mlym translit in [[Module:scripts/data]] } m["mn"] = { "මොංගෝලියානු", 9246, "xgn-cen", "Cyrl, Mong, Latn, Brai", ancestors = "cmg", translit = { Cyrl = "mn-translit", -- Mong translit in [[Module:scripts/data]] }, override_translit = true, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] strip_diacritics = { Cyrl = {remove_diacritics = c.grave .. c.acute}, }, sort_key = { Cyrl = { remove_diacritics = c.grave, from = {"ё", "ө", "ү"}, to = {"е" .. p[1], "о" .. p[1], "у" .. p[1]} }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйЛлМмНнОоӨөРрСсТтУуҮүХхЦцЧчШшЫыЬьЭэЮюЯя—", Brai = c.braille, c.punc }, } -- "mo" is treated as "ro", see [[WT:LT]] m["mr"] = { "මරාථි", 1571, "inc-sou", "Deva, Modi", ancestors = "omr", translit = { Deva = "mr-translit", Modi = "mr-Modi-translit", }, strip_diacritics = { Deva = { from = {"च़", "ज़", "झ़"}, to = {"च", "ज", "झ"} }, }, } m["ms"] = { "මැලේ", 9237, "poz-mly", "Latn, ms-Arab", ancestors = "ms-cla", standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz", c.punc }, } m["mt"] = { "Maltese", 9166, "sem-arb", "Latn", display_text = { from = {"'"}, to = {"’"} }, strip_diacritics = { from = {"’"}, to = {"'"}, }, ancestors = "sqr", sort_key = { from = { "ċ", "ġ", "ż", -- Convert into PUA so that decomposed form does not get caught by the next step. "([cgz])", -- Ensure "c" comes after "ċ", "g" comes after "ġ" and "z" comes after "ż". "g" .. p[1] .. "ħ", -- "għ" after initial conversion of "g". p[3], p[4], "ħ", "ie", p[5] -- Convert "ċ", "ġ", "ħ", "ie", "ż" into final output. }, to = { p[3], p[4], p[5], "%1" .. p[1], "g" .. p[2], "c", "g", "h" .. p[1], "i" .. p[1], "z" } }, } m["my"] = { "බුරුම", 9228, "tbq-brm", "Mymr", ancestors = "obr", translit = "my-translit", override_translit = true, sort_key = { from = {"ျ", "ြ", "ွ", "ှ", "ဿ"}, to = {"္ယ", "္ရ", "္ဝ", "္ဟ", "သ္သ"} }, } m["na"] = { "Nauruan", 13307, "poz-mic", "Latn", } m["nb"] = { "Norwegian Bokmål", 25167, "gmq", "Latn", wikimedia_codes = "no", ancestors = "gmq-mno, da", -- da as an (but not the) ancestor of nb was agreed on - do not change without discussion sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nd"] = { "Northern Ndebele", 35613, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["ne"] = { "Nepali", 33823, "inc-pah", "Deva, Newa", translit = { Deva = "ne-translit" }, } m["ng"] = { "Ndonga", 33900, "bnt-ova", "Latn", } m["nl"] = { "ඕලන්ද", 7411, "gmw-frk", "Latn, Brai", ancestors = "dum", sort_key = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.diaer .. c.ringabove .. c.cedilla .. "'"}, }, standard_chars = { Latn = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÄäËëÏïÖöÜü", Brai = c.braille, c.punc }, } m["nn"] = { "Norwegian Nynorsk", 25164, "gmq-wes", "Latn", ancestors = "gmq-mno", strip_diacritics = { remove_diacritics = c.grave .. c.acute, }, sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["no"] = { "නෝර්වීජියානු", 9043, "gmq-wes", "Latn", ancestors = "gmq-mno", sort_key = s["no-sortkey"], standard_chars = s["no-standardchars"], } m["nr"] = { "Southern Ndebele", 36785, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["nv"] = { "Navajo", 13310, "apa", "Latn, Brai", sort_key = { remove_diacritics = c.acute .. c.ogonek, from = { "chʼ", "tłʼ", "tsʼ", -- 3 chars "ch", "dl", "dz", "gh", "hw", "kʼ", "kw", "sh", "tł", "ts", "zh", -- 2 chars "ł", "ʼ" -- 1 char }, to = { "c" .. p[2], "t" .. p[2], "t" .. p[4], "c" .. p[1], "d" .. p[1], "d" .. p[2], "g" .. p[1], "h" .. p[1], "k" .. p[1], "k" .. p[2], "s" .. p[1], "t" .. p[1], "t" .. p[3], "z" .. p[1], "l" .. p[1], "z" .. p[2] } }, } m["ny"] = { "Chichewa", 33273, "bnt-nys", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ}, sort_key = { from = {"ng'"}, to = {"ng"} }, } m["oc"] = { "Occitan", 14185, "roa-ocr", "Latn, Hebr", ancestors = "pro", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.diaer .. c.cedilla, from = {"([lns])·h"}, to = {"%1h"} }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["oj"] = { "Ojibwe", 33875, "alg", "Cans, Latn", sort_key = { Latn = { from = {"aa", "ʼ", "ii", "oo", "sh", "zh"}, to = {"a" .. p[1], "h" .. p[1], "i" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1]} }, }, } m["om"] = { "Oromo", 33864, "cus-eas", "Latn, Ethi", } m["or"] = { "Odia", 33810, "inc-eas", "Orya", ancestors = "inc-mor", translit = "or-translit", } m["os"] = { "Ossetian", 33968, "xsc-sar", "Cyrl, Geor, Latn", ancestors = "oos", translit = { Cyrl = "os-translit", -- Geor translit in [[Module:scripts/data]] }, override_translit = true, display_text = { Cyrl = { from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute, from = {"æ"}, to = {"ӕ"} }, Latn = { from = {"ӕ"}, to = {"æ"} }, }, sort_key = { Cyrl = { from = {"ӕ", "гъ", "дж", "дз", "ё", "къ", "пъ", "тъ", "хъ", "цъ", "чъ"}, to = {"а" .. p[1], "г" .. p[1], "д" .. p[1], "д" .. p[2], "е" .. p[1], "к" .. p[1], "п" .. p[1], "т" .. p[1], "х" .. p[1], "ц" .. p[1], "ч" .. p[1]} }, }, } m["pa"] = { "Punjabi", 58635, "inc-pan", "Guru, pa-Arab", translit = { Guru = "Guru-translit", ["pa-Arab"] = "pa-Arab-translit", }, strip_diacritics = { ["pa-Arab"] = { remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna, from = {"ݨ", "ࣇ"}, to = {"ن", "ل"} }, }, } m["pi"] = { "පාලි", 36727, "inc-mid", "Latn, Brah, Deva, Beng, Sinh, Mymr, Thai, Lana, Laoo, Khmr, Cakm", --and also Khom ancestors = "sa", translit = { -- Brah translit in [[Module:scripts/data]] Deva = "sa-translit", Beng = "pi-translit", Sinh = "si-translit", Mymr = "pi-translit", Thai = "pi-translit", Lana = "pi-translit", Laoo = "pi-translit", Khmr = "pi-translit", Cakm = "Cakm-translit", }, strip_diacritics = { Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, Mymr = { remove_diacritics = c.VS01, }, }, sort_key = { -- FIXME: This needs to be converted into the current standardized format. from = {"ā", "ī", "ū", "ḍ", "ḷ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṭ", "ॐ", "([เโ])([ก-ฮ])", "([ເໂ])([ກ-ຮ])", "ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ", u(0xFE00), u(0x200D)}, to = {"a~", "i~", "u~", "d~", "l~", "m~", "n~", "n~~", "n~~~", "t~", "ओँ", "%2%1", "%2%1", "ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"} }, } m["pl"] = { "පෝලන්ත", 809, "zlw-lch", "Latn", ancestors = "zlw-mpl", sort_key = { from = {"ą", "ć", "ę", "ł", "ń", "ó", "ś", "ź", "ż"}, to = {"a" .. p[1], "c" .. p[1], "e" .. p[1], "l" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "z" .. p[1], "z" .. p[2]} }, standard_chars = "AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnŃńOoÓóPpRrSsŚśTtUuWwYyZzŹźŻż" .. c.punc, } m["ps"] = { "Pashto", 58680, "ira-pat", "ps-Arab", strip_diacritics = {remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.zwarakay .. c.superalef}, } m["pt"] = { "පෘතුගීසි", 5146, "roa-gap", "Latn, Brai", sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.diaer .. c.cedilla, from = {"ª", "æ", "º", "œ"}, to = {"a", "ae", "o", "oe"} }, }, standard_chars = { Latn = "AaÁáÂâÃãBbCcÇçDdEeÉéÊêFfGgHhIiÍíJjLlMmNnOoÓóÔôÕõPpQqRrSsTtUuÚúVvXxZz", Brai = c.braille, c.punc }, } m["qu"] = { "ක්වෙච්වා", 5218, "qwe", "Latn", } m["rm"] = { "Romansh", 13199, "roa-rhe", ancestors = "rm-old", "Latn", sort_key = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.diaer .. c.small_e}, } m["ro"] = { "රුමේනියානු", 7913, "roa-eas", "Latn, Cyrl, Cyrs", translit = { Cyrl = "ro-translit" }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute, from = {"ă", "â", "î", "ș", "ț"}, to = {"a" .. p[1], "a" .. p[2], "i" .. p[1], "s" .. p[1], "t" .. p[1]} }, Cyrl = { from = {"ӂ"}, to = {"ж" .. p[1]} }, }, -- Cyrs strip_diacritics, sort_key in [[Module:scripts/data]]; presumably not present standard_chars = { Latn = "AaĂăÂâBbCcDdEeFfGgHhIiÎîJjLlMmNnOoPpRrSsȘșTtȚțUuVvXxZz", Cyrl = "АаБбВвГгДдЕеЖжӁӂЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЫыЬьЭэЮюЯя", c.punc }, } m["ru"] = { "රුසියානු", 7737, "zle", "Cyrl, Brai", ancestors = "zle-mru", translit = { Cyrl = "ru-translit" }, display_text = { Cyrl = { from = {"'"}, to = {"’"} }, }, strip_diacritics = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, remove_exceptions = {"Ё", "ё", "Ѣ̈", "ѣ̈", "Я̈", "я̈"}, from = {"’"}, to = {"'"}, }, }, sort_key = { Cyrl = { remove_diacritics = c.grave .. c.acute .. c.diaer, from = { "і", "ѣ", "ѳ", "ѵ" }, to = { "и" .. p[1], "ь" .. p[1], "я" .. p[2], "я" .. p[3] } }, }, standard_chars = { Cyrl = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя—", Brai = c.braille, (c.punc:gsub("'", "")) -- Exclude apostrophe. }, } m["rw"] = { "Rwanda-Rundi", 3217514, "bnt-glb", "Latn", strip_diacritics = {remove_diacritics = c.acute .. c.circ .. c.macron .. c.caron}, } m["sa"] = { "සංස්කෘත", 11059, "inc", "as-Beng, Bali, Beng, Bhks, Brah, Mymr, xwo-Mong, Deva, Gujr, Guru, Gran, Hani, Java, Kthi, Knda, Kawi, Khar, Khmr, Laoo, Mlym, mnc-Mong, Marc, Modi, Mong, Nand, Newa, Orya, Phag, Ranj, Saur, Shrd, Sidd, Sinh, Soyo, Lana, Takr, Taml, Tang, Telu, Thai, Tibt, Tutg, Tirh, Zanb", --and also Khom; script codes sorted by canonical name rather than code for [[MOD:sa-convert]] translit = { Beng = "sa-Beng-translit", ["as-Beng"] = "sa-Beng-translit", -- Brah translit in [[Module:scripts/data]] Deva = "sa-translit", Gujr = "sa-Gujr-translit", Guru = "sa-Guru-translit", Java = "sa-Java-translit", Kthi = "sa-Kthi-translit", Khmr = "pi-translit", Knda = "sa-Knda-translit", Lana = "pi-translit", Laoo = "pi-translit", Mlym = "sa-Mlym-translit", Modi = "sa-Modi-translit", -- Mong, mnc-Mong, xwo-Mong translit in [[Module:scripts/data]] -- NOTE: Formerly used xal-translit for transliterating xwo-Mong but that only handles Cyrillic; it has -- code to transliterate xwo-Mong but it's broken so I've replaced it with the default xwo-translit. Mymr = "pi-translit", Orya = "sa-Orya-translit", -- Shrd translit in [[Module:scripts/data]] -- Sidd translit in [[Module:scripts/data]] Sinh = "si-translit", Taml = "sa-Taml-translit", Telu = "sa-Telu-translit", Thai = "pi-translit", -- Tibt translit in [[Module:scripts/data]] }, -- Mong display_text and strip_diacritics in [[Module:scripts/data]] -- Tibt display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Deva = s["sa-Deva-stripdiacritics"], Mymr = { remove_diacritics = c.VS01, }, Thai = { from = {"ึ", u(0xF700), u(0xF70F)}, -- FIXME: Not clear what's going on with the PUA characters here. to = {"ิํ", "ฐ", "ญ"} }, }, sort_key = { Deva = s["sa-Deva-stripdiacritics"], -- until we have a proper Sanskrit sorting algorithm. Lana = { -- Tai Tham from = {"ᩔ", "ᩕ", "ᩖ", "ᩘ", "([ᨭ-ᨱ])ᩛ", "([ᨷ-ᨾ])ᩛ", "ᩤ"}, to = {"ᩈ᩠ᩈ", "᩠ᩁ", "᩠ᩃ", "ᨦ᩠", "%1᩠ᨮ", "%1᩠ᨻ", "ᩣ"}, }, Laoo = "Laoo-sortkey", Latn = { from = {"ā", "ī", "ū", "ḍ", "ḷ", "ḹ", "m[" .. c.dotabove .. c.dotbelow .. "]", "ṅ", "ñ", "ṇ", "ṛ", "ṝ", "ś", "ṣ", "ṭ"}, to = {"a~", "i~", "u~", "d~", "l~", "l~~", "m~", "n~", "n~~", "n~~~", "r~", "r~~", "s~", "s~~", "t~"}, }, Mymr = { remove_diacritics = c.VS01, }, Thai = "Thai-sortkey", -- FIXME: The previous sort key which mixed all scripts removed ZWJ; I don't know which script(s) this was -- intended for and there are no other languages which remove it in the sort key AFAIK. If it needs to be -- removed, specify the script(s) it needs to be removed under or add handling for the "all" script that applies -- regardless of script. --all = { -- remove_diacritics = c.ZWJ, --}, }, } m["sc"] = { "Sardinian", 33976, "roa-sou", "Latn", ancestors = "sc-old", } m["sd"] = { "සින්ධි", 33997, "inc-snd", "sd-Arab, Deva, Sind, Khoj", translit = { Sind = "Sind-translit", ["sd-Arab"] = "sd-Arab-translit" }, strip_diacritics = { ["sd-Arab"] = { remove_diacritics = c.kashida .. c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.superalef, from = {"ٱ"}, to = {"ا"} }, }, } m["se"] = { "Northern Sami", 33947, "smi", "Latn", display_text = { from = {"'"}, to = {"ˈ"} }, strip_diacritics = {remove_diacritics = c.macron .. c.dotbelow .. "'ˈ"}, sort_key = { from = {"á", "č", "đ", "ŋ", "š", "ŧ", "ž"}, to = {"a" .. p[1], "c" .. p[1], "d" .. p[1], "n" .. p[1], "s" .. p[1], "t" .. p[1], "z" .. p[1]} }, standard_chars = "AaÁáBbCcČčDdĐđEeFfGgHhIiJjKkLlMmNnŊŋOoPpRrSsŠšTtŦŧUuVvZzŽž" .. c.punc, } m["sg"] = { "Sango", 33954, "crp", "Latn", ancestors = "ngb", } m["sh"] = { "සර්බෝ-ක්‍රොඒෂියානු", 9301, "zls", "Latn, Cyrl, Glag, Arab", ietf_subtag = "hbs", -- ISO 639-3 code, since "sh" is deprecated from ISO 639-1 wikimedia_codes = "sh, bs, hr, sr", strip_diacritics = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"Ć", "ć", "Ś", "ś", "Ź", "ź"} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"З́", "з́", "С́", "с́"} }, }, sort_key = { Latn = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"ć", "ś", "ź"}, from = {"č", "ć", "dž", "đ", "lj", "nj", "š", "ś", "ž", "ź"}, to = {"c" .. p[1], "c" .. p[2], "d" .. p[1], "d" .. p[2], "l" .. p[1], "n" .. p[1], "s" .. p[1], "s" .. p[2], "z" .. p[1], "z" .. p[2]} }, Cyrl = { remove_diacritics = c.grave .. c.acute .. c.tilde .. c.macron .. c.dgrave .. c.invbreve, remove_exceptions = {"з́", "с́"}, from = {"ђ", "з́", "ј", "љ", "њ", "с́", "ћ", "џ"}, to = {"д" .. p[1], "з" .. p[1], "и" .. p[1], "л" .. p[1], "н" .. p[1], "с" .. p[1], "т" .. p[1], "ч" .. p[1]} }, }, standard_chars = { Latn = "AaBbCcČčĆćDdĐđEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž", Cyrl = "АаБбВвГгДдЂђЕеЖжЗзИиЈјКкЛлЉљМмНнЊњОоПпРрСсТтЋћУуФфХхЦцЧчЏџШш", c.punc }, } m["si"] = { "සිංහල", 13267, "inc-ins", "Sinh", translit = "si-translit", override_translit = true, } m["sk"] = { "Slovak", 9058, "zlw", "Latn", ancestors = "zlw-osk", sort_key = {remove_diacritics = c.acute .. c.circ .. c.diaer .. c.caron}, standard_chars = "AaÁáÄäBbCcČčDdĎďEeÉéFfGgHhIiÍíJjKkLlĹ弾MmNnŇňOoÓóÔôPpRrŔŕSsŠšTtŤťUuÚúVvYyÝýZzŽž" .. c.punc, } m["sl"] = { "Slovene", 9063, "zls", "Latn", strip_diacritics = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.dgrave .. c.invbreve .. c.dotbelow, remove_exceptions = {"Ć", "ć", "Ǵ", "ǵ", "Ś", "ś", "Ź", "ź"}, from = {"Ə", "ə", "Ł", "ł"}, to = {"E", "e", "L", "l"}, }, sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dotabove .. c.ringabove .. c.dgrave .. c.invbreve .. c.dotbelow .. c.ringbelow .. c.ogonek, remove_exceptions = {"ć", "ǵ", "ś", "ź"}, from = {"ä", "č", "ć", "đ", "ə", "ë", "ǧ", "ǵ", "ï", "ł", "ö", "š", "ś", "ü", "ž", "ź"}, to = {"a" .. p[1], "c" .. p[1], "c" .. p[2], "d" .. p[1], "e", "e" .. p[1], "g" .. p[1], "g" .. p[2], "i" .. p[1], "l", "o" .. p[1], "s" .. p[1], "s" .. p[2], "u" .. p[1], "z" .. p[1], "z" .. p[2]}, }, standard_chars = "AaBbCcČčDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsŠšTtUuVvZzŽž" .. c.punc, } m["sm"] = { "Samoan", 34011, "poz-pnp", "Latn", } m["sn"] = { "Shona", 34004, "bnt-sho", "Latn", strip_diacritics = {remove_diacritics = c.acute}, } m["so"] = { "සෝමාලි", 13275, "cus-som", "Latn, Arab, Osma", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, } m["sq"] = { "Albanian", 8748, "sqj", "Latn, Grek, ota-Arab, Elba, Todr, Vith", translit = { Elba = "Elba-translit", Vith = "Vith-translit", }, -- Grek display_text, strip_diacritics, sort_key in [[Module:scripts/data]] strip_diacritics = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron, from = {'^[ie] (%w)', '^të (%w)'}, to = {'%1', '%1'}, }, }, sort_key = { Latn = { remove_diacritics = c.acute .. c.circ .. c.macron .. c.tilde .. c.breve .. c.caron, from = {'^[ie] (%w)', '^të (%w)', 'ç', 'dh', 'ë', 'gj', 'll', 'nj', 'rr', 'sh', 'th', 'xh', 'zh'}, to = {'%1', '%1', 'c'..p[1], 'd'..p[1], 'e'..p[1], 'g'..p[1], 'l'..p[1], 'n'..p[1], 'r'..p[1], 's'..p[1], 't'..p[1], 'x'..p[1], 'z'..p[1]}, } -- TODO: Grek if the default sort key is unsuitable }, standard_chars = { Latn = "AaBbCcÇçDdEeËëFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxYyZz", c.punc }, } m["ss"] = { "Swazi", 34014, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["st"] = { "Sotho", 34340, "bnt-sts", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["su"] = { "සුන්ඩා", 34002, "poz-msa", "Latn, Sund, Arab", ancestors = "osn", translit = { Sund = "Sund-translit" }, } m["sv"] = { "ස්වීඩන්", 9027, "gmq-eas", "Latn", ancestors = "gmq-osw-lat", sort_key = { remove_diacritics = c.grave .. c.acute .. c.circ .. c.tilde .. c.macron .. c.dacute .. c.caron .. c.cedilla .. "':", remove_exceptions = {"å"}, from = {"ø", "æ", "œ", "ß", "å", "aͤ", "oͤ"}, to = {"ö", "ae", "oe", "ss", "z" .. p[1], "ä", "ö"} }, standard_chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvXxYyÅåÄäÖö" .. c.punc, } m["sw"] = { "Swahili", 7838, "bnt-swh", "Latn, Arab", sort_key = { Latn = { from = {"ng'"}, to = {"ng" .. p[1]} }, }, } m["ta"] = { "දෙමළ", 5885, "dra-tam", "Taml", ancestors = "ta-mid", translit = "ta-translit", override_translit = true, } m["te"] = { "තෙලිඟු", 8097, "dra-tel", "Telu", translit = "te-translit", override_translit = true, } m["tg"] = { "Tajik", 9260, "ira-swi", "Cyrl, fa-Arab, Latn", ancestors = "fa-cls", translit = { Cyrl = "tg-translit" }, override_translit = true, strip_diacritics = { Cyrl = s["tg-stripdiacritics"], Latn = s["tg-stripdiacritics"], }, sort_key = { Cyrl = { from = {"ғ", "ё", "ӣ", "қ", "ӯ", "ҳ", "ҷ"}, to = {"г" .. p[1], "е" .. p[1], "и" .. p[1], "к" .. p[1], "у" .. p[1], "х" .. p[1], "ч" .. p[1]} }, }, } m["th"] = { "තායි", 9217, "tai-swe", "Thai, Khomt, Brai", translit = { Thai = "th-translit" }, sort_key = { Thai = "Thai-sortkey" }, } m["ti"] = { "Tigrinya", 34124, "sem-eth", "Ethi", translit = "Ethi-translit", } m["tk"] = { "Turkmen", 9267, "trk-ogz", "Latn, Cyrl, Arab", strip_diacritics = { Latn = s["tk-stripdiacritics"], Cyrl = s["tk-stripdiacritics"], }, sort_key = { Latn = { from = {"ç", "ä", "ž", "ň", "ö", "ş", "ü", "ý"}, to = {"c" .. p[1], "e" .. p[1], "j" .. p[1], "n" .. p[1], "o" .. p[1], "s" .. p[1], "u" .. p[1], "y" .. p[1]} }, Cyrl = { from = {"ё", "җ", "ң", "ө", "ү", "ә"}, to = {"е" .. p[1], "ж" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "э" .. p[1]} }, }, ancestors = "trk-eog", } m["tl"] = { "Tagalog", 34057, "phi", "Latn, Tglg", translit = { Tglg = "tl-translit" }, override_translit = true, strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.circ} }, standard_chars = { Latn = "AaBbKkDdEeGgHhIiLlMmNnOoPpRrSsTtUuWwYy", c.punc }, sort_key = { Latn = "tl-sortkey", }, } m["tn"] = { "Tswana", 34137, "bnt-sts", "Latn", } m["to"] = { "Tongan", 34094, "poz-ton", "Latn", strip_diacritics = {remove_diacritics = c.acute}, sort_key = {remove_diacritics = c.macron}, } m["tr"] = { "තුර්කි", 256, "trk-ogz", "Latn", ancestors = "ota", dotted_dotless_i = true, sort_key = { from = { -- Ignore circumflex, but account for capital Î wrongly becoming ı + circ due to dotted dotless I logic. "ı" .. c.circ, c.circ, "i", -- Ensure "i" comes after "ı". "ç", "ğ", "ı", "ö", "ş", "ü" }, to = { "i", "", "i" .. p[1], "c" .. p[1], "g" .. p[1], "i", "o" .. p[1], "s" .. p[1], "u" .. p[1] } }, standard_chars = "AaÂâBbCcÇçDdEeFfGgĞğHhIıİiÎîJjKkLlMmNnOoÖöPpRrSsŞşTtUuÛûÜüVvYyZz" .. c.punc, } m["ts"] = { "Tsonga", 34327, "bnt-tsr", "Latn", } m["tt"] = { "Tatar", 25285, "trk-kbu", "Cyrl, Latn, tt-Arab", translit = { Cyrl = "tt-translit", ["tt-Arab"] = "tt-translit" }, --override_translit = true, -- enable override until Module code can detect Russian loans such as [[аэропорт]] dotted_dotless_i = true, sort_key = { Cyrl = { from = {"ә", "ў", "ғ", "ё", "җ", "қ", "ң", "ө", "ү", "һ"}, to = {"а" .. p[1], "в" .. p[1], "г" .. p[1], "е" .. p[1], "ж" .. p[1], "к" .. p[1], "н" .. p[1], "о" .. p[1], "у" .. p[1], "х" .. p[1]} }, Latn = { from = { "i", -- Ensure "i" comes after "ı". "ä", "ə", "ç", "ğ", "ı", "ñ", "ŋ", "ö", "ɵ", "ş", "ü" }, to = { "i" .. p[1], "a" .. p[1], "a" .. p[2], "c" .. p[1], "g" .. p[1], "i", "n" .. p[1], "n" .. p[2], "o" .. p[1], "o" .. p[2], "s" .. p[1], "u" .. p[1] } }, }, } -- "tw" is treated as "ak", see [[WT:LT]] m["ty"] = { "Tahitian", 34128, "poz-pep", "Latn", } m["ug"] = { "Uyghur", 13263, "trk-kar", "ug-Arab, Latn, Cyrl", ancestors = "chg", translit = { ["ug-Arab"] = "ug-translit", Cyrl = "ug-translit", }, override_translit = true, } m["uk"] = { "යුක්‍රේනියානු", 8798, "zle", "Cyrl", ancestors = "zle-muk", translit = "uk-translit", strip_diacritics = {remove_diacritics = c.grave .. c.acute}, sort_key = { remove_diacritics = c.grave .. c.acute, from = { "ї", -- 2 chars "ґ", "є", "і" -- 1 char }, to = { "и" .. p[2], "г" .. p[1], "е" .. p[1], "и" .. p[1] } }, standard_chars = "АаБбВвГгДдЕеЄєЖжЗзИиІіЇїЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЬьЮюЯя" .. c.punc:gsub("'", ""), -- Exclude apostrophe. } m["ur"] = { "උර්දු", 1617, "inc-hnd", "ur-Arab, Hebr", translit = { ["ur-Arab"] = "ur-translit" }, strip_diacritics = { ["ur-Arab"] = { -- character "ۂ" code U+06C2 to "ه" and "هٔ" (U+0647 + U+0654) to "ه"; hamzatu l-waṣli to a regular alif from = {"هٔ", "ۂ", "ٱ"}, to = {"ہ", "ہ", "ا"}, remove_diacritics = c.fathatan .. c.dammatan .. c.kasratan .. c.fatha .. c.damma .. c.kasra .. c.shadda .. c.sukun .. c.nunghunna .. c.superalef }, }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] standard_chars = { ["ur-Arab"] = "ایببپتثجچحخدذرزژسشصضطظعغفقکگلࣇڷمنݨوؤہھئٹڈڑآے", c.punc, }, } m["uz"] = { "උස්බෙක්", 9264, "trk-kar", "Latn, Cyrl, fa-Arab", ancestors = "chg", translit = { Cyrl = "uz-translit" }, sort_key = { Latn = { from = {"oʻ", "gʻ", "sh", "ch", "ng"}, to = {"z" .. p[1], "z" .. p[2], "z" .. p[3], "z" .. p[4], "z" .. p[5]} }, Cyrl = { from = {"ё", "ў", "қ", "ғ", "ҳ"}, to = {"е" .. p[1], "я" .. p[1], "я" .. p[2], "я" .. p[3], "я" .. p[4]} }, }, strip_diacritics = { ["fa-Arab"] = "ar-stripdiacritics", }, } m["ve"] = { "Venda", 32704, "bnt-bso", "Latn", } m["vi"] = { "වියට්නාම", 9199, "mkh-vie", "Latn, Hani", ancestors = "mkh-mvi", sort_key = { Latn = "vi-sortkey", Hani = "Hani-sortkey", }, } m["vo"] = { "Volapük", 36986, "art", "Latn", } m["wa"] = { "Walloon", 34219, "roa-oil", "Latn", sort_key = s["roa-oil-sortkey"], } m["wo"] = { "Wolof", 34257, "alv-fwo", "Latn, Arab, Gara", } m["xh"] = { "Xhosa", 13218, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } m["yi"] = { "යිඩිශ්", 8641, "gmw-hgm", "Hebr, Latn", ancestors = "gmh", translit = { Hebr = "yi-translit", }, -- Hebr display_text, strip_diacritics, sort_key in [[Module:scripts/data]] } m["yo"] = { "Yoruba", 34311, "alv-yor", "Latn, Arab", strip_diacritics = { Latn = {remove_diacritics = c.grave .. c.acute .. c.macron} }, sort_key = { Latn = { from = {"ẹ", "ɛ", "gb", "ị", "kp", "ọ", "ɔ", "ṣ", "sh", "ụ"}, to = {"e" .. p[1], "e" .. p[1], "g" .. p[1], "i" .. p[1], "k" .. p[1], "o" .. p[1], "o" .. p[1], "s" .. p[1], "s" .. p[1], "u" .. p[1]} }, }, } m["za"] = { "Zhuang", 13216, "tai", "Latn, Hani", sort_key = { Latn = "za-sortkey", Hani = "Hani-sortkey", }, } m["zh"] = { "චීන", 7850, "zhx", "Hants, Latn, Bopo, Nshu, Brai", ancestors = "ltc", generate_forms = "zh-generateforms", translit = { Hani = "zh-translit", Bopo = "zh-translit", }, sort_key = { Hani = "Hani-sortkey" }, } m["zu"] = { "සූලූ", 10179, "bnt-ngu", "Latn", strip_diacritics = {remove_diacritics = c.grave .. c.acute .. c.circ .. c.macron .. c.caron}, } return require("Module:languages").finalizeData(m, "language") bqs5deg1t1z3fjo62571xg3d3n5l35g Module:headword 828 7947 235397 230352 2026-06-02T04:27:46Z Lee 19 [[Prākrit]], [[:ප්‍රවර්ගය:ඉංග්‍රීසි terms spelled with ◌̄]] සිට [[:ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද]] වෙතට යොමු කිරීම 235397 Scribunto text/plain local m_sinhala_project = require("Module:sinhala project") local m_sinhala = require("Module:sinhala") local export = {} -- Named constants for all modules used, to make it easier to swap out sandbox versions. local debug_track_module = "Module:debug/track" local en_utilities_module = "Module:en-utilities" local si_utilities_module = "Module:si-utilities" local gender_and_number_module = "Module:gender and number" local headword_data_module = "Module:headword/data" local headword_page_module = "Module:headword/page" local links_module = "Module:links" local load_module = "Module:load" local pages_module = "Module:pages" local palindromes_module = "Module:palindromes" local pron_qualifier_module = "Module:pron qualifier" local scripts_module = "Module:scripts" local scripts_data_module = "Module:scripts/data" local script_utilities_module = "Module:script utilities" local script_utilities_data_module = "Module:script utilities/data" local string_utilities_module = "Module:string utilities" local table_module = "Module:table" local utilities_module = "Module:utilities" local concat = table.concat local dump = mw.dumpObject local insert = table.insert local ipairs = ipairs local max = math.max local new_title = mw.title.new local pairs = pairs local require = require local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local type = type local ufind = mw.ustring.find local ugmatch = mw.ustring.gmatch local ugsub = mw.ustring.gsub local umatch = mw.ustring.match --[==[ Loaders for functions in other modules, which overwrite themselves with the target function when called. This ensures modules are only loaded when needed, retains the speed/convenience of locally-declared pre-loaded functions, and has no overhead after the first call, since the target functions are called directly in any subsequent calls.]==] local function debug_track(...) debug_track = require(debug_track_module) return debug_track(...) end local function encode_entities(...) encode_entities = require(string_utilities_module).encode_entities return encode_entities(...) end local function extend(...) extend = require(table_module).extend return extend(...) end local function find_best_script_without_lang(...) find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang return find_best_script_without_lang(...) end local function format_categories(...) format_categories = require(utilities_module).format_categories return format_categories(...) end local function format_genders(...) format_genders = require(gender_and_number_module).format_genders return format_genders(...) end local function format_pron_qualifiers(...) format_pron_qualifiers = require(pron_qualifier_module).format_qualifiers return format_pron_qualifiers(...) end local function full_link(...) full_link = require(links_module).full_link return full_link(...) end local function get_current_L2(...) get_current_L2 = require(pages_module).get_current_L2 return get_current_L2(...) end local function get_link_page(...) get_link_page = require(links_module).get_link_page return get_link_page(...) end local function get_script(...) get_script = require(scripts_module).getByCode return get_script(...) end local function is_palindrome(...) is_palindrome = require(palindromes_module).is_palindrome return is_palindrome(...) end local function language_link(...) language_link = require(links_module).language_link return language_link(...) end local function load_data(...) load_data = require(load_module).load_data return load_data(...) end local function pattern_escape(...) pattern_escape = require(string_utilities_module).pattern_escape return pattern_escape(...) end local function pluralize(...) pluralize = require(si_utilities_module).pluralize return pluralize(...) end local function process_page(...) process_page = require(headword_page_module).process_page return process_page(...) end local function remove_links(...) remove_links = require(links_module).remove_links return remove_links(...) end local function shallow_copy(...) shallow_copy = require(table_module).shallowCopy return shallow_copy(...) end local function tag_text(...) tag_text = require(script_utilities_module).tag_text return tag_text(...) end local function tag_transcription(...) tag_transcription = require(script_utilities_module).tag_transcription return tag_transcription(...) end local function tag_translit(...) tag_translit = require(script_utilities_module).tag_translit return tag_translit(...) end local function trim(...) trim = require(string_utilities_module).trim return trim(...) end local function ulen(...) ulen = require(string_utilities_module).len return ulen(...) 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 m_data local function get_data() m_data = load_data(headword_data_module) return m_data end local script_data local function get_script_data() script_data = load_data(scripts_data_module) return script_data end local script_utilities_data local function get_script_utilities_data() script_utilities_data = load_data(script_utilities_data_module) return script_utilities_data end -- If set to true, categories always appear, even in non-mainspace pages local test_force_categories = false -- Add a tracking category to track entries with certain (unusually undesirable) properties. `track_id` is an identifier -- for the particular property being tracked and goes into the tracking page. Specifically, this adds a link in the -- page text to [[Wiktionary:Tracking/headword/TRACK_ID]], meaning you can find all entries with the `track_id` property -- by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID]]. -- -- If `lang` (a language object) is given, an additional tracking page [[Wiktionary:Tracking/headword/TRACK_ID/CODE]] is -- linked to where CODE is the language code of `lang`, and you can find all entries in the combination of `track_id` -- and `lang` by visiting [[Special:WhatLinksHere/Wiktionary:Tracking/headword/TRACK_ID/CODE]]. This makes it possible to -- isolate only the entries with a specific tracking property that are in a given language. Note that if `lang` -- references at etymology-only language, both that language's code and its full parent's code are tracked. local function track(track_id, lang) local tracking_page = "headword/" .. track_id if lang and lang:hasType("etymology-only") then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode(), tracking_page .. "/" .. lang:getFullCode()} elseif lang then debug_track{tracking_page, tracking_page .. "/" .. lang:getCode()} else debug_track(tracking_page) end return true end local function text_in_script(text, script_code) local sc = get_script(script_code) if not sc then error("Internal error: Bad script code " .. script_code) end local characters = sc.characters local out if characters then text = ugsub(text, "%W", "") out = ufind(text, "[" .. characters .. "]") end if out then return true else return false end end local spacingPunctuation = "[%s%p]+" --[[ List of punctuation or spacing characters that are found inside of words. Used to exclude characters from the regex above. ]] local wordPunc = "-#%%&@־׳״'.·*’་•:᠊" local notWordPunc = "[^" .. wordPunc .. "]+" -- Format a term (either a head term or an inflection term) along with any left or right qualifiers, labels, references -- or customized separator: `part` is the object specifying the term (and `lang` the language of the term), which should -- optionally contain: -- * left qualifiers in `q`, an array of strings; -- * right qualifiers in `qq`, an array of strings; -- * left labels in `l`, an array of strings; -- * right labels in `ll`, an array of strings; -- * references in `refs`, an array either of strings (formatted reference text) or objects containing fields `text` -- (formatted reference text) and optionally `name` and/or `group`; -- * a separator in `separator`, defaulting to " <i>or</i> " if this is not the first term (j > 1), otherwise "". -- `formatted` is the formatted version of the term itself, and `j` is the index of the term. local function format_term_with_qualifiers_and_refs(lang, part, formatted, j) local function part_non_empty(field) local list = part[field] if not list then return nil end if type(list) ~= "table" then error(("Internal error: Wrong type for `part.%s`=%s, should be \"table\""):format(field, dump(list))) end return list[1] end if part_non_empty("q") or part_non_empty("qq") or part_non_empty("l") or part_non_empty("ll") or part_non_empty("refs") then formatted = format_pron_qualifiers { lang = lang, text = formatted, q = part.q, qq = part.qq, l = part.l, ll = part.ll, refs = part.refs, } end local separator = part.separator or j > 1 and " <i>or</i> " -- use "" to request no separator if separator then formatted = separator .. formatted end return formatted end --[==[Return true if the given head is multiword according to the algorithm used in full_headword().]==] function export.head_is_multiword(head) for possibleWordBreak in ugmatch(head, spacingPunctuation) do if umatch(possibleWordBreak, notWordPunc) then return true end end return false end do local function workaround_to_exclude_chars(s) return (ugsub(s, notWordPunc, "\2%1\1")) end --[==[Add links to a multiword head.]==] function export.add_multiword_links(head, default) head = "\1" .. ugsub(head, spacingPunctuation, workaround_to_exclude_chars) .. "\2" if default then head = head :gsub("(\1[^\2]*)\\([:#][^\2]*\2)", "%1\\\\%2") :gsub("(\1[^\2]*)([:#][^\2]*\2)", "%1\\%2") end --Escape any remaining square brackets to stop them breaking links (e.g. "[citation needed]"). head = encode_entities(head, "[]", true, true) --[=[ use this when workaround is no longer needed: head = "[[" .. ugsub(head, WORDBREAKCHARS, "]]%1[[") .. "]]" Remove any empty links, which could have been created above at the beginning or end of the string. ]=] return (head :gsub("\1\2", "") :gsub("[\1\2]", {["\1"] = "[[", ["\2"] = "]]"})) end end local function non_categorizable(full_raw_pagename) return full_raw_pagename:find("^උපග්‍රන්ථය:Gestures/") or -- Unsupported titles with descriptive names. (full_raw_pagename:find("^Unsupported titles/") and not full_raw_pagename:find("`")) end local function tag_text_and_add_quals_and_refs(data, head, formatted, j) -- Add language and script wrapper. formatted = tag_text(formatted, data.lang, head.sc, "head", nil, j == 1 and data.id or nil) -- Add qualifiers, labels, references and separator. return format_term_with_qualifiers_and_refs(data.lang, head, formatted, j) end -- Format a headword with transliterations. local function format_headword(data) -- Are there non-empty transliterations? local has_translits = false local has_manual_translits = false ------ Format the headwords. ------ local head_parts = {} local unique_head_parts = {} local has_multiple_heads = not not data.heads[2] for j, head in ipairs(data.heads) do if head.tr or head.ts then has_translits = true end if head.tr and head.tr_manual or head.ts then has_manual_translits = true end local formatted -- Apply processing to the headword, for formatting links and such. if head.term:find("[[", nil, true) and head.sc:getCode() ~= "Image" then formatted = language_link{term = head.term, lang = data.lang} else formatted = data.lang:makeDisplayText(head.term, head.sc, true) end local head_part = tag_text_and_add_quals_and_refs(data, head, formatted, j) insert(head_parts, head_part) -- If multiple heads, try to determine whether all heads display the same. To do this we need to effectively -- rerun the text tagging and addition of qualifiers and references, using 1 for all indices. if has_multiple_heads then local unique_head_part if j == 1 then unique_head_part = head_part else unique_head_part = tag_text_and_add_quals_and_refs(data, head, formatted, 1) end unique_head_parts[unique_head_part] = true end end local set_size = 0 if has_multiple_heads then for _ in pairs(unique_head_parts) do set_size = set_size + 1 end end if set_size == 1 then head_parts = head_parts[1] else head_parts = concat(head_parts) end if has_manual_translits then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/manual-tr/LANGCODE]] track("manual-tr", data.lang) end ------ Format the transliterations and transcriptions. ------ local translits_formatted if has_translits then local translit_parts = {} for _, head in ipairs(data.heads) do if head.tr or head.ts then local this_parts = {} if head.tr then insert(this_parts, tag_translit(head.tr, data.lang:getCode(), "head", nil, head.tr_manual)) if head.ts then insert(this_parts, " ") end end if head.ts then insert(this_parts, "/" .. tag_transcription(head.ts, data.lang:getCode(), "head") .. "/") end insert(translit_parts, concat(this_parts)) end end translits_formatted = " (" .. concat(translit_parts, " <i>or</i> ") .. ")" local langname = data.lang:getCanonicalName() local transliteration_page = new_title(langname .. " transliteration", "Wiktionary") local saw_translit_page = false if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted saw_translit_page = true end -- If data.lang is an etymology-only language and we didn't find a translation page for it, fall back to the -- full parent. if not saw_translit_page and data.lang:hasType("etymology-only") then langname = data.lang:getFullName() transliteration_page = new_title(langname .. " transliteration", "Wiktionary") if transliteration_page and transliteration_page:getContent() then translits_formatted = " [[Wiktionary:" .. langname .. " transliteration|•]]" .. translits_formatted end end else translits_formatted = "" end ------ Paste heads and transliterations/transcriptions. ------ local lemma_gloss if data.gloss then lemma_gloss = ' <span class="ib-content qualifier-content">' .. data.gloss .. '</span>' else lemma_gloss = "" end return head_parts .. translits_formatted .. lemma_gloss end local function format_headword_genders(data) local retval = "" if data.genders and data.genders[1] then if data.gloss then retval = "," end local pos_for_cat if not data.nogendercat then local no_gender_cat = (m_data or get_data()).no_gender_cat if not (no_gender_cat[data.lang:getCode()] or no_gender_cat[data.lang:getFullCode()]) then pos_for_cat = (m_data or get_data()).pos_for_gender_number_cat[data.pos_category:gsub("^reconstructed ", "")] end end local text, cats = format_genders(data.genders, data.lang, pos_for_cat) if cats then extend(data.categories, cats) end retval = retval .. "&nbsp;" .. text end return retval end -- Forward reference local format_inflections local function format_inflection_parts(data, parts) for j, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local partaccel = part.accel local face = part.face or "bold" if face ~= "bold" and face ~= "plain" and face ~= "hypothetical" then error("The face `" .. face .. "` " .. ( (script_utilities_data or get_script_utilities_data()).faces[face] and "should not be used for non-headword terms on the headword line." or "is invalid." )) end -- Here the final part 'or data.nolinkinfl' allows to have 'nolinkinfl=true' -- right into the 'data' table to disable inflection links of the entire headword -- when inflected forms aren't entry-worthy, e.g.: in Vulgar Latin local nolinkinfl = part.face == "hypothetical" or (part.nolink and track("nolink") or part.nolinkinfl) or ( data.nolink and track("nolink") or data.nolinkinfl) local formatted if part.label then -- FIXME: There should be a better way of italicizing a label. As is, this isn't customizable. formatted = "<i>" .. m_sinhala.sinhala(part.label) .. "</i>" else -- Convert the term into a full link. Don't show a transliteration here unless enable_auto_translit is -- requested, either at the `parts` level (i.e. per inflection) or at the `data.inflections` level (i.e. -- specified for all inflections). This is controllable in {{head}} using autotrinfl=1 for all inflections, -- or fNautotr=1 for an individual inflection (remember that a single inflection may be associated with -- multiple terms). The reason for doing this is to avoid clutter in headword lines by default in languages -- where the script is relatively straightforward to read by learners (e.g. Greek, Russian), but allow it -- to be enabled in languages with more complex scripts (e.g. Arabic). -- -- FIXME: With nested inflections, should we also respect `enable_auto_translit` at the top level of the -- nested inflections structure? local tr = part.tr or not (parts.enable_auto_translit or data.inflections.enable_auto_translit) and "-" or nil -- FIXME: Temporary errors added 2025-10-03. Remove after a month or so. if part.translit then error("Internal error: Use field `tr` not `translit` for specifying an inflection part translit") end if part.transcription then error("Internal error: Use field `ts` not `transcription` for specifying an inflection part transcription") end local postprocess_annotations if part.inflections then postprocess_annotations = function(infldata) insert(infldata.annotations, format_inflections(data, part.inflections)) end end formatted = full_link( { term = not nolinkinfl and part.term or nil, alt = part.alt or (nolinkinfl and part.term or nil), lang = part.lang or data.lang, sc = part.sc or parts.sc or nil, gloss = part.gloss, pos = part.pos, lit = part.lit, id = part.id, genders = part.genders, tr = tr, ts = part.ts, accel = partaccel or parts.accel, postprocess_annotations = postprocess_annotations, }, face ) end parts[j] = format_term_with_qualifiers_and_refs(part.lang or data.lang, part, formatted, j) end local parts_output if parts[1] then parts_output = (parts.label and " " or "") .. concat(parts) elseif parts.request then parts_output = " <small>[please provide]</small>" insert(data.categories, "Requests for inflections in " .. data.lang:getFullName() .. " entries") else parts_output = "" end local parts_label = parts.label and ("<i>" .. m_sinhala.sinhala(parts.label) .. "</i>") or "" return format_term_with_qualifiers_and_refs(data.lang, parts, parts_label .. parts_output, 1) end -- Format the inflections following the headword or nested after a given inflection. Declared local above. function format_inflections(data, inflections) if inflections and inflections[1] then -- Format each inflection individually. for key, infl in ipairs(inflections) do inflections[key] = format_inflection_parts(data, infl) end return concat(inflections, ", ") else return "" end end -- Format the top-level inflections following the headword. Currently this just adds parens around the -- formatted comma-separated inflections in `data.inflections`. local function format_top_level_inflections(data) local result = format_inflections(data, data.inflections) if result ~= "" then return " (" .. result .. ")" else return result end end -- Forward reference local check_red_link_inflections -- Check a single inflection (which consists of a label and zero or more terms, each possibly with nested inflections) -- for red links. If so, insert a red-link category based on `plpos` (the plural part of speech to insert in the -- category), stop further processing, and return true. If no red links found, return false. local function check_red_link_inflection_parts(data, parts, plpos) for _, part in ipairs(parts) do if type(part) ~= "table" then part = {term = part} end local term = part.term if term and not term:find("%[%[") then local stripped_physical_term = get_link_page(term, data.lang, part.sc or parts.sc or nil) if stripped_physical_term then local title = mw.title.new(stripped_physical_term) if title and not title:getContent() then insert(data.categories, data.lang:getFullName() .. " " .. m_sinhala.sinhala(plpos) .. ", යොමු වචන පේළි තුළ රතු සබැඳි සහිත") return true end end end if part.inflections then if check_red_link_inflections(data, part.inflections, plpos) then return true end end end return false end -- Check a set of inflections (each of which describes a single inflection of the term, such as feminine or plural, and -- consists of a label and zero or more terms, each possibly with nested inflections) for red links. If so, insert a -- red-link category based on `plpos` (the plural part of speech to insert in the category), stop further processing, -- and return true. If no red links found, return false. function check_red_link_inflections(data, inflections, plpos) if inflections and inflections[1] then -- Check each inflection individually. for key, infl in ipairs(inflections) do if check_red_link_inflection_parts(data, infl, plpos) then return true end end end return false end -- Check the top-level inflections in `data.inflections`, along with any nested inflections, for red links. If so, -- insert a red-link category based on `plpos` (the plural part of speech to insert in the category), stop further -- processing, and return true. If no red links found, return false. local function check_red_link_inflections_top_level(data, plpos) return check_red_link_inflections(data, data.inflections, plpos) end --[==[ Returns the plural form of `pos`, a raw part of speech input, which could be singular or plural. Irregular plural POS are taken into account (e.g. "kanji" pluralizes to "kanji"). ]==] function export.pluralize_pos(pos) -- Make the plural form of the part of speech return (m_data or get_data()).irregular_plurals[pos] or pos:sub(-1) == "s" and pos or pluralize(pos) end --[==[ Return "lemma" if the given POS is a lemma, "non-lemma form" if a non-lemma form, or nil if unknown. The POS passed in must be in its plural form ("nouns", "prefixes", etc.). If you have a POS in its singular form, call {export.pluralize_pos()} above to pluralize it in a smart fashion that knows when to add "-s" and when to add "-es", and also takes into account any irregular plurals. If `best_guess` is given and the POS is in neither the lemma nor non-lemma list, guess based on whether it ends in " forms"; otherwise, return nil. ]==] function export.pos_lemma_or_nonlemma(plpos, best_guess) local m_headword_data = m_data or get_data() local isLemma = m_headword_data.lemmas -- Is it a lemma category? if isLemma[plpos] then return "lemma" end local plpos_no_recon = plpos:gsub("^reconstructed ", "") if isLemma[plpos_no_recon] then return "lemma" end -- Is it a nonlemma category? local isNonLemma = m_headword_data.nonlemmas if isNonLemma[plpos] or isNonLemma[plpos_no_recon] then return "non-lemma form" end local plpos_no_mut = plpos:gsub("^mutated ", "") if isLemma[plpos_no_mut] or isNonLemma[plpos_no_mut] then return "non-lemma form" elseif best_guess then return plpos:find(" forms$") and "non-lemma form" or "lemma" else return nil end end --[==[ Canonicalize a part of speech as specified in 2= in {{tl|head}}. This checks for POS aliases and non-lemma form aliases ending in 'f', and then pluralizes if the POS term does not have an invariable plural. ]==] function export.canonicalize_pos(pos) -- FIXME: Temporary code to throw an error for alias 'pre' (= preposition) that will go away. if pos == "pre" then -- Don't throw error on 'pref' as it's an alias for "prefix". error("POS 'pre' for 'preposition' no longer allowed as it's too ambiguous; use 'prep'") end -- Likewise for pro = pronoun. if pos == "pro" or pos == "prof" then error("POS 'pro' for 'pronoun' no longer allowed as it's too ambiguous; use 'pron'") end local m_headword_data = m_data or get_data() if m_headword_data.pos_aliases[pos] then pos = m_headword_data.pos_aliases[pos] elseif pos:sub(-1) == "f" then pos = pos:sub(1, -2) pos = (m_headword_data.pos_aliases[pos] or pos) .. " forms" end return export.pluralize_pos(pos) end -- Find and return the maximum index in the array `data[element]` (which may have gaps in it), and initialize it to a -- zero-length array if unspecified. Check to make sure all keys are numeric (other than "maxindex", which is set by -- [[Module:parameters]] for list parameters), all values are strings, and unless `allow_blank_string` is given, -- no blank (zero-length) strings are present. local function init_and_find_maximum_index(data, element, allow_blank_string) local maxind = 0 if not data[element] then data[element] = {} end local typ = type(data[element]) if typ ~= "table" then error(("Internal error: In full_headword(), `data.%s` must be an array but is a %s"):format(element, typ)) end for k, v in pairs(data[element]) do if k ~= "maxindex" then if type(k) ~= "number" then error(("Internal error: Unrecognized non-numeric key '%s' in `data.%s`"):format(k, element)) end if k > maxind then maxind = k end if v then if type(v) ~= "string" then error(("Internal error: For key '%s' in `data.%s`, value should be a string but is a %s"):format(k, element, type(v))) end if not allow_blank_string and v == "" then error(("Internal error: For key '%s' in `data.%s`, blank string not allowed; use 'false' for the default"):format(k, element)) end end end end return maxind end --[==[ -- Add the page to various maintenance categories for the language and the -- whole page. These are placed in the headword somewhat arbitrarily, but -- mainly because headword templates are mandatory for entries (meaning that -- in theory it provides full coverage). -- -- This is provided as an external entry point so that modules which transclude -- information from other entries (such as {{tl|ja-see}}) can take advantage -- of this feature as well, because they are used in place of a conventional -- headword template.]==] do -- Handle any manual sortkeys that have been specified in raw categories -- by tracking if they are the same or different from the automatically- -- generated sortkey, so that we can track them in maintenance -- categories. local function handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) sortkey = sortkey or lang:makeSortKey(page.pagename) -- If there are raw categories with no sortkey, then they will be -- sorted based on the default MediaWiki sortkey, so we check against -- that. if tbl == true then if page.raw_defaultsort ~= sortkey then insert(lang_cats, lang:getFullName() .. " යෙදුම්, non-redundant non-automated සෝට්කී සහිත") end return end local redundant, different for k in pairs(tbl) do if k == sortkey then redundant = true else different = true end end if redundant then insert(lang_cats, lang:getFullName() .. " terms with redundant sortkeys") end if different then insert(lang_cats, lang:getFullName() .. " යෙදුම්, non-redundant non-automated සෝට්කී සහිත") end return sortkey end function export.maintenance_cats(page, lang, lang_cats, page_cats) extend(page_cats, page.cats) lang = lang:getFull() -- since we are just generating categories local canonical = lang:getCanonicalName() local tbl, sortkey = page.wikitext_topic_cat[lang:getCode()] if tbl then sortkey = handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " ප්‍රවේශ, ඍජු එක් කිරීම මගින් මාතෘකා ප්‍රවර්ග දක්වා ඇති") end tbl = page.wikitext_langname_cat[canonical] if tbl then handle_raw_sortkeys(tbl, sortkey, page, lang, lang_cats) insert(lang_cats, canonical .. " ප්‍රවේශ, ඍජු එක් කිරීම මගින් භාෂා නාම ප්‍රවර්ග දක්වා ඇති") end if get_current_L2() ~= canonical then insert(lang_cats, canonical .. " ප්‍රවේශ, දෝෂ සහගත භාෂා ශීර්ෂක සහිත") -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/incorrect language header/LANGCODE]] track("incorrect language header", lang) end end end --[==[This is the primary external entry point. {{lua|full_headword(data)}} This is used by {{temp|head}} and various language-specific headword templates (e.g. {{temp|ru-adj}} for Russian adjectives, {{temp|de-noun}} for German nouns, etc.) to display an entire headword line. See [[#Further explanations for full_headword()]] ]==] function export.full_headword(data) -- Prevent data from being destructively modified. local data = shallow_copy(data) ------------ 1. Basic checks for old-style (multi-arg) calling convention. ------------ if data.getCanonicalName then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) of properties, not a language object") end if not data.lang or type(data.lang) ~= "table" or not data.lang.getCode then error("Internal error: In full_headword(), the first argument `data` needs to be a Lua object (table) and `data.lang` must be a language object") end if data.id and type(data.id) ~= "string" then error("Internal error: The id in the data table should be a string.") end ------------ 2. Initialize pagename etc. ------------ local langcode = data.lang:getCode() local full_langcode = data.lang:getFullCode() local langname = data.lang:getCanonicalName() local full_langname = data.lang:getFullName() local raw_pagename = data.pagename local page local m_headword_data = m_data or get_data() if raw_pagename and raw_pagename ~= m_headword_data.pagename then -- for testing, doc pages, etc. -- data.pagename is often set on documentation and test pages through the pagename= parameter of various -- templates, to emulate running on that page. Having a large number of such test templates on a single -- page often leads to timeouts, because we fetch and parse the contents of each page in turn. However, -- we don't really need to do that and can function fine without fetching and parsing the contents of a -- given page, so turn off content fetching/parsing (and also setting the DEFAULTSORT key through a parser -- function, which is *slooooow*) in certain namespaces where test and documentation templates are likely to -- be found and where actual content does not live (User, Template, Module). local actual_namespace = m_headword_data.page.namespace local no_fetch_content = actual_namespace == "User" or actual_namespace == "Template" or actual_namespace == "Module" page = process_page(raw_pagename, no_fetch_content) else page = m_headword_data.page end local namespace = m_sinhala_project.getPageNamespaceFromParams(page.namespace, page.pagename) ------------ 3. Initialize `data.heads` table; if old-style, convert to new-style. ------------ if type(data.heads) == "table" and type(data.heads[1]) == "table" then -- new-style if data.translits or data.transcriptions then error("Internal error: In full_headword(), if `data.heads` is new-style (array of head objects), `data.translits` and `data.transcriptions` cannot be given") end else -- convert old-style `heads`, `translits` and `transcriptions` to new-style local maxind = max( init_and_find_maximum_index(data, "heads"), init_and_find_maximum_index(data, "translits", true), init_and_find_maximum_index(data, "transcriptions", true) ) for i = 1, maxind do data.heads[i] = { term = data.heads[i], tr = data.translits[i], ts = data.transcriptions[i], } end end -- Make sure there's at least one head. if not data.heads[1] then data.heads[1] = {} end ------------ 4. Initialize and validate `data.categories` and `data.whole_page_categories`, and determine `pos_category` if not given, and add basic categories. ------------ -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then data.noposcat = true end init_and_find_maximum_index(data, "categories") init_and_find_maximum_index(data, "whole_page_categories") local pos_category_already_present = false if data.categories[1] then local escaped_langname = pattern_escape(full_langname) local matches_lang_pattern = "^" .. escaped_langname .. " " for _, cat in ipairs(data.categories) do -- Does the category begin with the language name? If not, tag it with a tracking category. if not cat:find(matches_lang_pattern) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/no lang category/LANGCODE]] track("no lang category", data.lang) end end -- If `pos_category` not given, try to infer it from the first specified category. If this doesn't work, we -- throw an error below. if not data.pos_category and data.categories[1]:find(matches_lang_pattern) then data.pos_category = data.categories[1]:gsub(matches_lang_pattern, "") -- Optimization to avoid inserting category already present. pos_category_already_present = true end end if not data.pos_category then error("Internal error: `data.pos_category` not specified and could not be inferred from the categories given in " .. "`data.categories`. Either specify the plural part of speech in `data.pos_category` " .. "(e.g. \"proper nouns\") or ensure that the first category in `data.categories` is formed from the " .. "language's canonical name plus the plural part of speech (e.g. \"Norwegian Bokmål proper nouns\")." ) end -- Insert a category at the beginning for the part of speech unless it's already present or `data.noposcat` given. if not pos_category_already_present and not data.noposcat then local pos_category = full_langname .. " " .. m_sinhala.sinhala(data.pos_category) -- FIXME: [[User:Theknightwho]] Why is this special case here? Please add an explanatory comment. if pos_category ~= "Translingual Han characters" then insert(data.categories, 1, pos_category) end end -- Try to determine whether the part of speech refers to a lemma or a non-lemma form; if we can figure this out, -- add an appropriate category. local postype = export.pos_lemma_or_nonlemma(data.pos_category) if not postype then -- We don't know what this category is, so tag it with a tracking category. -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/LANGCODE]] track("unrecognized pos", data.lang) -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/unrecognized pos/POS/LANGCODE]] track("unrecognized pos/pos/" .. data.pos_category, data.lang) elseif not data.noposcat then insert(data.categories, 1, full_langname .. " " .. m_sinhala.sinhala_plural(postype)) end -- EXPERIMENTAL: see [[Wiktionary:Beer parlour/2024/June#Decluttering the altform mess]] if data.altform then insert(data.categories, 1, full_langname .. " alternative forms") end ------------ 5. Create a default headword, and add links to multiword page names. ------------ -- Determine if this is an "anti-asterisk" term, i.e. an attested term in a language that must normally be -- reconstructed. local is_anti_asterisk = data.heads[1].term and data.heads[1].term:find("^!!") local lang_reconstructed = data.lang:hasType("reconstructed") if is_anti_asterisk then if not lang_reconstructed then error("Anti-asterisk feature (head= beginning with !!) can only be used with reconstructed languages") end lang_reconstructed = false end -- Determine if term is reconstructed local is_reconstructed = namespace == "Reconstruction" or lang_reconstructed -- Create a default headword based on the pagename, which is determined in -- advance by the data module so that it only needs to be done once. local default_head = page.pagename -- Add links to multi-word page names when appropriate if not (is_reconstructed or data.nolinkhead) then local no_links = m_headword_data.no_multiword_links if not (no_links[langcode] or no_links[full_langcode]) and export.head_is_multiword(default_head) then default_head = export.add_multiword_links(default_head, true) end end if is_reconstructed then default_head = "*" .. default_head end ------------ 6. Check the namespace against the language type. ------------ if namespace == "" then if lang_reconstructed then error("Entries in " .. langname .. " must be placed in the Reconstruction: namespace") elseif data.lang:hasType("appendix-constructed") then error("Entries in " .. langname .. " must be placed in the Appendix: namespace") end elseif namespace == "Citations" or namespace == "Thesaurus" then error("Headword templates should not be used in the " .. namespace .. ": namespace.") end ------------ 7. Fill in missing values in `data.heads`. ------------ -- True if any script among the headword scripts has spaces in it. local any_script_has_spaces = false -- True if any term has a redundant head= param. local has_redundant_head_param = false for _, head in ipairs(data.heads) do ------ 7a. If missing head, replace with default head. if not head.term then head.term = default_head elseif head.term == default_head then has_redundant_head_param = true elseif is_anti_asterisk and head.term == "!!" then -- If explicit head=!! is given, it's an anti-asterisk term and we fill in the default head. head.term = "!!" .. default_head elseif head.term:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head. head.term = default_head .. head.term end head.term_no_initial_bang_bang = is_anti_asterisk and head.term:sub(3) or head.term if is_reconstructed then local head_term = head.term if head_term:find("%[%[") then head_term = remove_links(head_term) end if head_term:sub(1, 1) ~= "*" then error("The headword '" .. head_term .. "' must begin with '*' to indicate that it is reconstructed.") end end ------ 7b. Try to detect the script(s) if not provided. If a per-head script is provided, that takes precedence, ------ otherwise fall back to the overall script if given. If neither given, autodetect the script. local auto_sc = data.lang:findBestScript(head.term) if ( auto_sc:getCode() == "None" and find_best_script_without_lang(head.term):getCode() ~= "None" ) then insert(data.categories, full_langname .. " terms in nonstandard scripts") end if not (head.sc or data.sc) then -- No script code given, so use autodetected script. head.sc = auto_sc else if not head.sc then -- Overall script code given. head.sc = data.sc end -- Track uses of sc parameter. if head.sc:getCode() == auto_sc:getCode() then track("redundant script code", data.lang) if not data.no_script_code_cat then insert(data.categories, full_langname .. " terms with redundant script codes") end else track("non-redundant manual script code", data.lang) if not data.no_script_code_cat then insert(data.categories, full_langname .. " terms with non-redundant manual script codes") end end end -- If using a discouraged character sequence, add to maintenance category. if head.sc:hasNormalizationFixes() == true then local composed_head = toNFC(head.term) if head.sc:fixDiscouragedSequences(composed_head) ~= composed_head then insert(data.whole_page_categories, "Pages using discouraged character sequences") end end any_script_has_spaces = any_script_has_spaces or head.sc:hasSpaces() ------ 7c. Create automatic transliterations for any non-Latin headwords without manual translit given ------ (provided automatic translit is available, e.g. not in Persian or Hebrew). -- Make transliterations head.tr_manual = nil -- Try to generate a transliteration if necessary if head.tr == "-" then head.tr = nil else local notranslit = m_headword_data.notranslit if not (notranslit[langcode] or notranslit[full_langcode]) and head.sc:isTransliterated() then head.tr_manual = not not head.tr local text = head.term_no_initial_bang_bang if not data.lang:link_tr(head.sc) then text = remove_links(text) end local automated_tr = data.lang:transliterate(text, head.sc) if automated_tr then local manual_tr = head.tr if manual_tr then if remove_links(manual_tr) == remove_links(automated_tr) then insert(data.categories, full_langname .. " terms with redundant transliterations") else insert(data.categories, full_langname .. " terms with non-redundant manual transliterations") end end if not manual_tr then head.tr = automated_tr end end -- There is still no transliteration? -- Add the entry to a cleanup category. if not head.tr then head.tr = "<small>transliteration needed</small>" -- FIXME: No current support for 'Request for transliteration of Classical Persian terms' or similar. -- Consider adding this support in [[Module:category tree/poscatboiler/data/entry maintenance]]. insert(data.categories, "Requests for transliteration of " .. full_langname .. " terms") else -- Otherwise, trim it. head.tr = trim(head.tr) end end end -- Link to the transliteration entry for languages that require this. if head.tr and data.lang:link_tr(head.sc) then head.tr = full_link{ term = head.tr, lang = data.lang, sc = get_script("Latn"), tr = "-" } end end ------------ 8. Maybe tag the title with the appropriate script code, using the `display_title` mechanism. ------------ -- Assumes that the scripts in "toBeTagged" will never occur in the Reconstruction namespace. -- (FIXME: Don't make assumptions like this, and if you need to do so, throw an error if the assumption is violated.) -- Avoid tagging ASCII as Hani even when it is tagged as Hani in the headword, as in [[check]]. The check for ASCII -- might need to be expanded to a check for any Latin characters and whitespace or punctuation. local display_title -- Where there are multiple headwords, use the script for the first. This assumes the first headword is similar to -- the pagename, and that headwords that are in different scripts from the pagename aren't first. This seems to be -- about the best we can do (alternatively we could potentially do script detection on the pagename). local dt_script = data.heads[1].sc local dt_script_code = dt_script:getCode() local page_non_ascii = namespace == "" and not page.pagename:find("^[%z\1-\127]+$") local unsupported_pagename, unsupported = page.full_raw_pagename:gsub("^Unsupported titles/", "") if unsupported == 1 and page.unsupported_titles[unsupported_pagename] then display_title = 'Unsupported titles/<span class="' .. dt_script_code .. '">' .. page.unsupported_titles[unsupported_pagename] .. '</span>' elseif page_non_ascii and m_headword_data.toBeTagged[dt_script_code] or (dt_script_code == "Jpan" and (text_in_script(page.pagename, "Hira") or text_in_script(page.pagename, "Kana"))) or (dt_script_code == "Kore" and text_in_script(page.pagename, "Hang")) then display_title = '<span class="' .. dt_script_code .. '">' .. page.full_raw_pagename .. '</span>' -- Keep Han entries region-neutral in the display title. elseif page_non_ascii and (dt_script_code == "Hant" or dt_script_code == "Hans") then display_title = '<span class="Hani">' .. page.full_raw_pagename .. '</span>' elseif namespace == "Reconstruction" then local matched display_title, matched = ugsub( page.full_raw_pagename, "^(Reconstruction:[^/]+/)(.+)$", function(before, term) return before .. tag_text(term, data.lang, dt_script) end ) if matched == 0 then display_title = nil end end -- FIXME: Generalize this. -- If the current language uses ur-Arab (for Urdu, etc.), ku-Arab (Central Kurdish) or pa-Arab -- (Shahmukhi, for Punjabi) and there's more than one language on the page, don't set the display title -- because these three scripts display in Nastaliq and we don't want this for terms that also exist in other -- languages that don't display in Nastaliq (e.g. Arabic or Persian) to display in Nastaliq. Because the word -- "Urdu" occurs near the end of the alphabet, Urdu fonts tend to override the fonts of other languages. -- FIXME: This is checking for more than one language on the page but instead needs to check if there are any -- languages using scripts other than the ones just mentioned. if (dt_script_code == "ur-Arab" or dt_script_code == "ku-Arab" or dt_script_code == "pa-Arab") and page.L2_list.n > 1 then display_title = nil end if display_title then mw.getCurrentFrame():callParserFunction( "DISPLAYTITLE", display_title ) end ------------ 9. Insert additional categories. ------------ if data.force_cat_output then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/force cat output]] track("force cat output") end if has_redundant_head_param then if not data.no_redundant_head_cat then -- This is not the right way to go about this; too many exceptions and problems due to language-specific headword -- handling customization. If we want this, it should be opt-in by a given language passing in the default headword. -- insert(data.categories, full_langname .. " terms with redundant head parameter") end end -- If the first head is multiword (after removing links), maybe insert into "LANG multiword terms". if not data.nomultiwordcat and any_script_has_spaces and postype == "lemma" then local no_multiword_cat = m_headword_data.no_multiword_cat if not (no_multiword_cat[langcode] or no_multiword_cat[full_langcode]) then -- Check for spaces or hyphens, but exclude prefixes and suffixes. -- Use the pagename, not the head= value, because the latter may have extra -- junk in it, e.g. superscripted text that throws off the algorithm. local no_hyphen = m_headword_data.hyphen_not_multiword_sep -- Exclude hyphens if the data module states that they should for this language. local checkpattern = (no_hyphen[langcode] or no_hyphen[full_langcode]) and ".[%s፡]." or ".[%s%-፡]." local is_multiword = umatch(page.pagename, checkpattern) if is_multiword and not non_categorizable(page.full_raw_pagename) then insert(data.categories, full_langname .. " බහු පද යෙදුම්") elseif not is_multiword then local long_word_threshold = m_headword_data.long_word_thresholds[langcode] or m_headword_data.long_word_thresholds[full_langcode] if long_word_threshold and ulen(page.pagename) >= long_word_threshold then insert(data.categories, "Long " .. full_langname .. " words") end end end end local default_sccat = m_headword_data.default_sccat if data.sccat or data.sccat == nil and (default_sccat[langcode] or default_sccat[full_langcode]) then for _, head in ipairs(data.heads) do insert(data.categories, full_langname .. " " .. m_sinhala.sinhala(data.pos_category) .. ", " .. head.sc:getDisplayForm() .. " භාවිතා කොට ලියන ලද ") end end -- Reconstructed terms often use weird combinations of scripts and realistically aren't spelled so much as notated. if namespace ~= "Reconstruction" then -- Map from languages to a string containing the characters to ignore when considering whether a term has -- multiple written scripts in it. Typically these are Greek or Cyrillic letters used for their phonetic -- values. local characters_to_ignore = { ["aaq"] = "αάὰ", -- Penobscot (Algonquian) ["acy"] = "δθ", -- Cypriot Arabic ["aez"] = "β", -- Aeka (Trans-New Guinea) ["anc"] = "γ", -- Ngas (Chadic/Afroasiatic) ["aou"] = "χ", -- A'ou (Kra-Dai) ["art-blk"] = "ч", -- Bolak (conlang) ["awg"] = "β", -- Anguthimri (Pama-Nyungan) ["az"] = "ь", -- Azerbaijani (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ba"] = "ь", -- Bashkir (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["bhp"] = "β", -- Bima (Austronesian) ["bjz"] = "β", -- Baruga (Trans-New Guinea) ["byk"] = "θ", -- Biao (Kra-Dai) ["cdy"] = "θ", -- Chadong (Kra-Dai) ["chp"] = "θ", -- Chipewyan (Athabaskan) ["cjh"] = "χ", -- Upper Chehalis (Salishan) ["clm"] = "χ", -- Klallam (Salishan) ["col"] = "χ", -- Colombia-Wenatchi (Salishan) ["coo"] = "χθ", -- Comox (Salishan) ["crx"] = "θ", -- Carrier (Athabaskan) ["ets"] = "θ", -- Yekhee (Edoid/Niger-Congo) ["ett"] = "χ", -- Etruscan (isolate; in romanizations) ["fla"] = "χ", -- Montana Salish (Salishan) ["grt"] = "་", -- Garo (South Asian Sino-Tibetan) ["gmw-gts"] = "χ", -- Gottscheerish (Bavarian variant spoken in Slovenia) ["hur"] = "χθ", -- Halkomelem (Salishan) ["itc-psa"] = "f", -- Pre-Samnite (Italic; normally written in Greek) ["izh"] = "ь", -- Ingrian (Finnic) ["kic"] = "θ", -- Kickapoo (Algonquian) ["kk"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["ky"] = "ь", -- Kyrgyz (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["lil"] = "χ", -- Lillooet (Salishan) ["lsi"] = "ꓹ", -- Lashi (Lolo-Burmese/Sino-Tibetan; represents a glottal stop) ["mhz"] = "β", -- Mor (Austronesian) ["mqn"] = "β", -- Moronene (Austronesian) ["neg"]= "ӡā", -- Negidal (Tungusic; normally in Cyrillic) ["oka"] = "χ", -- Okanagan (Salishan) ["ole"] = "θ", -- Olekha (Sino-Tibetan) ["oui"] = "γβ", -- Old Uyghur (Turkic; FIXME: others? E.g. Greek delta (δ)?) ["pox"] = "χ", -- Polabian (West Slavic) ["rif"] = "ε", -- Tarifit (Berber) ["rom"] = "Θθ", -- Romani (Indic: International Standard; two different thetas???) ["rpn"] = "β", -- Repanbitip (Austronesian) ["sah"] = "ь", -- Yakut (Turkic; 1929 - 1939 Latin spelling) ["sit-jap"] = "χ", -- Japhug (Sino-Tibetan) ["sjw"] = "θ", -- Shawnee (Algonquian) ["squ"] = "χ", -- Squamish (Salishan) ["str"] = "χθ", -- Saanich (Salishan) ["teh"] = "χ", -- Tehuelche (Chonan; spoken in Argentina) ["tep"] = "η", -- Tepecano (Uto-Aztecan) ["thp"] = "χ", -- Thompson (Salishan) ["tk"] = "ь", -- Turkmen (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["tt"] = "ь", -- Kazakh (Turkic; Yañalif Latin spelling, c. 1928 - 1938) ["twa"] = "χ", -- Twana (Salishan) ["wbl"] = "ы", -- Wakhi (Iranian) ["xbc"] = "ϸ", -- Bactrian (Iranian; represents š; normally written in Greek) ["yha"] = "θ", -- Baha (Kra-Dai) ["za"] = "зч", -- Zhuang (Tai/Kra-Dai); 1957-1982 alphabet used two Cyrillic letters (as well as some others like -- ƃ, ƅ, ƨ, ɯ and ɵ that look like Cyrillic or Greek but are actually Latin) ["zlw-slv"] = "χђћ", -- Slovincian (West Slavic; FIXME: χ is Greek, the other two are Cyrillic, but I'm not sure -- the currect characters are being chosen in the entry names) ["zng"] = "θ", -- Mang (Mon-Khmer) ["ztp"] = "θ", -- Loxicha Zapotec (Zapotecan) } -- Determine how many real scripts are found in the pagename, where we exclude symbols and such. We exclude -- scripts whose `character_category` is false as well as Zmth (mathematical notation symbols), which has a -- category of "Mathematical notation symbols". When counting scripts, we need to elide language-specific -- variants because e.g. Beng and as-Beng have slightly different characters but we don't want to consider them -- two different scripts (e.g. [[এৰ]] has two characters which are detected respectively as Beng and as-Beng). local seen_scripts = {} local num_seen_scripts = 0 local num_loops = 0 local canon_pagename = page.pagename local ch_to_ignore = characters_to_ignore[full_langcode] if ch_to_ignore then canon_pagename = ugsub(canon_pagename, "[" .. ch_to_ignore .. "]", "") end while true do if canon_pagename == "" or num_seen_scripts >= 2 or num_loops >= 10 then break end -- Make sure we don't get into a loop checking the same script over and over again; happens with e.g. [[ᠪᡳ]] num_loops = num_loops + 1 local pagename_script = find_best_script_without_lang(canon_pagename, "None only as last resort") local script_chars = pagename_script.characters if not script_chars then -- we are stuck; this happens with None break end local script_code = pagename_script:getCode() local replaced canon_pagename, replaced = ugsub(canon_pagename, "[" .. script_chars .. "]", "") if ( replaced and script_code ~= "Zmth" and (script_data or get_script_data())[script_code] and script_data[script_code].character_category ~= false ) then script_code = script_code:gsub("^.-%-", "") if not seen_scripts[script_code] then seen_scripts[script_code] = true num_seen_scripts = num_seen_scripts + 1 end end end if num_seen_scripts > 1 then insert(data.categories, full_langname .. " terms written in multiple scripts") end end -- Categorise for unusual characters. Takes into account combining characters, so that we can categorise for characters with diacritics that aren't encoded as atomic characters (e.g. U̠). These can be in two formats: single combining characters (i.e. character + diacritic(s)) or double combining characters (i.e. character + diacritic(s) + character). Each can have any number of diacritics. local standard = data.lang:getStandardCharacters() if standard and not non_categorizable(page.full_raw_pagename) then local function char_category(char) local specials = { ["#"] = "number sign", ["("] = "parentheses", [")"] = "parentheses", ["<"] = "angle brackets", [">"] = "angle brackets", ["["] = "square brackets", ["]"] = "square brackets", ["_"] = "underscore", ["{"] = "braces", ["|"] = "vertical line", ["}"] = "braces", ["ß"] = "ẞ", ["\205\133"] = "", -- this is UTF-8 for U+0345 ( ͅ) ["\239\191\189"] = "replacement character", } char = toNFD(char) :gsub(".[\128-\191]*", function(m) local new_m = specials[m] new_m = new_m or m:uupper() return new_m end) return toNFC(char) end if full_langcode ~= "hi" and full_langcode ~= "lo" then local standard_chars_scripts = {} for _, head in ipairs(data.heads) do standard_chars_scripts[head.sc:getCode()] = true end -- Iterate over the scripts, in case there is more than one (as they can have different sets of standard characters). for code in pairs(standard_chars_scripts) do local sc_standard = data.lang:getStandardCharacters(code) if sc_standard then if page.pagename_len > 1 then local explode_standard = {} local function explode(char) explode_standard[char] = true return "" end local sc_standard = ugsub(sc_standard, page.comb_chars.combined_double, explode) sc_standard = ugsub(sc_standard,page.comb_chars.combined_single, explode) :gsub(".[\128-\191]*", explode) local num_cat_inserted for char in pairs(page.explode_pagename) do if not explode_standard[char] then if char:find("[0-9]") then if not num_cat_inserted then insert(data.categories, full_langname .. " terms spelled with numbers") num_cat_inserted = true end elseif ufind(char, page.emoji_pattern) then insert(data.categories, full_langname .. " terms spelled with emoji") else local upper = char_category(char) if not explode_standard[upper] then char = upper end insert(data.categories, ("%s යෙදුම්, %s භාවිතා කොට ලියන ලද"):format(full_langname, char)) end end end end -- If a diacritic doesn't appear in any of the standard characters, also categorise for it generally. sc_standard = toNFD(sc_standard) for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_single) do if not umatch(sc_standard, diacritic) then insert(data.categories, ("%s යෙදුම්, ◌%s භාවිතා කොට ලියන ලද"):format(full_langname, diacritic)) end end for diacritic in ugmatch(page.decompose_pagename, page.comb_chars.diacritics_double) do if not umatch(sc_standard, diacritic) then insert(data.categories, full_langname .. " terms spelled with ◌" .. diacritic .. "◌") end end end end -- Ancient Greek, Hindi and Lao handled the old way for now, as their standard chars still need to be converted to the new format (because there are a lot of them). elseif ulen(page.pagename) ~= 1 then for character in ugmatch(page.pagename, "([^" .. standard .. "])") do local upper = char_category(character) if not umatch(upper, "[" .. standard .. "]") then character = upper end insert(data.categories, ("%s යෙදුම්, %s භාවිතා කොට ලියන ලද"):format(full_langname, character)) end end end if data.heads[1].sc:isSystem("alphabet") then local pagename, i = page.pagename:ulower(), 2 while umatch(pagename, "(%a)" .. ("%1"):rep(i)) do i = i + 1 insert(data.categories, full_langname .. " terms with " .. i .. " consecutive instances of the same letter") end end -- Categorise for palindromes if not data.nopalindromecat and namespace ~= "Reconstruction" and ulen(page.pagename) > 2 -- FIXME: Use of first script here seems hacky. What is the clean way of doing this in the presence of -- multiple scripts? and is_palindrome(page.pagename, data.lang, data.heads[1].sc) then insert(data.categories, full_langname .. " palindromes") end if namespace == "" and not lang_reconstructed then for _, head in ipairs(data.heads) do if page.full_raw_pagename ~= get_link_page(remove_links(head.term), data.lang, head.sc) then -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch]] -- [[Special:WhatLinksHere/Wiktionary:Tracking/headword/pagename spelling mismatch/LANGCODE]] track("pagename spelling mismatch", data.lang) break end end end -- Add red link category if called for and we're not a "large" page, where such checks are disabled. if data.checkredlinks and not m_headword_data.large_pages[m_headword_data.pagename] then local plposcat = type(data.checkredlinks) == "string" and data.checkredlinks or data.pos_category check_red_link_inflections_top_level(data, plposcat) end -- Add to various maintenance categories. export.maintenance_cats(page, data.lang, data.categories, data.whole_page_categories) ------------ 10. Format and return headwords, genders, inflections and categories. ------------ -- Format and return all the gathered information. This may add more categories (e.g. gender/number categories), -- so make sure we do it before evaluating `data.categories`. local text = '<span class="headword-line">' .. format_headword(data) .. format_headword_genders(data) .. format_top_level_inflections(data) .. '</span>' -- Language-specific categories. local cats = format_categories( data.categories, data.lang, data.sort_key, page.encoded_pagename, data.force_cat_output or test_force_categories, data.heads[1].sc ) -- Language-agnostic categories. local whole_page_cats = format_categories( data.whole_page_categories, nil, "-" ) return text .. cats .. whole_page_cats end return export qzhq8wdjo0x0pc9c91gihvik2cgiu28 Module:fr-headword 828 8015 235461 196400 2026-01-27T01:01:56Z en>Saph 0 235461 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local check_missing = false -- whether to check for missing forms local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local lang = require("Module:languages").getByCode("fr") local langname = lang:getCanonicalName() local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local concat = table.concat local insert = table.insert local remove = table.remove local sort = table.sort local u = mw.ustring.char local nnbsp = u(0x202F) -- NNBSP = narrow non-breaking space, used before ? and ! in French local prepositions = { "à ", "aux? ", "d[eu] ", "d['’]", "des ", "en ", "sous ", "sur ", "avec ", "pour ", "par ", "dans ", "contre ", "sans ", "comme ", "jusqu['’]", -- We could list others but you get diminishing returns } local no_split_apostrophe_words = { ["c'est"] = true, ["quelqu'un"] = true, ["aujourd'hui"] = true, } local function track(page) require("Module:debug").track("fr-headword/" .. page) return true end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end local function make_plural(form, special) local retval = require(romut_module).handle_multiword(form, special, make_plural, prepositions) if retval then if #retval > 1 then error("Internal error: Got multiple plurals from handle_multiword(): " .. concat(retval)) end return retval[1] end if form:match("[sxz]$") then return form elseif form:match("au$") then return form .. "x" elseif form:match("al$") then return form:gsub("al$", "aux") end return form .. "s" end local function make_feminine(form, special) local retval = require(romut_module).handle_multiword(form, special, make_feminine, prepositions) if retval then if #retval > 1 then error("Internal error: Got multiple feminines from handle_multiword(): " .. concat(retval)) end return retval[1] end if form:match("e$") then return form elseif form:match("en$") then return form .. "ne" elseif form:match("er$") then return form:gsub("er$", "ère") elseif form:match("el$") then return form .. "le" elseif form:match("et$") then return form .. "te" elseif form:match("on$") then return form .. "ne" elseif form:match("ieur$") then return form .. "e" elseif form:match("teur$") then return form:gsub("teur$", "trice") elseif form:match("eu[rx]$") then return form:gsub("eu[rx]$", "euse") elseif form:match("if$") then return form:gsub("if$", "ive") elseif form:match("c$") then return form:gsub("c$", "que") elseif form:match("eau$") then return form:gsub("eau$", "elle") else return form .. "e" end end -- For bot use function export.make_feminine(frame) local masc = frame.args[1] or error("Masculine in 1= is required.") local special = frame.args[2] return make_feminine(masc, special) end -- Handle generation of feminine or plural inflections when "+" is encountered. `list` is the existing base forms -- (strings or form objects) that need to be inflected. `defobj` is the form object whose `term` field is "+"; any -- qualifiers, labels and/or references from that form object will be combined with those of the base form. `inflfun` -- is the function to do the inflection, which is passed two arguments, the base form value (a string) and the -- `special` value specified for handling multiword expressions (or nil if no value specified). Returns the new list -- of inflected form objects. local function make_inflection(list, defobj, inflfun, special) local newlist = {} for _, form in ipairs(list) do if type(form) == "string" then form = {term = form} end local infl = inflfun(form.term, special) local formobj = m_table.shallowCopy(form) formobj.term = infl m_headword_utilities.combine_termobj_qualifiers_labels(formobj, defobj) insert(newlist, formobj) end return newlist end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["splithyph"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["abbr"] = list_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if not heads[1] then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, no_split_apostrophe_words) if not heads[1] then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, head:sub(2)) heads[i] = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head after a -- NNBSP (thin non-breaking space). head = auto_linked_head .. nnbsp .. head heads[i] = head end if head == auto_linked_head then track("redundant-head") end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = not user_specified_heads[1], genders = {}, inflections = {}, pagename = pagename, id = args.id, checkredlinks = check_missing and (pos_functions[poscat] and pos_functions[poscat].redlink_pos or true) or false, } if pagename:find("^%-") and poscat ~= "suffix forms" then data.is_suffix = true data.pos_category = "suffixes" data.checkredlinks = check_missing local singular_poscat = require(en_utilities_module).singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end parse_and_insert_inflection(data, args, "abbr", "abbreviation") if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet { "m", "f", "mf", "mfbysense", "mfequiv", "gneut", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "?", "?-p", } local additional_allowed_pronoun_genders = m_table.listToSet { "m-s", "f-s", "mf-s", "p", -- mf-p doesn't make sense for e.g. [[iels]]/[[ielles]] "n", -- e.g. [[ceci]]/[[cela]] } local function validate_genders(genders, is_pronoun) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] and (not is_pronoun or not additional_allowed_pronoun_genders[g]) then error("Unrecognized gender: " .. g) end end end local function make_qual_replaced_by(replacement) return {list = true, allow_holes = true, replaced_by = false, instead = ("use an inline modifier on |%s= such as <q:...>, <qq:...>, <l:...> or <ll:...>"):format(replacement) } end local function make_alias_replaced_by(replacement, reason) return {list = true, disallow_holes = true, replaced_by = replacement, reason = reason or "for consistency with the corresponding parameter in other Romance-language headword templates" } end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) ["g"] = {replaced_by = 1, reason = "for consistency"}, [2] = list_param, --plural override(s) ["pqual"] = make_qual_replaced_by("2"), ["f"] = list_param, --feminine form(s) ["fqual"] = make_qual_replaced_by("f"), ["m"] = list_param, --masculine form(s) ["fqual"] = make_qual_replaced_by("m"), ["dim"] = list_param, --diminutive(s) ["dimqual"] = make_qual_replaced_by("dim"), ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end local function do_noun(args, data, pos, is_proper) local is_plurale_tantum = false local has_singular = false if pos == "cardinal noun" then pos = "numeral" insert(data.categories, 1, langname .. " cardinal numbers") end if data.is_suffix then pos = "suffix" end local plpos = require(en_utilities_module).pluralize(pos) validate_genders(args[1]) data.genders = args[1] -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true end end local lemma = data.pagename -- Plural local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. pos) end insert(data.inflections, {label = glossary_link("plural only")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" and not mode:find("[a-zA-Z]") then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "sometimes " .. glossary_link("plural only") .. ", in variation"}) end if mode == "?" then -- Plural is unknown insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "plural not attested"}) insert(data.categories, langname .. " " .. plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, langname .. " uncountable " .. plpos) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "usually " .. glossary_link("uncountable")}) insert(data.categories, langname .. " countable " .. plpos) else insert(data.inflections, {label = glossary_link("uncountable")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")}) insert(data.categories, langname .. " uncountable " .. plpos) insert(data.categories, langname .. " countable " .. plpos) elseif plurals[1] then -- Countable nouns insert(data.categories, langname .. " countable " .. plpos) else -- Uncountable nouns insert(data.categories, langname .. " uncountable " .. plpos) end end -- Gather plurals, handling requests for default plurals. for _, pl in ipairs(plurals) do if pl.term == "+" then pl.term = make_plural(lemma) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) pl.term = make_plural(lemma, pl.term) elseif pl.term == "s" or pl.term == "x" then -- FIXME, convert to #s or #x pl.term = lemma .. pl.term else pl.term = replace_hash_with_lemma(pl.term, lemma) end end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("invariable"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, langname .. " indeclinable " .. plpos) else insert_noun_inflection(plurals, "plural", "p") end if plurals[2] then insert(data.categories, langname .. " " .. plpos .. " with multiple plurals") end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); and `inflect` is a function of one or two -- arguments to generate the default masculine or feminine from the lemma (the arguments are the lemma and -- optionally a "special" flag to indicate how to handle multiword lemmas, and the function is normally -- make_feminine or make_masculine [which doesn't exist, FIXME]). local function handle_mf(field, inflect, default_plurals) local function call_inflect(special) if inflect then -- Generate default feminine. return inflect(lemma, special) else -- FIXME error("Can't generate default masculine currently") end end local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = call_inflect() elseif term == "e" and field == "f" then -- FIXME: remove this special case term = lemma .. "e" else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = call_inflect(special) end return term end } return mfs end local feminines = handle_mf("f", make_feminine) local masculine_plurals = {} local masculines = handle_mf("m", nil) local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end insert_noun_inflection(feminines, "feminine", "f") insert_noun_inflection(masculines, "masculine") parse_and_insert_noun_inflection("dim", "diminutive") parse_and_insert_noun_inflection("aug", "augmentative") parse_and_insert_noun_inflection("pej", "pejorative") parse_and_insert_noun_inflection("dem", "demonym") parse_and_insert_noun_inflection("fdem", "female demonym") end pos_functions["nouns"] = { params = get_noun_params(), func = function(args, data) do_noun(args, data, "noun") end, } pos_functions["proper nouns"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "noun", "is proper") end, } pos_functions["cardinal nouns"] = { params = get_noun_params(), func = function(args, data) do_noun(args, data, "cardinal noun") end, pos_category = "numerals", } local function get_pronoun_pos(pos) return { params = { [1] = {list = "g", disallow_holes = true, required = true, default = "?", type = "genders", flatten = true}, -- gender(s) ["g"] = {replaced_by = 1, reason = "for consistency"}, ["f"] = list_param, ["fqual"] = make_qual_replaced_by("f"), ["m"] = list_param, ["mqual"] = make_qual_replaced_by("m"), ["mv"] = list_param, ["mvqual"] = make_qual_replaced_by("mv"), ["fpl"] = list_param, ["fp"] = make_alias_replaced_by("fpl"), ["fpqual"] = make_qual_replaced_by("fpl"), ["mpl"] = list_param, ["mp"] = make_alias_replaced_by("mpl"), ["mpqual"] = make_qual_replaced_by("mpl"), ["pl"] = list_param, ["p"] = make_alias_replaced_by("pl"), ["pqual"] = make_qual_replaced_by("pl"), ["type"] = list_param, }, func = function(args, data) -- Validate and add genders. validate_genders(args[1], "is pronoun") data.genders = args[1] local plpos = require(en_utilities_module).pluralize(pos) local function parse_and_insert_pronoun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end -- Parse and insert all inflections. parse_and_insert_pronoun_inflection("m", "masculine") parse_and_insert_pronoun_inflection("mv", "masculine singular before vowel") parse_and_insert_pronoun_inflection("f", "feminine") parse_and_insert_pronoun_inflection("mpl", "masculine plural") parse_and_insert_pronoun_inflection("fpl", "feminine plural") parse_and_insert_pronoun_inflection("pl", "plural") -- Categorize by "type" for _, ty in ipairs(args.type) do local category if ty == "indefinite" then category = "indefinite" elseif ty == "interrogative" then category = "interrogative" elseif ty == "personal" then category = "personal" elseif ty == "possessive" then category = "possessive" elseif ty == "reflexive" then category = "reflexive" elseif ty == "relative" then category = "relative" end if category then if type(category) == "table" then for _, cat in ipairs(category) do insert(data.categories, langname .. " " .. cat .. " pronouns") end else insert(data.categories, langname .. " " .. category .. " pronouns") end end end end } end pos_functions["pronouns"] = get_pronoun_pos("pronoun") pos_functions["determiners"] = get_pronoun_pos("determiner") local function get_misc_pos() return { params = { [1] = {replaced_by = "head", reason = "for consistency with other French headword templates"}, }, func = function(args, data) end } end pos_functions["adverbs"] = get_misc_pos() pos_functions["prepositions"] = get_misc_pos() pos_functions["phrases"] = get_misc_pos() pos_functions["prepositional phrases"] = get_misc_pos() pos_functions["proverbs"] = get_misc_pos() pos_functions["punctuation marks"] = get_misc_pos() pos_functions["diacritical marks"] = get_misc_pos() pos_functions["interjections"] = get_misc_pos() pos_functions["prefixes"] = get_misc_pos() pos_functions["abbreviations"] = get_misc_pos() local function do_adjective(pos) return { params = { [1] = true, ["inv"] = boolean_param, ["sp"] = true, -- special indicator: "first", "first-last", etc. ["onlyg"] = true, ["m"] = list_param, ["mqual"] = make_qual_replaced_by("m"), ["mv"] = list_param, ["mvqual"] = make_qual_replaced_by("mv"), ["f"] = list_param, ["fqual"] = make_qual_replaced_by("f"), ["mpl"] = list_param, ["mp"] = make_alias_replaced_by("mpl"), ["mpqual"] = make_qual_replaced_by("mpl"), ["fpl"] = list_param, ["fp"] = make_alias_replaced_by("fpl"), ["fpqual"] = make_qual_replaced_by("fpl"), ["pl"] = list_param, ["p"] = make_alias_replaced_by("pl"), ["pqual"] = make_qual_replaced_by("pl"), ["base"] = list_param, ["current"] = make_alias_replaced_by("base", "because the old name was obscure and did not clarify the purpose of the parameter"), ["comp"] = list_param, ["compqual"] = make_qual_replaced_by("comp"), ["sup"] = list_param, ["supqual"] = make_qual_replaced_by("sup"), ["intr"] = boolean_param, }, pos_category = pos == "cardinal adjective" and "numerals" or nil, redlink_pos = pos == "participle" and "participles" or nil, func = function(args, data) local is_numeral = false if pos == "cardinal adjective" then pos = "numeral" is_numeral = true insert(data.categories, 1, langname .. " cardinal numbers") end if data.is_suffix then pos = "suffix" end local plpos = require(en_utilities_module).pluralize(pos) if not is_numeral then if args.onlyg == "p" or args.onlyg == "m-p" or args.onlyg == "f-p" then insert(data.categories, langname .. " pluralia tantum") end if args.onlyg == "s" or args.onlyg == "f-s" or args.onlyg == "f-s" then insert(data.categories, langname .. " singularia tantum") end if args.onlyg then insert(data.categories, langname .. " defective " .. plpos) end end local lemma = data.pagename local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end local function process_inflection(label, arg, accel, get_default, explicit_default_only) local orig_infls = m_headword_utilities.parse_term_list_with_modifiers { paramname = arg, forms = args[arg], splitchar = ",", } if not orig_infls[1] then if explicit_default_only or not get_default then orig_infls = {} else orig_infls = {{term = "+"}} end end local infls = {} if orig_infls[1] then for _, infl in ipairs(orig_infls) do if infl.term == "+" then local defs if get_default then defs = get_default(infl) else error("Can't use '+' with " .. arg .. "=; no default available") end for _, def in ipairs(defs) do insert(infls, def) end elseif infl.term == "e" or infl.term == "s" or infl.term == "x" then -- FIXME: delete this in favor of #e, #s, #x infl.term = lemma .. infl.term insert(infls, infl) else infl.term = replace_hash_with_lemma(infl.term, lemma) insert(infls, infl) end end insert_inflection(infls, label, accel) end return infls end if args.sp and not require(romut_module).allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(require(romut_module).allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end local function get_base() return args.base[1] and args.base or {lemma} end if args.onlyg == "p" then insert(data.inflections, {label = "plural only"}) if args[1] ~= "mf" then -- Handle feminine plurals process_inflection("feminine plural", "fpl", "f|p") end elseif args.onlyg == "s" then insert(data.inflections, {label = "singular only"}) if not (args[1] == "mf" or not args.f[1] and lemma:match("e$")) then -- Handle feminines process_inflection("feminine singular", "f", "f", function(defobj) return make_inflection(get_base(), defobj, make_feminine, args.sp) end) end elseif args.onlyg == "m" then insert(data.genders, "m") insert(data.inflections, {label = "masculine only"}) -- Handle masculine plurals process_inflection("masculine plural", "mpl", "m|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) elseif args.onlyg == "f" then insert(data.genders, "f") insert(data.inflections, {label = "feminine only"}) -- Handle feminine plurals process_inflection("feminine plural", "fpl", "f|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) elseif args.onlyg then insert(data.genders, args.onlyg) insert(data.inflections, {label = "defective"}) else -- Gather genders local gender = args[1] -- Default to mf if base form ends in -e and no feminine, -- feminine plural or gender specified if not gender and not args.f[1] and not args.fpl[1] and lemma:match("e$") and not lemma:find(" ", nil, true) then gender = "mf" end if args.intr then insert(data.inflections, {label = glossary_link("intransitive")}) insert(data.inflections, {label = "hence " .. glossary_link("invariable")}) args.inv = true elseif args.inv then insert(data.inflections, {label = glossary_link("invariable")}) end -- Handle plurals of mf adjectives if not args.inv and gender == "mf" then process_inflection("plural", "pl", "p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) end if not args.inv and gender ~= "mf" then -- Handle masculine form if not same as lemma; e.g. [[sûr de soi]] with m=+, m2=sûr de lui process_inflection("masculine singular", "m", "m|s", function(defobj) defobj = m_table.shallowCopy(defobj) defobj.term = lemma return {defobj} end, "explicit default only") -- Handle case of special masculine singular before vowel process_inflection("masculine singular before vowel", "mv", "m|s") -- Handle feminines local feminines = process_inflection("feminine", "f", "f|s", function(defobj) return make_inflection(get_base(), defobj, make_feminine, args.sp) end) -- Handle masculine plurals process_inflection("masculine plural", "mpl", "m|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) -- Handle feminine plurals process_inflection("feminine plural", "fpl", "f|p", function(defobj) return make_inflection(feminines, defobj, make_plural, args.sp) end) end end -- Handle comparatives process_inflection("comparative", "comp", "comparative") -- Handle superlatives process_inflection("superlative", "sup", "superlative") end } end pos_functions["adjectives"] = do_adjective("adjective") pos_functions["past participles"] = do_adjective("participle") pos_functions["cardinal adjectives"] = do_adjective("cardinal adjective") pos_functions["verbs"] = { params = { ["type"] = list_param, }, func = function(args, data) local pos = "verbs" for _, ty in ipairs(args.type) do local category, label if ty == "auxiliary" then category = "auxiliary" elseif ty == "defective" then category = "defective" label = glossary_link("defective") elseif ty == "impersonal" then category = "impersonal" label = glossary_link("impersonal") elseif ty == "modal" then category = "modal" elseif ty == "reflexive" then category = "reflexive" elseif ty == "transitive" then label = glossary_link("transitive") category = "transitive" elseif ty == "intransitive" then label = glossary_link("intransitive") category = "intransitive" elseif ty == "ambitransitive" or ty == "ambi" then category = {"transitive", "intransitive"} label = glossary_link("transitive") .. " and " .. glossary_link("intransitive") end if category then if type(category) == "table" then for _, cat in ipairs(category) do insert(data.categories, langname .. " " .. cat .. " " .. pos) end else insert(data.categories, langname .. " " .. category .. " " .. pos) end end if label then insert(data.inflections, {label = label}) end end end } pos_functions["cardinal invariable"] = { params = {}, func = function(args, data) data.pos_category = "numerals" insert(data.categories, langname .. " cardinal numbers") insert(data.categories, langname .. " indeclinable numerals") insert(data.inflections, {label = glossary_link("invariable")}) end } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["suffix forms"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, typ .. "-forming suffix") end insert(data.inflections, {label = "non-lemma form of " .. m_table.serialCommaJoin(suffix_type, {conj = "or"})}) end, } return export 12p9x3u55lfqlhqw4h32rd5yb2cdfpa 235462 235461 2026-06-02T10:51:43Z Lee 19 [[:en:Module:fr-headword]] වෙතින් එක් සංශෝධනයක් 235461 Scribunto text/plain local export = {} local pos_functions = {} local force_cat = false -- for testing; if true, categories appear in non-mainspace pages local check_missing = false -- whether to check for missing forms local require_when_needed = require("Module:utilities/require when needed") local m_table = require("Module:table") local lang = require("Module:languages").getByCode("fr") local langname = lang:getCanonicalName() local en_utilities_module = "Module:en-utilities" local headword_utilities_module = "Module:headword utilities" local romut_module = "Module:romance utilities" local m_en_utilities = require_when_needed(en_utilities_module) local m_headword_utilities = require_when_needed(headword_utilities_module) local glossary_link = require_when_needed(headword_utilities_module, "glossary_link") local boolean_param = {type = "boolean"} local list_param = {list = true, disallow_holes = true} local concat = table.concat local insert = table.insert local remove = table.remove local sort = table.sort local u = mw.ustring.char local nnbsp = u(0x202F) -- NNBSP = narrow non-breaking space, used before ? and ! in French local prepositions = { "à ", "aux? ", "d[eu] ", "d['’]", "des ", "en ", "sous ", "sur ", "avec ", "pour ", "par ", "dans ", "contre ", "sans ", "comme ", "jusqu['’]", -- We could list others but you get diminishing returns } local no_split_apostrophe_words = { ["c'est"] = true, ["quelqu'un"] = true, ["aujourd'hui"] = true, } local function track(page) require("Module:debug").track("fr-headword/" .. page) return true end ----------------------------------------------------------------------------------------- -- Utility functions -- ----------------------------------------------------------------------------------------- local function replace_hash_with_lemma(term, lemma) -- If there is a % sign in the lemma, we have to replace it with %% so it doesn't get interpreted as a capture replace -- expression. lemma = lemma:gsub("%%", "%%%%") -- Assign to a variable to discard second return value. term = term:gsub("#", lemma) return term end -- Parse and insert an inflection not requiring additional processing into `data.inflections`. The raw arguments come -- from `args[field]`, which is parsed for inline modifiers. `label` is the label that the inflections are given; -- `accel` is the accelerator form, or nil. local function parse_and_insert_inflection(data, args, field, label, accel) m_headword_utilities.parse_and_insert_inflection { headdata = data, forms = args[field], paramname = field, splitchar = ",", label = label, accel = accel and {form = accel} or nil, } end local function make_plural(form, special) local retval = require(romut_module).handle_multiword(form, special, make_plural, prepositions) if retval then if #retval > 1 then error("Internal error: Got multiple plurals from handle_multiword(): " .. concat(retval)) end return retval[1] end if form:match("[sxz]$") then return form elseif form:match("au$") then return form .. "x" elseif form:match("al$") then return form:gsub("al$", "aux") end return form .. "s" end local function make_feminine(form, special) local retval = require(romut_module).handle_multiword(form, special, make_feminine, prepositions) if retval then if #retval > 1 then error("Internal error: Got multiple feminines from handle_multiword(): " .. concat(retval)) end return retval[1] end if form:match("e$") then return form elseif form:match("en$") then return form .. "ne" elseif form:match("er$") then return form:gsub("er$", "ère") elseif form:match("el$") then return form .. "le" elseif form:match("et$") then return form .. "te" elseif form:match("on$") then return form .. "ne" elseif form:match("ieur$") then return form .. "e" elseif form:match("teur$") then return form:gsub("teur$", "trice") elseif form:match("eu[rx]$") then return form:gsub("eu[rx]$", "euse") elseif form:match("if$") then return form:gsub("if$", "ive") elseif form:match("c$") then return form:gsub("c$", "que") elseif form:match("eau$") then return form:gsub("eau$", "elle") else return form .. "e" end end -- For bot use function export.make_feminine(frame) local masc = frame.args[1] or error("Masculine in 1= is required.") local special = frame.args[2] return make_feminine(masc, special) end -- Handle generation of feminine or plural inflections when "+" is encountered. `list` is the existing base forms -- (strings or form objects) that need to be inflected. `defobj` is the form object whose `term` field is "+"; any -- qualifiers, labels and/or references from that form object will be combined with those of the base form. `inflfun` -- is the function to do the inflection, which is passed two arguments, the base form value (a string) and the -- `special` value specified for handling multiword expressions (or nil if no value specified). Returns the new list -- of inflected form objects. local function make_inflection(list, defobj, inflfun, special) local newlist = {} for _, form in ipairs(list) do if type(form) == "string" then form = {term = form} end local infl = inflfun(form.term, special) local formobj = m_table.shallowCopy(form) formobj.term = infl m_headword_utilities.combine_termobj_qualifiers_labels(formobj, defobj) insert(newlist, formobj) end return newlist end ----------------------------------------------------------------------------------------- -- Main entry point -- ----------------------------------------------------------------------------------------- -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.") local params = { ["head"] = list_param, ["id"] = true, ["json"] = boolean_param, ["splithyph"] = boolean_param, ["nolink"] = boolean_param, ["nolinkhead"] = {type = "boolean", alias_of = "nolink"}, ["abbr"] = list_param, ["pagename"] = true, -- for testing } if pos_functions[poscat] then for key, val in pairs(pos_functions[poscat].params) do params[key] = val end end local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local user_specified_heads = args.head local heads = user_specified_heads if args.nolink then if not heads[1] then heads = {pagename} end else local romut = require(romut_module) local auto_linked_head = romut.add_links_to_multiword_term(pagename, args.splithyph, no_split_apostrophe_words) if not heads[1] then heads = {auto_linked_head} else for i, head in ipairs(heads) do if head:find("^~") then head = romut.apply_link_modifiers(auto_linked_head, head:sub(2)) heads[i] = head elseif head:find("^[!?]$") then -- If explicit head= just consists of ! or ?, add it to the end of the default head after a -- NNBSP (thin non-breaking space). head = auto_linked_head .. nnbsp .. head heads[i] = head end if head == auto_linked_head then track("redundant-head") end end end end local data = { lang = lang, pos_category = pos_functions[poscat] and pos_functions[poscat].pos_category or poscat, categories = {}, heads = heads, user_specified_heads = user_specified_heads, no_redundant_head_cat = not user_specified_heads[1], genders = {}, inflections = {}, pagename = pagename, id = args.id, checkredlinks = check_missing and (pos_functions[poscat] and pos_functions[poscat].redlink_pos or true) or false, } if pagename:find("^%-") and poscat ~= "suffix forms" then data.is_suffix = true data.pos_category = "suffixes" data.checkredlinks = check_missing local singular_poscat = require(en_utilities_module).singularize(poscat) insert(data.categories, langname .. " " .. singular_poscat .. "-forming suffixes") insert(data.inflections, {label = singular_poscat .. "-forming suffix"}) end if pos_functions[poscat] then pos_functions[poscat].func(args, data) end parse_and_insert_inflection(data, args, "abbr", "abbreviation") if args.json then return require("Module:JSON").toJSON(data) end return require("Module:headword").full_headword(data) end ----------------------------------------------------------------------------------------- -- Nouns -- ----------------------------------------------------------------------------------------- local allowed_genders = m_table.listToSet { "m", "f", "mf", "mfbysense", "mfequiv", "gneut", "m-p", "f-p", "mf-p", "mfbysense-p", "mfequiv-p", "gneut-p", "?", "?-p", } local additional_allowed_pronoun_genders = m_table.listToSet { "m-s", "f-s", "mf-s", "p", -- mf-p doesn't make sense for e.g. [[iels]]/[[ielles]] "n", -- e.g. [[ceci]]/[[cela]] } local function validate_genders(genders, is_pronoun) for _, g in ipairs(genders) do if type(g) == "table" then g = g.spec end if not allowed_genders[g] and (not is_pronoun or not additional_allowed_pronoun_genders[g]) then error("Unrecognized gender: " .. g) end end end local function make_qual_replaced_by(replacement) return {list = true, allow_holes = true, replaced_by = false, instead = ("use an inline modifier on |%s= such as <q:...>, <qq:...>, <l:...> or <ll:...>"):format(replacement) } end local function make_alias_replaced_by(replacement, reason) return {list = true, disallow_holes = true, replaced_by = replacement, reason = reason or "for consistency with the corresponding parameter in other Romance-language headword templates" } end local function get_noun_params(is_proper) return { [1] = {list = "g", disallow_holes = true, required = not is_proper, default = "?", type = "genders", flatten = true}, -- gender(s) ["g"] = {replaced_by = 1, reason = "for consistency"}, [2] = list_param, --plural override(s) ["pqual"] = make_qual_replaced_by("2"), ["f"] = list_param, --feminine form(s) ["fqual"] = make_qual_replaced_by("f"), ["m"] = list_param, --masculine form(s) ["fqual"] = make_qual_replaced_by("m"), ["dim"] = list_param, --diminutive(s) ["dimqual"] = make_qual_replaced_by("dim"), ["aug"] = list_param, --diminutive(s) ["pej"] = list_param, --pejorative(s) ["dem"] = list_param, --demonym(s) ["fdem"] = list_param, --female demonym(s) } end local function do_noun(args, data, pos, is_proper) local is_plurale_tantum = false local has_singular = false if pos == "cardinal noun" then pos = "numeral" insert(data.categories, 1, langname .. " cardinal numbers") end if data.is_suffix then pos = "suffix" end local plpos = require(en_utilities_module).pluralize(pos) validate_genders(args[1]) data.genders = args[1] -- Check for specific genders and pluralia tantum. for _, g in ipairs(args[1]) do if type(g) == "table" then g = g.spec end if g:find("-p$") then is_plurale_tantum = true else has_singular = true end end local lemma = data.pagename -- Plural local plurals = {} local function insert_noun_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end if is_plurale_tantum and not has_singular then if args[2][1] then error("Can't specify plurals of plurale tantum " .. pos) end insert(data.inflections, {label = glossary_link("plural only")}) else plurals = m_headword_utilities.parse_term_list_with_modifiers { paramname = {2, "pl"}, forms = args[2], splitchar = ",", } -- Check for special plural signals local mode = nil local pl1 = plurals[1] if pl1 and #pl1.term == 1 then mode = pl1.term if mode == "?" or mode == "!" or mode == "-" or mode == "~" then pl1.term = nil if next(pl1) then error(("Can't specify inline modifiers with plural code '%s'"):format(mode)) end table.remove(plurals, 1) -- Remove the mode parameter elseif mode ~= "+" and mode ~= "#" and not mode:find("[a-zA-Z]") then error(("Unexpected plural code '%s'"):format(mode)) end end if is_plurale_tantum then -- both singular and plural insert(data.inflections, {label = "sometimes " .. glossary_link("plural only") .. ", in variation"}) end if mode == "?" then -- Plural is unknown insert(data.categories, langname .. " " .. plpos .. " with unknown or uncertain plurals") elseif mode == "!" then -- Plural is not attested insert(data.inflections, {label = "plural not attested"}) insert(data.categories, langname .. " " .. plpos .. " with unattested plurals") if plurals[1] then error("Can't specify any plurals along with unattested plural code '!'") end elseif mode == "-" then -- Uncountable noun; may occasionally have a plural insert(data.categories, langname .. " uncountable " .. plpos) -- If plural forms were given explicitly, then show "usually" if plurals[1] then insert(data.inflections, {label = "usually " .. glossary_link("uncountable")}) insert(data.categories, langname .. " countable " .. plpos) else insert(data.inflections, {label = glossary_link("uncountable")}) end else -- Countable or mixed countable/uncountable if not plurals[1] and not is_proper then plurals[1] = {term = "+"} end if mode == "~" then -- Mixed countable/uncountable noun, always has a plural insert(data.inflections, {label = glossary_link("countable") .. " and " .. glossary_link("uncountable")}) insert(data.categories, langname .. " uncountable " .. plpos) insert(data.categories, langname .. " countable " .. plpos) elseif plurals[1] then -- Countable nouns insert(data.categories, langname .. " countable " .. plpos) else -- Uncountable nouns insert(data.categories, langname .. " uncountable " .. plpos) end end -- Gather plurals, handling requests for default plurals. for _, pl in ipairs(plurals) do if pl.term == "+" then pl.term = make_plural(lemma) elseif pl.term:find("^%+") then pl.term = require(romut_module).get_special_indicator(pl.term) pl.term = make_plural(lemma, pl.term) elseif pl.term == "s" or pl.term == "x" then -- FIXME, convert to #s or #x pl.term = lemma .. pl.term else pl.term = replace_hash_with_lemma(pl.term, lemma) end end local pl1 = plurals[1] if pl1 and not plurals[2] and pl1.term == lemma then insert(data.inflections, {label = glossary_link("invariable"), q = pl1.q, qq = pl1.qq, l = pl1.l, ll = pl1.ll, refs = pl1.refs }) insert(data.categories, langname .. " indeclinable " .. plpos) else insert_noun_inflection(plurals, "plural", "p") end if plurals[2] then insert(data.categories, langname .. " " .. plpos .. " with multiple plurals") end end -- Gather masculines/feminines. For each one, generate the corresponding plural. `field` is the name of the field -- containing the masculine or feminine forms (normally "m" or "f"); and `inflect` is a function of one or two -- arguments to generate the default masculine or feminine from the lemma (the arguments are the lemma and -- optionally a "special" flag to indicate how to handle multiword lemmas, and the function is normally -- make_feminine or make_masculine [which doesn't exist, FIXME]). local function handle_mf(field, inflect, default_plurals) local function call_inflect(special) if inflect then -- Generate default feminine. return inflect(lemma, special) else -- FIXME error("Can't generate default masculine currently") end end local mfs = m_headword_utilities.parse_term_list_with_modifiers { paramname = field, forms = args[field], splitchar = ",", frob = function(term) if term == "+" then -- Generate default masculine/feminine. term = call_inflect() elseif term == "e" and field == "f" then -- FIXME: remove this special case term = lemma .. "e" else term = replace_hash_with_lemma(term, lemma) end local special = require(romut_module).get_special_indicator(term) if special then term = call_inflect(special) end return term end } return mfs end local feminines = handle_mf("f", make_feminine) local masculine_plurals = {} local masculines = handle_mf("m", nil) local function parse_and_insert_noun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end insert_noun_inflection(feminines, "feminine", "f") insert_noun_inflection(masculines, "masculine") parse_and_insert_noun_inflection("dim", "diminutive") parse_and_insert_noun_inflection("aug", "augmentative") parse_and_insert_noun_inflection("pej", "pejorative") parse_and_insert_noun_inflection("dem", "demonym") parse_and_insert_noun_inflection("fdem", "female demonym") end pos_functions["nouns"] = { params = get_noun_params(), func = function(args, data) do_noun(args, data, "noun") end, } pos_functions["proper nouns"] = { params = get_noun_params("is proper"), func = function(args, data) do_noun(args, data, "noun", "is proper") end, } pos_functions["cardinal nouns"] = { params = get_noun_params(), func = function(args, data) do_noun(args, data, "cardinal noun") end, pos_category = "numerals", } local function get_pronoun_pos(pos) return { params = { [1] = {list = "g", disallow_holes = true, required = true, default = "?", type = "genders", flatten = true}, -- gender(s) ["g"] = {replaced_by = 1, reason = "for consistency"}, ["f"] = list_param, ["fqual"] = make_qual_replaced_by("f"), ["m"] = list_param, ["mqual"] = make_qual_replaced_by("m"), ["mv"] = list_param, ["mvqual"] = make_qual_replaced_by("mv"), ["fpl"] = list_param, ["fp"] = make_alias_replaced_by("fpl"), ["fpqual"] = make_qual_replaced_by("fpl"), ["mpl"] = list_param, ["mp"] = make_alias_replaced_by("mpl"), ["mpqual"] = make_qual_replaced_by("mpl"), ["pl"] = list_param, ["p"] = make_alias_replaced_by("pl"), ["pqual"] = make_qual_replaced_by("pl"), ["type"] = list_param, }, func = function(args, data) -- Validate and add genders. validate_genders(args[1], "is pronoun") data.genders = args[1] local plpos = require(en_utilities_module).pluralize(pos) local function parse_and_insert_pronoun_inflection(field, label, accel) parse_and_insert_inflection(data, args, field, label, accel) end -- Parse and insert all inflections. parse_and_insert_pronoun_inflection("m", "masculine") parse_and_insert_pronoun_inflection("mv", "masculine singular before vowel") parse_and_insert_pronoun_inflection("f", "feminine") parse_and_insert_pronoun_inflection("mpl", "masculine plural") parse_and_insert_pronoun_inflection("fpl", "feminine plural") parse_and_insert_pronoun_inflection("pl", "plural") -- Categorize by "type" for _, ty in ipairs(args.type) do local category if ty == "indefinite" then category = "indefinite" elseif ty == "interrogative" then category = "interrogative" elseif ty == "personal" then category = "personal" elseif ty == "possessive" then category = "possessive" elseif ty == "reflexive" then category = "reflexive" elseif ty == "relative" then category = "relative" end if category then if type(category) == "table" then for _, cat in ipairs(category) do insert(data.categories, langname .. " " .. cat .. " pronouns") end else insert(data.categories, langname .. " " .. category .. " pronouns") end end end end } end pos_functions["pronouns"] = get_pronoun_pos("pronoun") pos_functions["determiners"] = get_pronoun_pos("determiner") local function get_misc_pos() return { params = { [1] = {replaced_by = "head", reason = "for consistency with other French headword templates"}, }, func = function(args, data) end } end pos_functions["adverbs"] = get_misc_pos() pos_functions["prepositions"] = get_misc_pos() pos_functions["phrases"] = get_misc_pos() pos_functions["prepositional phrases"] = get_misc_pos() pos_functions["proverbs"] = get_misc_pos() pos_functions["punctuation marks"] = get_misc_pos() pos_functions["diacritical marks"] = get_misc_pos() pos_functions["interjections"] = get_misc_pos() pos_functions["prefixes"] = get_misc_pos() pos_functions["abbreviations"] = get_misc_pos() local function do_adjective(pos) return { params = { [1] = true, ["inv"] = boolean_param, ["sp"] = true, -- special indicator: "first", "first-last", etc. ["onlyg"] = true, ["m"] = list_param, ["mqual"] = make_qual_replaced_by("m"), ["mv"] = list_param, ["mvqual"] = make_qual_replaced_by("mv"), ["f"] = list_param, ["fqual"] = make_qual_replaced_by("f"), ["mpl"] = list_param, ["mp"] = make_alias_replaced_by("mpl"), ["mpqual"] = make_qual_replaced_by("mpl"), ["fpl"] = list_param, ["fp"] = make_alias_replaced_by("fpl"), ["fpqual"] = make_qual_replaced_by("fpl"), ["pl"] = list_param, ["p"] = make_alias_replaced_by("pl"), ["pqual"] = make_qual_replaced_by("pl"), ["base"] = list_param, ["current"] = make_alias_replaced_by("base", "because the old name was obscure and did not clarify the purpose of the parameter"), ["comp"] = list_param, ["compqual"] = make_qual_replaced_by("comp"), ["sup"] = list_param, ["supqual"] = make_qual_replaced_by("sup"), ["intr"] = boolean_param, }, pos_category = pos == "cardinal adjective" and "numerals" or nil, redlink_pos = pos == "participle" and "participles" or nil, func = function(args, data) local is_numeral = false if pos == "cardinal adjective" then pos = "numeral" is_numeral = true insert(data.categories, 1, langname .. " cardinal numbers") end if data.is_suffix then pos = "suffix" end local plpos = require(en_utilities_module).pluralize(pos) if not is_numeral then if args.onlyg == "p" or args.onlyg == "m-p" or args.onlyg == "f-p" then insert(data.categories, langname .. " pluralia tantum") end if args.onlyg == "s" or args.onlyg == "f-s" or args.onlyg == "f-s" then insert(data.categories, langname .. " singularia tantum") end if args.onlyg then insert(data.categories, langname .. " defective " .. plpos) end end local lemma = data.pagename local function insert_inflection(terms, label, accel) m_headword_utilities.insert_inflection { headdata = data, terms = terms, label = label, accel = accel and {form = accel} or nil, } end local function process_inflection(label, arg, accel, get_default, explicit_default_only) local orig_infls = m_headword_utilities.parse_term_list_with_modifiers { paramname = arg, forms = args[arg], splitchar = ",", } if not orig_infls[1] then if explicit_default_only or not get_default then orig_infls = {} else orig_infls = {{term = "+"}} end end local infls = {} if orig_infls[1] then for _, infl in ipairs(orig_infls) do if infl.term == "+" then local defs if get_default then defs = get_default(infl) else error("Can't use '+' with " .. arg .. "=; no default available") end for _, def in ipairs(defs) do insert(infls, def) end elseif infl.term == "e" or infl.term == "s" or infl.term == "x" then -- FIXME: delete this in favor of #e, #s, #x infl.term = lemma .. infl.term insert(infls, infl) else infl.term = replace_hash_with_lemma(infl.term, lemma) insert(infls, infl) end end insert_inflection(infls, label, accel) end return infls end if args.sp and not require(romut_module).allowed_special_indicators[args.sp] then local indicators = {} for indic, _ in pairs(require(romut_module).allowed_special_indicators) do insert(indicators, "'" .. indic .. "'") end sort(indicators) error("Special inflection indicator beginning can only be " .. mw.text.listToText(indicators) .. ": " .. args.sp) end local function get_base() return args.base[1] and args.base or {lemma} end if args.onlyg == "p" then insert(data.inflections, {label = "plural only"}) if args[1] ~= "mf" then -- Handle feminine plurals process_inflection("feminine plural", "fpl", "f|p") end elseif args.onlyg == "s" then insert(data.inflections, {label = "singular only"}) if not (args[1] == "mf" or not args.f[1] and lemma:match("e$")) then -- Handle feminines process_inflection("feminine singular", "f", "f", function(defobj) return make_inflection(get_base(), defobj, make_feminine, args.sp) end) end elseif args.onlyg == "m" then insert(data.genders, "m") insert(data.inflections, {label = "masculine only"}) -- Handle masculine plurals process_inflection("masculine plural", "mpl", "m|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) elseif args.onlyg == "f" then insert(data.genders, "f") insert(data.inflections, {label = "feminine only"}) -- Handle feminine plurals process_inflection("feminine plural", "fpl", "f|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) elseif args.onlyg then insert(data.genders, args.onlyg) insert(data.inflections, {label = "defective"}) else -- Gather genders local gender = args[1] -- Default to mf if base form ends in -e and no feminine, -- feminine plural or gender specified if not gender and not args.f[1] and not args.fpl[1] and lemma:match("e$") and not lemma:find(" ", nil, true) then gender = "mf" end if args.intr then insert(data.inflections, {label = glossary_link("intransitive")}) insert(data.inflections, {label = "hence " .. glossary_link("invariable")}) args.inv = true elseif args.inv then insert(data.inflections, {label = glossary_link("invariable")}) end -- Handle plurals of mf adjectives if not args.inv and gender == "mf" then process_inflection("plural", "pl", "p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) end if not args.inv and gender ~= "mf" then -- Handle masculine form if not same as lemma; e.g. [[sûr de soi]] with m=+, m2=sûr de lui process_inflection("masculine singular", "m", "m|s", function(defobj) defobj = m_table.shallowCopy(defobj) defobj.term = lemma return {defobj} end, "explicit default only") -- Handle case of special masculine singular before vowel process_inflection("masculine singular before vowel", "mv", "m|s") -- Handle feminines local feminines = process_inflection("feminine", "f", "f|s", function(defobj) return make_inflection(get_base(), defobj, make_feminine, args.sp) end) -- Handle masculine plurals process_inflection("masculine plural", "mpl", "m|p", function(defobj) return make_inflection(get_base(), defobj, make_plural, args.sp) end) -- Handle feminine plurals process_inflection("feminine plural", "fpl", "f|p", function(defobj) return make_inflection(feminines, defobj, make_plural, args.sp) end) end end -- Handle comparatives process_inflection("comparative", "comp", "comparative") -- Handle superlatives process_inflection("superlative", "sup", "superlative") end } end pos_functions["adjectives"] = do_adjective("adjective") pos_functions["past participles"] = do_adjective("participle") pos_functions["cardinal adjectives"] = do_adjective("cardinal adjective") pos_functions["verbs"] = { params = { ["type"] = list_param, }, func = function(args, data) local pos = "verbs" for _, ty in ipairs(args.type) do local category, label if ty == "auxiliary" then category = "auxiliary" elseif ty == "defective" then category = "defective" label = glossary_link("defective") elseif ty == "impersonal" then category = "impersonal" label = glossary_link("impersonal") elseif ty == "modal" then category = "modal" elseif ty == "reflexive" then category = "reflexive" elseif ty == "transitive" then label = glossary_link("transitive") category = "transitive" elseif ty == "intransitive" then label = glossary_link("intransitive") category = "intransitive" elseif ty == "ambitransitive" or ty == "ambi" then category = {"transitive", "intransitive"} label = glossary_link("transitive") .. " and " .. glossary_link("intransitive") end if category then if type(category) == "table" then for _, cat in ipairs(category) do insert(data.categories, langname .. " " .. cat .. " " .. pos) end else insert(data.categories, langname .. " " .. category .. " " .. pos) end end if label then insert(data.inflections, {label = label}) end end end } pos_functions["cardinal invariable"] = { params = {}, func = function(args, data) data.pos_category = "numerals" insert(data.categories, langname .. " cardinal numbers") insert(data.categories, langname .. " indeclinable numerals") insert(data.inflections, {label = glossary_link("invariable")}) end } ----------------------------------------------------------------------------------------- -- Suffix forms -- ----------------------------------------------------------------------------------------- pos_functions["suffix forms"] = { params = { [1] = {required = true, list = true, disallow_holes = true}, ["g"] = {list = true, disallow_holes = true, type = "genders", flatten = true}, }, func = function(args, data) validate_genders(args.g) data.genders = args.g local suffix_type = {} for _, typ in ipairs(args[1]) do insert(suffix_type, typ .. "-forming suffix") end insert(data.inflections, {label = "non-lemma form of " .. m_table.serialCommaJoin(suffix_type, {conj = "or"})}) end, } return export 12p9x3u55lfqlhqw4h32rd5yb2cdfpa Iceland 0 8789 235408 210347 2026-06-02T04:45:04Z Lee 19 235408 wikitext text/x-wiki {{also|iceland}} ==ඉංග්‍රීසි== {{wikipedia}} ===නිරුක්තිය=== From {{inh|en|enm|Iseland}}, {{m|enm|Island}}, {{m|enm|Islond}}, {{m|enm|Yslond}}, a {{calque|en|non|Ísland|nocap=1}}, equivalent to {{af|en|ice|land}}. ===උච්චාරණය=== * {{IPA|en|/ˈaɪs.lənd/|a=UK,US}} * {{IPA|en|[ˈaɪs.ln̩ʔd̚]|a=Some speakers}} * {{audio|en|en-us-Iceland.ogg|a=US}} * {{hyphenation|en|Ice|land}} ===සංඥා නාමය=== {{en-proper noun}} # [[අයිස්ලන්තය]] ==== සමාන පද ==== * {{l|en|Republic of Iceland}} ====ආශ්‍රිත පද==== * {{l|en|Icelandic}} * {{l|en|Icelandish}} * {{l|en|Icelander}} ==== අමතර අවධානයට ==== * {{list:countries of Europe/en}}{{topics|en|යුරෝපය තුළ රටවල්}} * {{l|en|Reykjavík}} * {{l|en|Iceland cyprine}} * {{l|en|Icelander}} * {{l|en|Iceland moss}} * {{l|en|Iceland spar}} [[Category:en:Exonyms]] [[Category:en:Iceland]] [[Category:en:දූපත්]] ---- ==Scots== === සංඥා නාම පදය === {{head|sco|proper noun}} # {{place|sco|country|cont/Europe|t=Iceland}} ---- 8cmwf3jjcs2s4b4of6j1pfkkjlvdbaf 235409 235408 2026-06-02T04:45:37Z Lee 19 235409 wikitext text/x-wiki {{also|iceland}} ==ඉංග්‍රීසි== {{wikipedia|lang=en}} ===නිරුක්තිය=== From {{inh|en|enm|Iseland}}, {{m|enm|Island}}, {{m|enm|Islond}}, {{m|enm|Yslond}}, a {{calque|en|non|Ísland|nocap=1}}, equivalent to {{af|en|ice|land}}. ===උච්චාරණය=== * {{IPA|en|/ˈaɪs.lənd/|a=UK,US}} * {{IPA|en|[ˈaɪs.ln̩ʔd̚]|a=Some speakers}} * {{audio|en|en-us-Iceland.ogg|a=US}} * {{hyphenation|en|Ice|land}} ===සංඥා නාමය=== {{en-proper noun}} # [[අයිස්ලන්තය]] ==== සමාන පද ==== * {{l|en|Republic of Iceland}} ====ආශ්‍රිත පද==== * {{l|en|Icelandic}} * {{l|en|Icelandish}} * {{l|en|Icelander}} ==== අමතර අවධානයට ==== * {{list:countries of Europe/en}}{{topics|en|යුරෝපය තුළ රටවල්}} * {{l|en|Reykjavík}} * {{l|en|Iceland cyprine}} * {{l|en|Icelander}} * {{l|en|Iceland moss}} * {{l|en|Iceland spar}} [[Category:en:Exonyms]] [[Category:en:Iceland]] [[Category:en:දූපත්]] ==Scots== === සංඥා නාම පදය === {{head|sco|proper noun}} # {{place|sco|country|cont/Europe|t=Iceland}} cd75y29jext5nx5vpxxk51rnga7ds0z linguistics 0 10430 235458 215166 2026-06-02T10:48:00Z Lee 19 235458 wikitext text/x-wiki {{also|lingüístics}} ==ඉංග්‍රීසි== ===නිරුක්තිය=== From {{suffix|en|linguist|ics}}, a modification of earlier {{m|en|linguistic}}, {{coin|en|nocap=1|William Whewell|nat=English|occ=polymath|in=1837}} from {{der|en|de|Linguistik}}. ===උච්චාරණය=== * {{IPA|en|/lɪŋˈɡwɪstɪks/}} * {{IPA|en|/liŋˈɡwɪstɪks/|a=US,pre-/ŋ/ tensing}} * {{audio|en|En-us-linguistics.ogg|a=US}} ===නාම පදය=== {{wikipedia}} {{en-noun|-}} # [[වාග්වේදය]]. #:{{hypo|en|applied linguistics}} ==== සමාන පද ==== * {{l|en|glossology}}, {{l|en|glottology}} * {{l|en|linguistry}} * {{l|en|speechlore}} * {{l|en|wordlore}} ====Meronyms==== * See also [[Thesaurus:linguistics]] ==== ව්‍යුත්පන්න යෙදුම් ==== {{col4|en |algebraic linguistics |applied linguistics |archaeolinguistics |biolinguistics |clinical linguistics |comparative linguistics |computational linguistics |contact linguistics |diachronic linguistics |ecolinguistics |ethnolinguistics |Eurolinguistics |evolutionary linguistics |historical linguistics |interlinguistics |metalinguistics |microlinguistics |neurolinguistics |paleolinguistics |pseudolinguistics |psycholinguistics |sociolinguistics |theolinguistics |xenolinguistics }} ====ආශ්‍රිත පද==== * {{l|en|linguist}} * {{l|en|linguistic}} === අමතර අවධානයට === * {{l|en|diction}} * {{l|en|epigraphy}} * {{l|en|grammar}} * {{l|en|morphology}} * {{l|en|philology}} * {{l|en|phonetics}} * {{l|en|phonology}} * {{l|en|pragmatics}} * {{l|en|semantics}} * {{l|en|syntax}} {{මාතෘකා|en|වාග්වේදය}} 2f0mbzke8e5c8rvczmc1h2c3e8ei5e3 වික්ෂනරි:REE 4 11433 235379 37162 2026-06-01T21:27:55Z EmausBot 1976 Fixing double redirect from [[වික්ෂනරි:Requested entries (English)]] to [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] 235379 wikitext text/x-wiki #යළියොමුව [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] fzli65cqprjje2el55z5ywuzz7j4gz0 වික්ෂනරි:Requested entries (ඉංග්‍රීසි) 4 11434 235335 83033 2026-06-01T14:29:41Z Lee 19 Lee විසින් [[වික්ෂනරි:Requested entries (English)]] සිට [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] වෙත පිටුව ගෙන යන ලදී 83033 wikitext text/x-wiki {{shortcut|WT:RE:en|WT:REE}} :''See also: '''[[WT:EDH|Missing entries]]''' (<180,000) :''See also: '''[[w:Wikipedia:Typo Team/moss#For Wiktionary]]''''' (missing words encountered on English Wikipedia) :''See also: the '''[[Wiktionary:Tea room|Tea room]]''', where you can post the definition of a word you’re trying to find, and hopefully someone will help you find it.'' :''See also: [[Wiktionary:Requested entries (English)/diacritics and ligatures]] {{ඉංග්‍රීසි ව්‍යාපෘතියෙන් ආයාත කළ පිටුව}} * Old requests: ** [[Wiktionary:Requested entries (English)/pre 2020]] ** [[Wiktionary:Requested entries (English)/2020]] ** [[Wiktionary:Requested entries (English)/2021]] ** [[Wiktionary:Requested entries (English)/2022]] ** [[Wiktionary:Requested entries (English)/2023]] __NOTOC__ {{English requested entries nav}} {{requested entries preamble|en|genders=no}} ==Non-letter== * We have [[1-h TL FM]]. Along the same lines we could also have [[10-h TL FM]], [[100-h TL FM]], and [[1,000-h TL FM]] / [[1000-h TL FM]]. (Seemingly only attested with these numbers). * {{REEHelp|5D chess}} - verb, after the game {{w|5D Chess with Multiverse Time Travel}}; past tense [[5D chessed]] or [[5D chess'd]] * I am interested in seeing a fuller coverage of plate tectonics and submarine features like plates themselves ([[Philippine Sea Plate]], [[Scotia Plate]]), oil fields ([[Chengbei]], I have no list of these), trenches ([[Manila Trench]], [[Mariana Trench]]), ridges ([[Mid-Atlantic Ridge]], [[East Pacific Rise]]), and similar ([[James Shoal]], [[Darwin Mounds]]) etc. This kind of work will be mostly based in academic literature. I hope to see a more adequate system of categories developed. To show you how woefully inadequate Wiktionary is at this time (2022), I just today created [[Mid-Atlantic Ridge]] and dumped it into Category:Oceanography and Category:Places. See {{w|List of submarine topographical features}}, {{w|List of reefs}} --[[User:Geographyinitiative|Geographyinitiative]] ([[User talk:Geographyinitiative|talk]]) 21:35, 24 June 2022 (UTC) :You're so dramatic, Joggy! There's a perfectly decent project for these... Wikipedia [[User:Demonicallt|Demonicallt]] ([[User talk:Demonicallt|talk]]) 00:48, 1 February 2024 (UTC) ::And Wiktionary. [[User:CitationsFreak|CitationsFreak]] ([[User talk:CitationsFreak|talk]]) 17:27, 1 February 2024 (UTC) ==A== {{English requested entries nav}} *{{REEHelp|argumentum ad illegalum}} - also argumentum ad penalum, ad scelestum, ad carcerum, and ad criminalum, a logical falacy that says that if something is illegal it means it is immoral and or anti-ethical no matter what. *{{REEHelp|argumentum ad legalum}} - also argumentum ad codexum, ad constitutium, ad iutistium, and ad lexum a logical fallacy that says if something is legal it means it is moral and or ethical no matter what. * {{REEHelp|Ardiaei}} (noun pl.) and {{REEHelp|Ardiaean}} (adj.) of an Illyrian tribe, {{m|grc|Ἀρδιαῖοι}}, [[w:Ardiaei]] *{{l|en|akohekohe}} bird *{{l|en|alauahio}} bird *{{l|en|amaui}} birdie *{{l|en|anianiau}} birdie *{{l|en|apapane}} birdie *{{l|en|avocetbill}} birdie ==B== {{English requested entries nav}} * [[balani]] (new sense) - sea urchins (see [https://www.biodiversitylibrary.org/partpdf/15878], [https://leocasinillo.blogspot.com/2018/], [https://en.wikisource.org/wiki/Page:Midland_naturalist_(IA_midlandnaturalis01lond).pdf/221]). <span class="vcard"><span class="fn">[[User:Pigsonthewing|Andy Mabbett]]</span> (<span class="nickname">Pigsonthewing</span>); [[User talk:Pigsonthewing|Talk to Andy]]; [[Special:Contributions/Pigsonthewing|Andy's edits]]</span> 19:49, 4 March 2024 (UTC) :: I suspect that is barnacles (perhaps genus ''[[Balanus]]'' or family {{w|Balanidae}}) rather than sea urchins. OED includes a short quote at ''acorn'' from 1755: "Sea Acorns, ''Balani''." [[User:Cnilep|Cnilep]] ([[User talk:Cnilep|talk]]) 03:55, 6 March 2024 (UTC) * {{REEHelp|beer stick}} (or [[stick of beer]] - may be an alt. for be either [[beer flight]] or [[beer paddle]]. <span class="vcard"><span class="fn">[[User:Pigsonthewing|Andy Mabbett]]</span> (<span class="nickname">Pigsonthewing</span>); [[User talk:Pigsonthewing|Talk to Andy]]; [[Special:Contributions/Pigsonthewing|Andy's edits]]</span> 21:30, 28 February 2024 (UTC) *{{REEHelp|BFBVFS}} - abbreviation for "big fiery ball visible from space", an irreversibly corrupted game file or a crashed computer. Originated on ''The Sims 2'' fan community "More Awesome Than You" [[User:Estreyeria|Estreyeria]] ([[User talk:Estreyeria|talk]]) 18:33, 25 January 2024 (UTC) *{{REEHelp|big fiery ball visible from space}} see BFBVFS above [[User:Estreyeria|Estreyeria]] ([[User talk:Estreyeria|talk]]) 18:33, 25 January 2024 (UTC) *{{REEHelp|blueberrita}} *{{REEHelp|Botni}} - some Scandinavian area. See [[Ostrobothnia]] et al [[User:Fond of sanddunes|Fond of sanddunes]] ([[User talk:Fond of sanddunes|talk]]) 22:48, 11 January 2024 (UTC) *{{l|en|bamboowren}} bird *{{l|en|bernieria}} bird *{{l|en|brushrunner}} bird *{{l|en|bushcrow}} bird *{{l|en|buzzard-eagle}} bird ==C== {{English requested entries nav}} * {{REEHelp|cheat curl}}. * {{REEHelp|chevvu}} - See [[Citations:chevvu]], [https://www.google.com/books/edition/Dictionary_of_Gems_and_Gemology/aUZ8CgAAQBAJ?hl=en&gbpv=0|Dictionary of Gems and Gemology] by Robert M. Shipley, and [https://www.google.com/books/edition/Journal_of_the_Ceylon_Branch_of_the_Roya/r5MoAAAAYAAJ?hl=en&gbpv=0|Journal of the Ceylon Branch of the Royal Asiatic Society: Volumes 1-11] page 53. [[User:Heyandwhoa|Heyandwhoa]] ([[User talk:Heyandwhoa|talk]]) 20:47, 2 March 2024 (UTC) * {{REEHelp|copydump}} | Seems to be a command on some IBM system: I can't see use as actual English in GBooks. [[User:Equinox|Equinox]] [[User_talk:Equinox|◑]] 01:47, 18 February 2024 (UTC) * {{REEHelp|coward's way out}} - refers to suicide * {{REEHelp|cranberrita}} - [[Citations:cranberrita]] * {{REEHelp|cranbrie}} - [[Citations:cranbrie]] *{{l|en|canary-flycatcher}} bird *{{l|en|chilia}} bird *{{l|en|chlorospingus}} bird *{{l|en|cocquette}} bird *{{l|en|cordonbleu}} bird *{{l|en|crab-plover}} bird *{{l|en|cuckoo-finch}} bird ==D== {{English requested entries nav}} * {{REEHelp|defensive lineman}} - American football position *{{REEHelp|dichlorofluorescin}} — chemical that is to ''[[dichlorofluorescein]]'' as ''[[fluorescin]]'' is to ''[[fluorescein]]''. —DIV *{{REEHelp|dickinsoniomorph}} *{{REEHelp|direct commission}} *{{REEHelp|disc warming}} - [[flat earther|Flat Earth]] slang for [[global warming]] *<s>{{REEHelp|dollarita}} - [[Citations:Dollarita]]</s> No, it previously failed RFV. *{{l|en|dapple-throat}} bird *{{l|en|darkeye}} bird *{{l|en|drongo-cuckoo}} bird ==E== {{English requested entries nav}} * {{l|en|elachura}} bird ==F== {{English requested entries nav}} *{{REEHelp|first at-bat}} - literal and idiomatic senses *{{REEHelp|fineapple}} * {{l|en|fire-eye}} bird * {{l|en|firewood-gatherer}} bird * {{l|en|flycatcher-shrike}} bird * {{l|en|foliage-gleaner}} bird * {{REEHelp|fun in games}} - common eggcorn these days of [[fun and games]] ==G== {{English requested entries nav}} * {{REEHelp|geoplankton}} - [[Citations:geoplankton]] * {{REEHelp|glammery}} - [[Citations:glammery]] * {{l|en|geomalia}} bird * {{l|en|graytail}} bird * {{l|en|greytail}} bird * {{l|en|grosbeak-canary}} bird * {{l|en|groundhunter}} bird ==H== {{English requested entries nav}} * {{REEHelp|hawkfly}} — appears in the University of Wales Dictionary of the Welsh language as a translation of [https://welsh-dictionary.ac.uk/gpc/gpc.html?pryr_creyr pry'r crëyr] and according to [https://chestofbooks.com/gardening-horticulture/Commercial-Gardening-1/Hawkflies.html General Aspects Of Commercial Gardening (1913)], it refers to hoverflies of the genus {{taxlink|Scaeva|genus|nomul=1}}, but isn't clear on whether they are a specific species within the genus. * {{REEHelp|HFY}} — acronym of "Humanity, Fuck Yeah!"; (Internet, Reddit, neologism) ''HFY is a story/series that takes a “human element” in either humanity or an “other” (race/species or object) that exists in a “setting” (future or other world/universe) with varying levels of culture, technology, society and history that help show in some shape or form the potential good or bad for humanity’s race/culture.''<ref>[https://www.reddit.com/r/hfy/wiki/ref/faq/#wiki_what_is_hfy.3F r/hfy] on Reddit</ref>. * {{REEHelp|higher animal}} * {{l|en|harrier-hawk}} * {{l|en|heleia}} * {{l|en|hemispingus}} * {{l|en|hoopoe-lark}} * {{l|en|huet-huet}} * {{l|en|hylia}} * {{l|en|hylocitrea}} ==I== {{English requested entries nav}} *{{REEHelp|interactive teller machine}} - Also check [[ITM]]. [[User:Heyandwhoa|Heyandwhoa]] ([[User talk:Heyandwhoa|talk]]) 01:19, 6 February 2024 (UTC) - [[Citations:interactive teller machine]] ==J== {{English requested entries nav}} * {{REEHelp|jack}} - another word for a [[jacket]], rather than specifically one for a padded jacket that forms part of a suit of armour. This appears in the etymology of the Yola word [[jock]] and in the copyrighted name of a brand of packable plastic raincoat/anorak/cagoule ('jack in a pack'). * {{REEHelp|jack socket}} - sounded redundant when I heard it but gets pretty decent hits and is in the OED * {{l|en|jewel-babbler}} not just a bird ==K== {{English requested entries nav}} * {{REEHelp|kimberellomorph}} * [[Koasek]]: some Native American tribe? see [[Cowasuck]], and {{w|Koasek Abenaki Tribe}} (which says they aren't the same, though some other sources might disagree?) *{{REEHelp|Kripke structure}} * {{REEHelp|kakamega}} (bird) * {{REEHelp|kamao}} (bird) ==L== {{English requested entries nav}} *{{REEHelp|leaflute}} - [[Citations:leaflute]] *{{REEHelp|legal absolutism}} - the idea that the laws are absolute and that the Executive, the Legislative and the Judicial are absolute and can do whatever they want. A good example are liberal democracy supporters who defend elected governments and the supposed "will of majority" at all costs. Like defending Javier Milei, Tarcisio de Freitas, Lula da Silva, Zelensky, Netanyahu, Trump, and Biden at the same time. *{{REEHelp|legal relativism}} - also legal particularism or legal contigency theory, it states the law is relative and that everything depends regarding the law and the three powers. Mainly if it is about the three powers on liberal democracy. * {{REEHelp|lights are green}} / {{REEHelp|the lights are green}} — something to do with smoking marijuana, AFAIK. Other possible sense: the go-ahead/approval is given<small>—DIV ([[Special:Contributions/1.145.19.119|1.145.19.119]] 10:42, 17 February 2024 (UTC))</small> * {{REEHelp|living off the land}} - See [https://www.cisa.gov/resources-tools/resources/identifying-and-mitigating-living-land-techniques]. [[User:Heyandwhoa|Heyandwhoa]] ([[User talk:Heyandwhoa|talk]]) 23:06, 8 March 2024 (UTC) * {{REEHelp|LOTL}} - See "living off the land" above. [[User:Heyandwhoa|Heyandwhoa]] ([[User talk:Heyandwhoa|talk]]) 23:06, 8 March 2024 (UTC) * {{REEHelp|leafworker}} (bird) * {{REEHelp|longbill}} (bird) ==M== {{English requested entries nav}} * {{REEHelp|man it out}} - to act maturely, stoic or gritty in a difficult situation *{{REEHelp|MEDINT}} *{{REEHelp|millillion}} See [[Citations:millillion]] - 10{{sup|3003}}. *{{REEHelp|modal companion}} *{{REEHelp|muroplast}} *{{REEHelp|mutuel}}- deals with betting issues- "mutuel windows" etc. | Maybe related to [[pari-mutuel]]. [[User:Equinox|Equinox]] [[User_talk:Equinox|◑]] 00:18, 27 January 2024 (UTC) * {{REEHelp|magpie-jay}} (bird) * {{REEHelp|meliphaga}} (bird) * {{REEHelp|mesia}} (bird) * {{REEHelp|minla}} (bird) * {{REEHelp|mohoau}} (bird) * {{REEHelp|monal-partridge}} (bird) * {{REEHelp|moorchat}} (bird) * {{REEHelp|mouse-warbler}} (bird) * {{REEHelp|myiagra}} (bird) == N == {{English requested entries nav}} * [[nose in the air]]: (with one's ~; have one's ~) being [[disdainful]], [[uppity]], [[stuck up]] * {{REEHelp|notchplasty}} * {{REEHelp|nimisin}}: Seems to mean "[[protologism]]" in [[Toki Pona]]; probably not an English word though. * {{REEHelp|nightingale-thrush}} (bird) * {{REEHelp|nightingale-wren}} (bird) ==O== {{English requested entries nav}} * {{REEHelp|offensive lineman}} - American football position * {{REEHelp|orthoteny}} * {{REEHelp|oxy-hydrogen microscope}} - "The oxy-hydrogen microscope, which projected microscopic subjects onto a screen using limelight, magnifying lenses, and a magic lantern, entertained audiences from 1825 through the first decades of cinema. ... The oxy-hydrogen microscope combined technologies of the microscope (magnification), oxy-hydrogen lamp (illumination), and magic lantern (projection). With its powerful light, it enabled large public screenings, outstripping any similar technology." ([https://www.jstor.org/stable/10.2979/victorianstudies.62.1.04]); [https://www.nature.com/articles/134786a0.pdf];[[:en:wikisource:Page:Midland naturalist (IA midlandnaturalis01lond).pdf/132|Midland Naturalist, 1:112]]. <span class="vcard"><span class="fn">[[User:Pigsonthewing|Andy Mabbett]]</span> (<span class="nickname">Pigsonthewing</span>); [[User talk:Pigsonthewing|Talk to Andy]]; [[Special:Contributions/Pigsonthewing|Andy's edits]]</span> 12:58, 5 February 2024 (UTC) ** Also [[oxy-hydrogen lamp]]. <span class="vcard"><span class="fn">[[User:Pigsonthewing|Andy Mabbett]]</span> (<span class="nickname">Pigsonthewing</span>); [[User talk:Pigsonthewing|Talk to Andy]]; [[Special:Contributions/Pigsonthewing|Andy's edits]]</span> 12:58, 5 February 2024 (UTC) * {{REEHelp|odedi}} (bird) * {{REEHelp|owlet-nightjar}} (bird) * {{REEHelp|oxylabes}} (bird) ==P== {{English requested entries nav}} * {{REEHelp|phoenixity}} - See Merriam-Webster: [https://www.merriam-webster.com/dictionary/phoenixity]. [[User:Heyandwhoa|Heyandwhoa]] ([[User talk:Heyandwhoa|talk]]) 22:12, 1 March 2024 (UTC) * {{REEHelp|plait fog}} - UK expression for a difficult/impossible task - exists in Urban Dictionary in mispelled entry. also {{REEHelp|knit fog}} and {{REEHelp|plait sawdust}} * {{REEHelp|pluritative}} Term in Mongolic linguistics * {{REEHelp|polyglycoprotein}} and/or ''poly-glycoprotein'' — presumably a polymerised form of ''[[glycoprotein]]''. * {{REEHelp|paradise-crow}} (bird) * {{REEHelp|parisoma}} (bird) * {{REEHelp|petronia}} (bird) * {{REEHelp|peucedramus}} (bird) * {{REEHelp|phainoptila}} (bird) * {{REEHelp|picathartes}} (bird) * {{REEHelp|ploughbill}} (bird) * {{REEHelp|poo-uli}} (bird) * {{REEHelp|prickletail}} (bird) ==Q== {{English requested entries nav}} * {{l|en|quail-thrush}} bird ==R== {{English requested entries nav}} * {{REEHelp|rejection therapy}} -SOP? [[User:Demonicallt|Demonicallt]] ([[User talk:Demonicallt|talk]]) 00:15, 14 January 2024 (UTC) * {{REEHelp|Renner complex}} genetics term * {{REEHelp|roofplasty}} * {{REEHelp|rail-babbler}} (bird) * {{REEHelp|rockchat}} (bird) * {{REEHelp|rukia}} (bird) * {{REEHelp|rushbird}} (bird) ==S== {{English requested entries nav}} * {{REEHelp|S/T}} abbreviation of [[self-titled]]; sometimes used in place of the name of a self-titled album --[[Special:Contributions/96.230.234.108|96.230.234.108]] 04:29, 1 March 2024 (UTC) * {{REEHelp|salpornis}} (bird) * {{REEHelp|sapphirewing}} (bird) * {{REEHelp|sawwing}} (bird) * {{REEHelp|saw-wing}} (bird) * {{REEHelp|sericornis}} (bird) * {{REEHelp|shieldbill}} (bird) * {{REEHelp|shorttail}} (bird) * {{REEHelp|shrike-babbler}} (bird) * {{REEHelp|shrike-flycatcher}} (bird) * {{REEHelp|shrike-tyrant}} (bird) * {{REEHelp|shrike-vireo}} (bird) * {{REEHelp|silky-flycatcher}} (bird) * {{REEHelp|siva}} (bird) * {{REEHelp|sparrow-weaver}} (bird) * {{REEHelp|spot-throat}} (bird) * {{REEHelp|steamerduck}} (bird) * {{REEHelp|streamcreeper}} (bird) * {{REEHelp|sunbird-asity}} (bird) * {{REEHelp|sungem}} (bird) * {{REEHelp|serviceware}} [https://english.stackexchange.com/questions/413445/what-is-the-definition-of-serviceware Thread on StackExchage]; used for example on [https://www.stopwaste.org/sites/default/files/WEB_CA_ReTh_Foodware_04.29.15_web.pdf][https://ecocycle.org/our-programs/zero-waste-colorado/plastic-pollution-reduction-act-overview/sustainable-serviceware/][https://ecology.wa.gov/waste-toxics/reducing-recycling-waste/plastics/2021-plastic-pollution-laws/food-serviceware][https://old.compostingcouncil.org/wp-content/uploads/2014/11/Compostable-Food-Serviceware-Quick-Guide.pdf][https://www.newtonma.gov/government/health-human-services/sustainable-food-beverage-serviceware-packaging-single-use-items-ordinance][https://www.portland.gov/code/17/103/310], see [[service]] + [[-ware]], as in [[tableware]]. Can also refer to service [[software]]: [https://ieeexplore.ieee.org/document/1452837] * {{REEHelp|shotgun statement}} * {{REEHelp|soundshell}} and/or {{REEHelp|sound shell}} - similar to [[bandshell]] - possibly predominantly Australia and New Zealand usage * {{REEHelp|spandy}} - {{R:Merriam-Webster Online|spandy}} And mentioned in {{R:Etymonline|spandy}} * {{REEHelp|squart}} * {{REEHelp|sulfacarbamide}} — a chemical. <small>—DIV</small> * {{REEHelp|superword}} - It's a thing that relates to computing I'm pretty sure. | I can't work it out, but it's complementary to {{m|en|subword}} in a sense that we may lack: seems to relate to the encoding of (human language) words into numbers that are manipulated with [[finite-state machine]]s. [[User:Equinox|Equinox]] [[User_talk:Equinox|◑]] 14:19, 29 February 2024 (UTC) | see [[Citations:superword]] * {{REEHelp|Szlonzok}}, {{REEHelp|Szlonzokian}} See Tomasz Kamusella. 2004. ''The Szlonzokian Ethnolect in the Context of German and Polish Nationalisms'' (pp. 19–39). ''Studies in Ethnicity and Nationalism. No 1''. London: Association for the Study of Ethnicity and Nationalism. {{doi|10.1111/j.1754-9469.2004.tb00056.x}} [https://cadmus.eui.eu/bitstream/handle/1814/1351/HEC03-01.pdf The Szlonzoks and their Language: Between Germany, Poland and Szlonzokian Nationalism] -- '''Comment''': The historian Tomasz Kamusella has used the words [[Szlonzok]] = Upper Silesian, [[Slunzak]] = Teschen Silesian. They don't seem to have caught on beyond his own usage. [[User:Equinox|Equinox]] [[User_talk:Equinox|◑]] 18:27, 4 March 2024 (UTC) * {{REEHelp|shits in giggles}} - reasonably common eggcorn these days of [[shits and giggles]] ==T== {{English requested entries nav}} *{{REEHelp|Tewahedo}} - Used in the names of the Oriental Orthodox Churches in Ethiopia and Eritrea. From Ge'ez {{m|gez|ተዋሕዶ|tr= täwaḥədo}}, meaning "united as one". *{{REEHelp|trajectoid}} - Wikipedia has an article: [[w:trajectoid]]. - [[Citations:trajectoid]] *{{REEHelp|Typen-Platten}} (or "Typen Platten") - a kind of microscope slide with diatoms mounted in a grid ([https://pixl8-cloud-rms.s3.eu-west-2.amazonaws.com/prod/public/021d78ea-fdf0-4663-b2fbe04a5424c0e8/Natures-smallest-glasshouses-visible-from-space.pdf], [https://zenodo.org/records/7778348], [https://hwpi.harvard.edu/diatoms/terry-overview]. [[:en:Wikisource:Page:Midland naturalist (IA midlandnaturalis01lond).pdf/220|Midland Naturalist, 1 p182]]) Originally German; marketed as "Möller's Typen-platten", after its inventor. <span class="vcard"><span class="fn">[[User:Pigsonthewing|Andy Mabbett]]</span> (<span class="nickname">Pigsonthewing</span>); [[User talk:Pigsonthewing|Talk to Andy]]; [[Special:Contributions/Pigsonthewing|Andy's edits]]</span> 15:31, 20 February 2024 (UTC) *{{REEHelp|terlet}} non-standard pronunciation of "toilet" [https://boards.straightdope.com/t/warsh-yer-hands-after-you-use-the-terlet-what-accent/533247/11] [https://forum.wordreference.com/threads/terlet.2526618/] * {{REEHelp|teretistris}} (bird) * {{REEHelp|thirst bait}} - probably a synonym of {{m|en|thirst trap}} * {{REEHelp|thrush-tanager}} (bird) * {{REEHelp|tody-flycatcher}} (bird) * {{REEHelp|tody-tyrant}} (bird) * {{REEHelp|torrent-lark}} (bird) * {{REEHelp|tyrant-manakin}} (bird) * {{REEHelp|tent-trailer}} * {{REEHelp|tonic-clonic}} - [[clonicotonic]] * {{REEHelp|trailer tent}} ==U== {{English requested entries nav}} *{{REEHelp|underture}} — This neologism (a back-formed antonym to “overture”) has been used by Blood, Sweet and Tears on a 1968 album [[w:Child Is Father to the Man]] and a year later by the Who on [[w:Tommy (The Who album)|Tommy]]. * {{l|en|ula-ai-hawane}} bird ==V== {{English requested entries nav}} *{{REEHelp|vi coactus}}<br>"constrained by force", "having been forced", the [[signer]] was under [[duress]] (placed before [[signature]]), abbr: [[VC]], [[V.C.]] {{pedia|vi coactus}} Also see [[coercion]] (''law''). *{{REEHelp|vividness effect}} == W == {{English requested entries nav}} * {{l|en|wagtail-tyrant}} bird * {{l|en|warbler-finch}} bird * {{l|en|wiretail}} bird * {{l|en|woodhaunter}} bird * {{l|en|woollyneck}} bird * {{l|en|wren-babbler}} bird * {{l|en|wren-spinetail}} bird * {{l|en|wren-warbler}} bird ==X== {{English requested entries nav}} ==Y== {{English requested entries nav}} * {{l|en|yellowbrow}} bird * {{l|en|yellownape}} bird ==Z== {{English requested entries nav}} ==Specialized jargon or slang== ===Military=== There are dictionaries of military slang which can confirm these, but at least one genuine use should be identified before a term is created. <!--* [[airships]], Their (n.) - RAF speak — officers of [[Air Commodore]] rank and above. Float serenely at high altitude, buffeted by assorted winds and oblivious to the implications of, and confusion caused by, the edicts following their astral deliberations. Presumably in imitation of ''their [[worship]]s''. If citable the lemma would be at [[airship]]. 2 cites so far. [[User:DCDuring|DCDuring]] ([[User talk:DCDuring|talk]]) 02:08, 31 August 2020 (UTC)--> * [[bennied]] - RAF speak - used during tour of Falkland Islands. To have to remain in FI after date due to leave, usually due to replacement unavailability. (Cf. [[Benny]] sense of Falkland Islander.) * [[gardening]] - RAF speak- sowing mines in water from a low height * [[garnish]]; the military sense, related to camouflaging, see ''e.g.'' [[commons:Page:"Garnish Nets Correctly" - NARA - 514018.tif]] * [[hang up]] or [[hang-up]] or [[hangup]] - RAF speak - Bomb failed to release. * [[Trident Board]] (USN SEAL examination panel) * [[vegetable]] - RAF speak acoustic or magnetic mines ===Textiles=== These were originally added under the appropriate letters, but require similar specialized knowledge or research. * [[bull denim]] - a 3x1 twill weave piece dyed fabric, made from coarse yarns. Weights can vary from 9 ozs/sq yard up to the standard 14 ozs/sq yard. Bull Denim is essentially a denim without indigo * [[CC]] - Comments Client * [[Classic CO]]- Dutch: ontwerp van een doorlopend dessin * [[Ea]] - Elasthane ** [[elastane]]? —DIV ([[Special:Contributions/1.145.80.173|1.145.80.173]] 12:01, 25 July 2022 (UTC)) * [[loop tag]] - a bartack which is 'loose' in the middle * [[moustache]] - abrasion of lines to imitate pre-worn garment (a.k.a Whiskers) * [[open end spinning]] - a technology for creating yarn without using a spindle. This system is much less labour intensive and faster than [[ring spinning]] * [[pro forma|P.I.]] or [[P:I:]] - Proforma Invoice * [[proto]] - sample before SMS to see the effect and reaction to fabrics artworks and treatments * [[R.E.]] or [[RE]] - Raw Essentials * [[Single Jersey]] or [[single jersey]] - Single knit fabrics and jersey knits are light to medium weight fabrics with flat vertical ribs on the right side and dominant horizontal lines on the wrong side. Fabric stretches from 20 to 25% across the grain. * [[SW]]- Sweat * [[whiskers]]- abrasion of lines to imitate pre-worn garment (a.k.a Moustache) ===Abbreviations listed in the 1911 Encyclopedia Britannica=== ====Abbreviated titles and designations==== [[A.R.I.B.A.]] Associate of the Royal Institute of British Architects. [[B.LL.]] Bachelor of Laws. [[C.I.E.]] Companion of the Order of the Indian Empire. [[C.M.]] ''Chirurgiae Magister'', Master in Surgery. [[C.M.G.]] Companion of St Michael and St George. [[C.S.I.]] Companion of the Star of India. [[D.Lit.]], [[Litt. D.]] Doctor of Literature. [[D.S.W.]] Doctor of Social Work. [[Ebor.]] ''Eboracensis'' of York.2 [[F.F.P.S.]] Fellow of the Faculty of Physicians and Surgeons (Glasgow) [[F.G.S.]] Fellow of the Geological Society. [[F.K.Q.C.P.I.]] Fellow of King and Queen's College of Physicians in Ireland. [[F.L.S.]] Fellow of the Linnaean Society. [[F.P.S.]] Fellow of the Philological Society. [[F.R.A.S.]] Fellow of the Royal Astronomical Society. [[F.R C.P.]] Fellow of the Royal College of Physicians. [[F.R.C.P.E.]] Fellow of the Royal College of Physicians of Edinburgh. [[F.R.C.S.]] Fellow of the Royal College of Surgeons. [[F.R.G.S.]] Fellow of the Royal Geographical Society [[F.R.H.S.]] Fellow of the Royal Horticultural Society [[F.R.Hist.Soc.]] Fellow of the Royal Historical Society [[F.R.I.B.A.]] Fellow of the Royal Institute of British Architects [[F.R.S.]] Fellow of the [[w:Royal Society]] [[F.R.S.A.]] Fellow of the Royal Society for the encouragement of Arts, Manufactures & Commerce [[F.R.S.E.]] Fellow of the Royal Society of Edinburgh [[F.R.S.L.]] Fellow of the [[w:Royal Society of Literature]] [[F.S.A.]] Fellow of the [[w:Society of Antiquaries of London|Society of Antiquaries]] [[F.S.S.]] Fellow of the Statistical Society [[F.Z.S.]] Fellow of the Zoological Society [[G.C.B.]] Knight Grand Cross of the Bath [[G.C.H.]] Knight Grand Cross of Hanover [[G.C.I.E.]] Knight Grand Commander of the Order of the Indian Empire [[G.C.M.G.]] Knight Grand Cross of St Michael and St George [[G.C.S.I.]] Knight Grand Commander of the Star of India [[G.C.V.O.]] Knight Grand Commander of the Victorian Order [[J.U.D.]] ''[[w:Juris utriusque Doctor]]'', Doctor of Civil and Canon Law [[K.C.M.G.]] Knight Commander of St Michael and St George [[K.C.S.I.]] Knight Commander of the Star of India [[K.C.V.O.]] Knight Commander of the Victorian Order [[L.A.H.]] Licentiate of the Apothecaries' Hall [[L.C.C.]] London County Council, or Councillor [[L.C.J.]] Lord Chief Justice [[L.L.A.]] [[w:Lady Literate in Arts]] [[LL.B.]] ''Legum Baccalaureus'', Bachelor of Laws [[LL.D.]] ''Legum Doctor'', Doctor of Laws [[L.R.C.P.]] Licentiate of the Royal College of Physicians [[L.R.C.S.]] Licentiate of the Royal College of Surgeons [[L.S.A.]] Licentiate of the Apothecaries' Society [[M.Inst.C.E.]] Member of the Institute of Civil Engineers [[M.R.C.P.]] Member of the Royal College of Physicians [[M.R.C.S.]] Member of the Royal College of Surgeons [[M.R.I.A.]] Member of the Royal Irish Academy [[Mus.B.]] Bachelor of Music [[Mus.D.]] Doctor of Music [[M.V.O.]] Member of the Victorian Order [[R. & I.]] ''Rex et Imperator'' [[Reg. Prof.]] Regius Professor [[R.M.]] Royal Marines, Resident Magistrate [[S.S.C.]] Solicitor before the Supreme Courts of Scotland [[S.T.L.]] ''Sacrae Theologiae Licentiatus'', Licentiate of Sacred Theology [[S.T.P.]] ''Sacrosanctae Theologiae Professor'', Professor of Sacred Theology [[V.G.]] Vicar-General [[V.S.]] Veterinary Surgeon [[W.S.]] Writer to the Signet [in Scotland] Equivalent to Attorney ====Abbreviations denoting moneys, weights, and measures==== [[bar.]] barrel. [[bus.]] bushel. c. (or cub.) ft. &c. cubic foot,&c. [[dr.]] drachm or dram. [[na.]] nail. [[po.]] pole. [[q.]] ''quadrans'', farthing. [[ro.]] rood. ====Miscellaneous abbreviations==== [[A.E.I.O.U.]] ''Austriae est imperare orbi universo'',<sup>5</sup> or ''Alles Erdreich Ist Oesterreich Unterthan''. [[A.H.]] ''Anno Hegirae'', In the year of the Hegira (the Islamic era). [[C.]] or [[Cap.]] (''Caput''), Chapter. [[Cr.]] Creditor. [[curt.]] Current, the present month. [[D.G.]] ''Dei gratia'', By the grace of God. [[Dr.]] Debtor. [[fec.]] ''Fecit'', He made (or did) it. [[Fo.]] or [[Fol.]] Folio. [[Inf.]] ''Infra'', Below. [[k.t.l.]] Greek ''kai ta loipa'', Et caetera, and the rest. [[L.]] or [[Lib.]] ''Liber'', Book. [[Lon.]] or [[Long.]] Longitude. [[Mem.]] ''Memento'', Remember, Memorandum. [[O.S.B.]] ''Ordo Sancti Benedicti'' (Benedictines). [[P.R.]] Prize-ring. [[Q.]], [[Qu.]], or [[Qy.]] Query; Question. [[q.d.]] ''Quasi dicat'', As if he should say: as much as to say. [[q.s.]] or [[quant. suff.]] ''Quantum sufficit'', As much as is sufficient. [[R.]] or [[@.]] ''Recipe'', Take. [[S.D.U.K.]] Society for the Diffusion of Useful Knowledge. [[sp.]] ''[[Sine prole]]'', Without offspring. ===Pet bird abbreviations=== Should be citable from Usenet. See [https://web.archive.org/web/20060902035848/http://www.exoticbird.com/abbrev.html] for the list. (Was going to copy it here verbatim with links, but decided not to, since that might be a copyright violation.) ==References and notes== ''This section is meant to assist in the production of definitions by providing supporting citations. Wherever possible, please keep supporting evidence with the entries it is meant to be supporting.'' <references/> gxvskl1fua0skoolqodvk0g78cwn3bk වික්ෂනරි:RE:en 4 11438 235378 37174 2026-06-01T21:27:45Z EmausBot 1976 Fixing double redirect from [[වික්ෂනරි:Requested entries (English)]] to [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] 235378 wikitext text/x-wiki #යළියොමුව [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] fzli65cqprjje2el55z5ywuzz7j4gz0 Module talk:number list/data/yrk-tun 829 13076 235444 40636 2026-06-02T10:33:12Z Lee 19 Lee විසින් [[Module talk:number list/data/yrk]] සිට [[Module talk:number list/data/yrk-tun]] වෙත පිටුව ගෙන යන ලදී 40636 wikitext text/x-wiki {| class="wikitable" ! oldid || date/time || username || edit summary |---- | 73157807 || 2023-05-24T10:06:59Z || Thadh || <nowiki></nowiki> |---- | 73157772 || 2023-05-24T09:57:20Z || Thadh || <nowiki>Created page with "local export = {numbers = {}} local numbers = {} export.numbers = numbers numbers[1] = { cardinal = "ӈобˮ", ordinal = "нюртей", } numbers[2] = { cardinal = "сидя", ordinal = "нябимдей", fractional = "пеля", } numbers[3] = { cardinal = "няхӑрˮ", ordinal = "няхӑрамдэй", fractional = "няхӑрамдоˮма" } numbers[4] = { cardinal = "тет", ordinal = "тетимдей", fractional = "тетимдоˮма", }..."</nowiki> |} glqzh8cfinc3lfpdi9t4rg1jjoxy5dp සැකිල්ල:archaic form of 10 14010 235398 205896 2026-06-02T04:31:47Z Lee 19 235398 wikitext text/x-wiki {{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|&nbsp;යන යෙදුමේ පෞරාණික රූපාකාරයකි|cat=archaic forms|withcap=1|withdot=1}}<!-- -->}}<!-- --><noinclude>{{documentation}}[[ප්‍රවර්ගය:රූපාකාර සැකිලි]]</noinclude> mcrk0w6g2gv3nrjhsbcttrcm7baeu6t 235399 235398 2026-06-02T04:32:57Z Lee 19 [[paradigma]], [[:ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms]] සිට [[:ප්‍රවර්ගය:ඉංග්‍රීසි පෞරාණික රූපාකාර]] වෙතට යොමු කිරීම 235399 wikitext text/x-wiki {{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|&nbsp;යන යෙදුමේ පෞරාණික රූපාකාරයකි|cat=පෞරාණික රූපාකාර|withcap=1|withdot=1}}<!-- -->}}<!-- --><noinclude>{{documentation}}[[ප්‍රවර්ගය:රූපාකාර සැකිලි]]</noinclude> cpl9l9b48rfvh4ozpyufjmdfbiyjgud ප්‍රවර්ගය:භාෂාව අනුව අභාවයට ගිය රූපාකාර 14 14019 235328 199991 2026-06-01T14:21:43Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete forms]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 42934 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235331 235328 2026-06-01T14:27:05Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete රූපාකාර]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව අභාවයට ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 42934 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Module:etymon 828 112710 235416 229703 2026-05-29T21:44:55Z en>Fenakhay 0 235416 Scribunto text/plain --[=[ This module implements the {{etymon}} template for structured etymology data on Wiktionary. It enables the creation of etymology trees and text by parsing etymon chains, scraping linked pages for their own {{etymon}} data, and recursively building a tree of derivational relationships. Authors: - Original implementation: [[User:Ioaxxere]] - Full refactor (September 2025): [[User:Fenakhay]] ([[Special:Diff/86717746]]) Modules: - [[Module:etymon]]: main module handling parsing, validation, tree building, and page scraping - [[Module:etymon/data]]: keyword definitions, configuration, and status constants - [[Module:etymon/tree]]: etymology tree rendering - [[Module:etymon/text]]: etymology text generation - [[Module:etymon/categories]]: category generation logic ]=] local export = {} local etymon_data_module = "Module:etymon/data" local etymon_text_module = "Module:etymon/text" local etymon_tree_module = "Module:etymon/tree" local etymon_categories_module = "Module:etymon/categories" local etymon_descendants_module = "Module:etymon/descendants" local __state = { cached_etymon_args = {}, cached_etymon_pages = {}, cached_descendants_checks = {}, senseid_parent_etymon = {}, available_etymon_ids = {}, single_etymons = {}, entry_title = nil, entry_lang_code = nil, current_page_has_inline_etymology = false, current_page_has_redundant_etymology = false, used_idless_etymon = false, toplevel_has_inline_etymology = false, toplevel_redundant_etymology = false, toplevel_idless_etymon = false, has_mismatched_id = false, linked_page_multiple_etymons_idless = false, max_depth_reached = 0, total_nodes = 0, language_count = {}, toplevel_keyword_stats = {}, warnings = {}, } local loader = require("Module:module loader") local M = loader.init({ require = { data = etymon_data_module, tree = etymon_tree_module, text = etymon_text_module, categories = etymon_categories_module, descendants = etymon_descendants_module, anchors = "Module:anchors", etydate = "Module:etydate", etymology = "Module:etymology", families = "Module:families", languages = "Module:languages", languages_errorgetby = "Module:languages/errorGetBy", links = "Module:links", pages = "Module:pages", parameters = "Module:parameters", string_utilities = "Module:string utilities", template_parser = "Module:template parser", utilities = "Module:utilities", debug = "Module:debug", en_utilities = "Module:en-utilities", parse_utilities = "Module:parse utilities", references = "Module:references", track = "Module:debug/track", template_styles = "Module:TemplateStyles", script_utilities = "Module:script utilities", JSON = "Module:JSON", yesno = "Module:yesno", }, loadData = { headword_data = "Module:headword/data", parameters_data = "Module:parameters/data", text_allowed = "Module:etymon/data/text_allowed", }, }) local Util = {} function Util.format_error(message, preview_only) if preview_only and not M.pages.is_preview() then return nil end return '<span class="error">' .. message .. '</span>' end function Util.add_warning(message, preview_only) local formatted = Util.format_error(message, preview_only) if formatted then table.insert(__state.warnings, formatted) end end function Util.is_text_param_allowed_for_lang(lang) if not lang or type(lang) ~= "table" then return false end local types = lang.getTypes and lang:getTypes() if types and types.family then local code = lang.getCode and lang:getCode() return code and M.text_allowed.families[code] == true end local full_code = lang.getFullCode and lang:getFullCode() if full_code and M.text_allowed.langs[full_code] then return true end if lang.inFamily then for family_code in pairs(M.text_allowed.families) do if lang:inFamily(family_code) then return true end end end return false end function Util.get_lang(code, no_error) if no_error then return M.languages.getByCode(code, nil, true) end return M.languages.getByCode(code, nil, true) or M.languages_errorgetby.code(code, true, true) end function Util.get_family(code) return M.families.getByCode(code) end function Util.get_lang_exception(lang) -- Families have no language-specific exceptions if lang.getTypes and lang:getTypes().family then return nil end local code = lang:getCode() local lang_exceptions = M.data.config.lang_exceptions if lang_exceptions[code] then return lang_exceptions[code] end for norm_code, exc in pairs(lang_exceptions) do if exc.normalize_to and code == exc.normalize_to then return exc end if exc.normalize_from_families then local should_normalize = false for _, family in ipairs(exc.normalize_from_families) do if lang:inFamily(family) then should_normalize = true break end end if should_normalize and exc.normalize_exclude_families then for _, family in ipairs(exc.normalize_exclude_families) do if lang:inFamily(family) then should_normalize = false break end end end if should_normalize then local ret = {} for k, v in pairs(exc) do ret[k] = v end ret.suppress_tr = nil return ret end end end return nil end function Util.get_norm_lang(lang) local exc = Util.get_lang_exception(lang) if exc and exc.normalize_to then return M.languages.getByCode(exc.normalize_to) end return lang end -- Add default values for boolean modifiers (e.g., <unc> becomes <unc:1>) -- This is needed because Module:parse utilities expects boolean modifiers to have explicit values function Util.add_boolean_defaults(str, param_mods) local result = str for name, spec in pairs(param_mods) do if spec.type == "boolean" then -- Replace <name> with <name:1> (but not <name:...> which already has a value) result = result:gsub("<" .. name .. ">", "<" .. name .. ":1>") end end return result end -- Centralized term formatting: handles suppress_term, unknown_term, and regular terms function Util.format_term(term, is_toplevel, opts) opts = opts or {} -- suppress_term (-) returns nil if term.suppress_term then return nil end local lang = term.lang local exc = Util.get_lang_exception(lang) if is_toplevel then local display_text = term.alt or term.title or "" local sc = term.sc or lang:findBestScript(display_text) local bold_text = tostring(mw.html.create("strong") :addClass("selflink") :wikitext(display_text)) return M.script_utilities.tag_text(bold_text, lang, sc, "term") end local link_params = { lang = lang } link_params.term = not term.unknown_term and term.title or nil link_params.alt = term.alt link_params.id = (not term.unknown_term and term.id and term.id ~= "") and term.id or nil if not (exc and exc.suppress_tr) then link_params.tr = term.tr link_params.ts = term.ts else link_params.suppress_tr = true end link_params.lit = (opts.lit ~= "suppress") and term.lit or nil if opts.gloss ~= "suppress" then link_params.gloss = term.t end if term.g and term.g ~= "" then local genders = M.string_utilities.split(term.g, ",") for i = 1, #genders do genders[i] = M.string_utilities.trim(genders[i]) end link_params.genders = genders end if opts.pos ~= "suppress" then link_params.pos = term.pos link_params.ng = term.ng end if exc and exc.suppress_tr then link_params.lit = nil end local show_qualifiers if opts.tree_ql ~= "suppress" then if term.q then link_params.q = term.q end if term.qq then link_params.qq = term.qq end if term.l then link_params.l = term.l end if term.ll then link_params.ll = term.ll end show_qualifiers = term.q or term.qq or term.l or term.ll end return M.links.full_link(link_params, "term", nil, show_qualifiers and true or nil) end local __is_content_page_cached function Util.is_content_page() if __is_content_page_cached == nil then __is_content_page_cached = M.pages.is_content_page(mw.title.getCurrentTitle()) end return __is_content_page_cached end local __page_data_cached function Util.get_page_data() if not __page_data_cached then __page_data_cached = M.headword_data.page end return __page_data_cached end -- Extract base keyword from param (without modifiers) local function get_keyword_base(param) if type(param) ~= "string" then return nil end local base = param:match("^:?([^<]+)") or param:gsub("^:", "") return base end local function is_keyword(param, allow_colon_less) if type(param) ~= "string" then return false end local keywords = M.data.keywords if param:sub(1, 1) == ":" then local base = get_keyword_base(param) return keywords[base] ~= nil end if allow_colon_less then local base = get_keyword_base(param) return keywords[base] ~= nil end return false end local function get_keyword(param, allow_colon_less) if type(param) ~= "string" then return nil end local keywords = M.data.keywords if param:sub(1, 1) == ":" then return get_keyword_base(param) end if allow_colon_less then local base = get_keyword_base(param) if keywords[base] then return base end end return nil end local function normalize_keyword(keyword) if keyword:sub(1, 1) == ":" then return keyword end return ":" .. keyword end -- Resolve keyword (possibly an alias) to its canonical form. Used only at input boundaries local function get_canonical_keyword(keyword) if not keyword then return keyword end return M.data.keyword_canonical[keyword] or keyword end -- Build text/phrase for nominalization with <g:code> (uses data module for codes only). local function get_nominalization_label_for_g(code) if not code or code == "" then return nil end local codes = M.data.nominalization_g_codes local adj = codes[code] if not adj and #code == 2 then local gender_adj = codes[code:sub(1, 1)] local number_adj = codes[code:sub(2, 2)] if gender_adj and number_adj then adj = gender_adj .. " " .. number_adj end end if not adj then return nil end local text = adj:gsub("^%l", function(c) return string.upper(c) end) .. " [[Appendix:Glossary#nominalization|nominalization]] of" local phrase = M.en_utilities.add_indefinite_article(adj .. " [[Appendix:Glossary#nominalization|nominalization]] of", false) return { text = text, phrase = phrase } end local EtymonParser = {} -- Keyword modifier definitions EtymonParser.keyword_param_mods = { unc = { type = "boolean" }, ref = {}, text = { restrict = { keywords = { "from", "derived" } } }, lit = { restrict = { keywords = { "affix", "surf", "univerbation" } } }, conj = {}, -- conjunction for alternatives: "and", "or", "and/or", etc. g = { restrict = { keywords = { "nominalization" } } }, } -- Term modifier definitions EtymonParser.etymon_param_mods = { id = {}, t = {}, tr = {}, ts = {}, q = {}, qq = {}, l = {}, ll = {}, pos = {}, ng = {}, alt = {}, g = {}, ety = {}, lit = {}, unc = { type = "boolean" }, ref = {}, aftype = { restrict = { keywords = { "affix", "surf", "afeq" } } }, postype = {}, bor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, slbor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, lbor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, } local function get_clean_param_mods(param_mods) local clean = {} for mod_name, mod_def in pairs(param_mods) do clean[mod_name] = {} for key, value in pairs(mod_def) do if key ~= "restrict" then clean[mod_name][key] = value end end end return clean end function EtymonParser.check_modifier_restrictions(modifiers, current_keyword, param_mods) for mod_name, mod_value in pairs(modifiers) do -- Only check restrictions if the modifier has a non-false/nil value if mod_value then local mod_def = param_mods[mod_name] if mod_def and mod_def.restrict and mod_def.restrict.keywords then local allowed_keywords = mod_def.restrict.keywords local is_allowed = false for _, allowed_keyword in ipairs(allowed_keywords) do if current_keyword == allowed_keyword then is_allowed = true break end end if not is_allowed then local keyword_list = {} for _, kw in ipairs(allowed_keywords) do table.insert(keyword_list, ":" .. kw) end local keyword_str = table.concat(keyword_list, #keyword_list == 2 and " or " or ", ") if #keyword_list > 2 then -- Replace last comma with "or" keyword_str = keyword_str:gsub(", ([^,]+)$", " or %1") end local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for the keyword" .. (#keyword_list > 1 and "s " or " ") .. keyword_str .. ".") end end end end end -- Parse keyword with modifiers (e.g., ":bor<unc>" or ":bor<ref:{{R:example}}>") function EtymonParser.parse_keyword_modifiers(param) if type(param) ~= "string" then return nil, {} end local base_keyword = get_keyword_base(param) if not base_keyword then return nil, {} end local canonical_keyword = get_canonical_keyword(base_keyword) -- Check if there are any modifiers if not param:find("<", 1, true) then return canonical_keyword, {} end -- Parse modifiers using the same mechanism as etymon parsing local rest_with_defaults = Util.add_boolean_defaults(param, EtymonParser.keyword_param_mods) local function generate_obj(ignored) return {} end local parsed = M.parse_utilities.parse_inline_modifiers(rest_with_defaults:gsub("^:?[^<]+", ""), { param_mods = get_clean_param_mods(EtymonParser.keyword_param_mods), generate_obj = generate_obj }) local modifiers = { unc = parsed.unc or false, ref = parsed.ref, text = parsed.text, lit = parsed.lit, conj = parsed.conj, g = parsed.g, } -- Validate modifiers against restrictions EtymonParser.check_modifier_restrictions(modifiers, canonical_keyword, EtymonParser.keyword_param_mods) return canonical_keyword, modifiers end function EtymonParser.parse_balanced_segments(str) local segments = {} local current = "" local depth = 0 local i = 1 while i <= #str do local char = str:sub(i, i) if char == "<" then if depth == 0 and current ~= "" then table.insert(segments, current) current = "" end depth = depth + 1 current = current .. char elseif char == ">" then current = current .. char depth = depth - 1 if depth == 0 then table.insert(segments, current) current = "" elseif depth < 0 then error("Unbalanced brackets in etymon: unexpected '>'") end else current = current .. char end i = i + 1 end if depth ~= 0 then error("Unbalanced brackets in etymon: missing '>'") end if current ~= "" then table.insert(segments, current) end return segments end function EtymonParser.parse_inline_ety(ety_string, context_lang) local segments = EtymonParser.parse_balanced_segments(ety_string) if #segments == 0 then error("Empty inline etymology") end local keyword = M.string_utilities.trim(segments[1]) if not is_keyword(keyword, true) then error("Invalid keyword '" .. keyword .. "' in inline etymology <ety:" .. keyword .. "...>") end local args = { context_lang:getCode(), normalize_keyword(get_canonical_keyword(keyword)) } for i = 2, #segments do local segment = segments[i] if segment:sub(1, 1) == "<" and segment:sub(-1) == ">" then local inner = segment:sub(2, -2) if inner ~= "" then table.insert(args, inner) end elseif is_keyword(segment, true) then -- Handle keywords that appear between bracketed segments table.insert(args, normalize_keyword(get_canonical_keyword(get_keyword(segment, true)))) end end return args end function EtymonParser.parse_etymon(param, context_lang) if is_keyword(param) then return nil end if type(param) ~= "string" then return nil end local lang, rest local is_family = false local before_bracket = param:match("^([^<]*)") or param local lang_code, rest_match = before_bracket:match("^([a-zA-Z][a-zA-Z0-9._-]*):(.*)$") if lang_code then local potential_lang = Util.get_lang(lang_code, true) if potential_lang then lang = potential_lang rest = param:sub(#lang_code + 2) else local potential_family = Util.get_family(lang_code) if potential_family then lang = potential_family rest = param:sub(#lang_code + 2) is_family = true else lang = context_lang rest = param end end else lang = context_lang rest = param end if rest == "" then M.track("etymon/term/empty") elseif rest == "?" then M.track("etymon/term/question-mark") elseif rest == "-" then M.track("etymon/term/hyphen") end if rest == "" then return { lang = lang, term = nil, unknown_term = true, is_family = is_family, } end if rest == "-" then return { lang = lang, term = nil, suppress_term = true, is_family = is_family, } end if not rest:find("<", 1, true) then return { lang = lang, term = M.string_utilities.trim(rest), is_family = is_family, } end local term_text = rest:match("^([^<]*)") or "" local is_unknown = (term_text == "") local is_suppress = (term_text == "-") local function generate_obj(ignored_term) return { term = (is_unknown or is_suppress) and nil or M.string_utilities.trim(term_text) } end local rest_with_defaults = Util.add_boolean_defaults(rest, EtymonParser.etymon_param_mods) local parsed_obj = M.parse_utilities.parse_inline_modifiers(rest_with_defaults, { param_mods = get_clean_param_mods(EtymonParser.etymon_param_mods), generate_obj = generate_obj }) if parsed_obj.id and parsed_obj.id:match("^!") then parsed_obj.id = parsed_obj.id:sub(2) parsed_obj.override = true end parsed_obj.lang = lang parsed_obj.is_family = is_family if is_unknown then parsed_obj.unknown_term = true elseif is_suppress then parsed_obj.suppress_term = true end return parsed_obj end function EtymonParser.validate(lang, args, id, title, pos, starts_with_lang_code) -- id is now optional, so only validate if provided if id then if mw.ustring.len(id) < 2 then error("The `id` parameter must have at least two characters.") end if id == title or id == Util.get_page_data().pagename then error("The `id` parameter must not be the same as the page title.") end end local valid_pos = { prefix = true, suffix = true, interfix = true, infix = true, root = true, word = true } if pos and not valid_pos[pos] then error("Unknown value provided for `pos`. Valid values: " .. table.concat(require("Module:table").keysToList(valid_pos), ", ") .. ".") end local current_keyword = "from" local etymons_in_group = {} local keywords = M.data.keywords local function checkGroup() if keywords[current_keyword] and keywords[current_keyword].is_group and current_keyword ~= "affix" and current_keyword ~= "surf" and current_keyword ~= "afeq" and current_keyword ~= "univerbation" and #etymons_in_group <= 1 then error("Detected `:" .. current_keyword .. "` group with fewer than two etymons.") end etymons_in_group = {} end local start_index = starts_with_lang_code and 2 or 1 for i = start_index, #args do local param = args[i] if type(param) ~= "string" then elseif param:sub(1, 1) == ":" and not is_keyword(param) then error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif is_keyword(param) then checkGroup() current_keyword = get_canonical_keyword(get_keyword(param)) else local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then table.insert(etymons_in_group, param) local param_lang = etymon_data.lang if etymon_data.is_family and current_keyword == "inherited" then error("`:inh` does not support family codes; use a specific language.") end if etymon_data.is_family and not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end if current_keyword == "from" and param_lang:getFullCode() ~= lang:getFullCode() then error("`:from` is for same-language derivation, but language does not match. " .. "Expected '" .. lang:getFullCode() .. "', got '" .. param_lang:getFullCode() .. "'.") elseif current_keyword == "inherited" then M.etymology.check_ancestor(lang, param_lang) end -- Check modifier restrictions EtymonParser.check_modifier_restrictions(etymon_data, current_keyword, EtymonParser.etymon_param_mods) -- postype must be "root" or "word" local VALID_POSTYPES = { root = true, word = true } if etymon_data.postype and not VALID_POSTYPES[etymon_data.postype] then error("Invalid <postype:" .. etymon_data.postype .. ">; must be \"root\" or \"word\".") end if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) EtymonParser.validate(etymon_data.lang, inline_args, nil, nil, nil, true) end else table.insert(etymons_in_group, param) end end end checkGroup() end local DataRetriever = {} local function format_etymon_id_hint(id_data, idx) local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then return '"' .. id .. '"' end if pos and pos ~= "" then return "unnamed (|pos=" .. pos .. "|)" end return "etymon #" .. idx .. " (no |id= on page)" end local function etymon_target_page_link(page, norm_lang) return M.links.full_link({ term = page, lang = norm_lang, no_generate_forms = true, }, "term") end -- Summarize {{etymon}} id slots on a linked page for preview warnings. local function summarize_available_etymon_ids(ids) local id_list = {} local all_idless = true local target_has_idless = false local any_pos = false for i, id_data in ipairs(ids) do local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then all_idless = false else target_has_idless = true end if pos and pos ~= "" then any_pos = true end table.insert(id_list, format_etymon_id_hint(id_data, i)) end return { id_list = id_list, all_idless = all_idless, target_has_idless = target_has_idless, any_pos = any_pos, count = #ids, options_text = mw.text.listToText(id_list), } end local function ambiguous_etymon_suggestion(page_link, summary) if summary.all_idless then if summary.any_pos then return " None set `|id=` yet; add a unique `|id=` to each on " .. page_link .. ", then `<id:identifier>` after the term here. Section order / hints: " .. summary.options_text .. "." end return " None set `|id=` yet; add a unique `|id=` to each {{etymon}} in that section from top to bottom, then `<id:identifier>` after the term here (same value as `|id=`)." end return " Specify which one with `<id:identifier>` after the term. Options: " .. summary.options_text .. "." end local function warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(ids) if is_toplevel and summary.target_has_idless then __state.linked_page_multiple_etymons_idless = true end local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " is ambiguous (" .. summary.count .. " {{etymon}} templates for " .. lang_name .. ")." Util.add_warning(lead .. ambiguous_etymon_suggestion(page_link, summary), true) end local function is_mismatched_explicit_id(base_key, cached_args, parent_etymon) return cached_args == M.data.STATUS.MISSING and not parent_etymon and #(__state.available_etymon_ids[base_key] or {}) > 0 end local function warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_id) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(__state.available_etymon_ids[base_key] or {}) local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " uses `<id:" .. etymon_id .. ">`, but no {{etymon}} on that page has `|id=" .. etymon_id .. "|` for " .. lang_name .. "." Util.add_warning(lead .. " Valid IDs: " .. summary.options_text .. ".", true) end -- Given an etymon data, scrape its page and cache the result in the global state object. function DataRetriever.cache_page_etymons(etymon_page, etymon_title, key, etymon_lang, etymon_id, redirected_from, descendants_is_toplevel) local content = etymon_title:getContent() if not content then __state.cached_etymon_args[key] = M.data.STATUS.REDLINK return end -- Check if the linked page is a redirect. If it is, the template parsing -- code below will be effectively skipped, and `scrape_page` will be called -- again on the redirect target (see the bottom of this function) local lang_section_for_descendants = nil local redirect_target = etymon_title.redirect_target if not redirect_target then content = M.pages.get_section(content, etymon_lang:getFullName(), 2) if not content then __state.cached_etymon_args[key] = M.data.STATUS.MISSING return end lang_section_for_descendants = content end local etymon_lang_code = etymon_lang:getFullCode() local lang_page_key = etymon_lang_code .. ":" .. etymon_page local found_templates_for_lang = {} local found_ids = {} local get_node_class = M.template_parser.class_else_type -- Look for all {{etymon}} templates within the page content using the template parser -- This way the same page is never parsed more than once -- Build a map from senseids to their parent etymonids. local active_etymon_args = nil for node in M.template_parser.parse(content):iterate_nodes() do local node_class = get_node_class(node) if node_class == "heading" then -- A new L2 or etymology section acts as a barrier: an {{etymon}} usage -- used previously cannot be the parent of any subsequent senseids. -- Note that we don't have to check for L2s due to the usage of `M.pages.get_section` above. if node:get_name():find("^Etymology") then active_etymon_args = nil end elseif node_class == "template" then local template_name = node:get_name() if template_name == "etymon" then local template_args = node:get_arguments() -- Check if this etymon is for our language if template_args[1] == etymon_lang_code then table.insert(found_templates_for_lang, template_args) if template_args.id then local etymon_key = lang_page_key .. ":" .. template_args.id __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, template_args.id) active_etymon_args = template_args else -- Store idless etymon with default key local etymon_key = lang_page_key .. ":*" __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, "*") active_etymon_args = template_args end end elseif active_etymon_args and template_name == "senseid" then local template_args = node:get_arguments() -- This should always be true for proper usages of {{senseid}}. if template_args[1] == etymon_lang_code and template_args[2] then local sense_id_key = lang_page_key .. ":" .. template_args[2] __state.senseid_parent_etymon[sense_id_key] = active_etymon_args __state.cached_etymon_pages[sense_id_key] = tostring(etymon_page) end end end end if descendants_is_toplevel and lang_section_for_descendants and #found_templates_for_lang > 0 then M.descendants.cache_page_checks({ lang_section = lang_section_for_descendants, etymon_lang_code = etymon_lang_code, found_templates_for_lang = found_templates_for_lang, entry_title = __state.entry_title, entry_lang_code = __state.entry_lang_code, entry_lang = __state.entry_lang_code and Util.get_lang(__state.entry_lang_code, true) or nil, cached_descendants_checks = __state.cached_descendants_checks, lang_page_key = lang_page_key, redirected_from = redirected_from, }) end local id_data_list = {} for _, args in ipairs(found_templates_for_lang) do local id = args.id or "*" table.insert(id_data_list, { id = id, pos = args.pos }) end __state.available_etymon_ids[lang_page_key] = id_data_list if #found_templates_for_lang == 1 then __state.single_etymons[lang_page_key] = found_templates_for_lang[1] end if redirected_from and __state.available_etymon_ids[lang_page_key] then __state.available_etymon_ids[redirected_from] = __state.available_etymon_ids[redirected_from] or {} for _, id_data in ipairs(__state.available_etymon_ids[lang_page_key]) do table.insert(__state.available_etymon_ids[redirected_from], id_data) end end if __state.cached_etymon_args[key] ~= nil or __state.senseid_parent_etymon[key] ~= nil then -- All done! return elseif redirect_target and not redirected_from then -- Try scraping the redirect. etymon_page = redirect_target.prefixedText DataRetriever.cache_page_etymons(etymon_page, redirect_target, lang_page_key .. ":" .. etymon_id, etymon_lang, etymon_id, lang_page_key, descendants_is_toplevel) __state.cached_etymon_args[key] = __state.cached_etymon_args[etymon_lang_code .. ":" .. etymon_page .. ":" .. etymon_id] else __state.cached_etymon_args[key] = M.data.STATUS.MISSING end end -- Given an etymon object, scrape its page (if necessary) and return its own etymon arguments as well as the page name. function DataRetriever.get_etymon_args(etymon_data, is_toplevel) local page = M.links.get_link_page(etymon_data.term, etymon_data.lang) local norm_lang = Util.get_norm_lang(etymon_data.lang) local base_key = norm_lang:getFullCode() .. ":" .. page if etymon_data.id then local key = base_key .. ":" .. etymon_data.id local cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] if cached_args == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, is_toplevel) end cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] -- refresh -- Get etymon_id from parent if this was resolved via senseid local parent_etymon = __state.senseid_parent_etymon[key] local resolved_etymon_id = parent_etymon and parent_etymon.id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) end end local mismatched_id = is_mismatched_explicit_id(base_key, cached_args, parent_etymon) if mismatched_id and is_toplevel then __state.has_mismatched_id = true warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_data.id) end return cached_args, __state.cached_etymon_pages[key], resolved_etymon_id, descendants_check else __state.used_idless_etymon = true if is_toplevel then __state.toplevel_idless_etymon = true end if __state.available_etymon_ids[base_key] == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, is_toplevel) end local ids = __state.available_etymon_ids[base_key] or {} local count = #ids -- Try to filter by postype if available and we have multiple candidates if count > 1 and etymon_data.postype then local matching_ids = {} for _, id_data in ipairs(ids) do if id_data.pos == etymon_data.postype then table.insert(matching_ids, id_data) end end if #matching_ids == 1 then local matched_id = matching_ids[1].id local matched_key = base_key .. ":" .. matched_id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id = matched_id }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id = matched_id }, }) end end return __state.cached_etymon_args[matched_key], __state.cached_etymon_pages[matched_key], nil, descendants_check end end if count == 1 then local only_id_data = ids[1] local only_id = (type(only_id_data) == "table" and only_id_data.id) or only_id_data or "*" local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id_data = only_id_data }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id_data = only_id_data }, }) end end return __state.single_etymons[base_key], __state.cached_etymon_pages[base_key .. ":" .. only_id], nil, descendants_check elseif count > 1 then warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) return M.data.STATUS.AMBIGUOUS, nil, nil, nil else return M.data.STATUS.MISSING, nil, nil, nil end end end local TreeBuilder = {} local function parse_etymon_references(refs_text) if not refs_text or refs_text == "" then return "" end return M.references.parse_references(refs_text) end local function parse_tree_references(node) if node.ref then node.parsed_ref = parse_etymon_references(node.ref) end if node.children then for _, container in ipairs(node.children) do if container.terms then for _, term in ipairs(container.terms) do parse_tree_references(term) end end end end end -- Build a unique key for deduplication in the seen table function TreeBuilder.build_key(lang, title, args) local norm_lang_code = Util.get_norm_lang(lang):getFullCode() local is_table = type(args) == "table" local id = (is_table and args.id) or "" if title then return norm_lang_code .. ":" .. M.links.get_link_page(title, lang) .. ":" .. id end if is_table and args.status == M.data.STATUS.INLINE then local content_parts = {} for i = 1, #args do content_parts[i] = tostring(args[i]) end return norm_lang_code .. ":*:" .. id .. "\0" .. table.concat(content_parts, "\0") end return norm_lang_code .. ":*:" .. id end function TreeBuilder.build(lang, title, args, seen, depth, stop_recursion) seen = seen or {} depth = depth or 0 local is_toplevel = (depth == 0) if depth > __state.max_depth_reached then __state.max_depth_reached = depth end __state.total_nodes = __state.total_nodes + 1 local lang_code = lang:getCode() __state.language_count[lang_code] = (__state.language_count[lang_code] or 0) + 1 local current_id = (type(args) == "table" and args.id) or "" local key = TreeBuilder.build_key(lang, title, args) local node = { lang = lang, title = title, id = current_id, args = args, children = {}, status = M.data.STATUS.OK } if type(args) ~= "table" or seen[key] then node.status = args or M.data.STATUS.MISSING -- Mark as duplicate if we've seen this node before if seen[key] then node.is_duplicate = true node.duplicate_key = key local original_node = seen[key] if type(original_node) == "table" and original_node.children and #original_node.children > 0 then node.original_has_children = true end end return node end node.status = args.status or M.data.STATUS.OK seen[key] = node -- If stop_recursion is set, skip parsing children but check for visible children if stop_recursion then local keywords = M.data.keywords local has_visible_children = false for i = 2, #args do local param = args[i] if type(param) == "string" then local keyword_base = get_keyword_base(param) if keyword_base and keywords[keyword_base] then -- It's a keyword, check if visible in tree (invisible "all" or "tree" = hidden in tree) local keyword_info = keywords[keyword_base] local inv = keyword_info.invisible if not (inv == "all" or inv == true or inv == "tree") then has_visible_children = true break end elseif param:sub(1, 1) ~= ":" then -- It's a term (not a keyword), so there are visible children has_visible_children = true break end end end node.has_visible_children = has_visible_children return node end -- Parse args into keyword containers local current_keyword = "from" local current_keyword_modifiers = {} local current_container = nil -- Helper to track keyword usage at top level local function track_keyword_usage(keyword, target_lang, source_lang) if not is_toplevel then return end if not __state.toplevel_keyword_stats[keyword] then __state.toplevel_keyword_stats[keyword] = { count = 0, target_langs = {}, source_langs = {}, } end local keyword_data = __state.toplevel_keyword_stats[keyword] keyword_data.count = keyword_data.count + 1 local target_code = target_lang:getCode() keyword_data.target_langs[target_code] = (keyword_data.target_langs[target_code] or 0) + 1 if source_lang then local source_code = source_lang:getCode() keyword_data.source_langs[source_code] = (keyword_data.source_langs[source_code] or 0) + 1 end end local function ensure_container() if not current_container or current_container.keyword ~= current_keyword then current_container = { keyword = current_keyword, keyword_info = M.data.keywords[current_keyword], keyword_modifiers = current_keyword_modifiers, terms = {}, } table.insert(node.children, current_container) -- Override keyword text/phrase for nominalization with <g:code> if current_keyword_modifiers.g and current_keyword == "nominalization" then local labels = get_nominalization_label_for_g(current_keyword_modifiers.g) if not labels then local codes = {} for c in pairs(M.data.nominalization_g_codes) do table.insert(codes, c) end table.sort(codes) error("Invalid <g:" .. tostring(current_keyword_modifiers.g) .. ">. Supported codes for nominalization: " .. table.concat(codes, ", ")) end current_container.keyword_info = {} for k, v in pairs(M.data.keywords[current_keyword]) do current_container.keyword_info[k] = v end current_container.keyword_info.text = labels.text current_container.keyword_info.phrase = labels.phrase end end end for i = 2, #args do local param = args[i] if is_keyword(param) then local keyword, modifiers = EtymonParser.parse_keyword_modifiers(param) current_keyword = keyword current_keyword_modifiers = modifiers current_container = nil -- Force new container for new keyword elseif type(param) == "string" and param:sub(1, 1) == ":" then error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif type(param) == "string" then local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then -- Track keyword usage at top level track_keyword_usage(current_keyword, lang, etymon_data.lang) local term_node = {} -- Handle suppress_term (-) and unknown_term (empty) directly if etymon_data.suppress_term or etymon_data.unknown_term then ensure_container() if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE term_node = TreeBuilder.build(etymon_data.lang, nil, inline_args, seen, depth + 1) else term_node = { lang = etymon_data.lang, children = {}, status = M.data.STATUS.OK, } end term_node.suppress_term = etymon_data.suppress_term term_node.unknown_term = etymon_data.unknown_term term_node.is_family = etymon_data.is_family term_node.is_uncertain = etymon_data.unc term_node.ref = etymon_data.ref term_node.t = etymon_data.t term_node.tr = etymon_data.tr term_node.ts = etymon_data.ts term_node.alt = etymon_data.alt term_node.g = etymon_data.g term_node.pos = etymon_data.pos term_node.ng = etymon_data.ng term_node.lit = etymon_data.lit term_node.q = etymon_data.q term_node.qq = etymon_data.qq term_node.l = etymon_data.l term_node.ll = etymon_data.ll else -- Regular term: fetch arguments from page local etymon_args, page_of, resolved_etymon_id, descendants_check = DataRetriever.get_etymon_args(etymon_data, is_toplevel) -- Check for <ety> inline parameter doesn't override the scraped arguments, unless the latter are missing if etymon_data.ety then if etymon_args == M.data.STATUS.REDLINK or etymon_args == M.data.STATUS.MISSING then __state.current_page_has_inline_etymology = true if is_toplevel then __state.toplevel_has_inline_etymology = true end local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) -- Track inline ety keywords too local inline_keyword = get_keyword(inline_args[2], true) if inline_keyword and #inline_args >= 3 then local inline_etymon = EtymonParser.parse_etymon(inline_args[3], etymon_data.lang) if inline_etymon then track_keyword_usage(inline_keyword, etymon_data.lang, inline_etymon.lang) end end inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE etymon_args = inline_args term_node.page_of = __state.cached_etymon_pages[key] -- term node is on the same page as the parent else -- Scraped arguments exist, <ety> is redundant and ignored __state.current_page_has_redundant_etymology = true if is_toplevel then __state.toplevel_redundant_etymology = true end end end -- Ensure container exists before checking keyword info ensure_container() -- Check if current keyword has no_child_categories - if so, stop recursion local keyword_info = current_container.keyword_info local should_stop_recursion = (stop_recursion or (keyword_info and keyword_info.no_child_categories)) term_node = TreeBuilder.build(etymon_data.lang, etymon_data.term, etymon_args, seen, depth + 1, should_stop_recursion) term_node.target_key = Util.get_norm_lang(etymon_data.lang):getFullCode() .. ":" .. M.links.get_link_page(etymon_data.term, etymon_data.lang) term_node.id = etymon_data.id term_node.etymon_id = resolved_etymon_id -- The actual etymon id when resolved via senseid term_node.t = etymon_data.t term_node.tr = etymon_data.tr term_node.ts = etymon_data.ts term_node.pos = etymon_data.pos term_node.alt = etymon_data.alt term_node.g = etymon_data.g term_node.ng = etymon_data.ng term_node.ref = etymon_data.ref term_node.is_uncertain = etymon_data.unc term_node.override = etymon_data.override term_node.page_of = page_of term_node.aftype = etymon_data.aftype term_node.postype = etymon_data.postype term_node.bor = etymon_data.bor term_node.lbor = etymon_data.lbor term_node.slbor = etymon_data.slbor term_node.lit = etymon_data.lit term_node.is_family = etymon_data.is_family term_node.q = etymon_data.q term_node.qq = etymon_data.qq term_node.l = etymon_data.l term_node.ll = etymon_data.ll term_node.missing_descendants_header, term_node.missing_descendants_entry = M.descendants.get_term_sync_flags(current_keyword, term_node.status, descendants_check) end table.insert(current_container.terms, term_node) end end end return node end -- Convert etymology tree to JSON-serializable table local function tree_to_json(node) local obj = { term = node.title, lang = node.lang:getCode(), lang_name = node.lang:getCanonicalName(), id = (node.id and node.id ~= "") and node.id or nil, status = node.status, is_uncertain = node.is_uncertain or nil, is_duplicate = node.is_duplicate or nil, gloss = node.t, transliteration = node.tr, transcription = node.ts, alt = node.alt, g = node.g, pos = node.pos, ng = node.ng, children = {}, } for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if keyword_info then local container_obj = { keyword = container.keyword, keyword_label = keyword_info.text, keyword_abbrev = keyword_info.abbrev, is_group = keyword_info.is_group or nil, is_invisible = keyword_info.invisible or nil, is_uncertain = (container.keyword_modifiers and container.keyword_modifiers.unc) or nil, terms = {}, } for _, term in ipairs(container.terms or {}) do table.insert(container_obj.terms, tree_to_json(term)) end table.insert(obj.children, container_obj) end end return obj end local function track_ranges(base_key, value, ranges, lang_code) M.track("etymon/" .. base_key .. "/" .. value) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. value) end for _, range in ipairs(ranges) do local matches = false if range.min and range.max then matches = value >= range.min and value <= range.max elseif range.min then matches = value >= range.min elseif range.max then matches = value <= range.max elseif range.exact then matches = value == range.exact end if matches then M.track("etymon/" .. base_key .. "/" .. range.label) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. range.label) end break end end end local function track_title_pagename_mismatch_after_strip(lang) local lang_code = lang:getCode() M.track("etymon/title/pagename-mismatch-after-strip-diacritics") M.track("etymon/lang/" .. lang_code .. "/title/pagename-mismatch-after-strip-diacritics") end -- Build and return the etymology data tree for a given term. function export.get_tree(lang, title, args, options) options = options or {} __state.entry_title = title __state.entry_lang_code = lang:getCode() if options.validate then EtymonParser.validate(lang, args, options.id, title, options.pos, false) end local lang_code = lang:getCode() local start_index = (args[1] == lang_code) and 2 or 1 local tree_args = { [1] = lang_code, id = options.id or args.id } for i = start_index, #args do table.insert(tree_args, args[i]) end __state.cached_etymon_args[lang_code .. ":" .. title .. ":" .. (tree_args.id or "")] = tree_args local ety_data_tree = TreeBuilder.build(lang, title, tree_args) parse_tree_references(ety_data_tree) if options.json then return M.JSON.toJSON(tree_to_json(ety_data_tree)) end return ety_data_tree end -- Given a language code, page name and optionally the id= parameter, -- render the tree and only the etymology tree for the relevant page. -- Fetches and parses the corresponding {{etymon}} from the requested page, -- and any further pages needed to render the tree. -- Parameters can be passed either through the #invoke or as -- template parameters *through* an #invoke. function export.render_tree_for_etymon_on_page(frame) local frame_args = frame.args local parent_args = frame:getParent().args local langcode = frame_args[1] or parent_args[1] local pagename = frame_args[2] or parent_args[2] local id = frame_args["id"] or parent_args["id"] local display_title = frame_args["title"] or parent_args["title"] local parsed_title = mw.title.new(pagename, 0) local title if parsed_title.namespace == 0 then title = M.pages.safe_page_name(parsed_title) elseif parsed_title.namespace == 118 then title = "*" .. M.pages.safe_page_name(parsed_title) else error("Unsupported namespace for render_tree_for_etymon_on_page: " .. parsed_title.namespace) end local lang = Util.get_lang(langcode) -- Construct etymon_data for DataRetriever.get_args. local etymon_data = { lang = lang, term = title, id = id } local args, pagename = DataRetriever.get_etymon_args(etymon_data, true) if args == M.data.STATUS.MISSING then error("The etymon template was not found (language " .. langcode .. ", title '" .. title .. "'" .. (id and ", ID '" .. id .. "'" or ", no ID given") .. "). Page contents may have changed in the interim.") end local tree_title = display_title or title if lang:stripDiacritics(M.links.remove_links(tree_title)) ~= lang:stripDiacritics(M.links.remove_links(title)) then track_title_pagename_mismatch_after_strip(lang) end local ety_data_tree = export.get_tree(lang, tree_title, args, { validate = true, id = id, }) local output = {} table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) return table.concat(output) end function export.main(frame) local parent_args = frame:getParent().args local args = M.parameters.process(parent_args, M.parameters_data.etymon) local lang = args[1] local etymon_args = args[2] local id = args.id local title = args.title local text = args.text local tree = args.tree local etydate = args.etydate local rfe = args.rfe local page_data = Util.get_page_data() if not title then title = page_data.pagename if page_data.namespace == "Reconstruction" then title = "*" .. title end end local entry_pagename = page_data.pagename if page_data.namespace == "Reconstruction" then entry_pagename = "*" .. entry_pagename end if lang:stripDiacritics(M.links.remove_links(title)) ~= lang:stripDiacritics(M.links.remove_links(entry_pagename)) then track_title_pagename_mismatch_after_strip(lang) end local current_L2 = M.pages.get_current_L2() if current_L2 then local norm_lang = Util.get_norm_lang(lang) local norm_name = norm_lang:getCanonicalName() if current_L2 ~= norm_name then local lang_desc = lang:getCode() .. " (" .. lang:getCanonicalName() .. ")" if norm_lang:getCode() ~= lang:getCode() then lang_desc = lang_desc .. ", normalized to " .. norm_lang:getCode() .. " (" .. norm_name .. ")" end error("Language '" .. lang_desc .. "' does not match the L2 header (" .. current_L2 .. ").") end end local ety_data_tree = export.get_tree(lang, title, etymon_args, { validate = true, pos = args.pos, id = id, json = args.json, }) if args.json then return ety_data_tree end local output = {} local text_allowlist_mode = M.text_allowed.default_mode or "off" if text and text_allowlist_mode ~= "off" and not Util.is_text_param_allowed_for_lang(lang) then local msg = "Etymology texts (parameter <code>text=</code>) are not allowed for " .. lang:getFullName() .. "; see [[Template:etymon#Text allowlist|Template:etymon § Text allowlist]] for the list of languages that may use the <code>text=</code> parameter." if text_allowlist_mode == "error" then error(msg) else Util.add_warning(msg, true) end end local lang_exc = Util.get_lang_exception(lang) if lang_exc and lang_exc.disallow then local disallow = lang_exc.disallow local error_text = " for " .. lang:getFullName() if disallow.ref then error_text = error_text .. "; see " .. disallow.ref else error_text = error_text .. "." end if tree and disallow.tree then error("Etymology trees are not allowed" .. error_text) end if text and disallow.text then error("Etymology texts are not allowed" .. error_text) end end if etydate then local etydate_param_mods = { ref = { list = true, type = "references", allow_holes = true }, refn = { list = true, allow_holes = true }, nocap = { type = "boolean" }, } local function generate_etydate_obj(etydate_text) local etydate_specs = {} for spec in etydate_text:gmatch("[^,]+") do table.insert(etydate_specs, mw.text.trim(spec)) end return { [1] = etydate_specs } end local parsed_etydate = M.parse_utilities.parse_inline_modifiers(etydate, { param_mods = etydate_param_mods, generate_obj = generate_etydate_obj }) local etydate_args = { [1] = parsed_etydate[1], nocap = parsed_etydate.nocap or false, } ety_data_tree.etydate = M.etydate.format_etydate(etydate_args, { omit_refs = true }) if parsed_etydate.ref and #parsed_etydate.ref > 0 then ety_data_tree.etydate_refs = parsed_etydate.ref end end if tree then table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) end -- Check if there are any visible children in tree (invisible "all" or "tree" = hidden in tree) local has_visible_children = false for _, child in ipairs(ety_data_tree.children or {}) do local child_keyword_info = child.keyword_info local inv = child_keyword_info and child_keyword_info.invisible if not (inv == "all" or inv == true or inv == "tree") then has_visible_children = true break end end local tree_disallowed = lang_exc and lang_exc.disallow and lang_exc.disallow.tree local ety_tree_json = M.JSON.toJSON(tree_to_json(ety_data_tree)) local anchor = M.anchors.etymonid(lang, id, { no_tree = args.notree, title = title, empty_tree = (not has_visible_children) or tree_disallowed, ety_tree_json = ety_tree_json, }) table.insert(output, anchor) if text then local max_depth, stop_at_blue_link, stop_at_lang, stop_at_lang_or_bluelink if text == "++" then max_depth, stop_at_blue_link = false, false elseif text == "+" then max_depth, stop_at_blue_link = 1, false elseif text == "*" then max_depth, stop_at_blue_link = false, true elseif text:match("^:[^*]+%*$") then -- Stop at a specific language OR first bluelink after it, e.g., ":ota*" -- If the target language is a redlink, continue to the first bluelink local lang_code = text:match("^:([^*]+)%*$") if lang_code and lang_code ~= "" then local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang_or_bluelink = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end elseif text:sub(1, 1) == ":" then -- Stop at a specific language, e.g., ":ar" stops at first Arabic term local lang_code = text:sub(2) if lang_code ~= "" then -- Validate the language code local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else local num = tonumber(text) if num and num >= 1 then max_depth, stop_at_blue_link = num, false else error('Invalid text value "' .. text .. '". Valid values are: "++" (full chain), "+" (first step only), "*" (until first blue link), a number (max steps), ":lang" (stop at language), or ":lang*" (stop at language or first bluelink if redlink)') end end table.insert(output, M.text.render({ data_tree = ety_data_tree, format_term_func = Util.format_term, max_depth = max_depth, stop_at_blue_link = stop_at_blue_link, curr_page = page_data.pagename, nodot = args.nodot, stop_at_lang = stop_at_lang, stop_at_lang_or_bluelink = stop_at_lang_or_bluelink, })) end if rfe then local rfe_param_mods = { nocat = { type = "boolean" }, sort = {}, y = {}, m = {}, fragment = {}, section = {}, box = { type = "boolean" }, noes = { type = "boolean" }, } local function generate_rfe_obj(rfe_text) -- Check if it's a boolean true value if M.yesno(rfe_text, false) then return { is_boolean = true } else return { text = rfe_text } end end local rfe_with_defaults = Util.add_boolean_defaults(rfe, rfe_param_mods) local parsed_rfe = M.parse_utilities.parse_inline_modifiers(rfe_with_defaults, { param_mods = rfe_param_mods, generate_obj = generate_rfe_obj }) local rfe_args = { [1] = lang:getCode(), nocat = parsed_rfe.nocat, sort = parsed_rfe.sort, y = parsed_rfe.y, m = parsed_rfe.m, fragment = parsed_rfe.fragment, section = parsed_rfe.section, box = parsed_rfe.box, noes = parsed_rfe.noes, } if not parsed_rfe.is_boolean then rfe_args[2] = parsed_rfe.text end table.insert(output, frame:expandTemplate({ title = "rfe", args = rfe_args })) end if Util.is_content_page() and __state.max_depth_reached > 0 then local lang_code = lang:getCode() local depth_ranges = { { min = 50, label = "extremely-deep" }, { min = 20, label = "20+" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { max = 2, label = "1-2" } } local node_ranges = { { min = 100, label = "extremely-large" }, { min = 50, label = "50+" }, { min = 20, max = 49, label = "20-49" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { max = 4, label = "1-4" } } local language_ranges = { { min = 10, label = "10+" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { exact = 2, label = "2" }, { exact = 1, label = "1" } } track_ranges("depth", __state.max_depth_reached, depth_ranges, lang_code) track_ranges("nodes", __state.total_nodes, node_ranges, lang_code) local unique_languages = 0 for _ in pairs(__state.language_count) do unique_languages = unique_languages + 1 end track_ranges("unique-languages", unique_languages, language_ranges, lang_code) if __state.total_nodes == __state.max_depth_reached + 1 then track_ranges("linear-depth", __state.max_depth_reached, depth_ranges, lang_code) end end local categories = {} if Util.is_content_page() then local should_suppress_categories = lang_exc and lang_exc.suppress_categories if not should_suppress_categories and not args.nocat then categories = M.categories.render({ data_tree = ety_data_tree, page_lang = lang, available_etymon_ids = __state.available_etymon_ids, senseid_parent_etymon = __state.senseid_parent_etymon, get_norm_lang_func = Util.get_norm_lang, lang_exc = lang_exc, }) end local target_lang_code = lang:getCode() for keyword, keyword_data in pairs(__state.toplevel_keyword_stats) do -- Track keyword globally M.track("etymon/keyword/" .. keyword) -- Track keyword per target language M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code) -- Track keyword per source language for source_code, count in pairs(keyword_data.source_langs) do M.track("etymon/keyword/" .. keyword .. "/source/" .. source_code) -- Track keyword per target+source combination M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code .. "/source/" .. source_code) end end if tree then table.insert(categories, "Pages with etymology trees") table.insert(categories, lang:getCanonicalName() .. " entries with etymology trees") end if text then table.insert(categories, lang:getCanonicalName() .. " entries with etymology texts") end if args.exnihilo then table.insert(categories, lang:getCanonicalName() .. " terms coined ex nihilo") end if __state.toplevel_has_inline_etymology then table.insert(categories, "Pages with inline etymon for redlinks") end if __state.toplevel_redundant_etymology then table.insert(categories, "Pages with redundant inline etymon") end if __state.toplevel_idless_etymon then table.insert(categories, "Pages using etymon with no ID") end if __state.has_mismatched_id then table.insert(categories, lang:getCanonicalName() .. " entries referencing etymons with mismatched IDs") end if __state.linked_page_multiple_etymons_idless then table.insert(categories, lang:getCanonicalName() .. " entries referencing pages with multiple etymons missing IDs") end end if #categories > 0 then table.insert(output, M.categories.format(categories, lang)) end if __state.warnings then for i, warning in ipairs(__state.warnings) do table.insert(output, (i == 1 and "\n" or "") .. warning .. "\n") end end return table.concat(output) end return export eo91z4122alt9viwz3w414rij793ha8 235417 235416 2026-06-02T04:50:46Z Lee 19 [[:en:Module:etymon]] වෙතින් එක් සංශෝධනයක් 235416 Scribunto text/plain --[=[ This module implements the {{etymon}} template for structured etymology data on Wiktionary. It enables the creation of etymology trees and text by parsing etymon chains, scraping linked pages for their own {{etymon}} data, and recursively building a tree of derivational relationships. Authors: - Original implementation: [[User:Ioaxxere]] - Full refactor (September 2025): [[User:Fenakhay]] ([[Special:Diff/86717746]]) Modules: - [[Module:etymon]]: main module handling parsing, validation, tree building, and page scraping - [[Module:etymon/data]]: keyword definitions, configuration, and status constants - [[Module:etymon/tree]]: etymology tree rendering - [[Module:etymon/text]]: etymology text generation - [[Module:etymon/categories]]: category generation logic ]=] local export = {} local etymon_data_module = "Module:etymon/data" local etymon_text_module = "Module:etymon/text" local etymon_tree_module = "Module:etymon/tree" local etymon_categories_module = "Module:etymon/categories" local etymon_descendants_module = "Module:etymon/descendants" local __state = { cached_etymon_args = {}, cached_etymon_pages = {}, cached_descendants_checks = {}, senseid_parent_etymon = {}, available_etymon_ids = {}, single_etymons = {}, entry_title = nil, entry_lang_code = nil, current_page_has_inline_etymology = false, current_page_has_redundant_etymology = false, used_idless_etymon = false, toplevel_has_inline_etymology = false, toplevel_redundant_etymology = false, toplevel_idless_etymon = false, has_mismatched_id = false, linked_page_multiple_etymons_idless = false, max_depth_reached = 0, total_nodes = 0, language_count = {}, toplevel_keyword_stats = {}, warnings = {}, } local loader = require("Module:module loader") local M = loader.init({ require = { data = etymon_data_module, tree = etymon_tree_module, text = etymon_text_module, categories = etymon_categories_module, descendants = etymon_descendants_module, anchors = "Module:anchors", etydate = "Module:etydate", etymology = "Module:etymology", families = "Module:families", languages = "Module:languages", languages_errorgetby = "Module:languages/errorGetBy", links = "Module:links", pages = "Module:pages", parameters = "Module:parameters", string_utilities = "Module:string utilities", template_parser = "Module:template parser", utilities = "Module:utilities", debug = "Module:debug", en_utilities = "Module:en-utilities", parse_utilities = "Module:parse utilities", references = "Module:references", track = "Module:debug/track", template_styles = "Module:TemplateStyles", script_utilities = "Module:script utilities", JSON = "Module:JSON", yesno = "Module:yesno", }, loadData = { headword_data = "Module:headword/data", parameters_data = "Module:parameters/data", text_allowed = "Module:etymon/data/text_allowed", }, }) local Util = {} function Util.format_error(message, preview_only) if preview_only and not M.pages.is_preview() then return nil end return '<span class="error">' .. message .. '</span>' end function Util.add_warning(message, preview_only) local formatted = Util.format_error(message, preview_only) if formatted then table.insert(__state.warnings, formatted) end end function Util.is_text_param_allowed_for_lang(lang) if not lang or type(lang) ~= "table" then return false end local types = lang.getTypes and lang:getTypes() if types and types.family then local code = lang.getCode and lang:getCode() return code and M.text_allowed.families[code] == true end local full_code = lang.getFullCode and lang:getFullCode() if full_code and M.text_allowed.langs[full_code] then return true end if lang.inFamily then for family_code in pairs(M.text_allowed.families) do if lang:inFamily(family_code) then return true end end end return false end function Util.get_lang(code, no_error) if no_error then return M.languages.getByCode(code, nil, true) end return M.languages.getByCode(code, nil, true) or M.languages_errorgetby.code(code, true, true) end function Util.get_family(code) return M.families.getByCode(code) end function Util.get_lang_exception(lang) -- Families have no language-specific exceptions if lang.getTypes and lang:getTypes().family then return nil end local code = lang:getCode() local lang_exceptions = M.data.config.lang_exceptions if lang_exceptions[code] then return lang_exceptions[code] end for norm_code, exc in pairs(lang_exceptions) do if exc.normalize_to and code == exc.normalize_to then return exc end if exc.normalize_from_families then local should_normalize = false for _, family in ipairs(exc.normalize_from_families) do if lang:inFamily(family) then should_normalize = true break end end if should_normalize and exc.normalize_exclude_families then for _, family in ipairs(exc.normalize_exclude_families) do if lang:inFamily(family) then should_normalize = false break end end end if should_normalize then local ret = {} for k, v in pairs(exc) do ret[k] = v end ret.suppress_tr = nil return ret end end end return nil end function Util.get_norm_lang(lang) local exc = Util.get_lang_exception(lang) if exc and exc.normalize_to then return M.languages.getByCode(exc.normalize_to) end return lang end -- Add default values for boolean modifiers (e.g., <unc> becomes <unc:1>) -- This is needed because Module:parse utilities expects boolean modifiers to have explicit values function Util.add_boolean_defaults(str, param_mods) local result = str for name, spec in pairs(param_mods) do if spec.type == "boolean" then -- Replace <name> with <name:1> (but not <name:...> which already has a value) result = result:gsub("<" .. name .. ">", "<" .. name .. ":1>") end end return result end -- Centralized term formatting: handles suppress_term, unknown_term, and regular terms function Util.format_term(term, is_toplevel, opts) opts = opts or {} -- suppress_term (-) returns nil if term.suppress_term then return nil end local lang = term.lang local exc = Util.get_lang_exception(lang) if is_toplevel then local display_text = term.alt or term.title or "" local sc = term.sc or lang:findBestScript(display_text) local bold_text = tostring(mw.html.create("strong") :addClass("selflink") :wikitext(display_text)) return M.script_utilities.tag_text(bold_text, lang, sc, "term") end local link_params = { lang = lang } link_params.term = not term.unknown_term and term.title or nil link_params.alt = term.alt link_params.id = (not term.unknown_term and term.id and term.id ~= "") and term.id or nil if not (exc and exc.suppress_tr) then link_params.tr = term.tr link_params.ts = term.ts else link_params.suppress_tr = true end link_params.lit = (opts.lit ~= "suppress") and term.lit or nil if opts.gloss ~= "suppress" then link_params.gloss = term.t end if term.g and term.g ~= "" then local genders = M.string_utilities.split(term.g, ",") for i = 1, #genders do genders[i] = M.string_utilities.trim(genders[i]) end link_params.genders = genders end if opts.pos ~= "suppress" then link_params.pos = term.pos link_params.ng = term.ng end if exc and exc.suppress_tr then link_params.lit = nil end local show_qualifiers if opts.tree_ql ~= "suppress" then if term.q then link_params.q = term.q end if term.qq then link_params.qq = term.qq end if term.l then link_params.l = term.l end if term.ll then link_params.ll = term.ll end show_qualifiers = term.q or term.qq or term.l or term.ll end return M.links.full_link(link_params, "term", nil, show_qualifiers and true or nil) end local __is_content_page_cached function Util.is_content_page() if __is_content_page_cached == nil then __is_content_page_cached = M.pages.is_content_page(mw.title.getCurrentTitle()) end return __is_content_page_cached end local __page_data_cached function Util.get_page_data() if not __page_data_cached then __page_data_cached = M.headword_data.page end return __page_data_cached end -- Extract base keyword from param (without modifiers) local function get_keyword_base(param) if type(param) ~= "string" then return nil end local base = param:match("^:?([^<]+)") or param:gsub("^:", "") return base end local function is_keyword(param, allow_colon_less) if type(param) ~= "string" then return false end local keywords = M.data.keywords if param:sub(1, 1) == ":" then local base = get_keyword_base(param) return keywords[base] ~= nil end if allow_colon_less then local base = get_keyword_base(param) return keywords[base] ~= nil end return false end local function get_keyword(param, allow_colon_less) if type(param) ~= "string" then return nil end local keywords = M.data.keywords if param:sub(1, 1) == ":" then return get_keyword_base(param) end if allow_colon_less then local base = get_keyword_base(param) if keywords[base] then return base end end return nil end local function normalize_keyword(keyword) if keyword:sub(1, 1) == ":" then return keyword end return ":" .. keyword end -- Resolve keyword (possibly an alias) to its canonical form. Used only at input boundaries local function get_canonical_keyword(keyword) if not keyword then return keyword end return M.data.keyword_canonical[keyword] or keyword end -- Build text/phrase for nominalization with <g:code> (uses data module for codes only). local function get_nominalization_label_for_g(code) if not code or code == "" then return nil end local codes = M.data.nominalization_g_codes local adj = codes[code] if not adj and #code == 2 then local gender_adj = codes[code:sub(1, 1)] local number_adj = codes[code:sub(2, 2)] if gender_adj and number_adj then adj = gender_adj .. " " .. number_adj end end if not adj then return nil end local text = adj:gsub("^%l", function(c) return string.upper(c) end) .. " [[Appendix:Glossary#nominalization|nominalization]] of" local phrase = M.en_utilities.add_indefinite_article(adj .. " [[Appendix:Glossary#nominalization|nominalization]] of", false) return { text = text, phrase = phrase } end local EtymonParser = {} -- Keyword modifier definitions EtymonParser.keyword_param_mods = { unc = { type = "boolean" }, ref = {}, text = { restrict = { keywords = { "from", "derived" } } }, lit = { restrict = { keywords = { "affix", "surf", "univerbation" } } }, conj = {}, -- conjunction for alternatives: "and", "or", "and/or", etc. g = { restrict = { keywords = { "nominalization" } } }, } -- Term modifier definitions EtymonParser.etymon_param_mods = { id = {}, t = {}, tr = {}, ts = {}, q = {}, qq = {}, l = {}, ll = {}, pos = {}, ng = {}, alt = {}, g = {}, ety = {}, lit = {}, unc = { type = "boolean" }, ref = {}, aftype = { restrict = { keywords = { "affix", "surf", "afeq" } } }, postype = {}, bor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, slbor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, lbor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, } local function get_clean_param_mods(param_mods) local clean = {} for mod_name, mod_def in pairs(param_mods) do clean[mod_name] = {} for key, value in pairs(mod_def) do if key ~= "restrict" then clean[mod_name][key] = value end end end return clean end function EtymonParser.check_modifier_restrictions(modifiers, current_keyword, param_mods) for mod_name, mod_value in pairs(modifiers) do -- Only check restrictions if the modifier has a non-false/nil value if mod_value then local mod_def = param_mods[mod_name] if mod_def and mod_def.restrict and mod_def.restrict.keywords then local allowed_keywords = mod_def.restrict.keywords local is_allowed = false for _, allowed_keyword in ipairs(allowed_keywords) do if current_keyword == allowed_keyword then is_allowed = true break end end if not is_allowed then local keyword_list = {} for _, kw in ipairs(allowed_keywords) do table.insert(keyword_list, ":" .. kw) end local keyword_str = table.concat(keyword_list, #keyword_list == 2 and " or " or ", ") if #keyword_list > 2 then -- Replace last comma with "or" keyword_str = keyword_str:gsub(", ([^,]+)$", " or %1") end local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for the keyword" .. (#keyword_list > 1 and "s " or " ") .. keyword_str .. ".") end end end end end -- Parse keyword with modifiers (e.g., ":bor<unc>" or ":bor<ref:{{R:example}}>") function EtymonParser.parse_keyword_modifiers(param) if type(param) ~= "string" then return nil, {} end local base_keyword = get_keyword_base(param) if not base_keyword then return nil, {} end local canonical_keyword = get_canonical_keyword(base_keyword) -- Check if there are any modifiers if not param:find("<", 1, true) then return canonical_keyword, {} end -- Parse modifiers using the same mechanism as etymon parsing local rest_with_defaults = Util.add_boolean_defaults(param, EtymonParser.keyword_param_mods) local function generate_obj(ignored) return {} end local parsed = M.parse_utilities.parse_inline_modifiers(rest_with_defaults:gsub("^:?[^<]+", ""), { param_mods = get_clean_param_mods(EtymonParser.keyword_param_mods), generate_obj = generate_obj }) local modifiers = { unc = parsed.unc or false, ref = parsed.ref, text = parsed.text, lit = parsed.lit, conj = parsed.conj, g = parsed.g, } -- Validate modifiers against restrictions EtymonParser.check_modifier_restrictions(modifiers, canonical_keyword, EtymonParser.keyword_param_mods) return canonical_keyword, modifiers end function EtymonParser.parse_balanced_segments(str) local segments = {} local current = "" local depth = 0 local i = 1 while i <= #str do local char = str:sub(i, i) if char == "<" then if depth == 0 and current ~= "" then table.insert(segments, current) current = "" end depth = depth + 1 current = current .. char elseif char == ">" then current = current .. char depth = depth - 1 if depth == 0 then table.insert(segments, current) current = "" elseif depth < 0 then error("Unbalanced brackets in etymon: unexpected '>'") end else current = current .. char end i = i + 1 end if depth ~= 0 then error("Unbalanced brackets in etymon: missing '>'") end if current ~= "" then table.insert(segments, current) end return segments end function EtymonParser.parse_inline_ety(ety_string, context_lang) local segments = EtymonParser.parse_balanced_segments(ety_string) if #segments == 0 then error("Empty inline etymology") end local keyword = M.string_utilities.trim(segments[1]) if not is_keyword(keyword, true) then error("Invalid keyword '" .. keyword .. "' in inline etymology <ety:" .. keyword .. "...>") end local args = { context_lang:getCode(), normalize_keyword(get_canonical_keyword(keyword)) } for i = 2, #segments do local segment = segments[i] if segment:sub(1, 1) == "<" and segment:sub(-1) == ">" then local inner = segment:sub(2, -2) if inner ~= "" then table.insert(args, inner) end elseif is_keyword(segment, true) then -- Handle keywords that appear between bracketed segments table.insert(args, normalize_keyword(get_canonical_keyword(get_keyword(segment, true)))) end end return args end function EtymonParser.parse_etymon(param, context_lang) if is_keyword(param) then return nil end if type(param) ~= "string" then return nil end local lang, rest local is_family = false local before_bracket = param:match("^([^<]*)") or param local lang_code, rest_match = before_bracket:match("^([a-zA-Z][a-zA-Z0-9._-]*):(.*)$") if lang_code then local potential_lang = Util.get_lang(lang_code, true) if potential_lang then lang = potential_lang rest = param:sub(#lang_code + 2) else local potential_family = Util.get_family(lang_code) if potential_family then lang = potential_family rest = param:sub(#lang_code + 2) is_family = true else lang = context_lang rest = param end end else lang = context_lang rest = param end if rest == "" then M.track("etymon/term/empty") elseif rest == "?" then M.track("etymon/term/question-mark") elseif rest == "-" then M.track("etymon/term/hyphen") end if rest == "" then return { lang = lang, term = nil, unknown_term = true, is_family = is_family, } end if rest == "-" then return { lang = lang, term = nil, suppress_term = true, is_family = is_family, } end if not rest:find("<", 1, true) then return { lang = lang, term = M.string_utilities.trim(rest), is_family = is_family, } end local term_text = rest:match("^([^<]*)") or "" local is_unknown = (term_text == "") local is_suppress = (term_text == "-") local function generate_obj(ignored_term) return { term = (is_unknown or is_suppress) and nil or M.string_utilities.trim(term_text) } end local rest_with_defaults = Util.add_boolean_defaults(rest, EtymonParser.etymon_param_mods) local parsed_obj = M.parse_utilities.parse_inline_modifiers(rest_with_defaults, { param_mods = get_clean_param_mods(EtymonParser.etymon_param_mods), generate_obj = generate_obj }) if parsed_obj.id and parsed_obj.id:match("^!") then parsed_obj.id = parsed_obj.id:sub(2) parsed_obj.override = true end parsed_obj.lang = lang parsed_obj.is_family = is_family if is_unknown then parsed_obj.unknown_term = true elseif is_suppress then parsed_obj.suppress_term = true end return parsed_obj end function EtymonParser.validate(lang, args, id, title, pos, starts_with_lang_code) -- id is now optional, so only validate if provided if id then if mw.ustring.len(id) < 2 then error("The `id` parameter must have at least two characters.") end if id == title or id == Util.get_page_data().pagename then error("The `id` parameter must not be the same as the page title.") end end local valid_pos = { prefix = true, suffix = true, interfix = true, infix = true, root = true, word = true } if pos and not valid_pos[pos] then error("Unknown value provided for `pos`. Valid values: " .. table.concat(require("Module:table").keysToList(valid_pos), ", ") .. ".") end local current_keyword = "from" local etymons_in_group = {} local keywords = M.data.keywords local function checkGroup() if keywords[current_keyword] and keywords[current_keyword].is_group and current_keyword ~= "affix" and current_keyword ~= "surf" and current_keyword ~= "afeq" and current_keyword ~= "univerbation" and #etymons_in_group <= 1 then error("Detected `:" .. current_keyword .. "` group with fewer than two etymons.") end etymons_in_group = {} end local start_index = starts_with_lang_code and 2 or 1 for i = start_index, #args do local param = args[i] if type(param) ~= "string" then elseif param:sub(1, 1) == ":" and not is_keyword(param) then error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif is_keyword(param) then checkGroup() current_keyword = get_canonical_keyword(get_keyword(param)) else local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then table.insert(etymons_in_group, param) local param_lang = etymon_data.lang if etymon_data.is_family and current_keyword == "inherited" then error("`:inh` does not support family codes; use a specific language.") end if etymon_data.is_family and not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end if current_keyword == "from" and param_lang:getFullCode() ~= lang:getFullCode() then error("`:from` is for same-language derivation, but language does not match. " .. "Expected '" .. lang:getFullCode() .. "', got '" .. param_lang:getFullCode() .. "'.") elseif current_keyword == "inherited" then M.etymology.check_ancestor(lang, param_lang) end -- Check modifier restrictions EtymonParser.check_modifier_restrictions(etymon_data, current_keyword, EtymonParser.etymon_param_mods) -- postype must be "root" or "word" local VALID_POSTYPES = { root = true, word = true } if etymon_data.postype and not VALID_POSTYPES[etymon_data.postype] then error("Invalid <postype:" .. etymon_data.postype .. ">; must be \"root\" or \"word\".") end if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) EtymonParser.validate(etymon_data.lang, inline_args, nil, nil, nil, true) end else table.insert(etymons_in_group, param) end end end checkGroup() end local DataRetriever = {} local function format_etymon_id_hint(id_data, idx) local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then return '"' .. id .. '"' end if pos and pos ~= "" then return "unnamed (|pos=" .. pos .. "|)" end return "etymon #" .. idx .. " (no |id= on page)" end local function etymon_target_page_link(page, norm_lang) return M.links.full_link({ term = page, lang = norm_lang, no_generate_forms = true, }, "term") end -- Summarize {{etymon}} id slots on a linked page for preview warnings. local function summarize_available_etymon_ids(ids) local id_list = {} local all_idless = true local target_has_idless = false local any_pos = false for i, id_data in ipairs(ids) do local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then all_idless = false else target_has_idless = true end if pos and pos ~= "" then any_pos = true end table.insert(id_list, format_etymon_id_hint(id_data, i)) end return { id_list = id_list, all_idless = all_idless, target_has_idless = target_has_idless, any_pos = any_pos, count = #ids, options_text = mw.text.listToText(id_list), } end local function ambiguous_etymon_suggestion(page_link, summary) if summary.all_idless then if summary.any_pos then return " None set `|id=` yet; add a unique `|id=` to each on " .. page_link .. ", then `<id:identifier>` after the term here. Section order / hints: " .. summary.options_text .. "." end return " None set `|id=` yet; add a unique `|id=` to each {{etymon}} in that section from top to bottom, then `<id:identifier>` after the term here (same value as `|id=`)." end return " Specify which one with `<id:identifier>` after the term. Options: " .. summary.options_text .. "." end local function warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(ids) if is_toplevel and summary.target_has_idless then __state.linked_page_multiple_etymons_idless = true end local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " is ambiguous (" .. summary.count .. " {{etymon}} templates for " .. lang_name .. ")." Util.add_warning(lead .. ambiguous_etymon_suggestion(page_link, summary), true) end local function is_mismatched_explicit_id(base_key, cached_args, parent_etymon) return cached_args == M.data.STATUS.MISSING and not parent_etymon and #(__state.available_etymon_ids[base_key] or {}) > 0 end local function warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_id) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(__state.available_etymon_ids[base_key] or {}) local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " uses `<id:" .. etymon_id .. ">`, but no {{etymon}} on that page has `|id=" .. etymon_id .. "|` for " .. lang_name .. "." Util.add_warning(lead .. " Valid IDs: " .. summary.options_text .. ".", true) end -- Given an etymon data, scrape its page and cache the result in the global state object. function DataRetriever.cache_page_etymons(etymon_page, etymon_title, key, etymon_lang, etymon_id, redirected_from, descendants_is_toplevel) local content = etymon_title:getContent() if not content then __state.cached_etymon_args[key] = M.data.STATUS.REDLINK return end -- Check if the linked page is a redirect. If it is, the template parsing -- code below will be effectively skipped, and `scrape_page` will be called -- again on the redirect target (see the bottom of this function) local lang_section_for_descendants = nil local redirect_target = etymon_title.redirect_target if not redirect_target then content = M.pages.get_section(content, etymon_lang:getFullName(), 2) if not content then __state.cached_etymon_args[key] = M.data.STATUS.MISSING return end lang_section_for_descendants = content end local etymon_lang_code = etymon_lang:getFullCode() local lang_page_key = etymon_lang_code .. ":" .. etymon_page local found_templates_for_lang = {} local found_ids = {} local get_node_class = M.template_parser.class_else_type -- Look for all {{etymon}} templates within the page content using the template parser -- This way the same page is never parsed more than once -- Build a map from senseids to their parent etymonids. local active_etymon_args = nil for node in M.template_parser.parse(content):iterate_nodes() do local node_class = get_node_class(node) if node_class == "heading" then -- A new L2 or etymology section acts as a barrier: an {{etymon}} usage -- used previously cannot be the parent of any subsequent senseids. -- Note that we don't have to check for L2s due to the usage of `M.pages.get_section` above. if node:get_name():find("^Etymology") then active_etymon_args = nil end elseif node_class == "template" then local template_name = node:get_name() if template_name == "etymon" then local template_args = node:get_arguments() -- Check if this etymon is for our language if template_args[1] == etymon_lang_code then table.insert(found_templates_for_lang, template_args) if template_args.id then local etymon_key = lang_page_key .. ":" .. template_args.id __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, template_args.id) active_etymon_args = template_args else -- Store idless etymon with default key local etymon_key = lang_page_key .. ":*" __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, "*") active_etymon_args = template_args end end elseif active_etymon_args and template_name == "senseid" then local template_args = node:get_arguments() -- This should always be true for proper usages of {{senseid}}. if template_args[1] == etymon_lang_code and template_args[2] then local sense_id_key = lang_page_key .. ":" .. template_args[2] __state.senseid_parent_etymon[sense_id_key] = active_etymon_args __state.cached_etymon_pages[sense_id_key] = tostring(etymon_page) end end end end if descendants_is_toplevel and lang_section_for_descendants and #found_templates_for_lang > 0 then M.descendants.cache_page_checks({ lang_section = lang_section_for_descendants, etymon_lang_code = etymon_lang_code, found_templates_for_lang = found_templates_for_lang, entry_title = __state.entry_title, entry_lang_code = __state.entry_lang_code, entry_lang = __state.entry_lang_code and Util.get_lang(__state.entry_lang_code, true) or nil, cached_descendants_checks = __state.cached_descendants_checks, lang_page_key = lang_page_key, redirected_from = redirected_from, }) end local id_data_list = {} for _, args in ipairs(found_templates_for_lang) do local id = args.id or "*" table.insert(id_data_list, { id = id, pos = args.pos }) end __state.available_etymon_ids[lang_page_key] = id_data_list if #found_templates_for_lang == 1 then __state.single_etymons[lang_page_key] = found_templates_for_lang[1] end if redirected_from and __state.available_etymon_ids[lang_page_key] then __state.available_etymon_ids[redirected_from] = __state.available_etymon_ids[redirected_from] or {} for _, id_data in ipairs(__state.available_etymon_ids[lang_page_key]) do table.insert(__state.available_etymon_ids[redirected_from], id_data) end end if __state.cached_etymon_args[key] ~= nil or __state.senseid_parent_etymon[key] ~= nil then -- All done! return elseif redirect_target and not redirected_from then -- Try scraping the redirect. etymon_page = redirect_target.prefixedText DataRetriever.cache_page_etymons(etymon_page, redirect_target, lang_page_key .. ":" .. etymon_id, etymon_lang, etymon_id, lang_page_key, descendants_is_toplevel) __state.cached_etymon_args[key] = __state.cached_etymon_args[etymon_lang_code .. ":" .. etymon_page .. ":" .. etymon_id] else __state.cached_etymon_args[key] = M.data.STATUS.MISSING end end -- Given an etymon object, scrape its page (if necessary) and return its own etymon arguments as well as the page name. function DataRetriever.get_etymon_args(etymon_data, is_toplevel) local page = M.links.get_link_page(etymon_data.term, etymon_data.lang) local norm_lang = Util.get_norm_lang(etymon_data.lang) local base_key = norm_lang:getFullCode() .. ":" .. page if etymon_data.id then local key = base_key .. ":" .. etymon_data.id local cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] if cached_args == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, is_toplevel) end cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] -- refresh -- Get etymon_id from parent if this was resolved via senseid local parent_etymon = __state.senseid_parent_etymon[key] local resolved_etymon_id = parent_etymon and parent_etymon.id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) end end local mismatched_id = is_mismatched_explicit_id(base_key, cached_args, parent_etymon) if mismatched_id and is_toplevel then __state.has_mismatched_id = true warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_data.id) end return cached_args, __state.cached_etymon_pages[key], resolved_etymon_id, descendants_check else __state.used_idless_etymon = true if is_toplevel then __state.toplevel_idless_etymon = true end if __state.available_etymon_ids[base_key] == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, is_toplevel) end local ids = __state.available_etymon_ids[base_key] or {} local count = #ids -- Try to filter by postype if available and we have multiple candidates if count > 1 and etymon_data.postype then local matching_ids = {} for _, id_data in ipairs(ids) do if id_data.pos == etymon_data.postype then table.insert(matching_ids, id_data) end end if #matching_ids == 1 then local matched_id = matching_ids[1].id local matched_key = base_key .. ":" .. matched_id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id = matched_id }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id = matched_id }, }) end end return __state.cached_etymon_args[matched_key], __state.cached_etymon_pages[matched_key], nil, descendants_check end end if count == 1 then local only_id_data = ids[1] local only_id = (type(only_id_data) == "table" and only_id_data.id) or only_id_data or "*" local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id_data = only_id_data }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id_data = only_id_data }, }) end end return __state.single_etymons[base_key], __state.cached_etymon_pages[base_key .. ":" .. only_id], nil, descendants_check elseif count > 1 then warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) return M.data.STATUS.AMBIGUOUS, nil, nil, nil else return M.data.STATUS.MISSING, nil, nil, nil end end end local TreeBuilder = {} local function parse_etymon_references(refs_text) if not refs_text or refs_text == "" then return "" end return M.references.parse_references(refs_text) end local function parse_tree_references(node) if node.ref then node.parsed_ref = parse_etymon_references(node.ref) end if node.children then for _, container in ipairs(node.children) do if container.terms then for _, term in ipairs(container.terms) do parse_tree_references(term) end end end end end -- Build a unique key for deduplication in the seen table function TreeBuilder.build_key(lang, title, args) local norm_lang_code = Util.get_norm_lang(lang):getFullCode() local is_table = type(args) == "table" local id = (is_table and args.id) or "" if title then return norm_lang_code .. ":" .. M.links.get_link_page(title, lang) .. ":" .. id end if is_table and args.status == M.data.STATUS.INLINE then local content_parts = {} for i = 1, #args do content_parts[i] = tostring(args[i]) end return norm_lang_code .. ":*:" .. id .. "\0" .. table.concat(content_parts, "\0") end return norm_lang_code .. ":*:" .. id end function TreeBuilder.build(lang, title, args, seen, depth, stop_recursion) seen = seen or {} depth = depth or 0 local is_toplevel = (depth == 0) if depth > __state.max_depth_reached then __state.max_depth_reached = depth end __state.total_nodes = __state.total_nodes + 1 local lang_code = lang:getCode() __state.language_count[lang_code] = (__state.language_count[lang_code] or 0) + 1 local current_id = (type(args) == "table" and args.id) or "" local key = TreeBuilder.build_key(lang, title, args) local node = { lang = lang, title = title, id = current_id, args = args, children = {}, status = M.data.STATUS.OK } if type(args) ~= "table" or seen[key] then node.status = args or M.data.STATUS.MISSING -- Mark as duplicate if we've seen this node before if seen[key] then node.is_duplicate = true node.duplicate_key = key local original_node = seen[key] if type(original_node) == "table" and original_node.children and #original_node.children > 0 then node.original_has_children = true end end return node end node.status = args.status or M.data.STATUS.OK seen[key] = node -- If stop_recursion is set, skip parsing children but check for visible children if stop_recursion then local keywords = M.data.keywords local has_visible_children = false for i = 2, #args do local param = args[i] if type(param) == "string" then local keyword_base = get_keyword_base(param) if keyword_base and keywords[keyword_base] then -- It's a keyword, check if visible in tree (invisible "all" or "tree" = hidden in tree) local keyword_info = keywords[keyword_base] local inv = keyword_info.invisible if not (inv == "all" or inv == true or inv == "tree") then has_visible_children = true break end elseif param:sub(1, 1) ~= ":" then -- It's a term (not a keyword), so there are visible children has_visible_children = true break end end end node.has_visible_children = has_visible_children return node end -- Parse args into keyword containers local current_keyword = "from" local current_keyword_modifiers = {} local current_container = nil -- Helper to track keyword usage at top level local function track_keyword_usage(keyword, target_lang, source_lang) if not is_toplevel then return end if not __state.toplevel_keyword_stats[keyword] then __state.toplevel_keyword_stats[keyword] = { count = 0, target_langs = {}, source_langs = {}, } end local keyword_data = __state.toplevel_keyword_stats[keyword] keyword_data.count = keyword_data.count + 1 local target_code = target_lang:getCode() keyword_data.target_langs[target_code] = (keyword_data.target_langs[target_code] or 0) + 1 if source_lang then local source_code = source_lang:getCode() keyword_data.source_langs[source_code] = (keyword_data.source_langs[source_code] or 0) + 1 end end local function ensure_container() if not current_container or current_container.keyword ~= current_keyword then current_container = { keyword = current_keyword, keyword_info = M.data.keywords[current_keyword], keyword_modifiers = current_keyword_modifiers, terms = {}, } table.insert(node.children, current_container) -- Override keyword text/phrase for nominalization with <g:code> if current_keyword_modifiers.g and current_keyword == "nominalization" then local labels = get_nominalization_label_for_g(current_keyword_modifiers.g) if not labels then local codes = {} for c in pairs(M.data.nominalization_g_codes) do table.insert(codes, c) end table.sort(codes) error("Invalid <g:" .. tostring(current_keyword_modifiers.g) .. ">. Supported codes for nominalization: " .. table.concat(codes, ", ")) end current_container.keyword_info = {} for k, v in pairs(M.data.keywords[current_keyword]) do current_container.keyword_info[k] = v end current_container.keyword_info.text = labels.text current_container.keyword_info.phrase = labels.phrase end end end for i = 2, #args do local param = args[i] if is_keyword(param) then local keyword, modifiers = EtymonParser.parse_keyword_modifiers(param) current_keyword = keyword current_keyword_modifiers = modifiers current_container = nil -- Force new container for new keyword elseif type(param) == "string" and param:sub(1, 1) == ":" then error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif type(param) == "string" then local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then -- Track keyword usage at top level track_keyword_usage(current_keyword, lang, etymon_data.lang) local term_node = {} -- Handle suppress_term (-) and unknown_term (empty) directly if etymon_data.suppress_term or etymon_data.unknown_term then ensure_container() if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE term_node = TreeBuilder.build(etymon_data.lang, nil, inline_args, seen, depth + 1) else term_node = { lang = etymon_data.lang, children = {}, status = M.data.STATUS.OK, } end term_node.suppress_term = etymon_data.suppress_term term_node.unknown_term = etymon_data.unknown_term term_node.is_family = etymon_data.is_family term_node.is_uncertain = etymon_data.unc term_node.ref = etymon_data.ref term_node.t = etymon_data.t term_node.tr = etymon_data.tr term_node.ts = etymon_data.ts term_node.alt = etymon_data.alt term_node.g = etymon_data.g term_node.pos = etymon_data.pos term_node.ng = etymon_data.ng term_node.lit = etymon_data.lit term_node.q = etymon_data.q term_node.qq = etymon_data.qq term_node.l = etymon_data.l term_node.ll = etymon_data.ll else -- Regular term: fetch arguments from page local etymon_args, page_of, resolved_etymon_id, descendants_check = DataRetriever.get_etymon_args(etymon_data, is_toplevel) -- Check for <ety> inline parameter doesn't override the scraped arguments, unless the latter are missing if etymon_data.ety then if etymon_args == M.data.STATUS.REDLINK or etymon_args == M.data.STATUS.MISSING then __state.current_page_has_inline_etymology = true if is_toplevel then __state.toplevel_has_inline_etymology = true end local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) -- Track inline ety keywords too local inline_keyword = get_keyword(inline_args[2], true) if inline_keyword and #inline_args >= 3 then local inline_etymon = EtymonParser.parse_etymon(inline_args[3], etymon_data.lang) if inline_etymon then track_keyword_usage(inline_keyword, etymon_data.lang, inline_etymon.lang) end end inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE etymon_args = inline_args term_node.page_of = __state.cached_etymon_pages[key] -- term node is on the same page as the parent else -- Scraped arguments exist, <ety> is redundant and ignored __state.current_page_has_redundant_etymology = true if is_toplevel then __state.toplevel_redundant_etymology = true end end end -- Ensure container exists before checking keyword info ensure_container() -- Check if current keyword has no_child_categories - if so, stop recursion local keyword_info = current_container.keyword_info local should_stop_recursion = (stop_recursion or (keyword_info and keyword_info.no_child_categories)) term_node = TreeBuilder.build(etymon_data.lang, etymon_data.term, etymon_args, seen, depth + 1, should_stop_recursion) term_node.target_key = Util.get_norm_lang(etymon_data.lang):getFullCode() .. ":" .. M.links.get_link_page(etymon_data.term, etymon_data.lang) term_node.id = etymon_data.id term_node.etymon_id = resolved_etymon_id -- The actual etymon id when resolved via senseid term_node.t = etymon_data.t term_node.tr = etymon_data.tr term_node.ts = etymon_data.ts term_node.pos = etymon_data.pos term_node.alt = etymon_data.alt term_node.g = etymon_data.g term_node.ng = etymon_data.ng term_node.ref = etymon_data.ref term_node.is_uncertain = etymon_data.unc term_node.override = etymon_data.override term_node.page_of = page_of term_node.aftype = etymon_data.aftype term_node.postype = etymon_data.postype term_node.bor = etymon_data.bor term_node.lbor = etymon_data.lbor term_node.slbor = etymon_data.slbor term_node.lit = etymon_data.lit term_node.is_family = etymon_data.is_family term_node.q = etymon_data.q term_node.qq = etymon_data.qq term_node.l = etymon_data.l term_node.ll = etymon_data.ll term_node.missing_descendants_header, term_node.missing_descendants_entry = M.descendants.get_term_sync_flags(current_keyword, term_node.status, descendants_check) end table.insert(current_container.terms, term_node) end end end return node end -- Convert etymology tree to JSON-serializable table local function tree_to_json(node) local obj = { term = node.title, lang = node.lang:getCode(), lang_name = node.lang:getCanonicalName(), id = (node.id and node.id ~= "") and node.id or nil, status = node.status, is_uncertain = node.is_uncertain or nil, is_duplicate = node.is_duplicate or nil, gloss = node.t, transliteration = node.tr, transcription = node.ts, alt = node.alt, g = node.g, pos = node.pos, ng = node.ng, children = {}, } for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if keyword_info then local container_obj = { keyword = container.keyword, keyword_label = keyword_info.text, keyword_abbrev = keyword_info.abbrev, is_group = keyword_info.is_group or nil, is_invisible = keyword_info.invisible or nil, is_uncertain = (container.keyword_modifiers and container.keyword_modifiers.unc) or nil, terms = {}, } for _, term in ipairs(container.terms or {}) do table.insert(container_obj.terms, tree_to_json(term)) end table.insert(obj.children, container_obj) end end return obj end local function track_ranges(base_key, value, ranges, lang_code) M.track("etymon/" .. base_key .. "/" .. value) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. value) end for _, range in ipairs(ranges) do local matches = false if range.min and range.max then matches = value >= range.min and value <= range.max elseif range.min then matches = value >= range.min elseif range.max then matches = value <= range.max elseif range.exact then matches = value == range.exact end if matches then M.track("etymon/" .. base_key .. "/" .. range.label) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. range.label) end break end end end local function track_title_pagename_mismatch_after_strip(lang) local lang_code = lang:getCode() M.track("etymon/title/pagename-mismatch-after-strip-diacritics") M.track("etymon/lang/" .. lang_code .. "/title/pagename-mismatch-after-strip-diacritics") end -- Build and return the etymology data tree for a given term. function export.get_tree(lang, title, args, options) options = options or {} __state.entry_title = title __state.entry_lang_code = lang:getCode() if options.validate then EtymonParser.validate(lang, args, options.id, title, options.pos, false) end local lang_code = lang:getCode() local start_index = (args[1] == lang_code) and 2 or 1 local tree_args = { [1] = lang_code, id = options.id or args.id } for i = start_index, #args do table.insert(tree_args, args[i]) end __state.cached_etymon_args[lang_code .. ":" .. title .. ":" .. (tree_args.id or "")] = tree_args local ety_data_tree = TreeBuilder.build(lang, title, tree_args) parse_tree_references(ety_data_tree) if options.json then return M.JSON.toJSON(tree_to_json(ety_data_tree)) end return ety_data_tree end -- Given a language code, page name and optionally the id= parameter, -- render the tree and only the etymology tree for the relevant page. -- Fetches and parses the corresponding {{etymon}} from the requested page, -- and any further pages needed to render the tree. -- Parameters can be passed either through the #invoke or as -- template parameters *through* an #invoke. function export.render_tree_for_etymon_on_page(frame) local frame_args = frame.args local parent_args = frame:getParent().args local langcode = frame_args[1] or parent_args[1] local pagename = frame_args[2] or parent_args[2] local id = frame_args["id"] or parent_args["id"] local display_title = frame_args["title"] or parent_args["title"] local parsed_title = mw.title.new(pagename, 0) local title if parsed_title.namespace == 0 then title = M.pages.safe_page_name(parsed_title) elseif parsed_title.namespace == 118 then title = "*" .. M.pages.safe_page_name(parsed_title) else error("Unsupported namespace for render_tree_for_etymon_on_page: " .. parsed_title.namespace) end local lang = Util.get_lang(langcode) -- Construct etymon_data for DataRetriever.get_args. local etymon_data = { lang = lang, term = title, id = id } local args, pagename = DataRetriever.get_etymon_args(etymon_data, true) if args == M.data.STATUS.MISSING then error("The etymon template was not found (language " .. langcode .. ", title '" .. title .. "'" .. (id and ", ID '" .. id .. "'" or ", no ID given") .. "). Page contents may have changed in the interim.") end local tree_title = display_title or title if lang:stripDiacritics(M.links.remove_links(tree_title)) ~= lang:stripDiacritics(M.links.remove_links(title)) then track_title_pagename_mismatch_after_strip(lang) end local ety_data_tree = export.get_tree(lang, tree_title, args, { validate = true, id = id, }) local output = {} table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) return table.concat(output) end function export.main(frame) local parent_args = frame:getParent().args local args = M.parameters.process(parent_args, M.parameters_data.etymon) local lang = args[1] local etymon_args = args[2] local id = args.id local title = args.title local text = args.text local tree = args.tree local etydate = args.etydate local rfe = args.rfe local page_data = Util.get_page_data() if not title then title = page_data.pagename if page_data.namespace == "Reconstruction" then title = "*" .. title end end local entry_pagename = page_data.pagename if page_data.namespace == "Reconstruction" then entry_pagename = "*" .. entry_pagename end if lang:stripDiacritics(M.links.remove_links(title)) ~= lang:stripDiacritics(M.links.remove_links(entry_pagename)) then track_title_pagename_mismatch_after_strip(lang) end local current_L2 = M.pages.get_current_L2() if current_L2 then local norm_lang = Util.get_norm_lang(lang) local norm_name = norm_lang:getCanonicalName() if current_L2 ~= norm_name then local lang_desc = lang:getCode() .. " (" .. lang:getCanonicalName() .. ")" if norm_lang:getCode() ~= lang:getCode() then lang_desc = lang_desc .. ", normalized to " .. norm_lang:getCode() .. " (" .. norm_name .. ")" end error("Language '" .. lang_desc .. "' does not match the L2 header (" .. current_L2 .. ").") end end local ety_data_tree = export.get_tree(lang, title, etymon_args, { validate = true, pos = args.pos, id = id, json = args.json, }) if args.json then return ety_data_tree end local output = {} local text_allowlist_mode = M.text_allowed.default_mode or "off" if text and text_allowlist_mode ~= "off" and not Util.is_text_param_allowed_for_lang(lang) then local msg = "Etymology texts (parameter <code>text=</code>) are not allowed for " .. lang:getFullName() .. "; see [[Template:etymon#Text allowlist|Template:etymon § Text allowlist]] for the list of languages that may use the <code>text=</code> parameter." if text_allowlist_mode == "error" then error(msg) else Util.add_warning(msg, true) end end local lang_exc = Util.get_lang_exception(lang) if lang_exc and lang_exc.disallow then local disallow = lang_exc.disallow local error_text = " for " .. lang:getFullName() if disallow.ref then error_text = error_text .. "; see " .. disallow.ref else error_text = error_text .. "." end if tree and disallow.tree then error("Etymology trees are not allowed" .. error_text) end if text and disallow.text then error("Etymology texts are not allowed" .. error_text) end end if etydate then local etydate_param_mods = { ref = { list = true, type = "references", allow_holes = true }, refn = { list = true, allow_holes = true }, nocap = { type = "boolean" }, } local function generate_etydate_obj(etydate_text) local etydate_specs = {} for spec in etydate_text:gmatch("[^,]+") do table.insert(etydate_specs, mw.text.trim(spec)) end return { [1] = etydate_specs } end local parsed_etydate = M.parse_utilities.parse_inline_modifiers(etydate, { param_mods = etydate_param_mods, generate_obj = generate_etydate_obj }) local etydate_args = { [1] = parsed_etydate[1], nocap = parsed_etydate.nocap or false, } ety_data_tree.etydate = M.etydate.format_etydate(etydate_args, { omit_refs = true }) if parsed_etydate.ref and #parsed_etydate.ref > 0 then ety_data_tree.etydate_refs = parsed_etydate.ref end end if tree then table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) end -- Check if there are any visible children in tree (invisible "all" or "tree" = hidden in tree) local has_visible_children = false for _, child in ipairs(ety_data_tree.children or {}) do local child_keyword_info = child.keyword_info local inv = child_keyword_info and child_keyword_info.invisible if not (inv == "all" or inv == true or inv == "tree") then has_visible_children = true break end end local tree_disallowed = lang_exc and lang_exc.disallow and lang_exc.disallow.tree local ety_tree_json = M.JSON.toJSON(tree_to_json(ety_data_tree)) local anchor = M.anchors.etymonid(lang, id, { no_tree = args.notree, title = title, empty_tree = (not has_visible_children) or tree_disallowed, ety_tree_json = ety_tree_json, }) table.insert(output, anchor) if text then local max_depth, stop_at_blue_link, stop_at_lang, stop_at_lang_or_bluelink if text == "++" then max_depth, stop_at_blue_link = false, false elseif text == "+" then max_depth, stop_at_blue_link = 1, false elseif text == "*" then max_depth, stop_at_blue_link = false, true elseif text:match("^:[^*]+%*$") then -- Stop at a specific language OR first bluelink after it, e.g., ":ota*" -- If the target language is a redlink, continue to the first bluelink local lang_code = text:match("^:([^*]+)%*$") if lang_code and lang_code ~= "" then local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang_or_bluelink = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end elseif text:sub(1, 1) == ":" then -- Stop at a specific language, e.g., ":ar" stops at first Arabic term local lang_code = text:sub(2) if lang_code ~= "" then -- Validate the language code local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else local num = tonumber(text) if num and num >= 1 then max_depth, stop_at_blue_link = num, false else error('Invalid text value "' .. text .. '". Valid values are: "++" (full chain), "+" (first step only), "*" (until first blue link), a number (max steps), ":lang" (stop at language), or ":lang*" (stop at language or first bluelink if redlink)') end end table.insert(output, M.text.render({ data_tree = ety_data_tree, format_term_func = Util.format_term, max_depth = max_depth, stop_at_blue_link = stop_at_blue_link, curr_page = page_data.pagename, nodot = args.nodot, stop_at_lang = stop_at_lang, stop_at_lang_or_bluelink = stop_at_lang_or_bluelink, })) end if rfe then local rfe_param_mods = { nocat = { type = "boolean" }, sort = {}, y = {}, m = {}, fragment = {}, section = {}, box = { type = "boolean" }, noes = { type = "boolean" }, } local function generate_rfe_obj(rfe_text) -- Check if it's a boolean true value if M.yesno(rfe_text, false) then return { is_boolean = true } else return { text = rfe_text } end end local rfe_with_defaults = Util.add_boolean_defaults(rfe, rfe_param_mods) local parsed_rfe = M.parse_utilities.parse_inline_modifiers(rfe_with_defaults, { param_mods = rfe_param_mods, generate_obj = generate_rfe_obj }) local rfe_args = { [1] = lang:getCode(), nocat = parsed_rfe.nocat, sort = parsed_rfe.sort, y = parsed_rfe.y, m = parsed_rfe.m, fragment = parsed_rfe.fragment, section = parsed_rfe.section, box = parsed_rfe.box, noes = parsed_rfe.noes, } if not parsed_rfe.is_boolean then rfe_args[2] = parsed_rfe.text end table.insert(output, frame:expandTemplate({ title = "rfe", args = rfe_args })) end if Util.is_content_page() and __state.max_depth_reached > 0 then local lang_code = lang:getCode() local depth_ranges = { { min = 50, label = "extremely-deep" }, { min = 20, label = "20+" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { max = 2, label = "1-2" } } local node_ranges = { { min = 100, label = "extremely-large" }, { min = 50, label = "50+" }, { min = 20, max = 49, label = "20-49" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { max = 4, label = "1-4" } } local language_ranges = { { min = 10, label = "10+" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { exact = 2, label = "2" }, { exact = 1, label = "1" } } track_ranges("depth", __state.max_depth_reached, depth_ranges, lang_code) track_ranges("nodes", __state.total_nodes, node_ranges, lang_code) local unique_languages = 0 for _ in pairs(__state.language_count) do unique_languages = unique_languages + 1 end track_ranges("unique-languages", unique_languages, language_ranges, lang_code) if __state.total_nodes == __state.max_depth_reached + 1 then track_ranges("linear-depth", __state.max_depth_reached, depth_ranges, lang_code) end end local categories = {} if Util.is_content_page() then local should_suppress_categories = lang_exc and lang_exc.suppress_categories if not should_suppress_categories and not args.nocat then categories = M.categories.render({ data_tree = ety_data_tree, page_lang = lang, available_etymon_ids = __state.available_etymon_ids, senseid_parent_etymon = __state.senseid_parent_etymon, get_norm_lang_func = Util.get_norm_lang, lang_exc = lang_exc, }) end local target_lang_code = lang:getCode() for keyword, keyword_data in pairs(__state.toplevel_keyword_stats) do -- Track keyword globally M.track("etymon/keyword/" .. keyword) -- Track keyword per target language M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code) -- Track keyword per source language for source_code, count in pairs(keyword_data.source_langs) do M.track("etymon/keyword/" .. keyword .. "/source/" .. source_code) -- Track keyword per target+source combination M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code .. "/source/" .. source_code) end end if tree then table.insert(categories, "Pages with etymology trees") table.insert(categories, lang:getCanonicalName() .. " entries with etymology trees") end if text then table.insert(categories, lang:getCanonicalName() .. " entries with etymology texts") end if args.exnihilo then table.insert(categories, lang:getCanonicalName() .. " terms coined ex nihilo") end if __state.toplevel_has_inline_etymology then table.insert(categories, "Pages with inline etymon for redlinks") end if __state.toplevel_redundant_etymology then table.insert(categories, "Pages with redundant inline etymon") end if __state.toplevel_idless_etymon then table.insert(categories, "Pages using etymon with no ID") end if __state.has_mismatched_id then table.insert(categories, lang:getCanonicalName() .. " entries referencing etymons with mismatched IDs") end if __state.linked_page_multiple_etymons_idless then table.insert(categories, lang:getCanonicalName() .. " entries referencing pages with multiple etymons missing IDs") end end if #categories > 0 then table.insert(output, M.categories.format(categories, lang)) end if __state.warnings then for i, warning in ipairs(__state.warnings) do table.insert(output, (i == 1 and "\n" or "") .. warning .. "\n") end end return table.concat(output) end return export eo91z4122alt9viwz3w414rij793ha8 235418 235417 2026-06-02T04:51:57Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 235418 Scribunto text/plain --[=[ This module implements the {{etymon}} template for structured etymology data on Wiktionary. It enables the creation of etymology trees and text by parsing etymon chains, scraping linked pages for their own {{etymon}} data, and recursively building a tree of derivational relationships. Authors: - Original implementation: [[User:Ioaxxere]] - Full refactor (September 2025): [[User:Fenakhay]] ([[Special:Diff/86717746]]) Modules: - [[Module:etymon]]: main module handling parsing, validation, tree building, and page scraping - [[Module:etymon/data]]: keyword definitions, configuration, and status constants - [[Module:etymon/tree]]: etymology tree rendering - [[Module:etymon/text]]: etymology text generation - [[Module:etymon/categories]]: category generation logic ]=] local export = {} local etymon_data_module = "Module:etymon/data" local etymon_text_module = "Module:etymon/text" local etymon_tree_module = "Module:etymon/tree" local etymon_categories_module = "Module:etymon/categories" local etymon_descendants_module = "Module:etymon/descendants" local __state = { cached_etymon_args = {}, cached_etymon_pages = {}, cached_descendants_checks = {}, senseid_parent_etymon = {}, available_etymon_ids = {}, single_etymons = {}, entry_title = nil, entry_lang_code = nil, current_page_has_inline_etymology = false, current_page_has_redundant_etymology = false, used_idless_etymon = false, toplevel_has_inline_etymology = false, toplevel_redundant_etymology = false, toplevel_idless_etymon = false, has_mismatched_id = false, linked_page_multiple_etymons_idless = false, max_depth_reached = 0, total_nodes = 0, language_count = {}, toplevel_keyword_stats = {}, warnings = {}, } local loader = require("Module:module loader") local M = loader.init({ require = { data = etymon_data_module, tree = etymon_tree_module, text = etymon_text_module, categories = etymon_categories_module, descendants = etymon_descendants_module, anchors = "Module:anchors", etydate = "Module:etydate", etymology = "Module:etymology", families = "Module:families", languages = "Module:languages", languages_errorgetby = "Module:languages/errorGetBy", links = "Module:links", pages = "Module:pages", parameters = "Module:parameters", string_utilities = "Module:string utilities", template_parser = "Module:template parser", utilities = "Module:utilities", debug = "Module:debug", en_utilities = "Module:en-utilities", parse_utilities = "Module:parse utilities", references = "Module:references", track = "Module:debug/track", template_styles = "Module:TemplateStyles", script_utilities = "Module:script utilities", JSON = "Module:JSON", yesno = "Module:yesno", }, loadData = { headword_data = "Module:headword/data", parameters_data = "Module:parameters/data", text_allowed = "Module:etymon/data/text_allowed", }, }) local Util = {} function Util.format_error(message, preview_only) if preview_only and not M.pages.is_preview() then return nil end return '<span class="error">' .. message .. '</span>' end function Util.add_warning(message, preview_only) local formatted = Util.format_error(message, preview_only) if formatted then table.insert(__state.warnings, formatted) end end function Util.is_text_param_allowed_for_lang(lang) if not lang or type(lang) ~= "table" then return false end local types = lang.getTypes and lang:getTypes() if types and types.family then local code = lang.getCode and lang:getCode() return code and M.text_allowed.families[code] == true end local full_code = lang.getFullCode and lang:getFullCode() if full_code and M.text_allowed.langs[full_code] then return true end if lang.inFamily then for family_code in pairs(M.text_allowed.families) do if lang:inFamily(family_code) then return true end end end return false end function Util.get_lang(code, no_error) if no_error then return M.languages.getByCode(code, nil, true) end return M.languages.getByCode(code, nil, true) or M.languages_errorgetby.code(code, true, true) end function Util.get_family(code) return M.families.getByCode(code) end function Util.get_lang_exception(lang) -- Families have no language-specific exceptions if lang.getTypes and lang:getTypes().family then return nil end local code = lang:getCode() local lang_exceptions = M.data.config.lang_exceptions if lang_exceptions[code] then return lang_exceptions[code] end for norm_code, exc in pairs(lang_exceptions) do if exc.normalize_to and code == exc.normalize_to then return exc end if exc.normalize_from_families then local should_normalize = false for _, family in ipairs(exc.normalize_from_families) do if lang:inFamily(family) then should_normalize = true break end end if should_normalize and exc.normalize_exclude_families then for _, family in ipairs(exc.normalize_exclude_families) do if lang:inFamily(family) then should_normalize = false break end end end if should_normalize then local ret = {} for k, v in pairs(exc) do ret[k] = v end ret.suppress_tr = nil return ret end end end return nil end function Util.get_norm_lang(lang) local exc = Util.get_lang_exception(lang) if exc and exc.normalize_to then return M.languages.getByCode(exc.normalize_to) end return lang end -- Add default values for boolean modifiers (e.g., <unc> becomes <unc:1>) -- This is needed because Module:parse utilities expects boolean modifiers to have explicit values function Util.add_boolean_defaults(str, param_mods) local result = str for name, spec in pairs(param_mods) do if spec.type == "boolean" then -- Replace <name> with <name:1> (but not <name:...> which already has a value) result = result:gsub("<" .. name .. ">", "<" .. name .. ":1>") end end return result end -- Centralized term formatting: handles suppress_term, unknown_term, and regular terms function Util.format_term(term, is_toplevel, opts) opts = opts or {} -- suppress_term (-) returns nil if term.suppress_term then return nil end local lang = term.lang local exc = Util.get_lang_exception(lang) if is_toplevel then local display_text = term.alt or term.title or "" local sc = term.sc or lang:findBestScript(display_text) local bold_text = tostring(mw.html.create("strong") :addClass("selflink") :wikitext(display_text)) return M.script_utilities.tag_text(bold_text, lang, sc, "term") end local link_params = { lang = lang } link_params.term = not term.unknown_term and term.title or nil link_params.alt = term.alt link_params.id = (not term.unknown_term and term.id and term.id ~= "") and term.id or nil if not (exc and exc.suppress_tr) then link_params.tr = term.tr link_params.ts = term.ts else link_params.suppress_tr = true end link_params.lit = (opts.lit ~= "suppress") and term.lit or nil if opts.gloss ~= "suppress" then link_params.gloss = term.t end if term.g and term.g ~= "" then local genders = M.string_utilities.split(term.g, ",") for i = 1, #genders do genders[i] = M.string_utilities.trim(genders[i]) end link_params.genders = genders end if opts.pos ~= "suppress" then link_params.pos = term.pos link_params.ng = term.ng end if exc and exc.suppress_tr then link_params.lit = nil end local show_qualifiers if opts.tree_ql ~= "suppress" then if term.q then link_params.q = term.q end if term.qq then link_params.qq = term.qq end if term.l then link_params.l = term.l end if term.ll then link_params.ll = term.ll end show_qualifiers = term.q or term.qq or term.l or term.ll end return M.links.full_link(link_params, "term", nil, show_qualifiers and true or nil) end local __is_content_page_cached function Util.is_content_page() if __is_content_page_cached == nil then __is_content_page_cached = M.pages.is_content_page(mw.title.getCurrentTitle()) end return __is_content_page_cached end local __page_data_cached function Util.get_page_data() if not __page_data_cached then __page_data_cached = M.headword_data.page end return __page_data_cached end -- Extract base keyword from param (without modifiers) local function get_keyword_base(param) if type(param) ~= "string" then return nil end local base = param:match("^:?([^<]+)") or param:gsub("^:", "") return base end local function is_keyword(param, allow_colon_less) if type(param) ~= "string" then return false end local keywords = M.data.keywords if param:sub(1, 1) == ":" then local base = get_keyword_base(param) return keywords[base] ~= nil end if allow_colon_less then local base = get_keyword_base(param) return keywords[base] ~= nil end return false end local function get_keyword(param, allow_colon_less) if type(param) ~= "string" then return nil end local keywords = M.data.keywords if param:sub(1, 1) == ":" then return get_keyword_base(param) end if allow_colon_less then local base = get_keyword_base(param) if keywords[base] then return base end end return nil end local function normalize_keyword(keyword) if keyword:sub(1, 1) == ":" then return keyword end return ":" .. keyword end -- Resolve keyword (possibly an alias) to its canonical form. Used only at input boundaries local function get_canonical_keyword(keyword) if not keyword then return keyword end return M.data.keyword_canonical[keyword] or keyword end -- Build text/phrase for nominalization with <g:code> (uses data module for codes only). local function get_nominalization_label_for_g(code) if not code or code == "" then return nil end local codes = M.data.nominalization_g_codes local adj = codes[code] if not adj and #code == 2 then local gender_adj = codes[code:sub(1, 1)] local number_adj = codes[code:sub(2, 2)] if gender_adj and number_adj then adj = gender_adj .. " " .. number_adj end end if not adj then return nil end local text = adj:gsub("^%l", function(c) return string.upper(c) end) .. " [[Appendix:Glossary#nominalization|nominalization]] of" local phrase = M.en_utilities.add_indefinite_article(adj .. " [[Appendix:Glossary#nominalization|nominalization]] of", false) return { text = text, phrase = phrase } end local EtymonParser = {} -- Keyword modifier definitions EtymonParser.keyword_param_mods = { unc = { type = "boolean" }, ref = {}, text = { restrict = { keywords = { "from", "derived" } } }, lit = { restrict = { keywords = { "affix", "surf", "univerbation" } } }, conj = {}, -- conjunction for alternatives: "and", "or", "and/or", etc. g = { restrict = { keywords = { "nominalization" } } }, } -- Term modifier definitions EtymonParser.etymon_param_mods = { id = {}, t = {}, tr = {}, ts = {}, q = {}, qq = {}, l = {}, ll = {}, pos = {}, ng = {}, alt = {}, g = {}, ety = {}, lit = {}, unc = { type = "boolean" }, ref = {}, aftype = { restrict = { keywords = { "affix", "surf", "afeq" } } }, postype = {}, bor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, slbor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, lbor = { type = "boolean", restrict = { keywords = { "affix", "surf" } } }, } local function get_clean_param_mods(param_mods) local clean = {} for mod_name, mod_def in pairs(param_mods) do clean[mod_name] = {} for key, value in pairs(mod_def) do if key ~= "restrict" then clean[mod_name][key] = value end end end return clean end function EtymonParser.check_modifier_restrictions(modifiers, current_keyword, param_mods) for mod_name, mod_value in pairs(modifiers) do -- Only check restrictions if the modifier has a non-false/nil value if mod_value then local mod_def = param_mods[mod_name] if mod_def and mod_def.restrict and mod_def.restrict.keywords then local allowed_keywords = mod_def.restrict.keywords local is_allowed = false for _, allowed_keyword in ipairs(allowed_keywords) do if current_keyword == allowed_keyword then is_allowed = true break end end if not is_allowed then local keyword_list = {} for _, kw in ipairs(allowed_keywords) do table.insert(keyword_list, ":" .. kw) end local keyword_str = table.concat(keyword_list, #keyword_list == 2 and " or " or ", ") if #keyword_list > 2 then -- Replace last comma with "or" keyword_str = keyword_str:gsub(", ([^,]+)$", " or %1") end local mod_display = mod_value == true and "<" .. mod_name .. ">" or "<" .. mod_name .. ":" .. tostring(mod_value) .. ">" error("The modifier `" .. mod_display .. "` is only allowed for the keyword" .. (#keyword_list > 1 and "s " or " ") .. keyword_str .. ".") end end end end end -- Parse keyword with modifiers (e.g., ":bor<unc>" or ":bor<ref:{{R:example}}>") function EtymonParser.parse_keyword_modifiers(param) if type(param) ~= "string" then return nil, {} end local base_keyword = get_keyword_base(param) if not base_keyword then return nil, {} end local canonical_keyword = get_canonical_keyword(base_keyword) -- Check if there are any modifiers if not param:find("<", 1, true) then return canonical_keyword, {} end -- Parse modifiers using the same mechanism as etymon parsing local rest_with_defaults = Util.add_boolean_defaults(param, EtymonParser.keyword_param_mods) local function generate_obj(ignored) return {} end local parsed = M.parse_utilities.parse_inline_modifiers(rest_with_defaults:gsub("^:?[^<]+", ""), { param_mods = get_clean_param_mods(EtymonParser.keyword_param_mods), generate_obj = generate_obj }) local modifiers = { unc = parsed.unc or false, ref = parsed.ref, text = parsed.text, lit = parsed.lit, conj = parsed.conj, g = parsed.g, } -- Validate modifiers against restrictions EtymonParser.check_modifier_restrictions(modifiers, canonical_keyword, EtymonParser.keyword_param_mods) return canonical_keyword, modifiers end function EtymonParser.parse_balanced_segments(str) local segments = {} local current = "" local depth = 0 local i = 1 while i <= #str do local char = str:sub(i, i) if char == "<" then if depth == 0 and current ~= "" then table.insert(segments, current) current = "" end depth = depth + 1 current = current .. char elseif char == ">" then current = current .. char depth = depth - 1 if depth == 0 then table.insert(segments, current) current = "" elseif depth < 0 then error("Unbalanced brackets in etymon: unexpected '>'") end else current = current .. char end i = i + 1 end if depth ~= 0 then error("Unbalanced brackets in etymon: missing '>'") end if current ~= "" then table.insert(segments, current) end return segments end function EtymonParser.parse_inline_ety(ety_string, context_lang) local segments = EtymonParser.parse_balanced_segments(ety_string) if #segments == 0 then error("Empty inline etymology") end local keyword = M.string_utilities.trim(segments[1]) if not is_keyword(keyword, true) then error("Invalid keyword '" .. keyword .. "' in inline etymology <ety:" .. keyword .. "...>") end local args = { context_lang:getCode(), normalize_keyword(get_canonical_keyword(keyword)) } for i = 2, #segments do local segment = segments[i] if segment:sub(1, 1) == "<" and segment:sub(-1) == ">" then local inner = segment:sub(2, -2) if inner ~= "" then table.insert(args, inner) end elseif is_keyword(segment, true) then -- Handle keywords that appear between bracketed segments table.insert(args, normalize_keyword(get_canonical_keyword(get_keyword(segment, true)))) end end return args end function EtymonParser.parse_etymon(param, context_lang) if is_keyword(param) then return nil end if type(param) ~= "string" then return nil end local lang, rest local is_family = false local before_bracket = param:match("^([^<]*)") or param local lang_code, rest_match = before_bracket:match("^([a-zA-Z][a-zA-Z0-9._-]*):(.*)$") if lang_code then local potential_lang = Util.get_lang(lang_code, true) if potential_lang then lang = potential_lang rest = param:sub(#lang_code + 2) else local potential_family = Util.get_family(lang_code) if potential_family then lang = potential_family rest = param:sub(#lang_code + 2) is_family = true else lang = context_lang rest = param end end else lang = context_lang rest = param end if rest == "" then M.track("etymon/term/empty") elseif rest == "?" then M.track("etymon/term/question-mark") elseif rest == "-" then M.track("etymon/term/hyphen") end if rest == "" then return { lang = lang, term = nil, unknown_term = true, is_family = is_family, } end if rest == "-" then return { lang = lang, term = nil, suppress_term = true, is_family = is_family, } end if not rest:find("<", 1, true) then return { lang = lang, term = M.string_utilities.trim(rest), is_family = is_family, } end local term_text = rest:match("^([^<]*)") or "" local is_unknown = (term_text == "") local is_suppress = (term_text == "-") local function generate_obj(ignored_term) return { term = (is_unknown or is_suppress) and nil or M.string_utilities.trim(term_text) } end local rest_with_defaults = Util.add_boolean_defaults(rest, EtymonParser.etymon_param_mods) local parsed_obj = M.parse_utilities.parse_inline_modifiers(rest_with_defaults, { param_mods = get_clean_param_mods(EtymonParser.etymon_param_mods), generate_obj = generate_obj }) if parsed_obj.id and parsed_obj.id:match("^!") then parsed_obj.id = parsed_obj.id:sub(2) parsed_obj.override = true end parsed_obj.lang = lang parsed_obj.is_family = is_family if is_unknown then parsed_obj.unknown_term = true elseif is_suppress then parsed_obj.suppress_term = true end return parsed_obj end function EtymonParser.validate(lang, args, id, title, pos, starts_with_lang_code) -- id is now optional, so only validate if provided if id then if mw.ustring.len(id) < 2 then error("The `id` parameter must have at least two characters.") end if id == title or id == Util.get_page_data().pagename then error("The `id` parameter must not be the same as the page title.") end end local valid_pos = { prefix = true, suffix = true, interfix = true, infix = true, root = true, word = true } if pos and not valid_pos[pos] then error("Unknown value provided for `pos`. Valid values: " .. table.concat(require("Module:table").keysToList(valid_pos), ", ") .. ".") end local current_keyword = "from" local etymons_in_group = {} local keywords = M.data.keywords local function checkGroup() if keywords[current_keyword] and keywords[current_keyword].is_group and current_keyword ~= "affix" and current_keyword ~= "surf" and current_keyword ~= "afeq" and current_keyword ~= "univerbation" and #etymons_in_group <= 1 then error("Detected `:" .. current_keyword .. "` group with fewer than two etymons.") end etymons_in_group = {} end local start_index = starts_with_lang_code and 2 or 1 for i = start_index, #args do local param = args[i] if type(param) ~= "string" then elseif param:sub(1, 1) == ":" and not is_keyword(param) then error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif is_keyword(param) then checkGroup() current_keyword = get_canonical_keyword(get_keyword(param)) else local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then table.insert(etymons_in_group, param) local param_lang = etymon_data.lang if etymon_data.is_family and current_keyword == "inherited" then error("`:inh` does not support family codes; use a specific language.") end if etymon_data.is_family and not etymon_data.suppress_term then error("Family codes require suppressed term (use family:-).") end if current_keyword == "from" and param_lang:getFullCode() ~= lang:getFullCode() then error("`:from` is for same-language derivation, but language does not match. " .. "Expected '" .. lang:getFullCode() .. "', got '" .. param_lang:getFullCode() .. "'.") elseif current_keyword == "inherited" then M.etymology.check_ancestor(lang, param_lang) end -- Check modifier restrictions EtymonParser.check_modifier_restrictions(etymon_data, current_keyword, EtymonParser.etymon_param_mods) -- postype must be "root" or "word" local VALID_POSTYPES = { root = true, word = true } if etymon_data.postype and not VALID_POSTYPES[etymon_data.postype] then error("Invalid <postype:" .. etymon_data.postype .. ">; must be \"root\" or \"word\".") end if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) EtymonParser.validate(etymon_data.lang, inline_args, nil, nil, nil, true) end else table.insert(etymons_in_group, param) end end end checkGroup() end local DataRetriever = {} local function format_etymon_id_hint(id_data, idx) local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then return '"' .. id .. '"' end if pos and pos ~= "" then return "unnamed (|pos=" .. pos .. "|)" end return "etymon #" .. idx .. " (no |id= on page)" end local function etymon_target_page_link(page, norm_lang) return M.links.full_link({ term = page, lang = norm_lang, no_generate_forms = true, }, "term") end -- Summarize {{etymon}} id slots on a linked page for preview warnings. local function summarize_available_etymon_ids(ids) local id_list = {} local all_idless = true local target_has_idless = false local any_pos = false for i, id_data in ipairs(ids) do local id = type(id_data) == "table" and id_data.id or id_data local pos = type(id_data) == "table" and id_data.pos if id and id ~= "" and id ~= "*" then all_idless = false else target_has_idless = true end if pos and pos ~= "" then any_pos = true end table.insert(id_list, format_etymon_id_hint(id_data, i)) end return { id_list = id_list, all_idless = all_idless, target_has_idless = target_has_idless, any_pos = any_pos, count = #ids, options_text = mw.text.listToText(id_list), } end local function ambiguous_etymon_suggestion(page_link, summary) if summary.all_idless then if summary.any_pos then return " None set `|id=` yet; add a unique `|id=` to each on " .. page_link .. ", then `<id:identifier>` after the term here. Section order / hints: " .. summary.options_text .. "." end return " None set `|id=` yet; add a unique `|id=` to each {{etymon}} in that section from top to bottom, then `<id:identifier>` after the term here (same value as `|id=`)." end return " Specify which one with `<id:identifier>` after the term. Options: " .. summary.options_text .. "." end local function warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(ids) if is_toplevel and summary.target_has_idless then __state.linked_page_multiple_etymons_idless = true end local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " is ambiguous (" .. summary.count .. " {{etymon}} templates for " .. lang_name .. ")." Util.add_warning(lead .. ambiguous_etymon_suggestion(page_link, summary), true) end local function is_mismatched_explicit_id(base_key, cached_args, parent_etymon) return cached_args == M.data.STATUS.MISSING and not parent_etymon and #(__state.available_etymon_ids[base_key] or {}) > 0 end local function warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_id) local page_link = etymon_target_page_link(page, norm_lang) local summary = summarize_available_etymon_ids(__state.available_etymon_ids[base_key] or {}) local lang_name = norm_lang:getCanonicalName() local lead = "Etymology link to " .. page_link .. " uses `<id:" .. etymon_id .. ">`, but no {{etymon}} on that page has `|id=" .. etymon_id .. "|` for " .. lang_name .. "." Util.add_warning(lead .. " Valid IDs: " .. summary.options_text .. ".", true) end -- Given an etymon data, scrape its page and cache the result in the global state object. function DataRetriever.cache_page_etymons(etymon_page, etymon_title, key, etymon_lang, etymon_id, redirected_from, descendants_is_toplevel) local content = etymon_title:getContent() if not content then __state.cached_etymon_args[key] = M.data.STATUS.REDLINK return end -- Check if the linked page is a redirect. If it is, the template parsing -- code below will be effectively skipped, and `scrape_page` will be called -- again on the redirect target (see the bottom of this function) local lang_section_for_descendants = nil local redirect_target = etymon_title.redirect_target if not redirect_target then content = M.pages.get_section(content, etymon_lang:getFullName(), 2) if not content then __state.cached_etymon_args[key] = M.data.STATUS.MISSING return end lang_section_for_descendants = content end local etymon_lang_code = etymon_lang:getFullCode() local lang_page_key = etymon_lang_code .. ":" .. etymon_page local found_templates_for_lang = {} local found_ids = {} local get_node_class = M.template_parser.class_else_type -- Look for all {{etymon}} templates within the page content using the template parser -- This way the same page is never parsed more than once -- Build a map from senseids to their parent etymonids. local active_etymon_args = nil for node in M.template_parser.parse(content):iterate_nodes() do local node_class = get_node_class(node) if node_class == "heading" then -- A new L2 or etymology section acts as a barrier: an {{etymon}} usage -- used previously cannot be the parent of any subsequent senseids. -- Note that we don't have to check for L2s due to the usage of `M.pages.get_section` above. if node:get_name():find("^Etymology") then active_etymon_args = nil end elseif node_class == "template" then local template_name = node:get_name() if template_name == "etymon" then local template_args = node:get_arguments() -- Check if this etymon is for our language if template_args[1] == etymon_lang_code then table.insert(found_templates_for_lang, template_args) if template_args.id then local etymon_key = lang_page_key .. ":" .. template_args.id __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, template_args.id) active_etymon_args = template_args else -- Store idless etymon with default key local etymon_key = lang_page_key .. ":*" __state.cached_etymon_args[etymon_key] = template_args __state.cached_etymon_pages[etymon_key] = tostring(etymon_page) table.insert(found_ids, "*") active_etymon_args = template_args end end elseif active_etymon_args and template_name == "senseid" then local template_args = node:get_arguments() -- This should always be true for proper usages of {{senseid}}. if template_args[1] == etymon_lang_code and template_args[2] then local sense_id_key = lang_page_key .. ":" .. template_args[2] __state.senseid_parent_etymon[sense_id_key] = active_etymon_args __state.cached_etymon_pages[sense_id_key] = tostring(etymon_page) end end end end if descendants_is_toplevel and lang_section_for_descendants and #found_templates_for_lang > 0 then M.descendants.cache_page_checks({ lang_section = lang_section_for_descendants, etymon_lang_code = etymon_lang_code, found_templates_for_lang = found_templates_for_lang, entry_title = __state.entry_title, entry_lang_code = __state.entry_lang_code, entry_lang = __state.entry_lang_code and Util.get_lang(__state.entry_lang_code, true) or nil, cached_descendants_checks = __state.cached_descendants_checks, lang_page_key = lang_page_key, redirected_from = redirected_from, }) end local id_data_list = {} for _, args in ipairs(found_templates_for_lang) do local id = args.id or "*" table.insert(id_data_list, { id = id, pos = args.pos }) end __state.available_etymon_ids[lang_page_key] = id_data_list if #found_templates_for_lang == 1 then __state.single_etymons[lang_page_key] = found_templates_for_lang[1] end if redirected_from and __state.available_etymon_ids[lang_page_key] then __state.available_etymon_ids[redirected_from] = __state.available_etymon_ids[redirected_from] or {} for _, id_data in ipairs(__state.available_etymon_ids[lang_page_key]) do table.insert(__state.available_etymon_ids[redirected_from], id_data) end end if __state.cached_etymon_args[key] ~= nil or __state.senseid_parent_etymon[key] ~= nil then -- All done! return elseif redirect_target and not redirected_from then -- Try scraping the redirect. etymon_page = redirect_target.prefixedText DataRetriever.cache_page_etymons(etymon_page, redirect_target, lang_page_key .. ":" .. etymon_id, etymon_lang, etymon_id, lang_page_key, descendants_is_toplevel) __state.cached_etymon_args[key] = __state.cached_etymon_args[etymon_lang_code .. ":" .. etymon_page .. ":" .. etymon_id] else __state.cached_etymon_args[key] = M.data.STATUS.MISSING end end -- Given an etymon object, scrape its page (if necessary) and return its own etymon arguments as well as the page name. function DataRetriever.get_etymon_args(etymon_data, is_toplevel) local page = M.links.get_link_page(etymon_data.term, etymon_data.lang) local norm_lang = Util.get_norm_lang(etymon_data.lang) local base_key = norm_lang:getFullCode() .. ":" .. page if etymon_data.id then local key = base_key .. ":" .. etymon_data.id local cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] if cached_args == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, is_toplevel) end cached_args = __state.cached_etymon_args[key] or __state.senseid_parent_etymon[key] -- refresh -- Get etymon_id from parent if this was resolved via senseid local parent_etymon = __state.senseid_parent_etymon[key] local resolved_etymon_id = parent_etymon and parent_etymon.id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, key, norm_lang, etymon_data.id, nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { explicit_id = etymon_data.id, parent_etymon = parent_etymon, }, }) end end local mismatched_id = is_mismatched_explicit_id(base_key, cached_args, parent_etymon) if mismatched_id and is_toplevel then __state.has_mismatched_id = true warn_mismatched_explicit_id(page, norm_lang, base_key, etymon_data.id) end return cached_args, __state.cached_etymon_pages[key], resolved_etymon_id, descendants_check else __state.used_idless_etymon = true if is_toplevel then __state.toplevel_idless_etymon = true end if __state.available_etymon_ids[base_key] == nil then local title = mw.title.new(page) if not title then error('Invalid page title "' .. page .. '" encountered.') end DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, is_toplevel) end local ids = __state.available_etymon_ids[base_key] or {} local count = #ids -- Try to filter by postype if available and we have multiple candidates if count > 1 and etymon_data.postype then local matching_ids = {} for _, id_data in ipairs(ids) do if id_data.pos == etymon_data.postype then table.insert(matching_ids, id_data) end end if #matching_ids == 1 then local matched_id = matching_ids[1].id local matched_key = base_key .. ":" .. matched_id local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id = matched_id }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id = matched_id }, }) end end return __state.cached_etymon_args[matched_key], __state.cached_etymon_pages[matched_key], nil, descendants_check end end if count == 1 then local only_id_data = ids[1] local only_id = (type(only_id_data) == "table" and only_id_data.id) or only_id_data or "*" local descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = is_toplevel, base_key = base_key, lookup = { id_data = only_id_data }, }) if is_toplevel and descendants_check == nil then local title = mw.title.new(page) if title then DataRetriever.cache_page_etymons(page, title, base_key .. ":*", norm_lang, "*", nil, true) descendants_check = M.descendants.get_lookup_check({ cached_descendants_checks = __state.cached_descendants_checks, is_toplevel = true, base_key = base_key, lookup = { id_data = only_id_data }, }) end end return __state.single_etymons[base_key], __state.cached_etymon_pages[base_key .. ":" .. only_id], nil, descendants_check elseif count > 1 then warn_ambiguous_etymon_link(page, norm_lang, ids, is_toplevel) return M.data.STATUS.AMBIGUOUS, nil, nil, nil else return M.data.STATUS.MISSING, nil, nil, nil end end end local TreeBuilder = {} local function parse_etymon_references(refs_text) if not refs_text or refs_text == "" then return "" end return M.references.parse_references(refs_text) end local function parse_tree_references(node) if node.ref then node.parsed_ref = parse_etymon_references(node.ref) end if node.children then for _, container in ipairs(node.children) do if container.terms then for _, term in ipairs(container.terms) do parse_tree_references(term) end end end end end -- Build a unique key for deduplication in the seen table function TreeBuilder.build_key(lang, title, args) local norm_lang_code = Util.get_norm_lang(lang):getFullCode() local is_table = type(args) == "table" local id = (is_table and args.id) or "" if title then return norm_lang_code .. ":" .. M.links.get_link_page(title, lang) .. ":" .. id end if is_table and args.status == M.data.STATUS.INLINE then local content_parts = {} for i = 1, #args do content_parts[i] = tostring(args[i]) end return norm_lang_code .. ":*:" .. id .. "\0" .. table.concat(content_parts, "\0") end return norm_lang_code .. ":*:" .. id end function TreeBuilder.build(lang, title, args, seen, depth, stop_recursion) seen = seen or {} depth = depth or 0 local is_toplevel = (depth == 0) if depth > __state.max_depth_reached then __state.max_depth_reached = depth end __state.total_nodes = __state.total_nodes + 1 local lang_code = lang:getCode() __state.language_count[lang_code] = (__state.language_count[lang_code] or 0) + 1 local current_id = (type(args) == "table" and args.id) or "" local key = TreeBuilder.build_key(lang, title, args) local node = { lang = lang, title = title, id = current_id, args = args, children = {}, status = M.data.STATUS.OK } if type(args) ~= "table" or seen[key] then node.status = args or M.data.STATUS.MISSING -- Mark as duplicate if we've seen this node before if seen[key] then node.is_duplicate = true node.duplicate_key = key local original_node = seen[key] if type(original_node) == "table" and original_node.children and #original_node.children > 0 then node.original_has_children = true end end return node end node.status = args.status or M.data.STATUS.OK seen[key] = node -- If stop_recursion is set, skip parsing children but check for visible children if stop_recursion then local keywords = M.data.keywords local has_visible_children = false for i = 2, #args do local param = args[i] if type(param) == "string" then local keyword_base = get_keyword_base(param) if keyword_base and keywords[keyword_base] then -- It's a keyword, check if visible in tree (invisible "all" or "tree" = hidden in tree) local keyword_info = keywords[keyword_base] local inv = keyword_info.invisible if not (inv == "all" or inv == true or inv == "tree") then has_visible_children = true break end elseif param:sub(1, 1) ~= ":" then -- It's a term (not a keyword), so there are visible children has_visible_children = true break end end end node.has_visible_children = has_visible_children return node end -- Parse args into keyword containers local current_keyword = "from" local current_keyword_modifiers = {} local current_container = nil -- Helper to track keyword usage at top level local function track_keyword_usage(keyword, target_lang, source_lang) if not is_toplevel then return end if not __state.toplevel_keyword_stats[keyword] then __state.toplevel_keyword_stats[keyword] = { count = 0, target_langs = {}, source_langs = {}, } end local keyword_data = __state.toplevel_keyword_stats[keyword] keyword_data.count = keyword_data.count + 1 local target_code = target_lang:getCode() keyword_data.target_langs[target_code] = (keyword_data.target_langs[target_code] or 0) + 1 if source_lang then local source_code = source_lang:getCode() keyword_data.source_langs[source_code] = (keyword_data.source_langs[source_code] or 0) + 1 end end local function ensure_container() if not current_container or current_container.keyword ~= current_keyword then current_container = { keyword = current_keyword, keyword_info = M.data.keywords[current_keyword], keyword_modifiers = current_keyword_modifiers, terms = {}, } table.insert(node.children, current_container) -- Override keyword text/phrase for nominalization with <g:code> if current_keyword_modifiers.g and current_keyword == "nominalization" then local labels = get_nominalization_label_for_g(current_keyword_modifiers.g) if not labels then local codes = {} for c in pairs(M.data.nominalization_g_codes) do table.insert(codes, c) end table.sort(codes) error("Invalid <g:" .. tostring(current_keyword_modifiers.g) .. ">. Supported codes for nominalization: " .. table.concat(codes, ", ")) end current_container.keyword_info = {} for k, v in pairs(M.data.keywords[current_keyword]) do current_container.keyword_info[k] = v end current_container.keyword_info.text = labels.text current_container.keyword_info.phrase = labels.phrase end end end for i = 2, #args do local param = args[i] if is_keyword(param) then local keyword, modifiers = EtymonParser.parse_keyword_modifiers(param) current_keyword = keyword current_keyword_modifiers = modifiers current_container = nil -- Force new container for new keyword elseif type(param) == "string" and param:sub(1, 1) == ":" then error("Invalid keyword '" .. param .. "'. Did you mean a valid keyword like ':bor', ':inh', etc.?") elseif type(param) == "string" then local etymon_data = EtymonParser.parse_etymon(param, lang) if etymon_data then -- Track keyword usage at top level track_keyword_usage(current_keyword, lang, etymon_data.lang) local term_node = {} -- Handle suppress_term (-) and unknown_term (empty) directly if etymon_data.suppress_term or etymon_data.unknown_term then ensure_container() if etymon_data.ety then local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE term_node = TreeBuilder.build(etymon_data.lang, nil, inline_args, seen, depth + 1) else term_node = { lang = etymon_data.lang, children = {}, status = M.data.STATUS.OK, } end term_node.suppress_term = etymon_data.suppress_term term_node.unknown_term = etymon_data.unknown_term term_node.is_family = etymon_data.is_family term_node.is_uncertain = etymon_data.unc term_node.ref = etymon_data.ref term_node.t = etymon_data.t term_node.tr = etymon_data.tr term_node.ts = etymon_data.ts term_node.alt = etymon_data.alt term_node.g = etymon_data.g term_node.pos = etymon_data.pos term_node.ng = etymon_data.ng term_node.lit = etymon_data.lit term_node.q = etymon_data.q term_node.qq = etymon_data.qq term_node.l = etymon_data.l term_node.ll = etymon_data.ll else -- Regular term: fetch arguments from page local etymon_args, page_of, resolved_etymon_id, descendants_check = DataRetriever.get_etymon_args(etymon_data, is_toplevel) -- Check for <ety> inline parameter doesn't override the scraped arguments, unless the latter are missing if etymon_data.ety then if etymon_args == M.data.STATUS.REDLINK or etymon_args == M.data.STATUS.MISSING then __state.current_page_has_inline_etymology = true if is_toplevel then __state.toplevel_has_inline_etymology = true end local inline_args = EtymonParser.parse_inline_ety(etymon_data.ety, etymon_data.lang) -- Track inline ety keywords too local inline_keyword = get_keyword(inline_args[2], true) if inline_keyword and #inline_args >= 3 then local inline_etymon = EtymonParser.parse_etymon(inline_args[3], etymon_data.lang) if inline_etymon then track_keyword_usage(inline_keyword, etymon_data.lang, inline_etymon.lang) end end inline_args.id = etymon_data.id inline_args.status = M.data.STATUS.INLINE etymon_args = inline_args term_node.page_of = __state.cached_etymon_pages[key] -- term node is on the same page as the parent else -- Scraped arguments exist, <ety> is redundant and ignored __state.current_page_has_redundant_etymology = true if is_toplevel then __state.toplevel_redundant_etymology = true end end end -- Ensure container exists before checking keyword info ensure_container() -- Check if current keyword has no_child_categories - if so, stop recursion local keyword_info = current_container.keyword_info local should_stop_recursion = (stop_recursion or (keyword_info and keyword_info.no_child_categories)) term_node = TreeBuilder.build(etymon_data.lang, etymon_data.term, etymon_args, seen, depth + 1, should_stop_recursion) term_node.target_key = Util.get_norm_lang(etymon_data.lang):getFullCode() .. ":" .. M.links.get_link_page(etymon_data.term, etymon_data.lang) term_node.id = etymon_data.id term_node.etymon_id = resolved_etymon_id -- The actual etymon id when resolved via senseid term_node.t = etymon_data.t term_node.tr = etymon_data.tr term_node.ts = etymon_data.ts term_node.pos = etymon_data.pos term_node.alt = etymon_data.alt term_node.g = etymon_data.g term_node.ng = etymon_data.ng term_node.ref = etymon_data.ref term_node.is_uncertain = etymon_data.unc term_node.override = etymon_data.override term_node.page_of = page_of term_node.aftype = etymon_data.aftype term_node.postype = etymon_data.postype term_node.bor = etymon_data.bor term_node.lbor = etymon_data.lbor term_node.slbor = etymon_data.slbor term_node.lit = etymon_data.lit term_node.is_family = etymon_data.is_family term_node.q = etymon_data.q term_node.qq = etymon_data.qq term_node.l = etymon_data.l term_node.ll = etymon_data.ll term_node.missing_descendants_header, term_node.missing_descendants_entry = M.descendants.get_term_sync_flags(current_keyword, term_node.status, descendants_check) end table.insert(current_container.terms, term_node) end end end return node end -- Convert etymology tree to JSON-serializable table local function tree_to_json(node) local obj = { term = node.title, lang = node.lang:getCode(), lang_name = node.lang:getCanonicalName(), id = (node.id and node.id ~= "") and node.id or nil, status = node.status, is_uncertain = node.is_uncertain or nil, is_duplicate = node.is_duplicate or nil, gloss = node.t, transliteration = node.tr, transcription = node.ts, alt = node.alt, g = node.g, pos = node.pos, ng = node.ng, children = {}, } for _, container in ipairs(node.children or {}) do local keyword_info = container.keyword_info if keyword_info then local container_obj = { keyword = container.keyword, keyword_label = keyword_info.text, keyword_abbrev = keyword_info.abbrev, is_group = keyword_info.is_group or nil, is_invisible = keyword_info.invisible or nil, is_uncertain = (container.keyword_modifiers and container.keyword_modifiers.unc) or nil, terms = {}, } for _, term in ipairs(container.terms or {}) do table.insert(container_obj.terms, tree_to_json(term)) end table.insert(obj.children, container_obj) end end return obj end local function track_ranges(base_key, value, ranges, lang_code) M.track("etymon/" .. base_key .. "/" .. value) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. value) end for _, range in ipairs(ranges) do local matches = false if range.min and range.max then matches = value >= range.min and value <= range.max elseif range.min then matches = value >= range.min elseif range.max then matches = value <= range.max elseif range.exact then matches = value == range.exact end if matches then M.track("etymon/" .. base_key .. "/" .. range.label) if lang_code then M.track("etymon/lang/" .. lang_code .. "/" .. base_key .. "/" .. range.label) end break end end end local function track_title_pagename_mismatch_after_strip(lang) local lang_code = lang:getCode() M.track("etymon/title/pagename-mismatch-after-strip-diacritics") M.track("etymon/lang/" .. lang_code .. "/title/pagename-mismatch-after-strip-diacritics") end -- Build and return the etymology data tree for a given term. function export.get_tree(lang, title, args, options) options = options or {} __state.entry_title = title __state.entry_lang_code = lang:getCode() if options.validate then EtymonParser.validate(lang, args, options.id, title, options.pos, false) end local lang_code = lang:getCode() local start_index = (args[1] == lang_code) and 2 or 1 local tree_args = { [1] = lang_code, id = options.id or args.id } for i = start_index, #args do table.insert(tree_args, args[i]) end __state.cached_etymon_args[lang_code .. ":" .. title .. ":" .. (tree_args.id or "")] = tree_args local ety_data_tree = TreeBuilder.build(lang, title, tree_args) parse_tree_references(ety_data_tree) if options.json then return M.JSON.toJSON(tree_to_json(ety_data_tree)) end return ety_data_tree end -- Given a language code, page name and optionally the id= parameter, -- render the tree and only the etymology tree for the relevant page. -- Fetches and parses the corresponding {{etymon}} from the requested page, -- and any further pages needed to render the tree. -- Parameters can be passed either through the #invoke or as -- template parameters *through* an #invoke. function export.render_tree_for_etymon_on_page(frame) local frame_args = frame.args local parent_args = frame:getParent().args local langcode = frame_args[1] or parent_args[1] local pagename = frame_args[2] or parent_args[2] local id = frame_args["id"] or parent_args["id"] local display_title = frame_args["title"] or parent_args["title"] local parsed_title = mw.title.new(pagename, 0) local title if parsed_title.namespace == 0 then title = M.pages.safe_page_name(parsed_title) elseif parsed_title.namespace == 118 then title = "*" .. M.pages.safe_page_name(parsed_title) else error("Unsupported namespace for render_tree_for_etymon_on_page: " .. parsed_title.namespace) end local lang = Util.get_lang(langcode) -- Construct etymon_data for DataRetriever.get_args. local etymon_data = { lang = lang, term = title, id = id } local args, pagename = DataRetriever.get_etymon_args(etymon_data, true) if args == M.data.STATUS.MISSING then error("The etymon template was not found (language " .. langcode .. ", title '" .. title .. "'" .. (id and ", ID '" .. id .. "'" or ", no ID given") .. "). Page contents may have changed in the interim.") end local tree_title = display_title or title if lang:stripDiacritics(M.links.remove_links(tree_title)) ~= lang:stripDiacritics(M.links.remove_links(title)) then track_title_pagename_mismatch_after_strip(lang) end local ety_data_tree = export.get_tree(lang, tree_title, args, { validate = true, id = id, }) local output = {} table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) return table.concat(output) end function export.main(frame) local parent_args = frame:getParent().args local args = M.parameters.process(parent_args, M.parameters_data.etymon) local lang = args[1] local etymon_args = args[2] local id = args.id local title = args.title local text = args.text local tree = args.tree local etydate = args.etydate local rfe = args.rfe local page_data = Util.get_page_data() if not title then title = page_data.pagename if page_data.namespace == "Reconstruction" then title = "*" .. title end end local entry_pagename = page_data.pagename if page_data.namespace == "Reconstruction" then entry_pagename = "*" .. entry_pagename end if lang:stripDiacritics(M.links.remove_links(title)) ~= lang:stripDiacritics(M.links.remove_links(entry_pagename)) then track_title_pagename_mismatch_after_strip(lang) end local current_L2 = M.pages.get_current_L2() if current_L2 then local norm_lang = Util.get_norm_lang(lang) local norm_name = norm_lang:getCanonicalName() if current_L2 ~= norm_name then local lang_desc = lang:getCode() .. " (" .. lang:getCanonicalName() .. ")" if norm_lang:getCode() ~= lang:getCode() then lang_desc = lang_desc .. ", normalized to " .. norm_lang:getCode() .. " (" .. norm_name .. ")" end error("Language '" .. lang_desc .. "' does not match the L2 header (" .. current_L2 .. ").") end end local ety_data_tree = export.get_tree(lang, title, etymon_args, { validate = true, pos = args.pos, id = id, json = args.json, }) if args.json then return ety_data_tree end local output = {} local text_allowlist_mode = M.text_allowed.default_mode or "off" if text and text_allowlist_mode ~= "off" and not Util.is_text_param_allowed_for_lang(lang) then local msg = "Etymology texts (parameter <code>text=</code>) are not allowed for " .. lang:getFullName() .. "; see [[Template:etymon#Text allowlist|Template:etymon § Text allowlist]] for the list of languages that may use the <code>text=</code> parameter." if text_allowlist_mode == "error" then error(msg) else Util.add_warning(msg, true) end end local lang_exc = Util.get_lang_exception(lang) if lang_exc and lang_exc.disallow then local disallow = lang_exc.disallow local error_text = " for " .. lang:getFullName() if disallow.ref then error_text = error_text .. "; see " .. disallow.ref else error_text = error_text .. "." end if tree and disallow.tree then error("Etymology trees are not allowed" .. error_text) end if text and disallow.text then error("Etymology texts are not allowed" .. error_text) end end if etydate then local etydate_param_mods = { ref = { list = true, type = "references", allow_holes = true }, refn = { list = true, allow_holes = true }, nocap = { type = "boolean" }, } local function generate_etydate_obj(etydate_text) local etydate_specs = {} for spec in etydate_text:gmatch("[^,]+") do table.insert(etydate_specs, mw.text.trim(spec)) end return { [1] = etydate_specs } end local parsed_etydate = M.parse_utilities.parse_inline_modifiers(etydate, { param_mods = etydate_param_mods, generate_obj = generate_etydate_obj }) local etydate_args = { [1] = parsed_etydate[1], nocap = parsed_etydate.nocap or false, } ety_data_tree.etydate = M.etydate.format_etydate(etydate_args, { omit_refs = true }) if parsed_etydate.ref and #parsed_etydate.ref > 0 then ety_data_tree.etydate_refs = parsed_etydate.ref end end if tree then table.insert(output, M.template_styles("Module:etymon/styles.css")) table.insert(output, M.tree.render({ data_tree = ety_data_tree, format_term_func = function(term, is_toplevel) return Util.format_term(term, is_toplevel, { gloss = "suppress", pos = "suppress", lit = "suppress", tree_ql = "suppress", }) end, })) end -- Check if there are any visible children in tree (invisible "all" or "tree" = hidden in tree) local has_visible_children = false for _, child in ipairs(ety_data_tree.children or {}) do local child_keyword_info = child.keyword_info local inv = child_keyword_info and child_keyword_info.invisible if not (inv == "all" or inv == true or inv == "tree") then has_visible_children = true break end end local tree_disallowed = lang_exc and lang_exc.disallow and lang_exc.disallow.tree local ety_tree_json = M.JSON.toJSON(tree_to_json(ety_data_tree)) local anchor = M.anchors.etymonid(lang, id, { no_tree = args.notree, title = title, empty_tree = (not has_visible_children) or tree_disallowed, ety_tree_json = ety_tree_json, }) table.insert(output, anchor) if text then local max_depth, stop_at_blue_link, stop_at_lang, stop_at_lang_or_bluelink if text == "++" then max_depth, stop_at_blue_link = false, false elseif text == "+" then max_depth, stop_at_blue_link = 1, false elseif text == "*" then max_depth, stop_at_blue_link = false, true elseif text:match("^:[^*]+%*$") then -- Stop at a specific language OR first bluelink after it, e.g., ":ota*" -- If the target language is a redlink, continue to the first bluelink local lang_code = text:match("^:([^*]+)%*$") if lang_code and lang_code ~= "" then local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang_or_bluelink = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false end elseif text:sub(1, 1) == ":" then -- Stop at a specific language, e.g., ":ar" stops at first Arabic term local lang_code = text:sub(2) if lang_code ~= "" then -- Validate the language code local lang_obj = Util.get_lang(lang_code, true) if lang_obj then stop_at_lang = lang_code else Util.add_warning('Invalid language code "' .. lang_code .. '" in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else Util.add_warning('Empty language code in text parameter. Showing full chain instead.') max_depth, stop_at_blue_link = false, false -- default to ++ end else local num = tonumber(text) if num and num >= 1 then max_depth, stop_at_blue_link = num, false else error('Invalid text value "' .. text .. '". Valid values are: "++" (full chain), "+" (first step only), "*" (until first blue link), a number (max steps), ":lang" (stop at language), or ":lang*" (stop at language or first bluelink if redlink)') end end table.insert(output, M.text.render({ data_tree = ety_data_tree, format_term_func = Util.format_term, max_depth = max_depth, stop_at_blue_link = stop_at_blue_link, curr_page = page_data.pagename, nodot = args.nodot, stop_at_lang = stop_at_lang, stop_at_lang_or_bluelink = stop_at_lang_or_bluelink, })) end if rfe then local rfe_param_mods = { nocat = { type = "boolean" }, sort = {}, y = {}, m = {}, fragment = {}, section = {}, box = { type = "boolean" }, noes = { type = "boolean" }, } local function generate_rfe_obj(rfe_text) -- Check if it's a boolean true value if M.yesno(rfe_text, false) then return { is_boolean = true } else return { text = rfe_text } end end local rfe_with_defaults = Util.add_boolean_defaults(rfe, rfe_param_mods) local parsed_rfe = M.parse_utilities.parse_inline_modifiers(rfe_with_defaults, { param_mods = rfe_param_mods, generate_obj = generate_rfe_obj }) local rfe_args = { [1] = lang:getCode(), nocat = parsed_rfe.nocat, sort = parsed_rfe.sort, y = parsed_rfe.y, m = parsed_rfe.m, fragment = parsed_rfe.fragment, section = parsed_rfe.section, box = parsed_rfe.box, noes = parsed_rfe.noes, } if not parsed_rfe.is_boolean then rfe_args[2] = parsed_rfe.text end table.insert(output, frame:expandTemplate({ title = "rfe", args = rfe_args })) end if Util.is_content_page() and __state.max_depth_reached > 0 then local lang_code = lang:getCode() local depth_ranges = { { min = 50, label = "extremely-deep" }, { min = 20, label = "20+" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { max = 2, label = "1-2" } } local node_ranges = { { min = 100, label = "extremely-large" }, { min = 50, label = "50+" }, { min = 20, max = 49, label = "20-49" }, { min = 10, max = 19, label = "10-19" }, { min = 5, max = 9, label = "5-9" }, { max = 4, label = "1-4" } } local language_ranges = { { min = 10, label = "10+" }, { min = 5, max = 9, label = "5-9" }, { min = 3, max = 4, label = "3-4" }, { exact = 2, label = "2" }, { exact = 1, label = "1" } } track_ranges("depth", __state.max_depth_reached, depth_ranges, lang_code) track_ranges("nodes", __state.total_nodes, node_ranges, lang_code) local unique_languages = 0 for _ in pairs(__state.language_count) do unique_languages = unique_languages + 1 end track_ranges("unique-languages", unique_languages, language_ranges, lang_code) if __state.total_nodes == __state.max_depth_reached + 1 then track_ranges("linear-depth", __state.max_depth_reached, depth_ranges, lang_code) end end local categories = {} if Util.is_content_page() then local should_suppress_categories = lang_exc and lang_exc.suppress_categories if not should_suppress_categories and not args.nocat then categories = M.categories.render({ data_tree = ety_data_tree, page_lang = lang, available_etymon_ids = __state.available_etymon_ids, senseid_parent_etymon = __state.senseid_parent_etymon, get_norm_lang_func = Util.get_norm_lang, lang_exc = lang_exc, }) end local target_lang_code = lang:getCode() for keyword, keyword_data in pairs(__state.toplevel_keyword_stats) do -- Track keyword globally M.track("etymon/keyword/" .. keyword) -- Track keyword per target language M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code) -- Track keyword per source language for source_code, count in pairs(keyword_data.source_langs) do M.track("etymon/keyword/" .. keyword .. "/source/" .. source_code) -- Track keyword per target+source combination M.track("etymon/keyword/" .. keyword .. "/target/" .. target_lang_code .. "/source/" .. source_code) end end if tree then table.insert(categories, "Pages with etymology trees") table.insert(categories, lang:getCanonicalName() .. " ප්‍රවේශ, නිරුක්ති ශාඛා සහිත") end if text then table.insert(categories, lang:getCanonicalName() .. " entries with etymology texts") end if args.exnihilo then table.insert(categories, lang:getCanonicalName() .. " terms coined ex nihilo") end if __state.toplevel_has_inline_etymology then table.insert(categories, "Pages with inline etymon for redlinks") end if __state.toplevel_redundant_etymology then table.insert(categories, "Pages with redundant inline etymon") end if __state.toplevel_idless_etymon then table.insert(categories, "Pages using etymon with no ID") end if __state.has_mismatched_id then table.insert(categories, lang:getCanonicalName() .. " entries referencing etymons with mismatched IDs") end if __state.linked_page_multiple_etymons_idless then table.insert(categories, lang:getCanonicalName() .. " entries referencing pages with multiple etymons missing IDs") end end if #categories > 0 then table.insert(output, M.categories.format(categories, lang)) end if __state.warnings then for i, warning in ipairs(__state.warnings) do table.insert(output, (i == 1 and "\n" or "") .. warning .. "\n") end end return table.concat(output) end return export f65eehlenqf8bbtycql2zwv1rypc5a2 radio 0 114072 235465 223615 2026-06-02T10:56:59Z Lee 19 /* ක්‍රියා පද */ 235465 wikitext text/x-wiki ==ඉංග්‍රීසි== === උච්චාරණය === * {{IPA|en|/ˈɹeɪdiˌəʊ/|a=RP}} * {{IPA|en|/ˈɹeɪdiˌoʊ/|a=GA}} * {{audio|en|en-us-radio.ogg|a=US}} * {{hyph|en|ra|dio}} ===නාම පදය=== {{en-noun}} # {{l|si|රෙදෙව්ව}} ===ක්‍රියා පද=== {{en-verb|+,~es}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක<br>(ව්‍යවහාරයේ නැති විය හැකියි. )||[[රෙදෙවයි]]||[[රෙදෙවති]]||[[රෙදෙවමි]]||[[රෙදෙවමු]] |- |} {{topics|en|Radio}} 52mo6g8qujabrywtur97bcsxanut58p සැකිල්ල:R:Dictionary.com 10 114216 235464 168304 2026-06-02T10:56:01Z Lee 19 235464 wikitext text/x-wiki {{#switch:{{ucfirst:{{{source|}}}}} | FOLDOC = {{R:FOLDOC|entry={{{entry|{{{1|{{PAGENAME}}}}}}}}|accessdate={{{accessdate|{{{3|}}}}}}|passage={{{passage|{{{4|}}}}}}}} | #default = {{cite-book |entry = {{#if:{{{alt|}}} | {{{alt}}} | {{{entry|{{{1|{{PAGENAME}}}}}}}} }}{{#if:{{{part of speech|}}}{{{pos|}}} |, {{#if:{{{noformat|}}} | {{{part of speech|{{{pos|}}}}}} | ''{{{part of speech|{{{pos|}}}}}}{{#ifeq:{{{part of speech|}}}{{{pos|}}}{{{2|}}}|phrase||.}}'' }} }} |entryurl = {{#if:{{{url|}}}{{{2|}}} | {{#ifeq:{{padleft:|4|{{{url|{{{2|}}}}}}}}|http | {{{url|{{{2|}}}}}} | https://www.dictionary.com/browse/{{urlencode:{{{url|{{{2|}}}}}}|PATH}} }} | https://www.dictionary.com/browse/{{#if:{{{entry|{{{1|}}}}}}|{{urlencode:{{{entry|{{{1|}}}}}}|PATH}}|{{#invoke:string|replace|source={{PAGENAMEE}}|pattern=_|replace=%20}}}} }} |title = Dictionary.com Unabridged |publisher = [[w:Dictionary.com|Dictionary.com, LLC]] |year = 1995–වත්මන |accessdate = {{{accessdate|{{{3|}}}}}} |section = {{#switch:{{ucfirst:{{{source|}}}}} | Chambers = reproduced from Thomas Davidson, editor, ''[[w:Chambers Dictionary|Chambers’s Twentieth Century Dictionary of the English Language]]'', London; Edinburgh: [[w:Chambers Harrap|W. & R. Chambers]], 1908, <small>{{OCLC|635036082}}</small> | Collins = reproduced from ''[[w:Collins English Dictionary|Collins English Dictionary]]'', 10th edition, London: [[w:HarperCollins|Collins]], 2010, <small>{{ISBN|978-0-00-738233-0}}</small> | Cultural Literacy = reproduced from E. D. Hirsch Jr.; Joseph F. Kett; James Trefil, ''The New Dictionary of Cultural Literacy'', 3rd edition, Boston, Mass.: [[w:Houghton Mifflin Harcourt|Houghton Mifflin]], 2002, <small>{{ISBN|978-1-84972-072-4}}</small> | Etymology|Online Etymology Dictionary = reproduced from Douglas R. Harper, ''[[w:Online Etymology Dictionary|Online Etymology Dictionary]]'', Lancaster, Pa.: D.&nbsp;Harper, 2000–, <small>{{OCLC|51773921}}</small> | Idioms = reproduced from Christine Ammer, ''The American Heritage Dictionary of Idioms'', Boston, Mass.: [[w:Houghton Mifflin Harcourt|Houghton Mifflin]], 2003, <small>{{ISBN|978-0-618-24953-4}}</small> | Random House = reproduced from [[w:Stuart Berg Flexner|Stuart Berg Flexner]], editor in chief, ''[[w:Random House Webster's Unabridged Dictionary|Random House Unabridged Dictionary]]'', 2nd edition, New York, N.Y.: [[w:Random House|Random House]], 1993, <small>{{ISBN|978-0-679-42441-3}}</small> | Slang = reproduced from [[w:Barbara Ann Kipfer|Barbara Ann Kipfer]] and [[w:Robert L. Chapman|Robert L[undquist] Chapman]], editors, ''Dictionary of American Slang'', 4th edition, New York, N.Y.: [[w:HarperCollins|Collins]], 2007, <small>{{ISBN|978-0-06-117646-3}}</small> }} |passage = {{{passage|{{{text|{{{4|}}}}}}}}} |usenodot = 1 |nodot = {{{nodot|}}} }}}}<noinclude>{{documentation}}</noinclude> t4gnqzv30mh8np68selw4p93dl8swl4 සැකිල්ල:R:Dictionary.com/documentation 10 114217 235463 197035 2026-06-02T10:55:26Z Lee 19 235463 wikitext text/x-wiki {{documentation subpage}} ===Usage=== This template may be used in "References" and "Further reading" sections, and on talk pages, to cite the ''[http://dictionary.reference.com Dictionary.com]'' website. ===Parameters=== * {{para|1}} or {{para|entry}} – the entry on ''Dictionary.com''. If this is not specified, the name of the Wiktionary entry is used. * {{para|alt}} – an alternative form of the entry, with wikitext markup if required. * {{para|pos}} or {{para|part of speech}} – the [[part of speech]] of the entry. By default, the template italicizes the value assigned to the parameter and adds a [[full stop]] ([[period]]) to the end. To turn off the default formatting for the purpose of specifying a different formatting using wikitext markup and templates, specify {{para|noformat|1}} or {{para|noformat|yes}}. * {{para|2}} or {{para|url}} – the template can usually automatically create a link to ''Dictionary.com''. However, if the entry contains a character other than a letter of the alphabet or a [[hyphen]], for the [[hyperlink]] to work it is necessary to use this parameter to manually specify the [[URL]] of the ''Dictionary.com'' webpage or the portion of the URL after “<kbd>.../browse/</kbd>” (see the example below). * {{para|3}} or {{para|access-date}} – the date when ''Dictionary.com'' was accessed. * {{para|source}} – the source used by ''Dictionary.com'': ** <kbd>Chambers</kbd> – ''[[w:Chambers Dictionary|Chambers’s Twentieth Century Dictionary of the English Language]]'' (1908). ** <kbd>Collins</kbd> – ''[[w:Collins English Dictionary|Collins English Dictionary]]'' (10th edition, 2010). ** <kbd>Cultural Literacy</kbd> – ''The New Dictionary of Cultural Literacy'' (3rd edition, 2002). ** <kbd>Etymology</kbd> ''or'' <kbd>Online Etymology Dictionary</kbd> – ''[[w:Online Etymology Dictionary|Online Etymology Dictionary]]'' (2000–). ** <kbd>FOLDOC</kbd> – ''[[w:Free On-line Dictionary of Computing|Free On-line Dictionary of Computing]]'' (1985–). ''Now deprecated''&nbsp;– providing the source as "<code>FOLDOC</code>" acts as a redirect to {{temp|R:FOLDOC}}. For simplicity, use {{temp|R:FOLDOC}} instead. ** <kbd>Idioms</kbd> - ''The American Heritage Dictionary of Idioms'' (2003), see also {{tl|R:AHD Idioms}}. ** <kbd>Random House</kbd> – ''[[w:Random House Webster's Unabridged Dictionary|Random House Unabridged Dictionary]]'' (2nd edition, 1993). ** <kbd>Slang</kbd> – ''Dictionary of American Slang'' (4th edition, 2007). : For help with adding additional sources to this template, please leave a message on the [[Template talk:R:Dictionary.com|talk page]]. * {{para|4}}, {{para|text}}, or {{para|passage}} – a passage quoted from the webpage. * {{para|nodot}} – by default, the template adds a full stop (period) at the end of the citation. To suppress this punctuation, use {{para|nodot|1}} or {{para|nodot|yes}}. ===Examples=== Unless otherwise specified, the following examples assume that the template is being used on the Wiktionary entry page “{{m|en|example}}”. * '''Wikitext''': ** {{temp|R:Dictionary.com|pos=n}}; or ** {{temp|R:Dictionary.com|entry=example|pos=n}} * '''Result''': {{R:Dictionary.com|entry=example|pos=n}} * '''Wikitext''': ** {{temp|R:Dictionary.com|pos=n|access-date=1 January 2017}}; or ** {{temp|R:Dictionary.com|entry=example|pos=n|access-date=1 January 2017}} * '''Result''': {{R:Dictionary.com|entry=example|pos=n|access-date=1 January 2017}} * '''Wikitext''': {{temp|R:Dictionary.com|pos=n|source=Random House|access-date=1 January 2017}} * '''Result''': {{R:Dictionary.com|entry=example|pos=n|source=Random House|access-date=1 January 2017}} * '''Wikitext''': ** {{temp|R:Dictionary.com|2=entry=all the world’s a stage|3=url=all-the-world-s-a-stage|4=source=Cultural Literacy|5=passage=The beginning of a speech in the play ''As You Like It'', by William Shakespeare.|6=nodot=1}}; or ** {{temp|R:Dictionary.com|2=entry=all the world’s a stage|3=url=<nowiki>https://www.dictionary.com/browse/all-the-world-s-a-stage</nowiki>|4=source=Cultural Literacy|5=passage=The beginning of a speech in the play ''As You Like It'', by William Shakespeare.|6=nodot=1}} * '''Result''': {{R:Dictionary.com|entry=all the world’s a stage|url=https://www.dictionary.com/browse/all-the-world-s-a-stage|source=Cultural Literacy|passage=The beginning of a speech in the play ''As You Like It'', by William Shakespeare.|nodot=1}} <includeonly> [[ප්‍රවර්ගය:ඉංග්‍රීසි මූලාශ්‍ර සැකිලි|Dictionary.com]] </includeonly> 3mwnp1q5txi54hxcxrt3m1epldlb2ek drink 0 114435 235352 223199 2026-06-01T15:09:02Z Lee 19 235352 wikitext text/x-wiki {{also|Drink}} ==ඉංග්‍රීසි== === උච්චාරණය === * {{enPR|drĭngk|a=RP,GA}}, {{IPA|en|/dɹɪŋk/|[d̠ɹ̠˔ʷɪŋk]}} * {{audio|en|En-us-drink.ogg|a=GA}} * {{rhymes|en|ɪŋk|s=1}} ==== ක්‍රියා පදය ==== {{en-verb|~s|~ing|drank,drunk<l:Southern US>,~ed<l:nonstandard>|drunk,drunken<l:chiefly,archaic>,drank<l:dialectal>,~ed<l:all,nonstandard,archaic,or,obsolete>,~en,dranken}} # {{l|si|බොනවා}} {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[බොයි]]||[[බොති]]||[[බොමි]]||[[බොමු]] |- |} ===නාම පදය=== {{en-noun|~}} # {{l|si|පානය}} {{cln|en|irregular verbs}} [[Category:English class 3 strong verbs]] [[Category:en:Food and drink]] [[Category:en:Liquids]] [[Category:en:Units of measure]] [[Category:English autohyponyms]]<!-- drink any liquid vs. drink alcohol --> 539py88tlitipy3bchqds8o38txq1yd ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, පෞරාණික අරුත් සහිත 14 120956 235290 215548 2026-06-01T14:00:14Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, archaic අරුත් සහිත]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, පෞරාණික අරුත් සහිත]] වෙත පිටුව ගෙන යන ලදී 215548 wikitext text/x-wiki {{auto cat}} [[en:Category:English terms with archaic senses]] tq8ptryvvsi5lyyt8p7a7z9bccvyhs0 pencil 0 129859 235467 204318 2026-06-02T10:58:16Z Lee 19 /* ක්‍රියා පදය */ 235467 wikitext text/x-wiki == ඉංග්‍රීසි == [[File:Caran d'Ache Farbstifte.JPG|thumb|Selection of colored pencils.]] === වෙනත් ආකාර === * {{alter|en|pensill||obsolete}} === නිරුක්තිය === From {{der|en|xno|-}} and {{der|en|fro|pincil}} (see the variant {{m|fro|pincel}}, which gave rise to Modern French {{m|fr|pinceau||paintbrush}}), from {{der|en|la|pēnicillum}}, diminutive of {{m|la|pēniculus|gloss=brush}}, itself a diminutive of {{m|la|pēnis|gloss=tail; penis}}. Not related to ''[[pen]]''. === උච්චාරණය === * {{IPA|en|/ˈpɛnsəl/|/ˈpɛntsəl/}} ** {{IPA|en|/ˈpɛnsɪl/|a=RP,also}} * {{audio|en|en-us-pencil.ogg|a=US}} * {{rhymes|en|ɛnsəl|s=2}} * {{hyphenation|en|pen|cil}} === නාම පදය === {{en-noun}} # [[පැන්සල]] === ක්‍රියා පදය === {{en-verb|+l}} # {{lb|en|transitive}} [[පැන්සල]] භාවිතයෙන් යමක් [[ලිවීම]]. #: {{ux|en|I '''penciled''' (''BrE:'' '''pencilled''') a brief reminder in my notebook.}} #* {{quote-book|en|year=1888|author=w:Thomas Hardy|title=w:Wessex Tales| chapter=An Imaginative Woman|passage=She had hardly got back when she encountered a piece by Robert Trewe in the new number of her favourite magazine, which must have been written almost immediately before her visit to Solentsea, for it contained the very couplet she had seen '''pencilled''' on the wallpaper by the bed, and Mrs. Hooper had declared to be recent.}} {{C|en|Writing instruments}} l1p97s3av3ei9uc7obujclwpnd8zro9 සැකිල්ල:obsolete spelling of 10 130385 235339 205596 2026-06-01T14:39:03Z Lee 19 235339 wikitext text/x-wiki {{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|&nbsp;යන යෙදුමේ [[Appendix:Glossary#obsolete|අභාවයට ගිය]] අක්ෂර වින්‍යාසයක්|withcap=1|withdot=1|cat=obsolete forms}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> a70y0k6xd7qdwqvvluvmeq49fqwa0xs 235340 235339 2026-06-01T14:40:05Z Lee 19 235340 wikitext text/x-wiki {{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|&nbsp;යන යෙදුමේ [[Appendix:Glossary#obsolete|අභාවයට ගිය]] අක්ෂර වින්‍යාසයක්|withcap=1|withdot=1|cat=අභාවයට ගිය රූපාකාර}}<!-- -->}}<!-- --><noinclude>{{documentation}}</noinclude> 84kwxbhhyf2oymy911eloipaxmfdydy සැකිල්ල:archaic spelling of 10 130387 235381 205898 2026-06-02T03:38:51Z Lee 19 235381 wikitext text/x-wiki {{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|&nbsp;යන යෙදුමේ [[Appendix:Glossary#archaic|පෞරාණික]] අක්ෂර වින්‍යාසයක්|cat=archaic forms|withcap=1|withdot=1}}<!-- -->}}<!-- --><noinclude>{{documentation}}[[ප්‍රවර්ගය:රූපාකාර සැකිලි]]</noinclude> fuagw2b17vu1zjgy0i1ykauihd9zifm 235382 235381 2026-06-02T03:40:00Z Lee 19 පෞරාණික රූපාකාර 235382 wikitext text/x-wiki {{ {{#if:{{{lang|}}}|check deprecated lang param usage|no deprecated lang param usage}}|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|&nbsp;යන යෙදුමේ [[Appendix:Glossary#archaic|පෞරාණික]] අක්ෂර වින්‍යාසයක්|cat=පෞරාණික රූපාකාර|withcap=1|withdot=1}}<!-- -->}}<!-- --><noinclude>{{documentation}}[[ප්‍රවර්ගය:රූපාකාර සැකිලි]]</noinclude> q015379ehhuxn8y2tru25ihxkr3amlv වදී 0 130476 235473 233024 2026-06-02T11:03:06Z WrdSrchSi 3305 /* ක්‍රියා පද */ + quote#3 with link 235473 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{etymon|si|id=වද ඊ|af|si>වද#ධාතු ප්‍රකෘතිය>ප්‍රකෘතිය|si>-ඊ>ප්‍රත්‍ය|tree=1}} ''[[වද#ධාතු ප්‍රකෘතිය|වද]] (ප්‍රකෘතිය) + [[-ඊ]] (ප්‍රත්‍ය) >'' [[වදී]] ===උච්චාරණය=== * {{IPA|si|/ˈʋadiː/}} ===ක්‍රියා පද=== {{head|si|verb |අතීත-අකර්මක අන්‍ය පුරුෂ ඒකවචන|වනි |අනතීත-අකර්මක අන්‍ය පුරුෂ බහුවචන|වදිති |අනතීත-අකර්මක උත්තම ඒකවචන|වදිමි |අනතීත-අකර්මක උත්තම බහුවචන|වදිමු |අනතීත-ප්‍රයුක්ත|වද්දයි |අනතීත-භාව නාම|වදිනවා |අනතීත-කාරක නාම|වදින්නේ |වර්තමාන-නිපාත|වදිමින් }} # {{lb|si|අකර්මක}} ප්‍රවේශ වෙයි, ඇතුළු වෙයි; [[enter]] වෙයි. #:* අජිත්, ''[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma5_Kalaba1.pdf එකට එක]'', 2507 බක් 1964 අප්රේල් #:*: ''ඇරැක්මේ දුබල කමට පින් දුන් හෙතෙම පෙනෙන තෙක් මානේ කිසිවකු නුදුටුයේ 'කාටත් නොපෙනෙන්නට මැ' අබරණ කිළිය තුළට '''වනි'''.'' #:* අරීසෙන් අහුබුදු, ''[https://www.scribd.com/document/368826953/HelaDeranaWaga-pdf හෙළ දෙරණ වග]'', 07 පිටුව, 2005 #:*: ''ඇතැම් හෙළ වදන් ද මැඩගස්කාර බසෙහි '''වැදැ''' සිටී.'' #:* මොහොට්ටි දොණු දේවිදු, ''[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma6,Kalaba6.pdf මගේ බළපිටි සමය]'', 2510 පොසොන්-වප් 1966 ජුනි-ඔක්. #:*: ''1930 ජනවාරියේ මුල් සතියේ එක් දිනෙකැ පස්වරුයේ අපි පෙරළා ඇබෑසි විදුහල් '''වනුමු'''.'' # {{{1|{{rfdef|si}}}}} #: ''{{{2|<!-- example sentence -->}}}'' ==== පරිවර්තන ==== ''පරිවර්තන සඳහා අනාගත කාලය සලකා නැත.'' {{trans-top|වදී}} * ඉංග්‍රීසි: {{t|en|enters}} {{trans-bottom}} === මූලාශ්‍ර === <references/> * "වද [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, "ක්‍රියා විවරණය", — 190 පිටුව * "වද (ධා) [https://tipitaka.lk/library/955]", වැලිවිටියේ සෝරත හිමි, '''''ශ්‍රී සුමංගල සිංහල ශබ්දකෝෂය 2 ප-ළ 1956''''', — 894 පිටුව * "වදා [https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma6,Kalaba3.pdf]", Munidasa Cumaratunga, ''Sinhalese Through English'', — එඩිය, 6 වෙළුම, 3 කලබ, 68 පිටුව [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] rp51ugekbr3pp8wyh11hs7ym0pzcdvc land 0 134315 235459 214787 2026-06-02T10:50:16Z Lee 19 /* නාම පදය */ 235459 wikitext text/x-wiki {{also|Land|länd|lǟnd|-land}} {{minitoc}} == ඉංග්‍රීසි == {{wikipedia}} === උච්චාරණය === * {{enPR|lănd}}, {{IPA|en|/lænd/}} ** {{IPA|en|[ɫeə̯nd]|[ɫɛə̯nd]|a=US}} *** {{audio|en|en-us-land.ogg|a=US}} ** {{IPA|en|[ɫɛə̯nd]|[læ(ː)nd]|a=CA}} ** {{IPA|en|[lænd]|a=RP}} ** {{IPA|en|[leːnd]|[lænd]|a=AU}} ** {{IPA|en|[land]|a=SSBE}} * {{rhymes|en|ænd|s=1}} === නිරුක්තිය 1 === {{etymon|en|inh|enm>lond>nation|id=area of ground|tree=1}} From {{inh|en|enm|lond}}, {{m|enm|land}}, from {{inh|en|ang|land}}, from {{inh|en|gmw-pro|*land}}, from {{inh|en|gem-pro|*landą||land}}, from {{der|en|ine-pro|*lendʰ-||land, heath|id=land}}. Cognate with {{cog|sco|laund||land}}, {{cog|fy|lân||land}}, {{cog|nl|land||land, country}}, {{cog|de|Land||land, country, state}}, {{cog|no|-}} and {{cog|sv|land||land, country, shore, territory}}, {{cog|is|land||land}}. Non-Germanic cognates include {{cog|sga|lann||heath}}, {{cog|cy|llan||enclosure}}, {{cog|br|lann||heath}}, {{cog|cu|лѧдо}}, from {{cog|sla-pro|*lędo||heath, wasteland}}, {{cog|fr|lande||heath}} and {{cog|sq|lëndinë||heath, grassland}}. ==== නාම පදය ==== {{en-noun|~}} # The [[part]] of [[Earth]] which is not covered by [[ocean]]s or other bodies of [[water]]. #: {{ux|en|Most insects live on '''land'''.}} # [[real estate|Real estate]] or [[landed]] [[property]]; a partitioned and measurable area which is owned and acquired and on which [[buildings]] and [[structures]] can be [[build|built]] and [[erected]]. #: {{ux|en|There are 50 acres of '''land''' in this estate.}} # A [[country]] or [[region]]. #: {{ux|en|They [[come]] from a faraway '''land'''.}} # A person's country of origin and/or [[homeplace]]; [[homeland]]. # The [[soil]], in respect to its nature or quality for [[farming]]. #: {{ux|en|wet '''land'''&emsp;&emsp;&emsp; good or bad '''land''' for growing potatoes}} # {{lb|en|often|in combination}} [[realm]], [[domain]]. #: {{ux|en|I'm going to Disney'''land'''.}} #: {{ux|en|Maybe that's how it works in TV-'''land''', but not in the real world.}} # {{senseid|en|unplowed ground between furrows}} {{lb|en|agriculture}} The [[ground#Noun|ground]] [[leave#Verb|left]] [[unploughed]] between [[furrow#Noun|furrows]]. #: {{syn|en|furlong<id:unplowed ground between furrows>}} # {{senseid|en|portions of a field for ploughing}} {{lb|en|agriculture}} Any of [[several]] [[portion#Noun|portions]] into which a [[field#Noun|field]] is [[divide#Verb|divided]] for [[plough#Verb|ploughing]]. #: {{syn|en|furlong<id:portions of a field for ploughing>}} #: {{cot|en|headland<id:unplowed boundary of a field>|furlong<id:unplowed boundary of a field>}} # {{lb|en|Ireland|colloquial}} A shock or fright. #: {{ux|en|He got an awful '''land''' when the police arrived.}} # {{lb|en|electronics}} A [[conducting]] area on a [[board]] or [[chip]] which can be used for [[connect]]ing [[wire]]s. # On a [[compact disc]] or similar [[recording]] [[medium]], an area of the medium which does not have [[pit]]s. #* {{quote-text|en|year=1935|author=H. Courtney Bryson|title=The Gramophone Record|page=72 |passage=Now, assume that the recording is being done with 100 grooves per inch, and that the record groove is .006 inch wide. This means that the '''land''' on either side on any given groove in the absence of sound waves is .004 inch.}} # {{lb|en|travel}} The non-airline portion of an itinerary. Hotel, tours, cruises, etc. #: {{ux|en|Our city offices sell a lot more '''land''' than our suburban offices.}} # {{lb|en|obsolete}} The ground or [[floor]]. #* {{RQ:Spenser Faerie Queene|book=V|canto=VII|stanza=7|passage=her selfe vppon the '''land''' / She did prostrate}} # {{lb|en|nautical}} The [[lap]] of the [[strake]]s in a [[clinker-built]] [[boat]]; the lap of [[plate]]s in an [[iron]] [[vessel]]; called also [[landing]].<ref>{{R:Knight AMD}}</ref> # In any surface prepared with [[indentation]]s, [[perforation]]s, or [[groove]]s, that part of the surface which is not so treated, such as the level part of a [[millstone]] between the furrows. ## {{lb|en|ballistics}} The space between the rifling grooves in a gun. ##* {{quote-book|en| date=2008-08-01| chapter=Ballistics| author=Lisa Steele| title=Science for Lawyers| editor=Eric York Drogin| publisher=American Bar Association| page=16| pageurl=http://books.google.com/books?id=H4zTATcB70wC&pg=PA16&dq=lands| passage=The FBI maintains a database, the General Rifling Characteristics (GRC) file, which is organized by caliber, number of '''lands''' and grooves, direction of twist, and width of '''lands''' and grooves, to help an examiner figure out the origin of a recovered bullet.}} ##* {{quote-av|en|date=2012-11-15|episode=One Way to Get Off| title=[[w:Elementary (TV series)|Elementary]]| season=1| number=7|actor=Jonny Lee Miller| role=Sherlock Holmes| passage=The human eye is a precision instrument. It can detect grooves and '''lands''' on a slug more efficiently than any computer.}} # {{lb|en|Scotland|historical}} A group of [[dwelling]]s or [[tenement]]s under one [[roof]] and having a common [[entry]]. =====Hyponyms===== {{col4|en|bookland |borderland |brushland |bushland |cloud cuckoo-land |Crown land |Disneyland |downland |dreamland |dry land |[[fantasy land]] ([[fantasyland]]) |farmland |Fiordland |flatland |grassland |herbland |highland |homeland |Hurdland |inland |Lalaland |Levelland |lowland |mainland |midland |moorland |Newfoundland |no man's land |No Man's Land |Northland,northland |outland |overland |pastureland |pineland |playland |plowland,ploughland |Queensland |revenue land |Southland,southland |tableland |TV land |upland |Westland |wildland |wonderland |woodland }} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col|en|Dayak land|land surface|land-surface|adland |airland |aland |aridland |autoland |backland |benchland |Bergisches Land |birthland |blackland |blogland |bogland |bottomland |bowerland |buckshot land |byland |caneland |canyonland |chalkland |Chicagoland |Chink land |chink land |chopstick land |Cleveland |cloud cuckoo land |cloud-cuckoo-land |cloudland |clubland |coastland |common land |copland |cornland |cotland |counterland |cradleland |crash land |croftland |cropland |crown land |cubeland |Curtisland |dairyland |Damaraland |deadland |desertland |do a land-office business |dockland |domed land snail |driftland |dryland |duneland |eastland |edgeland |Egyptland |Elfland |Ellsworth Land |escapeland |estate in land |fairyland |farm land |fatherland |fat of the land |fernland |filmland |Fingoland |fireland |flogging the land |floodland |folkland |foras land |forbyland |Fordlandia |foreland |forestland |Frankland |Freelander |freeman on the land |gameland |gangland |gangsterland |geländeläufer |genderland |ghostland |glebe-land |glory-land |gorseland |Graham Land |grainland |grazeland |Greenland |Groveland |gumland |hayland |headland |heartland |heathland |heteroland |Highland |hipsterland |Hungarland |Iceland |interest in land |island |Jockland |Kirkland |kirkland |Kiwiland |lackland |lakeland |La-La Land |Lala land |la-la land |la-la-land |landability |landable |land acknowledgement |land acknowledgment |land agent |land ahoy |land art |land artist |landbank |landbanking |landbase |landbased |land battleship |land-beaver |land before time |landbirding |landblink |landboc |landbook |landbound |land breeze |land bridge |land bubble |landcare |land clearer |landcover |land crab |land cress |land cruiser |land degradation |land-diving |land diving |land down under |lander |landfall |land-farer |landfarming |landfill |landflood |land force |landform |landfowl |landful |landfyrd |land girl |landgrab |landgrabber |land-grant |land grant |land guard |landguard |land gull |land-held |land ho |landhold |landholder |landholding |landhopper |land ironclad |landish |land-jobber |land-jobbing |landlady |landleaper |land-leech |land legs |landless |landlike |[[land line]], [[landline]] |landliving |landlock |landlocked |land-locked salmon |landlord |landlouper |land-lover |landlubber |landly |landman |land mark |landmark |[[land mass]], [[landmass]] |land mile |[[land mine]], [[landmine]] |landmonger |landocracy |landocrat |land of a thousand hills |land of fruits and nuts |land of milk and honey |land of Nod |land of opportunity |land of plenty |land of steady habits |Land of the Ascendant Sun |land of the free |land of the living |Land of the Long White Cloud |land o' Goshen |land on one's feet |Land o' the Leal |landowner |landowning |Land Park |land patent |landphoon |land pirate |landplane |land poor |land-poor |land quillwort |landrace |landrail |landreeve |land register |land rights |land rights for gay whales |land run |landrush |land rush |land sailing |land sake |land sake alive |land sakes |land sakes alive |land-salamander |landscape |landscraper |landscrip |Land's End |land shark |landshark |land-shark |land-sharking |land shrimp |landsick |land sickness |landside |landslide |landsliding |landslip |land slug |land snail |landspout |landspreading |land spring |land surveyor |land take |land-take |land tax |land the plane |land torpedo |land train |land under |land up over |land-use |[[land use]] (see also [[w:Land_use|land use]]) |landwaiter |landward |landwards |landwhale |land whale |land wind |land with one's bum in the butter |landworker |land yacht |land-yacht |land yachting |law of the land |layland |lay of the land |Levelland |lie of the land |linksland |live off the land |loessland |lotus land |Lotusland |lubberland |magazineland |make land |marchland |markland |Markland |marshland |Mashonaland |Matabeleland |meadowland |mealie land |merland |Midland |mireland |misland |morning-land |morning land |mossland |motherland |muckland |mudland |multiland |my land |Namaqualand |native land |neckland |Netherland |netherlands |Netherlands |never fight a land war in Asia |neverland |never-never land |never start a land war in Asia |noman's land |no-man's land |no-man's-land |nonland |Northumberland |Oakland |O'Higgins Land |Oklahoma land rush |on land |otherlandish |ounceland |oxland |paddyland |parentland |parkland |peatland |pennyland |Pictland |plainland |plotland |Poland |Portland |portland |power in the land |prairieland |promised land |pure land |quangoland |quarterland |rainland |ranchland |rangeland |restaurantland |riceland |Richland |Richlands |rimland |rockland |sabbath of the land |sageland |scabland |scarpland |Schengenland |scrubland |sedgeland |see how the land lies |Seriland |set foot on land |set the land |shackland |shadowland |shareland |shoreland |shrubland |sire-land |skyland |slobland |soapland |soft-land |soft land |spit of land |splash-land |stumpland |Sundaland |swampland |Swaziland |thaneland |theatreland |thirstland |tideland |townland |tract of land |tussockland |userland |valley-land |valleyland |valley land |vineland |washland |wasteland |waste land |waterland |Welshland |westland |wetland |wharfland |wheatland |white land |Wilkes Land |wineland |Wituland |Wolfe-land |Wolfland |womyn's land |Yankee land |yard of land |Zoom-land |Zoom land |Zululand }} ===== පරිවර්තන ===== {{trans-top|part of Earth that is not covered by oceans or other bodies of water}} {{multitrans|data= * Abenaki: {{tt|abe|aki}} * Aché: {{tt|guq|waxu}} * Afrikaans: {{tt+|af|land}} * Albanian: {{tt+|sq|vend|m}} * Arabic: {{tt|ar|بَرّ|f}}, {{tt+|ar|أَرْض|f}}, {{tt|ar|يابِسة|f}} *: Egyptian Arabic: {{tt|arz|أرض|f|tr=ʔarḍ}} * Aramaic: {{tt+|syc|ܐܪܥܐ|f|tr=ʔarʕā}} * Armenian: {{tt+|hy|ցամաք}} * Asturian: {{tt+|ast|tierra|f}} * Bashkir: {{tt|ba|ер|sc=Cyrl}}, {{tt|ba|ҡоро ер|sc=Cyrl}} * Basque: {{tt|eu|lur}} * Belarusian: {{tt|be|зямля́|f}}, {{tt|be|су́ша|f}} * Bengali: {{tt+|bn|ভূমি}}, {{tt+|bn|জমি}}, {{tt+|bn|জমিন}} * Bhojpuri: {{t|bho|जमीन}} * Bikol Central: {{tt+|bcl|daga}} * Blackfoot: {{tt|bla|ksaahko}} * Brunei Malay: {{tt|kxd|darat}} * Bulgarian: {{tt+|bg|земя́|f}}, {{tt+|bg|су́ша|f}} * Burmese: {{tt+|my|ကုန်း}} * Catalan: {{tt+|ca|terra|f}} * Central Atlas Tamazight: {{tt|tzm|ⴰⴽⴰⵍ|m}} * Chamicuro: {{tt|ccc|c̈hijta}} * Cherokee: {{tt|chr|ᎦᏙᎯ}} * Cheyenne: {{tt|chy|ho'e}} * Chinese: *: Mandarin: {{tt+|cmn|土地|tr=tǔdì}}, {{tt+|cmn|陸地|tr=lùdì}} * Cree: {{tt|cr|ᐊᐢᑭᕀ}} * Czech: {{tt+|cs|země|f}} * Danish: {{tt+|da|land|n}} * Dutch: {{tt+|nl|land|n}} * Eastern Bontoc: {{tt|ebk|lota}} * Egyptian: {{t-egy|tꜣ|h=tA:N23*Z1}} * Esperanto: {{tt+|eo|tero}} * Estonian: {{tt+|et|maa}} * Farefare: {{tt|gur|tɩŋa}}, {{tt|gur|tẽŋa}} * Faroese: {{tt|fo|land|n}} * Fijian: {{tt|fj|vanua}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|terre|f}} * Galician: {{tt+|gl|terra|f}} * Georgian: {{tt|ka|მიწა}}, {{tt|ka|ხმელეთი}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} *: Rhine Franconian: {{tt|gmw-rfr|Lond}} {{qualifier|Palatine}} * Greek: {{tt+|el|ξηρά|f}}, {{tt+|el|γη|f}} * Guaraní: {{tt+|gn|yvy}} * Gujarati: {{tt+|gu|જમીન|f|tr=jamīn}} * Hawaiian: {{tt|haw|honua}} * Hebrew: {{tt+|he|אֶרֶץ|f|tr=érets}}, {{tt+|he|אֲדָמָה|f|tr=adamá}}, {{t+|he|יַבָּשָׁה|f|tr=yabashá}} * Higaonon: {{tt|mba|bugta}} * Hindi: {{tt+|hi|भूमि|f}}, {{tt+|hi|ज़मीन|f}} * Hungarian: {{tt+|hu|föld}}, {{tt+|hu|szárazföld}} * Icelandic: {{tt+|is|land}} * Ido: {{tt+|io|lando}} * Igbo: {{tt|ig|ala}} * Ilocano: {{tt|ilo|daga}} * Indonesian: {{tt+|id|tanah}}, {{tt+|id|bumi}}, {{tt+|id|darat}} * Ingrian: {{t|izh|maa}} * Istriot: {{tt|ist|tiera|f}} * Italian: {{tt+|it|terra|f}} * Japanese: {{tt+|ja|土|tr=つち, tsuchi}}, {{tt+|ja|土地|tr=とち, tochi}}, {{tt+|ja|陸地|tr=りくち, rikuchi}} * Khmer: {{tt+|km|ដី}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|뭍}}, {{tt+|ko|토지(土地)}}, {{tt+|ko|육지}}, {{tt+|ko|륙지}} {{qualifier|North Korea}} * Kurdish: *: Central Kurdish: {{tt+|ckb|خاک}} * Ladin: {{tt|lld|tera|f}} * Lakota: {{tt|lkt|makȟóčhe}} * Lao: {{tt+|lo|ດິນ}}, {{tt+|lo|ພູ}} * Latin: {{tt+|la|terra|f}} * Latvian: {{tt+|lv|zeme|f}}, {{tt+|lv|sauszeme|f}}, {{tt|lv|cietzeme|f}} * Lithuanian: {{tt|lt|sausuma|f}}, {{tt+|lt|žemė|f}} * Lü: {{tt|khb|ᦡᦲᧃ}} * Macedonian: {{tt+|mk|земја|f}} * Malay: {{tt+|ms|tanah}}, {{tt+|ms|darat}}, {{tt+|ms|bumi}} * Maltese: {{tt|mt|art}} * Manchu: {{tt|mnc|ᠨᠠ}} * Maori: {{tt+|mi|whenua}} * Marathi: {{tt|mr|जमीन|f|tr=j̈amīn}} * Mazanderani: {{tt|mzn|زمین|tr=zemin}} * Minangkabau: {{t+|min|tanah}} * Mongolian: *: Cyrillic: {{tt+|mn|газар}}, {{tt+|mn|шороо}}, {{tt+|mn|хөрс}} * Nahuatl: *: Classical: {{tt|nci|tlalli}} * Navajo: {{tt|nv|kéyah}} * Nepali: {{tt|ne|जमिन|tr=jamin}} * Nheengatu: {{tt|yrl|retama}} * North Frisian: {{qualifier|Mooring}} {{tt|frr|lönj|n}}; {{qualifier|Föhr-Amrum}} {{tt|frr|lun|n}}; {{qualifier|Helgoland}} {{tt|frr|Lun|n}}, {{tt|frr|Lön}} {{qualifier|Sylt}} * Northern Thai: {{t-needed|nod}} * Norwegian: *: Bokmål: {{tt+|nb|land|n}} * Occitan: {{tt+|oc|tèrra}} * Ojibwe: {{tt|oj|aki}}, {{tt|oj|ᐊᑭ}} * Old Church Slavonic: {{tt|cu|землꙗ|f}} * Old East Slavic: {{tt|orv|землꙗ|f}} * Old English: {{tt+|ang|land|n}} * Old Javanese: {{tt|kaw|rat}} * Old Saxon: {{tt|osx|land|n}} * Oromo: {{tt|om|lafa}} * Ottawa: {{tt|otw|ki}} * Persian: *: Iranian Persian: {{tt|fa-ira|سَرْزَمین}} * Plautdietsch: {{tt+|pdt|Launt|n}} * Polish: {{tt+|pl|ziemia|f}}, {{tt+|pl|ląd|m}} * Portuguese: {{tt+|pt|terra|f}} * Punjabi: {{tt|pa|ਜ਼ਮੀਨ|tr=zamīn}} * Romanian: {{tt+|ro|uscat|n}}, {{tt+|ro|pământ|n}} * Romansch: {{tt|rm|terra|f}}, {{tt|rm|tiara|f}} * Russian: {{tt+|ru|земля́|f}}, {{tt+|ru|зе́мли|p}}, {{qualifier|as apposed to oceans}} {{tt+|ru|су́ша|f}} * Sanskrit: {{tt+|sa|भूमि|f}} * Sardinian: {{tt|sc|terra|f}} * Scots: {{tt|sco|laund}} * Scottish Gaelic: {{tt|gd|talamh|m}}, {{tt|gd|tìr|f}} * Serbo-Croatian: *: Cyrillic: {{tt|sh|зѐмља|f}}, {{tt|sh|ко̏пно|n}} *: Roman: {{tt+|sh|zèmlja|f}}, {{tt+|sh|kȍpno|n}} * Shan: {{t-needed|shn}} * Sicilian: {{tt+|scn|terra|f}} * Slovak: {{tt+|sk|zem|f}} * Slovene: {{tt+|sl|kopno|n}}, {{tt+|sl|zemlja|f}} * Southern Altai: {{t|alt|јер}} * Spanish: {{tt+|es|tierra|f}} * Sundanese: {{tt+|su|lemah}} * Swahili: {{tt+|sw|ardhi|c9}} * Swedish: {{tt+|sv|land|n}} * Tagalog: {{tt+|tl|lupa}} * Telugu: {{tt+|te|భూమి}} * Thai: {{tt+|th|ดิน}}, {{tt+|th|ภู}} * Tocharian A: {{tt|xto|ype}} * Tocharian B: {{tt|txb|yapoy}} * Tongan: {{tt|to|fonua}} * Turkish: {{tt+|tr|kara}} * Ugaritic: {{tt|uga|𐎀𐎗𐎕}} * Ukrainian: {{tt+|uk|земля́|f}}, {{tt|uk|су́ша|f}} * Urdu: {{tt+|ur|زَمِین|f}} * Venetan: {{tt|vec|tera|f}} * Vietnamese: {{tt+|vi|đất}} * Vilamovian: {{tt|wym|łaond|n}} * Welsh: {{tt+|cy|tir|m}} * West Frisian: {{tt+|fy|lân}} * Western Apache: {{tt|apw|kiiya}}, {{tt|apw|bíniʼ}} * Yankunytjatjara: {{t|kdd|manta}} * Yiddish: {{tt|yi|ארץ|f|tr=erets}}, {{tt|yi|לאַנד|n}}, {{tt|yi|יבשה|f|tr=yaboshe}} * Yup'ik: {{tt|esu|nuna}} * Zhuang: {{tt|za|dieg}} {{trans-bottom}} {{trans-top|real estate or landed property}} * Albanian: {{tt+|sq|truall|m}}, {{tt+|sq|tokë|f}} * Apache: *: Western Apache: {{tt|apw|bíniʼ}} * Asturian: {{t|ast|campa|f}}, {{t+|ast|terrén|n}}, {{t+|ast|finca|f}}, {{t|ast|posesión|f}}, {{t|ast|propiedá|f}}, {{t|ast|facienda|f}}, {{t|ast|fundu|m}} * Bashkir: {{tt|ba|ер|sc=Cyrl}} * Bengali: {{tt+|bn|জমি}}, {{tt+|bn|জমিন}} * Bikol Central: {{tt+|bcl|daga}} * Brunei Malay: {{tt|kxd|tanah}} * Bulgarian: {{tt|bg|позе́млена со́бственост|f}}, {{tt+|bg|земя́|f}} * Catalan: {{tt+|ca|terra}}, {{tt+|ca|terreny}} * Cheyenne: {{tt|chy|ho'e}} * Dutch: {{tt+|nl|land|n}}, {{tt+|nl|grond|m}}, {{tt+|nl|land|n}} * Estonian: {{tt+|et|maa}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|terre|f}}, {{tt+|fr|terrain|m}} * Georgian: {{tt|ka|მიწა}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} *: Rhine Franconian: {{tt|gmw-rfr|Lond}} {{qualifier|Palatine}} * Greek: {{tt+|el|γαίες|f-p}}, {{tt+|el|εκτάσεις|f-p}}, {{tt+|el|κτήματα|n-p}} * Hawaiian: {{tt|haw|ʻāina}} * Ingrian: {{t|izh|maa}}, {{t|izh|mantu}} * Japanese: {{tt+|ja|不動産|tr=ふどうさん, fudōsan}}, {{tt+|ja|土地|tr=とち, tochi}} * Javanese: {{tt+|jv|lemah}} {{qualifier|ngoko}}, {{tt|jv|siti}} {{qualifier|krama}} * Kabuverdianu: {{tt|kea|txon}} * Khmer: {{tt+|km|ដី}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|토지(土地)}}, {{tt+|ko|부동산(不動産)}} * Lao: {{t-needed|lo}} * Lithuanian: {{tt+|lt|žemė|f}} * Malay: {{tt+|ms|tanah}} * Marathi: {{t|mr|जमीन|f}} * Nahuatl: {{tt+|nah|tlālli}}, {{tt+|nah|tlali}} * Ottoman Turkish: {{t|ota|طوپراق|tr=toprak}} * Portuguese: {{tt+|pt|terra|f}}, {{tt+|pt|propriedade|f}}, {{tt+|pt|terreno|m}} * Romanian: {{tt+|ro|teren|n}}, {{tt+|ro|pământ|n}} * Russian: {{tt+|ru|земля́|f}}, {{tt+|ru|недви́жимость|f}}, {{tt|ru|[[земельный|земе́льная]] [[со́бственность]]|f}} * Serbo-Croatian: *: Cyrillic: {{tt|sh|по́сед|m}}, {{tt|sh|по́сјед|m}} *: Roman: {{tt+|sh|pósed|m}}, {{tt+|sh|pósjed|m}} * Spanish: {{t+|es|propiedad|f}}, {{t+|es|terreno|m}}, {{t+|es|posesión|f}}, {{t+|es|hacienda|f}}, {{t+|es|fundo|m}}, {{t+|es|terruño|m}}, {{t+|es|baldío|m}}, {{t+|es|predio|m}}, {{t+|es|finca|f}}, {{t+|es|conuco|m}} * Swedish: {{tt+|sv|mark|c}} * Tagalog: {{tt|tl|lupain}} * Thai: {{t-needed|th}} {{trans-bottom}} {{trans-top|country or region}} * Afrikaans: {{tt+|af|land}} * Albanian: {{tt+|sq|tokë|f}} * Arabic: {{tt|ar|بِلَاد|p}}, {{tt+|ar|أَرْض|f}}, {{tt+|ar|بَلَد|m}} * Armenian: {{tt+|hy|երկիր}} * Asturian: {{t+|ast|país|m}}, {{t+|ast|tierra|f}} * Belarusian: {{tt+|be|краі́на|f}}, {{tt|be|зямля́|f}} * Bengali: {{tt+|bn|দেশ}} * Bulgarian: {{tt+|bg|страна́|f}}, {{tt+|bg|земя́|f}} * Burmese: {{tt+|my|နိုင်ငံ}} * Catalan: {{tt+|ca|terra}} * Cherokee: {{tt|chr|ᎦᏙᎯ}} * Chinese: *: Cantonese: {{tt|yue|國家|tr=gwok3 gaa1}} *: Dungan: {{tt|dng|гоцзя}} *: Mandarin: {{tt+|cmn|國家|tr=guójiā}} * Corsican: {{tt|co|paesu|m}} * Czech: {{tt+|cs|země|f}} * Danish: {{tt+|da|land|c}} * Dolgan: {{tt|dlg|һир}} * Dutch: {{tt+|nl|land|n}} * Erzya: {{tt|myv|мастор}}, {{tt|myv|мода}} * Esperanto: {{tt+|eo|lando}} * Estonian: {{tt+|et|maa}}, {{tt+|et|riik}} * Farefare: {{tt|gur|tɩŋa}}, {{tt|gur|tẽŋa}} * Faroese: {{tt|fo|land|n}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|contrée|f}}, {{tt+|fr|pays|m}} * Galician: {{tt+|gl|terra|f}}, {{tt+|gl|país|m}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} *: Rhine Franconian: {{tt|gmw-rfr|Lond}} {{qualifier|Palatine}} * Gothic: {{tt|got|𐌻𐌰𐌽𐌳|n}} * Greek: {{tt+|el|χώρα|f}} *: Ancient: {{tt|grc|χώρα|f}} * Hawaiian: {{tt|haw|ʻāina}} * Hindi: {{tt+|hi|देश|m}}, {{tt+|hi|मुल्क|m}} * Icelandic: {{tt+|is|land|n}} * Indonesian: {{tt+|id|negara}}, {{tt+|id|negeri}} * Ingrian: {{t|izh|maa}}, {{t|izh|riikki}} * Italian: {{tt+|it|terra|f}} * Japanese: {{tt+|ja|領土|tr=りょうど, ryōdo}}, {{tt+|ja|国土|tr=こくど, kokudo}}, {{tt+|ja|国家|tr=こっか, kokka}}, {{tt+|ja|国|tr=くに, kuni}} * Kashmiri: {{tt|ks|مُلک}} * Khmer: {{tt+|km|ប្រទេស}}, {{tt+|km|បទេស}}, {{tt+|km|រដ្ឋ}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|나라}}, {{tt+|ko|국가(國家)}} * Kurdish: *: Central Kurdish: {{tt+|ckb|وڵات}} *: Northern Kurdish: {{tt+|kmr|welat|m}} * Lakota: {{tt|lkt|makȟóčhe}} * Lao: {{tt|lo|ປະເທດ}}, {{tt+|lo|ເມືອງ}} * Latvian: {{tt+|lv|zeme|f}} * Lithuanian: {{tt+|lt|kraštas|m}}, {{tt+|lt|šalis|f}} * Lutuv: {{t|clt|ruo}} * Luxembourgish: {{tt+|lb|Land|n}} * Macedonian: {{tt+|mk|земја|f}} * Malagasy: {{tt+|mg|tany}} * Malay: {{tt+|ms|negara}}, {{tt+|ms|nasional}} * Marathi: {{t+|mr|देश|m}}, {{t|mr|भूमी|f}} * Mazanderani: {{tt|mzn|سامون|tr=samun}} * Mongolian: *: Cyrillic: {{tt+|mn|газар}}, {{tt+|mn|орон}} * Moore: {{tt|mos|tenga}}, {{tt|mos|tẽnga}} * Navajo: {{tt|nv|kéyah}} * Ngarrindjeri: {{tt|nay|ruwe}} * Nhengatu: {{tt|yrl|retama}} * North Frisian: {{tt|frr|lönj|n}} {{qualifier|Mooring}}, {{tt|frr|Lun|n}} {{qualifier|Heligolandic}} * Norwegian: *: Bokmål: {{tt+|nb|land|n}} * Ojibwe: {{tt|oj|aki}} * Old Church Slavonic: *: Cyrillic: {{tt|cu|землꙗ|f}}, {{tt|cu|страна|f}} * Old East Slavic: {{tt|orv|землꙗ|f}}, {{tt|orv|краина|f}} * Old English: {{tt+|ang|land|n}} * Ottoman Turkish: {{t|ota|ایل|tr=il}}, {{t|ota|طوپراق|tr=toprak}}, {{t|ota|ارض|tr=arz}}, {{t|ota|تراب|tr=türâb}}, {{t|ota|ناحیه|tr=nâhiye}} * Pannonian Rusyn: {{t|rsk|жем|f}} * Persian: *: Iranian Persian: {{tt|fa-ira|سَرْزَمین}}, {{tt|fa-ira|کِشْوَر}}, {{tt+|fa-ira|بوم}}, {{tt+|fa-ira|سامان}} * Polish: {{tt+|pl|kraj|m}}, {{tt+|pl|kraina|f}}, {{tt+|pl|ziemia|f}} * Portuguese: {{tt+|pt|terra|f}} * Quechua: {{tt|qu|hallpa}}, {{tt|qu|marka}} * Romanian: {{tt+|ro|țară|f}} * Russian: {{tt+|ru|страна́|f}}, {{tt+|ru|земля́|f}}, {{tt+|ru|край|m}} * Saterland Frisian: {{tt|stq|Lound|n}} * Scottish Gaelic: {{tt|gd|talamh|m|f}}, {{tt|gd|tìr|f}} * Serbo-Croatian: *: Cyrillic: {{tt|sh|зѐмља|f}} *: Roman: {{tt+|sh|zèmlja|f}} * Sindhi: {{tt|sd|ملڪ}} * Sinhalese: {{tt+|si|රට}} * Slovak: {{tt+|sk|krajina|f}}, {{tt+|sk|zem|f}} * Slovene: {{tt+|sl|dežela|f}}, {{tt+|sl|zemlja|f}} * Southern Altai: {{t|alt|јер}} * Spanish: {{tt+|es|patria|f}}, {{tt+|es|país|m}} * Swahili: {{tt+|sw|nchi}} * Swedish: {{tt+|sv|land|n}} * Tamil: {{tt+|ta|நாடு}}, {{tt+|ta|தேசம்}} * Taos: {{tt|twf|pǫ̏ʼóna}} * Thai: {{tt+|th|ประเทศ}}, {{tt+|th|เมือง}} * Turkish: {{t+|tr|ülke}} * Ugaritic: {{tt|uga|𐎈𐎆𐎚}}, {{tt|uga|𐎀𐎗𐎕}} * Ukrainian: {{tt+|uk|краї́на|f}}, {{tt+|uk|земля́|f}} * Urdu: {{tt|ur|دیش|m}}, {{tt|ur|مُلْک|m}} * Vietnamese: {{tt+|vi|quốc gia}} * Welsh: {{tt+|cy|tir|m}}, {{tt+|cy|gwlad|f}}, {{tt+|cy|tiriogaeth|f}} * West Frisian: {{tt+|fy|lân|n}} * Yakut: {{tt|sah|сир}} * Yiddish: {{tt|yi|לאַנד|n}} * Yup'ik: {{tt|esu|nuna}} {{trans-bottom}} {{trans-top|someone's homeplace}} * Albanian: {{tt+|sq|vend|m}} * Asturian: {{t|ast|patria|f}}, {{t+|ast|tierra|f}} * Bikol Central: {{tt|bcl|dagang tinubuan}} * Chinese: *: Cantonese: {{tt|yue|祖國|tr=zou2 gwok3}} *: Mandarin: {{tt+|cmn|祖國|tr=zǔguó}} * Czech: {{tt+|cs|vlast|f}} * Dutch: {{tt+|nl|land|n}}, {{tt+|nl|vaderland|n}} * Estonian: {{tt+|et|kodumaa}} * Finnish: {{tt+|fi|kotimaa}}, {{tt+|fi|kotiseutu}} * French: {{tt+|fr|pays|m}}, {{tt+|fr|patrie|f}} * German: {{tt+|de|Vaterland|n}} * Japanese: {{tt+|ja|祖国|tr=そこく, sokoku}} * Korean: {{tt+|ko|조국}} * Latin: {{tt+|la|patria}} * Malagasy: {{tt+|mg|tanindrazana}} * Portuguese: {{tt+|pt|terra|f}} * Slovak: {{tt|sk|vlasť|f}} * Spanish: {{t+|es|patria|f}}, {{t+|es|tierra|f}} * Swedish: {{tt+|sv|fosterland}} * Vietnamese: {{tt+|vi|tổ quốc}} {{trans-bottom}} {{trans-top|ground that is suitable for farming}} * Albanian: {{tt+|sq|arë}} * Asturian: {{t|ast|barrial|m}}, {{t|ast|suqueru|m}}, {{t|ast|vega|f}} * Bengali: {{tt+|bn|জমি}}, {{tt+|bn|জমিন}} * Bikol Central: {{tt+|bcl|daga}} * Bulgarian: {{tt+|bg|земя|f}} * Burmese: {{tt+|my|မြေ}} * Buryat: {{tt|bua|хүдөө}} * Cherokee: {{tt|chr|ᎦᏙᎯ}} * Chinese: *: Mandarin: {{tt+|cmn|土地|tr=tǔdì}}, {{tt+|cmn|農地|tr=nóngdì}} * Dutch: {{tt+|nl|grond|f}} * Estonian: {{tt+|et|maa}} * Faroese: {{tt+|fo|jørð|f}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|terre|f}} * Galician: {{tt+|gl|terra|f}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} * Icelandic: {{tt+|is|jörð|f}} * Ingrian: {{t|izh|maa}} * Italian: {{tt+|it|terreno|m}}, {{tt+|it|distesa|f}}, {{tt+|it|appezzamento|m}} * Japanese: {{tt+|ja|土地|tr=とち, tochí}}, {{tt+|ja|農地|tr=のうち, nōchi}} * Javanese: {{tt+|jv|lemah}} {{qualifier|ngoko}}, {{tt|jv|siti}} {{qualifier|krama}} * Khmer: {{tt+|km|ដី|tr=dəy}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|토지(土地)}} * Mongolian: {{tt+|mn|хөдөө}} * Portuguese: {{tt+|pt|terra|f}} * Quechua: {{tt+|qu|allpa}} * Romanian: {{tt+|ro|pământ|n}} {{qualifier|arabil}}, {{tt+|ro|teren|n}} {{qualifier|cultivabil}} * Russian: {{tt+|ru|земля́|f}} * Serbo-Croatian: {{tt+|sh|zèmlja|f}} * Spanish: {{t+|es|vega|f}} * Swedish: {{tt+|sv|land|n}} {{trans-bottom}} {{trans-see|fright}} {{trans-top|electronics: conducting area on a board or chip}} * Finnish: {{tt|fi|johdinkuvio}} {{trans-bottom}} {{trans-top|in a compact disc, area which does not have pits}} * Finnish: {{tt+|fi|tasanko}} {{trans-bottom}} {{trans-top|travel: non-airline portion of an itinerary}} {{trans-bottom}} {{trans-top|space between the rifling grooves in a gun}} * Dutch: {{tt+|nl|trek|m}} * Finnish: {{tt+|fi|harja}} * Russian: {{tt|ru|[[по́ле]] [[нарез|наре́за]]|n}} }}<!-- close {{multitrans}} --> {{trans-bottom}} ==== ක්‍රියා පදය ==== {{en-verb}} # {{lb|en|intransitive}} To descend to a [[surface]], especially from the air. #: ''The plane is about to '''land'''''. # {{lb|en|dated}} To [[alight]], to descend from a vehicle. #* '''1859''', “Rules adopted by the Sixth Avenue Railway, N. Y.”, quoted in Alexander Easton, ''A Practical Treatise on Street or Horse-Power Railways'', page 108: #*: 10. You will be civil and attentive to passengers, giving proper assistance to ladies and children getting in or out, and never start the car before passengers are fairly received or '''landed'''. # {{lb|en|intransitive}} To come into rest. # {{lb|en|intransitive}} To arrive on land, especially a [[shore]] or [[dock]], from a body of water. #* {{quote-book|en|url=https://archive.org/details/pictorialhistory02taip/|title=A Pictorial History of the Republic of China: Its Founding and Development|volume=II|year=1981|location=Taipei|publisher=Modern China Press|OCLC=8883106 |page=303|pageurl=https://archive.org/details/pictorialhistory02taip/page/303/|column=1|text=Tatan and Erhtan are two small islands in the sea southwest of Kinmen.{{...}}A contingent of some 30 Communist troops tried to '''land''' at Erhtan, but were disarmed by Government defenders.}} # {{lb|en|transitive}} To bring to land. #: ''It can be tricky to '''land''' a helicopter''. #: ''Use the net to '''land''' the fish.'' #* {{RQ:Shakespeare Henry 6-3|III|iii|passage=I'll undertake to '''land''' them on our coast.}} # {{lb|en|transitive|informal}} To capture or arrest. #* {{quote-journal|1=en|date=June 1920|journal=w:The Electrical Experimenter|location=New York| page=151|column=3|passage=`He told me that he was certain that Coates shot at him. We threw out a drag and '''landed''' Coates within an hour.'}} # {{lb|en|transitive}} To [[acquire]]; to [[secure]]. #: {{ux|en|She '''landed''' a job at the company.}} #* {{quote-journal|en|date=May 5, 2012| author=Phil McNulty| title=Chelsea 2-1 Liverpool| work=BBC Sport| url=http://www.bbc.co.uk/sport/0/football/17878435| passage=As Di Matteo celebrated and captain John Terry raised the trophy for the fourth time, the Italian increased his claims to become the permanent successor to Andre Villas-Boas by '''landing''' a trophy.}} #* {{quote-journal|en|date=2024 May 1|title=Network News: Danes plan fully automated trains|journal=RAIL|issue=1008|page=18|text=Siemens has '''landed''' a contract to upgrade signalling on the entire 170km (105-mile) S-Bane suburban network in Copenhagen to pave the way for fully automated trains.}} # {{lb|en|slang|transitive}} To succeed in having sexual relations with; to [[score]] #: {{ux|en|Too ugly to ever '''land''' a chick}} # {{lb|en|transitive}} (''of a blow'') To [[deliver]]. #: ''If you '''land''' a knockout blow, you’ll win the match'' # {{lb|en|intransitive}} (''of a punch'') To [[connect]] #: {{ux|en|If the punches '''land''', you might lose a few teeth!}} # {{lb|en|intransitive}} To go down well with an audience. #: {{ux|en|Some of the comedian's jokes failed to '''land'''.}} #* {{quote-av |en |date=January 13, 2023 |author=Anonymous ("Jackal Comment") |time=11:08 |title=CORRECTIONS Episode 68: Week of Monday, January 9 |series=w:Late Night with Seth Meyers |publisher=w:YouTube |url=https://www.youtube.com/watch?v=ayvrCwR5nrg |text=We told an Amelia Earhart joke yesterday- did not go great with the audience. Someone wrote: "You can't be surprised when an Amelia Earhart joke doesn't '''land'''."}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col4|en|title=terms derived from the verb ''land'' |black land |crash-land|land down |hard-land |hard land |soft-land |soft land |land on one's bridge |land up |land in someone's lap |reland|land on|land upon|land with }} ===== පරිවර්තන ===== {{trans-top|to descend to a surface, especially from the air}}{{multitrans|data= * Albanian: {{t-needed|sq}} * Arabic: {{tt|ar|هَبَطَ}} * Armenian: {{t-needed|hy}} * Asturian: {{t+|ast|aterrizar}}, {{t+|ast|posar}} * Azerbaijani: {{tt+|az|enmək}} * Basque: {{t|eu|lurreratu}} * Belarusian: {{tt|be|прызямля́цца|impf}}, {{tt|be|прызямлі́цца|pf}} * Breton: {{tt+|br|douarañ}} * Bulgarian: {{tt|bg|приземявам|impf|alt=приземя́вам се}}, {{tt|bg|приземя|pf|alt=приземя́ се}} * Catalan: {{tt+|ca|aterrar}}, {{t|ca|aterrar-se}} * Chinese: *: Mandarin: {{tt+|cmn|著地}}, {{tt|cmn|着地|tr=zhuódì}}, {{tt+|cmn|著陸}}, {{tt+|cmn|着陆|tr=zhuólù}} * Czech: {{tt|cs|přistávat|impf}}, {{tt+|cs|přistát|pf}} * Danish: {{tt+|da|lande}} * Dutch: {{tt+|nl|landen}} * Esperanto: {{tt|eo|surteriĝi}}, {{tt|eo|alteriĝi}} * Estonian: {{tt|et|maanduma}} * Ewe: {{tt|ee|dze}} * Finnish: {{tt+|fi|laskeutua}} * French: {{tt+|fr|poser|alt=se poser}}, {{tt+|fr|atterrir}} * Galician: {{tt+|gl|pousar}}, {{tt+|gl|aterrar}} * Georgian: {{t-needed|ka}} * German: {{tt+|de|landen}} * Greek: {{tt+|el|προσγειώνομαι}} * Hebrew: {{tt+|he|נָחַת|tr=nakhát}} * Hindi: {{tt|hi|अवतरण करना}}, {{tt+|hi|उतरना}} * Hungarian: {{tt+|hu|leszáll}}, {{tt+|hu|landol}} * Icelandic: {{tt|is|lenda}} * Irish: {{t|ga|tuirling}} * Italian: {{t+|it|atterrare}} * Japanese: {{tt+|ja|着陸|alt=着陸する|tr=ちゃくりくする, chakurikú suru}}, {{tt+|ja|上陸|alt=上陸する|tr=じょうりくする, jōriku suru}} * Kabuverdianu: {{tt|kea|atera}}, {{tt|kea|aterrá}} * Khmer: {{tt+|km|ចត}}, {{tt+|km|ចុះ}}, {{tt|km|ចុះចត|tr=coh cɑɑt}} * Korean: {{tt+|ko|내리다}}, {{tt+|ko|착륙하다}} * Lao: {{tt|lo|ລົງ}} * Latvian: {{tt|lv|nolaisties}} * Lithuanian: {{tt|lt|nusileisti}}, {{tt|lt|nutūpti}} * Malay: {{tt+|ms|darat}}, {{tt|ms|mendarat}} * Maori: {{tt+|mi|tau}} * Norwegian: *: Bokmål: {{tt+|nb|lande}} * Ojibwe: {{tt|oj|boonii}} * Polish: {{tt+|pl|lądować|impf}}, {{tt+|pl|wylądować|pf}} * Portuguese: {{tt+|pt|aterrar}}, {{tt+|pt|pousar}}, {{tt+|pt|aterrissar}} * Romanian: {{tt+|ro|ateriza}} * Russian: {{tt+|ru|приземля́ться|impf}}, {{tt+|ru|приземли́ться|pf}} * Slovene: {{tt+|sl|pristati|pf}} * Spanish: {{tt+|es|aterrizar}}, {{q|on Mars}} {{tt+|es|amartizar}}, {{q|on the Moon}} {{tt+|es|alunizar}} * Swedish: {{tt+|sv|landa}} * Telugu: {{tt|te|వాలిపో}} * Thai: {{tt+|th|ลง}} * Tibetan: {{tt|bo|འབབ་པ}} * Turkish: {{tt+|tr|inmek}} * Ukrainian: {{tt|uk|приземля́тися|impf}}, {{tt|uk|приземли́тися|pf}} * Vietnamese: {{tt+|vi|hạ cánh}} * Walloon: {{t+|wa|ateri}}, {{t|wa|si rabate}} {{qualifier|birds}} * Welsh: {{tt+|cy|glanio}} * Yiddish: {{tt|yi|לאַנדן}} {{trans-bottom}} {{trans-top|to come into rest}} * Finnish: {{tt+|fi|asettua}} {{trans-bottom}} {{trans-top|to arrive at land, especially a shore, or a dock, from a body of water}} * Asturian: {{t|ast|terrar}}, {{t|ast|atracar}} * Bulgarian: {{tt+|bg|дебарки́рам|impf|pf}} * Catalan: {{tt+|ca|atracar}} * Chinese: *: Mandarin: {{tt+|cmn|登陸|tr=dēnglù}}, {{tt+|cmn|上陸|tr=shànglù}} * Czech: {{tt+|cs|přistát}} * Esperanto: {{tt|eo|alteriĝi}}, {{tt|eo|albordiĝi}} * Finnish: {{tt|fi|nousta maihin}} * French: {{tt+|fr|aborder}} * Georgian: {{t-needed|ka}} * Japanese: {{tt+|ja|上陸|tr=じょうりくする, jōriku suru|alt=上陸する}} * Korean: {{tt+|ko|닿다}}, {{tt|ko|상륙하다}} * Latin: {{tt|la|egredior}} * Malay: {{tt+|ms|darat}}, {{tt|ms|mendarat}} * Maori: {{tt|mi|mahuta}}, {{tt|mi|eke}}, {{tt|mi|ū}} * Middle English: {{tt|enm|londen}}, {{tt|enm|lenden}} * Norman: {{tt|nrf|aborder}} * Polish: {{tt|pl|dobić do brzegu}} * Portuguese: {{tt+|pt|desembarcar}} * Russian: {{tt+|ru|выса́живаться|impf}}, {{tt+|ru|вы́садиться|pf}}, {{tt+|ru|прича́ливать|impf}}, {{tt+|ru|прича́лить|pf}} * Slovene: {{tt+|sl|pristati}} * Spanish: {{tt+|es|aterrar}}, {{t+|es|atracar}} * Swedish: {{tt+|sv|landa}}, {{tt+|sv|lägga till}} * Turkish: {{tt+|tr|inmek}} * Yiddish: {{tt|yi|לאַנדן}} {{trans-bottom}} {{trans-top|to bring to land}} * Asturian: {{t+|ast|aterrizar}} * Danish: {{tt+|da|lande}} * Dutch: {{t+check|nl|landen|alt=doen landen}} <!-- was "doen [[landen]]" - assumed inflected form or vocalised spelling; please verify if linking is acceptable. see [[User:Kephir/gadgets/xte#Translation_fixing]] -->, {{t-check|nl|[[aan]] [[de]] [[grond]] [[zetten]]}} <!-- was "aan de grond zetten" - assumed sum-of-parts; if an idiom, remove the wikilinks to the individual words. see [[User:Kephir/gadgets/xte#Translation_fixing]] --> * Esperanto: {{tt|eo|albordigi}}, {{tt|eo|alterigi}} * Estonian: {{tt|et|maandama}} * Finnish: {{tt|fi|[[tuoda]] [[maihin]]}}; {{tt+|fi|laskeutua}} {{qualifier|of aircraft}} * French: {{tt+|fr|poser}} * Georgian: {{t-needed|ka}} * German: {{tt+|de|landen}} * Greek: {{tt+|el|προσγειώνω}} * Hebrew: {{tt|he|הנחית|tr=hinkhít}} * Japanese: {{t+check|ja|着陸|alt=着陸する|tr=[[ちゃくりく]][[する]], chakuriku suru}}, {{t-check|ja|[[上陸]][[させる]]|tr=[[じょうりく]][[させる]], jōriku saseru}} * Korean: {{tt+|ko|내리다}}, {{qualifier|for cargo}} {{tt+|ko|부리다}} * Maori: {{tt|mi|whakaū}} * Middle English: {{tt|enm|londen}} * Norwegian: {{tt+|no|lande}} * Portuguese: {{tt+|pt|aterrissar}}, {{tt+|pt|aterrar}} * Russian: {{tt+|ru|выса́живать|impf}}, {{tt+|ru|вы́садить|pf}} {{qualifier|usually of people}}, {{tt+|ru|выгружа́ть|impf}}, {{tt+|ru|вы́грузить|pf}}, {{tt+|ru|приземля́ть|impf}}, {{tt+|ru|приземли́ть|pf}} {{qualifier|aircraft}} * Spanish: {{tt+|es|aterrizar}} * Swedish: {{tt+|sv|landa}}, {{tt+|sv|föra}} {{tt+|sv|i}} {{tt+|sv|land}} * Thai: {{tt|th|เครื่องบินลงสู่พื้น|tr=krêuang bin long sòo péun}} * Turkish: {{tt+|tr|indirmek}} * Yiddish: {{tt|yi|לאַנדן}} {{trans-bottom}} {{trans-top|to acquire; to secure}} * Catalan: {{t+|ca|pescar}} * Finnish: {{t|fi|[[hankkia]] [[itselleen]]}} * German: {{t|de|an Land ziehen}} * Irish: {{t+|ga|faigh}} }}<!-- close {{multitrans}} --> {{trans-bottom}} {{trans-see|to deliver|deliver}} === නිරුක්තිය 2 === From {{inh|en|enm|*land}}, from {{inh|en|ang|hland}}. More at {{m|en|lant}}. ==== නාම පදය ==== {{en-noun|-}} # [[lant]]; [[urine]] === මූලාශ්‍ර === <references/> * {{R:Webster 1913}} {{catlangname|en|ergative verbs}} {{C|en|Landforms}} ==Afrikaans== === නිරුක්තිය === {{root|af|ine-pro|*lendʰ-|id=land}} From {{inh|af|nl|land}}, from {{inh|af|odt|lant}}, from {{inh|af|gem-pro|*landą}}, from {{inh|af|ine-pro|*lendʰ-||land, heath|id=land}}. === උච්චාරණය === * {{IPA|af|/lant/|[länt]|[lant]}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-land.wav}} === නාම පදය === {{af-noun|lande}} # [[country]]; [[nation]] == ඩෙන්මාර්ක == === උච්චාරණය === * {{IPA|da|/lanˀ/|[lanˀ]}} * {{rhymes|da|and|s=1}} === නිරුක්තිය 1 === {{root|da|ine-pro|*lendʰ-|id=land}} From {{inh|da|gmq-oda|land}}, from {{inh|da|non|land}}, from {{inh|da|gem-pro|*landą}}, cognate with {{cog|en|land}}, {{cog|de|Land}}. ==== නාම පදය ==== {{da-noun|et|e}} # [[country]] {{q|a geographical area that is politically independent}} #: {{synonyms|da|stat|nation}} # {{lb|da|uncountable|chiefly|definite singular}} [[country]], [[countryside]] {{q|rural areas outside the cities with agricultural production}} # {{l|en|land}} {{q|part of Earth that is not covered in water}} # {{lb|da|as the last part of compounds}} {{non-gloss|a large area or facility dedicated to a certain type of activity or merchandise}} ===== භාවිත සටහන් ===== In compounds: land-, lande-, lands-. ===== වරනැඟීම ===== {{da-decl|et|e}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col-top|2|Terms derived from {{l|da|land||country, nation}}}} * {{l|da|eventyrland}} * {{l|da|fædreland}} * {{l|da|landeplage}} * {{l|da|landsmand}} * {{l|da|landsdækkende}} * {{l|da|naboland}} * {{l|da|olieland}} {{col-bottom}} {{col-top|2|Terms derived from {{l|da|land||countryside}}}} * {{l|da|agerland}} * {{l|da|landbrug}} * {{l|da|landluft}} * {{l|da|landmand}} * {{l|da|landmiljø}} {{col-bottom}} {{col-top|2|Terms derived from {{l|da|land||(dry) land}}}} * {{l|da|fastland}} * {{l|da|lande}} * {{l|da|landfast}} {{col-bottom}} {{col-top|2|Terms derived from {{l|da|land||amusement park}}}} * {{l|da|badeland}} * {{l|da|legeland}} * {{l|en|Legoland}} * {{l|da|sommerland}} * {{l|da|vandland}} {{col-bottom}} === නිරුක්තිය 2 === {{nonlemma}} ==== ක්‍රියා පදය ==== {{head|da|verb form}} # {{inflection of|da|lande||imp|nocat=1}} == ඕලන්ද == === උච්චාරණය === * {{IPA|nl|/lɑnt/}} * {{audio|nl|Nl-land.ogg}} * {{hyphenation|nl|land}} * {{rhyme|nl|ɑnt|s=1}} === නිරුක්තිය 1 === {{root|nl|ine-pro|*lendʰ-|id=land}} From {{inh|nl|dum|lant}}, from {{inh|nl|odt|lant}}, from {{inh|nl|gmw-pro|*land}}, from {{inh|nl|gem-pro|*landą}}, from {{der|nl|ine-pro|*lendʰ-||land, heath|id=land}}. ==== නාම පදය ==== {{nl-noun|n|-en|+}} # {{l|en|land}}, [[country]], [[realm]], [[territory]] #* '''1967''', E. Rijpma & F. G. Schuringa, edited by Jan van Bakel, ''Nederlandse spraakkunst'', 21st ed., p. 24, § 8 (also [https://www.dbnl.org/tekst/rijp001nede01_01/ online at dbnl.org]): #*: {{quote|nl|In ons '''land''' werd door de Westgermaanse volksstammen het Nederduits (Nederfrankisch en Saksisch) en het Fries gesproken.<br/>Het Nederfrankisch wordt wel verdeeld in: (1) het Hollands-Frankisch (Hollands, Utrechts, Westveluws, Zeeuws, Westvlaams); (2) het Brabants-Frankisch (Westbetuws, Westbrabants, Antwerps, Kempens, Leuvens, Aalsters, Oostvlaams); (3) het Limburgs-Frankisch (Gelders-Limburgs, Limburgs, Oostbrabants).<br/>Het Saksisch (Gelders-Overijssels, Oostveluws, Drents, Gronings) wordt gesproken in het noordoosten van ons '''land''', van Groningen tot de Oude Ijssel.}} # {{l|en|land}} {{gloss|part of Earth not covered by water}} # {{lb|nl|Netherlands|Antilles}} a [[constituent country]] of the Kingdom of the Netherlands; the [[territorial]] [[government]] of an overseas constituent country #* {{quote-web|nl |title=Gerechtshof: lhbt’s mogen trouwen op Aruba en Curaçao |trans-title=Appellate court: LGBT people allowed to marry in Aruba and Curaçao |author=Oscar van Dam; John Samson |url=https://caribischnetwerk.ntr.nl/2022/12/06/gerechtshof-lhbts-mogen-trouwen-op-aruba-en-curacao/ |work={{w|Omroep NTR|Caribisch Netwerk}} |date=6 December 2022 |access-date=14 December 2022 |text=Het zijn twee verschillende uitspraken die vandaag door het gerechtshof achter elkaar zijn gedaan. Voor Aruba gaat het om het een zaak van Fundacion Orguyo Aruba en twee vrouwen tegen het '''Land''' Aruba. Voor Curaçao gaat het om een zaak van Human Rights Caribbean Foundation en twee vrouwen tegen het '''Land''' Curaçao. |translation=Today's rulings are two separate ones handed down by the appellate court back-to-back. For Aruba, it involves a case brought by Fundacion Orguyo Aruba and two women against the '''government''' of Aruba. For Curaçao, it involves a case brought by Human Rights Caribbean Foundation and two women against the '''government''' of Curaçao.}} # {{lb|nl|history|chiefly in compounds}} the territorial government or state authority in a Dutch colony or overseas territory in the West Indies ===== ව්‍යුත්පන්න යෙදුම් ===== {{col|nl |achterland |Adélieland |Avondland |bijland |binnenland |boerenland |braakland |buitenland |de Russen zijn in het land |eiland |hoogland |in den lande |kernland |laagland |landadel |landbouw |landdag |landdrost |landen |landerij |landsdienaar |landgenoot |landjepik |landleeuw |landhuis |landleger |landman |landmassa |landmijn |landraad |landrot |landsbelang |landsneger |landschap |landskind |landsknecht |landsregeling |landsslaaf |landstorm |landsverdediging |landsverordening |landsvergadering |landvoogd |landweer |moederland |niemandsland |platteland |proletariërs aller landen, verenigt u |thuisland |vaderland |vasteland |voorland |zeeland |Zeeland }} =====Descendants===== * {{desc|af|land}} * {{desc|brc|alanda|landi}} * {{desc|dcr|land|lant|lan}} * {{desc|skw|land|lantta}} * {{desc|srn|lanti|bor=1}} {{see desc}} * {{desc|unc=1|jv|ꦭꦤ꧀}} === නිරුක්තිය 2 === {{nonlemma}} ==== ක්‍රියා පදය ==== {{head|nl|verb form}} # {{infl of|nl|landen||bare-verb}} {{C|nl|Landforms}} ==Elfdalian== === නිරුක්තිය === {{root|ovd|ine-pro|*lendʰ-|id=land}} From {{inh|ovd|non|land}}, from {{inh|ovd|gem-pro|*landą}}, from {{der|ovd|ine-pro|*lendʰ-||land, heath|id=land}}. Cognate with {{cog|sv|land}}. === නාම පදය === {{head|ovd|noun|g=n}} # [[country]]; [[nation]] ==== වරනැඟීම ==== {{ovd-decl-blank-full<!-- -->|title=''land''<!-- -->|stem=strong ''a''-stem<!-- -->|g=neuter<!-- -->|nsi=land<!-- -->|asi=land<!-- -->|dsi=lande<!-- -->|gsi=—<!-- -->|nsd=landeð<!-- -->|asd=landeð<!-- -->|dsd=landę<!-- -->|gsd=—<!-- -->|npi=land<!-- -->|api=land<!-- -->|dpi=landum<!-- -->|gpi=—<!-- -->|npd=landę<!-- -->|apd=landę<!-- -->|dpd=landum(e)<!-- -->|gpd=—<!-- -->}}<!-- -->{{catlangname|ovd|a-stem nouns}}<!-- --><noinclude> {{C|ovd|Law|Collectives|Geography}} ==Faroese== === උච්චාරණය === * {{IPA|fo|/lant/}} * {{rhymes|fo|ant}} === නිරුක්තිය 1 === {{root|fo|ine-pro|*lendʰ-|id=land}} From {{inh|fo|non|land}}, from {{inh|fo|gem-pro|*landą}}, from {{der|fo|ine-pro|*lendʰ-||land, heath|id=land}}. ==== නාම පදය ==== {{fo-noun|n|lands|lond}} # {{l|en|land}} # [[coast]] # [[country]], [[nation]] # [[ground]], [[soil]] # the [[state]] ===== වරනැඟීම ===== {{fo-decl-noun-n8|l|nd}} ===== ආශ්‍රිත යෙදුම් ===== * {{l|fo|landa}} === නිරුක්තිය 2 === From {{inh|fo|non|hland}}, from {{inh|fo|gem-pro|*hlandą}}, from {{der|fo|ine-pro|*klān-||liquid, wet ground}}. Cognate with {{cog|lt|klanas||pool, puddle, slop}}. ==== නාම පදය ==== {{fo-noun|n|lands|-}} # {{lb|fo|uncountable}} [[urine]] ===== වරනැඟීම ===== {{fo-decl-noun-n8-s|l|nd}} == ප්‍රංශ == === නාම පදය === {{fr-noun|m|+|länder}} # {{l|en|land}} {{gloss|region of Germany or Austria}} ==Gothic== === රෝමානුකරණය === {{got-rom}} # {{romanization of|got|𐌻𐌰𐌽𐌳}} == අයිස්ලන්ත == === නිරුක්තිය === {{root|is|ine-pro|*lendʰ-|id=land}} From {{inh|is|non|land}}, from {{inh|is|gem-pro|*landą}}, from {{der|is|ine-pro|*lendʰ-||land, heath|id=land}}. === උච්චාරණය === * {{IPA|is|/lant/}} * {{rhymes|is|ant|s=1}} === නාම පදය === {{is-noun|@@}} # {{lb|is|uncountable}} {{l|en|land}}, [[earth]], [[ground]] (part of the Earth not under water) # {{lb|is|countable}} [[country]] #: {{ux|is|Japan er fallegt '''land'''.|Japan is a beautiful '''country'''.}} # {{lb|is|uncountable}} [[countryside]], [[country]] #: {{ux|is|Ég bý úti á '''landi'''.|I live in the '''country'''.}} # {{lb|is|uncountable}} land, as a mass noun, measurable in quantity # {{lb|is|countable}} [[tract]]s of land, an [[estate]] #: {{ux|is|Ég á þetta '''land''' og allt sem er á því.|I own this '''land''' and everything on it.}} ==== වරනැඟීම ==== {{is-ndecl|n}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col3|is|láta lönd og leið<t:to not [[give a damn]] about something> |draga að landi<t:to [[eat]] someone's [[leftover]]s> |draga í land<t:to [[give in]] a little> |eiga langt í land<t:of something- to have a long way to go/to be finished> |föðurland |landlægur |sinn er siður í landi hverju |útland |með lögum skal land byggja |leggja land undir fót |Ísland |Grænland |Frakkland |Finnland |Svartfjallaland |Þýskaland }} == මධ්‍යකාලීන ඉංග්‍රීසි == === නාම පදය === {{head|enm|noun}} # {{alt form|enm|lond}} ==Norwegian Bokmål== === උච්චාරණය === * {{IPA|nb|/lɑnː/}} * {{rhymes|nb|ɑnː}} === නිරුක්තිය 1 === {{root|nb|ine-pro|*lendʰ-|id=land}} From {{inh|nb|non|land}}, from {{der|nb|gem-pro|*landą}}, from {{der|nb|ine-pro|*lendʰ-||land, heath|id=land}}. ==== නාම පදය ==== {{nb-noun-n1}} # [[country]] # {{l|en|land}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|nb |beiteland |Det hellige land |Dronning Maud Land |drømmeland |fastland |fjelland |foregangsland |grenseland |hjemland |i land |Ildlandet |ingenmannsland |innenlandsk |innland |jordbruksland |landareal |landbruk |landegrense |landemerke |landesorg |landfast |landgang |landkode |landkrabbe |landlig |landmasse |landområde |landsby |landsbygd |landsdel |landsgjennomsnitt |landskilpadde |landskode |landslag |landsmann |landsmål |landsomfattende |landssviker |lavland |medlemsland |middelhavsland |moderland |naboland |omland |opprinnelsesland |produsentland |pålandsvind |sletteland |Sørlandet |utenlandsk |utland |utviklingsland |Vestlandet |Østlandet }} === නිරුක්තිය 2 === ==== ක්‍රියා පදය ==== {{head|nb|verbf}} # {{infl of|nb|lande||imp}} === මූලාශ්‍ර === * {{R:The Bokmål Dictionary}} ==Norwegian Nynorsk== === වෙනත් ආකාර === * {{alt|nn|lainnj||eye dialect spelling}} === උච්චාරණය === * {{IPA|nn|/lanː/|/land/}} === නිරුක්තිය 1 === {{root|nn|ine-pro|*lendʰ-|id=land}} From {{inh|nn|non|land}}, from {{der|nn|gem-pro|*landą}}, from {{der|nn|ine-pro|*lendʰ-||land, heath|id=land}}. Akin to {{cog|en|land}}. ==== නාම පදය ==== {{nn-noun-n1}} # [[country]] #: {{ux|nn|Noreg er eit '''land''' i nord.|Norway is a '''country''' in the north.}} # {{l|en|land}} #: {{ux|nn|Det var mangel på '''land''' for jordbruk.|There was a lack of '''land''' for agriculture.}} # [[coast]], [[dry land]] ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|nn |Austlandet |beiteland |Dronning Maud Land |fastland |fjelland |grenseland |i land |ingenmannsland |innanlandsk |innland |jordbruksland |landareal |landbruk |lande,landa |landegrense |landemerke |landesorg |landfast |landgang |landkode |landkrabbe |landleg |landmasse |landområde |landsby |landsdel |landsgjennomsnitt |landskode |landslag |landsmann |landsmål |landssvikar |medlemsland |middelhavsland |moderland |naboland |omland |produsentland |pålandsvind |sletteland |Sørlandet |utanlandsk |utland |utviklingsland |Vestlandet }} === නිරුක්තිය 2 === From {{inh|nn|non|hland}}, from {{inh|nn|gem-pro|*hlandą}}. ==== නාම පදය ==== {{nn-noun-n1}} # [[urine]] from [[livestock]] === මූලාශ්‍ර === * {{R:The Nynorsk Dictionary}} {{C|nn|Bodily fluids}} ==Old Danish== === නිරුක්තිය === {{root|gmq-oda|ine-pro|*lendʰ-|id=land}} From {{inh|gmq-oda|non|land}}, from {{inh|gmq-oda|gem-pro|*landą}}. === නාම පදය === {{head|gmq-oda|noun|g=n|genitive|lanz|plural|land}} # {{l|en|land}} #* {{quote-text|gmq-oda|year=1241|title=Codex Holmiensis|section=prologue |passage=Mæth logh skal '''land''' byggæs. |translation=''With law shall '''land''' be built.''}} ==== වරනැඟීම ==== {{gmq-oda-decl-scy|land|landit|land|landin|land|landit|land|landin|landi|landinu|landum|landunum|lanz|lanzins|landa|landanna}} ====Descendants==== * {{desc|da|land}} == පුරාතන ඉංග්‍රීසි == === වෙනත් ආකාර === * {{alter|ang|lond|lænd}} === නිරුක්තිය === {{etymon|ang|inh|gmw-pro>*land>area of ground|id=area of ground}} From {{inh|ang|gmw-pro|*land}}, from {{inh|ang|gem-pro|*landą}}. See there for more. === උච්චාරණය === * {{ang-IPA|land|lɔnd}} === නාම පදය === {{ang-noun|n}} # {{l|en|land}} (dry portion of the Earth's surface) # a [[country]] # [[region]] within a country: [[district]], [[province]] # the [[country]], [[countryside]] # [[owned]] or tilled land, an [[estate]] ==== භාවිත සටහන් ==== * Using the word ''land'' is the most common way to form country names. This can be done in one of two ways: ** Prefixing the name of a people to the word ''land''. Ex: {{m|ang|Franca||French person}} → {{m|ang|Francland||France}}, {{m|ang|Swēo||Swede}} → {{m|ang|Swēoland||Sweden}}, and {{m|ang|*Unger||a Hungarian}} → {{m|ang|Ungerland||Hungary}}. ** Prefacing ''land'' with the genitive plural form of a people, producing the literal meaning “land of ____ people.” Ex: {{m|ang|Egypta land|t=Egypt|lit=land of the Egyptians}}, {{m|ang|Siġelhearwena land|t=Ethiopia|lit=land of the Ethiopians}}. * However, country names can also be formed other ways. For instance, words other than ''land'' are used: {{m|ang|Dene||a Dane}} → {{m|ang|Denemearc|t=Denmark|lit=Dane borderland}}. It is also very common to use the name of a people for the country they inhabit: ''On þām dagum wæs Alexander ġeboren on <u>Crēcum</u> swā swā miċel ȳst cōme ofer ealne middanġeard'' (“In those days, Alexander was born in <u>Greece</u> [lit. ''in the Greeks''] like a great storm coming over the whole world”), ''Ymb twā ġēar þæs þe hē cōm of <u>Francum</u>, hē ġefōr'' (”Two years after he came from <u>France</u> [lit. ''from the Franks''], he died”). In addition, country names are sometimes loaned directly from Latin: {{m|ang|Arabia}}, {{m|ang|Isrāhēl}}, {{m|ang|Italia}}, {{m|ang|Syria}}. Finally, some country names are simply idiomatic: {{m|ang|Norþweġ|t=Norway|lit=north way}}. * Unlike most words, ''land'' undergoes {{w|i-umlaut}} when combined with the suffix {{m|ang|-isċ}}: {{m|ang|inlendisċ||native}}, {{m|ang|uplendisċ||rural}}. ==== වරනැඟීම ==== {{ang-decl-noun-a-n|land}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col4|ang|title=Derived prefix terms|landādl<t:nostalgia for one's homeland><g:f> |landāgend<t:landowner><g:m> |landār<t:land holdings, a landed estate><g:f> |landbegang<t:land tilling or dwelling><g:m> |landbegenġa<t:husbandman, farmer><g:m> |landbōc<t:land charter><g:f> |landbrǣċe<t:land breaking or ploughing><g:m> |landbūend<t:husbandman, a native><g:m> |landbūend<t:a settlement, colony><g:f> |landbūende<t:dwelling in a land, living on earth> |landbūnes<t:a settlement, a colony><g:f> |landċēap<t:fine or tax on bought land><g:m> |landcofa<t:the old city of Shechem><g:m> |landefne<t:amount of land holdings><g:n> |landfæsten<t:a land fastness, a stronghold><g:n> |landfeoh<t:a land rent or tax><g:n> |landfierd<t:land army><g:f> |landfierding<t:terrestrial military operations><g:f> |landfolc<t:the people of the land><g:n> |landfruma<t:prince><g:m> |landġehwearf<t:land swap><g:n> |landġemaca<t:neighbor><g:m> |landġemǣre<t:border><g:n> |landġemierċe<t:border><g:n> |landġesċeaft<t:the earth's creation & created things><g:n> |landġeweorc<t:a land's main stronghold><g:n> |landġewyrpe<t:earthen heaps cast up><g:n> |landhæbbende<t:landowning, land-having as a ruler> |landhæfen<t:land holdings><g:f> |landhere<t:land army><g:m> |landhlāford<t:landlord><g:m> |landhredding<t:redemption of mortgaged land><g:f> |landielf<t:land elf><g:f> |landlagu<t:law in a district><g:f> |landlēas<t:landless> |landlēod<t:an inhabitant or the people of a land><g:m> |landlēoda<t:a native of a land><g:m> |landlyre<t:loss of land><g:m> |landmann<t:a native of a land><g:m> |landmearc<t:boundary of a land or an estate><g:f> |landmearc<t:belonging to a land's boundaries> |landmearca<t:a territory><g:m> |landopenung<t:a breaking up of land><g:f> |landrǣden<t:district or country ordinance, disposition, or institution><g:f> |landrest<t:grave><g:f> |landrīċa<t:landlord><g:f> |landrīċe<t:territory><g:n> |landriht<t:the law of the land><g:n> |landsǣta<t:settler, colonist><g:m> |landsċeap<t:district or swath of land, landscape><g:n> |landsċearu<t:a share or deal of land><g:f> |landsċipe<t:a region or swath of land><g:m> |landseten<t:land possession or occupation thereof><g:f> |landsetla<t:a settler or tenant><g:m> |landsidu<t:custom of the land><g:m> |landsittende<t:occupying land> |landsōcn<t:land or country seeking><g:f> |landspēd<t:land holdings><g:f> |landspēdiġ<t:rich in land holdings or estates> |landsplott<t:a small plot of ground><g:m> |landstede<t:a land><g:m> |landstyċċe<t:a small plot of land><g:n> |landwaru<t:people of land, a land><g:f> |landweard<t:the warden of a land, a prince><g:m> |landwela<t:the earth's wealth><g:m> |lendan<t:to land> }} {{col4|ang|title=Derived suffix terms| |ātland<t:land for the growing of oats, oatland> |ælmesland<t:land bequeathed in frankalmoigne, i.e. rich in land is rich in soul><g:m> |bēanland<t:land for the growing of beans, beanland> |behātland<t:promised land> |belandian<t:to deprive of land, dispossess> |belendan<t:to deprive of land, dispossess> |bēodland<t:land to defray food consumption, as in a monastery> |berland<t:land for the growing of barley, bearland> |bōcland<t:freehold> |bondeland<t:bond or leased land under written conditions> |burgland<t:city-land, urban landscape><g:n> |būrland<t:peasant land> |ċēapland<t:bought land, compare to landcēap> |ċiricland<t:church-land, land belonging to the church> |dūnland<t:down or hilly land> |ealdland<t:long untilled or unploughed land> |eardland<t:fatherland> |earningland<t:land earned or made freehold> |eleland<t:a strange or foreign land> |efnland<t:even land, plains> |eringlond<t:arable land><g:n> |etelond<t:pasture land><g:n> |ēþelland<t:homeland> |fæstland<t:fortified land> |feldland<t:a field or plain, antonym to dūnland> |fenland<t:fenland> |feohland<t:pasture land> |feorland<t:a far-off land><g:n> |folcland<t:land of the people> |fōstorland<t:land for fostering> |friþland<t:a land at peace with one's own> |gafolland<t:tenant land> |ġebūrland<t:peasant land/farmland> |ġedālland<t:land that may get owned by separate people, divided common land> |ġehātland<t:promised land> |ġehlotland<t:land doled out by lot> |ġelanda<t:fellow countryman><g:m> |ġelandian<t:to land> |ġenēatland<t:tenant land> |ġerēfland<t:tributary land> |hǣþfeldland<t:moorland or heathland> |hēafodland<t:a headland or boundary> |hēahland<t:the high ground> |hēahlandrīċa<t:a justice of the peace> |hereġeatland<t:obligatory bequest of land to a lord or king> |hwǣteland<t:land for the growing of wheat> |īeġland<t:island> |ierfeland<t:heritable land> |ierþland<t:arable land> |inland<t:Demesne land> |lǣnland<t:loaned or leased land> |līnland<t:land for the growing of flax or linseed> |mǣdland<t:meadow><g:m> |mæstland<t:land for the forthteeing of mast, i.e. tree nuts> |mearcland<t:borderland, or wasteland beyond the tilled land, marshland> |merisċland<t:marshland> |mōrland<t:moorland, the wild & hilly hinterland> |muntland<t:mountainous land> |mynsterland<t:land belonging to the monastery> |nēahland<t:neighboring country> |norþland<t:a northern land> |rēfland<t:sundorġerēfland, i.e. particular tributary lands> |sacerdland<t:land set aside for priests> |sǣland<t:maritime district> |sandland<t:the seashore> |sċrūdland<t:a land grant to buy clothing> |sīdland<t:wide open land> |sundorland<t:private land> |sūþland<t:a southern land> |tēoþungland<t:land subject to tithe payment> |timberland<t:timberland> |tūnland<t:land of a farm or estate> |þēodland<t:a populated region or country> |unfriþland<t:a hostile country> |unland<t:what is not land: sea, marsh, etc.> |uppeland<t:rural country away from town> |ūtanlandes<t:abroad> |ūtland<t:a foreign country or land> |wealhland<t:a foreign country or land> |wīdland<t:broad land, the earth's surface> |wīnland<t:grapevine land, wine producing region> }} {{col4|ang|title=Derived national terms|Bretland<t:Britain> |Cwēnland<t:historical Lapland, or roughly Finland> |Cumberland<t:Cumberland> |Egypta land<t:Egypt> |Ēstland<t:Estonia> |Finna land<t:Finland> |Francland<t:France> |Frīsland<t:Friesland, Frisia><g:n> |Gotland<t:Gothland, or Götaland, i.e. a region of Norway> |Grēcland<t:Greece> |Hālgoland<t:Hålogaland, a region of Norway> |Īra land<t:Ireland> |Langaland<t:a Danish island in the Baltic Sea> |Scedeland<t:Scania> |Sċotland<t:a name for Ireland before the Scottish left it behind> |Seaxland<t:Saxony> |Swēoland<t:Sweden> |Ungerland<t:Hungary> |Wineda land<t:land of the Slavs> |Wihtland<t:Isle of Wight> |Wīsleland<t:the land around the Vistula river in Poland> }} ====Descendants==== * {{desc|enm|lond}} ** {{desc|en|land}} ** {{desc|sco|laund|land}} ** {{desc|yol|lhoan|lone}} === මූලාශ්‍ර === * {{R:ang:BT}} ==Old Irish== === නාම පදය === {{sga-noun}} # {{alternative spelling of|sga|lann}} ===Mutation=== {{sga-mutation|l|and}} ==Old Norse== === නිරුක්තිය === {{root|non|ine-pro|*lendʰ-|id=land}} From {{inh|non|gem-pro|*landą}}, from {{der|non|ine-pro|*lendʰ-||land, heath|id=land}}. Cognate with {{cog|osx|land}}, {{cog|ofs|land}}, {{m|ofs|lond}}, {{cog|ang|land}}, {{m|ang|lond}}, {{cog|odt|lant}}, {{cog|goh|lant}}, {{cog|got|𐌻𐌰𐌽𐌳}}. === නාම පදය === {{non-noun|n|lands|lǫnd}} # {{l|en|land}} ==== වරනැඟීම ==== {{non-decl-n-a|land|lǫnd}} ====Descendants==== * {{desc|is|land}} * {{desc|fo|land}} * {{desc|nrn|land}} * {{desc|nn|land}} ** {{desc|crp-rsn|лань}} * {{desc|gmq-osw|land}} ** {{desc|ovd|land}} ** {{desc|sv|land}} * {{desc|gmq-oda|land}} ** {{desc|da|land}} *** {{desc|nb|land}} ** {{desc|gmq-scy|lann}} * {{desc|gmq-ogt|land}} ** {{desc|gmq-gut|land|lande|landi}} === වැඩිදුර් කියවීම සඳහා === * {{R:non:Zoega}} {{C|non|Landforms}} ==Old Saxon== === නිරුක්තිය === {{root|osx|ine-pro|*lendʰ-|id=land}} {{dercat|osx|gem-pro|ine-pro|inh=1}} From {{inh|osx|gmw-pro|*land}}. Cognate with {{cog|ang|land}}, {{m|ang|lond}}, {{cog|ofs|land}}, {{m|ofs|lond}}, {{cog|nl|land}}, {{cog|goh|lant}} ({{cog|de|Land}}), {{cog|non|land}} ({{cog|sv|land}}), {{cog|got|𐌻𐌰𐌽𐌳}}. The {{cog|ine-pro|-}} root is also the source of {{cog|cel-pro|*landā}} ({{cog|cy|llan||enclosure}}, {{cog|br|lann||heath}}). === උච්චාරණය === * {{IPA|osx|/lɑnd/}} === නාම පදය === {{osx-noun|g=n}} # {{l|en|land}} ==== වරනැඟීම ==== {{osx-decl-noun-a-n|land}} ====Descendants==== * {{desc|gml|lant}} ** {{desc|nds|Land}} *** {{desc|nds-nl|laand}} *** {{desc|nds-de|Land}} ** {{desc|pdt|Launt}} ==== මූලාශ්‍ර ==== {{R:osx:Kobler}} ==Old Swedish== === නිරුක්තිය === {{root|gmq-osw|ine-pro|*lendʰ-|id=land}} From {{inh|gmq-osw|non|land}}, from {{inh|gmq-osw|gem-pro|*landą}}. === නාම පදය === {{head|gmq-osw|noun|g=n}} # {{l|en|land}} ==== වරනැඟීම ==== {{gmq-osw-decl-noun-a-n|land}} ====Descendants==== * {{desc|ovd|land}} * {{desc|sv|land}} == පෝලන්ත == {{wp|lang=pl}} === නිරුක්තිය === {{root|pl|ine-pro|*lendʰ-|id=land}} {{bor+|pl|de|Land}}, from {{der|pl|gmh|lant}}, from {{der|pl|goh|lant}}, from {{der|pl|gmw-pro|*land}}, from {{der|pl|gem-pro|*landą}}, from {{der|pl|ine-pro|*lendʰ-|t=land, heath|id=land}}. === උච්චාරණය === {{pl-pr|a=LL-Q809 (pol)-Olaf-land.wav}} === නාම පදය === {{pl-noun|m-in}} # {{w|Länder|Land}} {{gl|federal state in Austria and Germany}} #: {{syn|pl|kraj związkowy}} #: {{coordinate terms|pl|stan|kraj|t2=krai}} # {{lb|pl|Poznań}} [[countryside]] {{gl|rural area}} #: {{syn|pl|prowincja|wieś}} ==== වරනැඟීම ==== {{pl-decl-noun-m-in}} === වැඩිදුර් කියවීම සඳහා === * {{R:pl:WSJP}} * {{R:pl:PWN}} {{C|pl|Administrative divisions}} == රුමේනියානු == === නිරුක්තිය === {{root|ro|ine-pro|*lendʰ-|id=land}} {{bor+|ro|de|Land}}. === නාම පදය === {{ro-noun|n|landuri}} # {{l|en|land}} {{gl|German and Austrian province}} ==== වරනැඟීම ==== {{ro-noun-n-uri}} {{C|ro|Administrative divisions}} == ස්පාඤ්ඤ == === නිරුක්තිය === {{root|es|ine-pro|*lendʰ-|id=land}} {{bor+|es|de|Land}}. === නාම පදය === {{es-noun|m}} # one of the [[federal]] [[state]]s of [[Germany]] #* {{quote-web |es |date=2020-01-29 |work=La Vanguardia |title=El coronavirus ya se transmite fuera de China y se teme por su afectación al Mobile |url=https://www.lavanguardia.com/vida/20200129/473204183924/coronavirus-china-mobile.html |passage=Alemania confirmó ayer los cuatro primeros casos de coronavirus de Wuhan en su territorio, todos pertenecientes a la misma empresa de componentes de automóvil del '''land''' alemán de Baviera.|t=Germany yesterday confirmed the first four cases of Wuhan coronavirus on its territory, all belonging to the same automotive component company from the German '''land''' of Bavaria.}} === වැඩිදුර් කියවීම සඳහා === * {{R:es:DRAE}} {{C|es|Administrative divisions}} == ස්වීඩන් == {{wikipedia|lang=sv}} === නිරුක්තිය === {{root|sv|ine-pro|*lendʰ-|id=land}} From {{inh|sv|gmq-osw|land}}, from {{inh|sv|non|land}}, from {{inh|sv|gem-pro|*landą}}, from {{der|sv|ine-pro|*lendʰ-||land, heath}}. === උච්චාරණය === * {{IPA|sv|/land/|[l̪an̪ːd̪]|q3=colloquial|/lan/}} * {{audio|sv|Sv-land.ogg}} * {{rhymes|sv|and}} === නාම පදය === {{sv-noun|n}} # a [[country]], a {{l|en|land}} (independent political entity) #: {{ux|sv|Sverige är ett '''land'''|Sweden is a '''country'''}} #: {{ux|sv|'''länderna''' i EU|'''the countries''' in the EU}} #: {{ux|sv|främmande '''länder'''|foreign '''lands'''}} #: {{ux|sv|fjärran '''länder'''|distant '''lands'''}} ==== වරනැඟීම ==== {{sv-noun-irreg-n|3=länder|4=länderna}} ==== අමතර අවධානයට ==== * {{l|sv|nation}} * {{l|sv|stat}} === නාම පදය === {{sv-noun|n}} # {{lb|sv|uncountable}} {{l|en|land}} (as opposed to sea) #: {{ux|sv|Om man inte har lust att vara på en båt så kan man vara på '''land''' istället|If you don't feel like being on a boat, you can be on '''land''' instead}} #: {{ux|sv|'''land''' och hav|'''land''' and sea}} #: {{ux|sv|ha '''land''' i sikte|have '''land''' in sight}} #: {{ux|sv|'''Land''' i sikte!|'''Land''' ahoy!}} # {{lb|sv|usually in the definite}} [[countryside]], [[country]] #: {{ux|sv|Vi bor på '''landet'''|We live in '''the countryside'''}} #: {{ux|sv|Vi är ute på '''landet'''|We are out in the '''country'''}} #: {{ux|sv|livet på '''landet'''|life in '''the countryside'''}} #: {{ux|sv|stad och '''land'''|town and '''country'''}} #: {{ux|sv|laglöst '''land'''|lawless '''land'''}} #* {{quote-song|sv|year=2007|author=w:Laser Inc|title=w:Det var en gång en fågel|trans-title=Once upon a time, there was a bird|url=https://www.youtube.com/watch?v=QrqZ-L7fHe8|text=Det var en gång en liten fågel. Ja, en fågel. Han bodde '''på landet''', och Roger hette han. Han ville gärna leka med sina vänner, med sina vänner, men det fick inte han. Men denna historia slutar sorgligt, för Roger blev skjuten, skjuten i magen av gamle jägar'n [jägaren] Pär. Han ville hem och äta, äta en fågel med lite potäter, men Roger hann iväg.|t=Once upon a time, there was a little bird. Yes, a bird. He lived '''in the countryside''', and Roger was his name. He wanted to play with his friends ["He wanted gladly to play with his friends," in the sense of, "He wanted, with keenness, to play with his friends" – the translation skips the {{m|sv|gärna}} as it doesn't make much difference to the meaning], with his friends, but [that – to play with his friends] he didn't get to. But this story ends sadly, because Roger was shot, shot in the stomach by old hunter Pär ["den gamle jägaren Pär" matches "the old hunter Pär" – skipping "{{l|sv|den}}" makes "jägaren Pär" sound [[lexicalized]]]. He wanted to go home and eat, eat a bird with some potatoes, but Roger got away [in time].}} ==== භාවිත සටහන් ==== See {{m|sv|mark}} for some other senses of ''land''. ==== වරනැඟීම ==== {{sv-noun-unc-irreg-n|2=landet}} ==== අමතර අවධානයට ==== * {{l|sv|backe}} * {{l|sv|landsbygd}} * {{l|sv|mark}} * {{l|sv|på landbacken||on land (emphasizing not at sea)}} === නාම පදය === {{sv-noun|n}} # a smaller piece of land for small-scale cultivation; a [[patch]], a [[garden]] [[plot]], etc. #: {{ux|sv|ett jordgubbs'''land'''|a strawberry '''patch'''}} #: {{ux|sv|ett potatis'''land'''|a potato '''patch'''}} #: {{ux|sv|påta i '''landet'''|potter in the '''garden plot'''}} ==== වරනැඟීම ==== {{sv-infl-noun-n-zero}} ==== ව්‍යුත්පන්න යෙදුම් ==== * {{l|sv|grönsaksland||vegetable patch / plot}} * {{l|sv|trädgårdsland||garden plot}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col3|sv|arabland |Dalsland |drömland |England |Estland |fastland |favoritland |Finland |Gotland |grannland |grönsaksland |Gästrikland |Götaland |Halland |Holland |Hälsingland |högland |i-land |inland |Jämtland |landa |landamären |landareal |landavträdelse |landbacken |landbaserad |landbo |landborg |landbris |landbrygga |landdjur |landeri |landfast |landfäste |landförbindelse |landgille |landgräns |landgång |landhockey |landhöjning |landis |landkarta |landkrabba |landkänning |landledes |landmassa |landmil |landmina |landmärke |landning |landområde |landpermission |landremsa |landrygg |landsantikvarie |landsarkiv |landsarkivarie |landsbibliotek |landsbygd |landsdel |landsfader |landsfaderlig |landsfiskal |landsflykt |landsflyktig |landsflykting |landsfogde |landsförrädare |landsförräderi |landsförrädisk |landsförsamling |landsförvisa |landsförvisning |landshövding |landsida |landskamp |landskampare |landskap |landskommun |Landskrona |landskronabo |landskronit |landskyrka |landsköldpadda |landslag |landsman |landsmaninna |landsmoder |landsmål |landsmöte |landsnummer |landsomfattande |landsorganisation |landsort |landsplåga |landsråd |landssekretariat |landssorg |landssvek |landstiga |landstigning |landstorm |landstrategi |landstridskrafter |landstrimma |landstrykare |landsträcka |landstäckande |landställe |landsväg |landsända |landsände |landsänkning |landsätta |landsättning |landtunga |landvad |landvind |landvägen |landyta |lantadel |lantarbetare |lantbarn |lantbefolkning |lantbo |lantbrevbärare |lantbrevbäring |lantbruk |lantbröd |lantdag |lantegendom |lantflicka |lantgreve |lantgård |lanthandel |lanthandlare |lanthem |lanthushåll |lanthushållsskola |lantis |lantjunkare |lantkyrka |lantlig |lantlighet |lantliv |lantlolla |lantluft |lantman |lantmarskalk |lantmästare |lantmätare |lantmäteri |lantpatron |lantpräst |lantras |lantråd |lantställe |lantvin |lantvärn |Lappland |Lettland |lågland |morotsland |Norrland |Nyland |potatisland |rovland |rödbetsland |Skåneland |slättland |Småland |Svealand |Södermanland |Sörmland |trädgårdsland |Tyskland |u-land |uppland |Uppland |utland |utlänning |Värmland |Västergötland |västerlandet |Västmanland |Åland |Öland |Östergötland |österlandet }} === මූලාශ්‍ර === * {{R:svenska.se|so}} * {{R:svenska.se|saol}} * {{R:svenska.se|saob}} {{C|sv|Administrative divisions}} ==Zealandic== === නිරුක්තිය === {{root|zea|ine-pro|*lendʰ-|id=land}} {{dercat|zea|odt|frk|gmw-pro|gem-pro|ine-pro|inh=5}} From {{inh|zea|dum|lant}}. === නාම පදය === {{zea-noun|n}} # {{l|en|land}} okfhp2vq60zjbih4a8xdrps2wwjs9zg 235475 235459 2026-06-02T11:06:54Z Lee 19 /* පරිවර්තන */ 235475 wikitext text/x-wiki {{also|Land|länd|lǟnd|-land}} {{minitoc}} == ඉංග්‍රීසි == {{wikipedia}} === උච්චාරණය === * {{enPR|lănd}}, {{IPA|en|/lænd/}} ** {{IPA|en|[ɫeə̯nd]|[ɫɛə̯nd]|a=US}} *** {{audio|en|en-us-land.ogg|a=US}} ** {{IPA|en|[ɫɛə̯nd]|[læ(ː)nd]|a=CA}} ** {{IPA|en|[lænd]|a=RP}} ** {{IPA|en|[leːnd]|[lænd]|a=AU}} ** {{IPA|en|[land]|a=SSBE}} * {{rhymes|en|ænd|s=1}} === නිරුක්තිය 1 === {{etymon|en|inh|enm>lond>nation|id=area of ground|tree=1}} From {{inh|en|enm|lond}}, {{m|enm|land}}, from {{inh|en|ang|land}}, from {{inh|en|gmw-pro|*land}}, from {{inh|en|gem-pro|*landą||land}}, from {{der|en|ine-pro|*lendʰ-||land, heath|id=land}}. Cognate with {{cog|sco|laund||land}}, {{cog|fy|lân||land}}, {{cog|nl|land||land, country}}, {{cog|de|Land||land, country, state}}, {{cog|no|-}} and {{cog|sv|land||land, country, shore, territory}}, {{cog|is|land||land}}. Non-Germanic cognates include {{cog|sga|lann||heath}}, {{cog|cy|llan||enclosure}}, {{cog|br|lann||heath}}, {{cog|cu|лѧдо}}, from {{cog|sla-pro|*lędo||heath, wasteland}}, {{cog|fr|lande||heath}} and {{cog|sq|lëndinë||heath, grassland}}. ==== නාම පදය ==== {{en-noun|~}} # The [[part]] of [[Earth]] which is not covered by [[ocean]]s or other bodies of [[water]]. #: {{ux|en|Most insects live on '''land'''.}} # [[real estate|Real estate]] or [[landed]] [[property]]; a partitioned and measurable area which is owned and acquired and on which [[buildings]] and [[structures]] can be [[build|built]] and [[erected]]. #: {{ux|en|There are 50 acres of '''land''' in this estate.}} # A [[country]] or [[region]]. #: {{ux|en|They [[come]] from a faraway '''land'''.}} # A person's country of origin and/or [[homeplace]]; [[homeland]]. # The [[soil]], in respect to its nature or quality for [[farming]]. #: {{ux|en|wet '''land'''&emsp;&emsp;&emsp; good or bad '''land''' for growing potatoes}} # {{lb|en|often|in combination}} [[realm]], [[domain]]. #: {{ux|en|I'm going to Disney'''land'''.}} #: {{ux|en|Maybe that's how it works in TV-'''land''', but not in the real world.}} # {{senseid|en|unplowed ground between furrows}} {{lb|en|agriculture}} The [[ground#Noun|ground]] [[leave#Verb|left]] [[unploughed]] between [[furrow#Noun|furrows]]. #: {{syn|en|furlong<id:unplowed ground between furrows>}} # {{senseid|en|portions of a field for ploughing}} {{lb|en|agriculture}} Any of [[several]] [[portion#Noun|portions]] into which a [[field#Noun|field]] is [[divide#Verb|divided]] for [[plough#Verb|ploughing]]. #: {{syn|en|furlong<id:portions of a field for ploughing>}} #: {{cot|en|headland<id:unplowed boundary of a field>|furlong<id:unplowed boundary of a field>}} # {{lb|en|Ireland|colloquial}} A shock or fright. #: {{ux|en|He got an awful '''land''' when the police arrived.}} # {{lb|en|electronics}} A [[conducting]] area on a [[board]] or [[chip]] which can be used for [[connect]]ing [[wire]]s. # On a [[compact disc]] or similar [[recording]] [[medium]], an area of the medium which does not have [[pit]]s. #* {{quote-text|en|year=1935|author=H. Courtney Bryson|title=The Gramophone Record|page=72 |passage=Now, assume that the recording is being done with 100 grooves per inch, and that the record groove is .006 inch wide. This means that the '''land''' on either side on any given groove in the absence of sound waves is .004 inch.}} # {{lb|en|travel}} The non-airline portion of an itinerary. Hotel, tours, cruises, etc. #: {{ux|en|Our city offices sell a lot more '''land''' than our suburban offices.}} # {{lb|en|obsolete}} The ground or [[floor]]. #* {{RQ:Spenser Faerie Queene|book=V|canto=VII|stanza=7|passage=her selfe vppon the '''land''' / She did prostrate}} # {{lb|en|nautical}} The [[lap]] of the [[strake]]s in a [[clinker-built]] [[boat]]; the lap of [[plate]]s in an [[iron]] [[vessel]]; called also [[landing]].<ref>{{R:Knight AMD}}</ref> # In any surface prepared with [[indentation]]s, [[perforation]]s, or [[groove]]s, that part of the surface which is not so treated, such as the level part of a [[millstone]] between the furrows. ## {{lb|en|ballistics}} The space between the rifling grooves in a gun. ##* {{quote-book|en| date=2008-08-01| chapter=Ballistics| author=Lisa Steele| title=Science for Lawyers| editor=Eric York Drogin| publisher=American Bar Association| page=16| pageurl=http://books.google.com/books?id=H4zTATcB70wC&pg=PA16&dq=lands| passage=The FBI maintains a database, the General Rifling Characteristics (GRC) file, which is organized by caliber, number of '''lands''' and grooves, direction of twist, and width of '''lands''' and grooves, to help an examiner figure out the origin of a recovered bullet.}} ##* {{quote-av|en|date=2012-11-15|episode=One Way to Get Off| title=[[w:Elementary (TV series)|Elementary]]| season=1| number=7|actor=Jonny Lee Miller| role=Sherlock Holmes| passage=The human eye is a precision instrument. It can detect grooves and '''lands''' on a slug more efficiently than any computer.}} # {{lb|en|Scotland|historical}} A group of [[dwelling]]s or [[tenement]]s under one [[roof]] and having a common [[entry]]. =====Hyponyms===== {{col4|en|bookland |borderland |brushland |bushland |cloud cuckoo-land |Crown land |Disneyland |downland |dreamland |dry land |[[fantasy land]] ([[fantasyland]]) |farmland |Fiordland |flatland |grassland |herbland |highland |homeland |Hurdland |inland |Lalaland |Levelland |lowland |mainland |midland |moorland |Newfoundland |no man's land |No Man's Land |Northland,northland |outland |overland |pastureland |pineland |playland |plowland,ploughland |Queensland |revenue land |Southland,southland |tableland |TV land |upland |Westland |wildland |wonderland |woodland }} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col|en|Dayak land|land surface|land-surface|adland |airland |aland |aridland |autoland |backland |benchland |Bergisches Land |birthland |blackland |blogland |bogland |bottomland |bowerland |buckshot land |byland |caneland |canyonland |chalkland |Chicagoland |Chink land |chink land |chopstick land |Cleveland |cloud cuckoo land |cloud-cuckoo-land |cloudland |clubland |coastland |common land |copland |cornland |cotland |counterland |cradleland |crash land |croftland |cropland |crown land |cubeland |Curtisland |dairyland |Damaraland |deadland |desertland |do a land-office business |dockland |domed land snail |driftland |dryland |duneland |eastland |edgeland |Egyptland |Elfland |Ellsworth Land |escapeland |estate in land |fairyland |farm land |fatherland |fat of the land |fernland |filmland |Fingoland |fireland |flogging the land |floodland |folkland |foras land |forbyland |Fordlandia |foreland |forestland |Frankland |Freelander |freeman on the land |gameland |gangland |gangsterland |geländeläufer |genderland |ghostland |glebe-land |glory-land |gorseland |Graham Land |grainland |grazeland |Greenland |Groveland |gumland |hayland |headland |heartland |heathland |heteroland |Highland |hipsterland |Hungarland |Iceland |interest in land |island |Jockland |Kirkland |kirkland |Kiwiland |lackland |lakeland |La-La Land |Lala land |la-la land |la-la-land |landability |landable |land acknowledgement |land acknowledgment |land agent |land ahoy |land art |land artist |landbank |landbanking |landbase |landbased |land battleship |land-beaver |land before time |landbirding |landblink |landboc |landbook |landbound |land breeze |land bridge |land bubble |landcare |land clearer |landcover |land crab |land cress |land cruiser |land degradation |land-diving |land diving |land down under |lander |landfall |land-farer |landfarming |landfill |landflood |land force |landform |landfowl |landful |landfyrd |land girl |landgrab |landgrabber |land-grant |land grant |land guard |landguard |land gull |land-held |land ho |landhold |landholder |landholding |landhopper |land ironclad |landish |land-jobber |land-jobbing |landlady |landleaper |land-leech |land legs |landless |landlike |[[land line]], [[landline]] |landliving |landlock |landlocked |land-locked salmon |landlord |landlouper |land-lover |landlubber |landly |landman |land mark |landmark |[[land mass]], [[landmass]] |land mile |[[land mine]], [[landmine]] |landmonger |landocracy |landocrat |land of a thousand hills |land of fruits and nuts |land of milk and honey |land of Nod |land of opportunity |land of plenty |land of steady habits |Land of the Ascendant Sun |land of the free |land of the living |Land of the Long White Cloud |land o' Goshen |land on one's feet |Land o' the Leal |landowner |landowning |Land Park |land patent |landphoon |land pirate |landplane |land poor |land-poor |land quillwort |landrace |landrail |landreeve |land register |land rights |land rights for gay whales |land run |landrush |land rush |land sailing |land sake |land sake alive |land sakes |land sakes alive |land-salamander |landscape |landscraper |landscrip |Land's End |land shark |landshark |land-shark |land-sharking |land shrimp |landsick |land sickness |landside |landslide |landsliding |landslip |land slug |land snail |landspout |landspreading |land spring |land surveyor |land take |land-take |land tax |land the plane |land torpedo |land train |land under |land up over |land-use |[[land use]] (see also [[w:Land_use|land use]]) |landwaiter |landward |landwards |landwhale |land whale |land wind |land with one's bum in the butter |landworker |land yacht |land-yacht |land yachting |law of the land |layland |lay of the land |Levelland |lie of the land |linksland |live off the land |loessland |lotus land |Lotusland |lubberland |magazineland |make land |marchland |markland |Markland |marshland |Mashonaland |Matabeleland |meadowland |mealie land |merland |Midland |mireland |misland |morning-land |morning land |mossland |motherland |muckland |mudland |multiland |my land |Namaqualand |native land |neckland |Netherland |netherlands |Netherlands |never fight a land war in Asia |neverland |never-never land |never start a land war in Asia |noman's land |no-man's land |no-man's-land |nonland |Northumberland |Oakland |O'Higgins Land |Oklahoma land rush |on land |otherlandish |ounceland |oxland |paddyland |parentland |parkland |peatland |pennyland |Pictland |plainland |plotland |Poland |Portland |portland |power in the land |prairieland |promised land |pure land |quangoland |quarterland |rainland |ranchland |rangeland |restaurantland |riceland |Richland |Richlands |rimland |rockland |sabbath of the land |sageland |scabland |scarpland |Schengenland |scrubland |sedgeland |see how the land lies |Seriland |set foot on land |set the land |shackland |shadowland |shareland |shoreland |shrubland |sire-land |skyland |slobland |soapland |soft-land |soft land |spit of land |splash-land |stumpland |Sundaland |swampland |Swaziland |thaneland |theatreland |thirstland |tideland |townland |tract of land |tussockland |userland |valley-land |valleyland |valley land |vineland |washland |wasteland |waste land |waterland |Welshland |westland |wetland |wharfland |wheatland |white land |Wilkes Land |wineland |Wituland |Wolfe-land |Wolfland |womyn's land |Yankee land |yard of land |Zoom-land |Zoom land |Zululand }} ===== පරිවර්තන ===== {{trans-top|part of Earth that is not covered by oceans or other bodies of water}} {{multitrans|data= * Abenaki: {{tt|abe|aki}} * Aché: {{tt|guq|waxu}} * Afrikaans: {{tt+|af|land}} * Albanian: {{tt+|sq|vend|m}} * Arabic: {{tt|ar|بَرّ|f}}, {{tt+|ar|أَرْض|f}}, {{tt|ar|يابِسة|f}} *: Egyptian Arabic: {{tt|arz|أرض|f|tr=ʔarḍ}} * Aramaic: {{tt+|syc|ܐܪܥܐ|f|tr=ʔarʕā}} * Armenian: {{tt+|hy|ցամաք}} * Asturian: {{tt+|ast|tierra|f}} * Bashkir: {{tt|ba|ер|sc=Cyrl}}, {{tt|ba|ҡоро ер|sc=Cyrl}} * Basque: {{tt|eu|lur}} * Belarusian: {{tt|be|зямля́|f}}, {{tt|be|су́ша|f}} * Bengali: {{tt+|bn|ভূমি}}, {{tt+|bn|জমি}}, {{tt+|bn|জমিন}} * Bhojpuri: {{t|bho|जमीन}} * Bikol Central: {{tt+|bcl|daga}} * Blackfoot: {{tt|bla|ksaahko}} * Brunei Malay: {{tt|kxd|darat}} * Bulgarian: {{tt+|bg|земя́|f}}, {{tt+|bg|су́ша|f}} * Burmese: {{tt+|my|ကုန်း}} * Catalan: {{tt+|ca|terra|f}} * Central Atlas Tamazight: {{tt|tzm|ⴰⴽⴰⵍ|m}} * Chamicuro: {{tt|ccc|c̈hijta}} * Cherokee: {{tt|chr|ᎦᏙᎯ}} * Cheyenne: {{tt|chy|ho'e}} * Chinese: *: Mandarin: {{tt+|cmn|土地|tr=tǔdì}}, {{tt+|cmn|陸地|tr=lùdì}} * Cree: {{tt|cr|ᐊᐢᑭᕀ}} * Czech: {{tt+|cs|země|f}} * Danish: {{tt+|da|land|n}} * Dutch: {{tt+|nl|land|n}} * Eastern Bontoc: {{tt|ebk|lota}} * Egyptian: {{t-egy|tꜣ|h=tA:N23*Z1}} * Esperanto: {{tt+|eo|tero}} * Estonian: {{tt+|et|maa}} * Farefare: {{tt|gur|tɩŋa}}, {{tt|gur|tẽŋa}} * Faroese: {{tt|fo|land|n}} * Fijian: {{tt|fj|vanua}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|terre|f}} * Galician: {{tt+|gl|terra|f}} * Georgian: {{tt|ka|მიწა}}, {{tt|ka|ხმელეთი}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} *: Rhine Franconian: {{tt|gmw-rfr|Lond}} {{qualifier|Palatine}} * Greek: {{tt+|el|ξηρά|f}}, {{tt+|el|γη|f}} * Guaraní: {{tt+|gn|yvy}} * Gujarati: {{tt+|gu|જમીન|f|tr=jamīn}} * Hawaiian: {{tt|haw|honua}} * Hebrew: {{tt+|he|אֶרֶץ|f|tr=érets}}, {{tt+|he|אֲדָמָה|f|tr=adamá}}, {{t+|he|יַבָּשָׁה|f|tr=yabashá}} * Higaonon: {{tt|mba|bugta}} * Hindi: {{tt+|hi|भूमि|f}}, {{tt+|hi|ज़मीन|f}} * Hungarian: {{tt+|hu|föld}}, {{tt+|hu|szárazföld}} * Icelandic: {{tt+|is|land}} * Ido: {{tt+|io|lando}} * Igbo: {{tt|ig|ala}} * Ilocano: {{tt|ilo|daga}} * Indonesian: {{tt+|id|tanah}}, {{tt+|id|bumi}}, {{tt+|id|darat}} * Ingrian: {{t|izh|maa}} * Istriot: {{tt|ist|tiera|f}} * Italian: {{tt+|it|terra|f}} * Japanese: {{tt+|ja|土|tr=つち, tsuchi}}, {{tt+|ja|土地|tr=とち, tochi}}, {{tt+|ja|陸地|tr=りくち, rikuchi}} * Khmer: {{tt+|km|ដី}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|뭍}}, {{tt+|ko|토지(土地)}}, {{tt+|ko|육지}}, {{tt+|ko|륙지}} {{qualifier|North Korea}} * Kurdish: *: Central Kurdish: {{tt+|ckb|خاک}} * Ladin: {{tt|lld|tera|f}} * Lakota: {{tt|lkt|makȟóčhe}} * Lao: {{tt+|lo|ດິນ}}, {{tt+|lo|ພູ}} * Latin: {{tt+|la|terra|f}} * Latvian: {{tt+|lv|zeme|f}}, {{tt+|lv|sauszeme|f}}, {{tt|lv|cietzeme|f}} * Lithuanian: {{tt|lt|sausuma|f}}, {{tt+|lt|žemė|f}} * Lü: {{tt|khb|ᦡᦲᧃ}} * Macedonian: {{tt+|mk|земја|f}} * Malay: {{tt+|ms|tanah}}, {{tt+|ms|darat}}, {{tt+|ms|bumi}} * Maltese: {{tt|mt|art}} * Manchu: {{tt|mnc|ᠨᠠ}} * Maori: {{tt+|mi|whenua}} * Marathi: {{tt|mr|जमीन|f|tr=j̈amīn}} * Mazanderani: {{tt|mzn|زمین|tr=zemin}} * Minangkabau: {{t+|min|tanah}} * Mongolian: *: Cyrillic: {{tt+|mn|газар}}, {{tt+|mn|шороо}}, {{tt+|mn|хөрс}} * Nahuatl: *: Classical: {{tt|nci|tlalli}} * Navajo: {{tt|nv|kéyah}} * Nepali: {{tt|ne|जमिन|tr=jamin}} * Nheengatu: {{tt|yrl|retama}} * North Frisian: {{qualifier|Mooring}} {{tt|frr|lönj|n}}; {{qualifier|Föhr-Amrum}} {{tt|frr|lun|n}}; {{qualifier|Helgoland}} {{tt|frr|Lun|n}}, {{tt|frr|Lön}} {{qualifier|Sylt}} * Northern Thai: {{t-needed|nod}} * Norwegian: *: Bokmål: {{tt+|nb|land|n}} * Occitan: {{tt+|oc|tèrra}} * Ojibwe: {{tt|oj|aki}}, {{tt|oj|ᐊᑭ}} * Old Church Slavonic: {{tt|cu|землꙗ|f}} * Old East Slavic: {{tt|orv|землꙗ|f}} * Old English: {{tt+|ang|land|n}} * Old Javanese: {{tt|kaw|rat}} * Old Saxon: {{tt|osx|land|n}} * Oromo: {{tt|om|lafa}} * Ottawa: {{tt|otw|ki}} * Persian: *: Iranian Persian: {{tt|fa-ira|سَرْزَمین}} * Plautdietsch: {{tt+|pdt|Launt|n}} * Polish: {{tt+|pl|ziemia|f}}, {{tt+|pl|ląd|m}} * Portuguese: {{tt+|pt|terra|f}} * Punjabi: {{tt|pa|ਜ਼ਮੀਨ|tr=zamīn}} * Romanian: {{tt+|ro|uscat|n}}, {{tt+|ro|pământ|n}} * Romansch: {{tt|rm|terra|f}}, {{tt|rm|tiara|f}} * Russian: {{tt+|ru|земля́|f}}, {{tt+|ru|зе́мли|p}}, {{qualifier|as apposed to oceans}} {{tt+|ru|су́ша|f}} * Sanskrit: {{tt+|sa|भूमि|f}} * Sardinian: {{tt|sc|terra|f}} * Scots: {{tt|sco|laund}} * Scottish Gaelic: {{tt|gd|talamh|m}}, {{tt|gd|tìr|f}} * Serbo-Croatian: *: Cyrillic: {{tt|sh|зѐмља|f}}, {{tt|sh|ко̏пно|n}} *: Roman: {{tt+|sh|zèmlja|f}}, {{tt+|sh|kȍpno|n}} * Shan: {{t-needed|shn}} * Sicilian: {{tt+|scn|terra|f}} * Slovak: {{tt+|sk|zem|f}} * Slovene: {{tt+|sl|kopno|n}}, {{tt+|sl|zemlja|f}} * Southern Altai: {{t|alt|јер}} * Spanish: {{tt+|es|tierra|f}} * Sundanese: {{tt+|su|lemah}} * Swahili: {{tt+|sw|ardhi|c9}} * Swedish: {{tt+|sv|land|n}} * Tagalog: {{tt+|tl|lupa}} * Telugu: {{tt+|te|భూమి}} * Thai: {{tt+|th|ดิน}}, {{tt+|th|ภู}} * Tocharian A: {{tt|xto|ype}} * Tocharian B: {{tt|txb|yapoy}} * Tongan: {{tt|to|fonua}} * Turkish: {{tt+|tr|kara}} * Ugaritic: {{tt|uga|𐎀𐎗𐎕}} * Ukrainian: {{tt+|uk|земля́|f}}, {{tt|uk|су́ша|f}} * Urdu: {{tt+|ur|زَمِین|f}} * Venetan: {{tt|vec|tera|f}} * Vietnamese: {{tt+|vi|đất}} * Vilamovian: {{tt|wym|łaond|n}} * Welsh: {{tt+|cy|tir|m}} * West Frisian: {{tt+|fy|lân}} * Western Apache: {{tt|apw|kiiya}}, {{tt|apw|bíniʼ}} * Yankunytjatjara: {{t|kdd|manta}} * Yiddish: {{tt|yi|ארץ|f|tr=erets}}, {{tt|yi|לאַנד|n}}, {{tt|yi|יבשה|f|tr=yaboshe}} * Yup'ik: {{tt|esu|nuna}} * Zhuang: {{tt|za|dieg}} {{trans-bottom}} {{trans-top|real estate or landed property}} * Albanian: {{tt+|sq|truall|m}}, {{tt+|sq|tokë|f}} * Apache: *: Western Apache: {{tt|apw|bíniʼ}} * Asturian: {{t|ast|campa|f}}, {{t+|ast|terrén|n}}, {{t+|ast|finca|f}}, {{t|ast|posesión|f}}, {{t|ast|propiedá|f}}, {{t|ast|facienda|f}}, {{t|ast|fundu|m}} * Bashkir: {{tt|ba|ер|sc=Cyrl}} * Bengali: {{tt+|bn|জমি}}, {{tt+|bn|জমিন}} * Bikol Central: {{tt+|bcl|daga}} * Brunei Malay: {{tt|kxd|tanah}} * Bulgarian: {{tt|bg|позе́млена со́бственост|f}}, {{tt+|bg|земя́|f}} * Catalan: {{tt+|ca|terra}}, {{tt+|ca|terreny}} * Cheyenne: {{tt|chy|ho'e}} * Dutch: {{tt+|nl|land|n}}, {{tt+|nl|grond|m}}, {{tt+|nl|land|n}} * Estonian: {{tt+|et|maa}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|terre|f}}, {{tt+|fr|terrain|m}} * Georgian: {{tt|ka|მიწა}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} *: Rhine Franconian: {{tt|gmw-rfr|Lond}} {{qualifier|Palatine}} * Greek: {{tt+|el|γαίες|f-p}}, {{tt+|el|εκτάσεις|f-p}}, {{tt+|el|κτήματα|n-p}} * Hawaiian: {{tt|haw|ʻāina}} * Ingrian: {{t|izh|maa}}, {{t|izh|mantu}} * Japanese: {{tt+|ja|不動産|tr=ふどうさん, fudōsan}}, {{tt+|ja|土地|tr=とち, tochi}} * Javanese: {{tt+|jv|lemah}} {{qualifier|ngoko}}, {{tt|jv|siti}} {{qualifier|krama}} * Kabuverdianu: {{tt|kea|txon}} * Khmer: {{tt+|km|ដី}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|토지(土地)}}, {{tt+|ko|부동산(不動産)}} * Lao: {{t-needed|lo}} * Lithuanian: {{tt+|lt|žemė|f}} * Malay: {{tt+|ms|tanah}} * Marathi: {{t|mr|जमीन|f}} * Nahuatl: {{tt+|nah|tlālli}}, {{tt+|nah|tlali}} * Ottoman Turkish: {{t|ota|طوپراق|tr=toprak}} * Portuguese: {{tt+|pt|terra|f}}, {{tt+|pt|propriedade|f}}, {{tt+|pt|terreno|m}} * Romanian: {{tt+|ro|teren|n}}, {{tt+|ro|pământ|n}} * Russian: {{tt+|ru|земля́|f}}, {{tt+|ru|недви́жимость|f}}, {{tt|ru|[[земельный|земе́льная]] [[со́бственность]]|f}} * Serbo-Croatian: *: Cyrillic: {{tt|sh|по́сед|m}}, {{tt|sh|по́сјед|m}} *: Roman: {{tt+|sh|pósed|m}}, {{tt+|sh|pósjed|m}} * Spanish: {{t+|es|propiedad|f}}, {{t+|es|terreno|m}}, {{t+|es|posesión|f}}, {{t+|es|hacienda|f}}, {{t+|es|fundo|m}}, {{t+|es|terruño|m}}, {{t+|es|baldío|m}}, {{t+|es|predio|m}}, {{t+|es|finca|f}}, {{t+|es|conuco|m}} * Swedish: {{tt+|sv|mark|c}} * Tagalog: {{tt|tl|lupain}} * Thai: {{t-needed|th}} {{trans-bottom}} {{trans-top|country or region}} * Afrikaans: {{tt+|af|land}} * Albanian: {{tt+|sq|tokë|f}} * Arabic: {{tt|ar|بِلَاد|p}}, {{tt+|ar|أَرْض|f}}, {{tt+|ar|بَلَد|m}} * Armenian: {{tt+|hy|երկիր}} * Asturian: {{t+|ast|país|m}}, {{t+|ast|tierra|f}} * Belarusian: {{tt+|be|краі́на|f}}, {{tt|be|зямля́|f}} * Bengali: {{tt+|bn|দেশ}} * Bulgarian: {{tt+|bg|страна́|f}}, {{tt+|bg|земя́|f}} * Burmese: {{tt+|my|နိုင်ငံ}} * Catalan: {{tt+|ca|terra}} * Cherokee: {{tt|chr|ᎦᏙᎯ}} * Chinese: *: Cantonese: {{tt|yue|國家|tr=gwok3 gaa1}} *: Dungan: {{tt|dng|гоцзя}} *: Mandarin: {{tt+|cmn|國家|tr=guójiā}} * Corsican: {{tt|co|paesu|m}} * Czech: {{tt+|cs|země|f}} * Danish: {{tt+|da|land|c}} * Dolgan: {{tt|dlg|һир}} * Dutch: {{tt+|nl|land|n}} * Erzya: {{tt|myv|мастор}}, {{tt|myv|мода}} * Esperanto: {{tt+|eo|lando}} * Estonian: {{tt+|et|maa}}, {{tt+|et|riik}} * Farefare: {{tt|gur|tɩŋa}}, {{tt|gur|tẽŋa}} * Faroese: {{tt|fo|land|n}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|contrée|f}}, {{tt+|fr|pays|m}} * Galician: {{tt+|gl|terra|f}}, {{tt+|gl|país|m}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} *: Rhine Franconian: {{tt|gmw-rfr|Lond}} {{qualifier|Palatine}} * Gothic: {{tt|got|𐌻𐌰𐌽𐌳|n}} * Greek: {{tt+|el|χώρα|f}} *: Ancient: {{tt|grc|χώρα|f}} * Hawaiian: {{tt|haw|ʻāina}} * Hindi: {{tt+|hi|देश|m}}, {{tt+|hi|मुल्क|m}} * Icelandic: {{tt+|is|land|n}} * Indonesian: {{tt+|id|negara}}, {{tt+|id|negeri}} * Ingrian: {{t|izh|maa}}, {{t|izh|riikki}} * Italian: {{tt+|it|terra|f}} * Japanese: {{tt+|ja|領土|tr=りょうど, ryōdo}}, {{tt+|ja|国土|tr=こくど, kokudo}}, {{tt+|ja|国家|tr=こっか, kokka}}, {{tt+|ja|国|tr=くに, kuni}} * Kashmiri: {{tt|ks|مُلک}} * Khmer: {{tt+|km|ប្រទេស}}, {{tt+|km|បទេស}}, {{tt+|km|រដ្ឋ}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|나라}}, {{tt+|ko|국가(國家)}} * Kurdish: *: Central Kurdish: {{tt+|ckb|وڵات}} *: Northern Kurdish: {{tt+|kmr|welat|m}} * Lakota: {{tt|lkt|makȟóčhe}} * Lao: {{tt|lo|ປະເທດ}}, {{tt+|lo|ເມືອງ}} * Latvian: {{tt+|lv|zeme|f}} * Lithuanian: {{tt+|lt|kraštas|m}}, {{tt+|lt|šalis|f}} * Lutuv: {{t|clt|ruo}} * Luxembourgish: {{tt+|lb|Land|n}} * Macedonian: {{tt+|mk|земја|f}} * Malagasy: {{tt+|mg|tany}} * Malay: {{tt+|ms|negara}}, {{tt+|ms|nasional}} * Marathi: {{t+|mr|देश|m}}, {{t|mr|भूमी|f}} * Mazanderani: {{tt|mzn|سامون|tr=samun}} * Mongolian: *: Cyrillic: {{tt+|mn|газар}}, {{tt+|mn|орон}} * Moore: {{tt|mos|tenga}}, {{tt|mos|tẽnga}} * Navajo: {{tt|nv|kéyah}} * Ngarrindjeri: {{tt|nay|ruwe}} * Nhengatu: {{tt|yrl|retama}} * North Frisian: {{tt|frr|lönj|n}} {{qualifier|Mooring}}, {{tt|frr|Lun|n}} {{qualifier|Heligolandic}} * Norwegian: *: Bokmål: {{tt+|nb|land|n}} * Ojibwe: {{tt|oj|aki}} * Old Church Slavonic: *: Cyrillic: {{tt|cu|землꙗ|f}}, {{tt|cu|страна|f}} * Old East Slavic: {{tt|orv|землꙗ|f}}, {{tt|orv|краина|f}} * Old English: {{tt+|ang|land|n}} * Ottoman Turkish: {{t|ota|ایل|tr=il}}, {{t|ota|طوپراق|tr=toprak}}, {{t|ota|ارض|tr=arz}}, {{t|ota|تراب|tr=türâb}}, {{t|ota|ناحیه|tr=nâhiye}} * Pannonian Rusyn: {{t|rsk|жем|f}} * Persian: *: Iranian Persian: {{tt|fa-ira|سَرْزَمین}}, {{tt|fa-ira|کِشْوَر}}, {{tt+|fa-ira|بوم}}, {{tt+|fa-ira|سامان}} * Polish: {{tt+|pl|kraj|m}}, {{tt+|pl|kraina|f}}, {{tt+|pl|ziemia|f}} * Portuguese: {{tt+|pt|terra|f}} * Quechua: {{tt|qu|hallpa}}, {{tt|qu|marka}} * Romanian: {{tt+|ro|țară|f}} * Russian: {{tt+|ru|страна́|f}}, {{tt+|ru|земля́|f}}, {{tt+|ru|край|m}} * Saterland Frisian: {{tt|stq|Lound|n}} * Scottish Gaelic: {{tt|gd|talamh|m|f}}, {{tt|gd|tìr|f}} * Serbo-Croatian: *: Cyrillic: {{tt|sh|зѐмља|f}} *: Roman: {{tt+|sh|zèmlja|f}} * Sindhi: {{tt|sd|ملڪ}} * Sinhalese: {{tt+|si|රට}} * Slovak: {{tt+|sk|krajina|f}}, {{tt+|sk|zem|f}} * Slovene: {{tt+|sl|dežela|f}}, {{tt+|sl|zemlja|f}} * Southern Altai: {{t|alt|јер}} * Spanish: {{tt+|es|patria|f}}, {{tt+|es|país|m}} * Swahili: {{tt+|sw|nchi}} * Swedish: {{tt+|sv|land|n}} * Tamil: {{tt+|ta|நாடு}}, {{tt+|ta|தேசம்}} * Taos: {{tt|twf|pǫ̏ʼóna}} * Thai: {{tt+|th|ประเทศ}}, {{tt+|th|เมือง}} * Turkish: {{t+|tr|ülke}} * Ugaritic: {{tt|uga|𐎈𐎆𐎚}}, {{tt|uga|𐎀𐎗𐎕}} * Ukrainian: {{tt+|uk|краї́на|f}}, {{tt+|uk|земля́|f}} * Urdu: {{tt|ur|دیش|m}}, {{tt|ur|مُلْک|m}} * Vietnamese: {{tt+|vi|quốc gia}} * Welsh: {{tt+|cy|tir|m}}, {{tt+|cy|gwlad|f}}, {{tt+|cy|tiriogaeth|f}} * West Frisian: {{tt+|fy|lân|n}} * Yakut: {{tt|sah|сир}} * Yiddish: {{tt|yi|לאַנד|n}} * Yup'ik: {{tt|esu|nuna}} {{trans-bottom}} {{trans-top|someone's homeplace}} * Albanian: {{tt+|sq|vend|m}} * Asturian: {{t|ast|patria|f}}, {{t+|ast|tierra|f}} * Bikol Central: {{tt|bcl|dagang tinubuan}} * Chinese: *: Cantonese: {{tt|yue|祖國|tr=zou2 gwok3}} *: Mandarin: {{tt+|cmn|祖國|tr=zǔguó}} * Czech: {{tt+|cs|vlast|f}} * Dutch: {{tt+|nl|land|n}}, {{tt+|nl|vaderland|n}} * Estonian: {{tt+|et|kodumaa}} * Finnish: {{tt+|fi|kotimaa}}, {{tt+|fi|kotiseutu}} * French: {{tt+|fr|pays|m}}, {{tt+|fr|patrie|f}} * German: {{tt+|de|Vaterland|n}} * Japanese: {{tt+|ja|祖国|tr=そこく, sokoku}} * Korean: {{tt+|ko|조국}} * Latin: {{tt+|la|patria}} * Malagasy: {{tt+|mg|tanindrazana}} * Portuguese: {{tt+|pt|terra|f}} * Slovak: {{tt|sk|vlasť|f}} * Spanish: {{t+|es|patria|f}}, {{t+|es|tierra|f}} * Swedish: {{tt+|sv|fosterland}} * Vietnamese: {{tt+|vi|tổ quốc}} {{trans-bottom}} {{trans-top|ground that is suitable for farming}} * Albanian: {{tt+|sq|arë}} * Asturian: {{t|ast|barrial|m}}, {{t|ast|suqueru|m}}, {{t|ast|vega|f}} * Bengali: {{tt+|bn|জমি}}, {{tt+|bn|জমিন}} * Bikol Central: {{tt+|bcl|daga}} * Bulgarian: {{tt+|bg|земя|f}} * Burmese: {{tt+|my|မြေ}} * Buryat: {{tt|bua|хүдөө}} * Cherokee: {{tt|chr|ᎦᏙᎯ}} * Chinese: *: Mandarin: {{tt+|cmn|土地|tr=tǔdì}}, {{tt+|cmn|農地|tr=nóngdì}} * Dutch: {{tt+|nl|grond|f}} * Estonian: {{tt+|et|maa}} * Faroese: {{tt+|fo|jørð|f}} * Finnish: {{tt+|fi|maa}} * French: {{tt+|fr|terre|f}} * Galician: {{tt+|gl|terra|f}} * German: {{tt+|de|Land|n}}, {{tt+|de|Land|p|alt=Länder}} * Icelandic: {{tt+|is|jörð|f}} * Ingrian: {{t|izh|maa}} * Italian: {{tt+|it|terreno|m}}, {{tt+|it|distesa|f}}, {{tt+|it|appezzamento|m}} * Japanese: {{tt+|ja|土地|tr=とち, tochí}}, {{tt+|ja|農地|tr=のうち, nōchi}} * Javanese: {{tt+|jv|lemah}} {{qualifier|ngoko}}, {{tt|jv|siti}} {{qualifier|krama}} * Khmer: {{tt+|km|ដី|tr=dəy}} * Korean: {{tt+|ko|땅}}, {{tt+|ko|토지(土地)}} * Mongolian: {{tt+|mn|хөдөө}} * Portuguese: {{tt+|pt|terra|f}} * Quechua: {{tt+|qu|allpa}} * Romanian: {{tt+|ro|pământ|n}} {{qualifier|arabil}}, {{tt+|ro|teren|n}} {{qualifier|cultivabil}} * Russian: {{tt+|ru|земля́|f}} * Serbo-Croatian: {{tt+|sh|zèmlja|f}} * Spanish: {{t+|es|vega|f}} * Swedish: {{tt+|sv|land|n}} {{trans-bottom}} {{trans-see|fright}} {{trans-top|electronics: conducting area on a board or chip}} * Finnish: {{tt|fi|johdinkuvio}} {{trans-bottom}} {{trans-top|in a compact disc, area which does not have pits}} * Finnish: {{tt+|fi|tasanko}} {{trans-bottom}} {{trans-top|travel: non-airline portion of an itinerary}} {{trans-bottom}} {{trans-top|space between the rifling grooves in a gun}} * Dutch: {{tt+|nl|trek|m}} * Finnish: {{tt+|fi|harja}} * Russian: {{tt|ru|[[по́ле]] [[нарез|наре́за]]|n}} }}<!-- close {{multitrans}} --> {{trans-bottom}} ==== ක්‍රියා පදය ==== {{en-verb}} # {{lb|en|intransitive}} To descend to a [[surface]], especially from the air. #: ''The plane is about to '''land'''''. # {{lb|en|dated}} To [[alight]], to descend from a vehicle. #* '''1859''', “Rules adopted by the Sixth Avenue Railway, N. Y.”, quoted in Alexander Easton, ''A Practical Treatise on Street or Horse-Power Railways'', page 108: #*: 10. You will be civil and attentive to passengers, giving proper assistance to ladies and children getting in or out, and never start the car before passengers are fairly received or '''landed'''. # {{lb|en|intransitive}} To come into rest. # {{lb|en|intransitive}} To arrive on land, especially a [[shore]] or [[dock]], from a body of water. #* {{quote-book|en|url=https://archive.org/details/pictorialhistory02taip/|title=A Pictorial History of the Republic of China: Its Founding and Development|volume=II|year=1981|location=Taipei|publisher=Modern China Press|OCLC=8883106 |page=303|pageurl=https://archive.org/details/pictorialhistory02taip/page/303/|column=1|text=Tatan and Erhtan are two small islands in the sea southwest of Kinmen.{{...}}A contingent of some 30 Communist troops tried to '''land''' at Erhtan, but were disarmed by Government defenders.}} # {{lb|en|transitive}} To bring to land. #: ''It can be tricky to '''land''' a helicopter''. #: ''Use the net to '''land''' the fish.'' #* {{RQ:Shakespeare Henry 6-3|III|iii|passage=I'll undertake to '''land''' them on our coast.}} # {{lb|en|transitive|informal}} To capture or arrest. #* {{quote-journal|1=en|date=June 1920|journal=w:The Electrical Experimenter|location=New York| page=151|column=3|passage=`He told me that he was certain that Coates shot at him. We threw out a drag and '''landed''' Coates within an hour.'}} # {{lb|en|transitive}} To [[acquire]]; to [[secure]]. #: {{ux|en|She '''landed''' a job at the company.}} #* {{quote-journal|en|date=May 5, 2012| author=Phil McNulty| title=Chelsea 2-1 Liverpool| work=BBC Sport| url=http://www.bbc.co.uk/sport/0/football/17878435| passage=As Di Matteo celebrated and captain John Terry raised the trophy for the fourth time, the Italian increased his claims to become the permanent successor to Andre Villas-Boas by '''landing''' a trophy.}} #* {{quote-journal|en|date=2024 May 1|title=Network News: Danes plan fully automated trains|journal=RAIL|issue=1008|page=18|text=Siemens has '''landed''' a contract to upgrade signalling on the entire 170km (105-mile) S-Bane suburban network in Copenhagen to pave the way for fully automated trains.}} # {{lb|en|slang|transitive}} To succeed in having sexual relations with; to [[score]] #: {{ux|en|Too ugly to ever '''land''' a chick}} # {{lb|en|transitive}} (''of a blow'') To [[deliver]]. #: ''If you '''land''' a knockout blow, you’ll win the match'' # {{lb|en|intransitive}} (''of a punch'') To [[connect]] #: {{ux|en|If the punches '''land''', you might lose a few teeth!}} # {{lb|en|intransitive}} To go down well with an audience. #: {{ux|en|Some of the comedian's jokes failed to '''land'''.}} #* {{quote-av |en |date=January 13, 2023 |author=Anonymous ("Jackal Comment") |time=11:08 |title=CORRECTIONS Episode 68: Week of Monday, January 9 |series=w:Late Night with Seth Meyers |publisher=w:YouTube |url=https://www.youtube.com/watch?v=ayvrCwR5nrg |text=We told an Amelia Earhart joke yesterday- did not go great with the audience. Someone wrote: "You can't be surprised when an Amelia Earhart joke doesn't '''land'''."}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col4|en|title=terms derived from the verb ''land'' |black land |crash-land|land down |hard-land |hard land |soft-land |soft land |land on one's bridge |land up |land in someone's lap |reland|land on|land upon|land with }} === නිරුක්තිය 2 === From {{inh|en|enm|*land}}, from {{inh|en|ang|hland}}. More at {{m|en|lant}}. ==== නාම පදය ==== {{en-noun|-}} # [[lant]]; [[urine]] === මූලාශ්‍ර === <references/> * {{R:Webster 1913}} {{catlangname|en|ergative verbs}} {{C|en|Landforms}} ==Afrikaans== === නිරුක්තිය === {{root|af|ine-pro|*lendʰ-|id=land}} From {{inh|af|nl|land}}, from {{inh|af|odt|lant}}, from {{inh|af|gem-pro|*landą}}, from {{inh|af|ine-pro|*lendʰ-||land, heath|id=land}}. === උච්චාරණය === * {{IPA|af|/lant/|[länt]|[lant]}} * {{audio|af|LL-Q14196 (afr)-Oesjaar-land.wav}} === නාම පදය === {{af-noun|lande}} # [[country]]; [[nation]] == ඩෙන්මාර්ක == === උච්චාරණය === * {{IPA|da|/lanˀ/|[lanˀ]}} * {{rhymes|da|and|s=1}} === නිරුක්තිය 1 === {{root|da|ine-pro|*lendʰ-|id=land}} From {{inh|da|gmq-oda|land}}, from {{inh|da|non|land}}, from {{inh|da|gem-pro|*landą}}, cognate with {{cog|en|land}}, {{cog|de|Land}}. ==== නාම පදය ==== {{da-noun|et|e}} # [[country]] {{q|a geographical area that is politically independent}} #: {{synonyms|da|stat|nation}} # {{lb|da|uncountable|chiefly|definite singular}} [[country]], [[countryside]] {{q|rural areas outside the cities with agricultural production}} # {{l|en|land}} {{q|part of Earth that is not covered in water}} # {{lb|da|as the last part of compounds}} {{non-gloss|a large area or facility dedicated to a certain type of activity or merchandise}} ===== භාවිත සටහන් ===== In compounds: land-, lande-, lands-. ===== වරනැඟීම ===== {{da-decl|et|e}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col-top|2|Terms derived from {{l|da|land||country, nation}}}} * {{l|da|eventyrland}} * {{l|da|fædreland}} * {{l|da|landeplage}} * {{l|da|landsmand}} * {{l|da|landsdækkende}} * {{l|da|naboland}} * {{l|da|olieland}} {{col-bottom}} {{col-top|2|Terms derived from {{l|da|land||countryside}}}} * {{l|da|agerland}} * {{l|da|landbrug}} * {{l|da|landluft}} * {{l|da|landmand}} * {{l|da|landmiljø}} {{col-bottom}} {{col-top|2|Terms derived from {{l|da|land||(dry) land}}}} * {{l|da|fastland}} * {{l|da|lande}} * {{l|da|landfast}} {{col-bottom}} {{col-top|2|Terms derived from {{l|da|land||amusement park}}}} * {{l|da|badeland}} * {{l|da|legeland}} * {{l|en|Legoland}} * {{l|da|sommerland}} * {{l|da|vandland}} {{col-bottom}} === නිරුක්තිය 2 === {{nonlemma}} ==== ක්‍රියා පදය ==== {{head|da|verb form}} # {{inflection of|da|lande||imp|nocat=1}} == ඕලන්ද == === උච්චාරණය === * {{IPA|nl|/lɑnt/}} * {{audio|nl|Nl-land.ogg}} * {{hyphenation|nl|land}} * {{rhyme|nl|ɑnt|s=1}} === නිරුක්තිය 1 === {{root|nl|ine-pro|*lendʰ-|id=land}} From {{inh|nl|dum|lant}}, from {{inh|nl|odt|lant}}, from {{inh|nl|gmw-pro|*land}}, from {{inh|nl|gem-pro|*landą}}, from {{der|nl|ine-pro|*lendʰ-||land, heath|id=land}}. ==== නාම පදය ==== {{nl-noun|n|-en|+}} # {{l|en|land}}, [[country]], [[realm]], [[territory]] #* '''1967''', E. Rijpma & F. G. Schuringa, edited by Jan van Bakel, ''Nederlandse spraakkunst'', 21st ed., p. 24, § 8 (also [https://www.dbnl.org/tekst/rijp001nede01_01/ online at dbnl.org]): #*: {{quote|nl|In ons '''land''' werd door de Westgermaanse volksstammen het Nederduits (Nederfrankisch en Saksisch) en het Fries gesproken.<br/>Het Nederfrankisch wordt wel verdeeld in: (1) het Hollands-Frankisch (Hollands, Utrechts, Westveluws, Zeeuws, Westvlaams); (2) het Brabants-Frankisch (Westbetuws, Westbrabants, Antwerps, Kempens, Leuvens, Aalsters, Oostvlaams); (3) het Limburgs-Frankisch (Gelders-Limburgs, Limburgs, Oostbrabants).<br/>Het Saksisch (Gelders-Overijssels, Oostveluws, Drents, Gronings) wordt gesproken in het noordoosten van ons '''land''', van Groningen tot de Oude Ijssel.}} # {{l|en|land}} {{gloss|part of Earth not covered by water}} # {{lb|nl|Netherlands|Antilles}} a [[constituent country]] of the Kingdom of the Netherlands; the [[territorial]] [[government]] of an overseas constituent country #* {{quote-web|nl |title=Gerechtshof: lhbt’s mogen trouwen op Aruba en Curaçao |trans-title=Appellate court: LGBT people allowed to marry in Aruba and Curaçao |author=Oscar van Dam; John Samson |url=https://caribischnetwerk.ntr.nl/2022/12/06/gerechtshof-lhbts-mogen-trouwen-op-aruba-en-curacao/ |work={{w|Omroep NTR|Caribisch Netwerk}} |date=6 December 2022 |access-date=14 December 2022 |text=Het zijn twee verschillende uitspraken die vandaag door het gerechtshof achter elkaar zijn gedaan. Voor Aruba gaat het om het een zaak van Fundacion Orguyo Aruba en twee vrouwen tegen het '''Land''' Aruba. Voor Curaçao gaat het om een zaak van Human Rights Caribbean Foundation en twee vrouwen tegen het '''Land''' Curaçao. |translation=Today's rulings are two separate ones handed down by the appellate court back-to-back. For Aruba, it involves a case brought by Fundacion Orguyo Aruba and two women against the '''government''' of Aruba. For Curaçao, it involves a case brought by Human Rights Caribbean Foundation and two women against the '''government''' of Curaçao.}} # {{lb|nl|history|chiefly in compounds}} the territorial government or state authority in a Dutch colony or overseas territory in the West Indies ===== ව්‍යුත්පන්න යෙදුම් ===== {{col|nl |achterland |Adélieland |Avondland |bijland |binnenland |boerenland |braakland |buitenland |de Russen zijn in het land |eiland |hoogland |in den lande |kernland |laagland |landadel |landbouw |landdag |landdrost |landen |landerij |landsdienaar |landgenoot |landjepik |landleeuw |landhuis |landleger |landman |landmassa |landmijn |landraad |landrot |landsbelang |landsneger |landschap |landskind |landsknecht |landsregeling |landsslaaf |landstorm |landsverdediging |landsverordening |landsvergadering |landvoogd |landweer |moederland |niemandsland |platteland |proletariërs aller landen, verenigt u |thuisland |vaderland |vasteland |voorland |zeeland |Zeeland }} =====Descendants===== * {{desc|af|land}} * {{desc|brc|alanda|landi}} * {{desc|dcr|land|lant|lan}} * {{desc|skw|land|lantta}} * {{desc|srn|lanti|bor=1}} {{see desc}} * {{desc|unc=1|jv|ꦭꦤ꧀}} === නිරුක්තිය 2 === {{nonlemma}} ==== ක්‍රියා පදය ==== {{head|nl|verb form}} # {{infl of|nl|landen||bare-verb}} {{C|nl|Landforms}} ==Elfdalian== === නිරුක්තිය === {{root|ovd|ine-pro|*lendʰ-|id=land}} From {{inh|ovd|non|land}}, from {{inh|ovd|gem-pro|*landą}}, from {{der|ovd|ine-pro|*lendʰ-||land, heath|id=land}}. Cognate with {{cog|sv|land}}. === නාම පදය === {{head|ovd|noun|g=n}} # [[country]]; [[nation]] ==== වරනැඟීම ==== {{ovd-decl-blank-full<!-- -->|title=''land''<!-- -->|stem=strong ''a''-stem<!-- -->|g=neuter<!-- -->|nsi=land<!-- -->|asi=land<!-- -->|dsi=lande<!-- -->|gsi=—<!-- -->|nsd=landeð<!-- -->|asd=landeð<!-- -->|dsd=landę<!-- -->|gsd=—<!-- -->|npi=land<!-- -->|api=land<!-- -->|dpi=landum<!-- -->|gpi=—<!-- -->|npd=landę<!-- -->|apd=landę<!-- -->|dpd=landum(e)<!-- -->|gpd=—<!-- -->}}<!-- -->{{catlangname|ovd|a-stem nouns}}<!-- --><noinclude> {{C|ovd|Law|Collectives|Geography}} ==Faroese== === උච්චාරණය === * {{IPA|fo|/lant/}} * {{rhymes|fo|ant}} === නිරුක්තිය 1 === {{root|fo|ine-pro|*lendʰ-|id=land}} From {{inh|fo|non|land}}, from {{inh|fo|gem-pro|*landą}}, from {{der|fo|ine-pro|*lendʰ-||land, heath|id=land}}. ==== නාම පදය ==== {{fo-noun|n|lands|lond}} # {{l|en|land}} # [[coast]] # [[country]], [[nation]] # [[ground]], [[soil]] # the [[state]] ===== වරනැඟීම ===== {{fo-decl-noun-n8|l|nd}} ===== ආශ්‍රිත යෙදුම් ===== * {{l|fo|landa}} === නිරුක්තිය 2 === From {{inh|fo|non|hland}}, from {{inh|fo|gem-pro|*hlandą}}, from {{der|fo|ine-pro|*klān-||liquid, wet ground}}. Cognate with {{cog|lt|klanas||pool, puddle, slop}}. ==== නාම පදය ==== {{fo-noun|n|lands|-}} # {{lb|fo|uncountable}} [[urine]] ===== වරනැඟීම ===== {{fo-decl-noun-n8-s|l|nd}} == ප්‍රංශ == === නාම පදය === {{fr-noun|m|+|länder}} # {{l|en|land}} {{gloss|region of Germany or Austria}} ==Gothic== === රෝමානුකරණය === {{got-rom}} # {{romanization of|got|𐌻𐌰𐌽𐌳}} == අයිස්ලන්ත == === නිරුක්තිය === {{root|is|ine-pro|*lendʰ-|id=land}} From {{inh|is|non|land}}, from {{inh|is|gem-pro|*landą}}, from {{der|is|ine-pro|*lendʰ-||land, heath|id=land}}. === උච්චාරණය === * {{IPA|is|/lant/}} * {{rhymes|is|ant|s=1}} === නාම පදය === {{is-noun|@@}} # {{lb|is|uncountable}} {{l|en|land}}, [[earth]], [[ground]] (part of the Earth not under water) # {{lb|is|countable}} [[country]] #: {{ux|is|Japan er fallegt '''land'''.|Japan is a beautiful '''country'''.}} # {{lb|is|uncountable}} [[countryside]], [[country]] #: {{ux|is|Ég bý úti á '''landi'''.|I live in the '''country'''.}} # {{lb|is|uncountable}} land, as a mass noun, measurable in quantity # {{lb|is|countable}} [[tract]]s of land, an [[estate]] #: {{ux|is|Ég á þetta '''land''' og allt sem er á því.|I own this '''land''' and everything on it.}} ==== වරනැඟීම ==== {{is-ndecl|n}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col3|is|láta lönd og leið<t:to not [[give a damn]] about something> |draga að landi<t:to [[eat]] someone's [[leftover]]s> |draga í land<t:to [[give in]] a little> |eiga langt í land<t:of something- to have a long way to go/to be finished> |föðurland |landlægur |sinn er siður í landi hverju |útland |með lögum skal land byggja |leggja land undir fót |Ísland |Grænland |Frakkland |Finnland |Svartfjallaland |Þýskaland }} == මධ්‍යකාලීන ඉංග්‍රීසි == === නාම පදය === {{head|enm|noun}} # {{alt form|enm|lond}} ==Norwegian Bokmål== === උච්චාරණය === * {{IPA|nb|/lɑnː/}} * {{rhymes|nb|ɑnː}} === නිරුක්තිය 1 === {{root|nb|ine-pro|*lendʰ-|id=land}} From {{inh|nb|non|land}}, from {{der|nb|gem-pro|*landą}}, from {{der|nb|ine-pro|*lendʰ-||land, heath|id=land}}. ==== නාම පදය ==== {{nb-noun-n1}} # [[country]] # {{l|en|land}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|nb |beiteland |Det hellige land |Dronning Maud Land |drømmeland |fastland |fjelland |foregangsland |grenseland |hjemland |i land |Ildlandet |ingenmannsland |innenlandsk |innland |jordbruksland |landareal |landbruk |landegrense |landemerke |landesorg |landfast |landgang |landkode |landkrabbe |landlig |landmasse |landområde |landsby |landsbygd |landsdel |landsgjennomsnitt |landskilpadde |landskode |landslag |landsmann |landsmål |landsomfattende |landssviker |lavland |medlemsland |middelhavsland |moderland |naboland |omland |opprinnelsesland |produsentland |pålandsvind |sletteland |Sørlandet |utenlandsk |utland |utviklingsland |Vestlandet |Østlandet }} === නිරුක්තිය 2 === ==== ක්‍රියා පදය ==== {{head|nb|verbf}} # {{infl of|nb|lande||imp}} === මූලාශ්‍ර === * {{R:The Bokmål Dictionary}} ==Norwegian Nynorsk== === වෙනත් ආකාර === * {{alt|nn|lainnj||eye dialect spelling}} === උච්චාරණය === * {{IPA|nn|/lanː/|/land/}} === නිරුක්තිය 1 === {{root|nn|ine-pro|*lendʰ-|id=land}} From {{inh|nn|non|land}}, from {{der|nn|gem-pro|*landą}}, from {{der|nn|ine-pro|*lendʰ-||land, heath|id=land}}. Akin to {{cog|en|land}}. ==== නාම පදය ==== {{nn-noun-n1}} # [[country]] #: {{ux|nn|Noreg er eit '''land''' i nord.|Norway is a '''country''' in the north.}} # {{l|en|land}} #: {{ux|nn|Det var mangel på '''land''' for jordbruk.|There was a lack of '''land''' for agriculture.}} # [[coast]], [[dry land]] ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|nn |Austlandet |beiteland |Dronning Maud Land |fastland |fjelland |grenseland |i land |ingenmannsland |innanlandsk |innland |jordbruksland |landareal |landbruk |lande,landa |landegrense |landemerke |landesorg |landfast |landgang |landkode |landkrabbe |landleg |landmasse |landområde |landsby |landsdel |landsgjennomsnitt |landskode |landslag |landsmann |landsmål |landssvikar |medlemsland |middelhavsland |moderland |naboland |omland |produsentland |pålandsvind |sletteland |Sørlandet |utanlandsk |utland |utviklingsland |Vestlandet }} === නිරුක්තිය 2 === From {{inh|nn|non|hland}}, from {{inh|nn|gem-pro|*hlandą}}. ==== නාම පදය ==== {{nn-noun-n1}} # [[urine]] from [[livestock]] === මූලාශ්‍ර === * {{R:The Nynorsk Dictionary}} {{C|nn|Bodily fluids}} ==Old Danish== === නිරුක්තිය === {{root|gmq-oda|ine-pro|*lendʰ-|id=land}} From {{inh|gmq-oda|non|land}}, from {{inh|gmq-oda|gem-pro|*landą}}. === නාම පදය === {{head|gmq-oda|noun|g=n|genitive|lanz|plural|land}} # {{l|en|land}} #* {{quote-text|gmq-oda|year=1241|title=Codex Holmiensis|section=prologue |passage=Mæth logh skal '''land''' byggæs. |translation=''With law shall '''land''' be built.''}} ==== වරනැඟීම ==== {{gmq-oda-decl-scy|land|landit|land|landin|land|landit|land|landin|landi|landinu|landum|landunum|lanz|lanzins|landa|landanna}} ====Descendants==== * {{desc|da|land}} == පුරාතන ඉංග්‍රීසි == === වෙනත් ආකාර === * {{alter|ang|lond|lænd}} === නිරුක්තිය === {{etymon|ang|inh|gmw-pro>*land>area of ground|id=area of ground}} From {{inh|ang|gmw-pro|*land}}, from {{inh|ang|gem-pro|*landą}}. See there for more. === උච්චාරණය === * {{ang-IPA|land|lɔnd}} === නාම පදය === {{ang-noun|n}} # {{l|en|land}} (dry portion of the Earth's surface) # a [[country]] # [[region]] within a country: [[district]], [[province]] # the [[country]], [[countryside]] # [[owned]] or tilled land, an [[estate]] ==== භාවිත සටහන් ==== * Using the word ''land'' is the most common way to form country names. This can be done in one of two ways: ** Prefixing the name of a people to the word ''land''. Ex: {{m|ang|Franca||French person}} → {{m|ang|Francland||France}}, {{m|ang|Swēo||Swede}} → {{m|ang|Swēoland||Sweden}}, and {{m|ang|*Unger||a Hungarian}} → {{m|ang|Ungerland||Hungary}}. ** Prefacing ''land'' with the genitive plural form of a people, producing the literal meaning “land of ____ people.” Ex: {{m|ang|Egypta land|t=Egypt|lit=land of the Egyptians}}, {{m|ang|Siġelhearwena land|t=Ethiopia|lit=land of the Ethiopians}}. * However, country names can also be formed other ways. For instance, words other than ''land'' are used: {{m|ang|Dene||a Dane}} → {{m|ang|Denemearc|t=Denmark|lit=Dane borderland}}. It is also very common to use the name of a people for the country they inhabit: ''On þām dagum wæs Alexander ġeboren on <u>Crēcum</u> swā swā miċel ȳst cōme ofer ealne middanġeard'' (“In those days, Alexander was born in <u>Greece</u> [lit. ''in the Greeks''] like a great storm coming over the whole world”), ''Ymb twā ġēar þæs þe hē cōm of <u>Francum</u>, hē ġefōr'' (”Two years after he came from <u>France</u> [lit. ''from the Franks''], he died”). In addition, country names are sometimes loaned directly from Latin: {{m|ang|Arabia}}, {{m|ang|Isrāhēl}}, {{m|ang|Italia}}, {{m|ang|Syria}}. Finally, some country names are simply idiomatic: {{m|ang|Norþweġ|t=Norway|lit=north way}}. * Unlike most words, ''land'' undergoes {{w|i-umlaut}} when combined with the suffix {{m|ang|-isċ}}: {{m|ang|inlendisċ||native}}, {{m|ang|uplendisċ||rural}}. ==== වරනැඟීම ==== {{ang-decl-noun-a-n|land}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col4|ang|title=Derived prefix terms|landādl<t:nostalgia for one's homeland><g:f> |landāgend<t:landowner><g:m> |landār<t:land holdings, a landed estate><g:f> |landbegang<t:land tilling or dwelling><g:m> |landbegenġa<t:husbandman, farmer><g:m> |landbōc<t:land charter><g:f> |landbrǣċe<t:land breaking or ploughing><g:m> |landbūend<t:husbandman, a native><g:m> |landbūend<t:a settlement, colony><g:f> |landbūende<t:dwelling in a land, living on earth> |landbūnes<t:a settlement, a colony><g:f> |landċēap<t:fine or tax on bought land><g:m> |landcofa<t:the old city of Shechem><g:m> |landefne<t:amount of land holdings><g:n> |landfæsten<t:a land fastness, a stronghold><g:n> |landfeoh<t:a land rent or tax><g:n> |landfierd<t:land army><g:f> |landfierding<t:terrestrial military operations><g:f> |landfolc<t:the people of the land><g:n> |landfruma<t:prince><g:m> |landġehwearf<t:land swap><g:n> |landġemaca<t:neighbor><g:m> |landġemǣre<t:border><g:n> |landġemierċe<t:border><g:n> |landġesċeaft<t:the earth's creation & created things><g:n> |landġeweorc<t:a land's main stronghold><g:n> |landġewyrpe<t:earthen heaps cast up><g:n> |landhæbbende<t:landowning, land-having as a ruler> |landhæfen<t:land holdings><g:f> |landhere<t:land army><g:m> |landhlāford<t:landlord><g:m> |landhredding<t:redemption of mortgaged land><g:f> |landielf<t:land elf><g:f> |landlagu<t:law in a district><g:f> |landlēas<t:landless> |landlēod<t:an inhabitant or the people of a land><g:m> |landlēoda<t:a native of a land><g:m> |landlyre<t:loss of land><g:m> |landmann<t:a native of a land><g:m> |landmearc<t:boundary of a land or an estate><g:f> |landmearc<t:belonging to a land's boundaries> |landmearca<t:a territory><g:m> |landopenung<t:a breaking up of land><g:f> |landrǣden<t:district or country ordinance, disposition, or institution><g:f> |landrest<t:grave><g:f> |landrīċa<t:landlord><g:f> |landrīċe<t:territory><g:n> |landriht<t:the law of the land><g:n> |landsǣta<t:settler, colonist><g:m> |landsċeap<t:district or swath of land, landscape><g:n> |landsċearu<t:a share or deal of land><g:f> |landsċipe<t:a region or swath of land><g:m> |landseten<t:land possession or occupation thereof><g:f> |landsetla<t:a settler or tenant><g:m> |landsidu<t:custom of the land><g:m> |landsittende<t:occupying land> |landsōcn<t:land or country seeking><g:f> |landspēd<t:land holdings><g:f> |landspēdiġ<t:rich in land holdings or estates> |landsplott<t:a small plot of ground><g:m> |landstede<t:a land><g:m> |landstyċċe<t:a small plot of land><g:n> |landwaru<t:people of land, a land><g:f> |landweard<t:the warden of a land, a prince><g:m> |landwela<t:the earth's wealth><g:m> |lendan<t:to land> }} {{col4|ang|title=Derived suffix terms| |ātland<t:land for the growing of oats, oatland> |ælmesland<t:land bequeathed in frankalmoigne, i.e. rich in land is rich in soul><g:m> |bēanland<t:land for the growing of beans, beanland> |behātland<t:promised land> |belandian<t:to deprive of land, dispossess> |belendan<t:to deprive of land, dispossess> |bēodland<t:land to defray food consumption, as in a monastery> |berland<t:land for the growing of barley, bearland> |bōcland<t:freehold> |bondeland<t:bond or leased land under written conditions> |burgland<t:city-land, urban landscape><g:n> |būrland<t:peasant land> |ċēapland<t:bought land, compare to landcēap> |ċiricland<t:church-land, land belonging to the church> |dūnland<t:down or hilly land> |ealdland<t:long untilled or unploughed land> |eardland<t:fatherland> |earningland<t:land earned or made freehold> |eleland<t:a strange or foreign land> |efnland<t:even land, plains> |eringlond<t:arable land><g:n> |etelond<t:pasture land><g:n> |ēþelland<t:homeland> |fæstland<t:fortified land> |feldland<t:a field or plain, antonym to dūnland> |fenland<t:fenland> |feohland<t:pasture land> |feorland<t:a far-off land><g:n> |folcland<t:land of the people> |fōstorland<t:land for fostering> |friþland<t:a land at peace with one's own> |gafolland<t:tenant land> |ġebūrland<t:peasant land/farmland> |ġedālland<t:land that may get owned by separate people, divided common land> |ġehātland<t:promised land> |ġehlotland<t:land doled out by lot> |ġelanda<t:fellow countryman><g:m> |ġelandian<t:to land> |ġenēatland<t:tenant land> |ġerēfland<t:tributary land> |hǣþfeldland<t:moorland or heathland> |hēafodland<t:a headland or boundary> |hēahland<t:the high ground> |hēahlandrīċa<t:a justice of the peace> |hereġeatland<t:obligatory bequest of land to a lord or king> |hwǣteland<t:land for the growing of wheat> |īeġland<t:island> |ierfeland<t:heritable land> |ierþland<t:arable land> |inland<t:Demesne land> |lǣnland<t:loaned or leased land> |līnland<t:land for the growing of flax or linseed> |mǣdland<t:meadow><g:m> |mæstland<t:land for the forthteeing of mast, i.e. tree nuts> |mearcland<t:borderland, or wasteland beyond the tilled land, marshland> |merisċland<t:marshland> |mōrland<t:moorland, the wild & hilly hinterland> |muntland<t:mountainous land> |mynsterland<t:land belonging to the monastery> |nēahland<t:neighboring country> |norþland<t:a northern land> |rēfland<t:sundorġerēfland, i.e. particular tributary lands> |sacerdland<t:land set aside for priests> |sǣland<t:maritime district> |sandland<t:the seashore> |sċrūdland<t:a land grant to buy clothing> |sīdland<t:wide open land> |sundorland<t:private land> |sūþland<t:a southern land> |tēoþungland<t:land subject to tithe payment> |timberland<t:timberland> |tūnland<t:land of a farm or estate> |þēodland<t:a populated region or country> |unfriþland<t:a hostile country> |unland<t:what is not land: sea, marsh, etc.> |uppeland<t:rural country away from town> |ūtanlandes<t:abroad> |ūtland<t:a foreign country or land> |wealhland<t:a foreign country or land> |wīdland<t:broad land, the earth's surface> |wīnland<t:grapevine land, wine producing region> }} {{col4|ang|title=Derived national terms|Bretland<t:Britain> |Cwēnland<t:historical Lapland, or roughly Finland> |Cumberland<t:Cumberland> |Egypta land<t:Egypt> |Ēstland<t:Estonia> |Finna land<t:Finland> |Francland<t:France> |Frīsland<t:Friesland, Frisia><g:n> |Gotland<t:Gothland, or Götaland, i.e. a region of Norway> |Grēcland<t:Greece> |Hālgoland<t:Hålogaland, a region of Norway> |Īra land<t:Ireland> |Langaland<t:a Danish island in the Baltic Sea> |Scedeland<t:Scania> |Sċotland<t:a name for Ireland before the Scottish left it behind> |Seaxland<t:Saxony> |Swēoland<t:Sweden> |Ungerland<t:Hungary> |Wineda land<t:land of the Slavs> |Wihtland<t:Isle of Wight> |Wīsleland<t:the land around the Vistula river in Poland> }} ====Descendants==== * {{desc|enm|lond}} ** {{desc|en|land}} ** {{desc|sco|laund|land}} ** {{desc|yol|lhoan|lone}} === මූලාශ්‍ර === * {{R:ang:BT}} ==Old Irish== === නාම පදය === {{sga-noun}} # {{alternative spelling of|sga|lann}} ===Mutation=== {{sga-mutation|l|and}} ==Old Norse== === නිරුක්තිය === {{root|non|ine-pro|*lendʰ-|id=land}} From {{inh|non|gem-pro|*landą}}, from {{der|non|ine-pro|*lendʰ-||land, heath|id=land}}. Cognate with {{cog|osx|land}}, {{cog|ofs|land}}, {{m|ofs|lond}}, {{cog|ang|land}}, {{m|ang|lond}}, {{cog|odt|lant}}, {{cog|goh|lant}}, {{cog|got|𐌻𐌰𐌽𐌳}}. === නාම පදය === {{non-noun|n|lands|lǫnd}} # {{l|en|land}} ==== වරනැඟීම ==== {{non-decl-n-a|land|lǫnd}} ====Descendants==== * {{desc|is|land}} * {{desc|fo|land}} * {{desc|nrn|land}} * {{desc|nn|land}} ** {{desc|crp-rsn|лань}} * {{desc|gmq-osw|land}} ** {{desc|ovd|land}} ** {{desc|sv|land}} * {{desc|gmq-oda|land}} ** {{desc|da|land}} *** {{desc|nb|land}} ** {{desc|gmq-scy|lann}} * {{desc|gmq-ogt|land}} ** {{desc|gmq-gut|land|lande|landi}} === වැඩිදුර් කියවීම සඳහා === * {{R:non:Zoega}} {{C|non|Landforms}} ==Old Saxon== === නිරුක්තිය === {{root|osx|ine-pro|*lendʰ-|id=land}} {{dercat|osx|gem-pro|ine-pro|inh=1}} From {{inh|osx|gmw-pro|*land}}. Cognate with {{cog|ang|land}}, {{m|ang|lond}}, {{cog|ofs|land}}, {{m|ofs|lond}}, {{cog|nl|land}}, {{cog|goh|lant}} ({{cog|de|Land}}), {{cog|non|land}} ({{cog|sv|land}}), {{cog|got|𐌻𐌰𐌽𐌳}}. The {{cog|ine-pro|-}} root is also the source of {{cog|cel-pro|*landā}} ({{cog|cy|llan||enclosure}}, {{cog|br|lann||heath}}). === උච්චාරණය === * {{IPA|osx|/lɑnd/}} === නාම පදය === {{osx-noun|g=n}} # {{l|en|land}} ==== වරනැඟීම ==== {{osx-decl-noun-a-n|land}} ====Descendants==== * {{desc|gml|lant}} ** {{desc|nds|Land}} *** {{desc|nds-nl|laand}} *** {{desc|nds-de|Land}} ** {{desc|pdt|Launt}} ==== මූලාශ්‍ර ==== {{R:osx:Kobler}} ==Old Swedish== === නිරුක්තිය === {{root|gmq-osw|ine-pro|*lendʰ-|id=land}} From {{inh|gmq-osw|non|land}}, from {{inh|gmq-osw|gem-pro|*landą}}. === නාම පදය === {{head|gmq-osw|noun|g=n}} # {{l|en|land}} ==== වරනැඟීම ==== {{gmq-osw-decl-noun-a-n|land}} ====Descendants==== * {{desc|ovd|land}} * {{desc|sv|land}} == පෝලන්ත == {{wp|lang=pl}} === නිරුක්තිය === {{root|pl|ine-pro|*lendʰ-|id=land}} {{bor+|pl|de|Land}}, from {{der|pl|gmh|lant}}, from {{der|pl|goh|lant}}, from {{der|pl|gmw-pro|*land}}, from {{der|pl|gem-pro|*landą}}, from {{der|pl|ine-pro|*lendʰ-|t=land, heath|id=land}}. === උච්චාරණය === {{pl-pr|a=LL-Q809 (pol)-Olaf-land.wav}} === නාම පදය === {{pl-noun|m-in}} # {{w|Länder|Land}} {{gl|federal state in Austria and Germany}} #: {{syn|pl|kraj związkowy}} #: {{coordinate terms|pl|stan|kraj|t2=krai}} # {{lb|pl|Poznań}} [[countryside]] {{gl|rural area}} #: {{syn|pl|prowincja|wieś}} ==== වරනැඟීම ==== {{pl-decl-noun-m-in}} === වැඩිදුර් කියවීම සඳහා === * {{R:pl:WSJP}} * {{R:pl:PWN}} {{C|pl|Administrative divisions}} == රුමේනියානු == === නිරුක්තිය === {{root|ro|ine-pro|*lendʰ-|id=land}} {{bor+|ro|de|Land}}. === නාම පදය === {{ro-noun|n|landuri}} # {{l|en|land}} {{gl|German and Austrian province}} ==== වරනැඟීම ==== {{ro-noun-n-uri}} {{C|ro|Administrative divisions}} == ස්පාඤ්ඤ == === නිරුක්තිය === {{root|es|ine-pro|*lendʰ-|id=land}} {{bor+|es|de|Land}}. === නාම පදය === {{es-noun|m}} # one of the [[federal]] [[state]]s of [[Germany]] #* {{quote-web |es |date=2020-01-29 |work=La Vanguardia |title=El coronavirus ya se transmite fuera de China y se teme por su afectación al Mobile |url=https://www.lavanguardia.com/vida/20200129/473204183924/coronavirus-china-mobile.html |passage=Alemania confirmó ayer los cuatro primeros casos de coronavirus de Wuhan en su territorio, todos pertenecientes a la misma empresa de componentes de automóvil del '''land''' alemán de Baviera.|t=Germany yesterday confirmed the first four cases of Wuhan coronavirus on its territory, all belonging to the same automotive component company from the German '''land''' of Bavaria.}} === වැඩිදුර් කියවීම සඳහා === * {{R:es:DRAE}} {{C|es|Administrative divisions}} == ස්වීඩන් == {{wikipedia|lang=sv}} === නිරුක්තිය === {{root|sv|ine-pro|*lendʰ-|id=land}} From {{inh|sv|gmq-osw|land}}, from {{inh|sv|non|land}}, from {{inh|sv|gem-pro|*landą}}, from {{der|sv|ine-pro|*lendʰ-||land, heath}}. === උච්චාරණය === * {{IPA|sv|/land/|[l̪an̪ːd̪]|q3=colloquial|/lan/}} * {{audio|sv|Sv-land.ogg}} * {{rhymes|sv|and}} === නාම පදය === {{sv-noun|n}} # a [[country]], a {{l|en|land}} (independent political entity) #: {{ux|sv|Sverige är ett '''land'''|Sweden is a '''country'''}} #: {{ux|sv|'''länderna''' i EU|'''the countries''' in the EU}} #: {{ux|sv|främmande '''länder'''|foreign '''lands'''}} #: {{ux|sv|fjärran '''länder'''|distant '''lands'''}} ==== වරනැඟීම ==== {{sv-noun-irreg-n|3=länder|4=länderna}} ==== අමතර අවධානයට ==== * {{l|sv|nation}} * {{l|sv|stat}} === නාම පදය === {{sv-noun|n}} # {{lb|sv|uncountable}} {{l|en|land}} (as opposed to sea) #: {{ux|sv|Om man inte har lust att vara på en båt så kan man vara på '''land''' istället|If you don't feel like being on a boat, you can be on '''land''' instead}} #: {{ux|sv|'''land''' och hav|'''land''' and sea}} #: {{ux|sv|ha '''land''' i sikte|have '''land''' in sight}} #: {{ux|sv|'''Land''' i sikte!|'''Land''' ahoy!}} # {{lb|sv|usually in the definite}} [[countryside]], [[country]] #: {{ux|sv|Vi bor på '''landet'''|We live in '''the countryside'''}} #: {{ux|sv|Vi är ute på '''landet'''|We are out in the '''country'''}} #: {{ux|sv|livet på '''landet'''|life in '''the countryside'''}} #: {{ux|sv|stad och '''land'''|town and '''country'''}} #: {{ux|sv|laglöst '''land'''|lawless '''land'''}} #* {{quote-song|sv|year=2007|author=w:Laser Inc|title=w:Det var en gång en fågel|trans-title=Once upon a time, there was a bird|url=https://www.youtube.com/watch?v=QrqZ-L7fHe8|text=Det var en gång en liten fågel. Ja, en fågel. Han bodde '''på landet''', och Roger hette han. Han ville gärna leka med sina vänner, med sina vänner, men det fick inte han. Men denna historia slutar sorgligt, för Roger blev skjuten, skjuten i magen av gamle jägar'n [jägaren] Pär. Han ville hem och äta, äta en fågel med lite potäter, men Roger hann iväg.|t=Once upon a time, there was a little bird. Yes, a bird. He lived '''in the countryside''', and Roger was his name. He wanted to play with his friends ["He wanted gladly to play with his friends," in the sense of, "He wanted, with keenness, to play with his friends" – the translation skips the {{m|sv|gärna}} as it doesn't make much difference to the meaning], with his friends, but [that – to play with his friends] he didn't get to. But this story ends sadly, because Roger was shot, shot in the stomach by old hunter Pär ["den gamle jägaren Pär" matches "the old hunter Pär" – skipping "{{l|sv|den}}" makes "jägaren Pär" sound [[lexicalized]]]. He wanted to go home and eat, eat a bird with some potatoes, but Roger got away [in time].}} ==== භාවිත සටහන් ==== See {{m|sv|mark}} for some other senses of ''land''. ==== වරනැඟීම ==== {{sv-noun-unc-irreg-n|2=landet}} ==== අමතර අවධානයට ==== * {{l|sv|backe}} * {{l|sv|landsbygd}} * {{l|sv|mark}} * {{l|sv|på landbacken||on land (emphasizing not at sea)}} === නාම පදය === {{sv-noun|n}} # a smaller piece of land for small-scale cultivation; a [[patch]], a [[garden]] [[plot]], etc. #: {{ux|sv|ett jordgubbs'''land'''|a strawberry '''patch'''}} #: {{ux|sv|ett potatis'''land'''|a potato '''patch'''}} #: {{ux|sv|påta i '''landet'''|potter in the '''garden plot'''}} ==== වරනැඟීම ==== {{sv-infl-noun-n-zero}} ==== ව්‍යුත්පන්න යෙදුම් ==== * {{l|sv|grönsaksland||vegetable patch / plot}} * {{l|sv|trädgårdsland||garden plot}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col3|sv|arabland |Dalsland |drömland |England |Estland |fastland |favoritland |Finland |Gotland |grannland |grönsaksland |Gästrikland |Götaland |Halland |Holland |Hälsingland |högland |i-land |inland |Jämtland |landa |landamären |landareal |landavträdelse |landbacken |landbaserad |landbo |landborg |landbris |landbrygga |landdjur |landeri |landfast |landfäste |landförbindelse |landgille |landgräns |landgång |landhockey |landhöjning |landis |landkarta |landkrabba |landkänning |landledes |landmassa |landmil |landmina |landmärke |landning |landområde |landpermission |landremsa |landrygg |landsantikvarie |landsarkiv |landsarkivarie |landsbibliotek |landsbygd |landsdel |landsfader |landsfaderlig |landsfiskal |landsflykt |landsflyktig |landsflykting |landsfogde |landsförrädare |landsförräderi |landsförrädisk |landsförsamling |landsförvisa |landsförvisning |landshövding |landsida |landskamp |landskampare |landskap |landskommun |Landskrona |landskronabo |landskronit |landskyrka |landsköldpadda |landslag |landsman |landsmaninna |landsmoder |landsmål |landsmöte |landsnummer |landsomfattande |landsorganisation |landsort |landsplåga |landsråd |landssekretariat |landssorg |landssvek |landstiga |landstigning |landstorm |landstrategi |landstridskrafter |landstrimma |landstrykare |landsträcka |landstäckande |landställe |landsväg |landsända |landsände |landsänkning |landsätta |landsättning |landtunga |landvad |landvind |landvägen |landyta |lantadel |lantarbetare |lantbarn |lantbefolkning |lantbo |lantbrevbärare |lantbrevbäring |lantbruk |lantbröd |lantdag |lantegendom |lantflicka |lantgreve |lantgård |lanthandel |lanthandlare |lanthem |lanthushåll |lanthushållsskola |lantis |lantjunkare |lantkyrka |lantlig |lantlighet |lantliv |lantlolla |lantluft |lantman |lantmarskalk |lantmästare |lantmätare |lantmäteri |lantpatron |lantpräst |lantras |lantråd |lantställe |lantvin |lantvärn |Lappland |Lettland |lågland |morotsland |Norrland |Nyland |potatisland |rovland |rödbetsland |Skåneland |slättland |Småland |Svealand |Södermanland |Sörmland |trädgårdsland |Tyskland |u-land |uppland |Uppland |utland |utlänning |Värmland |Västergötland |västerlandet |Västmanland |Åland |Öland |Östergötland |österlandet }} === මූලාශ්‍ර === * {{R:svenska.se|so}} * {{R:svenska.se|saol}} * {{R:svenska.se|saob}} {{C|sv|Administrative divisions}} ==Zealandic== === නිරුක්තිය === {{root|zea|ine-pro|*lendʰ-|id=land}} {{dercat|zea|odt|frk|gmw-pro|gem-pro|ine-pro|inh=5}} From {{inh|zea|dum|lant}}. === නාම පදය === {{zea-noun|n}} # {{l|en|land}} 3q5e5h1wtrbk9zpmsqwjimpwbr7vmzq හැරේ 0 135064 235460 216726 2026-06-02T10:51:01Z WrdSrchSi 3305 /* ක්‍රියා පද */ + blockquote + ප්‍රවර්ගය 235460 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===උච්චාරණය=== * {{IPA|si|/ˈɦæreː/}} ===ක්‍රියා පද=== {{head|si|verb |අතීත-අකර්මක අන්‍ය පුරුෂ ඒකවචන|හැරිණි |අනතීත-අකර්මක අන්‍ය පුරුෂ බහුවචන|හැරෙති |අනතීත-අකර්මක උත්තම ඒකවචන|හැරෙමි |අනතීත-අකර්මක උත්තම බහුවචන|හැරෙමු |අනතීත-ප්‍රයුක්ත|හරවයි |අනතීත-භාව නාම|හැරෙනවා |අනතීත-කාරක නාම|හැරෙන්නේ |වර්තමාන-නිපාත|හැරෙමින් }} # {{lb|si||අකර්මක}} {{{1|{{rfdef|si}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {{blockquote|ගාලු පාරේ අවුත් විදුහල දෙසට '''හැරුණු''' සරවුවෙක් (මෝටර රියක්) එයි.|මොහොට්ටි දොණු දේවිදු|[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma6,Kalaba6.pdf මගේ බළපිටි සමය], 2510 පොසොන්-වප් 1966 ජුනි-ඔක්.}} # {{infl of|si|හරී||අනතීත|කර්ම කාරක|අන්‍ය පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] ===ආශ්‍රිත පද=== {{top3}} * {{l|si|හැරෙන}} {{bottom}} ==== පරිවර්තන ==== ''පරිවර්තන සඳහා අනාගත කාලය සලකා නැත.'' {{trans-top|හැරේ (අකර්මක)}} * ඉංග්‍රීසි: {{t|en|turns}} {{qualifier|intransitive}} {{trans-bottom}} {{trans-top|හැරේ (කර්ම කාරක)}} * ඉංග්‍රීසි: {{t|en|sent}} {{qualifier|He is}} {{trans-bottom}} === මූලාශ්‍ර === <references/> * "හර", කුමාරණතුංග මුනිදාස, '''''ක්‍රියා විවරණය''''', පිටුව 220 [https://tipitaka.lk/library/963] [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] qmhkj745z60d25q4m3a6mplee0ii3ee learn 0 137543 235456 223194 2026-06-02T10:46:52Z Lee 19 235456 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|+|+|+,~t}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[උගනී]]||[[උගනිති]]||[[උගනිමි]]||[[උගනිමු]] |- |} 7ol4k99wd1467z4erlwk8ue0u47anyt පතයි 0 137696 235479 223621 2026-06-02T11:14:56Z WrdSrchSi 3305 /* ක්‍රියා පද */ + quote#2 with link 235479 wikitext text/x-wiki ==සිංහල== ===වෙනත් ආකාර=== * {{l|si|පතා}} === නිරුක්තිය === {{etymon|si|id=පතා යි|af|si>පතා>පදය|si>යි>පදය|tree=1}} ''[[පතා]] (වෙනත් ආකාර) + [[යි]] >'' [[පතයි]] ===උච්චාරණය=== * {{IPA|si|/ˈpataji/}} ===ක්‍රියා පද=== {{head|si|verb |අතීත-සකර්මක අන්‍ය පුරුෂ ඒකවචන|පැතී#ක්‍රියා පද 1 |අනතීත-කර්ම කාරක අන්‍ය පුරුෂ ඒකවචන|පැතේ#ක්‍රියා පද |අතීත-කර්ම කාරක අන්‍ය පුරුෂ ඒකවචන|පැතිණි#ක්‍රියා පද |අනතීත-සකර්මක අන්‍ය පුරුෂ බහුවචන|පතති#ක්‍රියා පද |අනතීත-සකර්මක උත්තම ඒකවචන|පතමි#ක්‍රියා පද |අනතීත-සකර්මක උත්තම බහුවචන|පතමු#ක්‍රියා පද |අනතීත-ප්‍රයුක්ත|පතවයි#ක්‍රියා පද |අනතීත-භාව නාම|පතනවා#ක්‍රියා පද |අනතීත-කාරක නාම|පතන්නේ#ක්‍රියා පද |වර්තමාන-නිපාත|පතමින්#ක්‍රියා පද }} # {{lb|si||සකර්මක}} [[ප්‍රාර්ථනා]] කරයි. [[බලාපොරොත්තු]] වෙයි. [[අපේක්ෂා]] කරයි. #:* එඩිය, ''[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma4_Kalaba10.pdf පහදුව]'', 2507 දුරුතු - 1964 ජනවාරි #:*: ''කොළොඹැ මහ ගිලන් හලේ දකුතුරු, රාජ ජයවිරුවෝ ඉංගිරිසි වෙද වදන් ඉද්දක් එවමින් එයට හෙළ වදන් '''පතති'''.'' #:* මොහොට්ටි දොණු දේවිදු, ''[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma6,Kalaba6.pdf මගේ බළපිටි සමය]'', 2510 පොසොන්-වප් 1966 ජුනි-ඔක්. #:*: ''මම කුමාරතුංගයන් නිසා මැ බළපිටි ගුරු ඇබෑසි විදුහල '''පැතුවෙකිමි'''.'' ====ආශ්‍රිත පද==== {{top4}} * {{l|si|පැතුම්}} * {{l|si|පැතුම}} * {{l|si|පතන}} * {{l|si|පැතූ}} * {{l|si|නොපැතූ}} * {{l|si|පතා#ක්‍රියා පද}} ''(සකර්මක අතීත නිපාත)'' * {{l|si|පැතී#ක්‍රියා පද 2}} ''(කර්ම කාරක අතීත නිපාත)'' {{bottom}} === අමතර අවධානයට === {{top4}} * {{l|si|අවෙක්සයි#ක්‍රියා පද|අවෙක්සයි}} * {{l|si|පුලයි#ක්‍රියා පද|පුලයි}} {{bottom}} === මූලාශ්‍ර === <references/> * "පත [https://tipitaka.lk/library/963]", කුමාරණතුංග මුනිදාස, '''''ක්‍රියා විවරණය''''', — පිටුව 155 * "පත (ධා) [https://tipitaka.lk/library/955]", වැලිවිටියේ සෝරත හිමි, '''''ශ්‍රී සුමංගල සිංහල ශබ්දකෝෂය 2 ප-ළ 1956''''' පිටුව 548 * "4. [https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma4_Kalaba10.pdf]", '''''පහදුව''''', — එඩිය, 4 වෙළුම 10 කලබ 320 පිටුව * "ප්‍රාර්ථනාව [https://arutha.lk/search/%E0%B6%B4%E0%B7%8A%E2%80%8D%E0%B6%BB%E0%B7%8F%E0%B6%BB%E0%B7%8A%E0%B6%AE%E0%B6%B1%E0%B7%8F%E0%B7%80]", '''''අරුත.lk''''', — 2025.08.31 [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 9y1bgzjyyq9p1cgensft52qrhy892xw eat 0 138433 235351 223856 2026-06-01T15:08:14Z Lee 19 235351 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|+|+|ate,et<l:dialectal>,~<l:obsolete>|n,etten<l:dialectal>,ate<l:nonstandard>}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[කයි]]||[[කති]]||[[කමි]]||[[කමු]] |- |} tnvdmskoo1rles80u3sgdjxyd5qf69s know 0 138570 235411 224091 2026-06-02T04:46:28Z Lee 19 235411 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|~s|~ing|knew,~ed<l:nonstandard>|~n,knew<l:colloquial,and,nonstandard>}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[දනී]]||[[දනිති]]||[[දනිමි]]||[[දනුමු]] |- |} 94um1b4obbfl5soa3rq6sj5yvibemay read 0 138584 235466 224126 2026-06-02T10:57:22Z Lee 19 235466 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|~s|~ing|[[:en:#Etymology 2|read]]|+,~en<l:archaic,dialectal>}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[කියවයි]]||[[කියවති]]||[[කියවමි]]||[[කියවමු]] |- |} 0xvxszwwnqicmwdio2cb7oh316sm4kr lift 0 138586 235457 224129 2026-06-02T10:47:14Z Lee 19 235457 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|+|+|+,~<l:rare,regional,obsolete>|+,~<l:rare,regional,obsolete>,yleft<l:obsolete>}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[ඔසොවයි]]||[[ඔසොවති]]||[[ඔසොවමි]]||[[ඔසොවමු]] |- |} th2ldkx3uy582b0hj831fye8on0z7ey earn 0 138680 235350 224316 2026-06-01T15:07:33Z Lee 19 235350 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|+|+|+,~t<l:chiefly,UK>}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[උපයයි]]||[[උපයති]]||[[උපයමි]]||[[උපයමු]] |- |} 7aiwuh05yxtx4cgcnmy00wyobmiz15m kiss 0 138724 235410 224411 2026-06-02T04:46:05Z Lee 19 235410 wikitext text/x-wiki ==ඉංග්‍රීසි== ===ක්‍රියා පද=== {{en-verb|+|+|+,kist<l:obsolete>}} # {{{1|{{rfdef|en}}}}} #: ''{{{2|<!-- example sentence -->}}}'' {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[සිඹී]]||[[සිඹිති]]||[[සිඹිමි]]||[[සිඹිමු]] |- |} h3p21kb7pw1ietf0c44r1ri9mhph11e Christmas 0 139310 235354 235221 2026-06-01T15:14:28Z Lee 19 235354 wikitext text/x-wiki == ඉංග්‍රීසි == === උච්චාරණය === {{multiple images |direction = vertical |image1 = NativityChristmasLights2.jpg |caption1 = A [[nativity scene]] depicted using [[Christmas light]]s. |image2 = Students around a Christmas tree.jpg |caption2 = [[student|Students]] around a [[Christmas tree]]. }} * {{enPR|krĭsʹməs|a=RP,GA}}, {{IPA|en|/ˈkɹɪsməs/}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-Christmas.wav|a=Southern England}} * {{audio|en|En-us-Christmas.ogg|a=GA}} * {{rhymes|en|ɪsməs|s=2}} * {{hyphenation|en|Christ|mas}} === නිරුක්තිය 1 === {{root|en|ine-pro|*gʰrey-|*meyth₂-}} The {{glossary|proper noun}} is derived from {{inh|en|enm|Cristemasse}}, {{m|enm|Criste-mas|t=Christmas Day; season of Christmas; Christmas festivities}}{{nb...||otherforms=1}},<ref>{{R:MED Online|entry=Criste-mas(se|pos=n|id=MED10371}}</ref> from {{inh|en|ang|Cristes mæsse|t=Christmas|lit=Christ’s mass}}, from {{m|ang|Crist|t=Christ}} + {{m|ang|-es|pos=[[possessive#Adjective|possessive]] marker}} + {{m|ang|mæsse|t=a mass (celebration of the Eucharist)}}. The English word is analysable as {{suffix|en|Christ|mas|pos2=suffix denoting a holiday or sacred day}}.<ref name="OED">Compare {{R:OED Online|pos=n.''{{sup|1}} and ''int|id=1558940598|date=December 2023|nodot=1}}; {{R:Lexico|pos=n}}.</ref> Cognate with {{cog|stq|Kristmisse|t=Christmas}}, {{cog|fy|Krystmis|t=Christmas}}, {{cog|nl|Kerstmis|t=Christmas}}, {{cog|nds-de|Karstmis|t=Christmas}}. The {{glossary|noun}}, {{glossary|adjective}}, and {{glossary|verb}}<ref>{{R:OED Online|pos=v|id=3223887240|date=July 2023}}</ref> are derived from the proper noun. Adjective {{senseno|en|color}} (“red and green in color”) refers to these colors being traditionally associated with Christmas. ==== සංඥා නාම පදය ==== {{en-proper noun|~|es|Christmasses}} {{tlb|en|also|attributive}} # {{senseid|en|festival}}{{lb|en|originally|Christianity}} A [[festival#Noun|festival]] or [[holiday#Noun|holiday]] [[commemorate|commemorating]] the [[birth#Noun|birth]] of [[Jesus Christ]] and [[incorporate#Verb|incorporating]] various [[Christian#Adjective|Christian]], [[pre-Christian#Adjective|pre-Christian]], [[pagan#Adjective|pagan]], and [[secular#Adjective|secular]] [[custom#Noun|customs]], which in [[Western Christianity]] is [[celebrate]]d on [[December]] 25 ([[Christmas Day]]) in most [[place#Noun|places]]. #: {{synonyms|en|Chrimble<q:Britain, slang, humorous>|Chrimbo<q:Britain, slang, humorous>|Chrissy<q:Australia, slang>|Crimble<q:Britain, slang, humorous>|Crimbo<q:Britain, slang, humorous>|Noel|Yule}} #: {{hypo|en|Chrismahanukwanzakah|Chrismukkah}} #: {{ux|en|Do you celebrate '''Christmas'''?}} #: {{ux|en|This '''Christmas''' we’ll open presents, then go to grandma’s for dinner.}} #* {{quote-book|en|chapter=[[w:Boar's Head Carol|A Caroll Bringyng in the Bores Heed]]|title={{noitalic|[}}Christmasse Carolles{{noitalic|]}}|location=London|publisher={{...|Newely enprinted at Londõ, in the fletestrete at the Sygne of the Sonne, by}} {{w|Wynkyn de Worde}}|year=['''15th century'''] (date written)|year_published=1521|oclc=1350306438|newversion=republished in|2ndauthor=[[w:Joseph Ames (author)|Joseph Ames]]|title2=Typographical Antiquities: Being a Historical Account of Printing in England:{{nb...|With Some Memoirs of Our Antient Printers, and a Register of Books Printed by Them, from the year MCCCCLXXI to the Year MDC. With an Appendix Concerning Printing in Scotland and Ireland to the Same Time.}}|location2=London|publisher2={{...|Printed by}} W[illiam] Faden, and sold by J. Robinson,{{nb...|in Ludgate-Street.}}|year2=1749|page2=96|pageurl2=https://archive.org/details/b30412481/page/96/mode/1up|column2=2|oclc2=940187384|passage=Be gladde, lordes, bothe more and lasse, / For this hath ordeyned our stewarde / To chere you all this '''christmasse''' / The bores heed with mustarde.|brackets=on}} #* {{RQ:Grafton Chronicle|volume=II|chapter=[[w:Henry VIII|Henry the Eyght]]|pages=1140–1141|pageref=1140|passage=In this Winter was great death in London, wherefore the Terme was adiorned, and the king for to eſchue the plague, kept his '''Chriſtmaſſe''' at Eltham with a ſmall number, for no man might come thether, but ſuch as were appoynted by name: this Chriſtmas in the kings houſe, was called the ſtill '''Chriſtmaſſe'''.}} #* {{RQ:Dekker Dramatic Works|volume=I|title=Shomakers Holiday|subchapter=To All Good Fellowes, Professors of the Gentle Craft; of what Degree Soeuer|page=3|passage=Kinde Gentlemen, and honeſt Companions, I preſent you here with a merrie conceited Comedie, called ''the Shoomakers Holyday,'' acted by my Lorde Admiralls Players this preſent '''Chriſtmaſſe''', before the Queenes moſt excellent Maieſtie.}} #* {{RQ:Bacon Henry 7|page=191|passage=Hereupon a ''Peace'' vvas concluded, vvhich vvas publiſhed a little before '''''Chriſtmaſſe''''', in the Fourteenth yeare of the Kings ''Raigne'', to continue for both the Kings liues, and the ouer-liuer of them, and a yeare after.}} #* {{RQ:Camden Remaines|edition=3rd|chapter=Certaine Prouerbes, Poemes or Poesies, Epigrammes, Rhythmes, and Epitaphs of the English Nation in Former Times, and Some of This Present Age|page=267|passage='''Chriſtmaſſe''' commeth but once a yeere.}} #* {{RQ:Dampier New Voyage|chapter=III|page=56|passage=[T]heſe Ships {{...}} meet vvith Privateers, vvho reſort hither in the aforeſaid months [May to August], purpoſely to keep a '''''Chriſtmas''''' as they call it; being ſure to meet vvith Liquor enough to be merry vvith, and are very liberal to thoſe that treat them.|footer=Used to refer to a period of festivity during a different time of the year.}} #* {{RQ:Spectator|author=Steele|issue=450|date=6 August 1712|page=220|passage={{...}} I was always grateful for the sum of my week's profit, and at '''Christmas''' for that of the whole year.}} #* {{quote-journal|en|title=Account of Lincoln’s Inn: With a Perspective View of the Hall and Chapel|journal=[[w:The Universal Magazine of Knowledge and Pleasure|The Universal Magazine of Knowledge and Pleasure;{{nb...|Containing Letters, Debates, Essays, Tales, Poetry, History, Biography, Antiquities, Voyages, Travels, Astronomy, Geography, Mathematics, Mechanics, Architecture, Philosophy, Medicine, Chemistry, Husbandry, Gardening and Other Arts and Sciences; Which May Render It Instructive and Entertaining. To Which Occasionally Will Be Added an Impartial Account of Books in Several Languages, and of the State of Learning in Europe; Also of the New Theatrical Entertainments.}}]]|volume=CIII|month=July|year=1798|location=London|publisher={{...|Published under His Majesty’s Royal Licence, [b]y}} W[illiam] Bent,{{nb...|at the King’s Arms, Paternoster Row}}|page=42|pageurl=https://books.google.com/books?id=eFg4AQAAMAAJ&pg=PA42|column=2|oclc=977832689|passage=The lord chancellor holds his fittings in this hall, and in former days, like the Temple, it had its revels and great '''Chriſtmaſſes'''. {{...}} The account of the great feaſt in the hall of the Inner Temple, by the ſerjeants, in 1555, is extremely worth conſulting: and alſo of the hoſpitable '''Chriſtmaſſes''' of old times.}} #* {{RQ:Irving Sketch Book|title=Christmas Eve|page=379|passage=[A] great deal of revelry was permitted, and even encouraged, by the squire, throughout the twelve days of '''Christmas''', provided every thing was done comformably to ancient usage. {{...}} [T]he Yule clog, and '''Christmas''' candle, were regularly burnt, and the mistletoe, with its white berries, hung up, to the imminent peril of all the pretty housemaids.}} #* {{quote-journal|en|author=Sylvanus Swanquill [pseudonym; [[w:John Hewitt (antiquary)|John Hewitt]]]|title=Merry Christmas and Happy New Year|journal=The New Sporting Magazine|volume=XVIII|issue=105|location=London|publisher=Walter Spiers,{{nb...|Printer, 399, Oxford Street}}|month=January|year=1840|page=53|pageurl=https://archive.org/details/newsportingmaga00unkngoog/page/n60/mode/1up|oclc=6560056|passage=“Lawk!” says our old granddam, who has taken the liberty of looking over our manuscript while we were gone to mix a glass of water and something. “Lawk!” says she, “how can you write such stuff? '''Christmas''', indeed! you’ve no '''Christmas''' now. Do you call this '''Christmas'''? It’s more like a vapour bath. Such weather! Lawk, how times ''are'' changed! the '''Christmasses''' ''I'' remember! the good, old-fashioned '''Christmasses''', when there was snow on the ground six feet deep, and poor people were starved to death by dozens, and you couldn’t go out without having your fingers frost-bitten, and coals were at six shillings a hundred, and canals froze up so that you couldn’t get your goods, and the roads all impassable, and daren’t ask a few friends to merrymake for fear of losing three or four of ’em going home in snow-drifts, and—oh, those ''were'' '''Christmasses'''! we shall never see such times again!”}} #* {{RQ:Dickens Christmas Carol|page=166|passage=[I]t was always said of him &#91;{{w|Ebenezer Scrooge}}&#93;, that he knew how to keep '''Christmas''' well, if any man alive possessed this knowledge. May that be truly said of us, and all of us! And so, as [[w:Tiny Tim (A Christmas Carol)|Tiny Tim]] observed, God Bless Us, Every One!}} #* {{RQ:Tennyson In Memoriam|canto=XXVIII|page=45|passage=The time draws near the birth of Christ: / ⁠The moon is hid; the night is still; / The '''Christmas''' bells from hill to hill / Answer each other in the mist.}} #* {{quote-book|en|author=[[w:Florence Marryat|[Florence] Marryatt]]|chapter=XXIX|title=Temper. A Novel.|location=New York, N.Y.|publisher={{w|Dick & Fitzgerald}},{{nb...|Publishers, No. 18 Ann Street}}|year=1859|page=205|pageurl=https://archive.org/details/temperanovel00marrgoog/page/n211/mode/1up|oclc=3640422|passage=Reader have your '''Christmasses''' hitherto been marked with happiness? Thank God for it. {{...}} Then mamma died—and later in your college days, dear Herbert, when you were both as tall as men, but as fond of play as ever—and we used to spend such happy '''Christmasses''', till our dear father died,&nbsp;/ “That was our first sad winter, the one which followed his death, for you remember how sadly we all missed him, and we were still in mourning—but the next one was a happy day, for Lawry was so full of spirits—and that was our last happy '''Christmas'''. Herbert darling, Lawrence has left the last impression of happiness on my memory—he, who has since broken up our domestic peace, and for a long time spoilt our '''Christmasses'''—Heaven bless him!{{nb...}}”}} #* {{RQ:Christina Rossetti Time Flies|chapter=December 29 &#91;{{w|Love Came Down at Christmas}}&#93;|page=251|passage=Love came down at '''Christmas''', / Love all lovely, Love Divine, / Love was born at '''Christmas''', / Star and Angels gave the sign.}} #* {{quote-song|en|author=w:Irving Berlin|artist=w:Bing Crosby|title=[[w:White Christmas (song)|White Christmas]]|location=New York, N.Y.|publisher=w:Decca Records|date=30 July 1942|oclc=244388148|passage=I'm dreaming of a white '''Christmas''' / With every '''Christmas''' card I write / May your days be merry and bright / And may all your '''Christmases''' be white}} #* {{quote-song|en|lyricist=w:Ralph Blane|composer=w:Hugh Martin|artist=w:Judy Garland|title={{w|Have Yourself a Merry Little Christmas}}|album=Have Yourself a Merry Little Christmas: From the M.G.M. Picture {{w|Meet Me in St. Louis}}|location=New York, N.Y.|publisher=w:Leo Feist|year='''1943''' (date written)|year_published=1944|oclc=82880525|passage=Have yourself a merry little '''Christmas''' / Let your heart be light / Next year all our troubles will be out of sight}} #* {{quote-book|en|author=[[w:Cherry Drummond, 16th Baroness Strange|Cherry Drummond]]|title=The Remarkable Life of Victoria Drummond, Marine Engineer|location=London|publisher=[[w:Institute of Marine Engineering, Science and Technology|The Institute of Marine Engineers]]|year=1994|page=354|pageurl=https://books.google.com/books?id=Y4jfAAAAMAAJ&q=%22Christmas%2C+1980%22|isbn=0-907206-54-9|passage=The last time I saw her was a week before '''Christmas''', 1980. We took down a fat branch of berried Megginch holly, which we stuck in a pot for a '''Christmas''' tree, hung with silver balls and glitters. Aunt Victoria looked at it, smiled and unexpectedly said, “'''Christmas'''.” Surely she was sitting there dreaming of '''Christmasses''' long past: '''Christmas''' in the South China Sea, the '''Christmas''' lights of Hong Kong, hot '''Christmasses''' so long ago in the ''Anchises'' under the Southern Cross stars, or even longer ago of '''Christmasses''' at Megginch, singing carols round the lighted '''Christmas''' tree in the hall, while Queen Victoria’s goddaughter in her starched white dress and bronze shoes had worn the sparkling pendant given her by the great Queen.}} #* {{quote-song|en|author=w:Mariah Carey; w:Walter Afanasieff|artist=Mariah Carey|title=w:All I Want for Christmas Is You|album=[[w:Merry Christmas (Mariah Carey album)|Merry Christmas]]|location=New York, N.Y.|publisher=w:Columbia Records|date=29 October 1994|oclc=33186322|passage=I don't want a lot for '''Christmas''' / There is just one thing I need / I don't care about the presents / Underneath the '''Christmas''' tree / I just want you for my own / More than you could ever know / Make my wish come true / All I want for '''Christmas''' is you}} #* {{quote-journal |en |date=December 19, 2018 |author=Tiffany May |title=Chinese City Bans Christmas Displays Amid Religious Crackdown |journal=w:The Washington Post |archiveurl=https://web.archive.org/web/20181219161407/https://www.nytimes.com/2018/12/19/world/asia/china-christmas-display-ban.html |archivedate=December 19, 2018 |url=https://www.nytimes.com/2018/12/19/world/asia/china-christmas-display-ban.html |issn=0190-8286 |oclc=2269358 |section=Asia Pacific |url2=https://archive.ph/zFyo0 |text=This is not the first time a city in China has clamped down on '''Christmas''' merriment. Last December, Hengyang, a city in Hunan province, issued a stern notice asking Communist Party officials and their relatives to “resist the rampant Western festival.” The China Communist Youth League in Anhui wrote on social media last year that “'''Christmas''' is China’s day of shame” and represents a latter-day invasion by the West.}} # {{lb|en|often|marketing}} {{ellipsis of|en|Christmas season|t=the [[period of time]] before and after Christmas Day, during which people prepare for and celebrate Christmas}}; [[Christmastime]]. #: {{ux|en|The last three '''Christmases''' have been good for retailers.}} #: {{ux|en|'''Christmas''' shoppers spent less this December than last year, but our store will probably see just as many returned items during the twelve days of Christmas.}} #* {{quote-song|en|author=[[w:Edward Pola|Eddie [''i.e.'', Edward] Pola]]; {{w|George Wyle}}|artist=w:Andy Williams|title=[[w:It's the Most Wonderful Time of the Year|It’s the Most Wonderful Time of the Year]]|location=New York, N.Y.|publisher=w:Columbia Records|date=14 October 1963|oclc=498383541|passage=There'll be parties for hosting / Marshmallows for toasting / And caroling out in the snow / There'll be scary ghost stories / And tales of the glories / Of '''Christmases''' long, long ago}} #* {{quote-song|en|author=[[w:John W. Peterson|John W[illard] Peterson]]|title=Christmas is Love|location=Grand Rapids, Mich.|publisher=Singspiration|year=1981|oclc=59821444|passage='''Christmas''' is such a wonderful time of the year / '''Christmas''', it's the season of good cheer / {{...}} / '''Christmas''' is love, '''Christmas''' is love / The love of God, oh that's the marvelous thing}} # {{place|en|number of places|c/USA}}: ## {{place|en|uninhabited mining community|co/Gila County|s/Arizona}}. ## {{place|en|CDP|co/Orange County|s/Florida}}. ## {{place|en|unincorporated community|twp:Suf/Au Train|co/Alger County|s/Michigan}}. ## {{place|en|unincorporated community|co/Bolivar County|s/Mississippi}}. # {{surname|en}}. ===== වෙනත් ආකාර ===== * {{alter|en|Christmass|Christmasse}} {{qualifier|obsolete}} * {{alter|en|Xmas|X-mas}} {{qualifier|abbreviation|informal}} * {{alter|en|Xtmas}} {{qualifier|abbreviation|archaic}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|en|{{vern|Christmas moss}} ({{taxlink|Vesicularia montagnei|species}}) |black Christmas |by Christmas |cancel someone's Christmas |Charlie Brown Christmas tree,Charlie Brown's Christmas tree |Chrismahanukwanzakah |Chrismukkah |Christmas Adam |Christmas and Easter Christian |Christmas beetle |Christmas bells |Christmas berry,Christmasberry |Christmas block |Christmas box |Christmas bush |[[Christmas cactus]] ({{taxfmt|Schlumbergera|genus}} spp.) |Christmas cake |Christmas Capital of the Philippines |Christmas card |Christmas carol |Christmas caterpillar |Christmas cheer |Christmas City |Christmas club |Christmas come early |Christmas comes but once a year |Christmas Common |Christmas cookie|Christmas break |Christmas cracker |Christmas creep |Christmas Day |Christmas dinner |Christmas disease |Christmas elf |Christmas Eve |Christmas Eve box |Christmas factor |Christmas fern |Christmas flower |Christmas graduate |Christmas grass |Christmas green |Christmas ham |[[Christmas holly]] ({{taxfmt|Ilex aquifolium|species}}) |Christmas in July |Christmas is coming |Christmasish |Christmas Island |Christmas Islander |Christmas Island red crab |Christmas Island swiftlet |Christmas Island whiptail skink |Christmasization |Christmasize |Christmasless |Christmaslessness |Christmas light |Christmas-like,Christmaslike |Christmas lily |Christmas list |Christmas log |Christmasly |Christmas market |Christmas melon |[[Christmas orchid]] ({{taxlink|Angraecum sesquipedale|species}}) |Christmas pickle |Christmas pie,Christmas Pie,Christmaspie |Christmas present |Christmas pride |Christmas pudding |Christmas rose |Christmas seal |Christmas season |Christmassed up |Christmassiness,Christmasiness |Christmas star |Christmas stocking |Christmas Sunday |Christmassy,Christmasy |Christmastide,Christmas-tide |Christmastime,Christmas time,Christmas-time |Christmas tree |Christmas tree bill |Christmas tree effect |Christmas tree packet |Christmas tree worm |Cold Christmas |Coolie Christmas |dressed up like a Christmas tree |Father Christmas |Friendsmas |Ghost of Christmas Future |Ghost of Christmas Past |Ghost of Christmas Present |Ghost of Christmas Yet to Come |Giftmas |Gothmas |Green Christmas,green Christmas |Happy Christmas |if ifs and buts were candy and nuts, we'd all have a merry Christmas |light up like a Christmas tree |like a kid at Christmas,like a kid on Christmas morning |like turkeys voting for Christmas,like turkeys voting for an early Christmas |Little Christmas |lit up like a Christmas tree |merry Christmas |Mithrasmas |Mother Christmas |Old Christmas |pickaninny Christmas |Shitmas |slow as Christmas |Thanksmas |think all one's Christmases have come at once |Twelve Days of Christmas |Twixmas |un-Christmassy |Vlogmas |War on Christmas |white Christmas |white Christmas slice |Women's Christmas |X-mas,Xmas }} =====Descendants===== {{top2}} * {{desc|bor=1|af|Krismis}} * {{desctree|bor=1|gil|Kiritimati}} * {{desc|bor=1|gvf|geresma}} * {{desc|bor=1|haw|Kalikimaka}} * {{desc|bor=1|he|כריסטמס}} * {{desc|bor=1|hi|क्रिसमस|alts=1}} * {{desc|bor=1|hop|Kyesmis}} * {{desc|bor=1|ja|クリスマス|tr=Kurisumasu}} * {{desc|bor=1|ko|^크리스마스}} * {{desc|bor=1|mi|Kirihimete}} * {{desc|mh|Kūrijm̧ōj|bor=1}} * {{desc|bor=1|mnw|ခရေတ်သမာတ်}} * {{desc|bor=1|my|ခရစ္စမတ်}} * {{desc|bor=1|ru|Кри́стмас}} * {{desc|bor=1|es|Crismes}} * {{desc|bor=1|sw|Krismasi}} {{bottom}} ===== පරිවර්තන ===== {{trans-top|festival or holiday commemorating the birth of Jesus Christ which in Western Christianity is celebrated on December 25 in most places}} * Afrikaans: {{t+|af|Kersfees}} * Albanian: {{t|sq|krishtlindje}}, {{t+|sq|kërshëndella}} * Alutiiq: {{t|ems|Aʀusistuaq}} * Amharic: {{t|am|ገና}} * Arabic: {{t|ar|كْرِيسْمَاس|alt=الْكْرِيسْمَاس|m}}, {{t+|ar|مِيلَاد|alt=الْمِيلَاد|m}}, {{t|ar|عِيد الْمِيلَاد|m}} *: Egyptian Arabic: {{t|arz|عيد الميلاد|m|tr=ʕīd il-milād}} *: Hijazi Arabic: {{t|acw|كْرِسْمَس|m|tr=krismas}}, {{t|acw|عيد الميلاد|m|tr=ʕīd al-mīlād}} *: South Levantine Arabic: {{t|ajp|عيد الميلاد|m|tr=ʕīd il-mīlād}} * Armenian: {{t|hy|Սուրբ Ծնունդ}} * Aromanian: {{t|rup|Crãciun}} * Assamese: {{t|as|বৰদিন}} * Assyrian Neo-Aramaic: {{t|aii|ܥܹܐܕܵܐ ܕܡܵܘܠܵܕܵܐ|m}}, {{t|aii|ܥܹܐܕܵܐ ܙܥܘܿܪܵܐ|m}} * Asturian: {{t+|ast|navidá|f}}, {{t+|ast|ñavidá|f}} * Azerbaijani: {{t|az|Milad}} * Basque: {{t+|eu|Eguberri}} * Bavarian: {{t|bar|Weihnåchtn}} *: Cimbrian: {{t|cim|Boinichtn}} *: Mòcheno: {{t|mhn|Bainechtn}} * Belarusian: {{t|be|каля́ды|f-p}}, {{t|be|Раство́|n}}, {{t|be|Ражджаство́|n}}, {{t|be|Ражаство́|n}}, {{t|be|Нараджэ́нне Хрысто́ва|n}} * Bengali: {{t+|bn|বড়দিন}} * Bikol Central: {{t|bcl|Pasko}} * Breton: {{t+|br|Nedeleg|m}} * Bulgarian: {{t+|bg|Коледа|f}}, {{t|bg|Рождество Христово|n}} * Burmese: {{t+|my|ခရစ္စမတ်}}, {{t+|my|နာတာလူးပွဲ}} * Carpathian Rusyn: {{t|rue|Ріство́|n}} * Catalan: {{t+|ca|Nadal|m}} * Cebuano: {{t|ceb|Pasko}} * Central Franconian: {{t|gmw-cfr|Weihnachte}} * Cherokee: {{t|chr|ᏓᏂᏍᏓᏲᎯᎲ}} * Chichewa: {{t|ny|Khirisimasi}} * Chinese: *: Cantonese: {{t|yue|聖誕節}} *: Hakka: {{t|hak|聖誕節|tr=Sṳn-tan-chiet}} *: Hokkien: {{t+|nan-hbl|聖誕|tr=Sèng-tàn}}, {{t+|nan-hbl|耶誕|tr=Iâ-tàn}} *: Mandarin: {{t+|cmn|聖誕節}}, {{t+|cmn|耶誕節|tr=Yēdànjié, Yédànjié}} {{qualifier|Taiwan}} * Chuukese: {{t|chk|Kirisimas}} * Chuvash: {{t|cv|Раштав}} * Cornish: {{t|kw|Nadelik|m}} * Corsican: {{t+|co|Natale}} * Czech: {{t|cs|Boží hod|m}}, {{t+|cs|Vánoce|p}} * Danish: {{t+|da|jul|c}} * Dutch: {{t+|nl|Kerstmis|m}}, {{t+|nl|kerst|m}} * Dzongkha: {{t|dz|ཡེ་ཤུའི་འཁྲུངས་སྟོན}} * Esperanto: {{t|eo|kristnasko}} * Estonian: {{t+|et|jõulud|p}} * Ewe: {{t|ee|Blunya}} * Faroese: {{t+|fo|jól|n-p}} * Finnish: {{t+|fi|joulu}} * Franco-Provençal: {{t|frp|Chalendes}} * French: {{t+|fr|Noël|m}} * Friulian: {{t|fur|Nadâl}} * Galician: {{t+|gl|Nadal|m}} * Georgian: {{t+|ka|შობა}}, {{t+|ka|ქრისტეშობა}}, {{t|ka|ქრისტეს შობა}} * German: {{t+|de|Weihnachten|p|n}} *: Alemannic German: {{t|gsw|Wiehnachte}} *: Silesian: {{t|gmw-ecg|Weihnachta}}, {{t|gmw-ecg|Weihnachten}} * Greek: {{t+|el|Χριστούγεννα|n-p}} * Greenlandic: {{t+|kl|juulli}} * Gujarati: {{t|gu|નાતાલ|f}} * Hausa: {{t|ha|Kir̃sìmatì}} * Hawaiian: {{t|haw|Kalikimaka}}, {{t|haw|Kalikamaka}} * Hebrew: {{t+|he|חַג הַמּוֹלָד|tr=khag ha'molad}} * Hindi: {{t|hi|क्रिसमस|m}}, {{t|hi|क्रिस्मस|m}}, {{t|hi|बड़ा दिन|m}}, {{t|hi|ईद-ए-तवल्लुद|m}}, {{t|hi|ईद-ए-विलादत|m}} * Hungarian: {{t+|hu|karácsony}} * Hunsrik: {{t|hrx|Weinachte|n}} * Icelandic: {{t+|is|jól|n-p}} * Ido: {{t+|io|Kristonasko}} * Igala: {{t|igl|Íkéléchìmáchì}} * Igbo: {{t|ig|Ekeresìmeèsì}} * Ilocano: {{t|ilo|Paskua}} * Inari Sami: {{t|smn|juovlah|p}} * Indonesian: {{t+|id|Natal}} * Ingrian: {{t|izh|Joulu}} * Irish: {{t+|ga|Nollaig|f}} *: Old Irish: {{t|sga|Notlaic|f}} * Italian: {{t+|it|Natale|m}} * Japanese: {{t+|ja|クリスマス|tr=Kurisumasu}}, {{t+|ja|聖誕祭|tr=せいたんさい, Seitansai}}, {{t+|ja|聖誕節|tr=せいたんせつ, Seitansetsu}} * Javanese: {{t|jv|Natal}} * Kannada: {{t|kn|ಕ್ರಿಸ್ಮಸ್}} * Karelian: {{t|krl|Rastavu}} * Kashubian: {{t|csb|Gòdë|m-p}} * Kazakh: {{t|kk|Рождество}} * Khmer: {{t|km|ណូអែល}}, {{t|km|បុណ្យណូអែល}} * Komi-Zyrian: {{t|kpv|Рӧштво}} * Konkani: {{t|kok|नाताळ}} * Korean: {{t+|ko|^크리스마스}}, {{t+|ko|^성탄절}} * Kurdish: *: Northern Kurdish: {{t+|kmr|krismas}}, {{t+|kmr|gaxan}}, {{t+|kmr|noel}} * Kyrgyz: {{t|ky|Рождество}} * Ladin: {{t|lld|Nadel|m}} * Ladino: {{t|lad|Noel}} * Lakota: {{t|lkt|Wóšpipi}}, {{t|lkt|Wóšpipi Káǧapi}} * Lao: {{t|lo|ຄິດສະມາດ}}, {{t|lo|ໂນແອນ}}, {{t|lo|ບົນໂນແອນ}} * Latin: {{t|la|Christi Natalis}}, {{t|la|festum Nativitatis Domini}}, {{t|la|nativitas|f|alt=Nātīvitās}} * Latvian: {{t|lv|Ziemassvētki|m-p}}, {{t|lv|Ziemsvētki|m-p}} * Ligurian: {{t|lij|Dënâ}} * Lithuanian: {{t+|lt|Kalėdos|f-p}} * Lombard: {{t+|lmo|Nedal|m}} * Low German: *: German Low German: {{t|nds-de|Wiehnachten|p|n}} * Lule Sami: {{t|smj|javlla}} * Luxembourgish: {{t+|lb|Chrëschtdag|m}} * Macedonian: {{t|mk|Божиќ|m}} * Malay: {{t|ms|Hari Natal}}, {{t|ms|Krismas}} * Malayalam: {{t|ml|ക്രിസ്തുമസ്}}, {{t|ml|തിരുപ്പിറവി}}, {{t|ml|പിറവിത്തിരുനാൾ}} * Maltese: {{t|mt|Milied|m}} * Manx: {{t|gv|Nollick|f}}, {{t|gv|Nollick Vooar|f}} * Maori: {{t|mi|Kirihimete}} * Marathi: {{t|mr|नाताळ|m}} * Mari: *: Eastern Mari: {{t|mhr|Рошто}} *: Western Mari: {{t|mrj|Шартял}} * Marshallese: {{t|mh|Kūrijm̧ōj}} * Middle English: {{t|enm|Cristemasse}} * Mingrelian: {{t|xmf|ქირსე}} * Mòcheno: {{t|mhn|bainechtn|p}} * Mon: {{t+|mnw|တ္ၚဲခရေတ်သမာတ်}}, {{t+|mnw|ခရေတ်သမာတ်}} * Mongolian: *: Cyrillic: {{t|mn|Зул сар}}, {{t|mn|Христосын мэндэлсэн өдөр}} * Navajo: {{t|nv|Késhmish}} * Nepali: {{t|ne|क्रिसमस}} * Nheengatu: {{t|yrl|misa-pituna}} * Nigerian Pidgin: {{t|pcm|Krismas}} * Norman: {{t|nrf|Noué|m}}, {{t|nrf|Nouel|m}} * Northern Sami: {{t|se|juovllat|p}} * Northwestern Ojibwa: {{t|ojb|niibaa-anama'e-giizhigad}} * Norwegian: *: Bokmål: {{t+|nb|jul||mf}} *: Nynorsk: {{t|nn|jol|f}}, {{t|nn|jul|f}} * Occitan: {{t+|oc|Nadal|m}} * Odia: {{t+|or|ବଡ଼ ଦିନ}}, {{t+|or|କିସ୍ମସ୍}} * Ofo: {{t|ofo|noⁿˊpi}} * Ojibwe: {{t|oj|niibaanamom}} * Old English: {{t|ang|ġēol|n}}, {{t|ang|Cristes mæsse|f}}, {{t|ang|midwinter|m}} * Old Norse: {{t|non|jól|n-p}} * Old Tupi: {{t|tpw|missa-pytuna}} * Papiamentu: {{t|pap|Pasku}} * Pashto: {{t|ps|کرسمس|m|tr=kresmas}} * Persian: *: Iranian Persian: {{t|fa-ira|کِریسْمَس}}, {{t|fa-ira|نوئِل|tr=no'el}}, {{t|fa-ira|عِیدِ میلادِ مَسیح}}, {{t|fa-ira|عِیدِ نوئِل|tr='eyd-e no'el}} * Pite Sami: {{t|sje|jåvvlå}} * Plautdietsch: {{t|pdt|Wienachten|f}} * Polabian: {{t|pox|tribĕ}} * Polish: {{t+|pl|Boże Narodzenie|n}} * Portuguese: {{t+|pt|Natal|m}} * Punjabi: {{t|pa|ਵੱਡਾ ਦਿਨ}}, {{t|pa|ਕ੍ਰਿਸਮਸ}} * Rhine Franconian: {{t|gmw-rfr|Woihnachde}} * Romagnol: {{t|rgn|Nadêl|m}} * Romanian: {{t+|ro|Crăciun|n}}, {{t|ro|[[naștere|Nașterea]] [[lui]] [[Isus]] [[Cristos]]|f}}, {{t|ro|[[naștere|Nașterea]] [[domn|Domnului]]|f}} * Russian: {{t+|ru|Рождество́ Христо́во|n}}, {{t+|ru|Рождество́|n}}, {{t|ru|Кри́стмас|m}} {{q|colloquial, foreign context or foreign communities}} * Santali: {{t|sat|ᱢᱟᱨᱟᱝ ᱢᱟᱦᱟᱸ}} * Scots: {{t|sco|Yule}} * Scottish Gaelic: {{t|gd|Nollaig|f}} * Serbo-Croatian: *: Cyrillic: {{t|sh|Бо̀жић|m}}, {{t|sh|Рождество|n}} *: Roman: {{t|sh|Bòžić|m}}, {{t+|sh|Roždestvo|n}} * Sicilian: {{t+|scn|Natali}} * Silesian: {{t|szl|Gody|m-p}} * Sindhi: {{t+|sd|ڪرسمس}} * Sinhalese: {{t|si|නත්තල}} * Skolt Sami: {{t|sms|rosttov}} * Slovak: {{t+|sk|Vianoce|f-p}} * Slovene: {{t+|sl|bôžič|m}} * Sorbian: *: Lower Sorbian: {{t|dsb|gódy|p}} *: Upper Sorbian: {{t|hsb|hody|m-p}} * Sotho: {{t|st|Kresemese}} * Southern Sami: {{t|sma|jåvlh|p}} * Spanish: {{t+|es|Navidad|f}}, {{t|es|Crismes|m}} {{qualifier|New Mexico}} * Sranan Tongo: {{t|srn|Bedaki}}, {{t|srn|kresneti}} * Swahili: {{t|sw|Krismasi}} * Swedish: {{t+|sv|jul|c}} * Tagalog: {{t+|tl|Pasko}} * Tajik: {{t+|tg|Мавлуди Исо}}, {{t|tg|Кристмас}} * Tamil: {{t|ta|கிசிமிசி}}, {{t|ta|கிறிஸ்மஸ்}}, {{t+|ta|கிறித்துமசு}}, {{t+|ta|கிறிஸ்துமஸ்}}, {{t|ta|நத்தார்}} * Tatar: {{t|tt|Раштуа}} * Telugu: {{t|te|క్రిస్మస్}} * Thai: {{t+|th|คริสต์มาส}}, {{t|th|คริสตสมภพ}} * Tibetan: {{t|bo|ཡེ་ཤུའི་འཁྲུངས་སྐར}} * Turkish: {{t+|tr|Noel}} * Turkmen: {{t|tk|Isanyň dogluşy}}, {{t|tk|roždestwo}}, {{t|tk|milad}} * Udmurt: {{t|udm|Толсур}}, {{t|udm|Ымусьтон}} * Ukrainian: {{t+|uk|Різдво́|n}}, {{t|uk|Різдво́ Христо́ве|n}} * Ume Sami: {{t|sju|juvlla}} * Urdu: {{t|ur|کِرِسْمَس|m}}, {{t|ur|کْرِسْمَس|m}}, {{t|ur|بَڑا دِن|m}}, {{t|ur|عِیدِ تَوَلُّد|f}}, {{t|ur|عِیدِ وِلادَت|f}}, {{t|ur|عِیدِ میلادِ مَسِیح|m}} * Uyghur: {{t|ug|روجدېستۋو}}, {{t|ug|روجىستىۋا}} * Uzbek: {{t|uz|Mavlud}}, {{t+|uz|rojdestvo|alt=Rojdestvo}} * Vietnamese: {{t|vi|Nô-en}}, {{t+|vi|Giáng sinh}} * Vilamovian: {{t|wym|Waeinahta|f}}, {{t|wym|Wajnaochta|f}} * Volapük: {{t+|vo|kritid}}, {{t+|vo|kritidazäl}} * Walloon: {{t+|wa|Noyé|m|f}} * Welsh: {{t+|cy|Nadolig|m}} * West Flemish: {{t|vls|Kestdag|m}} * West Frisian: {{t|fy|Krysttiid}} * Yiddish: {{t|yi|ניטל|m}} * Yoruba: {{t|yo|Kérésìmesì}} * Yup'ik: {{t|esu|Alussistuaq}}, {{t|esu|Selavi}} * Zulu: {{t|zu|Ukhisimuzi}} {{trans-bottom}} {{trans-see|''ellipsis of'' Christmas season|Christmas season|Christmastime}} ===== අමතර අවධානයට ===== {{s|associated entries}} {{col4|en |Advent |Black Friday |Boxing Day |Christmas Eve |quarter day |St. Stephen's Day |Yule |Yuletide }} ==== නාම පදය ==== {{en-noun|-}} # {{senseid|en|decorations}}{{lb|en|informal|or|Britain|regional}} [[sprig#Noun|Sprigs]] of [[holly]] and other [[evergreen#Adjective|evergreen]] [[plant#Noun|plants]] [[use#Verb|used]] as [[Christmas#Proper noun|Christmas]] [[decoration]]s; also {{lb|en|generally}}, any Christmas decorations. #: {{syn|en|Christmasing}} #* {{RQ:Cleland Way to Things|page=96|passage=[T]he antient Britons employed for the decoration of their houſes, or, more properly ſpeaking, of their bovvers, branches of ever-green, in invitation to the ſpirits: a cuſtom, vvhich, hovvever the motive may be aboliſhed, is retained to this inſtant. That kind of verdure vvhich is uſed to deck the vvindovvs, and old halls, vve novv, by metonymy, call '''''Chriſtmas'''''.}} #* {{RQ:Dickens Pickwick Papers|chapter=A Good-humoured Christmas Chapter,{{nb...|Containing an Account of a Wedding, and Some Other Sports beside, which although in Their Way, even as Good Customs as Marriage Itself, are Not Quite so Religiously Kept Up, in these Degenerate Times.}}|page=290|passage="Vere does the mince-pies go, young opium eater?" said Mr. Weller to the fat boy, as he assisted in laying out such articles of consumption as had not been duly arranged on the previous night. The fat boy pointed to the destination of the pies. "Wery good," said Sam, "stick a bit o' '''Christmas''' in 'em.{{nb...}}"}} #* {{quote-journal|en|author=w:Percy Manning|title=[Folk-lore Miscellanea.] May-Day at Watford, Herts.|journal=Folk-lore: A Quarterly Review of Myth, Tradition, Institution, & Custom|location=London|publisher=[[w:David Nutt (publisher)|David Nutt]],{{nb...|270, Strand.}} for [[w:The Folklore Society|The Folk-lore Society]]|month=September|year=1893|volume=IV|issue=III|page=403|pageurl=https://books.google.com/books?id=rd1cLIVa1tsC&pg=PA403|oclc=7644078|passage=Two of the girls carry between them on a stick what they call "the garland", {{...}} The "garland" in shape reminds me of the "'''Christmas'''" which used to form the centre of the Christmas decorations in Yorkshire some few years ago, except that the latter had a bunch of mistletoe inside the hoops.}} ===== පරිවර්තන ===== {{trans-top|sprigs of holly and other evergreen plants used as Christmas decorations}} * Finnish: {{t|fi|[[oksa]] [[joulukoriste]]ena}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} {{trans-top|any Christmas decorations}} * Finnish: {{t+|fi|joulukoriste|p|alt=joulukoristeet}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} ==== නාම විශේෂණ පදය ==== {{en-adj|-}} {{tlb|en|US}} # {{senseid|en|color}} [[red#Adjective|Red]] and [[green#Adjective|green]] in [[color#Noun|color]]. # {{lb|en|chiefly|New Mexico|cooking}} Of a [[dish#Noun|dish]]: [[have#Verb|having]] a [[sauce#Noun|sauce]] [[make#Verb|made]] with red ([[ripe#Adjective|ripe]]) and green ([[unripe]]) [[chili pepper]]s. ===== පරිවර්තන ===== {{trans-top|red and green in color}} * Finnish: {{t+|fi|punavihreä}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} {{trans-top|of a dish: having a sauce made with red and green chili peppers}} * Finnish: {{t|fi|[[punainen|punaista]] [[ja]] [[vihreä|vihreää]] [[chili|chiliä]] [[sisältävä]]}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} ==== ක්‍රියා පදය ==== {{en-verb|+,++}} # {{lb|en|transitive|informal}} To [[decorate]] (a [[place#Noun|place]]) with {{l|en|Christmas|t=[[sprig#Noun|sprigs]] of [[holly]] and other [[evergreen#Adjective|evergreen]] [[plant#Noun|plants]] [[use#Verb|used]] as [[Christmas#Proper noun|Christmas]] [[decoration]]s, or any Christmas decorations|id=decorations}}. #* {{RQ:Mayhew London Labour|volume=I|chapter=Of the Sellers of Trees, Shrubs, Flowers (Cut and in Pots), Roots, Seeds, and Branches|page=141|column=1|passage="Then look," said a gardener to me, "what's spent on a '''Christmasing''' the churches! Why, now, properly to '''Christmas''' St. Paul's, I say ''properly'', mind, would take 50''l.'' worth at least; aye, more, when I think of it, nearer 100''l.'' I hope there'll be no 'No Popery' nonsense against '''Christmasing''' this year. I'm always sorry when anything of that kind's afloat, because it's frequently a hindrance to business."}} #* {{quote-book|en|author=w:James Goldman|title=[[w:The Lion in Winter|The Lion in Winter: A Comedy in Two Acts]]|location=New York, N.Y.; Hollywood, Los Angeles, Calif.|publisher=[[w:Samuel French, Inc.|Samuel French]]|year=1966|section=Act I, scene ii|page=17|pageurl=https://archive.org/details/lioninwinter0000unse_q1i7/page/17/mode/1up|oclc=645164|passage=''(Moving to the holly boughs.)'' Come on; let's finish '''Christmassing''' the place.}} #* {{quote-book|en|author=Robin S. Shapiro|chapter=It’s Never too Late to Play the Violin|title=Touchstones: Essays on Spirituality and Healing|location=[Bloomington, Ind.]|publisher=w:Xlibris|year=2012|page=27|pageurl=https://books.google.com/books?id=wedNAAAAQBAJ&pg=PA27|isbn=978-1-4691-7385-6|passage=Haddonfield was completely '''Christmased''' deep in December. It was lovely to see the beautifully decorated shops. Huge bows adorned the streetlamps, aerosol snow framed the windows, and people bundled up were moving in and out of the shops as the aroma of spice and clove from holiday candles scented the air.}} # {{lb|en|transitive|obsolete|rare}} To [[bring#Verb|bring]] (someone) Christmas [[cheer#Noun|cheer]]. #* {{RQ:Chapman Works|volume=II|poem=Shadow of Night|subtitle=Hymnus in Noctem|page=7|passage=Her labours feast imperial Night with sports, / Where loves are '''Christmass'd''', with all pleasure's sorts; {{...}}|footer=In the 1st edition, the word was spelled ''Christmast''}} # {{lb|en|intransitive}} To [[celebrate]] Christmas. #* {{quote-web|en|author=Ricki Green|title=[[w:David Jones (retailer)|David Jones]] Asks ‘How do Australians Christmas?’ in New Campaign via TBWA Sydney|work=Campaign Brief|archiveurl=https://web.archive.org/web/20231224011205/https://campaignbrief.com/david-jones-asks-how-do-you-ch/|date=3 November 2016|passage=The 2016 campaign via TBWA Sydney asks the question, ‘How do Australians '''Christmas'''?’ with a film to be launched today featuring global superstar and style icon, {{w|Cate Blanchett}}.}} # {{lb|en|intransitive}} To [[spend#Verb|spend]] Christmas or the [[Christmas season]] in some place. #* {{quote-book|en|author=“Ironbark” [pseudonym; [[w:G. H. Gibson|George Herbert Gibson]]]|chapter=Christmas in Australia|title=Southerly Busters|location=Sydney, N.S.W.|publisher=John Sands,{{nb...|printer, 392 George Street.}}|year=1878|page=73|pageurl=https://books.google.com/books?id=RV4UAQAAMAAJ&pg=PA73|oclc=13325172|passage=I've '''Christmased''' since those palmy days / In many a varied spot, / And suffered many a weary phase / Of Christmas cold and hot.}} #* {{quote-journal|en|author=Horace L. Nicholson|title=Baulked by a Berry|editor=W. J. Morgan|journal=The St. James’s Magazine and United Empire Review|location=London|publisher=Charing Cross Publishing Company,{{nb...|Limited, 5, Friar Street, Broadway, E.C.}}|month=December|year=1878|year_published=1879|volume=XXXIV|page=1107|pageurl=https://books.google.com/books?id=VKnCYu5u42IC&pg=PA1107|oclc=12701169|passage=I have spent Christmas on the Severn, at Sharpness Point; in Paris, under siege, and among scenes of heartrending distress; among the Scotch hills, with Presbyterian severity, and I have '''Christmased''' in Normandy, where every tree seems green with mistletoe.}} #* {{quote-journal|en|title=Facts and Fancies|journal=St. Stephen’s Review|location=London|publisher=The Publishing Company|date=6 July 1889|issue=330|page=9|pageurl=https://books.google.com/books?id=7fknbCXEEfgC&pg=PA9|column=1|oclc=1118137148|passage=[[w:Prince Albert Victor, Duke of Clarence and Avondale|Prince Albert Victor]] on arrival in India will land at Bombay, and travel through Southern India, proceeding from Madras by sea to Calcutta. He will '''Christmas''' at Calcutta, and then make a tour through Bengal, and pay a visit to the frontier.}} #* {{RQ:Braddon Christmas Hirelings|chapter=Prologue|page=20|passage=Mr. Danby never omitted his annual visits to Penlyon Place. He '''Christmassed''' there, and he Eastered there, and he knew the owner of the fine old Tudor house inside and out, his vices and his virtues, his weaknesses, and his prejudices.}} #* {{quote-journal|en|journal=Program: A Magazine for Program and Entertainment Committees|location=New York, N.Y.|publisher=Program Company|month=January|year=1938|volume=4|issue=4|page=7|oclc=6784614|passage={{w|André Maurois}} will be one of the spearheads of the [[w:Harold R. Peat|Harold R[eginald] Peat]] list for the coming season, a result of Mr. Peat’s holiday visit to England, where he '''Christmassed''' with [[w:H. G. Wells|H[erbert] G[eorge] Wells]].}} #* {{quote-book|en|author=[[w:Robert D. Kaplan|Robert D[avid] Kaplan]]|chapter=End of the Rainbow|title=The Arabists: The Romance of an American Elite|location=New York, N.Y.|publisher=[[w:Free Press (publisher)|The Free Press]]|year=1993|section=part I (Dream)|page=80|pageurl=https://archive.org/details/arabistsromanceo00kapl/page/80/mode/1up|isbn=978-0-02-916785-4|passage='''Christmasing''' in Khartoum, writing in his Cairo study about the Al Azhar University, overseeing the publication of learned articles about Moslem medievalism, attending conferences and tea parties hosted by his former AUB students, feted constantly in many an Arab capital, and filling up his diary with descriptions of the bazaars of Lucknow and the exotic birds of Asia, [[w:Bayard Dodge|[Bayard] Dodge]] was reaping the bounty of a life devoted to the Arabs and Moslem culture.}} #* {{quote-book|en|author=Lorrene Desbien|chapter=December 22|title=Losing Sarah: A Mother’s Journey to Peace|location=Bloomington, Ind.|publisher=w:AuthorHouse|date=26 October 2012|page=64|pageurl=https://books.google.com/books?id=Q_XcK05TlsMC&pg=PA64|isbn=978-1-4772-8607-4|passage=In particular, please keep my brother in your prayers as he '''Christmases''' in Afghanistan.}} # {{lb|en|colloquial}} To subject to Christmas celebrations. #* {{quote-book|en|author=Susan Kiernan-Lewis|chapter=17|title=Toujours Dead: A Mystery in Provence|location=Atlanta|publisher=Abdale Books|year=2001|page=342|pageurl=https://archive.org/details/toujoursdead0000kier/page/342/mode/1up|isbn=0-9706716-0-1|passage=“{{...|nospace=1}} But there’s only so much joyful, greedy delight you can see in a young child’s eyes before you want to go screaming out for the nearest bar.” He tossed his handstitched, kidskin gloves onto the table top. “I’m about '''Christmassed'''-out, if you want to know.”}} #* {{quote-book|en|author=Tina-Sue Ducross|title=No Shadows Left Behind|location=Galion, Oh.|publisher=Harris Innovations|year=2008|page=204|pageurl=https://archive.org/details/noshadowsleftbeh0000ducr/page/204/mode/1up|isbn=978-0-9816055-0-0|passage="The kids claim they are all '''Christmassed'''-out and have disappeared in protest."}} #* {{quote-book|en|author=[[w:Michael Parker (event organiser)|Michael Parker]]|chapter=Of Loos and Ships and Ceiling Lights, And Cabbages and Kings|title=It’s All Going Terribly Wrong: Organised Chaos at Royal, National and Military Celebrations over 45 years|location=London|publisher=Bene Factum Publishing|year=2012|page=121|pageurl=https://archive.org/details/itsallgoingterri0000park/page/121/mode/1up|isbn=978-1-903071-65-6|passage=I had done Christmas in so many ways that I was somewhat ‘'''Christmassed'''-out.}} #* {{quote-book|en|author=Nora Laurie Percival; Herman Gund|chapter=A Taste of Paradise|title=Silver Pages on the Lawn: A True Story of Student Love during the 1930s|location=Vilas, N.C.|publisher=Kent Hollow Press|month=February|year=2005|year_published=November 2009|section=part III (Fall 1934—Love Learns)|page=141|pageurl=https://archive.org/details/silverpagesonlaw0000perc/page/141/mode/1up|isbn=978-1-59513-010-5|passage=That evening, after the family, '''Christmased''' out, went early to bed, Herman brought out his unmailed letters.}} #* {{quote-book|en|author=Julia Williams|chapter=Prologue|title=Last Christmas|location=London|publisher=[[w:Avon (publisher)|Avon]]|year=2009|page=14|pageurl=https://archive.org/details/lastchristmas0000will/page/14/mode/1up|isbn=978-1-84756-086-5|passage=Christmas muzak was pumping out, presumably to get her into the spirit of the thing. Not much chance of that, when she had felt all '''Christmassed''' out for months. Bugger off, she felt like shouting as a particularly cheesy version of ‘Have Yourself a Merry Little Christmas’ blared out. Look at all these people. Do any of them look bloody merry?}} #* {{quote-book|en|author=w:Jon Ronson|chapter=Santa’s Little Conspirators|title=w:Lost at Sea: The Jon Ronson Mysteries|location=New York, N.Y.|publisher=w:Riverhead Books|year=2012|section=part three (Everyday Difficulty)|page=157|pageurl=https://archive.org/details/lostatseajonrons00jonr/page/157/mode/1up|isbn=978-1-59463-137-5|passage=I notice that this is one of the very few buildings in town that hasn’t any Christmas decorations whatsoever. / “We’re a respite from Christmas, I guess,” Suze explains. “Our kids are all '''Christmassed''' out.”}} ===== වෙනත් ආකාර ===== * {{alter|en|Xmas}} {{qualifier|abbreviation|informal}} ===== පරිවර්තන ===== {{trans-top|to decorate (a place) with Christmas decorations}} * Finnish: {{t|fi|[[koristella]] [[joulukoriste]]in}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} {{trans-top|to celebrate Christmas}} * Finnish: {{t|fi|[[viettää]] [[joulu]]a}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} {{trans-top|to spend Christmas or the Christmas season in some place}} * Finnish: {{t|fi|[[viettää]] [[joulu]]a}} * Macedonian: {{t-needed|mk}} {{trans-bottom}} === නිරුක්තිය 2 === Short for {{m|en|Jiminy Christmas}},<ref name="OED"/> probably a variant of {{m|en|Jiminy Cricket}} or {{m|en|Jiminy Crickets}}, a {{glossary|euphemism}} for {{m|en|Jesus Christ}}. ==== විශ්මයාර්ථ පදය ==== {{en-intj}} # {{lb|en|euphemistic}} {{non-gloss|An [[expression]] of [[annoyance]] or [[surprise#Noun|surprise]]}}: [[Christ#Interjection|Christ]], [[Jesus Christ#Interjection|Jesus Christ]], [[Jiminy Cricket]], [[Jiminy Crickets]]. #: {{synonyms|en|Jesus Christmas|jiminy Christmas|Jimmy Christmas}} #* {{quote-text|en|year=1897|author=Rudyard Kipling|title=Captains Courageous |passage="'''Christmas'''! I didn't know it," said Harvey, turning round. "I'll give you a dollar for it when I—get my wages. Say, I'll give you two dollars."}} #* {{quote-book|en|author={{w|Ellery Queen}} [pseudonym; Frederic Dannay, Manfred Bennington Lee]|chapter=‘The Time has Come&nbsp;…’|title=[[w:The French Powder Mystery|The French Powder Mystery: A Problem in Deduction]]|location=New York, N.Y.|publisher=[[w:Frederick A. Stokes|Frederick A[bbott] Stokes Company]]|year=1930|page=269|pageurl=https://archive.org/details/pg000002_20220726/pg000144.jpg|oclc=7761808|passage="I've been tottering on the edge&nbsp;… '''Christmas'''!" His eyes brightened with a sudden thought. "How stupid I've been!" he cried at once.}} #* {{quote-book|en|author=w:Ngaio Marsh|chapter=On the Scent|title=w:False Scent|location=New York, N.Y.|publisher=w:Jove Books|year=1959|year_published=November 1981|section=section 3|page=158|pageurl=https://archive.org/details/falsescent00ngai/page/158/mode/1up|isbn=978-0-515-08056-8|passage=She said, "All right with you, Bertie?" / "Oh '''Christmas'''! he said. "I suppose so."}} ===== පරිවර්තන ===== {{trans-see|''expression of annoyance or surprise''|Christ|Jesus Christ}} === මූලාශ්‍ර === <references/> === වැඩිදුර් කියවීම සඳහා === * {{pedia}} * {{pedia|Christmas (disambiguation)}} ===Anagrams=== * {{anagrams|en|a=achimrsst|Chartisms}} {{C|en|Christianity|Christmas|Holidays|Personifications}} ==Scots== === නාම පදය === {{head|sco|noun}} # [[Christmas present]] k4co4rp8v968keosy839togrc1gfpq8 Module:etymon/categories 828 139721 235419 229746 2026-05-12T21:11:59Z en>Fenakhay 0 235419 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { etymology = "Module:etymology", affix = "Module:affix", etymology_specialized = "Module:etymology/specialized", utilities = "Module:utilities", }, loadData = { data = "Module:etymon/data", }, }) -- Evaluate whether a keyword is transitive for a given term local function is_transitive(transitive_mode, page_lang, term_lang) if transitive_mode == M.data.TRANSITIVE.ALWAYS then return true elseif transitive_mode == M.data.TRANSITIVE.NEVER then return false elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG then return page_lang:getCode() ~= term_lang:getCode() elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then return page_lang:getCode() ~= term_lang:getCode() end error("Unknown transitive mode: " .. tostring(transitive_mode)) end -- Get keyword config with language-specific overrides local function get_keyword_config(keyword, lang_exc) local base_config = M.data.keywords[keyword] if not base_config then return nil -- Invalid keyword end local overrides = lang_exc and lang_exc.keyword_overrides and lang_exc.keyword_overrides[keyword] if not overrides then return base_config end -- Merge overrides into base config local merged = {} for k, v in pairs(base_config) do merged[k] = v end for k, v in pairs(overrides) do merged[k] = v end return merged end function export.get_cat_name(source) local _, cat_name = M.etymology.get_display_and_cat_name(source, true) return cat_name end -- Normalize affix type aliases local aftype_aliases = { ["pre"] = "prefix", ["suf"] = "suffix", ["in"] = "infix", ["inter"] = "interfix", ["circum"] = "circumfix", ["naf"] = "non-affix", ["root"] = "non-affix", } local function add_category(categories, cat_name, sort_key, sort_base) if categories[cat_name] == nil then categories[cat_name] = { sort_key = sort_key, sort_base = sort_base, } return end local existing = categories[cat_name] if existing.sort_key == nil and sort_key ~= nil then existing.sort_key = sort_key end if existing.sort_base == nil and sort_base ~= nil then existing.sort_base = sort_base end end -- Collect affix categories from top-level group containers local function collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) local parts = {} local part_index = 1 for _, container in ipairs(node.children or {}) do local config = container.keyword_info if config and config.affix_categories then for _, term in ipairs(container.terms or {}) do if not term.unknown_term then local part_data = { term = term.title, tr = term.tr, ts = term.ts, alt = term.alt, itemno = part_index, orig_index = part_index } -- Determine affix type: explicit aftype > pos=root > auto-detect local aftype = term.aftype if aftype then aftype = aftype_aliases[aftype] or aftype part_data.type = aftype elseif term.args and term.args.pos and term.args.pos == "root" then part_data.type = "non-affix" end if term.lang:getCode() ~= page_lang:getCode() then part_data.lang = term.lang end local target_ids = available_etymon_ids[term.target_key] local has_multiple_ids = target_ids and #target_ids > 1 local id_exists_in_disambiguation = false local matched_id = nil -- Count available senseids for the target page local senseid_count = 0 local target_prefix = term.target_key .. ":" if senseid_parent_etymon then for key, _ in pairs(senseid_parent_etymon) do if key:sub(1, #target_prefix) == target_prefix then senseid_count = senseid_count + 1 end end end local has_multiple_senseids = senseid_count > 1 if term.id then -- Check if user provided a valid senseid local senseid_key = term.target_key .. ":" .. term.id if senseid_parent_etymon and senseid_parent_etymon[senseid_key] then if has_multiple_senseids then -- Ambiguous senseid: use senseid matched_id = term.id id_exists_in_disambiguation = true elseif has_multiple_ids then -- Unique senseid but ambiguous etymon: use etymon ID matched_id = term.etymon_id or term.id id_exists_in_disambiguation = true end else -- Check if user provided a valid etymon ID if has_multiple_ids and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.id then -- Ambiguous etymon: use etymon ID id_exists_in_disambiguation = true matched_id = term.id break end end end -- Fallback: check resolved etymon_id (e.g. from previous steps) if not id_exists_in_disambiguation and has_multiple_ids and term.etymon_id and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.etymon_id then id_exists_in_disambiguation = true matched_id = term.etymon_id break end end end end end -- Use the matched ID if found if term.override or id_exists_in_disambiguation then part_data.id = matched_id or term.id end table.insert(parts, part_data) part_index = part_index + 1 end end end end if #parts == 0 then return {} end local affix_data = { lang = page_lang, parts = parts, pos = "term", sort_key = nil, } if #parts == 1 then affix_data.allow_no_affixes_or_compounds = true end local affix_categories = M.affix.get_affix_categories_only(affix_data) local result = {} for _, cat in ipairs(affix_categories) do if type(cat) == "table" then table.insert(result, { cat = cat.cat, sort_key = cat.sort_key, sort_base = cat.sort_base }) else table.insert(result, { cat = cat }) end end return result end -- Add borrowing-related categories (top-level only) local function collect_borrowing_categories(categories, page_lang, term, config) if config.borrowing_type == "borrowed" then local temp_categories = {} M.etymology.insert_borrowed_cat(temp_categories, page_lang, term.lang) for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end if config.specialized_borrowing then local result = M.etymology_specialized.specialized_borrowing { bortype = config.specialized_borrowing, lang = page_lang, sources = { term.lang }, terms = { { lang = term.lang, term = "-" } }, notext = true, nocat = false, } for cat_name in result:gmatch("%[%[Category:([^%]]+)%]%]") do add_category(categories, cat_name) end end end -- Add source-based derivation categories (top-level only) local function collect_source_derivation_categories(categories, page_lang, term, config) if not config.source_category_type then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = config.source_category_type, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end -- Add source language categories local function collect_source_categories(categories, page_lang, term, chain, get_norm_lang_func) if page_lang:getCode() == get_norm_lang_func(term.lang):getCode() then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end if chain.inherited then temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = "terms inherited", nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end end -- Add root/word categories local function collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, chain, get_norm_lang_func, lang_exc, keyword) local pos_types = { root = "root", word = "word" } -- Determine pos: from term's postype, keyword's pos_override, or args.pos local pos local config = get_keyword_config(keyword, lang_exc) if term.postype then -- Term-level postype modifier takes highest priority pos = term.postype elseif config and config.pos_override then pos = config.pos_override elseif type(term.args) == "table" and term.args.pos then pos = term.args.pos end local pos_type = pos_types[pos] if not pos_type or term.unknown_term then return end -- Skip root/word categories for descendants of affix groups -- if pos_type then -- return -- end local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode() -- Skip self-references if same_language and root_title == term.title then return end -- Use makeEntryName to strip diacritics for category names local entry_name = term.lang:makeEntryName(term.title) local lang_name = page_lang:getCanonicalName() local cat_name if chain.passed_through then local etymon_lang_name = export.get_cat_name(term.lang) cat_name = lang_name .. " terms derived from the " .. etymon_lang_name .. " " .. pos_type .. " " .. entry_name else cat_name = lang_name .. " terms belonging to the " .. pos_type .. " " .. entry_name end -- Add ID disambiguation if needed (for roots/words: use etymon_id if resolved via senseid, otherwise use id) local target_ids = available_etymon_ids[term.target_key] local effective_id = term.etymon_id or term.id -- etymon_id if senseid, otherwise id is already an etymon id if target_ids and effective_id then local same_pos_count = 0 for _, id_data in ipairs(target_ids) do if type(id_data) == "table" and id_data.pos == pos then same_pos_count = same_pos_count + 1 end end if same_pos_count > 1 then cat_name = cat_name .. " (" .. effective_id .. ")" end end add_category(categories, cat_name) end -- Compute chain state for a term based on parent chain and keyword config -- Hyphen patterns for affix detection (regular hyphen + script-specific) local AFFIX_HYPHEN_PATTERN = "[%-%־ـ᠊]" -- regular hyphen, Hebrew maqqef, Arabic tatweel, Mongolian hyphen -- Check if a term is an actual affix (not a non-affix member of an affix group) local function is_actual_affix(term) -- Check explicit aftype modifier if term.aftype then local normalized = aftype_aliases[term.aftype] or term.aftype return normalized ~= "non-affix" end -- Check if pos=root (treated as non-affix) if term.args and term.args.pos and term.args.pos == "root" then return false end -- Auto-detect by hyphen: prefix ends with -, suffix starts with -, etc. if term.title then local title = term.title -- Strip leading * for reconstructed terms before checking hyphens title = title:gsub("^%*", "") -- Check for hyphens at start or end (handles script-specific hyphens too) if title:match("^" .. AFFIX_HYPHEN_PATTERN) or title:match(AFFIX_HYPHEN_PATTERN .. "$") then return true end end -- Default: not an affix return false end local function compute_category_chain(parent_chain, config, page_lang, term_lang, get_norm_lang_func, parent_term_lang, term) -- Track if we're inside an actual affix (for suppressing root categories on descendants) -- Only set if the term is an actual affix (prefix, suffix, etc.), not a non-affix member local inside_affix = parent_chain.inside_affix if config.affix_categories and term and is_actual_affix(term) then inside_affix = true end -- If no_child_categories is set, disable everything if config.no_child_categories then return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = false, source = false, pos = false, recurse = false, inside_affix = inside_affix, } end local term_is_transitive = is_transitive(config.transitive, page_lang, term_lang) local new_source = parent_chain.source and term_is_transitive -- For CROSS_LANG_NO_INTERNAL_SOURCE: track internal derivation language context -- Check if this term is internal relative to parent term's language (if parent_term_lang provided) -- or relative to page language (if no parent_term_lang) local internal_lang = parent_chain.internal_lang local is_internal_in_context = false if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then local check_lang = parent_term_lang or page_lang local term_lang_code = get_norm_lang_func(term_lang):getCode() local check_lang_code = get_norm_lang_func(check_lang):getCode() if internal_lang then -- Already in an internal derivation context: check if this term is also internal is_internal_in_context = term_lang_code == internal_lang else -- Check if this term is internal relative to parent term (or page if no parent) is_internal_in_context = term_lang_code == check_lang_code end end -- Source chain behavior for CROSS_LANG_NO_INTERNAL_SOURCE if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then if is_internal_in_context then -- Internal derivation new_source = false internal_lang = get_norm_lang_func(term_lang):getCode() else -- Cross-language new_source = parent_chain.source and term_is_transitive internal_lang = nil end end local new_pos = parent_chain.pos return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = parent_chain.inherited and config.inherited_chain, source = new_source, pos = new_pos, internal_lang = internal_lang, recurse = new_source or new_pos, inside_affix = inside_affix, } end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local page_lang = opts.page_lang local available_etymon_ids = opts.available_etymon_ids local senseid_parent_etymon = opts.senseid_parent_etymon local get_norm_lang_func = opts.get_norm_lang_func local lang_exc = opts.lang_exc local categories = {} local seen = {} local lang_name = page_lang:getCanonicalName() local root_title = data_tree.title -- Collect the tree recursively local function collect(node, parent_chain, is_toplevel) -- Avoid processing same node twice if not node.unknown_term and node.title then local key = node.lang:getFullCode() .. ":" .. (node.title or "") .. ":" .. (node.id or "") if seen[key] then return end seen[key] = true end -- Collect affix categories at top level only if is_toplevel then local affix_cats = collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) for _, cat in ipairs(affix_cats) do add_category(categories, lang_name .. " " .. cat.cat, cat.sort_key, cat.sort_base) end end -- Process each container for _, container in ipairs(node.children or {}) do local keyword = container.keyword local config = get_keyword_config(keyword, lang_exc) -- Skip invalid keywords if config then -- Process each term in the container for _, term in ipairs(container.terms or {}) do local term_chain = compute_category_chain(parent_chain, config, page_lang, term.lang, get_norm_lang_func, node.lang, term) local no_child_categories = config.no_child_categories == true local term_is_transitive = is_transitive(config.transitive, page_lang, term.lang) -- Top-level only processing if is_toplevel then -- Missing/ambiguous etymon tracking if not term.unknown_term and (term.status == M.data.STATUS.MISSING or term.status == M.data.STATUS.REDLINK) then add_category(categories, lang_name .. " entries referencing missing etymons") end if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then add_category(categories, lang_name .. " entries referencing ambiguous etymons") end if term.missing_descendants_header then add_category(categories, lang_name .. " entries referencing etymons without Descendants sections") end if term.missing_descendants_entry then add_category(categories, lang_name .. " entries referencing etymons without this term in Descendants sections") end -- Top-level category (e.g., "undefined derivations") if config.toplevel_category then add_category(categories, lang_name .. " " .. config.toplevel_category) end -- Borrowing categories (bor, lbor, slbor, ubor, obor) if config.borrowing_type or config.specialized_borrowing then collect_borrowing_categories(categories, page_lang, term, config) end -- Borrowing categories from <bor>, <lbor>, or <slbor> modifiers on :af/:surf terms if keyword == "affix" or keyword == "surf" then if term.bor then local bor_config = { borrowing_type = "borrowed" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.lbor then local bor_config = { specialized_borrowing = "learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.slbor then local bor_config = { specialized_borrowing = "semi-learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) end end -- Source-based derivation categories (sl, calque, pcal) if config.source_category_type then collect_source_derivation_categories(categories, page_lang, term, config) end -- Skip all child categorisation if no_child_categories is set if not no_child_categories then -- Source categories only if transitive if term_is_transitive then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end -- Pos categories always (unless no_child_categories) collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end else -- Below top level, respect the parent chain if parent_chain.source then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end if parent_chain.pos then collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end end -- Recurse into term's children if needed and status allows if term_chain.recurse and (term.status == M.data.STATUS.OK or term.status == M.data.STATUS.INLINE) then collect(term, term_chain, false) end end end end end -- Initial chain state local initial_chain = { passed_through = false, inherited = true, source = true, pos = true, internal_lang = nil, recurse = true, inside_affix = false, } collect(data_tree, initial_chain, true) local cat_list = {} for cat_name, sort_data in pairs(categories) do if sort_data.sort_key ~= nil or sort_data.sort_base ~= nil then table.insert(cat_list, { name = cat_name, sort_key = sort_data.sort_key, sort_base = sort_data.sort_base, }) else table.insert(cat_list, cat_name) end end return cat_list end function export.format(entries, lang) if type(entries) ~= "table" or #entries == 0 then return "" end local parts = {} for _, category in ipairs(entries) do if type(category) == "table" and type(category.name) == "string" then table.insert(parts, M.utilities.format_categories({ category.name }, lang, category.sort_key, category.sort_base)) elseif type(category) == "string" then table.insert(parts, M.utilities.format_categories({ category }, lang)) end end return table.concat(parts) end return export qaazt3r5h8qyyj6gn4rl4zbmoaycwgt 235420 235419 2026-06-02T04:53:03Z Lee 19 [[:en:Module:etymon/categories]] වෙතින් එක් සංශෝධනයක් 235419 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { etymology = "Module:etymology", affix = "Module:affix", etymology_specialized = "Module:etymology/specialized", utilities = "Module:utilities", }, loadData = { data = "Module:etymon/data", }, }) -- Evaluate whether a keyword is transitive for a given term local function is_transitive(transitive_mode, page_lang, term_lang) if transitive_mode == M.data.TRANSITIVE.ALWAYS then return true elseif transitive_mode == M.data.TRANSITIVE.NEVER then return false elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG then return page_lang:getCode() ~= term_lang:getCode() elseif transitive_mode == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then return page_lang:getCode() ~= term_lang:getCode() end error("Unknown transitive mode: " .. tostring(transitive_mode)) end -- Get keyword config with language-specific overrides local function get_keyword_config(keyword, lang_exc) local base_config = M.data.keywords[keyword] if not base_config then return nil -- Invalid keyword end local overrides = lang_exc and lang_exc.keyword_overrides and lang_exc.keyword_overrides[keyword] if not overrides then return base_config end -- Merge overrides into base config local merged = {} for k, v in pairs(base_config) do merged[k] = v end for k, v in pairs(overrides) do merged[k] = v end return merged end function export.get_cat_name(source) local _, cat_name = M.etymology.get_display_and_cat_name(source, true) return cat_name end -- Normalize affix type aliases local aftype_aliases = { ["pre"] = "prefix", ["suf"] = "suffix", ["in"] = "infix", ["inter"] = "interfix", ["circum"] = "circumfix", ["naf"] = "non-affix", ["root"] = "non-affix", } local function add_category(categories, cat_name, sort_key, sort_base) if categories[cat_name] == nil then categories[cat_name] = { sort_key = sort_key, sort_base = sort_base, } return end local existing = categories[cat_name] if existing.sort_key == nil and sort_key ~= nil then existing.sort_key = sort_key end if existing.sort_base == nil and sort_base ~= nil then existing.sort_base = sort_base end end -- Collect affix categories from top-level group containers local function collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) local parts = {} local part_index = 1 for _, container in ipairs(node.children or {}) do local config = container.keyword_info if config and config.affix_categories then for _, term in ipairs(container.terms or {}) do if not term.unknown_term then local part_data = { term = term.title, tr = term.tr, ts = term.ts, alt = term.alt, itemno = part_index, orig_index = part_index } -- Determine affix type: explicit aftype > pos=root > auto-detect local aftype = term.aftype if aftype then aftype = aftype_aliases[aftype] or aftype part_data.type = aftype elseif term.args and term.args.pos and term.args.pos == "root" then part_data.type = "non-affix" end if term.lang:getCode() ~= page_lang:getCode() then part_data.lang = term.lang end local target_ids = available_etymon_ids[term.target_key] local has_multiple_ids = target_ids and #target_ids > 1 local id_exists_in_disambiguation = false local matched_id = nil -- Count available senseids for the target page local senseid_count = 0 local target_prefix = term.target_key .. ":" if senseid_parent_etymon then for key, _ in pairs(senseid_parent_etymon) do if key:sub(1, #target_prefix) == target_prefix then senseid_count = senseid_count + 1 end end end local has_multiple_senseids = senseid_count > 1 if term.id then -- Check if user provided a valid senseid local senseid_key = term.target_key .. ":" .. term.id if senseid_parent_etymon and senseid_parent_etymon[senseid_key] then if has_multiple_senseids then -- Ambiguous senseid: use senseid matched_id = term.id id_exists_in_disambiguation = true elseif has_multiple_ids then -- Unique senseid but ambiguous etymon: use etymon ID matched_id = term.etymon_id or term.id id_exists_in_disambiguation = true end else -- Check if user provided a valid etymon ID if has_multiple_ids and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.id then -- Ambiguous etymon: use etymon ID id_exists_in_disambiguation = true matched_id = term.id break end end end -- Fallback: check resolved etymon_id (e.g. from previous steps) if not id_exists_in_disambiguation and has_multiple_ids and term.etymon_id and target_ids then for _, id_data in ipairs(target_ids) do local stored_id = type(id_data) == "table" and id_data.id or id_data if stored_id == term.etymon_id then id_exists_in_disambiguation = true matched_id = term.etymon_id break end end end end end -- Use the matched ID if found if term.override or id_exists_in_disambiguation then part_data.id = matched_id or term.id end table.insert(parts, part_data) part_index = part_index + 1 end end end end if #parts == 0 then return {} end local affix_data = { lang = page_lang, parts = parts, pos = "term", sort_key = nil, } if #parts == 1 then affix_data.allow_no_affixes_or_compounds = true end local affix_categories = M.affix.get_affix_categories_only(affix_data) local result = {} for _, cat in ipairs(affix_categories) do if type(cat) == "table" then table.insert(result, { cat = cat.cat, sort_key = cat.sort_key, sort_base = cat.sort_base }) else table.insert(result, { cat = cat }) end end return result end -- Add borrowing-related categories (top-level only) local function collect_borrowing_categories(categories, page_lang, term, config) if config.borrowing_type == "borrowed" then local temp_categories = {} M.etymology.insert_borrowed_cat(temp_categories, page_lang, term.lang) for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end if config.specialized_borrowing then local result = M.etymology_specialized.specialized_borrowing { bortype = config.specialized_borrowing, lang = page_lang, sources = { term.lang }, terms = { { lang = term.lang, term = "-" } }, notext = true, nocat = false, } for cat_name in result:gmatch("%[%[Category:([^%]]+)%]%]") do add_category(categories, cat_name) end end end -- Add source-based derivation categories (top-level only) local function collect_source_derivation_categories(categories, page_lang, term, config) if not config.source_category_type then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = config.source_category_type, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end -- Add source language categories local function collect_source_categories(categories, page_lang, term, chain, get_norm_lang_func) if page_lang:getCode() == get_norm_lang_func(term.lang):getCode() then return end local temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end if chain.inherited then temp_categories = {} M.etymology.insert_source_cat_get_display { lang = page_lang, source = term.lang, categories = temp_categories, borrowing_type = "terms inherited", nocat = false, } for _, cat in ipairs(temp_categories) do add_category(categories, cat) end end end -- Add root/word categories local function collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, chain, get_norm_lang_func, lang_exc, keyword) local pos_types = { root = "root", word = "word" } -- Determine pos: from term's postype, keyword's pos_override, or args.pos local pos local config = get_keyword_config(keyword, lang_exc) if term.postype then -- Term-level postype modifier takes highest priority pos = term.postype elseif config and config.pos_override then pos = config.pos_override elseif type(term.args) == "table" and term.args.pos then pos = term.args.pos end local pos_type = pos_types[pos] if not pos_type or term.unknown_term then return end -- Skip root/word categories for descendants of affix groups -- if pos_type then -- return -- end local same_language = get_norm_lang_func(page_lang):getFullCode() == get_norm_lang_func(term.lang):getFullCode() -- Skip self-references if same_language and root_title == term.title then return end -- Use makeEntryName to strip diacritics for category names local entry_name = term.lang:makeEntryName(term.title) local lang_name = page_lang:getCanonicalName() local cat_name if chain.passed_through then local etymon_lang_name = export.get_cat_name(term.lang) cat_name = lang_name .. " terms derived from the " .. etymon_lang_name .. " " .. pos_type .. " " .. entry_name else cat_name = lang_name .. " terms belonging to the " .. pos_type .. " " .. entry_name end -- Add ID disambiguation if needed (for roots/words: use etymon_id if resolved via senseid, otherwise use id) local target_ids = available_etymon_ids[term.target_key] local effective_id = term.etymon_id or term.id -- etymon_id if senseid, otherwise id is already an etymon id if target_ids and effective_id then local same_pos_count = 0 for _, id_data in ipairs(target_ids) do if type(id_data) == "table" and id_data.pos == pos then same_pos_count = same_pos_count + 1 end end if same_pos_count > 1 then cat_name = cat_name .. " (" .. effective_id .. ")" end end add_category(categories, cat_name) end -- Compute chain state for a term based on parent chain and keyword config -- Hyphen patterns for affix detection (regular hyphen + script-specific) local AFFIX_HYPHEN_PATTERN = "[%-%־ـ᠊]" -- regular hyphen, Hebrew maqqef, Arabic tatweel, Mongolian hyphen -- Check if a term is an actual affix (not a non-affix member of an affix group) local function is_actual_affix(term) -- Check explicit aftype modifier if term.aftype then local normalized = aftype_aliases[term.aftype] or term.aftype return normalized ~= "non-affix" end -- Check if pos=root (treated as non-affix) if term.args and term.args.pos and term.args.pos == "root" then return false end -- Auto-detect by hyphen: prefix ends with -, suffix starts with -, etc. if term.title then local title = term.title -- Strip leading * for reconstructed terms before checking hyphens title = title:gsub("^%*", "") -- Check for hyphens at start or end (handles script-specific hyphens too) if title:match("^" .. AFFIX_HYPHEN_PATTERN) or title:match(AFFIX_HYPHEN_PATTERN .. "$") then return true end end -- Default: not an affix return false end local function compute_category_chain(parent_chain, config, page_lang, term_lang, get_norm_lang_func, parent_term_lang, term) -- Track if we're inside an actual affix (for suppressing root categories on descendants) -- Only set if the term is an actual affix (prefix, suffix, etc.), not a non-affix member local inside_affix = parent_chain.inside_affix if config.affix_categories and term and is_actual_affix(term) then inside_affix = true end -- If no_child_categories is set, disable everything if config.no_child_categories then return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = false, source = false, pos = false, recurse = false, inside_affix = inside_affix, } end local term_is_transitive = is_transitive(config.transitive, page_lang, term_lang) local new_source = parent_chain.source and term_is_transitive -- For CROSS_LANG_NO_INTERNAL_SOURCE: track internal derivation language context -- Check if this term is internal relative to parent term's language (if parent_term_lang provided) -- or relative to page language (if no parent_term_lang) local internal_lang = parent_chain.internal_lang local is_internal_in_context = false if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then local check_lang = parent_term_lang or page_lang local term_lang_code = get_norm_lang_func(term_lang):getCode() local check_lang_code = get_norm_lang_func(check_lang):getCode() if internal_lang then -- Already in an internal derivation context: check if this term is also internal is_internal_in_context = term_lang_code == internal_lang else -- Check if this term is internal relative to parent term (or page if no parent) is_internal_in_context = term_lang_code == check_lang_code end end -- Source chain behavior for CROSS_LANG_NO_INTERNAL_SOURCE if config.transitive == M.data.TRANSITIVE.CROSS_LANG_NO_INTERNAL_SOURCE then if is_internal_in_context then -- Internal derivation new_source = false internal_lang = get_norm_lang_func(term_lang):getCode() else -- Cross-language new_source = parent_chain.source and term_is_transitive internal_lang = nil end end local new_pos = parent_chain.pos return { passed_through = parent_chain.passed_through or page_lang:getCode() ~= get_norm_lang_func(term_lang):getCode(), inherited = parent_chain.inherited and config.inherited_chain, source = new_source, pos = new_pos, internal_lang = internal_lang, recurse = new_source or new_pos, inside_affix = inside_affix, } end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local page_lang = opts.page_lang local available_etymon_ids = opts.available_etymon_ids local senseid_parent_etymon = opts.senseid_parent_etymon local get_norm_lang_func = opts.get_norm_lang_func local lang_exc = opts.lang_exc local categories = {} local seen = {} local lang_name = page_lang:getCanonicalName() local root_title = data_tree.title -- Collect the tree recursively local function collect(node, parent_chain, is_toplevel) -- Avoid processing same node twice if not node.unknown_term and node.title then local key = node.lang:getFullCode() .. ":" .. (node.title or "") .. ":" .. (node.id or "") if seen[key] then return end seen[key] = true end -- Collect affix categories at top level only if is_toplevel then local affix_cats = collect_affix_categories(node, page_lang, available_etymon_ids, senseid_parent_etymon, lang_exc) for _, cat in ipairs(affix_cats) do add_category(categories, lang_name .. " " .. cat.cat, cat.sort_key, cat.sort_base) end end -- Process each container for _, container in ipairs(node.children or {}) do local keyword = container.keyword local config = get_keyword_config(keyword, lang_exc) -- Skip invalid keywords if config then -- Process each term in the container for _, term in ipairs(container.terms or {}) do local term_chain = compute_category_chain(parent_chain, config, page_lang, term.lang, get_norm_lang_func, node.lang, term) local no_child_categories = config.no_child_categories == true local term_is_transitive = is_transitive(config.transitive, page_lang, term.lang) -- Top-level only processing if is_toplevel then -- Missing/ambiguous etymon tracking if not term.unknown_term and (term.status == M.data.STATUS.MISSING or term.status == M.data.STATUS.REDLINK) then add_category(categories, lang_name .. " entries referencing missing etymons") end if not term.unknown_term and term.status == M.data.STATUS.AMBIGUOUS then add_category(categories, lang_name .. " entries referencing ambiguous etymons") end if term.missing_descendants_header then add_category(categories, lang_name .. " entries referencing etymons without Descendants sections") end if term.missing_descendants_entry then add_category(categories, lang_name .. " entries referencing etymons without this term in Descendants sections") end -- Top-level category (e.g., "undefined derivations") if config.toplevel_category then add_category(categories, lang_name .. " " .. config.toplevel_category) end -- Borrowing categories (bor, lbor, slbor, ubor, obor) if config.borrowing_type or config.specialized_borrowing then collect_borrowing_categories(categories, page_lang, term, config) end -- Borrowing categories from <bor>, <lbor>, or <slbor> modifiers on :af/:surf terms if keyword == "affix" or keyword == "surf" then if term.bor then local bor_config = { borrowing_type = "borrowed" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.lbor then local bor_config = { specialized_borrowing = "learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) elseif term.slbor then local bor_config = { specialized_borrowing = "semi-learned" } collect_borrowing_categories(categories, page_lang, term, bor_config) end end -- Source-based derivation categories (sl, calque, pcal) if config.source_category_type then collect_source_derivation_categories(categories, page_lang, term, config) end -- Skip all child categorisation if no_child_categories is set if not no_child_categories then -- Source categories only if transitive if term_is_transitive then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end -- Pos categories always (unless no_child_categories) collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end else -- Below top level, respect the parent chain if parent_chain.source then collect_source_categories(categories, page_lang, term, term_chain, get_norm_lang_func) end if parent_chain.pos then collect_pos_categories(categories, page_lang, root_title, term, available_etymon_ids, term_chain, get_norm_lang_func, lang_exc, keyword) end end -- Recurse into term's children if needed and status allows if term_chain.recurse and (term.status == M.data.STATUS.OK or term.status == M.data.STATUS.INLINE) then collect(term, term_chain, false) end end end end end -- Initial chain state local initial_chain = { passed_through = false, inherited = true, source = true, pos = true, internal_lang = nil, recurse = true, inside_affix = false, } collect(data_tree, initial_chain, true) local cat_list = {} for cat_name, sort_data in pairs(categories) do if sort_data.sort_key ~= nil or sort_data.sort_base ~= nil then table.insert(cat_list, { name = cat_name, sort_key = sort_data.sort_key, sort_base = sort_data.sort_base, }) else table.insert(cat_list, cat_name) end end return cat_list end function export.format(entries, lang) if type(entries) ~= "table" or #entries == 0 then return "" end local parts = {} for _, category in ipairs(entries) do if type(category) == "table" and type(category.name) == "string" then table.insert(parts, M.utilities.format_categories({ category.name }, lang, category.sort_key, category.sort_base)) elseif type(category) == "string" then table.insert(parts, M.utilities.format_categories({ category }, lang)) end end return table.concat(parts) end return export qaazt3r5h8qyyj6gn4rl4zbmoaycwgt Module:etymon/data 828 139722 235421 226941 2026-05-31T02:17:43Z en>Fenakhay 0 [[User:Dragonoid76]] Careful.... 235421 Scribunto text/plain local export = {} export.STATUS = { OK = "ok", INLINE = "inline", MISSING = "missing", REDLINK = "redlink", AMBIGUOUS = "ambiguous", } export.TRANSITIVE = { ALWAYS = "always", -- always recurse into children NEVER = "never", -- never recurse into children CROSS_LANG = "cross_lang", -- only recurse when source lang differs from target lang (but pos chain continues) CROSS_LANG_NO_INTERNAL_SOURCE = "cross_lang_no_internal_source", -- like CROSS_LANG, but source breaks for internal derivations in the same language context } -- Deep merge tables (nested tables are merged recursively, later values override earlier) local function deep_merge(...) local result = {} for _, t in ipairs({ ... }) do for k, v in pairs(t) do if type(v) == "table" and type(result[k]) == "table" then result[k] = deep_merge(result[k], v) else result[k] = v end end end return result end local function make_glossary_link(term, display_text) if not term then return display_text end return "[[Appendix:Glossary#" .. term:gsub(" ", "_") .. "|" .. display_text .. "]]" end -- Extract base word and connector from text like "Borrowed from" or "calque of" local function split_glossary_text(text) for _, pattern in ipairs({ "^(.-)(%s+[Oo][Ff])$", "^(.-)(%s+[Ff][Rr][Oo][Mm])$" }) do local base, rest = text:match(pattern) if base then return base, rest end end return text, "" end local TRANSITIVE = export.TRANSITIVE local function create_keyword(opts) local entry = { is_group = opts.is_group or false, abbrev = opts.abbrev, glossary = opts.glossary, transitive = opts.transitive or TRANSITIVE.ALWAYS, -- default "always" inherited_chain = opts.inherited_chain or false, affix_categories = opts.affix_categories or false, borrowing_type = opts.borrowing_type, specialized_borrowing = opts.specialized_borrowing, toplevel_category = opts.toplevel_category, no_child_categories = opts.no_child_categories or false, source_category_type = opts.source_category_type, invisible = (opts.invisible == true and "all") or opts.invisible or false, pos_override = opts.pos_override, new_sentence = opts.new_sentence or false, separate_clause = opts.separate_clause or false, aliases = opts.aliases, } -- Only set text/phrase when visible in text (invisible ~= "all" and ~= "text") local inv = entry.invisible if inv ~= "all" and inv ~= "text" then entry.phrase = opts.phrase if opts.text then if opts.glossary then local base_word, rest = split_glossary_text(opts.text) entry.text = make_glossary_link(opts.glossary, base_word) .. rest else entry.text = opts.text end end end return entry end -- Shared defaults for keyword groups local DEFAULTS = { -- Keywords that pass through inheritance chain inheritance = { transitive = TRANSITIVE.ALWAYS, inherited_chain = true, }, -- Standard transitive derivation transitive = { transitive = TRANSITIVE.ALWAYS, }, -- Standard for internal derivations: transitive across languages, but not within them internal_derivation = { transitive = TRANSITIVE.CROSS_LANG, }, -- Borrowing keywords borrowing = { transitive = TRANSITIVE.ALWAYS, }, -- Affix group keywords (compound words, blends, etc.) affix_group = { is_group = true, transitive = TRANSITIVE.CROSS_LANG, affix_categories = true, }, -- Calque-like keywords (calque, partial calque, semantic loan) calque_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, new_sentence = true, }, -- Non-transitive influence influence_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, }, } export.keywords = { -- -- Inheritance keywords -- ["from"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "From", phrase = "from", })), ["inherited"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "Inherited from", phrase = "from", glossary = "inherited", aliases = { "inh" }, })), -- -- Basic derivation keywords -- ["uder"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "From", phrase = "from", toplevel_category = "undefined derivations", })), ["derived"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Derived from", phrase = "from", abbrev = "der.", glossary = "derived terms", aliases = { "der" }, })), -- -- Affix/compound group keywords -- ["affix"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "From", phrase = "from", aliases = { "af" }, })), ["surf"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "By surface analysis,", phrase = "by surface analysis,", abbrev = "surf.", glossary = "surface analysis", new_sentence = true, invisible = "tree", })), ["blend"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Blend of", phrase = "a blend of", abbrev = "blend", glossary = "blend", toplevel_category = "blends", })), ["univerbation"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Univerbation of", phrase = "univerbation of", abbrev = "univ.", glossary = "univerbation", toplevel_category = "univerbations", aliases = { "univ" }, })), ["vrd-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", toplevel_category = "vrddhi derivatives", })), ["sa-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "[[Sanskritic]] formation from", phrase = "a [[Sanskritic]] formation of", toplevel_category = "Sanskritic formations", })), -- -- Borrowing keywords -- ["bor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Borrowed from", phrase = "borrowed from", abbrev = "bor.", glossary = "loanword", borrowing_type = "borrowed", aliases = { "borrowed" }, })), ["lbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Learned borrowing from", phrase = "a learned borrowing from", abbrev = "lbor.", glossary = "learned borrowing", specialized_borrowing = "learned", })), ["obor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Orthographic borrowing from", phrase = "an orthographic borrowing from", abbrev = "obor.", glossary = "orthographic borrowing", specialized_borrowing = "orthographic", })), ["slbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Semi-learned borrowing from", phrase = "a semi-learned borrowing from", abbrev = "slbor.", glossary = "semi-learned borrowing", specialized_borrowing = "semi-learned", })), ["ubor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Unadapted borrowing from", phrase = "an unadapted borrowing from", abbrev = "ubor.", glossary = "unadapted borrowing", specialized_borrowing = "unadapted", })), -- -- Calque-like keywords (non-transitive, start new sentence) -- ["calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Calque of", phrase = "a calque of", abbrev = "calq.", glossary = "calque", specialized_borrowing = "calque", aliases = { "cal", "clq" }, })), ["partial calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Partial calque of", phrase = "a partial calque of", abbrev = "pcalq.", glossary = "partial calque", specialized_borrowing = "partial-calque", aliases = { "pcal" }, })), ["semantic loan"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Semantic loan of", phrase = "a semantic loan of", abbrev = "sl.", glossary = "semantic loan", specialized_borrowing = "semantic-loan", aliases = { "sl" }, })), ["psm"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Phono-semantic matching of", phrase = "a phono-semantic matching of", abbrev = "psm.", glossary = "phono-semantic matching", specialized_borrowing = "phono-semantic-matching", aliases = { "phono-semantic matching" }, })), -- -- Influence keywords (non-transitive, separate clause) -- ["influence"] = create_keyword(deep_merge(DEFAULTS.influence_like, { text = "Influenced by", phrase = "influenced by", abbrev = "influ.", glossary = "contamination", separate_clause = true, })), -- -- Morphological derivation keywords -- ["clipping"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Clipping of", phrase = "clipping of", abbrev = "clip.", glossary = "clipping", toplevel_category = "clippings", aliases = { "clip" }, })), ["ellipsis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Ellipsis of", phrase = "ellipsis of", abbrev = "ellip.", glossary = "ellipsis", toplevel_category = "ellipses", aliases = { "ellip" }, })), ["back-formation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Back-formation from", phrase = "a back-formation from", abbrev = "bf.", glossary = "back-formation", toplevel_category = "back-formations", aliases = { "bf" }, })), ["nominalization"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Nominalization of", phrase = "a nominalization of", abbrev = "nom.", glossary = "nominalization", toplevel_category = "nominalizations", aliases = { "nom" }, })), ["transliteration"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Transliteration of", phrase = "borrowed from", abbrev = "translit.", glossary = "transliteration", aliases = { "translit" }, })), ["vrd"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", toplevel_category = "vrddhi derivatives", })), ["apheretic"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Apheretic form of", phrase = "an apheretic form of", abbrev = "aph.", glossary = "apheresis", aliases = { "apheresis", "aphetic" }, })), ["denominal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Denominal verb from", phrase = "denominal verb from", abbrev = "denom.", glossary = "denominal", toplevel_category = "denominal verbs", aliases = { "denom" }, })), ["deverbal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Deverbal from", phrase = "deverbal from", abbrev = "deverb.", glossary = "deverbal", toplevel_category = "deverbals", })), ["reduplication"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Reduplication of", phrase = "reduplication of", abbrev = "redup.", glossary = "reduplication", toplevel_category = "reduplications", aliases = { "redup" }, })), ["abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Abbreviation of", phrase = "abbreviation of", abbrev = "abbr.", glossary = "abbreviation", aliases = { "abbr", "abbrev" }, })), ["syllabic abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Syllabic abbreviation of", phrase = "syllabic abbreviation of", abbrev = "syl. abbr.", glossary = "syllabic abbreviation", aliases = { "sylabbr", "sylabbrev" }, })), ["acronym"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Acronym of", phrase = "acronym of", abbrev = "acronym", glossary = "acronym", aliases = { "acro" }, })), ["initialism"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Initialism of", phrase = "initialism of", abbrev = "init.", glossary = "initialism", aliases = { "init" }, })), ["metathesis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Metathesis of", phrase = "metathesis of", abbrev = "meta.", glossary = "metathesis", toplevel_category = "words derived through metathesis", aliases = { "meta" }, })), -- -- Invisible keywords (no text output) -- ["root"] = create_keyword { transitive = TRANSITIVE.ALWAYS, invisible = "all", pos_override = "root", }, ["afeq"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "From", phrase = "from", transitive = TRANSITIVE.NEVER, invisible = "all", })), } local aliases_to_register = {} local canonical_aliases = {} -- Map every keyword (canonical or alias) to its canonical form for consistent checks and tracking. export.keyword_canonical = {} for name, keyword_data in pairs(export.keywords) do export.keyword_canonical[name] = name if keyword_data.aliases then canonical_aliases[name] = keyword_data.aliases for _, alias in ipairs(keyword_data.aliases) do if export.keywords[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' collides with existing keyword '" .. alias .. "'.") end if aliases_to_register[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' is already claimed by another keyword.") end aliases_to_register[alias] = keyword_data export.keyword_canonical[alias] = name end keyword_data.aliases = nil end end for alias, data in pairs(aliases_to_register) do export.keywords[alias] = data end -- -- Language exception presets -- local EXCEPTION_PRESETS = { -- Fully disallowed: no tree, no text, no categories disallowed = { disallow = { tree = true, text = true }, suppress_categories = true, }, -- Suppress transliteration only no_translit = { suppress_tr = true, }, -- Suppress all categories only no_categories = { suppress_categories = true, }, } --[=[ Available exception options: disallow = { Related options for disallowing output: tree Disallow etymology trees for this language text Disallow etymology text generation for this language ref Reference link shown when tree/text is disallowed } suppress_tr Suppress transliteration in links suppress_categories Suppress all category generation normalize_to Normalize language code to a different code normalize_from_families Apply normalization to languages in these families normalize_exclude_families Exclude these families from normalization keyword_overrides Per-keyword categorisation overrides (e.g. { ["af"] = { transitive = TRANSITIVE.NEVER } }) ]=] local function create_exception(preset, overrides) local base = preset and EXCEPTION_PRESETS[preset] or {} return deep_merge(base, overrides or {}) end export.config = { lang_exceptions = { ["zh"] = create_exception("disallowed", { disallow = { ref = "[[Wiktionary:Beer parlour/2025/May#Template:etymon for Chinese]]" }, suppress_tr = true, normalize_to = "zh", normalize_from_families = { "zhx" }, normalize_exclude_families = { "qfa-cnt" }, }), }, } -- Supported codes for the nominalization <g:code> modifier (subset of common gender/number-style codes) export.nominalization_g_codes = { ["m"] = "masculine", ["f"] = "feminine", ["n"] = "neuter", ["c"] = "common", ["gneut"] = "gender-neutral", ["s"] = "singular", ["p"] = "plural", ["d"] = "dual", ["pauc"] = "paucal", ["mf"] = "masculine or feminine", ["fm"] = "masculine or feminine", ["mfn"] = "masculine, feminine or neuter", ["mnf"] = "masculine, feminine or neuter", ["fmn"] = "masculine, feminine or neuter", ["fnm"] = "masculine, feminine or neuter", ["nmf"] = "masculine, feminine or neuter", ["nfm"] = "masculine, feminine or neuter", } -- -- Propagate keyword overrides to aliases -- if export.config.lang_exceptions then for lang_code, exception in pairs(export.config.lang_exceptions) do if exception.keyword_overrides then for canonical, aliases in pairs(canonical_aliases) do if exception.keyword_overrides[canonical] then local override_data = exception.keyword_overrides[canonical] for _, alias in ipairs(aliases) do if not exception.keyword_overrides[alias] then exception.keyword_overrides[alias] = override_data end end end end end end end return export 6ztmzwuxru8jln9olubjn1zzhx3vqny 235422 235421 2026-06-02T04:53:21Z Lee 19 [[:en:Module:etymon/data]] වෙතින් එක් සංශෝධනයක් 235421 Scribunto text/plain local export = {} export.STATUS = { OK = "ok", INLINE = "inline", MISSING = "missing", REDLINK = "redlink", AMBIGUOUS = "ambiguous", } export.TRANSITIVE = { ALWAYS = "always", -- always recurse into children NEVER = "never", -- never recurse into children CROSS_LANG = "cross_lang", -- only recurse when source lang differs from target lang (but pos chain continues) CROSS_LANG_NO_INTERNAL_SOURCE = "cross_lang_no_internal_source", -- like CROSS_LANG, but source breaks for internal derivations in the same language context } -- Deep merge tables (nested tables are merged recursively, later values override earlier) local function deep_merge(...) local result = {} for _, t in ipairs({ ... }) do for k, v in pairs(t) do if type(v) == "table" and type(result[k]) == "table" then result[k] = deep_merge(result[k], v) else result[k] = v end end end return result end local function make_glossary_link(term, display_text) if not term then return display_text end return "[[Appendix:Glossary#" .. term:gsub(" ", "_") .. "|" .. display_text .. "]]" end -- Extract base word and connector from text like "Borrowed from" or "calque of" local function split_glossary_text(text) for _, pattern in ipairs({ "^(.-)(%s+[Oo][Ff])$", "^(.-)(%s+[Ff][Rr][Oo][Mm])$" }) do local base, rest = text:match(pattern) if base then return base, rest end end return text, "" end local TRANSITIVE = export.TRANSITIVE local function create_keyword(opts) local entry = { is_group = opts.is_group or false, abbrev = opts.abbrev, glossary = opts.glossary, transitive = opts.transitive or TRANSITIVE.ALWAYS, -- default "always" inherited_chain = opts.inherited_chain or false, affix_categories = opts.affix_categories or false, borrowing_type = opts.borrowing_type, specialized_borrowing = opts.specialized_borrowing, toplevel_category = opts.toplevel_category, no_child_categories = opts.no_child_categories or false, source_category_type = opts.source_category_type, invisible = (opts.invisible == true and "all") or opts.invisible or false, pos_override = opts.pos_override, new_sentence = opts.new_sentence or false, separate_clause = opts.separate_clause or false, aliases = opts.aliases, } -- Only set text/phrase when visible in text (invisible ~= "all" and ~= "text") local inv = entry.invisible if inv ~= "all" and inv ~= "text" then entry.phrase = opts.phrase if opts.text then if opts.glossary then local base_word, rest = split_glossary_text(opts.text) entry.text = make_glossary_link(opts.glossary, base_word) .. rest else entry.text = opts.text end end end return entry end -- Shared defaults for keyword groups local DEFAULTS = { -- Keywords that pass through inheritance chain inheritance = { transitive = TRANSITIVE.ALWAYS, inherited_chain = true, }, -- Standard transitive derivation transitive = { transitive = TRANSITIVE.ALWAYS, }, -- Standard for internal derivations: transitive across languages, but not within them internal_derivation = { transitive = TRANSITIVE.CROSS_LANG, }, -- Borrowing keywords borrowing = { transitive = TRANSITIVE.ALWAYS, }, -- Affix group keywords (compound words, blends, etc.) affix_group = { is_group = true, transitive = TRANSITIVE.CROSS_LANG, affix_categories = true, }, -- Calque-like keywords (calque, partial calque, semantic loan) calque_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, new_sentence = true, }, -- Non-transitive influence influence_like = { transitive = TRANSITIVE.NEVER, no_child_categories = true, }, } export.keywords = { -- -- Inheritance keywords -- ["from"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "From", phrase = "from", })), ["inherited"] = create_keyword(deep_merge(DEFAULTS.inheritance, { text = "Inherited from", phrase = "from", glossary = "inherited", aliases = { "inh" }, })), -- -- Basic derivation keywords -- ["uder"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "From", phrase = "from", toplevel_category = "undefined derivations", })), ["derived"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Derived from", phrase = "from", abbrev = "der.", glossary = "derived terms", aliases = { "der" }, })), -- -- Affix/compound group keywords -- ["affix"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "From", phrase = "from", aliases = { "af" }, })), ["surf"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "By surface analysis,", phrase = "by surface analysis,", abbrev = "surf.", glossary = "surface analysis", new_sentence = true, invisible = "tree", })), ["blend"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Blend of", phrase = "a blend of", abbrev = "blend", glossary = "blend", toplevel_category = "blends", })), ["univerbation"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Univerbation of", phrase = "univerbation of", abbrev = "univ.", glossary = "univerbation", toplevel_category = "univerbations", aliases = { "univ" }, })), ["vrd-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", toplevel_category = "vrddhi derivatives", })), ["sa-af"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "[[Sanskritic]] formation from", phrase = "a [[Sanskritic]] formation of", toplevel_category = "Sanskritic formations", })), -- -- Borrowing keywords -- ["bor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Borrowed from", phrase = "borrowed from", abbrev = "bor.", glossary = "loanword", borrowing_type = "borrowed", aliases = { "borrowed" }, })), ["lbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Learned borrowing from", phrase = "a learned borrowing from", abbrev = "lbor.", glossary = "learned borrowing", specialized_borrowing = "learned", })), ["obor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Orthographic borrowing from", phrase = "an orthographic borrowing from", abbrev = "obor.", glossary = "orthographic borrowing", specialized_borrowing = "orthographic", })), ["slbor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Semi-learned borrowing from", phrase = "a semi-learned borrowing from", abbrev = "slbor.", glossary = "semi-learned borrowing", specialized_borrowing = "semi-learned", })), ["ubor"] = create_keyword(deep_merge(DEFAULTS.borrowing, { text = "Unadapted borrowing from", phrase = "an unadapted borrowing from", abbrev = "ubor.", glossary = "unadapted borrowing", specialized_borrowing = "unadapted", })), -- -- Calque-like keywords (non-transitive, start new sentence) -- ["calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Calque of", phrase = "a calque of", abbrev = "calq.", glossary = "calque", specialized_borrowing = "calque", aliases = { "cal", "clq" }, })), ["partial calque"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Partial calque of", phrase = "a partial calque of", abbrev = "pcalq.", glossary = "partial calque", specialized_borrowing = "partial-calque", aliases = { "pcal" }, })), ["semantic loan"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Semantic loan of", phrase = "a semantic loan of", abbrev = "sl.", glossary = "semantic loan", specialized_borrowing = "semantic-loan", aliases = { "sl" }, })), ["psm"] = create_keyword(deep_merge(DEFAULTS.calque_like, { text = "Phono-semantic matching of", phrase = "a phono-semantic matching of", abbrev = "psm.", glossary = "phono-semantic matching", specialized_borrowing = "phono-semantic-matching", aliases = { "phono-semantic matching" }, })), -- -- Influence keywords (non-transitive, separate clause) -- ["influence"] = create_keyword(deep_merge(DEFAULTS.influence_like, { text = "Influenced by", phrase = "influenced by", abbrev = "influ.", glossary = "contamination", separate_clause = true, })), -- -- Morphological derivation keywords -- ["clipping"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Clipping of", phrase = "clipping of", abbrev = "clip.", glossary = "clipping", toplevel_category = "clippings", aliases = { "clip" }, })), ["ellipsis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Ellipsis of", phrase = "ellipsis of", abbrev = "ellip.", glossary = "ellipsis", toplevel_category = "ellipses", aliases = { "ellip" }, })), ["back-formation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Back-formation from", phrase = "a back-formation from", abbrev = "bf.", glossary = "back-formation", toplevel_category = "back-formations", aliases = { "bf" }, })), ["nominalization"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Nominalization of", phrase = "a nominalization of", abbrev = "nom.", glossary = "nominalization", toplevel_category = "nominalizations", aliases = { "nom" }, })), ["transliteration"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Transliteration of", phrase = "borrowed from", abbrev = "translit.", glossary = "transliteration", aliases = { "translit" }, })), ["vrd"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Vṛddhi derivative of", phrase = "a vṛddhi derivative of", abbrev = "vṛd.", glossary = "vṛddhi derivative", toplevel_category = "vrddhi derivatives", })), ["apheretic"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Apheretic form of", phrase = "an apheretic form of", abbrev = "aph.", glossary = "apheresis", aliases = { "apheresis", "aphetic" }, })), ["denominal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Denominal verb from", phrase = "denominal verb from", abbrev = "denom.", glossary = "denominal", toplevel_category = "denominal verbs", aliases = { "denom" }, })), ["deverbal"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Deverbal from", phrase = "deverbal from", abbrev = "deverb.", glossary = "deverbal", toplevel_category = "deverbals", })), ["reduplication"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Reduplication of", phrase = "reduplication of", abbrev = "redup.", glossary = "reduplication", toplevel_category = "reduplications", aliases = { "redup" }, })), ["abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Abbreviation of", phrase = "abbreviation of", abbrev = "abbr.", glossary = "abbreviation", aliases = { "abbr", "abbrev" }, })), ["syllabic abbreviation"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Syllabic abbreviation of", phrase = "syllabic abbreviation of", abbrev = "syl. abbr.", glossary = "syllabic abbreviation", aliases = { "sylabbr", "sylabbrev" }, })), ["acronym"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Acronym of", phrase = "acronym of", abbrev = "acronym", glossary = "acronym", aliases = { "acro" }, })), ["initialism"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Initialism of", phrase = "initialism of", abbrev = "init.", glossary = "initialism", aliases = { "init" }, })), ["metathesis"] = create_keyword(deep_merge(DEFAULTS.transitive, { text = "Metathesis of", phrase = "metathesis of", abbrev = "meta.", glossary = "metathesis", toplevel_category = "words derived through metathesis", aliases = { "meta" }, })), -- -- Invisible keywords (no text output) -- ["root"] = create_keyword { transitive = TRANSITIVE.ALWAYS, invisible = "all", pos_override = "root", }, ["afeq"] = create_keyword(deep_merge(DEFAULTS.affix_group, { text = "From", phrase = "from", transitive = TRANSITIVE.NEVER, invisible = "all", })), } local aliases_to_register = {} local canonical_aliases = {} -- Map every keyword (canonical or alias) to its canonical form for consistent checks and tracking. export.keyword_canonical = {} for name, keyword_data in pairs(export.keywords) do export.keyword_canonical[name] = name if keyword_data.aliases then canonical_aliases[name] = keyword_data.aliases for _, alias in ipairs(keyword_data.aliases) do if export.keywords[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' collides with existing keyword '" .. alias .. "'.") end if aliases_to_register[alias] then error("Alias '" .. alias .. "' defined in keyword '" .. name .. "' is already claimed by another keyword.") end aliases_to_register[alias] = keyword_data export.keyword_canonical[alias] = name end keyword_data.aliases = nil end end for alias, data in pairs(aliases_to_register) do export.keywords[alias] = data end -- -- Language exception presets -- local EXCEPTION_PRESETS = { -- Fully disallowed: no tree, no text, no categories disallowed = { disallow = { tree = true, text = true }, suppress_categories = true, }, -- Suppress transliteration only no_translit = { suppress_tr = true, }, -- Suppress all categories only no_categories = { suppress_categories = true, }, } --[=[ Available exception options: disallow = { Related options for disallowing output: tree Disallow etymology trees for this language text Disallow etymology text generation for this language ref Reference link shown when tree/text is disallowed } suppress_tr Suppress transliteration in links suppress_categories Suppress all category generation normalize_to Normalize language code to a different code normalize_from_families Apply normalization to languages in these families normalize_exclude_families Exclude these families from normalization keyword_overrides Per-keyword categorisation overrides (e.g. { ["af"] = { transitive = TRANSITIVE.NEVER } }) ]=] local function create_exception(preset, overrides) local base = preset and EXCEPTION_PRESETS[preset] or {} return deep_merge(base, overrides or {}) end export.config = { lang_exceptions = { ["zh"] = create_exception("disallowed", { disallow = { ref = "[[Wiktionary:Beer parlour/2025/May#Template:etymon for Chinese]]" }, suppress_tr = true, normalize_to = "zh", normalize_from_families = { "zhx" }, normalize_exclude_families = { "qfa-cnt" }, }), }, } -- Supported codes for the nominalization <g:code> modifier (subset of common gender/number-style codes) export.nominalization_g_codes = { ["m"] = "masculine", ["f"] = "feminine", ["n"] = "neuter", ["c"] = "common", ["gneut"] = "gender-neutral", ["s"] = "singular", ["p"] = "plural", ["d"] = "dual", ["pauc"] = "paucal", ["mf"] = "masculine or feminine", ["fm"] = "masculine or feminine", ["mfn"] = "masculine, feminine or neuter", ["mnf"] = "masculine, feminine or neuter", ["fmn"] = "masculine, feminine or neuter", ["fnm"] = "masculine, feminine or neuter", ["nmf"] = "masculine, feminine or neuter", ["nfm"] = "masculine, feminine or neuter", } -- -- Propagate keyword overrides to aliases -- if export.config.lang_exceptions then for lang_code, exception in pairs(export.config.lang_exceptions) do if exception.keyword_overrides then for canonical, aliases in pairs(canonical_aliases) do if exception.keyword_overrides[canonical] then local override_data = exception.keyword_overrides[canonical] for _, alias in ipairs(aliases) do if not exception.keyword_overrides[alias] then exception.keyword_overrides[alias] = override_data end end end end end end end return export 6ztmzwuxru8jln9olubjn1zzhx3vqny Module:etymon/text 828 139723 235427 229744 2026-04-29T20:56:46Z en>Fenakhay 0 235427 Scribunto text/plain local export = {} local loader = require("Module:module loader") local M = loader.init({ require = { en_utilities = "Module:en-utilities", references = "Module:references", }, loadData = { data = "Module:etymon/data", }, }) function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func local max_depth = opts.max_depth local stop_at_blue_link = opts.stop_at_blue_link local curr_page = opts.curr_page local nodot = opts.nodot local stop_at_lang = opts.stop_at_lang local stop_at_lang_or_bluelink = opts.stop_at_lang_or_bluelink local children = data_tree.children if not children or #children == 0 then return "" end local top_l2 = data_tree.lang:getFullCode() .. ":" .. curr_page -- Get refs for a term local function get_term_refs(term, term_lang, depth) local term_l2 = term_lang:getFullCode() .. ":" .. curr_page if term.parsed_ref and (depth == 1 or term_l2 == top_l2) then return M.references.format_references(term.parsed_ref) end return "" end -- Build a text part for a single term local function build_term_part(term, current_lang, depth) local text = "" local new_lang = current_lang local lang_changed = term.lang:getCanonicalName() ~= current_lang:getCanonicalName() -- Use centralized format_term (handles suppress_term, unknown_term, and regular terms) local term_text = format_term_func(term) if lang_changed then new_lang = term.lang if term_text then text = term.lang:makeWikipediaLink() .. " " .. term_text elseif term.is_family then text = M.en_utilities.add_indefinite_article(term.lang:makeWikipediaLink() .. " language", false) else -- suppress_term with language change: show only language text = term.lang:makeWikipediaLink() end else text = term_text or "" end return { type = "term", text = text, refs = get_term_refs(term, new_lang, depth), lang = new_lang, is_uncertain = term.is_uncertain or false, } end -- Build text parts for a container local function build_container_part(container, node, depth, allow_continuation, fallback_to_bluelink) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local terms = container.terms or {} if not keyword_info or #terms == 0 then return nil end -- Skip building text part when invisible in text ("all", "text", or true) local inv = keyword_info.invisible if inv == "all" or inv == true or inv == "text" then return nil end local is_group = keyword_info.is_group local keyword_uncertain = keyword_modifiers.unc or false -- Determine text and phrase (allowing for overrides) local intro_text = keyword_info.text local phrase = keyword_info.phrase if keyword_modifiers.text then -- User-provided override: assumed to be lowercase phrase = keyword_modifiers.text -- Auto-capitalize for intro text (e.g., "derived from" -> "Derived from") intro_text = mw.ustring.upper(phrase:sub(1, 1)) .. phrase:sub(2) end -- Get keyword references local keyword_refs = "" if keyword_modifiers.ref then local parsed_keyword_refs = M.references.parse_references(keyword_modifiers.ref) if parsed_keyword_refs and parsed_keyword_refs ~= "" then keyword_refs = M.references.format_references(parsed_keyword_refs) end end -- Build term parts local term_parts = {} local current_lang = node.lang for _, term in ipairs(terms) do local term_part = build_term_part(term, current_lang, depth) if term_part.text ~= "" then table.insert(term_parts, term_part) current_lang = term_part.lang end end -- Check uncertainty distribution local uncertain_count = 0 for _, term_part in ipairs(term_parts) do if term_part.is_uncertain then uncertain_count = uncertain_count + 1 end end -- If keyword itself is uncertain, treat all terms as uncertain local all_uncertain = keyword_uncertain or (uncertain_count == #term_parts and #term_parts > 0) local has_mixed_uncertainty = not keyword_uncertain and uncertain_count > 0 and uncertain_count < #term_parts -- Check if there are more steps (only if continuation is allowed) local has_more_steps = false local next_node = nil local first_term = terms[1] -- Check if we should stop at this language local reached_stop_lang = false if stop_at_lang then for _, term in ipairs(terms) do if term.lang and term.lang:getCode() == stop_at_lang then reached_stop_lang = true break end end elseif stop_at_lang_or_bluelink then -- Check if we should stop at this language, or at the first bluelink if it's a redlink for _, term in ipairs(terms) do if term.lang and term.lang:getCode() == stop_at_lang_or_bluelink then if first_term.status == M.data.STATUS.OK then reached_stop_lang = true else fallback_to_bluelink = true end break end end if fallback_to_bluelink and first_term.status == M.data.STATUS.OK then reached_stop_lang = true end end if allow_continuation and not is_group and #terms == 1 and not reached_stop_lang then local first_term_children = first_term.children if first_term_children and #first_term_children > 0 and (not max_depth or depth < max_depth) then local next_container = first_term_children[1] local next_keyword_info = next_container and next_container.keyword_info if not (next_keyword_info and next_keyword_info.invisible) then if stop_at_blue_link then if first_term.status ~= M.data.STATUS.OK then has_more_steps = true next_node = first_term end else has_more_steps = true next_node = first_term end end end end return { type = "container", intro_text = intro_text, phrase = phrase, is_uncertain = all_uncertain, has_mixed_uncertainty = has_mixed_uncertainty, term_parts = term_parts, is_group = is_group, has_more_steps = has_more_steps, next_node = next_node, new_sentence = keyword_info.new_sentence or false, separate_clause = keyword_info.separate_clause or false, conj = keyword_modifiers.conj, -- custom conjunction: "and", "or", "and/or", etc. lit = keyword_modifiers.lit, keyword_refs = keyword_refs, fallback_to_bluelink = fallback_to_bluelink, } end -- Build the full tree of text parts local function build_text_tree(node, depth, allow_continuation, fallback_to_bluelink) local containers = node.children if not containers or #containers == 0 then return nil end local container_parts = {} -- Count containers that get a text part (invisible in text = "all", "text", or true) local visible_container_count = 0 for _, container in ipairs(containers) do local keyword_info = container.keyword_info local inv = keyword_info and keyword_info.invisible if not (inv == "all" or inv == true or inv == "text") then visible_container_count = visible_container_count + 1 end end -- If there are multiple visible containers at this level, don't allow continuation for any local has_multiple_containers = visible_container_count > 1 local should_allow_continuation = allow_continuation and not has_multiple_containers for _, container in ipairs(containers) do local part = build_container_part(container, node, depth, should_allow_continuation, fallback_to_bluelink) if part then -- Recursively build children if there are more steps if part.has_more_steps and part.next_node then part.continuation = build_text_tree(part.next_node, depth + 1, true, part.fallback_to_bluelink) end table.insert(container_parts, part) end end if #container_parts == 0 then return nil end return { type = "tree", container_parts = container_parts, depth = depth, } end -- Check if tree has mixed joining types local function check_complexity(tree) if not tree then return nil end local parts = tree.container_parts if #parts <= 1 then -- Single container if parts[1] and parts[1].continuation then return check_complexity(parts[1].continuation) end return nil end -- Multiple containers local has_or_join = false local has_new_sentence = false local has_separate_clause = false for i = 2, #parts do local part = parts[i] -- Ignore etydate parts for complexity checks if part.type ~= "etydate" then if part.new_sentence then has_new_sentence = true elseif part.separate_clause then has_separate_clause = true else has_or_join = true end end end local join_type_count = 0 if has_or_join then join_type_count = join_type_count + 1 end if has_new_sentence then join_type_count = join_type_count + 1 end if has_separate_clause then join_type_count = join_type_count + 1 end if join_type_count > 1 then error( "Cannot generate etymology text: mixed joining styles (e.g., alternatives joined with 'or' cannot be combined with calques or influences in the same list).") end return nil end -- Analyze tree and assign punctuation local function analyze_punctuation(tree, is_toplevel) if not tree then return end local parts = tree.container_parts local num_parts = #parts for i, part in ipairs(parts) do local is_first = (i == 1) local is_last = (i == num_parts) local next_part = parts[i + 1] -- Analyze term punctuation within container -- Terms use Oxford comma style: "A, B, or C" -- Custom conjunction can be specified via conj modifier (e.g., "and/or", "and") local num_terms = #part.term_parts local term_conj = part.conj or "or" -- default to "or" for j, term_part in ipairs(part.term_parts) do local is_last_term = (j == num_terms) if part.is_group then -- Group: terms joined with " + " term_part.joiner = is_last_term and "" or " + " elseif num_terms > 1 then -- Multiple terms not in a group: Oxford comma style if is_last_term then term_part.joiner = "" elseif j == num_terms - 1 then -- Second to last term if num_terms == 2 then term_part.joiner = " " .. term_conj .. " " else term_part.joiner = ", " .. term_conj .. " " end else term_part.joiner = ", " end else -- Single term term_part.joiner = "" end end -- Determine container punctuation based on what comes next if part.continuation then -- Has continuation part.punctuation = "," -- Recursively analyze continuation analyze_punctuation(part.continuation, false) elseif is_last then -- Last container part.punctuation = (is_toplevel and nodot) and "" or "." elseif next_part and next_part.new_sentence then -- Next container starts a new sentence part.punctuation = "." elseif next_part and next_part.separate_clause then -- Next container is a separate clause part.punctuation = "," else -- Not last, next is joined with "or" -- Containers use repeated "or" style: "A, or B, or C" part.punctuation = "," end -- Determine joiner to next part -- Containers use repeated "or" style: ", or" between each -- Custom conjunction can be specified via conj modifier local container_conj = part.conj or "or" -- default to "or" if not is_last then if next_part and next_part.new_sentence then -- New sentence part.joiner = " " elseif next_part and next_part.separate_clause then -- Separate clause part.joiner = " " else -- Same sentence: use custom conjunction or default "or" part.joiner = " " .. container_conj .. " " end else part.joiner = "" end -- Determine intro formatting -- Capitalize if first at top level, OR if this container starts a new sentence if (is_first and is_toplevel) or part.new_sentence then part.intro_capitalized = true part.use_full_intro = true else part.intro_capitalized = false part.use_full_intro = false end end end -- Assemble text from analyzed tree local function assemble_text(tree) if not tree then return "" end local result = "" for i, part in ipairs(tree.container_parts) do if part.type == "etydate" then result = result .. part.etydate_text if part.punctuation and part.punctuation ~= "" then result = result .. part.punctuation end if part.etydate_refs and next(part.etydate_refs) then result = result .. M.references.format_references(part.etydate_refs) end if part.joiner and part.joiner ~= "" then result = result .. part.joiner end else -- Build intro local intro if part.use_full_intro then if part.is_uncertain then intro = "Possibly " .. part.phrase else intro = part.intro_text end else if part.is_uncertain then intro = "possibly " .. part.phrase else intro = part.phrase end end result = result .. intro -- Build terms if #part.term_parts > 0 then result = result .. " " for j, term_part in ipairs(part.term_parts) do -- Add "possibly" prefix for uncertain terms when there's mixed uncertainty if part.has_mixed_uncertainty and term_part.is_uncertain then result = result .. "possibly " end result = result .. term_part.text -- Add joiner between terms if term_part.joiner ~= "" then -- Check if joiner contains comma (punctuation) local comma_pos = term_part.joiner:find(",") if comma_pos then -- Add up to and including comma result = result .. term_part.joiner:sub(1, comma_pos) -- Add refs after comma if term_part.refs ~= "" then result = result .. term_part.refs end -- Add rest of joiner result = result .. term_part.joiner:sub(comma_pos + 1) else -- No comma, add refs before joiner if term_part.refs ~= "" then result = result .. term_part.refs end result = result .. term_part.joiner end end end -- For the last term, add punctuation then refs local last_term = part.term_parts[#part.term_parts] if last_term and last_term.joiner == "" then if part.punctuation ~= "" then -- If we have literal text, punctuation goes AFTER it if part.lit then -- Add refs first (attached to term) if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end -- Add literal text result = result .. ", literally “" .. part.lit .. "”" -- Add punctuation result = result .. part.punctuation else -- Normal behavior: punctuation then refs result = result .. part.punctuation if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs after term refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end end else -- No punctuation if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end -- Add literal text if present (even without punctuation) if part.lit then result = result .. ", literally “" .. part.lit .. "”" end end end else -- No terms, just add punctuation and keyword refs if part.punctuation ~= "" then result = result .. part.punctuation end -- Add keyword refs even when there are no terms if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end end -- Add continuation if part.continuation then result = result .. " " .. assemble_text(part.continuation) end -- Add joiner to next container if part.joiner ~= "" then result = result .. part.joiner end end end return result end local text_tree = build_text_tree(data_tree, 1, true, false) if not text_tree then return "" end -- Add etydate container if data_tree.etydate and data_tree.etydate ~= "" then table.insert(text_tree.container_parts, { type = "etydate", etydate_text = data_tree.etydate, etydate_refs = data_tree.etydate_refs, term_parts = {}, new_sentence = true, }) end check_complexity(text_tree) analyze_punctuation(text_tree, true) return assemble_text(text_tree) end return export apkzd2ykoxaur8xi7e7q6ckn0p4heg1 235428 235427 2026-06-02T05:00:19Z Lee 19 [[:en:Module:etymon/text]] වෙතින් එක් සංශෝධනයක් 235427 Scribunto text/plain local export = {} local loader = require("Module:module loader") local M = loader.init({ require = { en_utilities = "Module:en-utilities", references = "Module:references", }, loadData = { data = "Module:etymon/data", }, }) function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func local max_depth = opts.max_depth local stop_at_blue_link = opts.stop_at_blue_link local curr_page = opts.curr_page local nodot = opts.nodot local stop_at_lang = opts.stop_at_lang local stop_at_lang_or_bluelink = opts.stop_at_lang_or_bluelink local children = data_tree.children if not children or #children == 0 then return "" end local top_l2 = data_tree.lang:getFullCode() .. ":" .. curr_page -- Get refs for a term local function get_term_refs(term, term_lang, depth) local term_l2 = term_lang:getFullCode() .. ":" .. curr_page if term.parsed_ref and (depth == 1 or term_l2 == top_l2) then return M.references.format_references(term.parsed_ref) end return "" end -- Build a text part for a single term local function build_term_part(term, current_lang, depth) local text = "" local new_lang = current_lang local lang_changed = term.lang:getCanonicalName() ~= current_lang:getCanonicalName() -- Use centralized format_term (handles suppress_term, unknown_term, and regular terms) local term_text = format_term_func(term) if lang_changed then new_lang = term.lang if term_text then text = term.lang:makeWikipediaLink() .. " " .. term_text elseif term.is_family then text = M.en_utilities.add_indefinite_article(term.lang:makeWikipediaLink() .. " language", false) else -- suppress_term with language change: show only language text = term.lang:makeWikipediaLink() end else text = term_text or "" end return { type = "term", text = text, refs = get_term_refs(term, new_lang, depth), lang = new_lang, is_uncertain = term.is_uncertain or false, } end -- Build text parts for a container local function build_container_part(container, node, depth, allow_continuation, fallback_to_bluelink) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local terms = container.terms or {} if not keyword_info or #terms == 0 then return nil end -- Skip building text part when invisible in text ("all", "text", or true) local inv = keyword_info.invisible if inv == "all" or inv == true or inv == "text" then return nil end local is_group = keyword_info.is_group local keyword_uncertain = keyword_modifiers.unc or false -- Determine text and phrase (allowing for overrides) local intro_text = keyword_info.text local phrase = keyword_info.phrase if keyword_modifiers.text then -- User-provided override: assumed to be lowercase phrase = keyword_modifiers.text -- Auto-capitalize for intro text (e.g., "derived from" -> "Derived from") intro_text = mw.ustring.upper(phrase:sub(1, 1)) .. phrase:sub(2) end -- Get keyword references local keyword_refs = "" if keyword_modifiers.ref then local parsed_keyword_refs = M.references.parse_references(keyword_modifiers.ref) if parsed_keyword_refs and parsed_keyword_refs ~= "" then keyword_refs = M.references.format_references(parsed_keyword_refs) end end -- Build term parts local term_parts = {} local current_lang = node.lang for _, term in ipairs(terms) do local term_part = build_term_part(term, current_lang, depth) if term_part.text ~= "" then table.insert(term_parts, term_part) current_lang = term_part.lang end end -- Check uncertainty distribution local uncertain_count = 0 for _, term_part in ipairs(term_parts) do if term_part.is_uncertain then uncertain_count = uncertain_count + 1 end end -- If keyword itself is uncertain, treat all terms as uncertain local all_uncertain = keyword_uncertain or (uncertain_count == #term_parts and #term_parts > 0) local has_mixed_uncertainty = not keyword_uncertain and uncertain_count > 0 and uncertain_count < #term_parts -- Check if there are more steps (only if continuation is allowed) local has_more_steps = false local next_node = nil local first_term = terms[1] -- Check if we should stop at this language local reached_stop_lang = false if stop_at_lang then for _, term in ipairs(terms) do if term.lang and term.lang:getCode() == stop_at_lang then reached_stop_lang = true break end end elseif stop_at_lang_or_bluelink then -- Check if we should stop at this language, or at the first bluelink if it's a redlink for _, term in ipairs(terms) do if term.lang and term.lang:getCode() == stop_at_lang_or_bluelink then if first_term.status == M.data.STATUS.OK then reached_stop_lang = true else fallback_to_bluelink = true end break end end if fallback_to_bluelink and first_term.status == M.data.STATUS.OK then reached_stop_lang = true end end if allow_continuation and not is_group and #terms == 1 and not reached_stop_lang then local first_term_children = first_term.children if first_term_children and #first_term_children > 0 and (not max_depth or depth < max_depth) then local next_container = first_term_children[1] local next_keyword_info = next_container and next_container.keyword_info if not (next_keyword_info and next_keyword_info.invisible) then if stop_at_blue_link then if first_term.status ~= M.data.STATUS.OK then has_more_steps = true next_node = first_term end else has_more_steps = true next_node = first_term end end end end return { type = "container", intro_text = intro_text, phrase = phrase, is_uncertain = all_uncertain, has_mixed_uncertainty = has_mixed_uncertainty, term_parts = term_parts, is_group = is_group, has_more_steps = has_more_steps, next_node = next_node, new_sentence = keyword_info.new_sentence or false, separate_clause = keyword_info.separate_clause or false, conj = keyword_modifiers.conj, -- custom conjunction: "and", "or", "and/or", etc. lit = keyword_modifiers.lit, keyword_refs = keyword_refs, fallback_to_bluelink = fallback_to_bluelink, } end -- Build the full tree of text parts local function build_text_tree(node, depth, allow_continuation, fallback_to_bluelink) local containers = node.children if not containers or #containers == 0 then return nil end local container_parts = {} -- Count containers that get a text part (invisible in text = "all", "text", or true) local visible_container_count = 0 for _, container in ipairs(containers) do local keyword_info = container.keyword_info local inv = keyword_info and keyword_info.invisible if not (inv == "all" or inv == true or inv == "text") then visible_container_count = visible_container_count + 1 end end -- If there are multiple visible containers at this level, don't allow continuation for any local has_multiple_containers = visible_container_count > 1 local should_allow_continuation = allow_continuation and not has_multiple_containers for _, container in ipairs(containers) do local part = build_container_part(container, node, depth, should_allow_continuation, fallback_to_bluelink) if part then -- Recursively build children if there are more steps if part.has_more_steps and part.next_node then part.continuation = build_text_tree(part.next_node, depth + 1, true, part.fallback_to_bluelink) end table.insert(container_parts, part) end end if #container_parts == 0 then return nil end return { type = "tree", container_parts = container_parts, depth = depth, } end -- Check if tree has mixed joining types local function check_complexity(tree) if not tree then return nil end local parts = tree.container_parts if #parts <= 1 then -- Single container if parts[1] and parts[1].continuation then return check_complexity(parts[1].continuation) end return nil end -- Multiple containers local has_or_join = false local has_new_sentence = false local has_separate_clause = false for i = 2, #parts do local part = parts[i] -- Ignore etydate parts for complexity checks if part.type ~= "etydate" then if part.new_sentence then has_new_sentence = true elseif part.separate_clause then has_separate_clause = true else has_or_join = true end end end local join_type_count = 0 if has_or_join then join_type_count = join_type_count + 1 end if has_new_sentence then join_type_count = join_type_count + 1 end if has_separate_clause then join_type_count = join_type_count + 1 end if join_type_count > 1 then error( "Cannot generate etymology text: mixed joining styles (e.g., alternatives joined with 'or' cannot be combined with calques or influences in the same list).") end return nil end -- Analyze tree and assign punctuation local function analyze_punctuation(tree, is_toplevel) if not tree then return end local parts = tree.container_parts local num_parts = #parts for i, part in ipairs(parts) do local is_first = (i == 1) local is_last = (i == num_parts) local next_part = parts[i + 1] -- Analyze term punctuation within container -- Terms use Oxford comma style: "A, B, or C" -- Custom conjunction can be specified via conj modifier (e.g., "and/or", "and") local num_terms = #part.term_parts local term_conj = part.conj or "or" -- default to "or" for j, term_part in ipairs(part.term_parts) do local is_last_term = (j == num_terms) if part.is_group then -- Group: terms joined with " + " term_part.joiner = is_last_term and "" or " + " elseif num_terms > 1 then -- Multiple terms not in a group: Oxford comma style if is_last_term then term_part.joiner = "" elseif j == num_terms - 1 then -- Second to last term if num_terms == 2 then term_part.joiner = " " .. term_conj .. " " else term_part.joiner = ", " .. term_conj .. " " end else term_part.joiner = ", " end else -- Single term term_part.joiner = "" end end -- Determine container punctuation based on what comes next if part.continuation then -- Has continuation part.punctuation = "," -- Recursively analyze continuation analyze_punctuation(part.continuation, false) elseif is_last then -- Last container part.punctuation = (is_toplevel and nodot) and "" or "." elseif next_part and next_part.new_sentence then -- Next container starts a new sentence part.punctuation = "." elseif next_part and next_part.separate_clause then -- Next container is a separate clause part.punctuation = "," else -- Not last, next is joined with "or" -- Containers use repeated "or" style: "A, or B, or C" part.punctuation = "," end -- Determine joiner to next part -- Containers use repeated "or" style: ", or" between each -- Custom conjunction can be specified via conj modifier local container_conj = part.conj or "or" -- default to "or" if not is_last then if next_part and next_part.new_sentence then -- New sentence part.joiner = " " elseif next_part and next_part.separate_clause then -- Separate clause part.joiner = " " else -- Same sentence: use custom conjunction or default "or" part.joiner = " " .. container_conj .. " " end else part.joiner = "" end -- Determine intro formatting -- Capitalize if first at top level, OR if this container starts a new sentence if (is_first and is_toplevel) or part.new_sentence then part.intro_capitalized = true part.use_full_intro = true else part.intro_capitalized = false part.use_full_intro = false end end end -- Assemble text from analyzed tree local function assemble_text(tree) if not tree then return "" end local result = "" for i, part in ipairs(tree.container_parts) do if part.type == "etydate" then result = result .. part.etydate_text if part.punctuation and part.punctuation ~= "" then result = result .. part.punctuation end if part.etydate_refs and next(part.etydate_refs) then result = result .. M.references.format_references(part.etydate_refs) end if part.joiner and part.joiner ~= "" then result = result .. part.joiner end else -- Build intro local intro if part.use_full_intro then if part.is_uncertain then intro = "Possibly " .. part.phrase else intro = part.intro_text end else if part.is_uncertain then intro = "possibly " .. part.phrase else intro = part.phrase end end result = result .. intro -- Build terms if #part.term_parts > 0 then result = result .. " " for j, term_part in ipairs(part.term_parts) do -- Add "possibly" prefix for uncertain terms when there's mixed uncertainty if part.has_mixed_uncertainty and term_part.is_uncertain then result = result .. "possibly " end result = result .. term_part.text -- Add joiner between terms if term_part.joiner ~= "" then -- Check if joiner contains comma (punctuation) local comma_pos = term_part.joiner:find(",") if comma_pos then -- Add up to and including comma result = result .. term_part.joiner:sub(1, comma_pos) -- Add refs after comma if term_part.refs ~= "" then result = result .. term_part.refs end -- Add rest of joiner result = result .. term_part.joiner:sub(comma_pos + 1) else -- No comma, add refs before joiner if term_part.refs ~= "" then result = result .. term_part.refs end result = result .. term_part.joiner end end end -- For the last term, add punctuation then refs local last_term = part.term_parts[#part.term_parts] if last_term and last_term.joiner == "" then if part.punctuation ~= "" then -- If we have literal text, punctuation goes AFTER it if part.lit then -- Add refs first (attached to term) if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end -- Add literal text result = result .. ", literally “" .. part.lit .. "”" -- Add punctuation result = result .. part.punctuation else -- Normal behavior: punctuation then refs result = result .. part.punctuation if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs after term refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end end else -- No punctuation if last_term.refs ~= "" then result = result .. last_term.refs end -- Add keyword refs if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end -- Add literal text if present (even without punctuation) if part.lit then result = result .. ", literally “" .. part.lit .. "”" end end end else -- No terms, just add punctuation and keyword refs if part.punctuation ~= "" then result = result .. part.punctuation end -- Add keyword refs even when there are no terms if part.keyword_refs and part.keyword_refs ~= "" then result = result .. part.keyword_refs end end -- Add continuation if part.continuation then result = result .. " " .. assemble_text(part.continuation) end -- Add joiner to next container if part.joiner ~= "" then result = result .. part.joiner end end end return result end local text_tree = build_text_tree(data_tree, 1, true, false) if not text_tree then return "" end -- Add etydate container if data_tree.etydate and data_tree.etydate ~= "" then table.insert(text_tree.container_parts, { type = "etydate", etydate_text = data_tree.etydate, etydate_refs = data_tree.etydate_refs, term_parts = {}, new_sentence = true, }) end check_complexity(text_tree) analyze_punctuation(text_tree, true) return assemble_text(text_tree) end return export apkzd2ykoxaur8xi7e7q6ckn0p4heg1 Module:etymon/tree 828 139724 235429 229740 2026-03-16T07:53:49Z en>Fenakhay 0 235429 Scribunto text/plain local export = {} local html_create = mw.html.create local max = math.max local function create_vertical_connector() return html_create('span'):addClass('etytree-connector-vertical') end local function create_abbr(text, title, glossary) local abbr = html_create('abbr') :attr('title', title) :wikitext(text) if glossary then abbr = '[[Appendix:Glossary#' .. glossary .. '|' .. tostring(abbr) .. ']]' end return html_create('span'):addClass('etytree-label'):node(abbr) end local function create_uncertainty_marker() return html_create('abbr') :addClass('etytree-unc') :attr('title', 'uncertain') :wikitext('?') end local function create_label_container() return html_create('span'):addClass('etytree-label-container') end local function invisible_in_tree(inv) return inv == "all" or inv == true or inv == "tree" end local function render_label(term_block, keyword_info, keyword_modifiers, is_uncertain, is_group_child, term_labels) -- Skip label when invisible in tree local has_label = keyword_info and keyword_info.abbrev and not is_group_child and not invisible_in_tree(keyword_info.invisible) -- For group children, keyword uncertainty is shown on the group label, not on individual terms local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc and not is_group_child local show_term_uncertainty = is_uncertain -- Check if we have term-specific labels local has_term_labels = term_labels and #term_labels > 0 if not has_label and not show_term_uncertainty and not keyword_uncertain and not has_term_labels then return end local label_span = create_label_container() if has_label then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr( keyword_info.abbrev, glossary_title, keyword_info.glossary )) -- Show uncertainty marker if term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end else -- No label, but term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end end -- Add term-specific labels if has_term_labels then for _, label_info in ipairs(term_labels) do label_span:node(create_abbr(label_info.abbrev, label_info.title, label_info.glossary)) end end term_block:node(label_span) end local function render_term_block(node_data, format_term_func, is_toplevel) local link_content = html_create() link_content :tag('span') :addClass('etyl') :wikitext(node_data.lang:getCanonicalName()) :done() local term_text = format_term_func(node_data, is_toplevel) if term_text then link_content :wikitext(' ') :tag('span') :addClass('etytree-term') :wikitext(term_text) :done() end local block = html_create('div'):addClass('etytree-block'):node(link_content) -- Add duplicate styling if this is a duplicate node if node_data.is_duplicate then block:addClass('etytree-duplicate') end return block end local function create_dotted_connector() return html_create('span'):addClass('etytree-connector-dotted') end -- Create an L-shaped connector for nodes with hidden ancestry (duplicate or no_child_categories) local function create_duplicate_connector() local container = html_create('div'):addClass('etytree-duplicate-connector') local inner_wrapper = container:tag('div') inner_wrapper:tag('span'):addClass('etytree-dup-right') inner_wrapper:tag('span'):addClass('etytree-dup-horiz') inner_wrapper:tag('span'):addClass('etytree-dup-left') inner_wrapper:tag('span'):addClass('etytree-dup-arrow'):wikitext('▲') return container end local function render_group_label(connecting_line, keyword_info, keyword_modifiers) local has_abbrev = keyword_info and keyword_info.abbrev local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc -- Nothing to show if no abbrev and no uncertainty if not has_abbrev and not keyword_uncertain then return end local label_span = connecting_line:tag('span'):addClass('etytree-group-label') if has_abbrev then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr(keyword_info.abbrev, glossary_title, nil)) end -- Add uncertainty marker if keyword has <unc> modifier if keyword_uncertain then label_span:node(create_uncertainty_marker()) end end local function add_branch_connector(column, index, total) if index == 1 then column:tag('span'):addClass('etytree-branch-left') elseif index == total then column:tag('span'):addClass('etytree-branch-right') else column:tag('span'):addClass('etytree-connector-vertical-short') column:tag('span'):addClass('etytree-branch-mid') end end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func -- Forward declaration local render_term -- Render a container (keyword + its terms) local function render_container(container, is_toplevel) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local is_group = keyword_info and keyword_info.is_group local terms = container.terms or {} -- Skip container entirely only when invisible = "all" (or true) if keyword_info and invisible_in_tree(keyword_info.invisible) then return nil, 0, 0 end if #terms == 0 then return nil, 0, 0 end -- For no_child_categories keywords (calque, semantic loan, etc.), don't render term's children local skip_child_rendering = keyword_info and keyword_info.no_child_categories -- Render each term in the container local rendered_terms = {} local container_height = 0 local container_width = 0 for _, term in ipairs(terms) do -- Collect term-specific labels local term_labels = {} if term.bor then table.insert(term_labels, { abbrev = "bor.", title = "borrowed", glossary = "loanword" }) end if term.slbor then table.insert(term_labels, { abbrev = "slbor.", title = "semi-learned borrowing", glossary = "semi-learned_borrowing" }) end if term.lbor then table.insert(term_labels, { abbrev = "lbor.", title = "learned borrowing", glossary = "learned_borrowing" }) end local term_tree, term_height, term_width = render_term(term, keyword_info, keyword_modifiers, is_group, false, skip_child_rendering, term_labels) table.insert(rendered_terms, { tree = term_tree, height = term_height, width = term_width, is_uncertain = term.is_uncertain, }) container_height = max(container_height, term_height) container_width = container_width + term_width end local rendered_html local has_connector = false if #rendered_terms == 1 then -- Single term: just return it directly rendered_html = rendered_terms[1].tree container_height = rendered_terms[1].height container_width = rendered_terms[1].width else -- Multiple terms: group them together local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, term_data in ipairs(rendered_terms) do local column = html_create('div'):addClass('etytree-branch') column:node(term_data.tree) add_branch_connector(column, i, #rendered_terms) subtree_container:node(column) end local connecting_line = create_vertical_connector() -- Add group label for group keywords if is_group and not invisible_in_tree(keyword_info.invisible) then render_group_label(connecting_line, keyword_info, keyword_modifiers) end rendered_html = html_create() :node(subtree_container) :node(connecting_line) has_connector = true end return rendered_html, container_height, container_width, has_connector end -- Render a term node render_term = function(term_node, keyword_info, keyword_modifiers, is_group_child, is_toplevel_term, skip_child_rendering, term_labels) local tree_width, tree_height = 0, 0 local subtrees = {} -- Process term's children (which are containers) local has_hidden_children = false if not term_node.is_duplicate and not skip_child_rendering then for _, container in ipairs(term_node.children or {}) do local subtree, sub_height, sub_width, subtree_has_connector = render_container(container, is_toplevel_term) if subtree then table.insert(subtrees, { tree = subtree, height = sub_height, width = sub_width, has_connector = subtree_has_connector, }) tree_height = max(tree_height, sub_height) tree_width = tree_width + sub_width end end elseif skip_child_rendering then -- Check if there are any visible children -- When stop_recursion is true, children aren't parsed, but has_visible_children flag is set if term_node.has_visible_children then has_hidden_children = true elseif term_node.children and #term_node.children > 0 then -- Fallback: check parsed children for visibility for _, container in ipairs(term_node.children) do local child_keyword_info = container.keyword_info if not (child_keyword_info and (child_keyword_info.invisible == "all" or child_keyword_info.invisible == true)) then has_hidden_children = true break end end end end local is_toplevel_node = (keyword_info == nil) local term_block = render_term_block(term_node, format_term_func, is_toplevel_node) render_label(term_block, keyword_info, keyword_modifiers, term_node.is_uncertain, is_group_child, term_labels or {}) local term_html = html_create() if #subtrees == 0 then local show_connector = (term_node.is_duplicate and term_node.original_has_children) or has_hidden_children if show_connector then term_html:node(create_duplicate_connector()) end term_html:node(term_block) tree_width = tree_width + 1 elseif #subtrees == 1 then term_html:node(subtrees[1].tree) if not subtrees[1].has_connector then term_html:node(create_vertical_connector()) end term_html:node(term_block) else -- Multiple containers: need to merge them local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, subtree_data in ipairs(subtrees) do local column = html_create('div'):addClass('etytree-branch') column:node(subtree_data.tree) add_branch_connector(column, i, #subtrees) subtree_container:node(column) end local connecting_line = create_vertical_connector() term_html :node(subtree_container) :node(connecting_line) :node(term_block) end return term_html, tree_height + 1, tree_width end local final_tree, final_height, final_width = render_term(data_tree, nil, nil, false, true) local container = html_create('div') :addClass('etytree-body') :node(final_tree) return tostring(html_create('div') :addClass('etytree NavFrame') :attr('data-etytree-height', final_height) :attr('data-etytree-width', final_width) :tag('div') :addClass('NavHead') :tag('div') :wikitext('Etymology tree') :done() :done() :tag('div') :addClass('NavContent') :node(container) :done()) end return export ok2w6x96bozaxhyj2cy4qex9anfbtx5 235430 235429 2026-06-02T05:00:45Z Lee 19 [[:en:Module:etymon/tree]] වෙතින් එක් සංශෝධනයක් 235429 Scribunto text/plain local export = {} local html_create = mw.html.create local max = math.max local function create_vertical_connector() return html_create('span'):addClass('etytree-connector-vertical') end local function create_abbr(text, title, glossary) local abbr = html_create('abbr') :attr('title', title) :wikitext(text) if glossary then abbr = '[[Appendix:Glossary#' .. glossary .. '|' .. tostring(abbr) .. ']]' end return html_create('span'):addClass('etytree-label'):node(abbr) end local function create_uncertainty_marker() return html_create('abbr') :addClass('etytree-unc') :attr('title', 'uncertain') :wikitext('?') end local function create_label_container() return html_create('span'):addClass('etytree-label-container') end local function invisible_in_tree(inv) return inv == "all" or inv == true or inv == "tree" end local function render_label(term_block, keyword_info, keyword_modifiers, is_uncertain, is_group_child, term_labels) -- Skip label when invisible in tree local has_label = keyword_info and keyword_info.abbrev and not is_group_child and not invisible_in_tree(keyword_info.invisible) -- For group children, keyword uncertainty is shown on the group label, not on individual terms local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc and not is_group_child local show_term_uncertainty = is_uncertain -- Check if we have term-specific labels local has_term_labels = term_labels and #term_labels > 0 if not has_label and not show_term_uncertainty and not keyword_uncertain and not has_term_labels then return end local label_span = create_label_container() if has_label then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr( keyword_info.abbrev, glossary_title, keyword_info.glossary )) -- Show uncertainty marker if term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end else -- No label, but term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end end -- Add term-specific labels if has_term_labels then for _, label_info in ipairs(term_labels) do label_span:node(create_abbr(label_info.abbrev, label_info.title, label_info.glossary)) end end term_block:node(label_span) end local function render_term_block(node_data, format_term_func, is_toplevel) local link_content = html_create() link_content :tag('span') :addClass('etyl') :wikitext(node_data.lang:getCanonicalName()) :done() local term_text = format_term_func(node_data, is_toplevel) if term_text then link_content :wikitext(' ') :tag('span') :addClass('etytree-term') :wikitext(term_text) :done() end local block = html_create('div'):addClass('etytree-block'):node(link_content) -- Add duplicate styling if this is a duplicate node if node_data.is_duplicate then block:addClass('etytree-duplicate') end return block end local function create_dotted_connector() return html_create('span'):addClass('etytree-connector-dotted') end -- Create an L-shaped connector for nodes with hidden ancestry (duplicate or no_child_categories) local function create_duplicate_connector() local container = html_create('div'):addClass('etytree-duplicate-connector') local inner_wrapper = container:tag('div') inner_wrapper:tag('span'):addClass('etytree-dup-right') inner_wrapper:tag('span'):addClass('etytree-dup-horiz') inner_wrapper:tag('span'):addClass('etytree-dup-left') inner_wrapper:tag('span'):addClass('etytree-dup-arrow'):wikitext('▲') return container end local function render_group_label(connecting_line, keyword_info, keyword_modifiers) local has_abbrev = keyword_info and keyword_info.abbrev local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc -- Nothing to show if no abbrev and no uncertainty if not has_abbrev and not keyword_uncertain then return end local label_span = connecting_line:tag('span'):addClass('etytree-group-label') if has_abbrev then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr(keyword_info.abbrev, glossary_title, nil)) end -- Add uncertainty marker if keyword has <unc> modifier if keyword_uncertain then label_span:node(create_uncertainty_marker()) end end local function add_branch_connector(column, index, total) if index == 1 then column:tag('span'):addClass('etytree-branch-left') elseif index == total then column:tag('span'):addClass('etytree-branch-right') else column:tag('span'):addClass('etytree-connector-vertical-short') column:tag('span'):addClass('etytree-branch-mid') end end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func -- Forward declaration local render_term -- Render a container (keyword + its terms) local function render_container(container, is_toplevel) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local is_group = keyword_info and keyword_info.is_group local terms = container.terms or {} -- Skip container entirely only when invisible = "all" (or true) if keyword_info and invisible_in_tree(keyword_info.invisible) then return nil, 0, 0 end if #terms == 0 then return nil, 0, 0 end -- For no_child_categories keywords (calque, semantic loan, etc.), don't render term's children local skip_child_rendering = keyword_info and keyword_info.no_child_categories -- Render each term in the container local rendered_terms = {} local container_height = 0 local container_width = 0 for _, term in ipairs(terms) do -- Collect term-specific labels local term_labels = {} if term.bor then table.insert(term_labels, { abbrev = "bor.", title = "borrowed", glossary = "loanword" }) end if term.slbor then table.insert(term_labels, { abbrev = "slbor.", title = "semi-learned borrowing", glossary = "semi-learned_borrowing" }) end if term.lbor then table.insert(term_labels, { abbrev = "lbor.", title = "learned borrowing", glossary = "learned_borrowing" }) end local term_tree, term_height, term_width = render_term(term, keyword_info, keyword_modifiers, is_group, false, skip_child_rendering, term_labels) table.insert(rendered_terms, { tree = term_tree, height = term_height, width = term_width, is_uncertain = term.is_uncertain, }) container_height = max(container_height, term_height) container_width = container_width + term_width end local rendered_html local has_connector = false if #rendered_terms == 1 then -- Single term: just return it directly rendered_html = rendered_terms[1].tree container_height = rendered_terms[1].height container_width = rendered_terms[1].width else -- Multiple terms: group them together local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, term_data in ipairs(rendered_terms) do local column = html_create('div'):addClass('etytree-branch') column:node(term_data.tree) add_branch_connector(column, i, #rendered_terms) subtree_container:node(column) end local connecting_line = create_vertical_connector() -- Add group label for group keywords if is_group and not invisible_in_tree(keyword_info.invisible) then render_group_label(connecting_line, keyword_info, keyword_modifiers) end rendered_html = html_create() :node(subtree_container) :node(connecting_line) has_connector = true end return rendered_html, container_height, container_width, has_connector end -- Render a term node render_term = function(term_node, keyword_info, keyword_modifiers, is_group_child, is_toplevel_term, skip_child_rendering, term_labels) local tree_width, tree_height = 0, 0 local subtrees = {} -- Process term's children (which are containers) local has_hidden_children = false if not term_node.is_duplicate and not skip_child_rendering then for _, container in ipairs(term_node.children or {}) do local subtree, sub_height, sub_width, subtree_has_connector = render_container(container, is_toplevel_term) if subtree then table.insert(subtrees, { tree = subtree, height = sub_height, width = sub_width, has_connector = subtree_has_connector, }) tree_height = max(tree_height, sub_height) tree_width = tree_width + sub_width end end elseif skip_child_rendering then -- Check if there are any visible children -- When stop_recursion is true, children aren't parsed, but has_visible_children flag is set if term_node.has_visible_children then has_hidden_children = true elseif term_node.children and #term_node.children > 0 then -- Fallback: check parsed children for visibility for _, container in ipairs(term_node.children) do local child_keyword_info = container.keyword_info if not (child_keyword_info and (child_keyword_info.invisible == "all" or child_keyword_info.invisible == true)) then has_hidden_children = true break end end end end local is_toplevel_node = (keyword_info == nil) local term_block = render_term_block(term_node, format_term_func, is_toplevel_node) render_label(term_block, keyword_info, keyword_modifiers, term_node.is_uncertain, is_group_child, term_labels or {}) local term_html = html_create() if #subtrees == 0 then local show_connector = (term_node.is_duplicate and term_node.original_has_children) or has_hidden_children if show_connector then term_html:node(create_duplicate_connector()) end term_html:node(term_block) tree_width = tree_width + 1 elseif #subtrees == 1 then term_html:node(subtrees[1].tree) if not subtrees[1].has_connector then term_html:node(create_vertical_connector()) end term_html:node(term_block) else -- Multiple containers: need to merge them local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, subtree_data in ipairs(subtrees) do local column = html_create('div'):addClass('etytree-branch') column:node(subtree_data.tree) add_branch_connector(column, i, #subtrees) subtree_container:node(column) end local connecting_line = create_vertical_connector() term_html :node(subtree_container) :node(connecting_line) :node(term_block) end return term_html, tree_height + 1, tree_width end local final_tree, final_height, final_width = render_term(data_tree, nil, nil, false, true) local container = html_create('div') :addClass('etytree-body') :node(final_tree) return tostring(html_create('div') :addClass('etytree NavFrame') :attr('data-etytree-height', final_height) :attr('data-etytree-width', final_width) :tag('div') :addClass('NavHead') :tag('div') :wikitext('Etymology tree') :done() :done() :tag('div') :addClass('NavContent') :node(container) :done()) end return export ok2w6x96bozaxhyj2cy4qex9anfbtx5 235431 235430 2026-06-02T05:01:19Z Lee 19 පැරණි සංස්කරණයකින් ගත් කොටස්... 235431 Scribunto text/plain local export = {} local html_create = mw.html.create local max = math.max local function create_vertical_connector() return html_create('span'):addClass('etytree-connector-vertical') end local function create_abbr(text, title, glossary) local abbr = html_create('abbr') :attr('title', title) :wikitext(text) if glossary then abbr = '[[Appendix:Glossary#' .. glossary .. '|' .. tostring(abbr) .. ']]' end return html_create('span'):addClass('etytree-label'):node(abbr) end local function create_uncertainty_marker() return html_create('abbr') :addClass('etytree-unc') :attr('title', 'uncertain') :wikitext('?') end local function create_label_container() return html_create('span'):addClass('etytree-label-container') end local function invisible_in_tree(inv) return inv == "all" or inv == true or inv == "tree" end local function render_label(term_block, keyword_info, keyword_modifiers, is_uncertain, is_group_child, term_labels) -- Skip label when invisible in tree local has_label = keyword_info and keyword_info.abbrev and not is_group_child and not invisible_in_tree(keyword_info.invisible) -- For group children, keyword uncertainty is shown on the group label, not on individual terms local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc and not is_group_child local show_term_uncertainty = is_uncertain -- Check if we have term-specific labels local has_term_labels = term_labels and #term_labels > 0 if not has_label and not show_term_uncertainty and not keyword_uncertain and not has_term_labels then return end local label_span = create_label_container() if has_label then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr( keyword_info.abbrev, glossary_title, keyword_info.glossary )) -- Show uncertainty marker if term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end else -- No label, but term or keyword is uncertain if show_term_uncertainty or keyword_uncertain then label_span:node(create_uncertainty_marker()) end end -- Add term-specific labels if has_term_labels then for _, label_info in ipairs(term_labels) do label_span:node(create_abbr(label_info.abbrev, label_info.title, label_info.glossary)) end end term_block:node(label_span) end local function render_term_block(node_data, format_term_func, is_toplevel) local link_content = html_create() link_content :tag('span') :addClass('etyl') :wikitext(node_data.lang:getCanonicalName()) :done() local term_text = format_term_func(node_data, is_toplevel) if term_text then link_content :wikitext(' ') :tag('span') :addClass('etytree-term') :wikitext(term_text) :done() end local block = html_create('div'):addClass('etytree-block'):node(link_content) -- Add duplicate styling if this is a duplicate node if node_data.is_duplicate then block:addClass('etytree-duplicate') end return block end local function create_dotted_connector() return html_create('span'):addClass('etytree-connector-dotted') end -- Create an L-shaped connector for nodes with hidden ancestry (duplicate or no_child_categories) local function create_duplicate_connector() local container = html_create('div'):addClass('etytree-duplicate-connector') local inner_wrapper = container:tag('div') inner_wrapper:tag('span'):addClass('etytree-dup-right') inner_wrapper:tag('span'):addClass('etytree-dup-horiz') inner_wrapper:tag('span'):addClass('etytree-dup-left') inner_wrapper:tag('span'):addClass('etytree-dup-arrow'):wikitext('▲') return container end local function render_group_label(connecting_line, keyword_info, keyword_modifiers) local has_abbrev = keyword_info and keyword_info.abbrev local keyword_uncertain = keyword_modifiers and keyword_modifiers.unc -- Nothing to show if no abbrev and no uncertainty if not has_abbrev and not keyword_uncertain then return end local label_span = connecting_line:tag('span'):addClass('etytree-group-label') if has_abbrev then local glossary_title = keyword_info.glossary and keyword_info.glossary:gsub("_", " ") or keyword_info.abbrev label_span:node(create_abbr(keyword_info.abbrev, glossary_title, nil)) end -- Add uncertainty marker if keyword has <unc> modifier if keyword_uncertain then label_span:node(create_uncertainty_marker()) end end local function add_branch_connector(column, index, total) if index == 1 then column:tag('span'):addClass('etytree-branch-left') elseif index == total then column:tag('span'):addClass('etytree-branch-right') else column:tag('span'):addClass('etytree-connector-vertical-short') column:tag('span'):addClass('etytree-branch-mid') end end function export.render(opts) opts = opts or {} local data_tree = opts.data_tree local format_term_func = opts.format_term_func -- Forward declaration local render_term -- Render a container (keyword + its terms) local function render_container(container, is_toplevel) local keyword_info = container.keyword_info local keyword_modifiers = container.keyword_modifiers or {} local is_group = keyword_info and keyword_info.is_group local terms = container.terms or {} -- Skip container entirely only when invisible = "all" (or true) if keyword_info and invisible_in_tree(keyword_info.invisible) then return nil, 0, 0 end if #terms == 0 then return nil, 0, 0 end -- For no_child_categories keywords (calque, semantic loan, etc.), don't render term's children local skip_child_rendering = keyword_info and keyword_info.no_child_categories -- Render each term in the container local rendered_terms = {} local container_height = 0 local container_width = 0 for _, term in ipairs(terms) do -- Collect term-specific labels local term_labels = {} if term.bor then table.insert(term_labels, { abbrev = "bor.", title = "borrowed", glossary = "loanword" }) end if term.slbor then table.insert(term_labels, { abbrev = "slbor.", title = "semi-learned borrowing", glossary = "semi-learned_borrowing" }) end if term.lbor then table.insert(term_labels, { abbrev = "lbor.", title = "learned borrowing", glossary = "learned_borrowing" }) end local term_tree, term_height, term_width = render_term(term, keyword_info, keyword_modifiers, is_group, false, skip_child_rendering, term_labels) table.insert(rendered_terms, { tree = term_tree, height = term_height, width = term_width, is_uncertain = term.is_uncertain, }) container_height = max(container_height, term_height) container_width = container_width + term_width end local rendered_html local has_connector = false if #rendered_terms == 1 then -- Single term: just return it directly rendered_html = rendered_terms[1].tree container_height = rendered_terms[1].height container_width = rendered_terms[1].width else -- Multiple terms: group them together local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, term_data in ipairs(rendered_terms) do local column = html_create('div'):addClass('etytree-branch') column:node(term_data.tree) add_branch_connector(column, i, #rendered_terms) subtree_container:node(column) end local connecting_line = create_vertical_connector() -- Add group label for group keywords if is_group and not invisible_in_tree(keyword_info.invisible) then render_group_label(connecting_line, keyword_info, keyword_modifiers) end rendered_html = html_create() :node(subtree_container) :node(connecting_line) has_connector = true end return rendered_html, container_height, container_width, has_connector end -- Render a term node render_term = function(term_node, keyword_info, keyword_modifiers, is_group_child, is_toplevel_term, skip_child_rendering, term_labels) local tree_width, tree_height = 0, 0 local subtrees = {} -- Process term's children (which are containers) local has_hidden_children = false if not term_node.is_duplicate and not skip_child_rendering then for _, container in ipairs(term_node.children or {}) do local subtree, sub_height, sub_width, subtree_has_connector = render_container(container, is_toplevel_term) if subtree then table.insert(subtrees, { tree = subtree, height = sub_height, width = sub_width, has_connector = subtree_has_connector, }) tree_height = max(tree_height, sub_height) tree_width = tree_width + sub_width end end elseif skip_child_rendering then -- Check if there are any visible children -- When stop_recursion is true, children aren't parsed, but has_visible_children flag is set if term_node.has_visible_children then has_hidden_children = true elseif term_node.children and #term_node.children > 0 then -- Fallback: check parsed children for visibility for _, container in ipairs(term_node.children) do local child_keyword_info = container.keyword_info if not (child_keyword_info and (child_keyword_info.invisible == "all" or child_keyword_info.invisible == true)) then has_hidden_children = true break end end end end local is_toplevel_node = (keyword_info == nil) local term_block = render_term_block(term_node, format_term_func, is_toplevel_node) render_label(term_block, keyword_info, keyword_modifiers, term_node.is_uncertain, is_group_child, term_labels or {}) local term_html = html_create() if #subtrees == 0 then local show_connector = (term_node.is_duplicate and term_node.original_has_children) or has_hidden_children if show_connector then term_html:node(create_duplicate_connector()) end term_html:node(term_block) tree_width = tree_width + 1 elseif #subtrees == 1 then term_html:node(subtrees[1].tree) if not subtrees[1].has_connector then term_html:node(create_vertical_connector()) end term_html:node(term_block) else -- Multiple containers: need to merge them local subtree_container = html_create('div'):addClass('etytree-branch-group') for i, subtree_data in ipairs(subtrees) do local column = html_create('div'):addClass('etytree-branch') column:node(subtree_data.tree) add_branch_connector(column, i, #subtrees) subtree_container:node(column) end local connecting_line = create_vertical_connector() term_html :node(subtree_container) :node(connecting_line) :node(term_block) end return term_html, tree_height + 1, tree_width end local final_tree, final_height, final_width = render_term(data_tree, nil, nil, false, true) local container = html_create('div') :addClass('etytree-body') :node(final_tree) return tostring(html_create('div') :addClass('etytree NavFrame') :attr('data-etytree-height', final_height) :attr('data-etytree-width', final_width) :tag('div') :addClass('NavHead') :tag('div') :wikitext('නිරුක්ති ශාඛා') :done() :done() :tag('div') :addClass('NavContent') :node(container) :done()) end return export iz0lgvil7iakggds52f39lobpema4jj hay 0 141138 235407 229298 2026-06-02T04:43:58Z Lee 19 /* ඉංග්‍රීසි */ 235407 wikitext text/x-wiki {{also|Hay|hãy|hầy|haþ}} == සර්ව භාෂාමය == === සංකේතය === {{mul-symbol}} # {{ISO 639|3}} === අමතර අවධානයට === * {{langcat}} == ඉංග්‍රීසි == [[File:Romanian hay.jpg|thumb|120px|upright|A Romanian haycock]] === උච්චාරණය === * {{enPR|hā}}, {{IPA|en|/heɪ/}} * {{audio|en|en-us-hay.ogg|a=US}} * {{homophones|en|hey}} * {{rhymes|en|eɪ|s=1}} === නිරුක්තිය 1 === From {{inh|en|enm|hey}}, from {{inh|en|ang|hīeġ}}, from {{inh|en|gmw-pro|*hawi}}, from {{inh|en|gem-pro|*hawją}}, from {{m|gem-pro|*hawwaną||to hew, cut down}}. Cognate with {{cog|fy|hea||hay}}, {{cog|gsw|Heuw||hay}}, {{cog|cim|höobe||hay}}, {{cog|nl|hooi||hay}}, {{cog|de|Heu||hay}}, {{cog|lb|Hee||hay}}, {{cog|mhn|hei||hay}}, {{cog|yi|היי||hay}}, {{cog|da|hø||hay}}, {{cog|fo|hoyggj||hay}}, {{cog|gmq-gut|hoy||hay}}, {{cog|is|hey||hay}}, {{cog|nb|-}}, {{cog|nn|høy||hay}}, {{cog|sv|hö||hay}}, {{cog|got|𐌷𐌰𐍅𐌹||grass, hay}}. More at {{l|en|hew}}. ==== නාම පදය ==== {{en-noun|~}} # {{lb|en|uncountable}} [[grass|Grass]] cut and dried for use as animal [[fodder]]. #* {{RQ:Camden Remaines |passage=Make '''hay''' while sunne shines.}} #* {{quote-text|en|year=1857|author=w:Charles Louis Flint|title=Grasses and Forage Plants: A Practical Treatise|section={{...}} |passage='''Hay''' may be dried too much as well as too little.}} # {{lb|en|countable}} Any mix of green leafy plants used for fodder. # {{lb|en|slang}} [[cannabis|Cannabis]]; [[marijuana]]. #* '''1947''', William Burroughs, letter, 19 Feb 1947: #*: I would like some of that '''hay'''. Enclose $20. #* {{quote-song|en|year=1994|title=w:Bug Powder Dust|artist=Bomb the Bass|passage=Jeff Spicoli, roll me another '''hay'''}} # A [[net]] set around the [[haunt]] of an [[animal]], especially a [[rabbit]]. ===== ව්‍යුත්පන්න යෙදුම් ===== {{col4|en |hay-asthma|that ain't hay |haybarn|haybag|haybale|hayband|haybird|haybote|haycap|haycart|haycation|hayer|hayey|hayfever|hayfield|Hayford|hayhead|hayland|hayless|haylift|haylike|haymaking|haymonger|haymower|hayrake|hayricker|hayride|hayshed|haystalk|haytime|haywire|Oxhey |hay bed |haybox |haycock |hay devil |hay fever |hayfork |hay is for horses |hay knife |haylage|hay moon |hayloft |haymaker |Haymarket |haymow |haynet |hayrack |hayrick |hayseed |haysel |haystack |hay wagon |hayward |haywain |hit the hay |make hay while the sun shines|deer-hay |hay bag|hay loft|hay net|hay ride|hay tea|hay wain|hay-bote|hay-cock|hay-fever|hay-scented fern|lunar hay fever|make hay|meadow hay|roll in the hay|romp in the hay|salt hay|salt marsh hay|slough hay|what the hay }} ===== වැඩිදුර් කියවීම සඳහා ===== * {{pedia}} ==== ක්‍රියා පදය ==== {{en-verb}} # To cut grasses or herb plants for use as animal fodder. # To [[lay]] [[snare]]s for [[rabbit]]s. ===== ව්‍යුත්පන්න යෙදුම් ===== {{col|en|unhayed }} ===== පරිවර්තන ===== {{trans-top|to cut green plants for fodder}} * Basque: {{t|eu|belarra ondu}} * Bulgarian: {{t|bg|кося и суша трева}} * Chinese: *: Mandarin: {{t-check|cmn|制干草|tr=zhì gāncǎo}}, {{t-check|cmn|供给干草|tr=gōngjǐ gāncǎo}} {{qualifier|transitive}}, {{t-check|cmn|晒干草|tr=shài gāncǎo}} {{qualifier|intransitive}} * Danish: {{t|da|slå hø}} * Dutch: {{t+|nl|hooien}} * Estonian: {{t|et|heina tegema}} * Finnish: {{t|fi|[[tehdä]] [[heinä|heinää]]}} * Interlingua: {{t|ia|preparar feno}} * Italian: {{t+|it|far}} {{t+|it|fieno}} * Lithuanian: {{t|lt|šienauti}} * Polish: {{t+|pl|kosić}} {{t+|pl|siano}} * Portuguese: {{t|pt|fenar}} * Romanian: {{t+|ro|cosi}} * Russian: {{t|ru|собира́ть се́но}} * Slovene: {{t|sl|seno sušiti}} * Spanish: {{t|es|[[cortar]] [[heno]]}} * Vietnamese: {{t|vi|cắt cỏ cho thú vật}} {{gloss|literally: to cut grass for animals}} * Volapük: {{t|vo|sigayebön}} * Zazaki: {{t|zza|patil|f}}, {{t|zza|palax}} {{trans-bottom}} ==== අමතර අවධානයට ==== * {{l|en|bale}} * {{l|en|straw}} === නිරුක්තිය 2 === From {{inh|en|enm|haye}}, {{m|enm|heye}}, a conflation of {{inh|en|ang|heġe|t=hedge, fence}} and {{inh|en|ang|ġehæġ|t=an enclosed piece of land}}. ==== නාම පදය ==== {{en-noun}} # {{lb|en|obsolete}} A [[hedge]]. # {{lb|en|obsolete}} A [[net]] placed around the [[lair]] or [[burrow]] of an animal. # {{lb|en|obsolete}} An [[enclosure]], [[haw]]. # {{lb|en|obsolete}} A [[circular]] [[country dance]]. #* {{RQ:Marlowe Edward 2|year=1622|text=My men like Satyres grazing on the lawnes,<br>Shall with their Goate feete daunce an antick '''hay''',}} #* {{RQ:Shakespeare Love's Labour's Lost|V|1|text=I’ll make one in a dance, or so; or I will play<br>On the tabour to the Worthies, and let them dance the '''hay'''.}} === නිරුක්තිය 3 === From the sound it represents, by analogy with other letters such as {{m|en|kay}} and {{m|en|gay}}. The expected form in English if the ''h'' had survived in the Latin name of the letter "h", {{m|la|hā}}. ==== නාම පදය ==== {{en-noun}} # The letter for the ''h'' sound in [[Pitman shorthand]]. ===== ආශ්‍රිත යෙදුම් ===== * {{l|en|aitch}}, the Latin letter for this sound === වැඩිදුර් කියවීම සඳහා === * {{pedia|Hay (disambiguation)}} === අමතර අවධානයට === *[[hay ko]] * {{l|en|yeet hay}} ===Anagrams=== * {{anagrams|en|a=ahy|AYH|YHA|Yah|yah}} {{C|en|Agriculture|Dances|Grasses}} ==Fingallian== === නිරුක්තිය === From {{inh|gmw-fin|enm|heye}}, from {{inh|gmw-fin|ang|heġe}}, from {{inh|gmw-fin|gmw-pro|*hagi}}. === නාම පදය === {{head|gmw-fin|noun}} # A circular country [[dance]]. #* '''1689''' James Farewell, [https://quod.lib.umich.edu/e/eebo/A40881.0001.001/1:6?rgn=div1;vid=105328;view=fulltext ''The Irish Hudibras, or, Fingallian prince taken from the sixth book of Virgil's Æneids, and adapted to the present times.''] (Appendix: "Alphabetical Table" of "Fingallian Words, or Irish Phrases"): #*: {{quote|gmw-fin|'''Hay''',|'''''Irish''-Hay, a Dance'''.}} ==Lushootseed== === වෙනත් ආකාර === * {{l|lut|haya}} === උච්චාරණය === * {{IPA|lut|/haɪ/}} === ක්‍රියා පදය === {{head|lut|verb}} # to [[know]] ==Malagasy== === නිරුක්තිය 1 === ==== විශ්මයාර්ථ පදය ==== {{head|mg|interjection}} # [[truly]]!, [[indeed]]! === නිරුක්තිය 2 === ====Participle==== {{head|mg|participle}} # [[possible]] # [[known]] === නිරුක්තිය 3 === ==== නාම පදය ==== {{head|mg|noun}} # {{lb|mg|dialectal}} [[burning]] === නිරුක්තිය 4 === ==== නාම විශේෂණ පදය ==== {{head|mg|adjectives}} # {{lb|mg|of land}} [[exposed]], [[bare]] === නිරුක්තිය 5 === ==== නාම පදය ==== {{head|mg|noun}} # {{lb|mg|Tankarana}} an [[insect]] which [[damage]]s [[rice]] [[crop]]s ==Mehri== ===Pronoun=== {{head|gdq|pronoun}} # [[they]] two (''third-person dual pronoun'') === මූලාශ්‍ර === * Aaron Rubin, ''The Mehri Language of Oman'' == මධ්‍යකාලීන ඉංග්‍රීසි == === නිරුක්තිය 1 === ==== නාම පදය ==== {{head|enm|noun|altform=1}} # {{alt form|enm|haye||net}} === නිරුක්තිය 2 === ==== විශ්මයාර්ථ පදය ==== {{head|enm|interjection|altform=1}} # {{alt form|enm|hey||hey}} === නිරුක්තිය 3 === ==== නාම පදය ==== {{enm-noun|-}} # {{alt form|enm|hey||hay}} === නිරුක්තිය 4 === ====Pronoun==== {{head|enm|pronoun|altform=1}} # {{alt form|enm|he|t=they|id=they}} === නිරුක්තිය 5 === ==== නාම පදය ==== {{head|enm|noun|altform=1}} # {{alt form|enm|heye||hedge}} === නිරුක්තිය 6 === ==== ක්‍රියා පදය ==== {{head|enm|verb|altform=1}} # {{alt form|enm|haven||to have}} == මධ්‍යකාලීන ප්‍රංශ == === ක්‍රියා පදය === {{head|frm|verb form}} # {{inflection of|frm|hayr||1|s|pres|indc}} ==Old Galician-Portuguese== === වෙනත් ආකාර === * {{alter|roa-opt|hai|ai|ay}} === නිරුක්තිය === From {{m|roa-opt|haver|ha}} + {{m|roa-opt|y}}, "there is". === උච්චාරණය === * {{IPA|roa-opt|[ˈaj]}} === ක්‍රියා පදය === {{head|roa-opt|verb form}} # {{lb|roa-opt|impersonal|Galicia}} there is, there are #* {{quote-book|gl|year=1370|editor=Ramón Lorenzo|title=Crónica Troiana|page=533 |passage= Et moytas uegadas cõteçe que '''hay''' algũus que nõ catã senõ porlo que he sua prol |translation= And many times it happens that '''there are''' some than don't care but for their own interest}} ====Descendants==== * {{desc|gl|hai}} === වැඩිදුර් කියවීම සඳහා === * {{R:gl:DDGM|aver}} * {{R:gl:CX|hay }} ==Salar== === නිරුක්තිය === {{bor+|slr|zh|海}}. === උච්චාරණය === * {{IPA|slr|/xɑj/}} === නාම පදය === {{slr-noun|ı|lar}} # [[sea]] === මූලාශ්‍ර === * {{R:slr:MaWei2|page=260}} ==Somali== === ක්‍රියා පදය === {{head|so|verb}} # to [[hold]], [[have]] == ස්පාඤ්ඤ == === නිරුක්තිය === From {{inh|es|osp|ha ý||it has there}} (compare {{cog|ca|hi ha}} and {{cog|fr|il y a}}), from {{m|osp|ha}}, third-person singular present form of {{m|osp|aver||to have}}, + {{m|osp|ý}} (locative pronoun, compare modern {{cog|fr|y}} and {{cog|ca|hi}}), from {{der|es|la|ibī||there}}. === උච්චාරණය === {{es-pr|+<audio:LL-Q1321 (spa)-AdrianAbdulBaha-hay.wav<a:Colombia>><hmp:ay>}} === ක්‍රියා පදය === {{head|es|verb form}} # {{es-verb form of|haber}} #: [[there is]], [[there are]] #: {{ux|es|'''Hay''' dos tiendas que venden películas.|t='''There are''' two stores that sell films.}} ==== භාවිත සටහන් ==== Impersonal form of [[haber#Spanish|haber]], '''there is''' or '''there are''', not '''he is''' or '''it was'''. ==== ව්‍යුත්පන්න යෙදුම් ==== {{col|es|donde hay confianza, da asco|no hay mal que por bien no venga|no hay quien}} ==Tagalog== === උච්චාරණය === {{tl-pr}} === නිරුක්තිය 1 === Compare {{w|Hokkien}} {{m|nan-hbl|害矣|tr=hāi--ah}}. ==== විශ්මයාර්ථ පදය ==== {{tl-head|interjection|b=+}} # {{alt form|tl|ay}} # {{n-g|an expression of fatigue, exhaustion, grief, sorrow, frustration, or the like}}: [[sigh]] #: {{ux|tl|'''Hay'''... Antok na ako!|'''Sigh'''... I'm sleepy already!}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|tl|hay naku|hays}} === නිරුක්තිය 2 === {{bor+|tl|en|high}}. ==== නාම විශේෂණ පදය ==== {{tl-adj|b=+}} # {{lb|tl|slang}} [[high]] on [[drug]]s; [[drugged]] #: {{syn|tl|sabog|basag|bogsa}} === නිරුක්තිය 3 === ==== නාම පදය ==== {{tl-noun|b=+}} {{tlb|tl|obsolete}} # [[act]] of [[fright]]ing or [[startle|startling]] a [[dog]] ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|tl|hayan|ihay|maghay}} === වැඩිදුර් කියවීම සඳහා === * {{R:Pambansang Diksiyonaryo}} == වියට්නාම == === උච්චාරණය === {{vi-IPA}} === නිරුක්තිය 1 === Cognate with {{cog|aem|-}} ''hɪː'' ("to understand"). ==== ක්‍රියා පදය ==== {{vi-verb|[[咍]], [[𫨩]], [[台]], [[能]]}} # {{lb|vi|archaic|or|literary}} to [[know]]; to [[get]] to know; to [[learn]] #* ''Phật thuyết đại báo phụ mẫu ân trọng kinh'' ({{lang|zh|佛說大報父母恩重經}}), folio 35a #*: {{ux|vi|{{vi-ruby|合'''咍'''㝵*咍把特恩盎那|ids= 𱍸|Hợp '''hay''' người ấy hay trả được ơn áng nạ}}|Certainly, [one will] '''know''' that such a person can repay their parents' kindness.}}<!--- Chinese original: (則得名為孝順之子) ---> #* {{RQ:Nguyen Trai Quoc am thi tap|chapter=歸崑山重九偶作 Quy côn sơn trùng cửu ngẫu tác |passage=𣈜恪'''咍'''兠群役恪</br>節冷馬女底朱戈 |translation=Who '''knows''' on a different day if I would be busy or not,</br>[So] I would rather not miss out on this nice weather [right now]. |transliteration=Ngày khác '''hay''' đâu còn việc khác,</br>Tiết lành mựa nỡ để cho qua.}} #* {{RQ:Nguyen Du Kieu|passage=𬖉𦋦𦰟𦹵𦲿核</br>𧡊囂囂𱢻時'''能'''姉𧗱|tr=Trông ra ngọn cỏ lá cây,</br>Thấy hiu hiu gió thì '''hay''' chị về.|translation=And when you look outside, to where the grass and leaves are,</br>And if you see them sway in the light breeze, then you '''know''' that I, your sister, will come home soon.}} <!-- 能 for hay is one of the few fairly common semantograms in Nôm texts, see the rhyme scheme between cây and hay, both the sixth syllable in each line. --> #* {{quote-journal|vi|title=Trẻ con lai ở miền Tây: Con không cha như nhà không nóc [The mixed children in Southwestern Vietnam: a fatherless child is like a roofless house]|url=https://tuoitre.vn/tre-con-lai-o-mien-tay-con-khong-cha-nhu-nha-khong-noc-20180122101058204.htm|newspaper=Tuổi Trẻ Online|date=22 Jan 2018|author=Viễn Sự; Sơn Lâm|passage=Hồi mẹ nó ẵm về nước, bà nội nó nói mua cho cái vé khứ hồi, tới hồi ra sân bay về lại Hàn Quốc thì mới '''hay''' cái vé đi có một chiều. |translation=When his mother carried him in her arms back to Vietnam, his paternal grandmother said they had bought a return ticket for her, but she '''realised''' it was only a one-way ticket when she was at the airport, trying to return to Korea.}} # {{lb|vi|obsolete|auxiliary}} [[can]], [[could]], [[may]], [[might]] #* ''Phật thuyết đại báo phụ mẫu ân trọng kinh'' ({{lang|zh|佛說大報父母恩重經}}), folio 35a #*: {{ux|vi|{{vi-ruby|合咍㝵*'''咍'''把特恩盎那|ids= 𱍸|Hợp hay người ấy '''hay''' trả được ơn áng nạ}}|Certainly, [one will] know that such a person '''can''' repay their parents' kindness.}}<!--- Chinese original: (則得名為孝順之子) ---> ==== නාම විශේෂණ පදය ==== {{vi-adj}} # {{lb|vi|obsolete}} [[able]], [[capable]] #* {{quote-book|vi|origlang= la|year= 1914|origyear= {{circa|5th century CE}}|compiler= Edmond Nordemann|title= Chrestomathie annamite|chapter= {{lw|vi|Tín biểu các tông đồ|Kinh tin-kính}}|trans-chapter= {{w|Apostles' Creed}}|original= Symbolum Apostolorum|page= 152|pageurl= https://babel.hathitrust.org/cgi/pt?id=coo.31924021947639&seq=186 |origtext= la:Credo in Deum Patrem omni'''potentem''', Creatorem caeli et terrae,{{...}} |text= Tôi tin kính Dêu cha '''hay''' lọn vậy, dựng nên lời-đất.{{...}} |translation= I believe in God, the Father All '''Capable''', Creator of heaven and earth,{{...}}}} ===== භාවිත සටහන් ===== * The sense of “to know” is now mostly used in fixed expressions, such as {{m|vi|đến đâu hay đến đó}} and {{m|vi|cho hay||to inform|lit= to let [someone] know}}, in the non-literary language. ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|vi|cho hay|hay biết|có hay|đến đâu hay đến đó|hay chữ}} === නිරුක්තිය 2 === ==== නාම විශේෂණ පදය ==== {{vi-adj|[[咍]], [[𫨩]], [[台]]}} # [[good]], as in [[useful]], [[inventive]], [[interesting]] or [[entertaining]]; compare {{m|vi|tốt|pos=good as in high-quality, skillful or ethical}} #: {{ant|vi|dở|tệ|tồi}} #: {{uxi|vi|ý '''hay'''|a good idea}} #: {{ux|vi|Phim '''hay''' quá ha !|That was a great movie!}} ===== ව්‍යුත්පන්න යෙදුම් ===== {{col3|vi|hay ho|hay hớm|ơ hay|ô hay}} ==== ක්‍රියා විශේෂණ පදය ==== {{vi-adv|𫨩}} # [[well#Adverb|well]] #: {{ant|vi|dở|tệ|tồi}} #* {{quote-song|vi|author= Đậu Kinh Luân|year= {{circa|1990s}}|title= Hoa Tay|trans-title= Deftness|url= https://youtu.be/UCRP9WKlrKc|text=Ai hay vẽ rồi sẽ vẽ '''hay'''.|translation= Whoever draws often will draw '''well'''.}} === නිරුක්තිය 3 === ==== ක්‍රියා විශේෂණ පදය ==== {{vi-adv}} # [[often]], [[habitually]] #: {{ux|vi|Con '''hay''' nói nhiều lắm.|You, child, are talkative.|lit= You, child, '''habitually''' talk too much.}} #* {{quote-song|vi|author= Đậu Kinh Luân|year= {{circa|1990s}}|title= Hoa Tay|trans-title= Deftness|url= https://youtu.be/UCRP9WKlrKc|text=Ai '''hay''' vẽ rồi sẽ vẽ hay.|translation= Whoever draws '''often''' will draw well.}} === නිරුක්තිය 4 === ====Conjunction==== {{vi-con|[[咍]], [[台]], [[能]]}} # [[or]] #: {{ux|vi|Chọn cái này, '''hay''' chọn cái kia|Choose this one, or choose that one}} #* {{RQ:Nguyen Du Kieu|passage=吏輸妸李半命'''能'''牢|tr=Lại thua ả Lý bán mình '''hay''' sao?|translation=Could I fall short of Lady Li, who sold herself?}} ===== ව්‍යුත්පන්න යෙදුම් ===== * {{l|vi|hay là}} ===== අමතර අවධානයට ===== * {{l|vi|hoặc}} ==Walloon== === උච්චාරණය === * {{IPA|wa|/haj/}} === විශ්මයාර්ථ පදය === {{head|wa|interjection}} # [[go]], [[let us]] [[go]] ==Yilan Creole== === විශ්මයාර්ථ පදය === {{head|ycr|interjection}} # [[yes]] === මූලාශ්‍ර === * {{R:ycr:Lin 2022}} ==Yola== ===Pronoun=== {{head|yol|pronoun}} # {{alt form|yol|hea||he}} #* {{quote-book|yol|year=1927|chapter=LAMENT OF A WIDOW|line=6|page=130|title=THE ANCIENT DIALECT OF THE BARONIES OF FORTH AND BARGY, COUNTY WEXFORD|passage="'''Hay''' was mee gude plowere,|translation="'''He''' was my good plougher,}} #* {{quote-book|yol|year=1927|chapter=YOLA ZONG O BARONY VORTH|line=4|page=132|title=THE ANCIENT DIALECT OF THE BARONIES OF FORTH AND BARGY, COUNTY WEXFORD|passage=Fan Buckeen '''hay''' pooked lik own thing mad.|translation=When Buckeen '''he''' jumped like a thing mad.}} #* {{quote-book|yol|year=1927|chapter=YOLA ZONG O BARONY VORTH|line=7|page=132|title=THE ANCIENT DIALECT OF THE BARONIES OF FORTH AND BARGY, COUNTY WEXFORD|passage=Wi spur upa heel '''hay''' gaed him a goad,|translation=With a spur on his heel, '''he''' gave him a goad,}} #* {{quote-book|yol|year=1927|chapter=PAUDEEN FOUGHLAAN'S WEDDEEN|line=3|page=133|title=THE ANCIENT DIALECT OF THE BARONIES OF FORTH AND BARGY, COUNTY WEXFORD|passage=Shu bin vrem Vorth, an '''hay''' vrem Bargee,|translation=She being from Forth and '''he''' from Bargy;}} #* {{quote-book|yol|year=1927|chapter=PAUDEEN FOUGHLAAN'S WEDDEEN|line=5|page=133|title=THE ANCIENT DIALECT OF THE BARONIES OF FORTH AND BARGY, COUNTY WEXFORD|passage=Yola Vather Deruse '''hay''' raree cam thoare,|translation=Old Father Devereux ('''he''') early came there,}} #* {{quote-book|yol|year=1927|chapter=PAUDEEN FOUGHLAAN'S WEDDEEN|line=6|page=133|title=THE ANCIENT DIALECT OF THE BARONIES OF FORTH AND BARGY, COUNTY WEXFORD|passage=Wi buke an wi candale '''hay''' tackled a paare.|translation=With book and with candle '''he''' tackled the pair;}} === මූලාශ්‍ර === * {{R:Browne 1927|page=130}} qb6de32n1350kyl4p162ii8pztesi0i Module:etymon/doc 828 141288 235414 229700 2026-03-10T02:39:16Z en>Juwan 0 235414 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { families = "Module:families", languages = "Module:languages", }, loadData = { text_allowed = "Module:etymon/data/text_allowed", }, }) function export.text_allowed_list(frame) local data = M.text_allowed or {} local langs = data.langs or {} local families = data.families or {} local lang_codes = {} for code in pairs(langs) do table.insert(lang_codes, code) end table.sort(lang_codes) local family_codes = {} for code in pairs(families) do table.insert(family_codes, code) end table.sort(family_codes) local function wrap_lang_code(lang_code) local lang_obj = M.languages.getByCode(lang_code, nil, true) local lang_name = lang_obj and lang_obj.getCanonicalName and lang_obj:getCanonicalName() if lang_name and lang_name ~= "" then return "<code>" .. lang_code .. "</code> <small>(" .. lang_name .. ")</small>" end return "<code>" .. lang_code .. "</code>" end local function wrap_family_code(family_code) local family_obj = M.families.getByCode(family_code) if not family_obj then return "<code>" .. family_code .. "</code>" end local family_name = family_obj.getCanonicalName and family_obj:getCanonicalName() if family_name and family_name ~= "" then return "<code>" .. family_code .. "</code> <small>(" .. family_name .. ")</small>" end return "<code>" .. family_code .. "</code>" end local function is_etymology_only_lang(lang_code) local lang_obj = M.languages.getByCode(lang_code, nil, true) return lang_obj and lang_obj.hasType and lang_obj:hasType("language", "etymology-only") end local function get_family_lang_codes(family_code) local family_obj = M.families.getByCode(family_code) if not family_obj or not family_obj.getDescendantCodes then return nil end local codes = family_obj:getDescendantCodes() if not codes or #codes == 0 then return nil end table.sort(codes) local out = {} for _, lang_code in ipairs(codes) do if not is_etymology_only_lang(lang_code) then out[#out + 1] = lang_code end end if #out == 0 then return nil end return out end local wikicode = frame:expandTemplate{ title = "inflection-table-top", args = { title = "Text allowlist", tall = "yes", }, } wikicode = wikicode .. "|-\n" wikicode = wikicode .. '! Code / family !! Languages' if #lang_codes > 0 then local lang_parts = {} for _, lang_code in ipairs(lang_codes) do if not is_etymology_only_lang(lang_code) then lang_parts[#lang_parts + 1] = wrap_lang_code(lang_code) end end if #lang_parts > 0 then wikicode = wikicode .. "\n|-\n" wikicode = wikicode .. "| '''Language codes''' || " .. table.concat(lang_parts, ", ") end end for _, family_code in ipairs(family_codes) do local codes = get_family_lang_codes(family_code) local lang_list if codes and #codes > 0 then local lang_parts = {} for _, code in ipairs(codes) do lang_parts[#lang_parts + 1] = wrap_lang_code(code) end lang_list = table.concat(lang_parts, ", ") else lang_list = "" end wikicode = wikicode .. "\n|-\n" wikicode = wikicode .. "| " .. wrap_family_code(family_code) .. " || " .. lang_list end wikicode = wikicode .. "\n" .. frame:expandTemplate({ title = "inflection-table-bottom" }) wikicode = wikicode .. "\n\nThe list is maintained in [[Module:etymon/data/text_allowed]]. Mode is <code>" .. (data.default_mode or "off") .. "</code> (<code>off</code> = disabled, <code>warn</code> = warning only, <code>error</code> = enforce)." return wikicode end return export 45rdv2lddvm4ozd9ml1ja360eusj2vh 235415 235414 2026-06-02T04:49:44Z Lee 19 [[:en:Module:etymon/doc]] වෙතින් එක් සංශෝධනයක් 235414 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { families = "Module:families", languages = "Module:languages", }, loadData = { text_allowed = "Module:etymon/data/text_allowed", }, }) function export.text_allowed_list(frame) local data = M.text_allowed or {} local langs = data.langs or {} local families = data.families or {} local lang_codes = {} for code in pairs(langs) do table.insert(lang_codes, code) end table.sort(lang_codes) local family_codes = {} for code in pairs(families) do table.insert(family_codes, code) end table.sort(family_codes) local function wrap_lang_code(lang_code) local lang_obj = M.languages.getByCode(lang_code, nil, true) local lang_name = lang_obj and lang_obj.getCanonicalName and lang_obj:getCanonicalName() if lang_name and lang_name ~= "" then return "<code>" .. lang_code .. "</code> <small>(" .. lang_name .. ")</small>" end return "<code>" .. lang_code .. "</code>" end local function wrap_family_code(family_code) local family_obj = M.families.getByCode(family_code) if not family_obj then return "<code>" .. family_code .. "</code>" end local family_name = family_obj.getCanonicalName and family_obj:getCanonicalName() if family_name and family_name ~= "" then return "<code>" .. family_code .. "</code> <small>(" .. family_name .. ")</small>" end return "<code>" .. family_code .. "</code>" end local function is_etymology_only_lang(lang_code) local lang_obj = M.languages.getByCode(lang_code, nil, true) return lang_obj and lang_obj.hasType and lang_obj:hasType("language", "etymology-only") end local function get_family_lang_codes(family_code) local family_obj = M.families.getByCode(family_code) if not family_obj or not family_obj.getDescendantCodes then return nil end local codes = family_obj:getDescendantCodes() if not codes or #codes == 0 then return nil end table.sort(codes) local out = {} for _, lang_code in ipairs(codes) do if not is_etymology_only_lang(lang_code) then out[#out + 1] = lang_code end end if #out == 0 then return nil end return out end local wikicode = frame:expandTemplate{ title = "inflection-table-top", args = { title = "Text allowlist", tall = "yes", }, } wikicode = wikicode .. "|-\n" wikicode = wikicode .. '! Code / family !! Languages' if #lang_codes > 0 then local lang_parts = {} for _, lang_code in ipairs(lang_codes) do if not is_etymology_only_lang(lang_code) then lang_parts[#lang_parts + 1] = wrap_lang_code(lang_code) end end if #lang_parts > 0 then wikicode = wikicode .. "\n|-\n" wikicode = wikicode .. "| '''Language codes''' || " .. table.concat(lang_parts, ", ") end end for _, family_code in ipairs(family_codes) do local codes = get_family_lang_codes(family_code) local lang_list if codes and #codes > 0 then local lang_parts = {} for _, code in ipairs(codes) do lang_parts[#lang_parts + 1] = wrap_lang_code(code) end lang_list = table.concat(lang_parts, ", ") else lang_list = "" end wikicode = wikicode .. "\n|-\n" wikicode = wikicode .. "| " .. wrap_family_code(family_code) .. " || " .. lang_list end wikicode = wikicode .. "\n" .. frame:expandTemplate({ title = "inflection-table-bottom" }) wikicode = wikicode .. "\n\nThe list is maintained in [[Module:etymon/data/text_allowed]]. Mode is <code>" .. (data.default_mode or "off") .. "</code> (<code>off</code> = disabled, <code>warn</code> = warning only, <code>error</code> = enforce)." return wikicode end return export 45rdv2lddvm4ozd9ml1ja360eusj2vh Module:etymon/data/text allowed 828 141303 235423 229742 2026-05-29T15:44:06Z en>स्वर्गसुख 0 235423 Scribunto text/plain --[=[ Languages and families that may use the {{etymon}} `text=` parameter (language-community consensus). ]=] return { -- Mode: "off" = disabled, "warn" = warn only, "error" = enforce. default_mode = "warn", langs = { ["bg"] = true, ["bnt-sab-pro"] = true, ["cs"] = true, ["en"] = true, ["eo"] = true, ["es"] = true, ["fa"] = true, ["hrx"] = true, ["hsb"] = true, ["iir-pro"] = true, ["jbo"] = true, ["jdt"] = true, ["la"] = true, ["mul"] = true, ["ota"] = true, ["ps"] = true, ["ro"] = true, ["sk"] = true, ["sw"] = true, ["tg"] = true, ["tl"] = true, ["tr"] = true, ["uk"] = true, ["uz"] = true, ["zlw-ocs"] = true, ["zlw-osk"] = true, ["zle-ono"] = true, }, families = { ["ber"] = true, -- Berber ["dra"] = true, -- Dravidian ["inc"] = true, -- Indo-Aryan ["iir-nur"] = true, -- Nuristani ["roa-gap"] = true, -- Galician-Portuguese ["sem-ara"] = true, -- Aramaic ["sem-arb"] = true, -- Arabic ["tup"] = true, -- Tupian ["zlw-lch"] = true, -- Lechitic ["mun"] = true, -- Munda }, } quxdi13v57pkh4cnbus9zevau2rvwwq 235424 235423 2026-06-02T04:53:35Z Lee 19 [[:en:Module:etymon/data/text_allowed]] වෙතින් එක් සංශෝධනයක් 235423 Scribunto text/plain --[=[ Languages and families that may use the {{etymon}} `text=` parameter (language-community consensus). ]=] return { -- Mode: "off" = disabled, "warn" = warn only, "error" = enforce. default_mode = "warn", langs = { ["bg"] = true, ["bnt-sab-pro"] = true, ["cs"] = true, ["en"] = true, ["eo"] = true, ["es"] = true, ["fa"] = true, ["hrx"] = true, ["hsb"] = true, ["iir-pro"] = true, ["jbo"] = true, ["jdt"] = true, ["la"] = true, ["mul"] = true, ["ota"] = true, ["ps"] = true, ["ro"] = true, ["sk"] = true, ["sw"] = true, ["tg"] = true, ["tl"] = true, ["tr"] = true, ["uk"] = true, ["uz"] = true, ["zlw-ocs"] = true, ["zlw-osk"] = true, ["zle-ono"] = true, }, families = { ["ber"] = true, -- Berber ["dra"] = true, -- Dravidian ["inc"] = true, -- Indo-Aryan ["iir-nur"] = true, -- Nuristani ["roa-gap"] = true, -- Galician-Portuguese ["sem-ara"] = true, -- Aramaic ["sem-arb"] = true, -- Arabic ["tup"] = true, -- Tupian ["zlw-lch"] = true, -- Lechitic ["mun"] = true, -- Munda }, } quxdi13v57pkh4cnbus9zevau2rvwwq power 0 142565 235474 232554 2026-06-02T11:04:27Z Lee 19 235474 wikitext text/x-wiki {{also|Power}} == ඉංග්‍රීසි == {{wp|lang=en}} === වෙනත් ආකාර === * {{alt|en|powre||obsolete}} === නිරුක්තිය === {{root|en|ine-pro|*h₁es-}} {{etymon|en|id=force|:inh|enm:power<id:force>|tree=1}} From {{inh|en|enm|power}}, {{m|enm|poer}}, from {{der|en|fro|poeir}}, from {{der|en|la-vul|posso|potēre}}, from {{der|en|la|possum|posse}}, whence {{m+|en|potent}}. Compare {{cog|fr|pouvoir}}. Displaced the native {{ncog|ang|anweald}}. === උච්චාරණය === * {{a|en|UK}} ** {{IPA|en|/ˈpaʊ̯ə̯/|/ˈpaʊ̯.ə/|a=RP}} *** {{IPA|en|[ˈpʰaə]|[ˈpʰaː]|[ˈpʰɑː]|a=triphthong smoothing}} ** {{IPA|en|/ˈpuː.ɐ/|a=Northumbria}} * {{IPA|en|/ˈpaʊ̯.ɚ/|/ˈpaʊ̯ɹ/|[ˈpʰaʊ̯ɚ]|[ˈpʰaʊ̯ɹ]|a=GenAm}} ** {{audio|en|en-us-power.ogg|a=US}} * {{IPA|en|/ˈpæʊ̯.ə/|[ˈpʰæʊ̯ə]|[ˈpæɔ̯ə]|[ˈpʰɛəː]|a=AU,NZ}} {{q|increasingly [[broad]]er}} * {{IPA|en|/ˈpaʊ̯.(ə)ɹ/|[p(ʰ)äʊ̯(ə)ɹ]|a=CA}} ** {{IPA|en|/ˈpʌʊ̯.(ə)ɹ/|[p(ʰ)əw(ə)ɹ]|a=dialectal}} * {{hyphenation|en|pow|er}} * {{rhymes|en|aʊ.ə(ɹ)|aʊə(ɹ)|s1=2}} === නාම පදය === {{en-noun|~}} # The [[ability]] to do or undergo something. #: {{ux|en|He has lost the '''power''' to speak.}} #* {{quote-journal|en|year=1950|month=September|title=Network News: Watford Tunnel, L.M.R.|journal=Railway Magazine|page=641|text=On June 8, 1872, the London & North Western Railway obtained '''powers''' to quadruple its main line, and a new tunnel was bored for the up and down slow lines.}} #* {{quote-book|en|year=2018|author=Marilyn McCord Adams|title=Horrendous Evils and the Goodness of God|page=74|passage=If it is spirits who have '''power''' to suffer, it seems they would also have active powers to think and will.}} # {{lb|en|social}} The [[ability]] to [[coercion|coerce]], [[influence]]{{,}} or [[control]]. #* {{quote-web|en|date=2022/03/08|title=Magistrate Yang Wen-ke Sends Female Staff in Hsinchu County Government Roses for Their Contributions|archiveurl=https://web.archive.org/web/20220719223009/https://www.hsinchu.gov.tw/en/News_Content.aspx?n=318&s=244007|archivedate=19 July 2022|work=HsinChu County Government|text=The proportion of female colleagues in the Hsinchu County Government and its affiliated units has reached 61%. “Women '''Power'''” is the power behind over half of the services provided by the county government.}} ## {{lb|en|countable}} The [[ability]] to [[affect]] or [[influence]]. ##: {{ux|en|the '''power''' of the written word}} ##* {{RQ:Fielding Tom Jones|III|ii|passage=An incident which happened about this time will set the characters of these two lads more fairly before the discerning reader than is in the '''power''' of the longest dissertation.}} ##* {{RQ:Fielding Tom Jones|III|iii|passage=Thwackum, on the contrary, maintained that the human mind, since the fall, was nothing but a sink of iniquity, till purified and redeemed by grace.{{...}}The favourite phrase of the former, was the natural beauty of virtue; that of the latter, was the divine '''power''' of grace.}} ##* {{quote-av|en|date=November 17, 1978|role=w:Carrie Fisher|title=w:The Star Wars Holiday Special|url=https://archive.org/details/TheStarWarsHolidaySpecial|genre=[[science fiction|Science Fiction]]|oclc=968745484|time=1:30:50|text=No matter how different we appear, we're all the same in our struggle against the '''powers''' of evil and darkness. I hope that this day will always be a day of joy in which we can reconfirm our dedication and our courage and more than anything else, our love for one another. This is the promise of the Tree of Life.}} ##* {{quote-book|en|year=1998|author=w:Eckhart Tolle|title=w:The Power of Now|passage=Past and future obviously have no reality of their own. Just as the moon has no light of its own, but can only reflect the light of the sun, so are past and future only pale reflections of the light, '''power''', and reality of the eternal present.}} ## The [[ability]] or [[authority]] to [[control]], [[govern]], [[command]], [[coerce]], etc., such as in a [[legal]], [[political]] or [[business]] sphere. ##: {{ux|en|He's nominally president, but he does not have any real '''power'''.}} ##* {{quote-book|en|year=1913|author=[[w:Robert Barr (writer)|Robert Barr]]|title=Lord Stranleigh Abroad|chapter=4|url=http://openlibrary.org/works/OL1796924W|passage=“{{...}} That woman is stark mad, Lord Stranleigh. Her own father recognised it when he bereft her of all '''power''' in the great business he founded.&nbsp;[&hellip;]”}} ##* {{quote-book|en|year=1949|author={{w|George Orwell}} [pseudonym; {{w|George Orwell}}]|title=w:Nineteen Eighty-Four|passage=The Party seeks '''power''' entirely for its own sake. We are not interested in the good of others; we are interested solely in '''power'''. Not wealth or luxury or long life or happiness: only '''power''', pure '''power'''. [...] We know that no one ever seizes '''power''' with the intention of relinquishing it. '''Power''' is not a means, it is an end. One does not establish a dictatorship in order to safeguard a revolution; one makes the revolution in order to establish the dictatorship. The object of persecution is persecution. The object of torture is torture. The object of '''power''' is '''power'''.}} ##* {{quote-journal|en|year=2005|journal=Columbia Law Review|month=April|passage=In the face of expanding federal '''power''', California in particular struggled to maintain control over its Chinese population.}} ##* {{quote-journal|en|date=2013-08-10|volume=408|issue=8848|magazine=w:The Economist|title=[http://www.economist.com/news/leaders/21583277-worlds-biggest-polluter-going-green-it-needs-speed-up-transition-can-china Can China clean up fast enough?]|passage=It has jailed environmental activists and is planning to limit the '''power''' of judicial oversight by handing a state-approved body a monopoly over bringing environmental lawsuits.}} ## {{lb|en|metonymically|chiefly|in the plural}} The people in charge of legal or political power, the government. ##: {{syn|en|powers that be}} ## {{lb|en|metonymically}} A strong or influential nation, company, or other such body. ##: {{ux|en|In the 19th century, Britain and France were major colonial '''powers'''.}} ##: {{ux|en|Britain is no longer the maritime '''power''' that it once was.}} ##* {{quote-journal|en|date=2013-08-16|author=[http://www.theguardian.com/profile/johnvidal John Vidal] |volume=189|issue=10|page=8|magazine=w:The Guardian Weekly|title=[http://www.theguardian.com/global-development/2013/aug/10/china-india-water-grab-dams-himalayas-danger Dams endanger ecology of Himalayas]| passage=Most of the Himalayan rivers have been relatively untouched by dams near their sources. Now the two great Asian '''powers''', India and China, are rushing to harness them as they cut through some of the world's deepest valleys.}} ## {{lb|en|metonymically|archaic}} An [[army]], a [[military]] [[force]]. ##* {{RQ:Holinshed Chronicles|passage=The threatning words of duke Robert comming at the last to king Henries eares, caused him foorthwith to conceiue verie sore displeasure against the duke, in so much that he sent ouer a '''power''' of men into Normandie, which finding no great resistance, did much hurt in the countrie, by fetching and carieng spoiles and preies.}} ##* {{RQ:Marlowe Tamburlaine|part=1|scene=i|page=29|passage=Then when our '''powers''' in points of ſwords are ioin’d<br>And cloſde in compaſſe of the killing bullet,<br>Though ſtraite the paſſage and the port be made,<br>That leads to Pallace of my brothers life,<br>Proud is his fortune if we pierce it not.}} # {{lb|en|physical|uncountable}} {{cap|strength}}, [[energy]]. ## [[physical|Physical]] [[force]] or [[strength]]. ##: {{ux|en|He needed a lot of '''power''' to hit the ball out of the stadium.}} ## {{lb|en|attributive}} {{n-g|Designating one who does something forcefully or on a large or grand scale.}} ##: {{usex|en|She's a '''power''' shopper; she knows all the best deals.}} ##: {{usex|en|This high-spec computer is ideal for '''power''' users.}} ## {{senseid|en|Q25342}} The production or flow of [[energy#English:_Q11379|energy]] providing means to do [[work#English:_Q42213|work]]; energy per [[time#English:_Q11471|time]] unit. ##: {{ux|en|The '''power''' to haul the train is supplied by two huge locomotives.}} ## {{senseid|en|electricity}} {{lb|en|specifically}} [[electricity|Electricity]] or a [[supply]] of electricity. ##: {{ux|en|After the pylons collapsed, this town was without '''power''' for a few days.}} ##* {{quote-book|en|year=1913|author=[[w:Robert Barr (writer)|Robert Barr]]|title=Lord Stranleigh Abroad|chapter=4|url=http://openlibrary.org/works/OL1796924W| passage=“My father had ideas about conservation long before the United States took it up.{{...}}You preserve water in times of flood and freshet to be used for '''power''' or for irrigation throughout the year. […]”}} ##* {{quote-journal|en|date=2013-07-20|volume=408|issue=8845|magazine=w:The Economist| title=[http://www.economist.com/news/http://www.economist.com/news/asia/21582043-villagers-enjoy-sunlight-after-dark-out-gloom Out of the gloom]| passage=[Rural solar plant] schemes are of little help to industry or other heavy users of electricity. Nor is solar '''power''' yet as cheap as the grid. For all that, the rapid arrival of electric light to Indian villages is long overdue. When the national grid suffers its next huge outage, as it did in July 2012 when hundreds of millions were left in the dark, look for specks of light in the villages.}} ## {{lb|en|physics}} The [[rate]] at which [[work]] is done or [[energy]] is [[transfer]]red, expressed in units of energy per unit of time. ##: {{ux|en|The kilowatt is a unit of '''power''', equivalent to 1,000 joules of energy per second.}} ## The [[strength]] by which a [[lens]] or [[mirror]] [[magnify|magnifies]] an [[optical]] [[image]]. ##: {{ux|en|We need a microscope with higher '''power'''.}} # {{senseid|en|a lot of}} {{lb|en|colloquial|dated|_|outside the phrase 'power of good'}} A large amount or number. #: {{coi|en|[[do a power of good|do a '''power''' of good]]}} #* {{quote-book|en|year=1872|author=w:Mark Twain|title=w:Roughing It|chapter=XLVII|passage=Don't you mind my snuffling a little—becuz we're in a '''power''' of trouble.}} #* {{quote-journal|en|journal=Everybody's Magazine|text=what a '''power''' of languages he knew|title=The White Arc|author=w:Henry Kitchell Webster|year=1918|number=Five|volume=XXXVIII}} #* {{quote-book|en|author=w:Dylan Thomas|text=All the other children are making a '''power''' of noise|title=Twenty Years a-Growing|genre=filmscript (unfinished)|year=1944/5|year_published=1964}} #* {{quote-book|en|title=Soldier of the Raj|page=161|author=William Magan|year=2002|passage="There'd be a '''power''' of horses down there on the parade ground, wouldn't there ?"}} #* {{quote-book|en|text=each word costing her a '''power''' of pain|title=Requiem for a Knave|author=Laura Carlin|year=2020}} # Any of the elementary forms or parts of machines: three primary (the lever, inclined plane, and pulley) and three secondary (the wheel-and-axle, wedge, and screw). #: {{coi|en|the mechanical '''powers'''}} # {{lb|en|trucking}} A [[tractor]]. #: {{ux|en|The set I'm making right now needs a '''power''' on it, but we don't have any tractors left in the yard.}} # {{lb|en|physics|mechanics}} A measure of the [[effectiveness]] that a force producing a physical [[effect]] has over time. If [[linear]], the quotient of: ([[force]] multiplied by the [[displacement]] of or in an object) ÷ time. If [[rotational]], the quotient of: ([[force]] multiplied by the [[angle]] of [[displacement]]) ÷ time. # {{lb|en|mathematics}} ## {{senseid|en|exp}}A [[product]] of [[equal]] [[factor]]s (and generalizations of this notion): <math>x^n</math>, read as "<math>x</math> to the power of <math>n</math>" or the like, is called a power and denotes the product <math>x \times x \times \cdots \times x</math>, where <math>x</math> appears <math>n</math> times in the product; <math>x</math> is called the [[base]] and <math>n</math> the [[exponent]]. ## {{lb|en|set theory}} [[cardinality|Cardinality]]. ## {{lb|en|statistics}} The [[probability]] that a statistical test will reject the [[null hypothesis]] when the alternative hypothesis is true. # {{lb|en|biblical|in plural}} In Christian [[angelology]], an [[intermediate]] level of [[angel]]s, ranked above [[archangel]]s, but exact position varies by classification scheme. # {{lb|en|quiz bowl}} A bonus point awarded for answering correctly before a certain part of the [[tossup]] is read. ==== සමාන පද ==== {{checksense|en}} {{col4|en|title=Terms synonymous with one or more senses of ''power'' (noun) |aptitude |arm |authority |capability |capacity |clout |command |competence |competency |control |dominion |energy |force |grip |hold |influence |main |mastery |might |muscle |potency |pull |sinew |strength |sway |vigor |wald |weight }} * See also [[Thesaurus:power]] ==== විරුද්ධ පද ==== * {{l|en|impotence}} * {{l|en|weakness}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col|en|powerlevel|broken power law|kilikili power |active power|earning power|earnings power|power button|power house|talk truth to power |agripower| power interruption|power outage|power-tripper |airpower|do the power of good|eye power|power puller |antipower |atomic power |auxiliary power unit |axiom of power set|power hammer|power hitting|power luncher|power lunching|power washing |Axis power |balance of power |Banzhaf power index |bargaining power |battery power| low-power|power rule|predictive power |biopower |bipower |black power |bottom power |brainpower|people power|power fantasy|power trowel |brown power |buying power |candle power|power shower|candlepower |civil power| light-collecting power|light-gathering power |clean power|Power Four |combined cycle power plant |come to power |cone of power |copower |corridors of power|A-B power|donkey power|power screw|protecting power|T-power |counterpower |cyberpower |dirty power |donkeypower |duckpower |effective radiated power |electropower |fire-power |firepower |firm power |Five Power Defence Arrangements |flower power|electric power transmission|power transmission line |formal power series |girl power |gray power |great power |grey power |ground power |gunpower |hard power |higher power |high-power |horsepower |horse-power |horse power |Hutu Power |hydroelectric power |hydropower |hyperpower |inherent power |in power |knowledge is power |labor power |labour power |lung power |lung-power |manpower |market power |micropower |middle power |military power |mindpower |more power to someone,more power to your elbow |more power to your arm |motive power |motive power depot |multipower |necropower |noise power |nonfirm power |nonpower |non-powerlike |nuclear power |nuclear power plant |nuclear power station |omnipower |optical power |perfect power |personpower |person-power |pester power |phantom power |Planck power |police power |poor power |powerable |power adapter |power adaptor |power alley |power animal |power assist |power-associative algebra |power balance |powerball |power ballad |powerband |power bank |powerbank |power bar |power base |power behind the throne |power board |powerboat |powerbomb |power bottom |power box |power breakfast |power brick |power-broker |power broker |powerbroking |power bump |power cable |power car |power center |power centre |power chain |powerchair |power charger |power chord |power clean |power cod |power coffee |power consumption |power cord |Power County |power couple |power creep |power cut |power cycle |power-cycle |power dissipation |power distance |power dive |power domain |power down |power-dressed |power dresser |power dressing |power drill |power dynamics |power egg,power-egg |power electronics |power equation |power excursion |power factor |power failure |power feminism |Power Five |power forward |powerful |power function |power gamer |power gap |power grab |power grid |power hand |power harrow |powerhead |power hitter |power hockey |powerholder |powerholding |power hour |powerhouse |power-hungry |power-intensive |power in the land |power inverter |powerish |powerism |powerist |power jam |power kerosene |power kite |power laces |powerlaw |power law |power lead |powerless |power level |powerlifter |powerlifting |powerlike |power-line |power-line communication |power line communication |powerline,power line |power loom |power lunch |power metal |power mic |power mike |power mod |powermonger |power move |power nap |power noise |power of appointment |power of attorney |power of suggestion |power of termination |power of the pencil |power of the purse |power of yet |poweroid |power-operated |power pack |power pill |power plant |powerplay,power play |power point |power pole |power-political |power politician |power politics |power pop |power posing |power projection |power rack |power satellite |power saw |power scaling |power series |power set |powersharing,power-sharing,power sharing |powershift |power shovel |powerslam |powerslash |power slide |power snack |powersome |power source |powersport |powersports |power spot |power station |power steering |powers that be |power strip |power stroke |power structure |power struggle |power suit |power supply |power surge |power take-off |power tap |power tie |power tiller |power to gas |power tool |power toothbrush |power top |power tower |power train |powertrain |power trio |power trip |power-tripping |powertrip,power-trip,power trip |power unit |power-up |power user |power vacuum |powerviolence |power walk |powerwalk |power-walk |power wall |power wash |powerwash |powerwasher |power wheel |power window |power word |powery |pulling power |purchasing power |purchasing power parity |Puretic power block |pussy power |reactive power |refractive power |regional power |relocatable power tap |residual power |resolving power |rest in power |running powers |sea power |seapower |sharp power |shore power |sleeping power |smart power |social power |soft power |solar power |spacepower |space power system |speak truth to power |specific power |spending power |split-phase power |statistical power |staying power |steam power |stopping power |storage power station |subpower |super power |superpower |technopower |thermal design power |thermopower |tidal power |to the power of |ultrapower |uninterruptible power source |uninterruptible power supply |unpower |warpower |water power |wave power |white power |will-power |will power |willpower |will to power |will-to-power |wind power |windpower |womanpower |world power }} ==== ආශ්‍රිත යෙදුම් ==== * {{l|en|possible}} * {{l|en|potent}} ====Collocations==== {{col-top|2|Adjectives often used with "power"}} * {{coi|en|electric, nuclear, optical, mechanical, political, absolute, corporate, institutional, military, economic, solar, magic, magical, huge, physical, mental, intellectual, emotional, spiritual, sexual, seductive, coercive, erotic, natural, cultural, positive, negative, etc.}} {{col-bottom}} ====Descendants==== * {{desc|de|Power|bor=1}} ==== අමතර අවධානයට ==== {{arithmetic operations}} === ක්‍රියා පදය === {{en-verb}} # {{lb|en|transitive}} To [[provide]] [[#Noun|power]] for (a [[mechanical]] or [[electronic]] [[device]]). #: {{ux|en|This CD player is '''powered''' by batteries.}} # {{lb|en|transitive}} To [[hit]] or [[kick]] something [[forcefully]]. #* {{quote-journal |en |date=February 1, 2011 |author=Mandeep Sanghera |title=Man Utd 3 - 1 Aston Villa |work=BBC |url=http://news.bbc.co.uk/sport2/hi/football/eng_prem/9379942.stm |page= |passage=United keeper Edwin van der Sar was the unlikely provider as his clearance found Rooney, who had got ahead of last defender Richard Dunne, and the forward brilliantly controlled a ball coming from over his shoulder before '''powering''' a shot past Brad Friedel.}} # To [[enable]] or provide the [[impetus]] for. #* {{quote-journal |en |date=April 6, 2017 |author=Samira Shackle |title=On the frontline with Karachi’s ambulance drivers |work=the Guardian |url=https://www.theguardian.com/world/2017/apr/06/on-the-frontline-with-karachis-ambulance-drivers |page= |passage=Abdul Sattar Edhi came to Karachi as a poor man from an Indian village in 1947. Starting with a small pharmacy tent, his work rapidly expanded, '''powered''' by donations from ordinary citizens.}} # {{lb|en|intransitive}} To [[move]] or [[advance]] with [[great]] [[force]] or [[speed]]. #* {{quote-journal|en|date=2019-01-16|title=Ashleigh Barty loses coach but wins latest Australian Open encounter|journal=w:The Guardian|url=https://www.theguardian.com/sport/2019/jan/16/ashleigh-barty-loses-coach-but-wins-latest-australian-open-encounter|passage=Playing with freedom and no fear, {{w|Ashleigh Barty}} has '''powered''' into the {{w|Australian Open}} third round without even a coach. Barty clubbed China’s {{w|Yafan Wang}} 6-2, 6-3 on Wednesday before revealing she had been largely flying solo during her charge to the last 32 for only the second time.}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col3|en |bepower |depower |empower |outpower |overpower |power ahead |power down |power off |power on |power through |power up |repower |unpower |underpower }} === නාම විශේෂණ පදය === {{en-adj}} # {{lb|en|Malaysia|Singapore|colloquial}} [[impressive|Impressive]]. #* {{quote-book|en|year=2001|author=Thian|title=Makan Time|url=http://www.makantime.com/indexmuslim.html |passage=Check out the '''POWER''' Mee Rebus & Lontong in this newly established Nasi Padang coffee shop at Market Street Carpark.}} #* {{quote-book|en|year=2005|author=Bayya|title=Bayya Eats ... and Other Stuff|url=http://crush-ice.blogspot.sg/2005/02/anugerah-planet-musik.html |passage=Their performance is very the '''Power'''!}} #* {{quote-book|en|year=2010|author=Caihong Lim; Kesheng Lim|title=Footprints All Over: Love, Happiness,Joy|url=http://footprintsallover.blogspot.sg/2010_03_01_archive.html |passage=His hokkien is damn '''power''' lah!}} #* {{quote-book|en|year=2015|author=SGMOJI|title=Your Ultimate Guide to Locally-Grown Emojis|url=http://www.sgmoji.com/sgmoji-guidebook.pdf|passage=Eh his soccer skills damn '''power''' one.|archiveurl=https://web.archive.org/web/20160304222113/http://www.sgmoji.com/sgmoji-guidebook.pdf|archivedate=4 March 2016}} === විශ්මයාර්ථ පදය === {{en-intj}} # {{lb|en|Philippines|colloquial}} {{n-g|Used as a [[cheer]] to express [[support]]}} {{rfv-sense|en|pls add attestations}} ==== අමතර අවධානයට ==== * {{l|en|more power to someone}} === වැඩිදුර් කියවීම සඳහා === * {{R:OneLook}} {{C|en|Physical quantities|Physics}} == ජර්මානු == === නිරුක්තිය 1 === {{bor+|de|fr|pauvre}}, from {{der|de|la|pauper}}. ==== උච්චාරණය ==== * {{IPA|de|/ˈpoːvər/|[ˈpoːvɐ]}} * {{hyph|de|po|wer}} ==== නාම විශේෂණ පදය ==== {{de-adj|comp}} # {{lb|de|regional|informal}} [[poor]], [[miserable]] ===== වරනැඟීම ===== {{de-adecl|comp}} === නිරුක්තිය 2 === ==== උච්චාරණය ==== * {{IPA|de|/ˈpaʊ̯ər/|[ˈpaʊ̯ɐ]}} * {{homophones|de|Power}} ==== ක්‍රියා පදය ==== {{head|de|verb form}} # {{verb form of|de|powern||s|imp}} # {{lb|de|colloquial}} {{verb form of|de|powern||1|s|pres}} === වැඩිදුර් කියවීම සඳහා === * {{R:de:Duden}} * {{R:de:DWDS}} == මධ්‍යකාලීන ඉංග්‍රීසි == === වෙනත් ආකාර === * {{alter|enm|poeir|poer|pouer|pouweer|pouwer|pouwere|powair|powere}} * {{alter|enm|poiar|pouoir|poure|powr|puere|puwer||Late ME}} === නිරුක්තිය === {{etymon|enm|id=force|:bor|xno:poer<ety:inh<fro:pooir>>}} {{bor+|enm|xno|poer}}, {{m|fro|poeir}}, {{m|fro|pouer}}, from {{der|enm|la-lat|posso|potēre}}, regularisation of {{der|enm|la|possum|posse}}. === උච්චාරණය === * {{IPA|enm|/puːˈɛːr/|/ˈpuː(ə)r/|/pɔːˈɛːr/|/ˈpɔː(ə)r/|q3=less common}} === නාම පදය === {{enm-noun|-}} # [[ability|Ability]], {{l|en|power}} or [[capability]]: ## A [[faculty]] in a {{gloss|[[particular]]}} [[area]]; the power to do {{gloss|[[something]]}}. ## [[efficacy|Efficacy]]; [[magnitude]] of an [[effect]] or [[ability]] in [[achieve|achieving]] it. ## [[physical|Physical]] [[ability]] or [[condition]]; [[might]], [[strength]]. ## [[wealth|Wealth]], [[means]]; [[financial]] power or [[resource]]s. ## The power of a [[deity]] or [[demon]] {{gloss|especially the [[Christian]] [[God]]}}. ## {{lb|enm|astrology}} The [[control]] [[exercise]]d by a [[planet]], [[star]], or [[constellation]]. # [[authority|Authority]], [[rule]]; the [[ability]] to [[govern]]: ## [[governmental|Governmental]] [[authority]] or [[control]]; [[dominion]]. ## Legally [[authorise]]d or [[delegate]]d power; [[permission]]. ## A [[powerful]] [[governmental]] [[position]], [[title]], or [[dignity]]. ## {{lb|enm|rare}} A [[ruler]] or their [[domain]]. # An [[army]] or [[host]]; a [[military]] [[force]]. # {{lb|enm|theology}} A {{l|en|power}} {{gloss|rank of angel}}. ====Descendants==== * {{desctree|en|power}} * {{desc|gmw-msc|power|powar}} ** {{desc|sco|pouer|pooer|pour|power}} * {{desc|cy|power|pŵer|bor=1}} ==== මූලාශ්‍ර ==== * {{R:MED Online|pǒuē̆r(e|n|MED34209}} {{C|enm|Government|Leaders|Money|Military|Mind|Religion|Theology}} toihulyzmnrq60ajnfx7n8j9r6gwh23 සාකච්ඡාව:තෙලදසුන 1 143840 235349 234629 2026-06-01T14:58:18Z Lee 19 /* blockquote යෙදීම */ Reply 235349 wikitext text/x-wiki == blockquote යෙදීම == @[[පරිශීලක:Lee|Lee]], මෙහි විකිපීඩියාවේ ඇති blockquote යෙදූ විට ලැබුණු ප්‍රතිඵලය බලන්න. වික්ෂනරියට සුදුසු පරිදි වෙනස් කර ගත හැකි ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 20 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], බලන්නම්. මට ටික කාලයක් දෙන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 07:52, 21 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], {{tl|bq}} අවශ්‍ය ප්‍රතිඵලය ලබා දෙනවා ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:58, 1 ජූනි 2026 (යූටීසී) dbr9imnsuk08pdkjmqjw5i4jzzhywxv 235440 235349 2026-06-02T10:32:09Z WrdSrchSi 3305 /* blockquote යෙදීම */ Reply 235440 wikitext text/x-wiki == blockquote යෙදීම == @[[පරිශීලක:Lee|Lee]], මෙහි විකිපීඩියාවේ ඇති blockquote යෙදූ විට ලැබුණු ප්‍රතිඵලය බලන්න. වික්ෂනරියට සුදුසු පරිදි වෙනස් කර ගත හැකි ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 20 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], බලන්නම්. මට ටික කාලයක් දෙන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 07:52, 21 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], {{tl|bq}} අවශ්‍ය ප්‍රතිඵලය ලබා දෙනවා ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:58, 1 ජූනි 2026 (යූටීසී) ::@[[පරිශීලක:Lee|Lee]]; ඔව්. එහි පහලින් දැක්වෙන උපුටාගැනීමේ මුලාශ්‍රය ගැන විස්තරය හරි නම් උඩට එන්න ඕනේ. පුලුවන්නම් හදන්න. ::තව මෙහෙම ක්‍රමයකුත් තියෙනවා. මේකටත් ෂෝ/හයිඩ් ගැටලුව එන්නේ නැහැ. ::# {{l|si|රූපවාහිනිය}}; {{l|en|television}} ::#:* {{quote-text|si|author=ඊලියන් ද සිල්වා|title=[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma4_Kalaba2.pdf ඉරු දෙවිය]|year=2507 වෙසක් 1963 මැයි|passage=ඉරු-ලප වසර 11.2 කට වරක් දිස්වෙන වග ද එසේ වූ විටැ පොළොවෙහි කාන්දම් පිටිය '''තෙලදසුන්''' ඈ කටයුතු අවුල් වියවුල් වී යන වග නම් දන්නේ මැ යි.}} ::[[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:32, 2 ජූනි 2026 (යූටීසී) 1mxraq8e4870vm7i439hti1twwrzis0 235446 235440 2026-06-02T10:36:15Z Lee 19 /* blockquote යෙදීම */ Reply 235446 wikitext text/x-wiki == blockquote යෙදීම == @[[පරිශීලක:Lee|Lee]], මෙහි විකිපීඩියාවේ ඇති blockquote යෙදූ විට ලැබුණු ප්‍රතිඵලය බලන්න. වික්ෂනරියට සුදුසු පරිදි වෙනස් කර ගත හැකි ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 20 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], බලන්නම්. මට ටික කාලයක් දෙන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 07:52, 21 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], {{tl|bq}} අවශ්‍ය ප්‍රතිඵලය ලබා දෙනවා ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:58, 1 ජූනි 2026 (යූටීසී) ::@[[පරිශීලක:Lee|Lee]]; ඔව්. එහි පහලින් දැක්වෙන උපුටාගැනීමේ මුලාශ්‍රය ගැන විස්තරය හරි නම් උඩට එන්න ඕනේ. පුලුවන්නම් හදන්න. ::තව මෙහෙම ක්‍රමයකුත් තියෙනවා. මේකටත් ෂෝ/හයිඩ් ගැටලුව එන්නේ නැහැ. ::# {{l|si|රූපවාහිනිය}}; {{l|en|television}} ::#:* {{quote-text|si|author=ඊලියන් ද සිල්වා|title=[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma4_Kalaba2.pdf ඉරු දෙවිය]|year=2507 වෙසක් 1963 මැයි|passage=ඉරු-ලප වසර 11.2 කට වරක් දිස්වෙන වග ද එසේ වූ විටැ පොළොවෙහි කාන්දම් පිටිය '''තෙලදසුන්''' ඈ කටයුතු අවුල් වියවුල් වී යන වග නම් දන්නේ මැ යි.}} ::[[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:32, 2 ජූනි 2026 (යූටීසී) :::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මේ තියෙන්නේ විකිපීඩියාවේ කේතය. ඊට වඩා සෑහෙන්න වෙනස් වාගේ වික්ශනරි භාවිතය. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 10:36, 2 ජූනි 2026 (යූටීසී) c5qxc4nmzdqqqegm2bim5jij0eupp38 235454 235446 2026-06-02T10:43:52Z WrdSrchSi 3305 /* blockquote යෙදීම */ Reply 235454 wikitext text/x-wiki == blockquote යෙදීම == @[[පරිශීලක:Lee|Lee]], මෙහි විකිපීඩියාවේ ඇති blockquote යෙදූ විට ලැබුණු ප්‍රතිඵලය බලන්න. වික්ෂනරියට සුදුසු පරිදි වෙනස් කර ගත හැකි ද? [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 16:52, 20 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], බලන්නම්. මට ටික කාලයක් දෙන්න. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 07:52, 21 මැයි 2026 (යූටීසී) :@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], {{tl|bq}} අවශ්‍ය ප්‍රතිඵලය ලබා දෙනවා ද? -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 14:58, 1 ජූනි 2026 (යූටීසී) ::@[[පරිශීලක:Lee|Lee]]; ඔව්. එහි පහලින් දැක්වෙන උපුටාගැනීමේ මුලාශ්‍රය ගැන විස්තරය හරි නම් උඩට එන්න ඕනේ. පුලුවන්නම් හදන්න. ::තව මෙහෙම ක්‍රමයකුත් තියෙනවා. මේකටත් ෂෝ/හයිඩ් ගැටලුව එන්නේ නැහැ. ::# {{l|si|රූපවාහිනිය}}; {{l|en|television}} ::#:* {{quote-text|si|author=ඊලියන් ද සිල්වා|title=[https://www.ahubudu.lk/assets/pdf/EDIYA_Veluma4_Kalaba2.pdf ඉරු දෙවිය]|year=2507 වෙසක් 1963 මැයි|passage=ඉරු-ලප වසර 11.2 කට වරක් දිස්වෙන වග ද එසේ වූ විටැ පොළොවෙහි කාන්දම් පිටිය '''තෙලදසුන්''' ඈ කටයුතු අවුල් වියවුල් වී යන වග නම් දන්නේ මැ යි.}} ::[[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:32, 2 ජූනි 2026 (යූටීසී) :::@[[පරිශීලක:WrdSrchSi|WrdSrchSi]], මේ තියෙන්නේ විකිපීඩියාවේ කේතය. ඊට වඩා සෑහෙන්න වෙනස් වාගේ වික්ශනරි භාවිතය. -- [[පරිශීලක:Lee|Lee]] ([[පරිශීලක සාකච්ඡාව:Lee|සාකච්ඡාව]]) 10:36, 2 ජූනි 2026 (යූටීසී) ::::@[[පරිශීලක:Lee|Lee]]; මා අලුතින් දැම්ම quote-text|si ක්‍රමයේ අකුරුවල ප්‍රමාණය උපුටාගැනීමට ගැලපෙන්නේ නැහැ වගේ. අර්ථකථනයට වඩා විශාල අකුරුවලින් එන්නේ. blockquote ක්‍රමය ඊට වඩා හොඳයි කියලා හිතෙනවා. [[පරිශීලක:WrdSrchSi|WrdSrchSi]] ([[පරිශීලක සාකච්ඡාව:WrdSrchSi|සාකච්ඡාව]]) 10:43, 2 ජූනි 2026 (යූටීසී) g8dzmkbsho39p7ef0u7fqx6tp2ip9ef minutes 0 144010 235400 235148 2026-06-02T04:37:16Z Lee 19 235400 wikitext text/x-wiki {{also|minutés|minūtes|minūtēs}} == ඉංග්‍රීසි == === උච්චාරණය === * {{IPA|en|/ˈmɪnɪts/}} * {{audio|en|en-us-minutes.ogg|a=US}} === නාම පදය === {{head|en|noun form}} # {{plural of|en|minute}} === නාම පදය === {{en-noun|p}} # රැස්වීමක තබා ගැනෙන නිල වාර්තා (The official notes kept during a meeting). #* {{quote-journal|en|date=14 Feb 81|volume=8|number=29|journal=w:Gay Community News|page=1|title=Retrial for PIE Defendants|author=Roger Moody|text=It was obvious from the prosecutions opening speech that they couldn't prove this intention on prima facie evidence: no letters, no '''minutes''', no witnesses to testify to a wicked burning of the midnight oil as the PIE executive endeavoured {{...}}}} #* {{quote-journal|en|url=https://www.theguardian.com/world/2020/nov/26/fugging-hell-tired-of-mockery-austrian-village-changes-name|date=November 26 2020|author=Philip Oltermann in Berlin|work=w:The Guardian|title=Fugging hell: tired of mockery, Austrian village changes name|text='''Minutes''' from a municipal council meeting published on Thursday showed that the village of about 100 people, 350km (215 miles) west of Vienna, will be named Fugging from 1 January 2021.|archiveurl=https://web.archive.org/web/20201130021605/https://www.theguardian.com/world/2020/nov/26/fugging-hell-tired-of-mockery-austrian-village-changes-name}} ==== පරිවර්තන ==== {{trans-top|the official notes kept during a meeting}} * Armenian: {{t+|hy|արձանագրություն}} * Belarusian: {{t|be|пратако́л|m}} * Bulgarian: {{t+|bg|протоко́л|m}} * Catalan: {{t+|ca|acta|f}} * Chinese: *: Mandarin: {{t+|cmn|記錄|tr=jìlù}}, {{t|cmn|[[會議]][[記錄]]|tr=huìyì jìlù}}, {{t+|cmn|紀要|tr=jìyào}}, {{t|cmn|會議紀要}} * Czech: {{t+|cs|protokol|m}}, {{t+|cs|zápis|m}} * Danish: {{t+|da|referat|n}}, {{t|da|mødereferat|n}} * Dutch: {{t+|nl|notulen|p}} * Esperanto: {{t|eo|protokolo}} * Faroese: {{t|fo|gerðabók|f}}, {{t|fo|fundarbók|f}} * Finnish: {{t+|fi|pöytäkirja}} * French: {{t+|fr|procès-verbal|m}} * Georgian: {{t|ka|პროტოკოლი}}, {{t|ka|ოქმი}} * German: {{t+|de|Protokoll|n}}, {{t+|de|Mitschrift|f}}, {{t+|de|Niederschrift|f}} * Greek: {{t+|el|πρακτικά|n-p}}, {{t+|el|πρωτόκολλο|n}} *: Ancient Greek: {{t|grc|ὑπόμνημα|n-p|alt=ὑπομνήματα}} * Hebrew: {{t+|he|פְּרוֹטוֹקוֹל|m|tr=protokól}} * Hungarian: {{t+|hu|jegyzőkönyv}} * Indonesian: {{t+|id|notula}}, {{t|id|notulensi}}, {{t+|id|notulen}}, {{t|id|catatan rapat}} * Irish: {{t|ga|miontuairisc|f-p|alt=miontuairiscí}} * Italian: {{t+|it|verbale}}, {{t|it|processo verbale}} * Japanese: {{t|ja|会議録|tr=かいぎろく, kaigiroku}}, {{t+|ja|議事録|tr=ぎじろく, gijiroku}} * Kazakh: {{t|kk|хаттама}} * Korean: {{t+|ko|회의록(會議錄)}}, {{t+|ko|의사록(議事錄)}} * Kyrgyz: {{t|ky|протокол}} * Macedonian: {{t|mk|протокол|m}} * Mongolian: *: Cyrillic: {{t+|mn|протокол}} * Norwegian: *: Bokmål: {{t+|nb|referat|n}}, {{t|nb|protokoll|m}} * Polish: {{t+|pl|protokół|m}} * Portuguese: {{t+|pt|ata|f}} * Russian: {{t+|ru|протоко́л|m}} * Serbo-Croatian: *: Cyrillic: {{t|sh|за́писнӣк|m}}, {{t|sh|про̏токол|m}}, {{t-check|sh|службена zabileška|f}}, {{t-check|sh|службена забиљешка|f}} *: Latin: {{t+|sh|zápisnīk|m}}, {{t+|sh|prȍtokol|m}}, {{t-check|sh|službena забилешка|f}}, {{t-check|sh|službena zabilješka|f}} * Slovak: {{t|sk|protokol|m}}, {{t|sk|zápis|m}}, {{t|sk|zápisnica|f}} * Slovene: {{t|sl|zapisnik|m}} * Spanish: {{t+|es|acta}} * Swahili: {{t|sw|kumbukumbu za mkutano}} * Swedish: {{t+|sv|minnesanteckning|c}}, {{t+|sv|protokoll|n}} * Tagalog: {{t+|tl|akta}}, {{t+|tl|tala}} * Turkish: {{t+|tr|tutanak}} *: Ottoman Turkish: {{t|ota|جریده|tr=ceride}} * Ukrainian: {{t+|uk|протоко́л|m}} * Uzbek: {{t+|uz|protokol}} {{trans-bottom}} === ක්‍රියා පදය === {{head|en|verb form}} # {{infl of|en|minute||s-verb-form}} == ප්‍රංශ == === උච්චාරණය === * {{fr-IPA|mi.nutt}} * {{audio|fr|LL-Q150 (fra)-0x010C-minutes.wav}} * {{audio|fr|LL-Q150 (fra)-DenisdeShawi-minutes.wav|a=<<Canada>> (<<Shawinigan>>)}} * {{audio|fr|LL-Q150 (fra)-Mecanautes-minutes.wav|a=France}} === නාම පදය === {{head|fr|noun form|g=f}} # {{plural of|fr|minute}} === ක්‍රියා පදය === {{head|fr|verb form}} # {{inflection of|fr|minuter||2|s|pres|ind//sub}} ==Lithuanian== === උච්චාරණය === {{lt-pr|minutès}} === නාම පදය === {{head|lt|noun form}} # {{inflection of|lt|minutė||acc|pl}} == පෘතුගීසි == === ක්‍රියා පදය === {{head|pt|verb form}} # {{pt-verb form of|minutar}} izu9jac01j2tqy85xh56sgnp83tzsqv ප්‍රවර්ගය:en:Mathematics 14 144041 235275 235211 2026-06-01T13:24:21Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235275 wikitext text/x-wiki {{category redirect|en:ගණිතය}} fk9o5hx42knyaafyvkgceiv3me8z22e ප්‍රවර්ගය:Mathematics 14 144042 235276 235214 2026-06-01T13:24:31Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235276 wikitext text/x-wiki {{category redirect|ගණිතය}} 28rvs3xrlok4k9cjcp12xkcy4pcv0p0 ප්‍රවර්ගය:si:Mathematics 14 144043 235277 235216 2026-06-01T13:24:41Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235277 wikitext text/x-wiki {{category redirect|si:ගණිතය}} 893r4933vvvdua4nzpd2kq3t4qby3sk ප්‍රවර්ගය:ඉංග්‍රීසි අභාවයට ගිය රූපාකාර 14 144060 235257 2022-06-20T05:04:16Z en>WingerBot 0 use {{auto cat}}, remove extraneous {{catfix}}/TOC templates (manually assisted) 235257 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235258 235257 2026-06-01T12:05:40Z Lee 19 [[:en:Category:English_obsolete_forms]] වෙතින් එක් සංශෝධනයක් 235257 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235261 235258 2026-06-01T12:07:03Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English obsolete forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete forms]] වෙත පිටුව ගෙන යන ලදී 235257 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235269 235261 2026-06-01T12:20:55Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235257 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235333 235269 2026-06-01T14:27:50Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete රූපාකාර]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි අභාවයට ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235257 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:ඉංග්‍රීසි obsolete terms 14 144061 235259 2024-04-10T20:56:26Z en>Quercus solaris 0 235259 wikitext text/x-wiki {{auto cat}} {{also|[[Wiktionary:Forms and spellings#Obsolete forms|Wiktionary:Forms and spellings § Obsolete forms]]}} {{also|[[Wiktionary:Obsolete and archaic terms|Wiktionary:Obsolete and archaic terms]]}} {{also|[[Appendix:Glossary#obsolete|Appendix:Glossary s.v. obsolete]]}} ceerkq331n68wlgeiss5shj8gh6gus9 235260 235259 2026-06-01T12:06:07Z Lee 19 [[:en:Category:English_obsolete_terms]] වෙතින් එක් සංශෝධනයක් 235259 wikitext text/x-wiki {{auto cat}} {{also|[[Wiktionary:Forms and spellings#Obsolete forms|Wiktionary:Forms and spellings § Obsolete forms]]}} {{also|[[Wiktionary:Obsolete and archaic terms|Wiktionary:Obsolete and archaic terms]]}} {{also|[[Appendix:Glossary#obsolete|Appendix:Glossary s.v. obsolete]]}} ceerkq331n68wlgeiss5shj8gh6gus9 235263 235260 2026-06-01T12:07:25Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English obsolete terms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete terms]] වෙත පිටුව ගෙන යන ලදී 235259 wikitext text/x-wiki {{auto cat}} {{also|[[Wiktionary:Forms and spellings#Obsolete forms|Wiktionary:Forms and spellings § Obsolete forms]]}} {{also|[[Wiktionary:Obsolete and archaic terms|Wiktionary:Obsolete and archaic terms]]}} {{also|[[Appendix:Glossary#obsolete|Appendix:Glossary s.v. obsolete]]}} ceerkq331n68wlgeiss5shj8gh6gus9 ප්‍රවර්ගය:English obsolete forms 14 144062 235262 2026-06-01T12:07:04Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English obsolete forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete forms]] වෙත පිටුව ගෙන යන ලදී 235262 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි obsolete forms]] 81k4p62nc7nqhoxtq0o74q9yr9x1jxk 235278 235262 2026-06-01T13:24:51Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235278 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි obsolete forms}} esm6nqq4bw1mye3jsdsl606z5hk6l2p ප්‍රවර්ගය:English obsolete terms 14 144063 235264 2026-06-01T12:07:26Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English obsolete terms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete terms]] වෙත පිටුව ගෙන යන ලදී 235264 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි obsolete terms]] q16138xvjmphvcgo9kzqh7hcemrxhna 235279 235264 2026-06-01T13:25:01Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235279 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි obsolete terms}} dz0xm8gx6x82y3i3eg5md0yovwvjgra ප්‍රවර්ගය:ඉංග්‍රීසි obsolete forms 14 144064 235270 2026-06-01T12:20:56Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235270 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි obsolete රූපාකාර]] ikzyldsk6mci4g6m7o38dxdvcs3e9gw 235280 235270 2026-06-01T13:25:11Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235280 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි obsolete රූපාකාර}} 0nvw5b468sn2wh4z32wsdh4eec6f25n ප්‍රවර්ගය:ඉංග්‍රීසි archaic terms 14 144065 235271 2024-04-10T20:57:56Z en>Quercus solaris 0 235271 wikitext text/x-wiki {{auto cat}} {{also|[[Wiktionary:Obsolete and archaic terms|Wiktionary:Obsolete and archaic terms]]}} {{also|[[Appendix:Glossary#archaic|Appendix:Glossary s.v. archaic]]}} 6ad4em183rzib782r1q6sgqqiz11iv5 235272 235271 2026-06-01T12:30:25Z Lee 19 [[:en:Category:English_archaic_terms]] වෙතින් එක් සංශෝධනයක් 235271 wikitext text/x-wiki {{auto cat}} {{also|[[Wiktionary:Obsolete and archaic terms|Wiktionary:Obsolete and archaic terms]]}} {{also|[[Appendix:Glossary#archaic|Appendix:Glossary s.v. archaic]]}} 6ad4em183rzib782r1q6sgqqiz11iv5 235273 235272 2026-06-01T12:30:59Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English archaic terms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic terms]] වෙත පිටුව ගෙන යන ලදී 235271 wikitext text/x-wiki {{auto cat}} {{also|[[Wiktionary:Obsolete and archaic terms|Wiktionary:Obsolete and archaic terms]]}} {{also|[[Appendix:Glossary#archaic|Appendix:Glossary s.v. archaic]]}} 6ad4em183rzib782r1q6sgqqiz11iv5 ප්‍රවර්ගය:English archaic terms 14 144066 235274 2026-06-01T12:31:00Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English archaic terms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic terms]] වෙත පිටුව ගෙන යන ලදී 235274 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි archaic terms]] 1oo3dictctd8x5mjxbn47iry44u5k4l 235281 235274 2026-06-01T13:25:21Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235281 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි archaic terms}} aor83kuwludhqiya7ouszm71oi5s3in ප්‍රවර්ගය:ඉංග්‍රීසි පෞරාණික රූපාකාර 14 144067 235282 2022-06-15T20:58:27Z en>Dpleibovitz 0 {{auto cat}} 235282 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235283 235282 2026-06-01T13:55:48Z Lee 19 [[:en:Category:English_archaic_forms]] වෙතින් එක් සංශෝධනයක් 235282 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235284 235283 2026-06-01T13:56:41Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English archaic forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms]] වෙත පිටුව ගෙන යන ලදී 235282 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235286 235284 2026-06-01T13:57:08Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235282 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235288 235286 2026-06-01T13:58:14Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic රූපාකාර]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි පෞරාණික රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235282 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:English archaic forms 14 144068 235285 2026-06-01T13:56:41Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English archaic forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms]] වෙත පිටුව ගෙන යන ලදී 235285 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms]] 5g8yq1sqvoxs998jerfdw7e1el855th 235359 235285 2026-06-01T15:17:52Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235359 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි archaic forms}} a7adxfar2h7fpcpxyrz27jrnxtpul0f ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms 14 144069 235287 2026-06-01T13:57:09Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235287 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි archaic රූපාකාර]] h0tk4qsw812c6139czt72a4em6hgdhu 235360 235287 2026-06-01T15:18:02Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235360 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි archaic රූපාකාර}} l6k0on41emxtiw2t2jpot3eyq61fdi8 ප්‍රවර්ගය:ඉංග්‍රීසි archaic රූපාකාර 14 144070 235289 2026-06-01T13:58:15Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි archaic රූපාකාර]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි පෞරාණික රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235289 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි පෞරාණික රූපාකාර]] hh7dc3avjx1a7vuj4mnj8lkyzactdzk 235361 235289 2026-06-01T15:18:12Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235361 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි පෞරාණික රූපාකාර}} naxjz3om51nxe6pg1cbskra6g6srf79 ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, archaic අරුත් සහිත 14 144071 235291 2026-06-01T14:00:14Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, archaic අරුත් සහිත]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, පෞරාණික අරුත් සහිත]] වෙත පිටුව ගෙන යන ලදී 235291 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, පෞරාණික අරුත් සහිත]] iu36lzot8pcswk1h7mza9103lsltyi1 235362 235291 2026-06-01T15:18:22Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235362 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යෙදුම්, පෞරාණික අරුත් සහිත}} tds1vhxtbq039b1x0lfueuv1l2mw5y7 ප්‍රවර්ගය:ඉංග්‍රීසි යල් පැන ගිය රූපාකාර 14 144072 235292 2022-06-20T05:50:50Z en>WingerBot 0 use {{auto cat}}, remove extraneous {{catfix}}/TOC templates (manually assisted) 235292 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235293 235292 2026-06-01T14:04:51Z Lee 19 [[:en:Category:English_dated_forms]] වෙතින් එක් සංශෝධනයක් 235292 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235294 235293 2026-06-01T14:06:26Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English dated forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි dated forms]] වෙත පිටුව ගෙන යන ලදී 235292 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235296 235294 2026-06-01T14:06:43Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි dated forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි dated රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235292 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235298 235296 2026-06-01T14:08:00Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි dated රූපාකාර]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යල් පැන ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235292 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:English dated forms 14 144073 235295 2026-06-01T14:06:26Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:English dated forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි dated forms]] වෙත පිටුව ගෙන යන ලදී 235295 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි dated forms]] hbnezgmhhbtipy6fw0e56pzgm9cj8rl 235363 235295 2026-06-01T15:18:32Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235363 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි dated forms}} d38obpq7cljfe8d5836f6nzcff7964v ප්‍රවර්ගය:ඉංග්‍රීසි dated forms 14 144074 235297 2026-06-01T14:06:44Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි dated forms]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි dated රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235297 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි dated රූපාකාර]] m8cwjguuqsi6ycn23pzppg9jkcflbt9 235364 235297 2026-06-01T15:18:42Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235364 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි dated රූපාකාර}} 6mipao8bixrtgg3ilemnw5wuyz05bvz ප්‍රවර්ගය:ඉංග්‍රීසි dated රූපාකාර 14 144075 235299 2026-06-01T14:08:00Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි dated රූපාකාර]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යල් පැන ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235299 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි යල් පැන ගිය රූපාකාර]] pqe9i58ugi86u5frfxyph2kud80jbci 235365 235299 2026-06-01T15:18:52Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235365 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යල් පැන ගිය රූපාකාර}} fmf1bf96j9v8zbwsmupvtk12t924ywh ප්‍රවර්ගය:භාෂාව අනුව යල් පැන ගිය රූපාකාර 14 144077 235300 2022-06-20T05:33:08Z en>WingerBot 0 use {{auto cat}}, remove extraneous {{catfix}}/TOC templates (manually assisted) 235300 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235301 235300 2026-06-01T14:08:56Z Lee 19 [[:en:Category:Dated_forms_by_language]] වෙතින් එක් සංශෝධනයක් 235300 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235302 235301 2026-06-01T14:09:40Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Dated forms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Dated forms]] වෙත පිටුව ගෙන යන ලදී 235300 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235304 235302 2026-06-01T14:10:00Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Dated forms]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Dated රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235300 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235306 235304 2026-06-01T14:10:39Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Dated රූපාකාර]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව යල් පැන ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235300 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:Dated forms by language 14 144078 235303 2026-06-01T14:09:40Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Dated forms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Dated forms]] වෙත පිටුව ගෙන යන ලදී 235303 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Dated forms]] ao1v9x9ebc8qh2966hrbht8f2dsl5gx 235366 235303 2026-06-01T15:19:02Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235366 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Dated forms}} 1gl6k9lha659c5ik0rq0k8ujxljtob5 ප්‍රවර්ගය:භාෂාව අනුව Dated forms 14 144079 235305 2026-06-01T14:10:00Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Dated forms]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Dated රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235305 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Dated රූපාකාර]] kwg84f87gs4kdrt81jv2p7m9qtzm4xz 235367 235305 2026-06-01T15:19:12Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235367 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Dated රූපාකාර}} 1circ3yods2bp26o35ceifzonb766hj ප්‍රවර්ගය:භාෂාව අනුව Dated රූපාකාර 14 144080 235307 2026-06-01T14:10:39Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Dated රූපාකාර]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව යල් පැන ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235307 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව යල් පැන ගිය රූපාකාර]] t0hwwafoqoxh118cl4bhw1yvdg3kf3i 235368 235307 2026-06-01T15:19:22Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235368 wikitext text/x-wiki {{category redirect|භාෂාව අනුව යල් පැන ගිය රූපාකාර}} fpgcsb801g8j5cmmmn6jcvxu0qv8n0q ප්‍රවර්ගය:භාෂාව අනුව පෞරාණික රූපාකාර 14 144081 235308 2021-08-22T22:59:59Z en>Dpleibovitz 0 {{auto cat}} 235308 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235309 235308 2026-06-01T14:11:14Z Lee 19 [[:en:Category:Archaic_forms_by_language]] වෙතින් එක් සංශෝධනයක් 235308 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235310 235309 2026-06-01T14:11:50Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Archaic forms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Archaic forms]] වෙත පිටුව ගෙන යන ලදී 235308 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235312 235310 2026-06-01T14:12:09Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Archaic forms]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Archaic රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235308 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235314 235312 2026-06-01T14:12:43Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Archaic රූපාකාර]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව පෞරාණික රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235308 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:Archaic forms by language 14 144082 235311 2026-06-01T14:11:50Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Archaic forms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Archaic forms]] වෙත පිටුව ගෙන යන ලදී 235311 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Archaic forms]] 16sgqib3xbbz0duxoap19ovuv7twj05 235369 235311 2026-06-01T15:19:32Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235369 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Archaic forms}} 5xwyhgr3f5ajd19igk4fw886afhocy9 ප්‍රවර්ගය:භාෂාව අනුව Archaic forms 14 144083 235313 2026-06-01T14:12:09Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Archaic forms]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Archaic රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235313 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Archaic රූපාකාර]] s0to1tonl9hq7dblqb9hynl4wbjjwu9 235370 235313 2026-06-01T15:19:42Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235370 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Archaic රූපාකාර}} cb9ccqbql8x6ykqz7oaai7p9b45nydg ප්‍රවර්ගය:භාෂාව අනුව Archaic රූපාකාර 14 144084 235315 2026-06-01T14:12:44Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Archaic රූපාකාර]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව පෞරාණික රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235315 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව පෞරාණික රූපාකාර]] f32vk8sjt9b32zprzutpw83ilxuk9u8 235371 235315 2026-06-01T15:19:52Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235371 wikitext text/x-wiki {{category redirect|භාෂාව අනුව පෞරාණික රූපාකාර}} 3322igf52xfk5yv4c13oizn20mv6ezx ප්‍රවර්ගය:භාෂාව අනුව Obsolete terms 14 144085 235316 2022-06-20T05:23:16Z en>WingerBot 0 use {{auto cat}}, remove extraneous {{catfix}}/TOC templates (manually assisted) 235316 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235317 235316 2026-06-01T14:13:30Z Lee 19 [[:en:Category:Obsolete_terms_by_language]] වෙතින් එක් සංශෝධනයක් 235316 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235318 235317 2026-06-01T14:14:15Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Obsolete terms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete terms]] වෙත පිටුව ගෙන යන ලදී 235316 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:Obsolete terms by language 14 144086 235319 2026-06-01T14:14:16Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Obsolete terms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete terms]] වෙත පිටුව ගෙන යන ලදී 235319 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Obsolete terms]] g54xvhjir5urpvymwmz2tw38m2jc1yj 235372 235319 2026-06-01T15:20:02Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235372 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Obsolete terms}} 6lt7vbhts7uv2zv02avjn1kknaemhe8 ප්‍රවර්ගය:භාෂාව අනුව Archaic terms 14 144087 235320 2021-08-22T23:01:57Z en>Dpleibovitz 0 {{auto cat}} 235320 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235321 235320 2026-06-01T14:17:33Z Lee 19 [[:en:Category:Archaic_terms_by_language]] වෙතින් එක් සංශෝධනයක් 235320 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235322 235321 2026-06-01T14:18:12Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Archaic terms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Archaic terms]] වෙත පිටුව ගෙන යන ලදී 235320 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:Archaic terms by language 14 144088 235323 2026-06-01T14:18:13Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Archaic terms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Archaic terms]] වෙත පිටුව ගෙන යන ලදී 235323 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Archaic terms]] 6sxfkymbbgawxnaz1v0yeogq9yxxb11 235373 235323 2026-06-01T15:20:12Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235373 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Archaic terms}} 18woledv14yrm1xu95rghal4bbfkzsr ප්‍රවර්ගය:භාෂාව අනුව Dated terms 14 144089 235324 2022-06-20T05:22:59Z en>WingerBot 0 use {{auto cat}}, remove extraneous {{catfix}}/TOC templates (manually assisted) 235324 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235325 235324 2026-06-01T14:18:46Z Lee 19 [[:en:Category:Dated_terms_by_language]] වෙතින් එක් සංශෝධනයක් 235324 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235326 235325 2026-06-01T14:19:40Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Dated terms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Dated terms]] වෙත පිටුව ගෙන යන ලදී 235324 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ප්‍රවර්ගය:Dated terms by language 14 144090 235327 2026-06-01T14:19:41Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:Dated terms by language]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Dated terms]] වෙත පිටුව ගෙන යන ලදී 235327 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Dated terms]] 3o2oxaf1wefdarmk7e8nr73iunk97vp 235374 235327 2026-06-01T15:20:22Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235374 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Dated terms}} o515ze6vw99z5jzd4qnlpjgchrwxbgt ප්‍රවර්ගය:භාෂාව අනුව Obsolete forms 14 144091 235329 2026-06-01T14:21:44Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete forms]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235329 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව Obsolete රූපාකාර]] 6azgya5orhdif0bn7y9h6pijk5pp4dp 235375 235329 2026-06-01T15:20:32Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235375 wikitext text/x-wiki {{category redirect|භාෂාව අනුව Obsolete රූපාකාර}} bsborwhm2kw4e0wjfouputbp167bvef ප්‍රවර්ගය:භාෂාව අනුව Obsolete රූපාකාර 14 144092 235332 2026-06-01T14:27:06Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:භාෂාව අනුව Obsolete රූපාකාර]] සිට [[ප්‍රවර්ගය:භාෂාව අනුව අභාවයට ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235332 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:භාෂාව අනුව අභාවයට ගිය රූපාකාර]] 2b5mzkq0lxau1xscn9pjpxk54dff092 235376 235332 2026-06-01T15:20:42Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235376 wikitext text/x-wiki {{category redirect|භාෂාව අනුව අභාවයට ගිය රූපාකාර}} sy0de7800hnv3htdhw9lasy5zcb523m ප්‍රවර්ගය:ඉංග්‍රීසි obsolete රූපාකාර 14 144093 235334 2026-06-01T14:27:51Z Lee 19 Lee විසින් [[ප්‍රවර්ගය:ඉංග්‍රීසි obsolete රූපාකාර]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි අභාවයට ගිය රූපාකාර]] වෙත පිටුව ගෙන යන ලදී 235334 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි අභාවයට ගිය රූපාකාර]] qji9vrlij0h56aplmsoa5kswozobca6 235377 235334 2026-06-01T15:20:52Z Pinthura 2424 රොබෝ: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම 235377 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි අභාවයට ගිය රූපාකාර}} q8al66rvo17xnsscg3lokreya61lj0q වික්ෂනරි:Requested entries (English) 4 144094 235336 2026-06-01T14:29:41Z Lee 19 Lee විසින් [[වික්ෂනරි:Requested entries (English)]] සිට [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] වෙත පිටුව ගෙන යන ලදී 235336 wikitext text/x-wiki #යළියොමුව [[වික්ෂනරි:Requested entries (ඉංග්‍රීසි)]] fzli65cqprjje2el55z5ywuzz7j4gz0 අභාවයට ගිය 0 144095 235338 2026-06-01T14:34:23Z Lee 19 '== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම විශේෂණ පදය === {{si-adj}} # {{rfdef|si}} ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|obsolete}} {{trans-bottom}} <!-- === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} -->' යොදමින් නව පිටුවක් තනන ලදි 235338 wikitext text/x-wiki == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම විශේෂණ පදය === {{si-adj}} # {{rfdef|si}} ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|obsolete}} {{trans-bottom}} <!-- === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} --> 0dqodztbi1c2qrii4bo31w6w26ifh0m ප්‍රවර්ගය:Pages with 16 entries 14 144096 235342 2024-08-12T13:55:47Z en>Theknightwho 0 Created page with "{{auto cat}}" 235342 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235343 235342 2026-06-01T14:44:56Z Lee 19 [[:en:Category:Pages_with_16_entries]] වෙතින් එක් සංශෝධනයක් 235342 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx සැකිල්ල:bq 10 144097 235344 2026-06-01T14:48:58Z Lee 19 https://en.wikipedia.org/w/index.php?title=Template:Blockquote&oldid=1317335651 235344 wikitext text/x-wiki <templatestyles src="Template:Blockquote/styles.css" /><!-- --><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{multiline|}}}|<nowiki /><!-- See talk page in 2025 for why this newline needs to be here --> </blockquote>|</blockquote>}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}| <div class="templatequotecite"><p style="display: inline; padding-left: 2.3em;">—&#8202;{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in&#32;}}{{Comma separated entries | {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}} | {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}} | {{if empty|{{{source|}}}|{{{4|}}}}} }}</p></div>}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using Blockquote template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Blockquote]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}<noinclude> {{documentation}}<!--Add categories to the /doc subpage, not here! --> </noinclude> g7n7pv15tnzl05fx3i60b1fldxyxojx 235345 235344 2026-06-01T14:49:58Z Lee 19 235345 wikitext text/x-wiki <templatestyles src="Template:bq/styles.css" /><!-- --><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{multiline|}}}|<nowiki /><!-- See talk page in 2025 for why this newline needs to be here --> </blockquote>|</blockquote>}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}| <div class="templatequotecite"><p style="display: inline; padding-left: 2.3em;">—&#8202;{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in&#32;}}{{Comma separated entries | {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}} | {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}} | {{if empty|{{{source|}}}|{{{4|}}}}} }}</p></div>}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using bq template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:bq]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}<noinclude> {{documentation}}<!--Add categories to the /doc subpage, not here! --> </noinclude> eeualfpzuuedw7iuohewo9xfyw97v0o 235347 235345 2026-06-01T14:52:22Z Lee 19 235347 wikitext text/x-wiki <templatestyles src="Template:bq/styles.css" /><!-- --><blockquote class="templatequote {{{class|}}}" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{content|{{{quotetext|{{{quote|{{{1|<includeonly>{{error|Error: No text given for quotation (or equals sign used in the actual argument to an unnamed parameter)}}{{main other|[[Category:Pages incorrectly using the quote template]]}}</includeonly><noinclude>{{lorem ipsum}}</noinclude>}}}}}}}}}}}}}}}{{#if:{{{multiline|}}}|<nowiki /><!-- See talk page in 2025 for why this newline needs to be here --> </blockquote>|</blockquote>}}{{#if:{{{sign|}}}{{{cite|}}}{{{author|}}}{{{by|}}}{{{personquoted|}}}{{{source|}}}{{{ts|}}}{{{title|}}}{{{publication|}}}{{{quotesource|}}}{{{char|}}}{{{character|}}}{{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}| <div class="templatequotecite"><p style="display: inline; padding-left: 2.3em;">—&#8202;{{#if:{{{char|{{{character|{{{5|}}}}}}}}}|{{{char|{{{character|{{{5|}}}}}}}}}, in&#32;}}{{Comma separated entries | {{if empty|{{{sign|}}}|{{{cite|}}}|{{{author|}}}|{{{by|}}}|{{{personquoted|}}}|{{{2|}}}}} | {{if empty|{{{title|}}}|{{{publication|}}}|{{{ts|}}}|{{{quotesource|}}}|{{{3|}}}}} | {{if empty|{{{source|}}}|{{{4|}}}}} }}</p></div>}}<!-- {{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using bq template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:bq]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | 4 | 5 | author | by | char | character | cite | class | content | multiline | personquoted | publication | quote | quotesource | quotetext | sign | source | style | text | title | ts }}--><noinclude> {{documentation}}<!--Add categories to the /doc subpage, not here! --> </noinclude> jwgssuo9fdr9s2hk2g7zhqclfmjam5d සැකිල්ල:bq/styles.css 10 144098 235346 2026-06-01T14:50:41Z Lee 19 https://en.wikipedia.org/w/index.php?title=Template:Blockquote/styles.css&oldid=1244412712 235346 sanitized-css text/css /* {{pp-template}} */ .templatequote { overflow: hidden; margin: 1em 0; padding: 0 32px; } .templatequotecite { line-height: 1.5em; /* @noflip */ text-align: left; margin-top: 0; } @media (min-width: 500px) { .templatequotecite { /* @noflip */ padding-left: 1.6em; } } 975tzgnvhd5jyqf0ucyxd4w8q6i98j0 සැකිල්ල:bq/documentation 10 144099 235348 2026-06-01T14:55:35Z Lee 19 නිර්මාණය 235348 wikitext text/x-wiki {{documentation subpage}} {{Uses TemplateStyles|Template:{{BASEPAGENAME}}/styles.css}} ඉංග්‍රීසි විකිපීඩියාවේ පවතින [[:en:Template:Blockquote]] සිට මෙහි ගෙනැවිත් ඇත. උපදෙස් සඳහා දැනට එහි යොමු වන්න. <includeonly> [[Category:Uncategorized templates]]<!-- replace this category with the category of your choice --> </includeonly> 91znqxujxxta0368kp3d0y1vjvj8tj1 Module:lbe-translit 828 144100 235355 2024-04-05T03:51:59Z en>Theknightwho 0 Use faster implementation of mw.ustring.char. 235355 Scribunto text/plain local u = require("Module:string/char") local export = {} local tt = { ["б"]="b", ["п"]="p", ["ф"]="f", ["в"]="w", ["м"]="m", ["д"]="d", ["т"]="t", ["й"]="y", ["н"]="n", ["з"]="z", ["ц"]="c", ["с"]="s", ["ж"]="ž", ["ш"]="š", ["щ"]="š:", ["л"]="l", ["ч"]="č", ["р"]="r", ["г"]="g", ["к"]="k", ["х"]="x", ["ъ"]="ʼ", ["а"]="a", ["е"]="e", ["и"]="i", ["о"]="o", ["у"]="u", ["э"]="e", ["ю"]="uˤ", ["я"]="aˤ", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["В"]="W", ["М"]="M", ["Д"]="D", ["Т"]="T", ["Й"]="Y", ["Н"]="N", ["З"]="Z", ["Ц"]="C", ["С"]="S", ["Ж"]="Ž", ["Ш"]="Š", ["Щ"]="Š:", ["Л"]="L", ["Ч"]="Č", ["Р"]="R", ["Г"]="G", ["К"]="K", ["Х"]="X", ["Ъ"]="ʼ", ["А"]="A", ["Е"]="E", ["И"]="I", ["О"]="O", ["У"]="U", ["Э"]="E", ["Ю"]="Uˤ", ["Я"]="Aˤ"}; local tetragraphs = { ['хьхь'] = 'x̂:', ['Хьхь'] = 'X̂:', } local digraphs = { ['пп'] = 'p:', ['пӏ'] = 'pʼ', ['тт'] = 't:', ['аь'] = 'ä', ['оь'] = 'oˤ', ['Пп'] = 'P:', ['Пӏ'] = 'Pʼ', ['Тт'] = 'T:', ['Аь'] = 'Ä', ['Оь'] = 'Oˤ', ['цӏ'] = 'cʼ', ['цц'] = 'c:', ['тӏ'] = 'tʼ', ['сс'] = 's:', ['чч'] = 'č:', ['чӏ'] = 'čʼ', ['кь'] = 'qʼ', ['кк'] = 'k:', ['кӏ'] = 'kʼ', ['хь'] = 'x̂', ['хъ'] = 'q', ['къ'] = 'q:', ['гъ'] = 'ğ', ['хх'] = 'x:', ['хӏ'] = 'ħ', ['гь'] = 'h', ['Цӏ'] = 'Cʼ', ['Цц'] = 'C:', ['Тӏ'] = 'Tʼ', ['Сс'] = 'S:', ['Чч'] = 'Č:', ['Чӏ'] = 'Čʼ', ['Кь'] = 'Qʼ', ['Кк'] = 'K:', ['Кӏ'] = 'Kʼ', ['Хь'] = 'X̂', ['Хъ'] = 'Q', ['Къ'] = 'Q:', ['Гъ'] = 'Ğ', ['Хх'] = 'X:', ['Хӏ'] = 'Ħ', ['Гь'] = 'H', } function export.tr(text, lang, sc) local str_gsub = string.gsub local UTF8_char = '[%z\1-\127\194-\244][\128-\191]*' -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = str_gsub(text, u(0x4C0), u(0x4CF)) for tetragraph, replacement in pairs(tetragraphs) do text = str_gsub(text, tetragraph, replacement) end for digraph, replacement in pairs(digraphs) do text = str_gsub(text, digraph, replacement) end text = str_gsub(text, UTF8_char, tt) return text end return export 44dq1eidgqaivytfgwxwcbtqf3dqwfv 235356 235355 2026-06-01T15:15:25Z Lee 19 [[:en:Module:lbe-translit]] වෙතින් එක් සංශෝධනයක් 235355 Scribunto text/plain local u = require("Module:string/char") local export = {} local tt = { ["б"]="b", ["п"]="p", ["ф"]="f", ["в"]="w", ["м"]="m", ["д"]="d", ["т"]="t", ["й"]="y", ["н"]="n", ["з"]="z", ["ц"]="c", ["с"]="s", ["ж"]="ž", ["ш"]="š", ["щ"]="š:", ["л"]="l", ["ч"]="č", ["р"]="r", ["г"]="g", ["к"]="k", ["х"]="x", ["ъ"]="ʼ", ["а"]="a", ["е"]="e", ["и"]="i", ["о"]="o", ["у"]="u", ["э"]="e", ["ю"]="uˤ", ["я"]="aˤ", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["В"]="W", ["М"]="M", ["Д"]="D", ["Т"]="T", ["Й"]="Y", ["Н"]="N", ["З"]="Z", ["Ц"]="C", ["С"]="S", ["Ж"]="Ž", ["Ш"]="Š", ["Щ"]="Š:", ["Л"]="L", ["Ч"]="Č", ["Р"]="R", ["Г"]="G", ["К"]="K", ["Х"]="X", ["Ъ"]="ʼ", ["А"]="A", ["Е"]="E", ["И"]="I", ["О"]="O", ["У"]="U", ["Э"]="E", ["Ю"]="Uˤ", ["Я"]="Aˤ"}; local tetragraphs = { ['хьхь'] = 'x̂:', ['Хьхь'] = 'X̂:', } local digraphs = { ['пп'] = 'p:', ['пӏ'] = 'pʼ', ['тт'] = 't:', ['аь'] = 'ä', ['оь'] = 'oˤ', ['Пп'] = 'P:', ['Пӏ'] = 'Pʼ', ['Тт'] = 'T:', ['Аь'] = 'Ä', ['Оь'] = 'Oˤ', ['цӏ'] = 'cʼ', ['цц'] = 'c:', ['тӏ'] = 'tʼ', ['сс'] = 's:', ['чч'] = 'č:', ['чӏ'] = 'čʼ', ['кь'] = 'qʼ', ['кк'] = 'k:', ['кӏ'] = 'kʼ', ['хь'] = 'x̂', ['хъ'] = 'q', ['къ'] = 'q:', ['гъ'] = 'ğ', ['хх'] = 'x:', ['хӏ'] = 'ħ', ['гь'] = 'h', ['Цӏ'] = 'Cʼ', ['Цц'] = 'C:', ['Тӏ'] = 'Tʼ', ['Сс'] = 'S:', ['Чч'] = 'Č:', ['Чӏ'] = 'Čʼ', ['Кь'] = 'Qʼ', ['Кк'] = 'K:', ['Кӏ'] = 'Kʼ', ['Хь'] = 'X̂', ['Хъ'] = 'Q', ['Къ'] = 'Q:', ['Гъ'] = 'Ğ', ['Хх'] = 'X:', ['Хӏ'] = 'Ħ', ['Гь'] = 'H', } function export.tr(text, lang, sc) local str_gsub = string.gsub local UTF8_char = '[%z\1-\127\194-\244][\128-\191]*' -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = str_gsub(text, u(0x4C0), u(0x4CF)) for tetragraph, replacement in pairs(tetragraphs) do text = str_gsub(text, tetragraph, replacement) end for digraph, replacement in pairs(digraphs) do text = str_gsub(text, digraph, replacement) end text = str_gsub(text, UTF8_char, tt) return text end return export 44dq1eidgqaivytfgwxwcbtqf3dqwfv Module:lbe-translit/documentation 828 144101 235357 2014-07-08T20:39:11Z en>Rua 0 235357 wikitext text/x-wiki {{translit module documentation|lbe}} e0728qqjorum0a7rr8zbwuunyuvs1j9 235358 235357 2026-06-01T15:15:52Z Lee 19 [[:en:Module:lbe-translit/documentation]] වෙතින් එක් සංශෝධනයක් 235357 wikitext text/x-wiki {{translit module documentation|lbe}} e0728qqjorum0a7rr8zbwuunyuvs1j9 ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, Ā භාවිතා කොට ලියන ලද 14 144102 235383 2026-06-02T04:06:24Z Pinthura 2424 සේවා: [[:[[en:Category:English terms spelled with Ā]]]] තුළ තිබූ පෙළ මෙහි ඇතුළු කිරීම. 235383 wikitext text/x-wiki {{auto cat|context=rare}} mt1l0ylyh0up319ergs1praiqauolwy 235384 235383 2026-06-02T04:06:34Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:English terms spelled with Ā]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, Ā භාවිතා කොට ලියන ලද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 235383 wikitext text/x-wiki {{auto cat|context=rare}} mt1l0ylyh0up319ergs1praiqauolwy 235391 235384 2026-06-02T04:22:01Z Pinthura 2424 සේවා: ඉංග්‍රීසි ව්‍යාපෘතිය වෙත සබැඳියක් එක් කිරීම. 235391 wikitext text/x-wiki {{auto cat|context=rare}} [[en:Category:English terms spelled with Ā]] 18tw27f2ts6s05h35cprairshhqd4qk ප්‍රවර්ගය:English terms spelled with Ā 14 144103 235385 2026-06-02T04:06:35Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:English terms spelled with Ā]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, Ā භාවිතා කොට ලියන ලද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 235385 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, Ā භාවිතා කොට ලියන ලද]] 651d48owfetd6st06lk4qhzagsxjnqy ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද 14 144104 235386 2023-05-12T15:43:45Z en>Theknightwho 0 Created page with "{{auto cat}}" 235386 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235387 235386 2026-06-02T04:21:21Z Lee 19 [[:en:Category:English_terms_spelled_with_◌̄]] වෙතින් එක් සංශෝධනයක් 235386 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235388 235387 2026-06-02T04:21:41Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:English terms spelled with ◌̄]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 235386 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235390 235388 2026-06-02T04:21:51Z Pinthura 2424 සේවා: ඉංග්‍රීසි ව්‍යාපෘතිය වෙත සබැඳියක් එක් කිරීම. 235390 wikitext text/x-wiki {{auto cat}} [[en:Category:English terms spelled with ◌̄]] odecssc18lihwkdiz1dyzqfkftijsy5 ප්‍රවර්ගය:English terms spelled with ◌̄ 14 144105 235389 2026-06-02T04:21:42Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:English terms spelled with ◌̄]] සිට [[ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 235389 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද]] oo9un6qh3jldnetqbk6d9cm1kkippe7 235392 235389 2026-06-02T04:22:11Z Pinthura 2424 සේවා: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම. 235392 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද}} re15jf3hd169o7n5jlxgc2mf2m8njch ප්‍රවර්ගය:English යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද 14 144106 235393 2026-06-02T04:22:21Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 235393 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද}} re15jf3hd169o7n5jlxgc2mf2m8njch ප්‍රවර්ගය:English යෙදුම්, Ā භාවිතා කොට ලියන ලද 14 144107 235394 2026-06-02T04:22:31Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 235394 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යෙදුම්, Ā භාවිතා කොට ලියන ලද}} o5vd6tkdce73xf7xnfiukvrgoayup2j ප්‍රවර්ගය:ඉංග්‍රීසි terms spelled with ◌̄ 14 144108 235395 2026-06-02T04:22:41Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 235395 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යෙදුම්, ◌̄ භාවිතා කොට ලියන ලද}} re15jf3hd169o7n5jlxgc2mf2m8njch ප්‍රවර්ගය:ඉංග්‍රීසි terms spelled with Ā 14 144109 235396 2026-06-02T04:22:51Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 235396 wikitext text/x-wiki {{category redirect|ඉංග්‍රීසි යෙදුම්, Ā භාවිතා කොට ලියන ලද}} o5vd6tkdce73xf7xnfiukvrgoayup2j Module:Glag-translit 828 144110 235402 2024-10-06T09:45:33Z en>AshFox 0 235402 Scribunto text/plain local export = {} local U = mw.ustring.char local letters = { ["common"] = { ["Ⰰ"] = 'A', ["ⰰ"] = 'a', ["Ⱝ"] = 'A', ["ⱝ"] = 'a', ["Ⰱ"] = 'B', ["ⰱ"] = 'b', ["Ⰲ"] = 'V', ["ⰲ"] = 'v', ["Ⰳ"] = 'G', ["ⰳ"] = 'g', ["Ⰴ"] = 'D', ["ⰴ"] = 'd', ["Ⰵ"] = 'E', ["ⰵ"] = 'e', ["Ⰶ"] = 'Ž', ["ⰶ"] = 'ž', ["Ⰷ"] = 'Dz', ["ⰷ"] = 'dz', ["Ⰸ"] = 'Z', ["ⰸ"] = 'z', ["Ⰹ"] = 'I', ["ⰹ"] = 'i', ["Ⰺ"] = 'I', ["ⰺ"] = 'i', ["Ⰻ"] = 'I', ["ⰻ"] = 'i', ["Ⰼ"] = 'Đ', ["ⰼ"] = 'đ', ["Ⰽ"] = 'K', ["ⰽ"] = 'k', ["Ⰾ"] = 'L', ["ⰾ"] = 'l', ["Ⰿ"] = 'M', ["ⰿ"] = 'm', ["Ⱞ"] = 'M', ["ⱞ"] = 'm', ["Ⱀ"] = 'N', ["ⱀ"] = 'n', ["Ⱁ"] = 'O', ["ⱁ"] = 'o', ["Ⱉ"] = 'O', ["ⱉ"] = 'o', ["Ⱂ"] = 'P', ["ⱂ"] = 'p', ["Ⱃ"] = 'R', ["ⱃ"] = 'r', ["Ⱄ"] = 'S', ["ⱄ"] = 's', ["Ⱅ"] = 'T', ["ⱅ"] = 't', ["Ⱆ"] = 'U', ["ⱆ"] = 'u', ["Ⱇ"] = 'F', ["ⱇ"] = 'f', ["Ⱈ"] = 'X', ["ⱈ"] = 'x', ["Ⱒ"] = 'X', ["ⱒ"] = 'x', ["Ⱌ"] = 'C', ["ⱌ"] = 'c', ["Ⱍ"] = 'Č', ["ⱍ"] = 'č', ["Ⱎ"] = 'Š', ["ⱎ"] = 'š', ["Ⱏ"] = 'Ŭ', ["ⱏ"] = 'ŭ', ["Ⱐ"] = 'Ĭ', ["ⱐ"] = 'ĭ', ["Ⱜ"] = 'Ĭ', ["ⱜ"] = 'ĭ', ["Ⱑ"] = 'Ě', ["ⱑ"] = 'ě', ["Ⱓ"] = 'Ju', ["ⱓ"] = 'ju', ["Ⱔ"] = 'Ę', ["ⱔ"] = 'ę', ["Ⱕ"] = 'Y̨', ["ⱕ"] = 'y̨', ["Ⱗ"] = 'Ję', ["ⱗ"] = 'ję', ["Ⱘ"] = 'Ǫ', ["ⱘ"] = 'ǫ', ["Ⱖ"] = 'Ǫ', ["ⱖ"] = 'ǫ', ["Ⱙ"] = 'Jǫ', ["ⱙ"] = 'jǫ', ["Ⱚ"] = 'Θ', ["ⱚ"] = 'θ', ["Ⱛ"] = 'Ü', ["ⱛ"] = 'ü', ["Ⱋ"] = 'Št', ["ⱋ"] = 'št' }, ["zle-ono"] = { ["Ⱌ"] = 'Ć', ["ⱌ"] = 'ć', ["Ⱍ"] = 'Ć', ["ⱍ"] = 'ć', ["Ⱋ"] = 'Ść', ["ⱋ"] = 'ść' } } local digraphs = { ["common"] = { ["Ⱏ[ⰉⰊⰋⰹⰺⰻ]"] = "Y", ["ⱏ[ⰹⰺⰻ]"] = "y", }, ["zle-ono"] = { ["ⱏ[ⰹⰺⰻ]"] = 'ŷi', } } function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode() end local function digraph_subst(digraphs) for key, repl in pairs(digraphs) do text = mw.ustring.gsub(text, key, repl) end end if sc ~= "Glag" then text = nil else -- Transliterate the kamora as prime text = mw.ustring.gsub(text, U(0x0484), "ʹ") if digraphs[lang] then digraph_subst(digraphs[lang]) end digraph_subst(digraphs["common"]) if letters[lang] then text = mw.ustring.gsub(text, '.', letters[lang]) end text = mw.ustring.gsub(text, '.', letters["common"]) -- Transliterate the titlo and vzmet as colon. text = mw.ustring.gsub(text, "[" .. U(0x0483) .. U(0xA66F) .. "]", ":") end return text end return export 1x7ffbwugu4d88axvwlk1lcu9394755 235403 235402 2026-06-02T04:40:45Z Lee 19 [[:en:Module:Glag-translit]] වෙතින් එක් සංශෝධනයක් 235402 Scribunto text/plain local export = {} local U = mw.ustring.char local letters = { ["common"] = { ["Ⰰ"] = 'A', ["ⰰ"] = 'a', ["Ⱝ"] = 'A', ["ⱝ"] = 'a', ["Ⰱ"] = 'B', ["ⰱ"] = 'b', ["Ⰲ"] = 'V', ["ⰲ"] = 'v', ["Ⰳ"] = 'G', ["ⰳ"] = 'g', ["Ⰴ"] = 'D', ["ⰴ"] = 'd', ["Ⰵ"] = 'E', ["ⰵ"] = 'e', ["Ⰶ"] = 'Ž', ["ⰶ"] = 'ž', ["Ⰷ"] = 'Dz', ["ⰷ"] = 'dz', ["Ⰸ"] = 'Z', ["ⰸ"] = 'z', ["Ⰹ"] = 'I', ["ⰹ"] = 'i', ["Ⰺ"] = 'I', ["ⰺ"] = 'i', ["Ⰻ"] = 'I', ["ⰻ"] = 'i', ["Ⰼ"] = 'Đ', ["ⰼ"] = 'đ', ["Ⰽ"] = 'K', ["ⰽ"] = 'k', ["Ⰾ"] = 'L', ["ⰾ"] = 'l', ["Ⰿ"] = 'M', ["ⰿ"] = 'm', ["Ⱞ"] = 'M', ["ⱞ"] = 'm', ["Ⱀ"] = 'N', ["ⱀ"] = 'n', ["Ⱁ"] = 'O', ["ⱁ"] = 'o', ["Ⱉ"] = 'O', ["ⱉ"] = 'o', ["Ⱂ"] = 'P', ["ⱂ"] = 'p', ["Ⱃ"] = 'R', ["ⱃ"] = 'r', ["Ⱄ"] = 'S', ["ⱄ"] = 's', ["Ⱅ"] = 'T', ["ⱅ"] = 't', ["Ⱆ"] = 'U', ["ⱆ"] = 'u', ["Ⱇ"] = 'F', ["ⱇ"] = 'f', ["Ⱈ"] = 'X', ["ⱈ"] = 'x', ["Ⱒ"] = 'X', ["ⱒ"] = 'x', ["Ⱌ"] = 'C', ["ⱌ"] = 'c', ["Ⱍ"] = 'Č', ["ⱍ"] = 'č', ["Ⱎ"] = 'Š', ["ⱎ"] = 'š', ["Ⱏ"] = 'Ŭ', ["ⱏ"] = 'ŭ', ["Ⱐ"] = 'Ĭ', ["ⱐ"] = 'ĭ', ["Ⱜ"] = 'Ĭ', ["ⱜ"] = 'ĭ', ["Ⱑ"] = 'Ě', ["ⱑ"] = 'ě', ["Ⱓ"] = 'Ju', ["ⱓ"] = 'ju', ["Ⱔ"] = 'Ę', ["ⱔ"] = 'ę', ["Ⱕ"] = 'Y̨', ["ⱕ"] = 'y̨', ["Ⱗ"] = 'Ję', ["ⱗ"] = 'ję', ["Ⱘ"] = 'Ǫ', ["ⱘ"] = 'ǫ', ["Ⱖ"] = 'Ǫ', ["ⱖ"] = 'ǫ', ["Ⱙ"] = 'Jǫ', ["ⱙ"] = 'jǫ', ["Ⱚ"] = 'Θ', ["ⱚ"] = 'θ', ["Ⱛ"] = 'Ü', ["ⱛ"] = 'ü', ["Ⱋ"] = 'Št', ["ⱋ"] = 'št' }, ["zle-ono"] = { ["Ⱌ"] = 'Ć', ["ⱌ"] = 'ć', ["Ⱍ"] = 'Ć', ["ⱍ"] = 'ć', ["Ⱋ"] = 'Ść', ["ⱋ"] = 'ść' } } local digraphs = { ["common"] = { ["Ⱏ[ⰉⰊⰋⰹⰺⰻ]"] = "Y", ["ⱏ[ⰹⰺⰻ]"] = "y", }, ["zle-ono"] = { ["ⱏ[ⰹⰺⰻ]"] = 'ŷi', } } function export.tr(text, lang, sc) if not sc then sc = require("Module:languages").getByCode(lang):findBestScript(text):getCode() end local function digraph_subst(digraphs) for key, repl in pairs(digraphs) do text = mw.ustring.gsub(text, key, repl) end end if sc ~= "Glag" then text = nil else -- Transliterate the kamora as prime text = mw.ustring.gsub(text, U(0x0484), "ʹ") if digraphs[lang] then digraph_subst(digraphs[lang]) end digraph_subst(digraphs["common"]) if letters[lang] then text = mw.ustring.gsub(text, '.', letters[lang]) end text = mw.ustring.gsub(text, '.', letters["common"]) -- Transliterate the titlo and vzmet as colon. text = mw.ustring.gsub(text, "[" .. U(0x0483) .. U(0xA66F) .. "]", ":") end return text end return export 1x7ffbwugu4d88axvwlk1lcu9394755 Module:Glag-translit/documentation 828 144111 235404 2023-07-28T23:05:21Z en>Fenakhay 0 Created page with "{{translit module documentation}}" 235404 wikitext text/x-wiki {{translit module documentation}} 8zdhvu7d00lrp6fban8tkoywlys7oi0 235405 235404 2026-06-02T04:41:05Z Lee 19 [[:en:Module:Glag-translit/documentation]] වෙතින් එක් සංශෝධනයක් 235404 wikitext text/x-wiki {{translit module documentation}} 8zdhvu7d00lrp6fban8tkoywlys7oi0 Module:rut-translit 828 144112 235412 2025-01-20T07:00:08Z en>Vahagn Petrosyan 0 Greek chi > Roman chi, because capital Greek chi looks the same as capital Roman x 235412 Scribunto text/plain local gsub = mw.ustring.gsub local u = require("Module:string utilities").char local export = {} local tt = { ["б"]="b", ["п"]="p", ["ф"]="f", ["д"]="d", ["т"]="t", ["ц"]="c", ["з"]="z", ["с"]="s", ["ч"]="č", ["ж"]="ž", ["ш"]="š", ["г"]="g", ["к"]="k", ["х"]="ꭓ", ["ъ"]="ʔ", ["м"]="m", ["н"]="n", ["р"]="r", ["л"]="l", ["в"]="v", ["й"]="j", ["ю"]="ju", ["я"]="ja", ["ё"]="jo", ["и"]="i", ["е"]="je", ["э"]="e", ["а"]="a", ["ы"]="ɨ", ["о"]="o", ["у"]="u", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["Д"]="D", ["Т"]="T", ["Ц"]="C", ["З"]="Z", ["С"]="S", ["Ч"]="Č", ["Ж"]="Ž", ["Ш"]="Š", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ", ["Ъ"]="ʔ", ["М"]="M", ["Н"]="N", ["Р"]="R", ["Л"]="L", ["В"]="V", ["Й"]="J", ["Ю"]="Ju", ["Я"]="Ja", ["Ё"]="Jo", ["И"]="I", ["Е"]="Je", ["Э"]="E", ["А"]="A", ["Ы"]="Ɨ", ["О"]="O", ["U"]="U", } local roundings = { '([тцчкТЦЧК]ӏ)в', '([кхгКХГ]ъ)в', '([цсшчгкхЦСШЧГКХ])в', '([дД]ж)в', '([хХ]ь)в', } local digraphs = { ['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['тӏ'] = 'ṭ', ['Тӏ'] = 'Ṭ', ['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['цӏ'] = 'c̣', ['Цӏ'] = 'C̣', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ', ['чӏ'] = 'č̣', ['Чӏ'] = 'Č̣', ['кӏ'] = 'ḳ', ['Кӏ'] = 'Ḳ', ['гӏ'] = 'ɣ', ['Гӏ'] = 'Ɣ', ['хь'] = 'x', ['Хь'] = 'X', ['хӏ'] = 'ħ', ['Хӏ'] = 'Ħ', ['къ'] = 'q:', ['Къ'] = 'Q:', ['хъ'] = 'q', ['Хъ'] = 'Q', ['кь'] = 'q̇', ['Кь'] = 'Q̇', ['гъ'] = 'ʁ', ['Гъ'] = 'ʁ', ['гь'] = 'h', ['Гь'] = 'H', ['аь'] = 'ä', ['Аь'] = 'Ä', ['уь'] = 'ü', ['Уь'] = 'Ü', ['([ауыАУЫ])ӏ'] = '%1ˤ', } function export.tr(text, lang, sc) if sc ~= "Cyrl" then return nil end -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = gsub(text, u(0x4C0), u(0x4CF)) -- Non-initial е is not je. text = gsub(text, "([Ё-ӏ])е", "%1e") for _, rounding in ipairs(roundings) do text = gsub(text, rounding, "%1ʷ") end for digraph, translit in pairs(digraphs) do text = gsub(text, digraph, translit) end text = gsub(text, "[Ё-ӏ]", tt) return text end return export 5p650u7pxvsg7ms0wy7p63ty5btpmao 235413 235412 2026-06-02T04:47:19Z Lee 19 [[:en:Module:rut-translit]] වෙතින් එක් සංශෝධනයක් 235412 Scribunto text/plain local gsub = mw.ustring.gsub local u = require("Module:string utilities").char local export = {} local tt = { ["б"]="b", ["п"]="p", ["ф"]="f", ["д"]="d", ["т"]="t", ["ц"]="c", ["з"]="z", ["с"]="s", ["ч"]="č", ["ж"]="ž", ["ш"]="š", ["г"]="g", ["к"]="k", ["х"]="ꭓ", ["ъ"]="ʔ", ["м"]="m", ["н"]="n", ["р"]="r", ["л"]="l", ["в"]="v", ["й"]="j", ["ю"]="ju", ["я"]="ja", ["ё"]="jo", ["и"]="i", ["е"]="je", ["э"]="e", ["а"]="a", ["ы"]="ɨ", ["о"]="o", ["у"]="u", ["Б"]="B", ["П"]="P", ["Ф"]="F", ["Д"]="D", ["Т"]="T", ["Ц"]="C", ["З"]="Z", ["С"]="S", ["Ч"]="Č", ["Ж"]="Ž", ["Ш"]="Š", ["Г"]="G", ["К"]="K", ["Х"]="Ꭓ", ["Ъ"]="ʔ", ["М"]="M", ["Н"]="N", ["Р"]="R", ["Л"]="L", ["В"]="V", ["Й"]="J", ["Ю"]="Ju", ["Я"]="Ja", ["Ё"]="Jo", ["И"]="I", ["Е"]="Je", ["Э"]="E", ["А"]="A", ["Ы"]="Ɨ", ["О"]="O", ["U"]="U", } local roundings = { '([тцчкТЦЧК]ӏ)в', '([кхгКХГ]ъ)в', '([цсшчгкхЦСШЧГКХ])в', '([дД]ж)в', '([хХ]ь)в', } local digraphs = { ['пӏ'] = 'ṗ', ['Пӏ'] = 'Ṗ', ['тӏ'] = 'ṭ', ['Тӏ'] = 'Ṭ', ['дз'] = 'ʒ', ['Дз'] = 'Ʒ', ['цӏ'] = 'c̣', ['Цӏ'] = 'C̣', ['дж'] = 'ǯ', ['Дж'] = 'Ǯ', ['чӏ'] = 'č̣', ['Чӏ'] = 'Č̣', ['кӏ'] = 'ḳ', ['Кӏ'] = 'Ḳ', ['гӏ'] = 'ɣ', ['Гӏ'] = 'Ɣ', ['хь'] = 'x', ['Хь'] = 'X', ['хӏ'] = 'ħ', ['Хӏ'] = 'Ħ', ['къ'] = 'q:', ['Къ'] = 'Q:', ['хъ'] = 'q', ['Хъ'] = 'Q', ['кь'] = 'q̇', ['Кь'] = 'Q̇', ['гъ'] = 'ʁ', ['Гъ'] = 'ʁ', ['гь'] = 'h', ['Гь'] = 'H', ['аь'] = 'ä', ['Аь'] = 'Ä', ['уь'] = 'ü', ['Уь'] = 'Ü', ['([ауыАУЫ])ӏ'] = '%1ˤ', } function export.tr(text, lang, sc) if sc ~= "Cyrl" then return nil end -- Convert capital to lowercase palochka. Lowercase is found in tables -- above. text = gsub(text, u(0x4C0), u(0x4CF)) -- Non-initial е is not je. text = gsub(text, "([Ё-ӏ])е", "%1e") for _, rounding in ipairs(roundings) do text = gsub(text, rounding, "%1ʷ") end for digraph, translit in pairs(digraphs) do text = gsub(text, digraph, translit) end text = gsub(text, "[Ё-ӏ]", tt) return text end return export 5p650u7pxvsg7ms0wy7p63ty5btpmao Module:etymon/descendants 828 144113 235425 2026-04-12T19:01:52Z en>Surjection 0 Protected "[[Module:etymon/descendants]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite)) 235425 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { template_parser = "Module:template parser", links = "Module:links", languages = "Module:languages", }, }) local TRACKABLE_KEYWORDS = { inherited = true, bor = true, lbor = true, slbor = true, derived = true, uder = true, } local DESCENDANT_TEMPLATES = { ["desc"] = true, ["descendant"] = true, ["desctree"] = true, ["descendants tree"] = true, } local SKIPPED_TERMS = { [""] = true, ["-"] = true, } local CHECK_MISSING_HEADER = { missing_header = true, missing_entry = false } local STRIPPED_REF_TEMPLATES = { ref = true, refn = true, } local ENABLE_DESCENDANTS_TRACKING = false local function _resolve_explicit_cache_id(explicit_id, parent_etymon) if parent_etymon then return parent_etymon.id or "*" end return explicit_id end local function _resolve_single_cache_id(id_data) return (type(id_data) == "table" and id_data.id) or id_data or "*" end local function _resolve_cache_id(lookup) if not lookup then return nil end if lookup.id then return lookup.id end if lookup.explicit_id then return _resolve_explicit_cache_id(lookup.explicit_id, lookup.parent_etymon) end if lookup.id_data ~= nil then return _resolve_single_cache_id(lookup.id_data) end return nil end local function _get_cached_check(cache_table, is_toplevel, base_key, cache_id) if not is_toplevel or not cache_table or not base_key or not cache_id then return nil end return cache_table[base_key .. ":" .. cache_id] end local function _store_checks(cache_table, lang_page_key, checks_by_id, redirected_from) if not cache_table or not lang_page_key or not checks_by_id then return end for id, check in pairs(checks_by_id) do cache_table[lang_page_key .. ":" .. id] = check end if redirected_from then for id, check in pairs(checks_by_id) do cache_table[redirected_from .. ":" .. id] = check end end end local function _strip_refs(value) if type(value) ~= "string" or value == "" then return value end local get_node_class = M.template_parser.class_else_type local function trim_local(text) return (type(text) == "string" and text:match("^%s*(.-)%s*$")) or "" end local function lower_local(text) return text and mw.ustring.lower(text) or text end local function template_name_unexpanded(template_node) return lower_local(trim_local(tostring(template_node[1]) or "")) end local function stringify_without_ref_templates(node) if type(node) ~= "table" then return node == nil and "" or tostring(node) end local node_class = get_node_class(node) if node_class == "template" and STRIPPED_REF_TEMPLATES[template_name_unexpanded(node)] then return "" end if node_class == "template" then return tostring(node) end if node_class == "heading" then return tostring(node) end if node_class and node_class ~= "wikitext" then return tostring(node) end local pieces = {} for i = 1, #node do pieces[i] = stringify_without_ref_templates(node[i]) end return table.concat(pieces) end local parsed = M.template_parser.parse(value) local cleaned = stringify_without_ref_templates(parsed) local changed = true while changed do local next_cleaned = mw.ustring.gsub(cleaned, "<%s*[Rr][Ee][Ff][^>]-/>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "<%s*[Rr][Ee][Ff][^>]*>.-<%s*/%s*[Rr][Ee][Ff]%s*>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*}}", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*|[^{}]-}}", "") changed = next_cleaned ~= cleaned cleaned = next_cleaned end return cleaned end local function _trim(value) if type(value) ~= "string" then return nil end return value:match("^%s*(.-)%s*$") end local function _lower(value) return value and mw.ustring.lower(value) or value end local function _is_index_in_range(index, start_index, end_index) return index and index >= start_index and index <= end_index end local function _build_parse_index(lang_section) local parsed = M.template_parser.parse(lang_section) local headings = {} local templates = {} for heading in parsed:iterate_nodes("heading") do local heading_name = heading:get_name() table.insert(headings, { index = heading.index or 1, level = heading.level or 0, name = heading_name and _lower(_trim(heading_name) or "") or nil, length = #tostring(heading), }) end for template in parsed:iterate_nodes("template") do local template_name = template:get_name() local template_args = template:get_arguments() table.insert(templates, { index = template.index or 1, name = template_name and _lower(_trim(template_name) or "") or "", args = template_args or {}, }) end return { headings = headings, templates = templates, } end local function _build_regions(lang_section, headings) local content_length = #lang_section local etymology_headings = {} for _, heading in ipairs(headings) do if heading.level == 3 and heading.name and mw.ustring.match(heading.name, "^etymology") then table.insert(etymology_headings, heading) end end if #etymology_headings == 0 then return { { start_index = 1, end_index = content_length } } end local regions = {} for i = 1, #etymology_headings do local heading = etymology_headings[i] local next_heading = etymology_headings[i + 1] local start_index = heading.index local end_index = next_heading and (next_heading.index - 1) or content_length if i == 1 and heading.index > 1 then local preamble = lang_section:sub(1, heading.index - 1) if preamble:match("%S") then start_index = 1 end end table.insert(regions, { start_index = start_index, end_index = end_index, }) end return regions end local function _count_region_etymons(region, templates, etymon_lang_code) local count = 0 for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and template.name == "etymon" and template.args[1] == etymon_lang_code then count = count + 1 end end return count end local function _get_descendants_sections(region, headings) local sections = {} for i = 1, #headings do local heading = headings[i] if _is_index_in_range(heading.index, region.start_index, region.end_index) and heading.name == "descendants" then local body_start = heading.index + heading.length local body_end = region.end_index for j = i + 1, #headings do local next_heading = headings[j] if next_heading.index > region.end_index then break end if next_heading.level <= heading.level then body_end = next_heading.index - 1 break end end table.insert(sections, { start_index = body_start, end_index = body_end, }) end end return sections end local function _template_lang_matches_entry(template_lang_code, entry_full_code, cache) local normalized_code = _trim(template_lang_code) if not normalized_code or normalized_code == "" then return false end local cached = cache[normalized_code] if cached ~= nil then return cached end local template_lang = M.languages.getByCode(normalized_code, nil, true) local is_match = template_lang and template_lang:getFullCode() == entry_full_code or false cache[normalized_code] = is_match return is_match end local function _template_lists_target(template_args, first_term_index, target_page_lower, entry_lang) for arg_index = first_term_index, #template_args do local template_term = _trim(template_args[arg_index]) if template_term and not SKIPPED_TERMS[template_term] then if _lower(template_term) == target_page_lower then return true end local template_page = M.links.get_link_page(template_term, entry_lang) if _lower(template_page) == target_page_lower then return true end end end return false end local function _is_target_listed_in_descendants(descendants_sections, templates, entry_title, entry_lang) if #descendants_sections == 0 then return false end local target_page = M.links.get_link_page(entry_title, entry_lang) local target_page_lower = _lower(target_page) local entry_full_code = entry_lang:getFullCode() local lang_match_cache = {} for _, section in ipairs(descendants_sections) do for _, template in ipairs(templates) do if _is_index_in_range(template.index, section.start_index, section.end_index) and DESCENDANT_TEMPLATES[template.name] then local lang_arg_index = nil for arg_index = 1, #template.args do if _template_lang_matches_entry(template.args[arg_index], entry_full_code, lang_match_cache) then lang_arg_index = arg_index break end end if lang_arg_index and _template_lists_target(template.args, lang_arg_index + 1, target_page_lower, entry_lang) then return true end end end end return false end local function _region_has_descendant_template(region, templates) for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and DESCENDANT_TEMPLATES[template.name] then return true end end return false end local function _get_region_check(region, parsed_index, entry_title, entry_lang) local descendants_sections = _get_descendants_sections(region, parsed_index.headings) if #descendants_sections == 0 then if _region_has_descendant_template(region, parsed_index.templates) then local fallback_sections = { { start_index = region.start_index, end_index = region.end_index, } } return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(fallback_sections, parsed_index.templates, entry_title, entry_lang), } end return CHECK_MISSING_HEADER end return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(descendants_sections, parsed_index.templates, entry_title, entry_lang), } end local function _build_checks_by_id(lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang) local checks_by_id = {} local parsed_index = _build_parse_index(lang_section) local regions = _build_regions(lang_section, parsed_index.headings) local template_list_index = 1 local mapping_failed = false for _, region in ipairs(regions) do local region_etymon_count = _count_region_etymons(region, parsed_index.templates, etymon_lang_code) local region_check = nil if region_etymon_count > 0 then region_check = _get_region_check(region, parsed_index, entry_title, entry_lang) end for _ = 1, region_etymon_count do local found_template_args = found_templates_for_lang[template_list_index] if not found_template_args then mapping_failed = true break end checks_by_id[found_template_args.id or "*"] = region_check template_list_index = template_list_index + 1 end if mapping_failed then break end end if mapping_failed or template_list_index ~= (#found_templates_for_lang + 1) then local global_region = { start_index = 1, end_index = #lang_section } local fallback_check = _get_region_check(global_region, parsed_index, entry_title, entry_lang) checks_by_id = {} for _, template_args in ipairs(found_templates_for_lang) do checks_by_id[template_args.id or "*"] = fallback_check end end return checks_by_id end local function _compute_checks_for_page(opts) opts = opts or {} local found_templates_for_lang = opts.found_templates_for_lang or {} if #found_templates_for_lang == 0 then return {} end local entry_title = opts.entry_title local entry_lang = opts.entry_lang local etymon_lang_code = opts.etymon_lang_code if not entry_title or not entry_lang or not etymon_lang_code then return {} end local sanitized_lang_section = _strip_refs(opts.lang_section or "") return _build_checks_by_id( sanitized_lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang ) end function export.cache_page_checks(opts) if not ENABLE_DESCENDANTS_TRACKING then return {} end opts = opts or {} local cache_table = opts.cached_descendants_checks local lang_page_key = opts.lang_page_key if not cache_table or not lang_page_key then return {} end local checks_by_id = _compute_checks_for_page(opts) _store_checks(cache_table, lang_page_key, checks_by_id, opts.redirected_from) return checks_by_id end function export.get_lookup_check(opts) if not ENABLE_DESCENDANTS_TRACKING then return nil end opts = opts or {} return _get_cached_check( opts.cached_descendants_checks, opts.is_toplevel, opts.base_key, _resolve_cache_id(opts.lookup) ) end function export.get_term_sync_flags(keyword, term_status, descendants_check) if not ENABLE_DESCENDANTS_TRACKING then return false, false end local should_track = term_status == "ok" and TRACKABLE_KEYWORDS[keyword] == true and descendants_check ~= nil if not should_track then return false, false end return descendants_check.missing_header or false, descendants_check.missing_entry or false end return export njoa75ldlbxvifpj024ykipfx44kfcd 235426 235425 2026-06-02T04:53:52Z Lee 19 [[:en:Module:etymon/descendants]] වෙතින් එක් සංශෝධනයක් 235425 Scribunto text/plain local export = {} local M = require("Module:module loader").init({ require = { template_parser = "Module:template parser", links = "Module:links", languages = "Module:languages", }, }) local TRACKABLE_KEYWORDS = { inherited = true, bor = true, lbor = true, slbor = true, derived = true, uder = true, } local DESCENDANT_TEMPLATES = { ["desc"] = true, ["descendant"] = true, ["desctree"] = true, ["descendants tree"] = true, } local SKIPPED_TERMS = { [""] = true, ["-"] = true, } local CHECK_MISSING_HEADER = { missing_header = true, missing_entry = false } local STRIPPED_REF_TEMPLATES = { ref = true, refn = true, } local ENABLE_DESCENDANTS_TRACKING = false local function _resolve_explicit_cache_id(explicit_id, parent_etymon) if parent_etymon then return parent_etymon.id or "*" end return explicit_id end local function _resolve_single_cache_id(id_data) return (type(id_data) == "table" and id_data.id) or id_data or "*" end local function _resolve_cache_id(lookup) if not lookup then return nil end if lookup.id then return lookup.id end if lookup.explicit_id then return _resolve_explicit_cache_id(lookup.explicit_id, lookup.parent_etymon) end if lookup.id_data ~= nil then return _resolve_single_cache_id(lookup.id_data) end return nil end local function _get_cached_check(cache_table, is_toplevel, base_key, cache_id) if not is_toplevel or not cache_table or not base_key or not cache_id then return nil end return cache_table[base_key .. ":" .. cache_id] end local function _store_checks(cache_table, lang_page_key, checks_by_id, redirected_from) if not cache_table or not lang_page_key or not checks_by_id then return end for id, check in pairs(checks_by_id) do cache_table[lang_page_key .. ":" .. id] = check end if redirected_from then for id, check in pairs(checks_by_id) do cache_table[redirected_from .. ":" .. id] = check end end end local function _strip_refs(value) if type(value) ~= "string" or value == "" then return value end local get_node_class = M.template_parser.class_else_type local function trim_local(text) return (type(text) == "string" and text:match("^%s*(.-)%s*$")) or "" end local function lower_local(text) return text and mw.ustring.lower(text) or text end local function template_name_unexpanded(template_node) return lower_local(trim_local(tostring(template_node[1]) or "")) end local function stringify_without_ref_templates(node) if type(node) ~= "table" then return node == nil and "" or tostring(node) end local node_class = get_node_class(node) if node_class == "template" and STRIPPED_REF_TEMPLATES[template_name_unexpanded(node)] then return "" end if node_class == "template" then return tostring(node) end if node_class == "heading" then return tostring(node) end if node_class and node_class ~= "wikitext" then return tostring(node) end local pieces = {} for i = 1, #node do pieces[i] = stringify_without_ref_templates(node[i]) end return table.concat(pieces) end local parsed = M.template_parser.parse(value) local cleaned = stringify_without_ref_templates(parsed) local changed = true while changed do local next_cleaned = mw.ustring.gsub(cleaned, "<%s*[Rr][Ee][Ff][^>]-/>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "<%s*[Rr][Ee][Ff][^>]*>.-<%s*/%s*[Rr][Ee][Ff]%s*>", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*}}", "") next_cleaned = mw.ustring.gsub(next_cleaned, "{{%s*[Rr][Ee][Ff]%s*|[^{}]-}}", "") changed = next_cleaned ~= cleaned cleaned = next_cleaned end return cleaned end local function _trim(value) if type(value) ~= "string" then return nil end return value:match("^%s*(.-)%s*$") end local function _lower(value) return value and mw.ustring.lower(value) or value end local function _is_index_in_range(index, start_index, end_index) return index and index >= start_index and index <= end_index end local function _build_parse_index(lang_section) local parsed = M.template_parser.parse(lang_section) local headings = {} local templates = {} for heading in parsed:iterate_nodes("heading") do local heading_name = heading:get_name() table.insert(headings, { index = heading.index or 1, level = heading.level or 0, name = heading_name and _lower(_trim(heading_name) or "") or nil, length = #tostring(heading), }) end for template in parsed:iterate_nodes("template") do local template_name = template:get_name() local template_args = template:get_arguments() table.insert(templates, { index = template.index or 1, name = template_name and _lower(_trim(template_name) or "") or "", args = template_args or {}, }) end return { headings = headings, templates = templates, } end local function _build_regions(lang_section, headings) local content_length = #lang_section local etymology_headings = {} for _, heading in ipairs(headings) do if heading.level == 3 and heading.name and mw.ustring.match(heading.name, "^etymology") then table.insert(etymology_headings, heading) end end if #etymology_headings == 0 then return { { start_index = 1, end_index = content_length } } end local regions = {} for i = 1, #etymology_headings do local heading = etymology_headings[i] local next_heading = etymology_headings[i + 1] local start_index = heading.index local end_index = next_heading and (next_heading.index - 1) or content_length if i == 1 and heading.index > 1 then local preamble = lang_section:sub(1, heading.index - 1) if preamble:match("%S") then start_index = 1 end end table.insert(regions, { start_index = start_index, end_index = end_index, }) end return regions end local function _count_region_etymons(region, templates, etymon_lang_code) local count = 0 for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and template.name == "etymon" and template.args[1] == etymon_lang_code then count = count + 1 end end return count end local function _get_descendants_sections(region, headings) local sections = {} for i = 1, #headings do local heading = headings[i] if _is_index_in_range(heading.index, region.start_index, region.end_index) and heading.name == "descendants" then local body_start = heading.index + heading.length local body_end = region.end_index for j = i + 1, #headings do local next_heading = headings[j] if next_heading.index > region.end_index then break end if next_heading.level <= heading.level then body_end = next_heading.index - 1 break end end table.insert(sections, { start_index = body_start, end_index = body_end, }) end end return sections end local function _template_lang_matches_entry(template_lang_code, entry_full_code, cache) local normalized_code = _trim(template_lang_code) if not normalized_code or normalized_code == "" then return false end local cached = cache[normalized_code] if cached ~= nil then return cached end local template_lang = M.languages.getByCode(normalized_code, nil, true) local is_match = template_lang and template_lang:getFullCode() == entry_full_code or false cache[normalized_code] = is_match return is_match end local function _template_lists_target(template_args, first_term_index, target_page_lower, entry_lang) for arg_index = first_term_index, #template_args do local template_term = _trim(template_args[arg_index]) if template_term and not SKIPPED_TERMS[template_term] then if _lower(template_term) == target_page_lower then return true end local template_page = M.links.get_link_page(template_term, entry_lang) if _lower(template_page) == target_page_lower then return true end end end return false end local function _is_target_listed_in_descendants(descendants_sections, templates, entry_title, entry_lang) if #descendants_sections == 0 then return false end local target_page = M.links.get_link_page(entry_title, entry_lang) local target_page_lower = _lower(target_page) local entry_full_code = entry_lang:getFullCode() local lang_match_cache = {} for _, section in ipairs(descendants_sections) do for _, template in ipairs(templates) do if _is_index_in_range(template.index, section.start_index, section.end_index) and DESCENDANT_TEMPLATES[template.name] then local lang_arg_index = nil for arg_index = 1, #template.args do if _template_lang_matches_entry(template.args[arg_index], entry_full_code, lang_match_cache) then lang_arg_index = arg_index break end end if lang_arg_index and _template_lists_target(template.args, lang_arg_index + 1, target_page_lower, entry_lang) then return true end end end end return false end local function _region_has_descendant_template(region, templates) for _, template in ipairs(templates) do if _is_index_in_range(template.index, region.start_index, region.end_index) and DESCENDANT_TEMPLATES[template.name] then return true end end return false end local function _get_region_check(region, parsed_index, entry_title, entry_lang) local descendants_sections = _get_descendants_sections(region, parsed_index.headings) if #descendants_sections == 0 then if _region_has_descendant_template(region, parsed_index.templates) then local fallback_sections = { { start_index = region.start_index, end_index = region.end_index, } } return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(fallback_sections, parsed_index.templates, entry_title, entry_lang), } end return CHECK_MISSING_HEADER end return { missing_header = false, missing_entry = not _is_target_listed_in_descendants(descendants_sections, parsed_index.templates, entry_title, entry_lang), } end local function _build_checks_by_id(lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang) local checks_by_id = {} local parsed_index = _build_parse_index(lang_section) local regions = _build_regions(lang_section, parsed_index.headings) local template_list_index = 1 local mapping_failed = false for _, region in ipairs(regions) do local region_etymon_count = _count_region_etymons(region, parsed_index.templates, etymon_lang_code) local region_check = nil if region_etymon_count > 0 then region_check = _get_region_check(region, parsed_index, entry_title, entry_lang) end for _ = 1, region_etymon_count do local found_template_args = found_templates_for_lang[template_list_index] if not found_template_args then mapping_failed = true break end checks_by_id[found_template_args.id or "*"] = region_check template_list_index = template_list_index + 1 end if mapping_failed then break end end if mapping_failed or template_list_index ~= (#found_templates_for_lang + 1) then local global_region = { start_index = 1, end_index = #lang_section } local fallback_check = _get_region_check(global_region, parsed_index, entry_title, entry_lang) checks_by_id = {} for _, template_args in ipairs(found_templates_for_lang) do checks_by_id[template_args.id or "*"] = fallback_check end end return checks_by_id end local function _compute_checks_for_page(opts) opts = opts or {} local found_templates_for_lang = opts.found_templates_for_lang or {} if #found_templates_for_lang == 0 then return {} end local entry_title = opts.entry_title local entry_lang = opts.entry_lang local etymon_lang_code = opts.etymon_lang_code if not entry_title or not entry_lang or not etymon_lang_code then return {} end local sanitized_lang_section = _strip_refs(opts.lang_section or "") return _build_checks_by_id( sanitized_lang_section, etymon_lang_code, found_templates_for_lang, entry_title, entry_lang ) end function export.cache_page_checks(opts) if not ENABLE_DESCENDANTS_TRACKING then return {} end opts = opts or {} local cache_table = opts.cached_descendants_checks local lang_page_key = opts.lang_page_key if not cache_table or not lang_page_key then return {} end local checks_by_id = _compute_checks_for_page(opts) _store_checks(cache_table, lang_page_key, checks_by_id, opts.redirected_from) return checks_by_id end function export.get_lookup_check(opts) if not ENABLE_DESCENDANTS_TRACKING then return nil end opts = opts or {} return _get_cached_check( opts.cached_descendants_checks, opts.is_toplevel, opts.base_key, _resolve_cache_id(opts.lookup) ) end function export.get_term_sync_flags(keyword, term_status, descendants_check) if not ENABLE_DESCENDANTS_TRACKING then return false, false end local should_track = term_status == "ok" and TRACKABLE_KEYWORDS[keyword] == true and descendants_check ~= nil if not should_track then return false, false end return descendants_check.missing_header or false, descendants_check.missing_entry or false end return export njoa75ldlbxvifpj024ykipfx44kfcd Module:uk-adjective 828 144114 235432 2025-07-01T09:49:15Z en>Theknightwho 0 Show vocative, but treat it as identical to the nominative (except for surnames, where appropriate). 235432 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of case/gender/number. Example slot names for adjectives are "gen_f" (genitive feminine singular) and "loc_p" (locative plural). Each slot is filled with zero or more forms. -- "form" = The declined Ukrainian form representing the value of a given slot. -- "lemma" = The dictionary form of a given Ukrainian term. Generally the nominative masculine singular, but may occasionally be another form if the nominative masculine singular is missing. ]=] local lang = require("Module:languages").getByCode("uk") local m_links = require("Module:links") local m_table = require("Module:table") local m_string_utilities = require("Module:string utilities") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local m_para = require("Module:parameters") local com = require("Module:uk-common") local u = mw.ustring.char local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local unpack = unpack or table.unpack -- Lua 5.2 compatibility local AC = u(0x0301) -- acute = ́ -- All slots that are used by any of the different tables. The key is the slot and the value is a list of the -- tables that use the slot. "" = regular, "surname" = 'surname' indicator, "plonly" = special=plonly in -- {{uk-adecl-manual}}, "dva" = special=dva in {{uk-adecl-manual}}. Note that the accelerators for some of the -- below slots (gen_m, dat_m, ins_m, loc_m) are different for surnames vs. others, which we need to handle -- specially when constructing the output slots. local input_adjective_slots = { nom_m = {"", "surname"}, nom_f = {"", "surname"}, nom_n = {""}, nom_p = {"", "surname", "plonly"}, nom_mp = {"dva"}, nom_fp = {"dva"}, gen_m = {"", "surname"}, gen_f = {"", "surname"}, gen_p = {"", "surname", "plonly", "dva"}, dat_m = {"", "surname"}, dat_f = {"", "surname"}, dat_p = {"", "surname", "plonly", "dva"}, acc_m = {"surname"}, acc_m_an = {""}, acc_m_in = {""}, acc_f = {"", "surname"}, acc_n = {""}, acc_p = {"surname"}, acc_p_an = {"", "plonly", "dva"}, acc_p_in = {"", "plonly"}, acc_mp_in = {"dva"}, acc_fp_in = {"dva"}, ins_m = {"", "surname"}, ins_f = {"", "surname"}, ins_p = {"", "surname", "plonly", "dva"}, loc_m = {"", "surname"}, loc_f = {"", "surname"}, loc_p = {"", "surname", "plonly", "dva"}, voc_m = {"", "surname"}, voc_f = {"", "surname"}, voc_p = {"", "surname"}, voc_mp = {"dva"}, voc_fp = {"dva"}, short = {""}, } local output_adjective_slots = { nom_m = "nom|m|s", nom_m_linked = "nom|m|s", -- used in [[Module:uk-noun]]? nom_f = "nom|f|s", nom_n = "nom|n|s", nom_p = "nom|p", nom_mp = "nom|m//n|p", nom_fp = "nom|f|p", gen_m = "gen|m//n|s", gen_f = "gen|f|s", gen_p = "gen|p", dat_m = "dat|m//n|s", dat_f = "dat|f|s", dat_p = "dat|p", acc_m = "acc|m|s", acc_m_an = "an|acc|m|s", acc_m_in = "in|acc|m|s", acc_f = "acc|f|s", acc_n = "acc|n|s", acc_p = "acc|p", acc_p_an = "an|acc|p", acc_p_in = "in|acc|p", acc_mp_in = "in|acc|m//n|p", acc_fp_in = "in|acc|f|p", ins_m = "ins|m//n|s", ins_f = "ins|f|s", ins_p = "ins|p", loc_m = "loc|m//n|s", loc_f = "loc|f|s", loc_p = "loc|p", voc_m = "voc|m|s", voc_f = "voc|f|s", voc_n = "voc|n|s", voc_p = "voc|p", voc_mp = "voc|m//n|p", voc_fp = "voc|f|p", short = "short|form", } local function get_output_adjective_slots(alternant_multiword_spec) if alternant_multiword_spec.surname then output_adjective_slots.gen_m = "gen|m|s" output_adjective_slots.dat_m = "dat|m|s" output_adjective_slots.ins_m = "ins|m|s" output_adjective_slots.loc_m = "loc|m|s" end return output_adjective_slots end local function add(base, slot, stems, endings) iut.add_forms(base.forms, slot, stems, endings, com.combine_stem_ending) end local function add_normal_decl(base, stem, nom_m, nom_f, nom_n, nom_p, gen_m, gen_f, gen_p, dat_m, dat_f, dat_p, acc_f, ins_m, ins_f, ins_p, loc_m, loc_f, loc_p, footnote) stem = com.generate_form(stem, footnote) add(base, "nom_m", stem, nom_m) add(base, "nom_f", stem, nom_f) add(base, "nom_n", stem, nom_n) add(base, "nom_p", stem, nom_p) add(base, "gen_m", stem, gen_m) add(base, "gen_f", stem, gen_f) add(base, "gen_p", stem, gen_p) add(base, "dat_m", stem, dat_m) add(base, "dat_f", stem, dat_f) add(base, "dat_p", stem, dat_p) add(base, "acc_f", stem, acc_f) add(base, "ins_m", stem, ins_m) add(base, "ins_f", stem, ins_f) add(base, "ins_p", stem, ins_p) add(base, "loc_m", stem, loc_m) add(base, "loc_f", stem, loc_f) add(base, "loc_p", stem, loc_p) end local function add_vocative(base, stem, voc_m, voc_f, voc_p) add(base, "voc_m", stem, voc_m) add(base, "voc_f", stem, voc_f) add(base, "voc_p", stem, voc_p) end local function stress_ending(ending) if type(ending) == "string" then return com.maybe_stress_initial_syllable(ending) else for i, e in ipairs(ending) do ending[i] = com.maybe_stress_initial_syllable(e) end return ending end end local function maybe_stress_endings(suffix, endings) if com.is_stressed(suffix) then for i, e in ipairs(endings) do endings[i] = stress_ending(e) end end end local decls = {} decls["normal"] = function(base) local normal_endings, old_endings local stem, suffix local function add_endings() maybe_stress_endings(suffix, normal_endings) add_normal_decl(base, stem, unpack(normal_endings)) if base.old then maybe_stress_endings(suffix, old_endings) local nom_f, nom_n, nom_p, acc_f = unpack(old_endings) old_endings = { {}, nom_f, nom_n, nom_p, --nom {}, {}, {}, --gen {}, {}, {}, --dat acc_f, --acc {}, {}, {}, --ins {}, {}, {}, --loc "[dated or dialectal]", } add_normal_decl(base, stem, unpack(old_endings)) end end -- semi-soft in -ций stem, suffix = rmatch(base.lemma, "^(.*ц)(и́?й)$") if stem then normal_endings = { "ий", "я", "е", "і", --nom "ього", "ьої", "их", --gen "ьому", "ій", "им", --dat "ю", --acc "им", "ьою", "ими", --ins {"ьому", "ім"}, "ій", "их", --loc } old_endings = { "яя", "еє", "ії", --nom "юю", --acc } add_endings() return end -- hard in -ий stem, suffix = rmatch(base.lemma, "^(.*)(и́?й)$") if stem then normal_endings = { "ий", "а", "е", "і", --nom "ого", "ої", "их", --gen "ому", "ій", "им", --dat "у", --acc "им", "ою", "ими", --ins {"ому", "ім"}, "ій", "их", --loc } old_endings = { "ая", "еє", "ії", --nom "ую", --acc } add_endings() return end -- soft in -ій stem, suffix = rmatch(base.lemma, "^(.*)(і́?й)$") if stem then normal_endings = { "ій", "я", "є", "і", --nom "ього", "ьої", "іх", --gen "ьому", "ій", "ім", --dat "ю", --acc "ім", "ьою", "іми", --ins {"ьому", "ім"}, "ій", "іх", --loc } old_endings = { "яя", "єє", "ії", --nom "юю", --acc } add_endings() return end -- soft-after-vowel in -їй stem, suffix = rmatch(base.lemma, "^(.*)(ї́?й)$") if stem then normal_endings = { "їй", "я", "є", "ї", --nom "його", "йої", "їх", --gen "йому", "їй", "їм", --dat "ю", --acc "їм", "йою", "їми", --ins {"йому", "їм"}, "їй", "їх", --loc } old_endings = { "яя", "єє", "її", --nom "юю", --acc } add_endings() return end error("Unrecognized adjective lemma, should end in '-ий', '-ій' or '-їй': '" .. base.lemma .. "'") end decls["poss"] = function(base) local ending_prefix local stem, suffix while true do stem, suffix = rmatch(base.lemma, "^(.*)([ії]́?в)$") if stem then ending_prefix = com.apply_vowel_alternation(base.ialt, suffix) break end stem, suffix = rmatch(base.lemma, "^(.*)([иї]́?н)$") if stem then ending_prefix = suffix break end error("Unrecognized possessive adjective lemma, should end in '-ів', '-їв', '-ин' or '-їн': '" .. base.lemma .. "'") end local endings = { "а", "е", "і", --nom "ого", "ої", "их", --gen "ому", "ій", "им", --dat "у", --acc "им", "ою", "ими", --ins {"ому", "ім"}, "ій", "их", --loc } if com.is_stressed(suffix) then ending_prefix = com.maybe_stress_initial_syllable(ending_prefix) end -- Do the nominative singular separately from the rest, which may have -- a different stem ending (e.g. -ов vs. -ів). add_normal_decl(base, stem, suffix) add_normal_decl(base, stem .. ending_prefix, nil, unpack(endings)) -- FIXME: Are there 'old' endings here too? end decls["surname"] = function(base) local ending_prefix local stem, suffix while true do stem, suffix = rmatch(base.lemma, "^(.*)([ії]́?в)$") if stem then ending_prefix = com.apply_vowel_alternation(base.ialt, suffix) break end stem, suffix = rmatch(base.lemma, "^(.*)([оє]́?в)$") if stem then ending_prefix = suffix break end stem, suffix = rmatch(base.lemma, "^(.*)([иії]́?н)$") if stem then ending_prefix = suffix break end error("Unrecognized possessive surname lemma, should end in '-ів', '-їв', '-ов', '-єв', '-ин', '-ін' or '-їн': '" .. base.lemma .. "'") end local endings = { "а", nil, "и", --nom "а", "ої", "их", --gen "у", "ій", "им", --dat "у", --acc "им", "ою", "ими", --ins {"у", "і"}, "ій", "их", --loc } -- Do the nominative singular separately from the rest, which may have -- a different stem ending (e.g. -ов vs. -ів). add_normal_decl(base, stem, suffix) add_normal_decl(base, stem .. ending_prefix, nil, unpack(endings)) add_vocative(base, stem, suffix) add_vocative(base, stem .. ending_prefix, "е", "а", "и") -- FIXME: Are there 'old' endings here too? end local function parse_indicator_spec(angle_bracket_spec) local inside = rmatch(angle_bracket_spec, "^<(.*)>$") assert(inside) local base = {forms = {}} if inside ~= "" then local parts = rsplit(inside, ".", true) for _, part in ipairs(parts) do if part == "old" then if base.old then error("Can't specify 'old' twice: '" .. inside .. "'") end base.old = true elseif part == "surname" then if base.surname then error("Can't specify 'surname' twice: '" .. inside .. "'") end base.surname = true elseif part == "io" or part == "ijo" or part == "ie" then if base.ialt then error("Can't specify і-alternation indicator twice: '" .. inside .. "'") end base.ialt = part else error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'") end end end return base end -- Check that multisyllabic lemmas have stress, and add stress to monosyllabic -- lemmas if needed. local function normalize_all_lemmas(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) base.orig_lemma = base.lemma base.orig_lemma_no_links = com.add_monosyllabic_stress(m_links.remove_links(base.lemma)) base.lemma = base.orig_lemma_no_links if not rfind(base.lemma, AC) then error("Multisyllabic lemma '" .. base.orig_lemma .. "' needs an accent") end end) end local function detect_indicator_spec(base) if rfind(base.lemma, "й$") then base.decl = "normal" elseif rfind(base.lemma, "[вн]$") then if base.surname then base.decl = "surname" else base.decl = "poss" end else error("Unrecognized adjective lemma: '" .. base.lemma .. "'") end if base.ialt and base.decl ~= "poss" and base.decl ~= "surname" then error("Vowel alternation spec '" .. base.ialt .. "' can only be specified with possessive/surname adjectives") end end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) if alternant_multiword_spec.surname == nil then alternant_multiword_spec.surname = base.surname or false elseif alternant_multiword_spec.surname ~= (base.surname or false) then error("If 'surname' is specified in one alternant, it must be specified in all of them") end end) end local function decline_adjective(base) if not decls[base.decl] then error("Internal error: Unrecognized declension type '" .. base.decl .. "'") end decls[base.decl](base) -- handle_derived_slots_and_overrides(base) end local function get_variants(form) return form:find(com.VAR1) and "var1" or form:find(com.VAR2) and "var2" or form:find(com.VAR3) and "var3" or nil end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end -- Process override for the arguments in `args`, storing the results into `forms`. If `do_acc_voc`, only do accusative and vocative -- slots; otherwise, don't do accusative or vocative slots. local function process_overrides(forms, args, do_acc_voc) do_acc_voc = not not do_acc_voc for slot, _ in pairs(input_adjective_slots) do local case = slot:sub(1, 3) if args[slot] and (do_acc_voc == (case == "acc") or do_acc_voc == (case == "voc")) then forms[slot] = nil if args[slot] ~= "-" and args[slot] ~= "—" then local segments = put.parse_balanced_segment_run(args[slot], "[", "]") local comma_separated_groups = put.split_alternating_runs(segments, "%s*,%s*") for _, comma_separated_group in ipairs(comma_separated_groups) do local formobj = { form = comma_separated_group[1], footnotes = fetch_footnotes(comma_separated_group), } iut.insert_form(forms, slot, formobj) end end end end end local function check_allowed_overrides(alternant_multiword_spec, args) local special = alternant_multiword_spec.special or alternant_multiword_spec.surname and "surname" or "" for slot, types in pairs(input_adjective_slots) do if args[slot] then local allowed = false for _, typ in ipairs(types) do if typ == special then allowed = true break end end if not allowed then error(("Override %s= not allowed for %s"):format(slot, special == "" and "regular declension" or "special=" .. special)) end end end end local function set_accusative_vocative(alternant_multiword_spec) local forms = alternant_multiword_spec.forms if alternant_multiword_spec.surname then iut.insert_forms(forms, "acc_m", forms["gen_m"]) iut.insert_forms(forms, "acc_p", forms["gen_p"]) iut.insert_forms(forms, "voc_m", forms["nom_m"]) iut.insert_forms(forms, "voc_f", forms["nom_f"]) iut.insert_forms(forms, "voc_p", forms["nom_p"]) elseif alternant_multiword_spec.special == "dva" then iut.insert_forms(forms, "acc_p_an", forms["gen_p"]) iut.insert_forms(forms, "acc_mp_in", forms["nom_mp"]) iut.insert_forms(forms, "acc_fp_in", forms["nom_fp"]) iut.insert_forms(forms, "voc_mp", forms["nom_mp"]) iut.insert_forms(forms, "voc_fp", forms["nom_fp"]) else iut.insert_forms(forms, "acc_n", forms["nom_n"]) iut.insert_forms(forms, "acc_m_an", forms["gen_m"]) iut.insert_forms(forms, "acc_m_in", forms["nom_m"]) iut.insert_forms(forms, "acc_p_an", forms["gen_p"]) iut.insert_forms(forms, "acc_p_in", forms["nom_p"]) iut.insert_forms(forms, "voc_m", forms["nom_m"]) iut.insert_forms(forms, "voc_f", forms["nom_f"]) iut.insert_forms(forms, "voc_n", forms["nom_n"]) iut.insert_forms(forms, "voc_p", forms["nom_p"]) end end local function add_categories(alternant_multiword_spec) local cats = {} local function insert(cattype) table.insert(cats, "Ukrainian " .. cattype .. " adjectives") end if not alternant_multiword_spec.manual then iut.map_word_specs(alternant_multiword_spec, function(base) if base.decl == "poss" then insert("possessive") elseif rfind(base.lemma, "ци́?й$") then insert("ц-stem") elseif rfind(base.lemma, "ий$") then insert("hard-stem stem-stressed") elseif rfind(base.lemma, "и́й$") then insert("hard-stem ending-stressed") elseif rfind(base.lemma, "і́?й$") then insert("soft-stem") elseif rfind(base.lemma, "ї́?й$") then insert("vowel-stem") end end) end alternant_multiword_spec.categories = cats end local function show_forms(alternant_multiword_spec) local lemmas = {} local lemmaform = alternant_multiword_spec.forms.nom_m or alternant_multiword_spec.forms.nom_p or alternant_multiword_spec.forms.nom_mp if lemmaform then for _, form in ipairs(lemmaform) do table.insert(lemmas, com.remove_monosyllabic_stress(form.form)) end end local props = { lemmas = lemmas, slot_table = get_output_adjective_slots(alternant_multiword_spec), lang = lang, canonicalize = function(form) return com.remove_variant_codes(com.remove_monosyllabic_stress(form)) end, include_translit = true, } iut.show_forms(alternant_multiword_spec.forms, props) end local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms local frame = mw.getCurrentFrame() local function template_prelude() return frame:expandTemplate{ title = 'inflection-table-top', args = { title = '{title}{annotation}', palette = 'blue', tall = 'yes', class="tr-alongside" } } end local function template_postlude() return frame:expandTemplate{ title = 'inflection-table-bottom', args = { notes = '{footnote}', } } end local table_spec = template_prelude() .. [=[ ! class="outer" colspan="2" | ! class="outer" colspan="3" | singular ! class="outer" rowspan="2" | plural |- ! colspan="2" | ! masculine ! neuter ! feminine |- ! colspan="2" | nominative | {nom_m} | {nom_n} | {nom_f} | {nom_p} |- ! colspan="2" | genitive | colspan="2" | {gen_m} | {gen_f} | {gen_p} |- ! colspan="2" | dative | colspan="2" | {dat_m} | {dat_f} | {dat_p} |- ! rowspan="2" | accusative ! class="secondary" | animate | {acc_m_an} | rowspan="2" | {acc_n} | rowspan="2" | {acc_f} | {acc_p_an} |- ! class="secondary" | inanimate | {acc_m_in} | {acc_p_in} |- ! colspan="2" | instrumental | colspan="2" | {ins_m} | {ins_f} | {ins_p} |- ! colspan="2" | locative | colspan="2" | {loc_m} | {loc_f} | {loc_p} |- ! colspan="2" | vocative | {voc_m} | {voc_n} | {voc_f} | {voc_p}{short_clause} ]=] .. template_postlude() local table_spec_surname = template_prelude() .. [=[ ! class="outer" | ! class="outer" colspan="2" | singular ! class="outer" rowspan="2" | plural |- ! ! masculine ! feminine |- ! nominative | {nom_m} | {nom_f} | {nom_p} |- ! genitive | {gen_m} | {gen_f} | {gen_p} |- ! dative | {dat_m} | {dat_f} | {dat_p} |- ! accusative | {acc_m} | {acc_f} | {acc_p} |- ! instrumental | {ins_m} | {ins_f} | {ins_p} |- ! locative | {loc_m} | {loc_f} | {loc_p} |- ! vocative | {voc_m} | {voc_f} | {voc_p} ]=] .. template_postlude() local table_spec_plonly = template_prelude() .. [=[ ! colspan="2" | ! plural |- ! colspan="2" | nominative | {nom_p} |- ! colspan="2" | genitive | {gen_p} |- ! colspan="2" | dative | {dat_p} |- ! rowspan="2" | accusative ! class="secondary" | animate | {acc_p_an} |- ! class="secondary" | inanimate | {acc_p_in} |- ! colspan="2" | instrumental | {ins_p} |- ! colspan="2" | locative | {loc_p} |- ! colspan="2" | vocative | {voc_p} ]=] .. template_postlude() local table_spec_dva = template_prelude() .. [=[ ! colspan="2" | ! class="outer" colspan="2" | plural |- ! colspan="2" | ! masculine/neuter ! feminine |- ! colspan="2" | nominative | {nom_mp} | {nom_fp} |- ! colspan="2" | genitive | colspan="2" | {gen_p} |- ! colspan="2" | dative | colspan="2" | {dat_p} |- ! rowspan="2" | accusative ! class="secondary" | animate | colspan="2" | {acc_p_an} |- ! class="secondary" | inanimate | {acc_mp_in} | {acc_fp_in} |- ! colspan="2" | instrumental | colspan="2" | {ins_p} |- ! colspan="2" | locative | colspan="2" | {loc_p} |- ! colspan="2" | vocative | {voc_mp} | {voc_fp} ]=] .. template_postlude() local short_form_template = [=[ |- ! colspan="6" | |- ! colspan="2" | short form | colspan="1" | {short}]=] if alternant_multiword_spec.title then forms.title = alternant_multiword_spec.title else forms.title = 'Declension of <i lang="uk" class="Cyrl">' .. forms.lemma .. '</i>' end if alternant_multiword_spec.manual then forms.annotation = "" else local ann_parts = {} local decls = {} iut.map_word_specs(alternant_multiword_spec, function(base) if base.decl == "surname" then m_table.insertIfNot(decls, "surname") elseif base.decl == "poss" then m_table.insertIfNot(decls, "possessive") elseif rfind(base.lemma, "и́?й$") then m_table.insertIfNot(decls, "hard") else m_table.insertIfNot(decls, "soft") end end) table.insert(ann_parts, table.concat(decls, " // ")) forms.annotation = " (" .. table.concat(ann_parts, ", ") .. ")" end forms.short_clause = forms.short and forms.short ~= "—" and m_string_utilities.format(short_form_template, forms) or "" return m_string_utilities.format( alternant_multiword_spec.surname and table_spec_surname or alternant_multiword_spec.special == "plonly" and table_spec_plonly or alternant_multiword_spec.special == "dva" and table_spec_dva or table_spec, forms ) end -- Externally callable function to parse and decline an adjective given -- user-specified arguments. Return value is WORD_SPEC, an object where the -- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values -- for a slot, the slot key will be missing. The value for a given slot is a -- list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, pos, from_headword, def) local params = { [1] = {required = true, default = "си́ній"}, json = {type = "boolean"}, -- for use with bots title = {}, } for slot, _ in pairs(input_adjective_slots) do params[slot] = {} end local args = m_para.process(parent_args, params) local parse_props = { parse_indicator_spec = parse_indicator_spec, allow_default_indicator = true, } local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props) alternant_multiword_spec.title = args.title alternant_multiword_spec.forms = {} normalize_all_lemmas(alternant_multiword_spec) detect_all_indicator_specs(alternant_multiword_spec) check_allowed_overrides(alternant_multiword_spec, args) local inflect_props = { slot_table = get_output_adjective_slots(alternant_multiword_spec), get_variants = get_variants, inflect_word_spec = decline_adjective, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Do non-accusative/vocative overrides so they get copied to the accusative/vocative forms appropriately. process_overrides(alternant_multiword_spec.forms, args) set_accusative_vocative(alternant_multiword_spec) -- Do accusative and vocative overrides after copying the accusative/vocative forms. process_overrides(alternant_multiword_spec.forms, args, "do_acc_voc") add_categories(alternant_multiword_spec) if args.json and not from_headword then return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Externally callable function to parse and decline an adjective where all -- forms are given manually. Return value is WORD_SPEC, an object where the -- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values -- for a slot, the slot key will be missing. The value for a given slot is a -- list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms_manual(parent_args, pos, from_headword, def) local params = { special = {}, json = {type = "boolean"}, -- for use with bots title = {}, } for slot, _ in pairs(input_adjective_slots) do params[slot] = {} end local args = m_para.process(parent_args, params) local alternant_multiword_spec = { special = args.special, title = args.title, forms = {}, manual = true, } check_allowed_overrides(alternant_multiword_spec, args) -- Do non-accusative/vocative overrides so they get copied to the accusative/vocative forms appropriately. process_overrides(alternant_multiword_spec.forms, args) set_accusative_vocative(alternant_multiword_spec) -- Do accusative and vocative overrides after copying the accusative/vocative forms. process_overrides(alternant_multiword_spec.forms, args, "do_acc_voc") add_categories(alternant_multiword_spec) if args.json and not from_headword then return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Entry point for {{uk-adecl}}. Template-callable function to parse and decline -- an adjective given user-specified arguments and generate a displayable table -- of the declined forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end -- Entry point for {{uk-adecl-manual}}. Template-callable function to parse and -- decline an adjective given manually-specified inflections and generate a -- displayable table of the declined forms. function export.show_manual(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms_manual(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end return export ijbi92n5r31dlpd4epb9gywh70suxya 235433 235432 2026-06-02T10:29:27Z Lee 19 [[:en:Module:uk-adjective]] වෙතින් එක් සංශෝධනයක් 235432 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of case/gender/number. Example slot names for adjectives are "gen_f" (genitive feminine singular) and "loc_p" (locative plural). Each slot is filled with zero or more forms. -- "form" = The declined Ukrainian form representing the value of a given slot. -- "lemma" = The dictionary form of a given Ukrainian term. Generally the nominative masculine singular, but may occasionally be another form if the nominative masculine singular is missing. ]=] local lang = require("Module:languages").getByCode("uk") local m_links = require("Module:links") local m_table = require("Module:table") local m_string_utilities = require("Module:string utilities") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local m_para = require("Module:parameters") local com = require("Module:uk-common") local u = mw.ustring.char local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local unpack = unpack or table.unpack -- Lua 5.2 compatibility local AC = u(0x0301) -- acute = ́ -- All slots that are used by any of the different tables. The key is the slot and the value is a list of the -- tables that use the slot. "" = regular, "surname" = 'surname' indicator, "plonly" = special=plonly in -- {{uk-adecl-manual}}, "dva" = special=dva in {{uk-adecl-manual}}. Note that the accelerators for some of the -- below slots (gen_m, dat_m, ins_m, loc_m) are different for surnames vs. others, which we need to handle -- specially when constructing the output slots. local input_adjective_slots = { nom_m = {"", "surname"}, nom_f = {"", "surname"}, nom_n = {""}, nom_p = {"", "surname", "plonly"}, nom_mp = {"dva"}, nom_fp = {"dva"}, gen_m = {"", "surname"}, gen_f = {"", "surname"}, gen_p = {"", "surname", "plonly", "dva"}, dat_m = {"", "surname"}, dat_f = {"", "surname"}, dat_p = {"", "surname", "plonly", "dva"}, acc_m = {"surname"}, acc_m_an = {""}, acc_m_in = {""}, acc_f = {"", "surname"}, acc_n = {""}, acc_p = {"surname"}, acc_p_an = {"", "plonly", "dva"}, acc_p_in = {"", "plonly"}, acc_mp_in = {"dva"}, acc_fp_in = {"dva"}, ins_m = {"", "surname"}, ins_f = {"", "surname"}, ins_p = {"", "surname", "plonly", "dva"}, loc_m = {"", "surname"}, loc_f = {"", "surname"}, loc_p = {"", "surname", "plonly", "dva"}, voc_m = {"", "surname"}, voc_f = {"", "surname"}, voc_p = {"", "surname"}, voc_mp = {"dva"}, voc_fp = {"dva"}, short = {""}, } local output_adjective_slots = { nom_m = "nom|m|s", nom_m_linked = "nom|m|s", -- used in [[Module:uk-noun]]? nom_f = "nom|f|s", nom_n = "nom|n|s", nom_p = "nom|p", nom_mp = "nom|m//n|p", nom_fp = "nom|f|p", gen_m = "gen|m//n|s", gen_f = "gen|f|s", gen_p = "gen|p", dat_m = "dat|m//n|s", dat_f = "dat|f|s", dat_p = "dat|p", acc_m = "acc|m|s", acc_m_an = "an|acc|m|s", acc_m_in = "in|acc|m|s", acc_f = "acc|f|s", acc_n = "acc|n|s", acc_p = "acc|p", acc_p_an = "an|acc|p", acc_p_in = "in|acc|p", acc_mp_in = "in|acc|m//n|p", acc_fp_in = "in|acc|f|p", ins_m = "ins|m//n|s", ins_f = "ins|f|s", ins_p = "ins|p", loc_m = "loc|m//n|s", loc_f = "loc|f|s", loc_p = "loc|p", voc_m = "voc|m|s", voc_f = "voc|f|s", voc_n = "voc|n|s", voc_p = "voc|p", voc_mp = "voc|m//n|p", voc_fp = "voc|f|p", short = "short|form", } local function get_output_adjective_slots(alternant_multiword_spec) if alternant_multiword_spec.surname then output_adjective_slots.gen_m = "gen|m|s" output_adjective_slots.dat_m = "dat|m|s" output_adjective_slots.ins_m = "ins|m|s" output_adjective_slots.loc_m = "loc|m|s" end return output_adjective_slots end local function add(base, slot, stems, endings) iut.add_forms(base.forms, slot, stems, endings, com.combine_stem_ending) end local function add_normal_decl(base, stem, nom_m, nom_f, nom_n, nom_p, gen_m, gen_f, gen_p, dat_m, dat_f, dat_p, acc_f, ins_m, ins_f, ins_p, loc_m, loc_f, loc_p, footnote) stem = com.generate_form(stem, footnote) add(base, "nom_m", stem, nom_m) add(base, "nom_f", stem, nom_f) add(base, "nom_n", stem, nom_n) add(base, "nom_p", stem, nom_p) add(base, "gen_m", stem, gen_m) add(base, "gen_f", stem, gen_f) add(base, "gen_p", stem, gen_p) add(base, "dat_m", stem, dat_m) add(base, "dat_f", stem, dat_f) add(base, "dat_p", stem, dat_p) add(base, "acc_f", stem, acc_f) add(base, "ins_m", stem, ins_m) add(base, "ins_f", stem, ins_f) add(base, "ins_p", stem, ins_p) add(base, "loc_m", stem, loc_m) add(base, "loc_f", stem, loc_f) add(base, "loc_p", stem, loc_p) end local function add_vocative(base, stem, voc_m, voc_f, voc_p) add(base, "voc_m", stem, voc_m) add(base, "voc_f", stem, voc_f) add(base, "voc_p", stem, voc_p) end local function stress_ending(ending) if type(ending) == "string" then return com.maybe_stress_initial_syllable(ending) else for i, e in ipairs(ending) do ending[i] = com.maybe_stress_initial_syllable(e) end return ending end end local function maybe_stress_endings(suffix, endings) if com.is_stressed(suffix) then for i, e in ipairs(endings) do endings[i] = stress_ending(e) end end end local decls = {} decls["normal"] = function(base) local normal_endings, old_endings local stem, suffix local function add_endings() maybe_stress_endings(suffix, normal_endings) add_normal_decl(base, stem, unpack(normal_endings)) if base.old then maybe_stress_endings(suffix, old_endings) local nom_f, nom_n, nom_p, acc_f = unpack(old_endings) old_endings = { {}, nom_f, nom_n, nom_p, --nom {}, {}, {}, --gen {}, {}, {}, --dat acc_f, --acc {}, {}, {}, --ins {}, {}, {}, --loc "[dated or dialectal]", } add_normal_decl(base, stem, unpack(old_endings)) end end -- semi-soft in -ций stem, suffix = rmatch(base.lemma, "^(.*ц)(и́?й)$") if stem then normal_endings = { "ий", "я", "е", "і", --nom "ього", "ьої", "их", --gen "ьому", "ій", "им", --dat "ю", --acc "им", "ьою", "ими", --ins {"ьому", "ім"}, "ій", "их", --loc } old_endings = { "яя", "еє", "ії", --nom "юю", --acc } add_endings() return end -- hard in -ий stem, suffix = rmatch(base.lemma, "^(.*)(и́?й)$") if stem then normal_endings = { "ий", "а", "е", "і", --nom "ого", "ої", "их", --gen "ому", "ій", "им", --dat "у", --acc "им", "ою", "ими", --ins {"ому", "ім"}, "ій", "их", --loc } old_endings = { "ая", "еє", "ії", --nom "ую", --acc } add_endings() return end -- soft in -ій stem, suffix = rmatch(base.lemma, "^(.*)(і́?й)$") if stem then normal_endings = { "ій", "я", "є", "і", --nom "ього", "ьої", "іх", --gen "ьому", "ій", "ім", --dat "ю", --acc "ім", "ьою", "іми", --ins {"ьому", "ім"}, "ій", "іх", --loc } old_endings = { "яя", "єє", "ії", --nom "юю", --acc } add_endings() return end -- soft-after-vowel in -їй stem, suffix = rmatch(base.lemma, "^(.*)(ї́?й)$") if stem then normal_endings = { "їй", "я", "є", "ї", --nom "його", "йої", "їх", --gen "йому", "їй", "їм", --dat "ю", --acc "їм", "йою", "їми", --ins {"йому", "їм"}, "їй", "їх", --loc } old_endings = { "яя", "єє", "її", --nom "юю", --acc } add_endings() return end error("Unrecognized adjective lemma, should end in '-ий', '-ій' or '-їй': '" .. base.lemma .. "'") end decls["poss"] = function(base) local ending_prefix local stem, suffix while true do stem, suffix = rmatch(base.lemma, "^(.*)([ії]́?в)$") if stem then ending_prefix = com.apply_vowel_alternation(base.ialt, suffix) break end stem, suffix = rmatch(base.lemma, "^(.*)([иї]́?н)$") if stem then ending_prefix = suffix break end error("Unrecognized possessive adjective lemma, should end in '-ів', '-їв', '-ин' or '-їн': '" .. base.lemma .. "'") end local endings = { "а", "е", "і", --nom "ого", "ої", "их", --gen "ому", "ій", "им", --dat "у", --acc "им", "ою", "ими", --ins {"ому", "ім"}, "ій", "их", --loc } if com.is_stressed(suffix) then ending_prefix = com.maybe_stress_initial_syllable(ending_prefix) end -- Do the nominative singular separately from the rest, which may have -- a different stem ending (e.g. -ов vs. -ів). add_normal_decl(base, stem, suffix) add_normal_decl(base, stem .. ending_prefix, nil, unpack(endings)) -- FIXME: Are there 'old' endings here too? end decls["surname"] = function(base) local ending_prefix local stem, suffix while true do stem, suffix = rmatch(base.lemma, "^(.*)([ії]́?в)$") if stem then ending_prefix = com.apply_vowel_alternation(base.ialt, suffix) break end stem, suffix = rmatch(base.lemma, "^(.*)([оє]́?в)$") if stem then ending_prefix = suffix break end stem, suffix = rmatch(base.lemma, "^(.*)([иії]́?н)$") if stem then ending_prefix = suffix break end error("Unrecognized possessive surname lemma, should end in '-ів', '-їв', '-ов', '-єв', '-ин', '-ін' or '-їн': '" .. base.lemma .. "'") end local endings = { "а", nil, "и", --nom "а", "ої", "их", --gen "у", "ій", "им", --dat "у", --acc "им", "ою", "ими", --ins {"у", "і"}, "ій", "их", --loc } -- Do the nominative singular separately from the rest, which may have -- a different stem ending (e.g. -ов vs. -ів). add_normal_decl(base, stem, suffix) add_normal_decl(base, stem .. ending_prefix, nil, unpack(endings)) add_vocative(base, stem, suffix) add_vocative(base, stem .. ending_prefix, "е", "а", "и") -- FIXME: Are there 'old' endings here too? end local function parse_indicator_spec(angle_bracket_spec) local inside = rmatch(angle_bracket_spec, "^<(.*)>$") assert(inside) local base = {forms = {}} if inside ~= "" then local parts = rsplit(inside, ".", true) for _, part in ipairs(parts) do if part == "old" then if base.old then error("Can't specify 'old' twice: '" .. inside .. "'") end base.old = true elseif part == "surname" then if base.surname then error("Can't specify 'surname' twice: '" .. inside .. "'") end base.surname = true elseif part == "io" or part == "ijo" or part == "ie" then if base.ialt then error("Can't specify і-alternation indicator twice: '" .. inside .. "'") end base.ialt = part else error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'") end end end return base end -- Check that multisyllabic lemmas have stress, and add stress to monosyllabic -- lemmas if needed. local function normalize_all_lemmas(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) base.orig_lemma = base.lemma base.orig_lemma_no_links = com.add_monosyllabic_stress(m_links.remove_links(base.lemma)) base.lemma = base.orig_lemma_no_links if not rfind(base.lemma, AC) then error("Multisyllabic lemma '" .. base.orig_lemma .. "' needs an accent") end end) end local function detect_indicator_spec(base) if rfind(base.lemma, "й$") then base.decl = "normal" elseif rfind(base.lemma, "[вн]$") then if base.surname then base.decl = "surname" else base.decl = "poss" end else error("Unrecognized adjective lemma: '" .. base.lemma .. "'") end if base.ialt and base.decl ~= "poss" and base.decl ~= "surname" then error("Vowel alternation spec '" .. base.ialt .. "' can only be specified with possessive/surname adjectives") end end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) if alternant_multiword_spec.surname == nil then alternant_multiword_spec.surname = base.surname or false elseif alternant_multiword_spec.surname ~= (base.surname or false) then error("If 'surname' is specified in one alternant, it must be specified in all of them") end end) end local function decline_adjective(base) if not decls[base.decl] then error("Internal error: Unrecognized declension type '" .. base.decl .. "'") end decls[base.decl](base) -- handle_derived_slots_and_overrides(base) end local function get_variants(form) return form:find(com.VAR1) and "var1" or form:find(com.VAR2) and "var2" or form:find(com.VAR3) and "var3" or nil end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then error("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end -- Process override for the arguments in `args`, storing the results into `forms`. If `do_acc_voc`, only do accusative and vocative -- slots; otherwise, don't do accusative or vocative slots. local function process_overrides(forms, args, do_acc_voc) do_acc_voc = not not do_acc_voc for slot, _ in pairs(input_adjective_slots) do local case = slot:sub(1, 3) if args[slot] and (do_acc_voc == (case == "acc") or do_acc_voc == (case == "voc")) then forms[slot] = nil if args[slot] ~= "-" and args[slot] ~= "—" then local segments = put.parse_balanced_segment_run(args[slot], "[", "]") local comma_separated_groups = put.split_alternating_runs(segments, "%s*,%s*") for _, comma_separated_group in ipairs(comma_separated_groups) do local formobj = { form = comma_separated_group[1], footnotes = fetch_footnotes(comma_separated_group), } iut.insert_form(forms, slot, formobj) end end end end end local function check_allowed_overrides(alternant_multiword_spec, args) local special = alternant_multiword_spec.special or alternant_multiword_spec.surname and "surname" or "" for slot, types in pairs(input_adjective_slots) do if args[slot] then local allowed = false for _, typ in ipairs(types) do if typ == special then allowed = true break end end if not allowed then error(("Override %s= not allowed for %s"):format(slot, special == "" and "regular declension" or "special=" .. special)) end end end end local function set_accusative_vocative(alternant_multiword_spec) local forms = alternant_multiword_spec.forms if alternant_multiword_spec.surname then iut.insert_forms(forms, "acc_m", forms["gen_m"]) iut.insert_forms(forms, "acc_p", forms["gen_p"]) iut.insert_forms(forms, "voc_m", forms["nom_m"]) iut.insert_forms(forms, "voc_f", forms["nom_f"]) iut.insert_forms(forms, "voc_p", forms["nom_p"]) elseif alternant_multiword_spec.special == "dva" then iut.insert_forms(forms, "acc_p_an", forms["gen_p"]) iut.insert_forms(forms, "acc_mp_in", forms["nom_mp"]) iut.insert_forms(forms, "acc_fp_in", forms["nom_fp"]) iut.insert_forms(forms, "voc_mp", forms["nom_mp"]) iut.insert_forms(forms, "voc_fp", forms["nom_fp"]) else iut.insert_forms(forms, "acc_n", forms["nom_n"]) iut.insert_forms(forms, "acc_m_an", forms["gen_m"]) iut.insert_forms(forms, "acc_m_in", forms["nom_m"]) iut.insert_forms(forms, "acc_p_an", forms["gen_p"]) iut.insert_forms(forms, "acc_p_in", forms["nom_p"]) iut.insert_forms(forms, "voc_m", forms["nom_m"]) iut.insert_forms(forms, "voc_f", forms["nom_f"]) iut.insert_forms(forms, "voc_n", forms["nom_n"]) iut.insert_forms(forms, "voc_p", forms["nom_p"]) end end local function add_categories(alternant_multiword_spec) local cats = {} local function insert(cattype) table.insert(cats, "Ukrainian " .. cattype .. " adjectives") end if not alternant_multiword_spec.manual then iut.map_word_specs(alternant_multiword_spec, function(base) if base.decl == "poss" then insert("possessive") elseif rfind(base.lemma, "ци́?й$") then insert("ц-stem") elseif rfind(base.lemma, "ий$") then insert("hard-stem stem-stressed") elseif rfind(base.lemma, "и́й$") then insert("hard-stem ending-stressed") elseif rfind(base.lemma, "і́?й$") then insert("soft-stem") elseif rfind(base.lemma, "ї́?й$") then insert("vowel-stem") end end) end alternant_multiword_spec.categories = cats end local function show_forms(alternant_multiword_spec) local lemmas = {} local lemmaform = alternant_multiword_spec.forms.nom_m or alternant_multiword_spec.forms.nom_p or alternant_multiword_spec.forms.nom_mp if lemmaform then for _, form in ipairs(lemmaform) do table.insert(lemmas, com.remove_monosyllabic_stress(form.form)) end end local props = { lemmas = lemmas, slot_table = get_output_adjective_slots(alternant_multiword_spec), lang = lang, canonicalize = function(form) return com.remove_variant_codes(com.remove_monosyllabic_stress(form)) end, include_translit = true, } iut.show_forms(alternant_multiword_spec.forms, props) end local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms local frame = mw.getCurrentFrame() local function template_prelude() return frame:expandTemplate{ title = 'inflection-table-top', args = { title = '{title}{annotation}', palette = 'blue', tall = 'yes', class="tr-alongside" } } end local function template_postlude() return frame:expandTemplate{ title = 'inflection-table-bottom', args = { notes = '{footnote}', } } end local table_spec = template_prelude() .. [=[ ! class="outer" colspan="2" | ! class="outer" colspan="3" | singular ! class="outer" rowspan="2" | plural |- ! colspan="2" | ! masculine ! neuter ! feminine |- ! colspan="2" | nominative | {nom_m} | {nom_n} | {nom_f} | {nom_p} |- ! colspan="2" | genitive | colspan="2" | {gen_m} | {gen_f} | {gen_p} |- ! colspan="2" | dative | colspan="2" | {dat_m} | {dat_f} | {dat_p} |- ! rowspan="2" | accusative ! class="secondary" | animate | {acc_m_an} | rowspan="2" | {acc_n} | rowspan="2" | {acc_f} | {acc_p_an} |- ! class="secondary" | inanimate | {acc_m_in} | {acc_p_in} |- ! colspan="2" | instrumental | colspan="2" | {ins_m} | {ins_f} | {ins_p} |- ! colspan="2" | locative | colspan="2" | {loc_m} | {loc_f} | {loc_p} |- ! colspan="2" | vocative | {voc_m} | {voc_n} | {voc_f} | {voc_p}{short_clause} ]=] .. template_postlude() local table_spec_surname = template_prelude() .. [=[ ! class="outer" | ! class="outer" colspan="2" | singular ! class="outer" rowspan="2" | plural |- ! ! masculine ! feminine |- ! nominative | {nom_m} | {nom_f} | {nom_p} |- ! genitive | {gen_m} | {gen_f} | {gen_p} |- ! dative | {dat_m} | {dat_f} | {dat_p} |- ! accusative | {acc_m} | {acc_f} | {acc_p} |- ! instrumental | {ins_m} | {ins_f} | {ins_p} |- ! locative | {loc_m} | {loc_f} | {loc_p} |- ! vocative | {voc_m} | {voc_f} | {voc_p} ]=] .. template_postlude() local table_spec_plonly = template_prelude() .. [=[ ! colspan="2" | ! plural |- ! colspan="2" | nominative | {nom_p} |- ! colspan="2" | genitive | {gen_p} |- ! colspan="2" | dative | {dat_p} |- ! rowspan="2" | accusative ! class="secondary" | animate | {acc_p_an} |- ! class="secondary" | inanimate | {acc_p_in} |- ! colspan="2" | instrumental | {ins_p} |- ! colspan="2" | locative | {loc_p} |- ! colspan="2" | vocative | {voc_p} ]=] .. template_postlude() local table_spec_dva = template_prelude() .. [=[ ! colspan="2" | ! class="outer" colspan="2" | plural |- ! colspan="2" | ! masculine/neuter ! feminine |- ! colspan="2" | nominative | {nom_mp} | {nom_fp} |- ! colspan="2" | genitive | colspan="2" | {gen_p} |- ! colspan="2" | dative | colspan="2" | {dat_p} |- ! rowspan="2" | accusative ! class="secondary" | animate | colspan="2" | {acc_p_an} |- ! class="secondary" | inanimate | {acc_mp_in} | {acc_fp_in} |- ! colspan="2" | instrumental | colspan="2" | {ins_p} |- ! colspan="2" | locative | colspan="2" | {loc_p} |- ! colspan="2" | vocative | {voc_mp} | {voc_fp} ]=] .. template_postlude() local short_form_template = [=[ |- ! colspan="6" | |- ! colspan="2" | short form | colspan="1" | {short}]=] if alternant_multiword_spec.title then forms.title = alternant_multiword_spec.title else forms.title = 'Declension of <i lang="uk" class="Cyrl">' .. forms.lemma .. '</i>' end if alternant_multiword_spec.manual then forms.annotation = "" else local ann_parts = {} local decls = {} iut.map_word_specs(alternant_multiword_spec, function(base) if base.decl == "surname" then m_table.insertIfNot(decls, "surname") elseif base.decl == "poss" then m_table.insertIfNot(decls, "possessive") elseif rfind(base.lemma, "и́?й$") then m_table.insertIfNot(decls, "hard") else m_table.insertIfNot(decls, "soft") end end) table.insert(ann_parts, table.concat(decls, " // ")) forms.annotation = " (" .. table.concat(ann_parts, ", ") .. ")" end forms.short_clause = forms.short and forms.short ~= "—" and m_string_utilities.format(short_form_template, forms) or "" return m_string_utilities.format( alternant_multiword_spec.surname and table_spec_surname or alternant_multiword_spec.special == "plonly" and table_spec_plonly or alternant_multiword_spec.special == "dva" and table_spec_dva or table_spec, forms ) end -- Externally callable function to parse and decline an adjective given -- user-specified arguments. Return value is WORD_SPEC, an object where the -- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values -- for a slot, the slot key will be missing. The value for a given slot is a -- list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, pos, from_headword, def) local params = { [1] = {required = true, default = "си́ній"}, json = {type = "boolean"}, -- for use with bots title = {}, } for slot, _ in pairs(input_adjective_slots) do params[slot] = {} end local args = m_para.process(parent_args, params) local parse_props = { parse_indicator_spec = parse_indicator_spec, allow_default_indicator = true, } local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props) alternant_multiword_spec.title = args.title alternant_multiword_spec.forms = {} normalize_all_lemmas(alternant_multiword_spec) detect_all_indicator_specs(alternant_multiword_spec) check_allowed_overrides(alternant_multiword_spec, args) local inflect_props = { slot_table = get_output_adjective_slots(alternant_multiword_spec), get_variants = get_variants, inflect_word_spec = decline_adjective, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Do non-accusative/vocative overrides so they get copied to the accusative/vocative forms appropriately. process_overrides(alternant_multiword_spec.forms, args) set_accusative_vocative(alternant_multiword_spec) -- Do accusative and vocative overrides after copying the accusative/vocative forms. process_overrides(alternant_multiword_spec.forms, args, "do_acc_voc") add_categories(alternant_multiword_spec) if args.json and not from_headword then return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Externally callable function to parse and decline an adjective where all -- forms are given manually. Return value is WORD_SPEC, an object where the -- declined forms are in `WORD_SPEC.forms` for each slot. If there are no values -- for a slot, the slot key will be missing. The value for a given slot is a -- list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms_manual(parent_args, pos, from_headword, def) local params = { special = {}, json = {type = "boolean"}, -- for use with bots title = {}, } for slot, _ in pairs(input_adjective_slots) do params[slot] = {} end local args = m_para.process(parent_args, params) local alternant_multiword_spec = { special = args.special, title = args.title, forms = {}, manual = true, } check_allowed_overrides(alternant_multiword_spec, args) -- Do non-accusative/vocative overrides so they get copied to the accusative/vocative forms appropriately. process_overrides(alternant_multiword_spec.forms, args) set_accusative_vocative(alternant_multiword_spec) -- Do accusative and vocative overrides after copying the accusative/vocative forms. process_overrides(alternant_multiword_spec.forms, args, "do_acc_voc") add_categories(alternant_multiword_spec) if args.json and not from_headword then return require("Module:JSON").toJSON(alternant_multiword_spec) end return alternant_multiword_spec end -- Entry point for {{uk-adecl}}. Template-callable function to parse and decline -- an adjective given user-specified arguments and generate a displayable table -- of the declined forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end -- Entry point for {{uk-adecl-manual}}. Template-callable function to parse and -- decline an adjective given manually-specified inflections and generate a -- displayable table of the declined forms. function export.show_manual(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms_manual(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end return export ijbi92n5r31dlpd4epb9gywh70suxya Module:uk-adjective/documentation 828 144115 235434 2024-03-06T05:42:38Z en>WingerBot 0 remove unnecessary categorization now handled automatically by [[Module:documentation]] and [[Module:module categorization]] (manually assisted) 235434 wikitext text/x-wiki This module supports {{temp|uk-adecl}} and {{temp|uk-adecl-manual}}. 7jbxe2l2mh15zv9cm7f97csj2nmnyk0 235435 235434 2026-06-02T10:29:47Z Lee 19 [[:en:Module:uk-adjective/documentation]] වෙතින් එක් සංශෝධනයක් 235434 wikitext text/x-wiki This module supports {{temp|uk-adecl}} and {{temp|uk-adecl-manual}}. 7jbxe2l2mh15zv9cm7f97csj2nmnyk0 Module:number list/data/yrk-tun 828 144116 235436 2026-01-22T22:02:06Z en>Benwing2 0 Benwing2 moved page [[Module:number list/data/yrk]] to [[Module:number list/data/yrk-tun]] without leaving a redirect: rename Nenets codes: yrk -> yrk-tun, syd-fne -> yrk-for per [[Wiktionary:Language_treatment_requests#add_families_"Enets_languages",_"Nenets_languages"_and_"Komi_languages"]] 235436 Scribunto text/plain local export = {numbers = {}} local numbers = {} export.numbers = numbers numbers[1] = { cardinal = "ӈобˮ", ordinal = "нюртей", } numbers[2] = { cardinal = "сидя", ordinal = "нябимдей", fractional = "пеля", } numbers[3] = { cardinal = "няхӑрˮ", ordinal = "няхӑрамдэй", fractional = "няхӑрамдоˮма" } numbers[4] = { cardinal = "тет", ordinal = "тетимдей", fractional = "тетимдоˮма", } numbers[5] = { cardinal = "сӑмляӈг", ordinal = "сӑмлянзимдей", fractional = "сӑмлянзимдаˮма", } numbers[6] = { cardinal = "мӑтˮ", ordinal = "мӑтдомдэй", fractional = "мӑтдомдаˮма", } numbers[7] = { cardinal = "сӣˮив", ordinal = "сӣбимдей", } numbers[8] = { cardinal = "сидндет", ordinal = "сидндетимдей", fractional = "сидндетимдаˮма", } numbers[9] = { cardinal = "хасуюˮ", ordinal = "хасуюдимдей", fractional = "хасуюдимдаˮма", } numbers[10] = { cardinal = "юˮ", ordinal = "юдимдей", fractional = "юдимдаˮма", } numbers[100] = { cardinal = "юрˮ", ordinal = "юримдей", fractional = "юримдаˮма", } numbers[1000] = { cardinal = "ёнарˮ", ordinal = "ёнарамдей", } numbers[1000000] = { cardinal = "миллион", } return export 2iwmdccojjfgv0izcic0ucba4kp0uwz 235437 235436 2026-06-02T10:31:12Z Lee 19 [[:en:Module:number_list/data/yrk-tun]] වෙතින් එක් සංශෝධනයක් 235436 Scribunto text/plain local export = {numbers = {}} local numbers = {} export.numbers = numbers numbers[1] = { cardinal = "ӈобˮ", ordinal = "нюртей", } numbers[2] = { cardinal = "сидя", ordinal = "нябимдей", fractional = "пеля", } numbers[3] = { cardinal = "няхӑрˮ", ordinal = "няхӑрамдэй", fractional = "няхӑрамдоˮма" } numbers[4] = { cardinal = "тет", ordinal = "тетимдей", fractional = "тетимдоˮма", } numbers[5] = { cardinal = "сӑмляӈг", ordinal = "сӑмлянзимдей", fractional = "сӑмлянзимдаˮма", } numbers[6] = { cardinal = "мӑтˮ", ordinal = "мӑтдомдэй", fractional = "мӑтдомдаˮма", } numbers[7] = { cardinal = "сӣˮив", ordinal = "сӣбимдей", } numbers[8] = { cardinal = "сидндет", ordinal = "сидндетимдей", fractional = "сидндетимдаˮма", } numbers[9] = { cardinal = "хасуюˮ", ordinal = "хасуюдимдей", fractional = "хасуюдимдаˮма", } numbers[10] = { cardinal = "юˮ", ordinal = "юдимдей", fractional = "юдимдаˮма", } numbers[100] = { cardinal = "юрˮ", ordinal = "юримдей", fractional = "юримдаˮма", } numbers[1000] = { cardinal = "ёнарˮ", ordinal = "ёнарамдей", } numbers[1000000] = { cardinal = "миллион", } return export 2iwmdccojjfgv0izcic0ucba4kp0uwz 235441 235437 2026-06-02T10:32:40Z Lee 19 Lee විසින් යලියොමුවක් නොදමාම [[Module:number list/data/yrk-tun]] පිටුව [[Module:number list/data/yrk]] වෙත ගෙනයන ලදී 235436 Scribunto text/plain local export = {numbers = {}} local numbers = {} export.numbers = numbers numbers[1] = { cardinal = "ӈобˮ", ordinal = "нюртей", } numbers[2] = { cardinal = "сидя", ordinal = "нябимдей", fractional = "пеля", } numbers[3] = { cardinal = "няхӑрˮ", ordinal = "няхӑрамдэй", fractional = "няхӑрамдоˮма" } numbers[4] = { cardinal = "тет", ordinal = "тетимдей", fractional = "тетимдоˮма", } numbers[5] = { cardinal = "сӑмляӈг", ordinal = "сӑмлянзимдей", fractional = "сӑмлянзимдаˮма", } numbers[6] = { cardinal = "мӑтˮ", ordinal = "мӑтдомдэй", fractional = "мӑтдомдаˮма", } numbers[7] = { cardinal = "сӣˮив", ordinal = "сӣбимдей", } numbers[8] = { cardinal = "сидндет", ordinal = "сидндетимдей", fractional = "сидндетимдаˮма", } numbers[9] = { cardinal = "хасуюˮ", ordinal = "хасуюдимдей", fractional = "хасуюдимдаˮма", } numbers[10] = { cardinal = "юˮ", ordinal = "юдимдей", fractional = "юдимдаˮма", } numbers[100] = { cardinal = "юрˮ", ordinal = "юримдей", fractional = "юримдаˮма", } numbers[1000] = { cardinal = "ёнарˮ", ordinal = "ёнарамдей", } numbers[1000000] = { cardinal = "миллион", } return export 2iwmdccojjfgv0izcic0ucba4kp0uwz 235442 235441 2026-06-02T10:33:12Z Lee 19 Lee විසින් [[Module:number list/data/yrk]] සිට [[Module:number list/data/yrk-tun]] වෙත පිටුව ගෙන යන ලදී 235436 Scribunto text/plain local export = {numbers = {}} local numbers = {} export.numbers = numbers numbers[1] = { cardinal = "ӈобˮ", ordinal = "нюртей", } numbers[2] = { cardinal = "сидя", ordinal = "нябимдей", fractional = "пеля", } numbers[3] = { cardinal = "няхӑрˮ", ordinal = "няхӑрамдэй", fractional = "няхӑрамдоˮма" } numbers[4] = { cardinal = "тет", ordinal = "тетимдей", fractional = "тетимдоˮма", } numbers[5] = { cardinal = "сӑмляӈг", ordinal = "сӑмлянзимдей", fractional = "сӑмлянзимдаˮма", } numbers[6] = { cardinal = "мӑтˮ", ordinal = "мӑтдомдэй", fractional = "мӑтдомдаˮма", } numbers[7] = { cardinal = "сӣˮив", ordinal = "сӣбимдей", } numbers[8] = { cardinal = "сидндет", ordinal = "сидндетимдей", fractional = "сидндетимдаˮма", } numbers[9] = { cardinal = "хасуюˮ", ordinal = "хасуюдимдей", fractional = "хасуюдимдаˮма", } numbers[10] = { cardinal = "юˮ", ordinal = "юдимдей", fractional = "юдимдаˮма", } numbers[100] = { cardinal = "юрˮ", ordinal = "юримдей", fractional = "юримдаˮма", } numbers[1000] = { cardinal = "ёнарˮ", ordinal = "ёнарамдей", } numbers[1000000] = { cardinal = "миллион", } return export 2iwmdccojjfgv0izcic0ucba4kp0uwz Module:yrk-tun-translit 828 144117 235438 2026-01-22T23:25:38Z en>Benwing2 0 Benwing2 moved page [[Module:yrk-translit]] to [[Module:yrk-tun-translit]] without leaving a redirect: rename Nenets codes: yrk -> yrk-tun, syd-fne -> yrk-for per [[Wiktionary:Language_treatment_requests#add_families_"Enets_languages",_"Nenets_languages"_and_"Komi_languages"]] 235438 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="W", ["Г"]="G", ["Д"]="D", ["Е"]="Ye", ["Ё"]="Yo", ["Ж"]="Ž", ["З"]="Z", ["И"]="Yi", ["Й"]="Y", ["Ӑ"]="Ă", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Ӣ"]="Yī", ["Х"]="X", ["Ц"]="C", ["Ч"]="Ć", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="I", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Yu", ["Я"]="Ya", ["Ӈ"]="Ŋ", ['а']='a', ['б']='b', ['в']='w', ['г']='g', ['д']='d', ['е']='ye', ['ё']='yo', ['ж']='ž', ['з']='z', ['и']='yi', ['й']='y', ["ӑ"]="ă", ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ["ӣ"]="yī", ['х']='x', ['ц']='c', ['ч']='ć', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='i', ['ь']='ʹ', ['э']='e', ['ю']='yu', ['я']='ya', ["ӈ"]="ŋ", ["ˮ"]="q", ["ʼ"]="h", ['Ӯ']='Ū', ['ӯ']='ū', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])$", "%1°") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ]) ", "%1° ") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ]$", "%1") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ] ", "%1 ") return (mw.ustring.gsub(text, '.' ,tab)) end return export q1kv1lcd5uy44cw8g2rio41k8bpbjt3 235439 235438 2026-06-02T10:31:31Z Lee 19 [[:en:Module:yrk-tun-translit]] වෙතින් එක් සංශෝධනයක් 235438 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="W", ["Г"]="G", ["Д"]="D", ["Е"]="Ye", ["Ё"]="Yo", ["Ж"]="Ž", ["З"]="Z", ["И"]="Yi", ["Й"]="Y", ["Ӑ"]="Ă", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Ӣ"]="Yī", ["Х"]="X", ["Ц"]="C", ["Ч"]="Ć", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="I", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Yu", ["Я"]="Ya", ["Ӈ"]="Ŋ", ['а']='a', ['б']='b', ['в']='w', ['г']='g', ['д']='d', ['е']='ye', ['ё']='yo', ['ж']='ž', ['з']='z', ['и']='yi', ['й']='y', ["ӑ"]="ă", ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ["ӣ"]="yī", ['х']='x', ['ц']='c', ['ч']='ć', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='i', ['ь']='ʹ', ['э']='e', ['ю']='yu', ['я']='ya', ["ӈ"]="ŋ", ["ˮ"]="q", ["ʼ"]="h", ['Ӯ']='Ū', ['ӯ']='ū', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])$", "%1°") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ]) ", "%1° ") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ]$", "%1") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ] ", "%1 ") return (mw.ustring.gsub(text, '.' ,tab)) end return export q1kv1lcd5uy44cw8g2rio41k8bpbjt3 235447 235439 2026-06-02T10:37:47Z Lee 19 Lee විසින් යලියොමුවක් නොදමාම [[Module:yrk-tun-translit]] පිටුව [[Module:yrk-translit]] වෙත ගෙනයන ලදී 235438 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="W", ["Г"]="G", ["Д"]="D", ["Е"]="Ye", ["Ё"]="Yo", ["Ж"]="Ž", ["З"]="Z", ["И"]="Yi", ["Й"]="Y", ["Ӑ"]="Ă", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Ӣ"]="Yī", ["Х"]="X", ["Ц"]="C", ["Ч"]="Ć", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="I", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Yu", ["Я"]="Ya", ["Ӈ"]="Ŋ", ['а']='a', ['б']='b', ['в']='w', ['г']='g', ['д']='d', ['е']='ye', ['ё']='yo', ['ж']='ž', ['з']='z', ['и']='yi', ['й']='y', ["ӑ"]="ă", ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ["ӣ"]="yī", ['х']='x', ['ц']='c', ['ч']='ć', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='i', ['ь']='ʹ', ['э']='e', ['ю']='yu', ['я']='ya', ["ӈ"]="ŋ", ["ˮ"]="q", ["ʼ"]="h", ['Ӯ']='Ū', ['ӯ']='ū', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])$", "%1°") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ]) ", "%1° ") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ]$", "%1") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ] ", "%1 ") return (mw.ustring.gsub(text, '.' ,tab)) end return export q1kv1lcd5uy44cw8g2rio41k8bpbjt3 235448 235447 2026-06-02T10:38:14Z Lee 19 Lee විසින් [[Module:yrk-translit]] සිට [[Module:yrk-tun-translit]] වෙත පිටුව ගෙන යන ලදී 235438 Scribunto text/plain local export = {} local tab = { ["А"]="A", ["Б"]="B", ["В"]="W", ["Г"]="G", ["Д"]="D", ["Е"]="Ye", ["Ё"]="Yo", ["Ж"]="Ž", ["З"]="Z", ["И"]="Yi", ["Й"]="Y", ["Ӑ"]="Ă", ["К"]="K", ["Л"]="L", ["М"]="M", ["Н"]="N", ["О"]="O", ["П"]="P", ["Р"]="R", ["С"]="S", ["Т"]="T", ["У"]="U", ["Ф"]="F", ["Ӣ"]="Yī", ["Х"]="X", ["Ц"]="C", ["Ч"]="Ć", ["Ш"]="Š", ["Щ"]="Ś", ["Ъ"]="ʺ", ["Ы"]="I", ["Ь"]="ʹ", ["Э"]="E", ["Ю"]="Yu", ["Я"]="Ya", ["Ӈ"]="Ŋ", ['а']='a', ['б']='b', ['в']='w', ['г']='g', ['д']='d', ['е']='ye', ['ё']='yo', ['ж']='ž', ['з']='z', ['и']='yi', ['й']='y', ["ӑ"]="ă", ['к']='k', ['л']='l', ['м']='m', ['н']='n', ['о']='o', ['п']='p', ['р']='r', ['с']='s', ['т']='t', ['у']='u', ['ф']='f', ["ӣ"]="yī", ['х']='x', ['ц']='c', ['ч']='ć', ['ш']='š', ['щ']='ś', ['ъ']='ʺ', ['ы']='i', ['ь']='ʹ', ['э']='e', ['ю']='yu', ['я']='ya', ["ӈ"]="ŋ", ["ˮ"]="q", ["ʼ"]="h", ['Ӯ']='Ū', ['ӯ']='ū', } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])$", "%1°") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ]) ", "%1° ") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ]$", "%1") text = mw.ustring.gsub(text, "([БВГДЖЗЙКЛМНПРСТФХЦЧШЩЬӇбвгджзйклмнпрстфхцчшщьӈ])[ˮʼ] ", "%1 ") return (mw.ustring.gsub(text, '.' ,tab)) end return export q1kv1lcd5uy44cw8g2rio41k8bpbjt3 Module:number list/data/yrk 828 144119 235443 2026-06-02T10:33:12Z Lee 19 Lee විසින් [[Module:number list/data/yrk]] සිට [[Module:number list/data/yrk-tun]] වෙත පිටුව ගෙන යන ලදී 235443 Scribunto text/plain return require [[Module:number list/data/yrk-tun]] lh06li6wvjmzj93ppk341l3ah7af4oz Module talk:number list/data/yrk 829 144120 235445 2026-06-02T10:33:12Z Lee 19 Lee විසින් [[Module talk:number list/data/yrk]] සිට [[Module talk:number list/data/yrk-tun]] වෙත පිටුව ගෙන යන ලදී 235445 wikitext text/x-wiki #යළියොමුව [[Module talk:number list/data/yrk-tun]] a7uy12siyxdwzo2jfe1xw8qzq1xl3sy Module:yrk-translit 828 144122 235449 2026-06-02T10:38:14Z Lee 19 Lee විසින් [[Module:yrk-translit]] සිට [[Module:yrk-tun-translit]] වෙත පිටුව ගෙන යන ලදී 235449 Scribunto text/plain return require [[Module:yrk-tun-translit]] acwspob0s8m91tnpw2rqr8u2rcwi3b1 Module:uga-translit 828 144123 235469 2024-04-27T09:41:09Z en>SurjectionBot 0 Protected "[[Module:uga-translit]]": (bot) automatically protect highly visible templates/modules (reference score: 2000+ >= 1000) ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) 235469 Scribunto text/plain local export = {} local tt = { ["𐎀"] = "ả", ["𐎁"] = "b", ["𐎂"] = "g", ["𐎃"] = "ḫ", ["𐎄"] = "d", ["𐎅"] = "h", ["𐎆"] = "w", ["𐎇"] = "z", ["𐎈"] = "ḥ", ["𐎉"] = "ṭ", ["𐎊"] = "y", ["𐎋"] = "k", ["𐎌"] = "š", ["𐎍"] = "l", ["𐎎"] = "m", ["𐎏"] = "ḏ", ["𐎐"] = "n", ["𐎑"] = "ẓ", ["𐎒"] = "s", ["𐎓"] = "ʿ", ["𐎔"] = "p", ["𐎕"] = "ṣ", ["𐎖"] = "q", ["𐎗"] = "r", ["𐎘"] = "ṯ", ["𐎙"] = "ġ", ["𐎚"] = "t", ["𐎛"] = "ỉ",["𐎜"] = "ủ", ["𐎝"] = "s̀", ["𐎟"] = " · ", -- word divider } local reverse = { ["ả"] = "𐎀", ["b"] = "𐎁", ["g"] = "𐎂", ["ḫ"] = "𐎃", ["d"] = "𐎄", ["h"] = "𐎅", ["w"] = "𐎆", ["z"] = "𐎇", ["ḥ"] = "𐎈", ["ṭ"] = "𐎉", ["y"] = "𐎊", ["k"] = "𐎋", ["š"] = "𐎌", ["l"] = "𐎍", ["m"] = "𐎎", ["ḏ"] = "𐎏", ["n"] = "𐎐", ["ẓ"] = "𐎑", ["s"] = "𐎒", ["ʿ"] = "𐎓", ["p"] = "𐎔", ["ṣ"] = "𐎕", ["q"] = "𐎖", ["r"] = "𐎗", ["ṯ"] = "𐎘", ["ġ"] = "𐎙", ["t"] = "𐎚", ["ỉ"] = "𐎛",["ủ"] = "𐎜", ["ś"] = "𐎝", ["·"] = "𐎟", -- word divider } local get_glottal = { ["a"] = "ả", ["i"] = "ỉ", ["u"] = "ủ", } local aliases = { ["a"] = "ả", ["i"] = "ỉ", ["u"] = "ủ", ["θ"] = "ṯ", ["ð"] = "ḏ", ["x"] = "ḫ", ["ẖ"] = "ḫ", ["ɣ"] = "ġ", ["ḡ"] = "ġ", ["ħ"] = "ḥ", ["ḳ"] = "q", ["ḓ"] = "ẓ", } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, ".", tt) return text end function export.reverse(text) if type(text) == "table" then text = text.args[1] end text = mw.ustring.gsub(text, " *[.·] *", "·") text = mw.ustring.gsub(text, "[ʿˁʕ‘]", "ʿ") text = mw.ustring.gsub(text, "[ʾˀʔ’]", "ʾ") text = mw.ustring.gsub(text, "ʾ([aiu])", get_glottal) text = mw.ustring.gsub(text, "s[̀2₂]", "ś") text = mw.ustring.gsub(text, "s<sub>2</sub>", "ś") text = mw.ustring.gsub(text, ".", reverse) return text end return export 6j8ilw9h8b2rmgndr5stv1mxsvvfpwu 235470 235469 2026-06-02T11:00:49Z Lee 19 [[:en:Module:uga-translit]] වෙතින් එක් සංශෝධනයක් 235469 Scribunto text/plain local export = {} local tt = { ["𐎀"] = "ả", ["𐎁"] = "b", ["𐎂"] = "g", ["𐎃"] = "ḫ", ["𐎄"] = "d", ["𐎅"] = "h", ["𐎆"] = "w", ["𐎇"] = "z", ["𐎈"] = "ḥ", ["𐎉"] = "ṭ", ["𐎊"] = "y", ["𐎋"] = "k", ["𐎌"] = "š", ["𐎍"] = "l", ["𐎎"] = "m", ["𐎏"] = "ḏ", ["𐎐"] = "n", ["𐎑"] = "ẓ", ["𐎒"] = "s", ["𐎓"] = "ʿ", ["𐎔"] = "p", ["𐎕"] = "ṣ", ["𐎖"] = "q", ["𐎗"] = "r", ["𐎘"] = "ṯ", ["𐎙"] = "ġ", ["𐎚"] = "t", ["𐎛"] = "ỉ",["𐎜"] = "ủ", ["𐎝"] = "s̀", ["𐎟"] = " · ", -- word divider } local reverse = { ["ả"] = "𐎀", ["b"] = "𐎁", ["g"] = "𐎂", ["ḫ"] = "𐎃", ["d"] = "𐎄", ["h"] = "𐎅", ["w"] = "𐎆", ["z"] = "𐎇", ["ḥ"] = "𐎈", ["ṭ"] = "𐎉", ["y"] = "𐎊", ["k"] = "𐎋", ["š"] = "𐎌", ["l"] = "𐎍", ["m"] = "𐎎", ["ḏ"] = "𐎏", ["n"] = "𐎐", ["ẓ"] = "𐎑", ["s"] = "𐎒", ["ʿ"] = "𐎓", ["p"] = "𐎔", ["ṣ"] = "𐎕", ["q"] = "𐎖", ["r"] = "𐎗", ["ṯ"] = "𐎘", ["ġ"] = "𐎙", ["t"] = "𐎚", ["ỉ"] = "𐎛",["ủ"] = "𐎜", ["ś"] = "𐎝", ["·"] = "𐎟", -- word divider } local get_glottal = { ["a"] = "ả", ["i"] = "ỉ", ["u"] = "ủ", } local aliases = { ["a"] = "ả", ["i"] = "ỉ", ["u"] = "ủ", ["θ"] = "ṯ", ["ð"] = "ḏ", ["x"] = "ḫ", ["ẖ"] = "ḫ", ["ɣ"] = "ġ", ["ḡ"] = "ġ", ["ħ"] = "ḥ", ["ḳ"] = "q", ["ḓ"] = "ẓ", } function export.tr(text, lang, sc) text = mw.ustring.gsub(text, ".", tt) return text end function export.reverse(text) if type(text) == "table" then text = text.args[1] end text = mw.ustring.gsub(text, " *[.·] *", "·") text = mw.ustring.gsub(text, "[ʿˁʕ‘]", "ʿ") text = mw.ustring.gsub(text, "[ʾˀʔ’]", "ʾ") text = mw.ustring.gsub(text, "ʾ([aiu])", get_glottal) text = mw.ustring.gsub(text, "s[̀2₂]", "ś") text = mw.ustring.gsub(text, "s<sub>2</sub>", "ś") text = mw.ustring.gsub(text, ".", reverse) return text end return export 6j8ilw9h8b2rmgndr5stv1mxsvvfpwu Module:uga-translit/documentation 828 144124 235471 2014-07-08T20:44:10Z en>Rua 0 235471 wikitext text/x-wiki {{translit module documentation|uga}} lmuidfs9hf8jrzopakx5fp6ar17987n 235472 235471 2026-06-02T11:01:17Z Lee 19 [[:en:Module:uga-translit/documentation]] වෙතින් එක් සංශෝධනයක් 235471 wikitext text/x-wiki {{translit module documentation|uga}} lmuidfs9hf8jrzopakx5fp6ar17987n Module:etymology languages/canonical names.json 828 144125 235480 2026-05-17T18:29:03Z en>Theknightwho 0 [[MediaWiki:UpdateLanguageNameAndCode.js|updated]] 235480 json application/json { "ALUPEC Kabuverdianu": "kea-alu", "Abhiri": "pra-abh", "Abron": "abr", "Abuzeydabadi": "xme-abz", "Abyanehi": "xme-aby", "Acadian French": "fr-aca", "Achaemenid Elamite": "elx-ach", "Achterhoeks": "act", "Adamawa Fulfulde": "fub", "Addu Dhivehi": "dv-add", "Aeolic Greek": "grc-aeo", "Afghan Uzbek": "uz-afg", "African Romance": "la-afr", "Afridi": "ps-afr", "Akhmimic Coptic": "cop-akh", "Akuapem Twi": "tw-aku", "Aleppine North Levantine Arabic": "apc-ale", "Alsatian Alemannic German": "gsw-FR-als", "Amdo Tibetan": "adx", "American English": "en-US", "Amorehi": "xme-amo", "Ampezan Ladin": "lld-amp", "Amrum North Frisian": "frr-amr", "Anaraki": "xme-ana", "Anatri Chuvash": "cv-ana", "Anbarani": "tly-anb", "Angkorian Old Khmer": "okz-ang", "Anglian Old English": "ang-ang", "Anglo-Norman": "xno", "Anxi Hokkien": "nan-anx", "Aquitanian": "xaq", "Aranese": "oc-ara", "Arbëresh Albanian": "aae", "Arcadian Greek": "grc-arc", "Arcadocypriot Greek": "grc-arp", "Ardestani": "xme-ard", "Ardhamagadhi Prakrit": "pra-ard", "Arghu": "klj-arg", "Armeno-Kipchak": "qwm-arm", "Arvanitika Albanian": "aat", "Asalemi": "tly-asa", "Asante Twi": "tw-asa", "Ashtiani": "atn", "Attic Greek": "grc-att", "Australian Aboriginal English": "en-aae", "Australian English": "en-AU", "Austrian German": "de-AT", "Auvergnat": "oc-auv", "Avahattha": "inc-aav", "Avanti": "pra-ava", "Ayutthaya Old Thai": "th-ayu", "Azerbaijani Talysh": "tly-aze", "Badiot Ladin": "lld-bad", "Badrudi": "xme-bdr", "Bagirmi Fulfulde": "fui", "Bahliki": "pra-bah", "Bajui": "sgh-baj", "Baltic German": "de-bal", "Bandari": "bsg-ban", "Bangash": "ps-bng", "Bannu": "ps-ban", "Barlavento Kabuverdianu": "kea-bar", "Barpetia Kamrupi Assamese": "as-bkm", "Bartangi": "sgh-bar", "Bartangi-Oroshori": "sgh-bro", "Beijing Mandarin": "cmn-bei", "Beijingic Mandarin": "cmn-bec", "Belgian Dutch": "nl-BE", "Besemah": "pse-bsm", "Betawi Kota": "bew-kot", "Bhaca": "xh-bha", "Biblical Aramaic": "arc-bib", "Biblical Hebrew": "hbo", "Bidhandi": "xme-bid", "Bijagani": "xme-bij", "Boa Vista Kabuverdianu": "kea-bvi", "Boeotian Greek": "grc-boi", "Bohairic Coptic": "cop-boh", "Bolivian Spanish": "es-BO", "Bombay Hindi": "hi-mum", "Borana": "gax", "Borgu Fulfulde": "fue", "Borujerdi": "xme-bor", "Brahmanic Sanskrit": "sa-bra", "Brava Kabuverdianu": "kea-bra", "Brazilian Portuguese": "pt-BR", "British English": "en-GB", "Buddhist Hybrid Sanskrit": "sa-bhs", "Burenjani": "fay-bur", "Bushehri": "fay-bsh", "Byzantine Greek": "gkm", "Cadorino Ladin": "lld-cad", "Cajun French": "frc", "California English": "en-US-CA", "Camorta": "ncb-cam", "Campidanese": "sc-sro", "Canadian English": "en-CA", "Canadian French": "fr-CA", "Canadian Ukrainian": "uk-CA", "Candali": "pra-can", "Capenate": "xfa-cap", "Central Ghilzay": "ps-cgi", "Central Korean": "ko-cen", "Central Plains Mandarin": "cmn-cep", "Central Talysh": "tly-cen", "Central Tati": "xme-ttc-cen", "Central-Eastern Niger Fulfulde": "fuq", "Chakavian Serbo-Croatian": "ckm", "Chakhar Mongolian": "mn-cha", "Chali Tati": "tks-cal", "Changtai Hokkien": "nan-cha", "Chilean Spanish": "es-CL", "Chimehi": "xme-cim", "Christian Palestinian Aramaic": "arc-cpa", "Chungcheong Korean": "ko-chu", "Ci": "lzh-cii", "Cisalpine Gaulish": "xcg", "Classical Azerbaijani": "az-cls", "Classical Cantonese": "lzh-yue", "Classical Japanese": "ja-cla", "Classical Latin": "la-cla", "Classical Malay": "ms-cla", "Classical Mandarin": "lzh-cmn", "Classical Persian": "fa-cls", "Classical Sanskrit": "cls", "Classical Tagalog": "tl-cls", "Classical Taishanese": "lzh-tai", "Classical Taiwanese Mandarin": "lzh-cmn-TW", "Colombian Spanish": "es-CO", "Common Bantu": "bnt-cmn", "Contemporary Latin": "la-con", "Coptic Dialect G": "cop-ggg", "Coptic Dialect J": "cop-jjj", "Coptic Dialect K": "cop-kkk", "Coptic Dialect P": "cop-ppp", "Cretan Ancient Greek": "grc-kre", "Cretan Greek": "el-crt", "Cuban Spanish": "es-CU", "Cuman": "qwm-cum", "Cypriot Ancient Greek": "grc-cyp", "Cypriot Greek": "el-cyp", "Cypriot Turkish": "tr-CY", "Dabu Hakka": "hak-dab", "Daksinatya": "pra-dak", "Damascene North Levantine Arabic": "apc-dam", "Danesfani": "tks-dan", "Danube Bulgar": "xbo-dan", "Danzhou Chinese": "zhx-dan", "Dari": "prs", "Dashtaki": "fay-dsh", "Davani": "fay-dav", "Delijani": "xme-del", "Dhakaiya Vaṅga Bengali": "bn-dvn", "Digor Ossetian": "os-dig", "Dnieper Baltic": "bat-dni", "Dobrujan Tatar": "crh-dbj", "Doric Greek": "grc-dor", "Dramili": "pra-dra", "Drents": "drt", "Dutch Low Saxon": "nds-nl", "Early Brythonic": "bry-ear", "Early Mandarin": "cmn-ear", "Early Medieval Latin": "la-eme", "Early Middle Chinese": "ltc-ear", "Early Middle Japanese": "ja-mid-ear", "Early Middle Korean": "okm-ear", "Early Middle Mongol": "xng-ear", "Early Middle Persian": "pal-ear", "Early Modern Czech": "cs-ear", "Early Modern English": "en-ear", "Early Modern Hakka": "hak-eam", "Early Modern Japanese": "ja-ear", "Early Modern Spanish": "es-ear", "Early New High German": "de-ear", "Early New Persian": "fa-ear", "Early Old Chinese": "och-ear", "Early Old Ossetic": "oos-ear", "Early Old Persian": "peo-ear", "Early Scots": "enm-esc", "Early Sogdian": "sog-ear", "East Frisian Low German": "frs", "East Midland Middle English": "enm-emi", "Eastern Armenian": "hye", "Eastern Balochi": "bgp", "Eastern Mansi": "mns-eas", "Eastern Old Japanese": "ojp-eas", "Eastern Tati": "xme-ttc-eas", "Ebrahimabadi": "tks-ebr", "Ecclesiastical Latin": "la-ecc", "Elean Greek": "grc-ela", "Emamzada Esmaili": "fay-eze", "Epic Greek": "grc-epi", "Epic Sanskrit": "sa-epi", "Esfarvarini": "tks-esf", "European Portuguese": "pt-PT", "Fante Akan": "fat", "Farizandi": "xme-far", "Fascian Ladin": "lld-fas", "Fayyumic Coptic": "cop-fay", "Fodom Ladin": "lld-fod", "Fogo Kabuverdianu": "kea-fog", "Fornes Ladin": "lld-for", "Frankish": "frk", "Fumani": "tly-fum", "Fuyu Kyrgyz": "kjh-fyu", "Föhr North Frisian": "frr-foh", "Föhr-Amrum North Frisian": "frr-fam", "Gangwon Korean": "ko-gan", "Gascon": "oc-gas", "Gavkoshaki": "fay-gav", "Gazi": "gzi", "Geordie": "en-geo", "German Low German": "nds-de", "Ghat": "thv-ght", "Gheg Albanian": "aln", "Gherdëina Ladin": "lld-ghe", "Goesharde North Frisian": "frr-goe", "Golyad": "bat-gol", "Goral": "pl-gor", "Greater Polish": "pl-gre", "Greenlandic Norse": "non-grn", "Gronings": "gos", "Guangzhou Cantonese": "yue-gua", "Guanzhong Mandarin": "cmn-gua", "Guernsey Norman": "nrf-grn", "Guilin Mandarin": "cmn-gui", "Gurjara Apabhramsa": "inc-agu", "Gyeonggi Korean": "ko-gyg", "Gyeongsang Korean": "ko-gys", "Hailu Hakka": "hak-hai", "Halligen North Frisian": "frr-hal", "Hamadani": "xme-ham", "Hamgyong Korean": "ko-ham", "Hangzhounese": "wuu-han", "Hanjani": "xme-han", "Hanyu Pinyin": "cmn-pinyin", "Harar Oromo": "hae", "Hatran Aramaic": "arc-hat", "Havigannada": "kn-hav", "Hazaragi": "haz", "Heligoland North Frisian": "frr-hel", "Helu Prakrit": "pra-hel", "Hengyang Xiang": "hsn-hya", "Hengzhou Xiang": "hsn-hzh", "Hermopolitan Coptic": "cop-her", "High Alemannic German": "gsw-hig", "Highest Alemannic German": "gsw-hst", "Hokkaido Ainu": "ain-hok", "Hong Kong Cantonese": "yue-HK", "Hong Kong English": "en-HK", "Hong Kong Hakka": "hak-HK", "Hormozi": "bsg-hor", "Houlu Min": "nan-hou", "Hui'an Hokkien": "nan-hui", "Huiyang Hakka": "hak-hui", "Huvadhu Dhivehi": "dv-huv", "Hwanghae Korean": "ko-hwa", "Imperial Aramaic": "arc-imp", "Indian English": "en-IN", "Insular North Frisian": "frr-ins", "Insular Scots": "sco-ins", "Ionic Greek": "grc-ion", "Iranian Persian": "fa-ira", "Irish English": "en-IE", "Iron Ossetian": "os-iro", "Isfahani": "xme-isf", "Israeli Hebrew": "he-IL", "Jadrani": "ps-jad", "Jeolla Korean": "ko-jeo", "Jersey Norman": "nrf-jer", "Jewish Babylonian Aramaic": "tmr", "Jewish Literary Aramaic": "arc-jla", "Jewish Palestinian Aramaic": "jpa", "Jianghuai Mandarin": "cmn-jhu", "Jinjiang Hokkien": "nan-jin", "Jirofti": "rdb-jir", "Jowshaqani": "xme-jow", "Judeo-Arabic": "jrb", "Kafroni": "xme-kaf", "Kahaki": "xme-kah", "Kahnuji": "rdb-kah", "Kajkavian Serbo-Croatian": "kjv", "Kakari": "ps-kak", "Kaliarda": "el-kal", "Kamviri": "xvi", "Kandahari": "ps-kan", "Kaniguram": "oru-kan", "Karganrudi": "tly-kar", "Karrharde North Frisian": "frr-kar", "Kashani": "xme-kas", "Kasmiri Apabhramsa": "inc-aka", "Katchal": "ncb-kat", "Katharevousa": "el-kth", "Kathiyawadi": "gu-kat", "Kativiri": "bsh-kat", "Kentish Middle English": "enm-ken", "Kentish Old English": "ang-ken", "Kermani": "xme-krm", "Kesehi": "xme-kes", "Khalkha Mongolian": "mn-kha", "Khamba": "kbg", "Khams Tibetan": "khg", "Khargi": "fay-kar", "Khasa Prakrit": "pra-kha", "Khatak": "ps-xat", "Khiaraji": "tks-xia", "Khollari": "fay-kho", "Khorchin Mongolian": "mn-khr", "Khoznini": "tks-xoz", "Khufi": "sgh-xuf", "Khughni": "sgh-xug", "Khughni-Bajui": "sgh-xgb", "Khunsari": "kfm", "Khuri": "xme-xur", "Khuzestani Arabic": "acm-khu", "Kinmenese Hokkien": "nan-kin", "Kinyarwanda": "rw-kin", "Kirundi": "rw-run", "Koine Greek": "grc-koi", "Komjani": "xme-kom", "Kondazi": "fay-kon", "Korean Classical Chinese": "lzh-KO", "Kosena": "kze", "Kromanti": "alv-kro", "Kundagannada": "kn-kun", "Kuril Ainu": "ain-kur", "Kölsch": "ksh", "Languedocien": "oc-lan", "Lanuvian": "itc-lan", "Lanyin Mandarin": "cmn-lan", "Late Babylonian": "akk-lbb", "Late Brythonic": "bry-lat", "Late Egyptian": "egy-lat", "Late Khotanese": "kho-lat", "Late Latin": "la-lat", "Late Middle Chinese": "ltc-lat", "Late Middle Japanese": "ja-mid-lat", "Late Middle Mongol": "xng-lat", "Late Middle Persian": "pal-lat", "Late Old Chinese": "och-lat", "Late Old Korean": "oko-lat", "Late Old Ossetic": "oos-lat", "Late Old Persian": "peo-lat", "Late Old Swedish": "gmq-osw-lat", "Late Sogdian": "sog-lat", "Law French": "xno-law", "Lebanese North Levantine Arabic": "apc-leb", "Lesser Polish": "pl-les", "Limousin": "oc-lim", "Lisan ud-Dawat Gujarati": "gu-lda", "Literary Cantonese": "yue-lit", "Literary Chinese": "lzh-lit", "Logar": "oru-log", "Logudorese": "sc-src", "Lombardic": "lng", "Loudi Xiang": "hsn-lou", "Louisiana French": "fr-lou", "Low Alemannic German": "gsw-low", "Low Prussian": "nds-lpr", "Lucanian": "osc-luc", "Lunfardo": "es-lun", "Lycopolitan Coptic": "cop-lyc", "Língua Geral Amazônica": "tpw-lga", "Língua Geral Paulista": "tpw-lgp", "Maasina Fulfulde": "ffm", "Magadhi Prakrit": "pra-mag", "Mahallati": "xme-mah", "Maharastri Apabhramsa": "inc-ama", "Maharastri Prakrit": "pra-mah", "Mahsudi": "ps-mah", "Mainland North Frisian": "frr-mai", "Maio Kabuverdianu": "kea-mai", "Malaysian Huiyang Hakka": "hak-hui-MY", "Malaysian Mandarin": "cmn-MY", "Mamluk-Kipchak": "qwm-mam", "Manichaean Middle Persian": "xmn", "Manx English": "en-IM", "Masali": "tly-msa", "Masarami": "fay-mas", "Masovian Polish": "pl-mas", "Masulei": "tly-msu", "Medan Hokkien": "nan-med", "Medieval Hebrew": "he-med", "Medieval Latin": "la-med", "Medieval Sinhalese": "si-med", "Medieval Tashelhit": "shi-med", "Meixian Hakka": "hak-mei", "Mercian Old English": "ang-mer", "Mexican Spanish": "es-MX", "Meymehi": "xme-mey", "Middle Assyrian": "akk-mas", "Middle Babylonian": "akk-mbb", "Middle Belarusian": "zle-mbe", "Middle Bulgarian": "cu-bgm", "Middle Chuvash": "cv-mid", "Middle Egyptian": "egy-mid", "Middle Elamite": "elx-mid", "Middle Georgian": "ka-mid", "Middle Hindi": "hi-mid", "Middle Japanese": "ja-mid", "Middle Konkani": "kok-mid", "Middle Polish": "zlw-mpl", "Middle Russian": "zle-mru", "Middle Tamil": "ta-mid", "Middle Ukrainian": "zle-muk", "Minabi": "bsg-min", "Mishnaic Hebrew": "he-mis", "Missouri French": "fr-mis", "Mitanni": "inc-mit", "Moldovan": "ro-MD", "Mooring North Frisian": "frr-moo", "Mulaku Dhivehi": "dv-mul", "Mumviri": "bsh-mum", "Nabataean Aramaic": "arc-nab", "Nalbaria Kamrupi Assamese": "as-nkm", "Nancowry": "ncb-nan", "Nanjing Mandarin": "cmn-nan", "Naraqi": "xme-nar", "Nashalji": "xme-nas", "Natanzi": "ntz", "Nayini": "nyq", "Neo-Assyrian": "akk-nas", "Neo-Babylonian": "akk-nbb", "Neo-Elamite": "elx-neo", "Neo-Middle Egyptian": "egy-nmi", "New Latin": "la-new", "New Sanskrit": "sa-neo", "New Xiang": "hsn-new", "New Zealand English": "en-NZ", "Nigerian Fulfulde": "fuv", "Ningbonese": "wuu-nin", "Noakhailla Vaṅga Bengali": "bn-nvn", "Nones Ladin": "lld-non", "North Alaskan Inupiatun": "esi", "North American English": "en-NNN", "North Karelian": "krl-nor", "North Lebanese North Levantine Arabic": "apc-nle", "North Wales Welsh": "cy-nor", "Northeastern Mandarin": "cmn-noe", "Northeastern Pashto": "ps-nea", "Northern Irish English": "en-GB-NIR", "Northern Kankanaey": "xnn", "Northern Lushootseed": "lut-nor", "Northern Middle English": "enm-nor", "Northern Scots": "sco-nor", "Northern Talysh": "tly-nor", "Northern Tati": "xme-ttc-nor", "Northern Wu": "wuu-nor", "Northumbrian Old English": "ang-nor", "Northwest Alaskan Inupiatun": "esk", "Northwestern Pashto": "ps-nwe", "Nuorese": "sc-nuo", "Nushabadi": "xme-nus", "Odri": "pra-odr", "Old Akkadian": "akk-old", "Old Aramaic": "arc-old", "Old Assyrian": "akk-oas", "Old Avestan": "ae-old", "Old Azari": "xme-azr", "Old Babylonian": "akk-obb", "Old Braj": "bra-old", "Old Chuvash": "cv-old", "Old Coptic": "cop-old", "Old Dhivehi": "dv-old", "Old East Norse": "non-oen", "Old Egyptian": "egy-old", "Old Elamite": "elx-old", "Old Emilian": "egl-old", "Old Franco-Provençal": "frp-old", "Old Friulian": "fur-old", "Old Italian": "roa-oit", "Old Kazeruni": "fay-kzo", "Old Khotanese": "kho-old", "Old Kirghiz": "otk-kir", "Old Konkani": "kok-old", "Old Latin": "itc-ola", "Old Ligurian": "lij-old", "Old Lombard": "lmo-old", "Old Malay": "ms-old", "Old Mohawk": "iro-omo", "Old Neapolitan": "nap-old", "Old Northern French": "fro-nor", "Old Onondaga": "iro-oon", "Old Ossetic": "oos", "Old Piedmontese": "pms-old", "Old Provençal": "oc-pro-old", "Old Pskovian": "zle-ops", "Old Romagnol": "rgn-old", "Old Romansh": "rm-old", "Old Sardinian": "sc-old", "Old Shirazi": "fay-sho", "Old Sicilian": "scn-old", "Old Tagalog": "tl-old", "Old Thai": "th-old", "Old Venetan": "vec-old", "Old Wendat": "iro-ohu", "Old West Norse": "non-own", "Old Xiang": "hsn-old", "Ontenu": "ont", "Opuntian Locrian": "grc-opl", "Ordos Mongolian": "mn-ord", "Orkhon Turkic": "otk-ork", "Orma": "orc", "Oroshori": "sgh-oro", "Oxyrhynchite Coptic": "cop-oxy", "Ozolian Locrian": "grc-ozl", "Paisaci Prakrit": "pra-pai", "Palasbaria Kamrupi Assamese": "as-pkm", "Palatine German": "pfl", "Paleo-Balkan": "qsb-bal", "Paleo-Hispanic": "qsb-ibe", "Palladius": "cmn-palladius", "Palmyrene Aramaic": "arc-pal", "Pamphylian Greek": "grc-pam", "Paphian Greek": "el-pap", "Papuni": "fay-pap", "Penang Hokkien": "nan-pen", "Peruvian Spanish": "es-PE", "Peshawari": "ps-pes", "Philippine Hokkien": "nan-hbl-PH", "Philippine Mandarin": "cmn-PH", "Philippine Spanish": "es-PH", "Picard Old French": "fro-pic", "Polari": "pld", "Postal Romanization": "zh-postal", "Pracya": "pra-pra", "Praenestine": "itc-pra", "Pre-Angkorian Old Khmer": "okz-pre", "Pre-Classical Chinese": "lzh-pre", "Pre-Greek": "qsb-grc", "Proto-Anglo-Frisian": "gmw-afr-pro", "Proto-Arinic": "qfa-yrn-pro", "Proto-Baltic": "bat-pro", "Proto-Bulgar": "trk-bul-pro", "Proto-Common Turkic": "trk-cmn-pro", "Proto-Finno-Permic": "urj-fpr-pro", "Proto-Finno-Ugric": "fiu-pro", "Proto-Ketic": "qfa-yke-pro", "Proto-Kottic": "qfa-yko-pro", "Proto-Lycopolitan Coptic": "cop-ply", "Proto-Middle Indo-Aryan": "inc-ash-pro", "Proto-New Indo-Aryan": "pra-pro", "Proto-North Sea Germanic": "gmw-nsg-pro", "Proto-Oghur": "trk-ogr-pro", "Proto-Oghuz": "trk-ogz-pro", "Proto-Pumpokolic": "qfa-ypm-pro", "Proto-Romance": "roa-pro", "Proto-Tibeto-Burman": "tbq-pro", "Provençal": "oc-pro", "Puerto Rican Spanish": "es-PR", "Pulaar": "fuc", "Pular": "fuf", "Puter Romansh": "rm-put", "Pyongan Korean": "ko-pyo", "Qalhari": "xme-qal", "Qashqai": "qxq", "Qianlu Min": "nan-qia", "Qohrudi": "xme-qoh", "Quanzhou Hokkien": "nan-qua", "Renaissance Latin": "la-ren", "Rigvedic Sanskrit": "sa-rig", "Rioplatense Spanish": "es-AR", "Roshani": "sgh-ros", "Roshani-Khufi": "sgh-rsx", "Rumantsch Grischun": "rm-gri", "Russian Church Slavonic": "zls-chs-ru", "Sabari": "pra-sab", "Sagzabadi": "tks-sag", "Sahidic Coptic": "cop-sah", "Saint Dominican Creole French": "ht-sdm", "Sakari": "pra-sak", "Sakhalin Ainu": "ain-sak", "Sal Kabuverdianu": "kea-sal", "Sallands": "sdz", "Samghani": "fay-sam", "Samnite": "osc-sam", "Santiago Kabuverdianu": "kea-san", "Santo Antão Kabuverdianu": "kea-saa", "Sauraseni Apabhramsa": "inc-asa", "Sauraseni Prakrit": "pra-sau", "Scottish English": "en-GB-SCT", "Sedehi": "xme-sed", "Shadi Wu": "wuu-chm", "Shandarmani": "tly-san", "Shanghainese": "wuu-sha", "Shangsi Zhuang": "tai-shz", "Sher": "ps-ser", "Shirazi": "fay-shr", "Shuadit": "oc-jud", "Silesian East Central German": "sli", "Singapore Hokkien": "nan-hbl-SG", "Singapore Mandarin": "cmn-SG", "Sixian Hakka": "hak-six", "Skagit": "ska", "Snohomish": "sno", "Soi": "soj", "Sorkhi": "fay-sor", "Sotavento Kabuverdianu": "kea-sot", "South African English": "en-ZA", "South Karelian": "krl-sou", "South Lebanese North Levantine Arabic": "apc-sle", "South Wales Welsh": "cy-sou", "Southeastern Pashto": "ps-sea", "Southern Balochi": "bcc", "Southern Lushootseed": "slh", "Southern Malaysian Hokkien": "nan-spm", "Southern Middle English": "enm-sou", "Southern Scots": "sco-sou", "Southern Talysh": "tly-sou", "Southern Tati": "xme-ttc-sou", "Southwestern Mandarin": "cmn-sow", "Southwestern Pashto": "ps-swe", "Standard Babylonian": "akk-stb", "Stellingwerfs": "stl", "Suevic": "gem-sue", "Sukhothai Old Thai": "th-suk", "Surmiran Romansh": "rm-srm", "Sursilvan Romansh": "rm-srs", "Sutsilvan Romansh": "rm-sut", "Suzhounese": "wuu-suz", "Swiss French": "fr-CH", "Switzerland German": "de-CH", "Switzerland Italian": "it-CH", "Sylt North Frisian": "frr-syl", "Syrian North Levantine Arabic": "apc-syr", "São Nicolau Kabuverdianu": "kea-sni", "São Vicente Kabuverdianu": "kea-svi", "Taiwanese Hakka": "hak-TW", "Taiwanese Hokkien": "nan-hbl-TW", "Taiwanese Mandarin": "cmn-TW", "Takestani": "tks-tak", "Takka Apabhramsa": "inc-ata", "Taleshdulabi": "tly-tal", "Tamahaq": "thv", "Tamasheq": "taq", "Tarehi": "xme-trh", "Tari": "xme-tar", "Tawellemmet": "ttq", "Tayert": "thz", "Thessalian Greek": "grc-ths", "Tianjin Mandarin": "cmn-tia", "Tong'an Hokkien": "nan-ton", "Tongyong Pinyin": "cmn-tongyong", "Torlakian Serbo-Croatian": "sh-tor", "Tosk Albanian": "als", "Traditional Chinese poetry": "lzh-shi", "Transalpine Gaulish": "xtg", "Tseku": "tsk", "Tularudi": "tly-tul", "Twents": "twd", "Twi Akan": "tw", "Ukrainian Church Slavonic": "zls-chs-uk", "Ulster English": "en-uls", "Ulster Scots": "sco-uls", "United States Spanish": "es-US", "Upper Saxon German": "sxu", "Vafsi": "vaf", "Valencian": "ca-val", "Vallader Romansh": "rm-val", "Valujerdi": "xme-val", "Varani": "xme-var", "Varzenehi": "xme-vrz", "Vedic Sanskrit": "vsn", "Veluws": "vel", "Venezuelan Spanish": "es-VE", "Viennese German": "de-AT-vie", "Vietnamese Classical Chinese": "lzh-VI", "Viryal Chuvash": "cv-vir", "Vivaro-Alpine": "oc-viv", "Volga Bulgar": "xbo-vol", "Vonishuni": "xme-von", "Vracada Apabhramsa": "inc-avr", "Vulgar Latin": "la-vul", "Waata": "ssn", "Wade–Giles": "cmn-wadegiles", "Walser German": "wae", "Wasa": "wss", "Waziri": "ps-waz", "Welsh English": "en-GB-WLS", "Wenzhounese": "wuu-wen", "West Midland Middle English": "enm-wmi", "West Saxon Old English": "ang-wsx", "Western Armenian": "hyw", "Western Balochi": "bgn", "Western Mansi": "mns-wes", "Western Niger Fulfulde": "fuh", "Western Punjabi": "pnb", "Western Tati": "xme-ttc-wes", "Westphalian": "wep", "Wiedingharde North Frisian": "frr-wie", "Written vernacular Cantonese": "yue-wvc", "Written vernacular Mandarin": "cmn-wvc", "Written vernacular Taishanese": "zhx-tai-wvc", "Wuhan Mandarin": "cmn-wuh", "Xiamen Hokkien": "nan-xia", "Xining Mandarin": "cmn-xin", "Yangzhou Mandarin": "cmn-yan", "Yarandi": "xme-yar", "Yazdi": "xme-yaz", "Yongchun Hokkien": "nan-yon", "Younger Avestan": "ae-yng", "Yukjin Korean": "ko-yuk", "Zarphatic": "zrp", "Zefrehi": "xme-zef", "Zhangping Hokkien": "nan-zhp", "Zhangzhou Hokkien": "nan-zha", "Zhao'an Hakka": "hak-zha", "Zhao'an Hokkien": "nan-zho", "Zhongshan Min": "zhx-zho", "Zori": "xme-zor", "Zoroastrian Dari": "gbz", "taxonomic name": "mul-tax", "the BMAC substrate": "qsb-bma" } mifa94441zjggsetp815ei1at85xxlb 235481 235480 2026-06-02T11:16:39Z Lee 19 [[:en:Module:etymology_languages/canonical_names.json]] වෙතින් එක් සංශෝධනයක් 235480 json application/json { "ALUPEC Kabuverdianu": "kea-alu", "Abhiri": "pra-abh", "Abron": "abr", "Abuzeydabadi": "xme-abz", "Abyanehi": "xme-aby", "Acadian French": "fr-aca", "Achaemenid Elamite": "elx-ach", "Achterhoeks": "act", "Adamawa Fulfulde": "fub", "Addu Dhivehi": "dv-add", "Aeolic Greek": "grc-aeo", "Afghan Uzbek": "uz-afg", "African Romance": "la-afr", "Afridi": "ps-afr", "Akhmimic Coptic": "cop-akh", "Akuapem Twi": "tw-aku", "Aleppine North Levantine Arabic": "apc-ale", "Alsatian Alemannic German": "gsw-FR-als", "Amdo Tibetan": "adx", "American English": "en-US", "Amorehi": "xme-amo", "Ampezan Ladin": "lld-amp", "Amrum North Frisian": "frr-amr", "Anaraki": "xme-ana", "Anatri Chuvash": "cv-ana", "Anbarani": "tly-anb", "Angkorian Old Khmer": "okz-ang", "Anglian Old English": "ang-ang", "Anglo-Norman": "xno", "Anxi Hokkien": "nan-anx", "Aquitanian": "xaq", "Aranese": "oc-ara", "Arbëresh Albanian": "aae", "Arcadian Greek": "grc-arc", "Arcadocypriot Greek": "grc-arp", "Ardestani": "xme-ard", "Ardhamagadhi Prakrit": "pra-ard", "Arghu": "klj-arg", "Armeno-Kipchak": "qwm-arm", "Arvanitika Albanian": "aat", "Asalemi": "tly-asa", "Asante Twi": "tw-asa", "Ashtiani": "atn", "Attic Greek": "grc-att", "Australian Aboriginal English": "en-aae", "Australian English": "en-AU", "Austrian German": "de-AT", "Auvergnat": "oc-auv", "Avahattha": "inc-aav", "Avanti": "pra-ava", "Ayutthaya Old Thai": "th-ayu", "Azerbaijani Talysh": "tly-aze", "Badiot Ladin": "lld-bad", "Badrudi": "xme-bdr", "Bagirmi Fulfulde": "fui", "Bahliki": "pra-bah", "Bajui": "sgh-baj", "Baltic German": "de-bal", "Bandari": "bsg-ban", "Bangash": "ps-bng", "Bannu": "ps-ban", "Barlavento Kabuverdianu": "kea-bar", "Barpetia Kamrupi Assamese": "as-bkm", "Bartangi": "sgh-bar", "Bartangi-Oroshori": "sgh-bro", "Beijing Mandarin": "cmn-bei", "Beijingic Mandarin": "cmn-bec", "Belgian Dutch": "nl-BE", "Besemah": "pse-bsm", "Betawi Kota": "bew-kot", "Bhaca": "xh-bha", "Biblical Aramaic": "arc-bib", "Biblical Hebrew": "hbo", "Bidhandi": "xme-bid", "Bijagani": "xme-bij", "Boa Vista Kabuverdianu": "kea-bvi", "Boeotian Greek": "grc-boi", "Bohairic Coptic": "cop-boh", "Bolivian Spanish": "es-BO", "Bombay Hindi": "hi-mum", "Borana": "gax", "Borgu Fulfulde": "fue", "Borujerdi": "xme-bor", "Brahmanic Sanskrit": "sa-bra", "Brava Kabuverdianu": "kea-bra", "Brazilian Portuguese": "pt-BR", "British English": "en-GB", "Buddhist Hybrid Sanskrit": "sa-bhs", "Burenjani": "fay-bur", "Bushehri": "fay-bsh", "Byzantine Greek": "gkm", "Cadorino Ladin": "lld-cad", "Cajun French": "frc", "California English": "en-US-CA", "Camorta": "ncb-cam", "Campidanese": "sc-sro", "Canadian English": "en-CA", "Canadian French": "fr-CA", "Canadian Ukrainian": "uk-CA", "Candali": "pra-can", "Capenate": "xfa-cap", "Central Ghilzay": "ps-cgi", "Central Korean": "ko-cen", "Central Plains Mandarin": "cmn-cep", "Central Talysh": "tly-cen", "Central Tati": "xme-ttc-cen", "Central-Eastern Niger Fulfulde": "fuq", "Chakavian Serbo-Croatian": "ckm", "Chakhar Mongolian": "mn-cha", "Chali Tati": "tks-cal", "Changtai Hokkien": "nan-cha", "Chilean Spanish": "es-CL", "Chimehi": "xme-cim", "Christian Palestinian Aramaic": "arc-cpa", "Chungcheong Korean": "ko-chu", "Ci": "lzh-cii", "Cisalpine Gaulish": "xcg", "Classical Azerbaijani": "az-cls", "Classical Cantonese": "lzh-yue", "Classical Japanese": "ja-cla", "Classical Latin": "la-cla", "Classical Malay": "ms-cla", "Classical Mandarin": "lzh-cmn", "Classical Persian": "fa-cls", "Classical Sanskrit": "cls", "Classical Tagalog": "tl-cls", "Classical Taishanese": "lzh-tai", "Classical Taiwanese Mandarin": "lzh-cmn-TW", "Colombian Spanish": "es-CO", "Common Bantu": "bnt-cmn", "Contemporary Latin": "la-con", "Coptic Dialect G": "cop-ggg", "Coptic Dialect J": "cop-jjj", "Coptic Dialect K": "cop-kkk", "Coptic Dialect P": "cop-ppp", "Cretan Ancient Greek": "grc-kre", "Cretan Greek": "el-crt", "Cuban Spanish": "es-CU", "Cuman": "qwm-cum", "Cypriot Ancient Greek": "grc-cyp", "Cypriot Greek": "el-cyp", "Cypriot Turkish": "tr-CY", "Dabu Hakka": "hak-dab", "Daksinatya": "pra-dak", "Damascene North Levantine Arabic": "apc-dam", "Danesfani": "tks-dan", "Danube Bulgar": "xbo-dan", "Danzhou Chinese": "zhx-dan", "Dari": "prs", "Dashtaki": "fay-dsh", "Davani": "fay-dav", "Delijani": "xme-del", "Dhakaiya Vaṅga Bengali": "bn-dvn", "Digor Ossetian": "os-dig", "Dnieper Baltic": "bat-dni", "Dobrujan Tatar": "crh-dbj", "Doric Greek": "grc-dor", "Dramili": "pra-dra", "Drents": "drt", "Dutch Low Saxon": "nds-nl", "Early Brythonic": "bry-ear", "Early Mandarin": "cmn-ear", "Early Medieval Latin": "la-eme", "Early Middle Chinese": "ltc-ear", "Early Middle Japanese": "ja-mid-ear", "Early Middle Korean": "okm-ear", "Early Middle Mongol": "xng-ear", "Early Middle Persian": "pal-ear", "Early Modern Czech": "cs-ear", "Early Modern English": "en-ear", "Early Modern Hakka": "hak-eam", "Early Modern Japanese": "ja-ear", "Early Modern Spanish": "es-ear", "Early New High German": "de-ear", "Early New Persian": "fa-ear", "Early Old Chinese": "och-ear", "Early Old Ossetic": "oos-ear", "Early Old Persian": "peo-ear", "Early Scots": "enm-esc", "Early Sogdian": "sog-ear", "East Frisian Low German": "frs", "East Midland Middle English": "enm-emi", "Eastern Armenian": "hye", "Eastern Balochi": "bgp", "Eastern Mansi": "mns-eas", "Eastern Old Japanese": "ojp-eas", "Eastern Tati": "xme-ttc-eas", "Ebrahimabadi": "tks-ebr", "Ecclesiastical Latin": "la-ecc", "Elean Greek": "grc-ela", "Emamzada Esmaili": "fay-eze", "Epic Greek": "grc-epi", "Epic Sanskrit": "sa-epi", "Esfarvarini": "tks-esf", "European Portuguese": "pt-PT", "Fante Akan": "fat", "Farizandi": "xme-far", "Fascian Ladin": "lld-fas", "Fayyumic Coptic": "cop-fay", "Fodom Ladin": "lld-fod", "Fogo Kabuverdianu": "kea-fog", "Fornes Ladin": "lld-for", "Frankish": "frk", "Fumani": "tly-fum", "Fuyu Kyrgyz": "kjh-fyu", "Föhr North Frisian": "frr-foh", "Föhr-Amrum North Frisian": "frr-fam", "Gangwon Korean": "ko-gan", "Gascon": "oc-gas", "Gavkoshaki": "fay-gav", "Gazi": "gzi", "Geordie": "en-geo", "German Low German": "nds-de", "Ghat": "thv-ght", "Gheg Albanian": "aln", "Gherdëina Ladin": "lld-ghe", "Goesharde North Frisian": "frr-goe", "Golyad": "bat-gol", "Goral": "pl-gor", "Greater Polish": "pl-gre", "Greenlandic Norse": "non-grn", "Gronings": "gos", "Guangzhou Cantonese": "yue-gua", "Guanzhong Mandarin": "cmn-gua", "Guernsey Norman": "nrf-grn", "Guilin Mandarin": "cmn-gui", "Gurjara Apabhramsa": "inc-agu", "Gyeonggi Korean": "ko-gyg", "Gyeongsang Korean": "ko-gys", "Hailu Hakka": "hak-hai", "Halligen North Frisian": "frr-hal", "Hamadani": "xme-ham", "Hamgyong Korean": "ko-ham", "Hangzhounese": "wuu-han", "Hanjani": "xme-han", "Hanyu Pinyin": "cmn-pinyin", "Harar Oromo": "hae", "Hatran Aramaic": "arc-hat", "Havigannada": "kn-hav", "Hazaragi": "haz", "Heligoland North Frisian": "frr-hel", "Helu Prakrit": "pra-hel", "Hengyang Xiang": "hsn-hya", "Hengzhou Xiang": "hsn-hzh", "Hermopolitan Coptic": "cop-her", "High Alemannic German": "gsw-hig", "Highest Alemannic German": "gsw-hst", "Hokkaido Ainu": "ain-hok", "Hong Kong Cantonese": "yue-HK", "Hong Kong English": "en-HK", "Hong Kong Hakka": "hak-HK", "Hormozi": "bsg-hor", "Houlu Min": "nan-hou", "Hui'an Hokkien": "nan-hui", "Huiyang Hakka": "hak-hui", "Huvadhu Dhivehi": "dv-huv", "Hwanghae Korean": "ko-hwa", "Imperial Aramaic": "arc-imp", "Indian English": "en-IN", "Insular North Frisian": "frr-ins", "Insular Scots": "sco-ins", "Ionic Greek": "grc-ion", "Iranian Persian": "fa-ira", "Irish English": "en-IE", "Iron Ossetian": "os-iro", "Isfahani": "xme-isf", "Israeli Hebrew": "he-IL", "Jadrani": "ps-jad", "Jeolla Korean": "ko-jeo", "Jersey Norman": "nrf-jer", "Jewish Babylonian Aramaic": "tmr", "Jewish Literary Aramaic": "arc-jla", "Jewish Palestinian Aramaic": "jpa", "Jianghuai Mandarin": "cmn-jhu", "Jinjiang Hokkien": "nan-jin", "Jirofti": "rdb-jir", "Jowshaqani": "xme-jow", "Judeo-Arabic": "jrb", "Kafroni": "xme-kaf", "Kahaki": "xme-kah", "Kahnuji": "rdb-kah", "Kajkavian Serbo-Croatian": "kjv", "Kakari": "ps-kak", "Kaliarda": "el-kal", "Kamviri": "xvi", "Kandahari": "ps-kan", "Kaniguram": "oru-kan", "Karganrudi": "tly-kar", "Karrharde North Frisian": "frr-kar", "Kashani": "xme-kas", "Kasmiri Apabhramsa": "inc-aka", "Katchal": "ncb-kat", "Katharevousa": "el-kth", "Kathiyawadi": "gu-kat", "Kativiri": "bsh-kat", "Kentish Middle English": "enm-ken", "Kentish Old English": "ang-ken", "Kermani": "xme-krm", "Kesehi": "xme-kes", "Khalkha Mongolian": "mn-kha", "Khamba": "kbg", "Khams Tibetan": "khg", "Khargi": "fay-kar", "Khasa Prakrit": "pra-kha", "Khatak": "ps-xat", "Khiaraji": "tks-xia", "Khollari": "fay-kho", "Khorchin Mongolian": "mn-khr", "Khoznini": "tks-xoz", "Khufi": "sgh-xuf", "Khughni": "sgh-xug", "Khughni-Bajui": "sgh-xgb", "Khunsari": "kfm", "Khuri": "xme-xur", "Khuzestani Arabic": "acm-khu", "Kinmenese Hokkien": "nan-kin", "Kinyarwanda": "rw-kin", "Kirundi": "rw-run", "Koine Greek": "grc-koi", "Komjani": "xme-kom", "Kondazi": "fay-kon", "Korean Classical Chinese": "lzh-KO", "Kosena": "kze", "Kromanti": "alv-kro", "Kundagannada": "kn-kun", "Kuril Ainu": "ain-kur", "Kölsch": "ksh", "Languedocien": "oc-lan", "Lanuvian": "itc-lan", "Lanyin Mandarin": "cmn-lan", "Late Babylonian": "akk-lbb", "Late Brythonic": "bry-lat", "Late Egyptian": "egy-lat", "Late Khotanese": "kho-lat", "Late Latin": "la-lat", "Late Middle Chinese": "ltc-lat", "Late Middle Japanese": "ja-mid-lat", "Late Middle Mongol": "xng-lat", "Late Middle Persian": "pal-lat", "Late Old Chinese": "och-lat", "Late Old Korean": "oko-lat", "Late Old Ossetic": "oos-lat", "Late Old Persian": "peo-lat", "Late Old Swedish": "gmq-osw-lat", "Late Sogdian": "sog-lat", "Law French": "xno-law", "Lebanese North Levantine Arabic": "apc-leb", "Lesser Polish": "pl-les", "Limousin": "oc-lim", "Lisan ud-Dawat Gujarati": "gu-lda", "Literary Cantonese": "yue-lit", "Literary Chinese": "lzh-lit", "Logar": "oru-log", "Logudorese": "sc-src", "Lombardic": "lng", "Loudi Xiang": "hsn-lou", "Louisiana French": "fr-lou", "Low Alemannic German": "gsw-low", "Low Prussian": "nds-lpr", "Lucanian": "osc-luc", "Lunfardo": "es-lun", "Lycopolitan Coptic": "cop-lyc", "Língua Geral Amazônica": "tpw-lga", "Língua Geral Paulista": "tpw-lgp", "Maasina Fulfulde": "ffm", "Magadhi Prakrit": "pra-mag", "Mahallati": "xme-mah", "Maharastri Apabhramsa": "inc-ama", "Maharastri Prakrit": "pra-mah", "Mahsudi": "ps-mah", "Mainland North Frisian": "frr-mai", "Maio Kabuverdianu": "kea-mai", "Malaysian Huiyang Hakka": "hak-hui-MY", "Malaysian Mandarin": "cmn-MY", "Mamluk-Kipchak": "qwm-mam", "Manichaean Middle Persian": "xmn", "Manx English": "en-IM", "Masali": "tly-msa", "Masarami": "fay-mas", "Masovian Polish": "pl-mas", "Masulei": "tly-msu", "Medan Hokkien": "nan-med", "Medieval Hebrew": "he-med", "Medieval Latin": "la-med", "Medieval Sinhalese": "si-med", "Medieval Tashelhit": "shi-med", "Meixian Hakka": "hak-mei", "Mercian Old English": "ang-mer", "Mexican Spanish": "es-MX", "Meymehi": "xme-mey", "Middle Assyrian": "akk-mas", "Middle Babylonian": "akk-mbb", "Middle Belarusian": "zle-mbe", "Middle Bulgarian": "cu-bgm", "Middle Chuvash": "cv-mid", "Middle Egyptian": "egy-mid", "Middle Elamite": "elx-mid", "Middle Georgian": "ka-mid", "Middle Hindi": "hi-mid", "Middle Japanese": "ja-mid", "Middle Konkani": "kok-mid", "Middle Polish": "zlw-mpl", "Middle Russian": "zle-mru", "Middle Tamil": "ta-mid", "Middle Ukrainian": "zle-muk", "Minabi": "bsg-min", "Mishnaic Hebrew": "he-mis", "Missouri French": "fr-mis", "Mitanni": "inc-mit", "Moldovan": "ro-MD", "Mooring North Frisian": "frr-moo", "Mulaku Dhivehi": "dv-mul", "Mumviri": "bsh-mum", "Nabataean Aramaic": "arc-nab", "Nalbaria Kamrupi Assamese": "as-nkm", "Nancowry": "ncb-nan", "Nanjing Mandarin": "cmn-nan", "Naraqi": "xme-nar", "Nashalji": "xme-nas", "Natanzi": "ntz", "Nayini": "nyq", "Neo-Assyrian": "akk-nas", "Neo-Babylonian": "akk-nbb", "Neo-Elamite": "elx-neo", "Neo-Middle Egyptian": "egy-nmi", "New Latin": "la-new", "New Sanskrit": "sa-neo", "New Xiang": "hsn-new", "New Zealand English": "en-NZ", "Nigerian Fulfulde": "fuv", "Ningbonese": "wuu-nin", "Noakhailla Vaṅga Bengali": "bn-nvn", "Nones Ladin": "lld-non", "North Alaskan Inupiatun": "esi", "North American English": "en-NNN", "North Karelian": "krl-nor", "North Lebanese North Levantine Arabic": "apc-nle", "North Wales Welsh": "cy-nor", "Northeastern Mandarin": "cmn-noe", "Northeastern Pashto": "ps-nea", "Northern Irish English": "en-GB-NIR", "Northern Kankanaey": "xnn", "Northern Lushootseed": "lut-nor", "Northern Middle English": "enm-nor", "Northern Scots": "sco-nor", "Northern Talysh": "tly-nor", "Northern Tati": "xme-ttc-nor", "Northern Wu": "wuu-nor", "Northumbrian Old English": "ang-nor", "Northwest Alaskan Inupiatun": "esk", "Northwestern Pashto": "ps-nwe", "Nuorese": "sc-nuo", "Nushabadi": "xme-nus", "Odri": "pra-odr", "Old Akkadian": "akk-old", "Old Aramaic": "arc-old", "Old Assyrian": "akk-oas", "Old Avestan": "ae-old", "Old Azari": "xme-azr", "Old Babylonian": "akk-obb", "Old Braj": "bra-old", "Old Chuvash": "cv-old", "Old Coptic": "cop-old", "Old Dhivehi": "dv-old", "Old East Norse": "non-oen", "Old Egyptian": "egy-old", "Old Elamite": "elx-old", "Old Emilian": "egl-old", "Old Franco-Provençal": "frp-old", "Old Friulian": "fur-old", "Old Italian": "roa-oit", "Old Kazeruni": "fay-kzo", "Old Khotanese": "kho-old", "Old Kirghiz": "otk-kir", "Old Konkani": "kok-old", "Old Latin": "itc-ola", "Old Ligurian": "lij-old", "Old Lombard": "lmo-old", "Old Malay": "ms-old", "Old Mohawk": "iro-omo", "Old Neapolitan": "nap-old", "Old Northern French": "fro-nor", "Old Onondaga": "iro-oon", "Old Ossetic": "oos", "Old Piedmontese": "pms-old", "Old Provençal": "oc-pro-old", "Old Pskovian": "zle-ops", "Old Romagnol": "rgn-old", "Old Romansh": "rm-old", "Old Sardinian": "sc-old", "Old Shirazi": "fay-sho", "Old Sicilian": "scn-old", "Old Tagalog": "tl-old", "Old Thai": "th-old", "Old Venetan": "vec-old", "Old Wendat": "iro-ohu", "Old West Norse": "non-own", "Old Xiang": "hsn-old", "Ontenu": "ont", "Opuntian Locrian": "grc-opl", "Ordos Mongolian": "mn-ord", "Orkhon Turkic": "otk-ork", "Orma": "orc", "Oroshori": "sgh-oro", "Oxyrhynchite Coptic": "cop-oxy", "Ozolian Locrian": "grc-ozl", "Paisaci Prakrit": "pra-pai", "Palasbaria Kamrupi Assamese": "as-pkm", "Palatine German": "pfl", "Paleo-Balkan": "qsb-bal", "Paleo-Hispanic": "qsb-ibe", "Palladius": "cmn-palladius", "Palmyrene Aramaic": "arc-pal", "Pamphylian Greek": "grc-pam", "Paphian Greek": "el-pap", "Papuni": "fay-pap", "Penang Hokkien": "nan-pen", "Peruvian Spanish": "es-PE", "Peshawari": "ps-pes", "Philippine Hokkien": "nan-hbl-PH", "Philippine Mandarin": "cmn-PH", "Philippine Spanish": "es-PH", "Picard Old French": "fro-pic", "Polari": "pld", "Postal Romanization": "zh-postal", "Pracya": "pra-pra", "Praenestine": "itc-pra", "Pre-Angkorian Old Khmer": "okz-pre", "Pre-Classical Chinese": "lzh-pre", "Pre-Greek": "qsb-grc", "Proto-Anglo-Frisian": "gmw-afr-pro", "Proto-Arinic": "qfa-yrn-pro", "Proto-Baltic": "bat-pro", "Proto-Bulgar": "trk-bul-pro", "Proto-Common Turkic": "trk-cmn-pro", "Proto-Finno-Permic": "urj-fpr-pro", "Proto-Finno-Ugric": "fiu-pro", "Proto-Ketic": "qfa-yke-pro", "Proto-Kottic": "qfa-yko-pro", "Proto-Lycopolitan Coptic": "cop-ply", "Proto-Middle Indo-Aryan": "inc-ash-pro", "Proto-New Indo-Aryan": "pra-pro", "Proto-North Sea Germanic": "gmw-nsg-pro", "Proto-Oghur": "trk-ogr-pro", "Proto-Oghuz": "trk-ogz-pro", "Proto-Pumpokolic": "qfa-ypm-pro", "Proto-Romance": "roa-pro", "Proto-Tibeto-Burman": "tbq-pro", "Provençal": "oc-pro", "Puerto Rican Spanish": "es-PR", "Pulaar": "fuc", "Pular": "fuf", "Puter Romansh": "rm-put", "Pyongan Korean": "ko-pyo", "Qalhari": "xme-qal", "Qashqai": "qxq", "Qianlu Min": "nan-qia", "Qohrudi": "xme-qoh", "Quanzhou Hokkien": "nan-qua", "Renaissance Latin": "la-ren", "Rigvedic Sanskrit": "sa-rig", "Rioplatense Spanish": "es-AR", "Roshani": "sgh-ros", "Roshani-Khufi": "sgh-rsx", "Rumantsch Grischun": "rm-gri", "Russian Church Slavonic": "zls-chs-ru", "Sabari": "pra-sab", "Sagzabadi": "tks-sag", "Sahidic Coptic": "cop-sah", "Saint Dominican Creole French": "ht-sdm", "Sakari": "pra-sak", "Sakhalin Ainu": "ain-sak", "Sal Kabuverdianu": "kea-sal", "Sallands": "sdz", "Samghani": "fay-sam", "Samnite": "osc-sam", "Santiago Kabuverdianu": "kea-san", "Santo Antão Kabuverdianu": "kea-saa", "Sauraseni Apabhramsa": "inc-asa", "Sauraseni Prakrit": "pra-sau", "Scottish English": "en-GB-SCT", "Sedehi": "xme-sed", "Shadi Wu": "wuu-chm", "Shandarmani": "tly-san", "Shanghainese": "wuu-sha", "Shangsi Zhuang": "tai-shz", "Sher": "ps-ser", "Shirazi": "fay-shr", "Shuadit": "oc-jud", "Silesian East Central German": "sli", "Singapore Hokkien": "nan-hbl-SG", "Singapore Mandarin": "cmn-SG", "Sixian Hakka": "hak-six", "Skagit": "ska", "Snohomish": "sno", "Soi": "soj", "Sorkhi": "fay-sor", "Sotavento Kabuverdianu": "kea-sot", "South African English": "en-ZA", "South Karelian": "krl-sou", "South Lebanese North Levantine Arabic": "apc-sle", "South Wales Welsh": "cy-sou", "Southeastern Pashto": "ps-sea", "Southern Balochi": "bcc", "Southern Lushootseed": "slh", "Southern Malaysian Hokkien": "nan-spm", "Southern Middle English": "enm-sou", "Southern Scots": "sco-sou", "Southern Talysh": "tly-sou", "Southern Tati": "xme-ttc-sou", "Southwestern Mandarin": "cmn-sow", "Southwestern Pashto": "ps-swe", "Standard Babylonian": "akk-stb", "Stellingwerfs": "stl", "Suevic": "gem-sue", "Sukhothai Old Thai": "th-suk", "Surmiran Romansh": "rm-srm", "Sursilvan Romansh": "rm-srs", "Sutsilvan Romansh": "rm-sut", "Suzhounese": "wuu-suz", "Swiss French": "fr-CH", "Switzerland German": "de-CH", "Switzerland Italian": "it-CH", "Sylt North Frisian": "frr-syl", "Syrian North Levantine Arabic": "apc-syr", "São Nicolau Kabuverdianu": "kea-sni", "São Vicente Kabuverdianu": "kea-svi", "Taiwanese Hakka": "hak-TW", "Taiwanese Hokkien": "nan-hbl-TW", "Taiwanese Mandarin": "cmn-TW", "Takestani": "tks-tak", "Takka Apabhramsa": "inc-ata", "Taleshdulabi": "tly-tal", "Tamahaq": "thv", "Tamasheq": "taq", "Tarehi": "xme-trh", "Tari": "xme-tar", "Tawellemmet": "ttq", "Tayert": "thz", "Thessalian Greek": "grc-ths", "Tianjin Mandarin": "cmn-tia", "Tong'an Hokkien": "nan-ton", "Tongyong Pinyin": "cmn-tongyong", "Torlakian Serbo-Croatian": "sh-tor", "Tosk Albanian": "als", "Traditional Chinese poetry": "lzh-shi", "Transalpine Gaulish": "xtg", "Tseku": "tsk", "Tularudi": "tly-tul", "Twents": "twd", "Twi Akan": "tw", "Ukrainian Church Slavonic": "zls-chs-uk", "Ulster English": "en-uls", "Ulster Scots": "sco-uls", "United States Spanish": "es-US", "Upper Saxon German": "sxu", "Vafsi": "vaf", "Valencian": "ca-val", "Vallader Romansh": "rm-val", "Valujerdi": "xme-val", "Varani": "xme-var", "Varzenehi": "xme-vrz", "Vedic Sanskrit": "vsn", "Veluws": "vel", "Venezuelan Spanish": "es-VE", "Viennese German": "de-AT-vie", "Vietnamese Classical Chinese": "lzh-VI", "Viryal Chuvash": "cv-vir", "Vivaro-Alpine": "oc-viv", "Volga Bulgar": "xbo-vol", "Vonishuni": "xme-von", "Vracada Apabhramsa": "inc-avr", "Vulgar Latin": "la-vul", "Waata": "ssn", "Wade–Giles": "cmn-wadegiles", "Walser German": "wae", "Wasa": "wss", "Waziri": "ps-waz", "Welsh English": "en-GB-WLS", "Wenzhounese": "wuu-wen", "West Midland Middle English": "enm-wmi", "West Saxon Old English": "ang-wsx", "Western Armenian": "hyw", "Western Balochi": "bgn", "Western Mansi": "mns-wes", "Western Niger Fulfulde": "fuh", "Western Punjabi": "pnb", "Western Tati": "xme-ttc-wes", "Westphalian": "wep", "Wiedingharde North Frisian": "frr-wie", "Written vernacular Cantonese": "yue-wvc", "Written vernacular Mandarin": "cmn-wvc", "Written vernacular Taishanese": "zhx-tai-wvc", "Wuhan Mandarin": "cmn-wuh", "Xiamen Hokkien": "nan-xia", "Xining Mandarin": "cmn-xin", "Yangzhou Mandarin": "cmn-yan", "Yarandi": "xme-yar", "Yazdi": "xme-yaz", "Yongchun Hokkien": "nan-yon", "Younger Avestan": "ae-yng", "Yukjin Korean": "ko-yuk", "Zarphatic": "zrp", "Zefrehi": "xme-zef", "Zhangping Hokkien": "nan-zhp", "Zhangzhou Hokkien": "nan-zha", "Zhao'an Hakka": "hak-zha", "Zhao'an Hokkien": "nan-zho", "Zhongshan Min": "zhx-zho", "Zori": "xme-zor", "Zoroastrian Dari": "gbz", "taxonomic name": "mul-tax", "the BMAC substrate": "qsb-bma" } mifa94441zjggsetp815ei1at85xxlb