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.5 case-sensitive මාධ්‍යය විශේෂ සාකච්ඡාව පරිශීලක පරිශීලක සාකච්ඡාව වික්ෂනරි වික්ෂනරි සාකච්ඡාව ගොනුව ගොනුව සාකච්ඡාව මාධ්‍යවිකි මාධ්‍යවිකි සාකච්ඡාව සැකිල්ල සැකිලි සාකච්ඡාව උදවු උදවු සාකච්ඡාව ප්‍රවර්ගය ප්‍රවර්ග සාකච්ඡාව TimedText TimedText talk Module Module talk Event Event talk හෙළ 0 11425 235591 233640 2026-06-06T12:18:54Z WrdSrchSi 3305 + head|si|root + wikitable + ව්‍යුත්පන්න පද + ප්‍රවර්ගය 235591 wikitext text/x-wiki {{see also|හෙල}} ==සිංහල== === නිරුක්තිය 1 === {{rfe|si}} ===උච්චාරණය=== * {{IPA|si|/ˈɦeɭə/}} ===නාම පදය=== {{si-noun}} # [[එළ]] # [[සුදු]] # [[සිංහල]] ===නාම ප්‍රකෘතිය=== {{head|si|root}} # {{lb|si|ප්‍රාණවාචී}} {{rfdef|si}} # {{lb|si|අප්‍රාණවාචී}} {{rfdef|si}} # {{lb|si|අප්‍රාණවාචී}} {{rfdef|si}} ===== වරනැඟීම ===== {| class="wikitable" |+ |- !!!ප්‍රාණවාචී<br>ඒකවචන!!ප්‍රාණවාචී<br>බහුවචන!!ප්‍රාණවාචී<br>අනියමාර්ථ!!අප්‍රාණවාචී<br>ඒකවචන!!අප්‍රාණවාචී<br>බහුවචන!!අප්‍රාණවාචී<br>අනියමාර්ථ |- | පෙර ||align="center"|[[හෙළයා#නාම පදය|හෙළයා]]||align="center"|[[හෙළයෝ#නාම පදය|හෙළයෝ]]||align="center"|[[හෙළයෙක්#නාම පදය|හෙළයෙක්]]||align="center"|[[හෙළය#නාම පදය|හෙළය]]|||| |- | කම්, කතු||align="center"|[[හෙළයා#නාම පදය|හෙළයා]]||align="center"|[[හෙළයන්#නාම පදය|හෙළයන්]]||align="center"|[[හෙළයකු#නාම පදය|හෙළයකු]]|||||| |- | කරණ, අවදි |||||||||||| |- | සපදන් ||align="center"|[[හෙළයාට#නාම පදය|හෙළයාට]]||align="center"|[[හෙළයනට#නාම පදය|හෙළයනට]]||align="center"|[[හෙළයකුට#නාම පදය|හෙළයකුට]]|||||| |- | සබඳ, අදර |||||||||||| |- | අලප් ||||align="center"|[[හෙළයෙනි#නාම පදය|හෙළයෙනි]]<br>[[හෙළයිනි#නාම පදය|හෙළයිනි]]?|||||||| |} ====ව්‍යුත්පන්න පද==== {{top3}} * {{l|si|හෙළාටුවා#නාම ප්‍රකෘතිය}} * {{l|si|හෙළිඳු#නාම ප්‍රකෘතිය}} * {{l|si|හෙළබිම|හෙළබිම්}} {{bottom}} ''ව්‍යුත්පන්න පද බවට තහවුරු නොකළ යෙදුම්:'' {{top2}} * {{l|si|හෙළු#නාම ප්‍රකෘතිය}} {{bottom}} === නිරුක්තිය 2 === {{rfe|si}} ===ධාතු ප්‍රකෘතිය=== {{head|si|root}} # {{rfdef|si}} ====ආඛ්‍යාත ක්‍රියා පද==== {| class="wikitable" |+ |- ! !!අන්‍ය පුරුෂ<br>ඒකවචන!!අන්‍ය පුරුෂ<br>බහුවචන!!උත්තම පුරුෂ<br>ඒකවචන!!උත්තම පුරුෂ<br>බහුවචන |- |අනතීත-සකර්මක||[[හෙළයි]]||[[හෙළති]]||[[හෙළමි]]||[[හෙළමු]] |- |අතීත-සකර්මක|||||||| |- |අනතීත-කර්ම කාරක|||||||| |- |අතීත-කර්ම කාරක|||||||| |- |} === මූලාශ්‍ර === <references/> * "[https://tipitaka.lk/library/963 හෙළ]", කුමාරණතුංග මුනිදාස, '''''ක්‍රියා විවරණය''''', — 223 පිටුව [[ප්‍රවර්ගය:සිංහල නාම ප්‍රකෘති]] [[ප්‍රවර්ගය:සිංහල ධාතු ප්‍රකෘති]] d2ii6gb2k9fdsakgh0qnzv1hz9c7tx2 बुध 0 11987 235604 173014 2026-06-06T13:32:40Z Lee 19 /* සංඥා නාම පදය */ 235604 wikitext text/x-wiki {{also|बुध्|बोधि|बाध्|बाधा|बाँध}} == හින්දි == [[Image:Mercury in true color.jpg|thumb|right|बुध ग्रह]] === නිරුක්තිය === {{lbor|hi|sa|बुध}}. Cognate with {{cog|as|বুধ}}, {{cog|bn|বুধ}}, {{cog|gu|બુધ}}, {{cog|kok|बुध}}, {{cog|mr|बुध}}, {{cog|ne|बुध}} {{cog|pa|ਬੁਧ}}. === සංඥා නාම පදය === {{hi-proper noun|m|ur=بدھ}} # {{senseid|hi|Q308}}[[Mercury]] (planet) # {{short for|hi|बुधवार}} ==== වරනැඟීම ==== {{hi-ndecl|<M.sg>}} === අමතර අවධානයට === {{table:Solar System/hi}} {{topics|hi|Planets of the Solar System}} == මරාථි == [[Image:Mercury in true color.jpg|thumb|right|बुध ग्रह]] {{wp|lang=mr}} === නිරුක්තිය === From {{der|mr|sa|बुध}}. Cognate with {{cog|as|বুধ}}, {{cog|bn|বুধ}}, {{cog|gu|બુધ}}, {{cog|hi|बुध}}, {{cog|kok|बुध}}, {{cog|ne|बुध}} {{cog|pa|ਬੁਧ}}. === උච්චාරණය === * {{mr-IPA}} === නාම පදය === {{mr-noun|g=m}} # [[Mercury]] {{q|planet}} # {{short for|mr|बुधवार|t=Wednesday}} === අමතර අවධානයට === {{table:Solar System/mr}} == සංස්කෘත == === වෙනත් අක්ෂරක්‍රම === {{sa-alt}} === නිරුක්තිය === Not related to {{m|sa|बुद्ध|t=[[awakened]], [[enlightened]]}} {{etystub|sa}} === උච්චාරණය === {{sa-IPA|novedic=1}} === සංඥා නාම පදය === {{sa-proper noun|g=m}} # {{senseid|sa|Q308}}[[Mercury]] {{gloss|planet}} ==== වරනැඟීම ==== {{sa-decl-noun-m}} ====Descendants==== * {{desc|as|বুধ}} * {{desc|bn|বুধ}} * {{desc|gu|બુધ}} * {{desc|hi|बुध}} * {{desc|kok|बुध}} * {{desc|mr|बुध}} * {{desc|ne|बुध}} * {{desc|pa|ਬੁਧ}} * {{desc|my|ဗုဒ္ဓဟူး|bor=1}} === අමතර අවධානයට === {{table:Solar System/sa}} {{C|sa|Planets of the Solar System}} p73c9u02eogfcjupny4v0dugbvtrbk6 भाषा 0 121168 235603 198870 2026-06-06T13:30:47Z Lee 19 /* නාම පදය */ 235603 wikitext text/x-wiki {{also|भीषा}} ==Bhojpuri== === නිරුක්තිය === {{etymon|bho|bor|sa>भाषा>speech|id=language|text=+}} === නාම පදය === {{bho-noun|g=f}} # [[භාෂා]] #: {{uxi|bho|भोजपुरी '''भाषा'''|Bhojpuri '''language'''|tr=bhojapurī '''bhāṣā'''}} == හින්දි == {{wikipedia|lang=hi}} === නිරුක්තිය === {{etymon|hi|bor|sa>भाषा>speech|id=language|text=+}} === උච්චාරණය === * {{hi-IPA}} * {{audio|hi|LL-Q1568 (hin)-QueerEcofeminist-भाषा.wav}} * {{rhyme|hi|ɑː|s=2}} * {{hyph|hi|भा|षा}} === නාම පදය === {{hi-noun|f|ur=بھاشا}} # [[භාෂා]], [[speech]] #: {{uxa|hi|संस्कृत बहुत समृद्ध '''भाषा''' है।|t=Sanskrit is a very rich '''language'''.}} #: {{uxa|hi|वह '''भाषा''' की उत्पत्ति पर खोज कर रहा है।|t=He is doing research on the origins of '''language'''}} ==== වරනැඟීම ==== {{hi-ndecl|<F>}} ==== සමාන පද ==== * {{l|hi|ज़बान}} * {{l|hi|बोली}} * {{l|hi|लिसान}} * {{l|hi|भाखा}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{rel2|hi|मातृभाषा|परिभाषा|भारतीय आर्य भाषा|भाषांतर|भाषांतरकार|भाषागत|भाषाविज्ञान|भाषावैज्ञानिक|देशभाषा|भाषा-परिवार|राष्ट्रभाषा}} ==== මූලාශ්‍ර ==== * {{R:Platts}} == මරාථි == {{wikipedia|lang=mr}} === නිරුක්තිය === {{etymon|mr|bor|sa>भाषा>speech|id=language|text=+}} === උච්චාරණය === * {{mr-IPA}} === නාම පදය === {{mr-noun|g=f}} # [[language]] #: {{syn|mr|बोली}} #: {{ux|mr|इंग्रजी एक जागतिक '''भाषा''' आहे.|English is a global '''language'''.}} ==== වරනැඟීම ==== {{mr-noun-ā-f|भाष|bhāṣ}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{der3|mr|{{l|mr|अधिकृत भाषा|t=[[official language]]}}|{{l|mr|जन्मभाषा}}|{{l|mr|देवभाषा|t=Gods' language}}|{{l|mr|बालभाषा}}|{{l|mr|बोलीभाषा|t=[[colloquial]] [[language]]}}|{{l|mr|भाषाकुळ|t=[[language family]]}}|{{l|mr|भाषाविज्ञान|t=[[linguistics]]}}|{{l|mr|भाषावैज्ञानिक|t=[[linguist]]}}|{{l|mr|भाषाशैली}}|{{l|mr|भाषांतर|t=[[translation]]}}|{{l|mr|भाषांतरकार|t=[[translator]]}}|{{l|mr|मातृभाषा|t=[[mother tongue]]}}|{{l|mr|राज्यभाषा|t=[[state]] [[language]]}}|{{l|mr|राष्ट्रभाषा|t=[[national]] [[language]]}}|{{l|mr|संस्कृत भाषा|t=[[Sanskrit]] [[language]]}}}} === මූලාශ්‍ර === * {{R:mr:Berntsen}} * {{R:mr:Molesworth}} * {{R:mr:Vaze}} {{C|mr|Language}} ==Nepali== === නිරුක්තිය === {{etymon|ne|bor|sa>भाषा>speech|id=language|text=+}} === උච්චාරණය === * {{ne-IPA}} === නාම පදය === {{ne-noun}} # [[language]] #: {{syn|ne|कुरा}} ==== වරනැඟීම ==== {{ne-decl-noun}} ==Newar== === නිරුක්තිය === {{etymon|new|bor|sa>भाषा>speech|id=language|text=+}} === උච්චාරණය === * {{new-IPA}} === නාම පදය === {{head|new|noun}} # [[language]] ==Old Gujarati== === නිරුක්තිය === {{etymon|inc-ogu|bor|sa>भाषा>speech|id=language|text=+}} === නාම පදය === {{head|inc-ogu|noun|g=f}} # [[talk]], [[utterance]] == සංස්කෘත == === වෙනත් අක්ෂරක්‍රම === {{sa-alt}} === නිරුක්තිය === {{etymon|sa|from|sa>भाष्>speak|id=speech}} {{sa-root|भाष्|t=to speak}}; further origin {{uncertain|sa|nocap=1}}. Theories include: * From {{der|sa|ine-pro|*bʰeh₂-|id=speak|t=to speak}}, compare {{m+|la|fās|t=divine law}}. The retroflex ''ṣ'' could either be onomatopoeic or to avoid homonymy with root {{m|sa|भास्|t=to shine}} (compare originally fully homonymous {{m+|en|flower}} and {{m|en|flour}} or {{m+|de|küssen}} and {{m|de|Kissen}}). * From {{der|sa|ine-pro|*bʰel-|*bʰel-s-|id=sound|t=to sound}}, compare {{cog|lt|balsas|t=voice}} and {{cog|lv|balss|t=voice}}. The retroflexion is in this case due to {{w|Fortunatov's Law}}.<ref>{{R:inc:EWAia|head=''BHAṢ''|vol=2|pages=261f.}}</ref> === උච්චාරණය === {{sa-IPA|a=1}} === නාම පදය === {{sa-noun|tr=bhā́ṣā|g=f}} # [[speech]], [[language]] (especially common, vernacular or vulgar speech, as opposed to Vedic or in later times to Sanskrit, as the refined speech) # any [[Prakrit]] dialect or a particular group of 5 of them (namely {{m|sa|माहाराष्ट्री}}, {{m|sa|शौरसेनी}}, {{m|sa|मागधी}}, {{m|sa|प्राच्या}} and {{m|sa|अवन्ति}}, also called {{m|sa|पञ्चविधा}}) # [[description]], [[definition]] # {{lb|sa|legal}} [[accusation]], [[charge]], [[complaint]], [[plaint]] # name of [[Saraswati]] # {{lb|sa|music}} name of {{m|sa|रागिणी}} ==== වරනැඟීම ==== {{sa-decl-noun-f|bhā́ṣā}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{der3|sa |पालिभाषा |भाषाकुमुदमञ्जरी |भाषाकौमुदी |भाषाचित्रक |भाषाज्ञ |भाषानुशासन |भाषान्तर |भाषापरिच्छेद |भाषापाद |भाषाप्रकाशिका |भाषामञ्जरी |भाषारत्न |भाषार्णव |भाषालीलावती |भाषाविवृतिगीता |भाषावृत्ति |भाषावृत्त्यर्थवृत्ति |भाषासम |भाषासमिति |देवभाषा }} ====Descendants==== {{desc-top|Terms inherited from {{l|sa|भाषा}}}} * Dardic: *** {{desc|dml||tr=bâṣa|t=language}} **** {{desc|scl|بݜ|tr=baṣ}} ***** {{desc|dmk||tr=bāṣ|bor=1}} * {{desctree|pi|bhāsā}} * {{desc|pra|𑀪𑀸𑀲𑀸}} ** Eastern: *** {{desc|bn|ভাস}} *** {{desc|bh|-}} **** {{desc|mai|भास}} *** {{desc|ccp|𑄞𑄌𑄴|tr=bhāc}} ** Northern: *** {{desc|gbm|भाख}} *** {{desc|kfy|भाश}} *** {{desc|ne|भास}} ** Insular: *** {{desc|dv|ބަސް|t=language}} *** {{desc|si|බහ|t=word, saying}} ** Southern: *** {{desc|kok|भास}} ** Central: *** {{desc|hne|भाखा|tr=bhākhā}} {{desc-bottom}} {{desc-top|Borrowed terms}} * {{desc|bor=1|ace|بَهْسَا|tr=bahsa}} * {{desc|bor=1|as|ভাষা}} * {{desc|bor=1|bjn|بَهَاسَ|tr=bahasa}} * {{desc|bor=1|bn|ভাষা}} * {{desc|bor=1|bew|bahasa}} * {{desc|bor=1|bug|ᨅᨔ|tr=basa}} * {{desc|bor=1|cia|bahasa}} / {{l|cia|바하사|tr=bahasa}} * {{desc|doi||alt=bhāśā|bor=1}} *: {{desc|doi|भाशा|tr=-|sclb=1}} *: {{desc|doi|𑠡𑠬𑠧𑠬|tr=-|sclb=1}} * {{desc|bor=1|hif|भाषा|tr=bhāṣā|bhasa}} * {{desc|bor=1|gu|ભાષા}} * {{desc|bor=1|hi|भाषा}} * {{desc|bor=1|ilo|basa}} * {{desc|lbor=1|kfr|ભાષા}} * {{desc|bor=1|kn|ಭಾಷೆ}} * {{desc|bor=1|mad|بهاس|alt=بَهاسَ|tr=basa}} * {{desc|bor=1|mdh|bahasah}} * {{desc|bor=1|mak|ᨅᨔ|tr=basa}} * {{desctree|bor=1|ms|bahasa|tr=بهاس}} * {{desc|bor=1|ml|ഭാഷ|alts=1}} * {{desc|bor=1|mr|भाषा}} * {{desc|bor=1|mrw|basa}} * {{desc|bor=1|min|بَاسو|tr=baso}} * {{desc|bor=1|ne|भाषा}} * {{desc|bor=1|new|भाषा|tr=bhāṣā}} * {{desc|bor=1|kxm|พซา}} * {{desctree|bor=1|kaw|bhāṣa}} * {{desc|bor=1|or|ଭାଷା}} * {{desc|bor=1|pa|ਭਾਸ਼ਾ}} * {{desc|bor=1|si|භාෂාව}} * {{desc|bor=1|su|ᮘᮞ}} * {{desc|bor=1|ta|பாசை|alts=1}} * {{desc|bor=1|tsg|bahasa}} * {{desc|bor=1|te|భాష}} * {{desc|bor=1|tcy|ಬಾಸೆ|alts=1}} * {{desc|bor=1|ur|بھَاشَا}} * {{desc|bor=1|yka|bahasa}} * → Proto-Nuristani: ** {{desc|wbk||tr=bāṣ|t=word}} {{desc-bottom}} === මූලාශ්‍ර === <references/> === වැඩිදුර් කියවීම සඳහා === * {{R:MW|0755}} * {{R:Apte||1196}} * {{R:sa:NWS|entry=भाषा}} * {{R:CDIAL|bhāṣā|hw=1|page=540}} 74jrolwnwxuet4smw1cbk6osw8pdqli හිතවත්තු 0 131525 235595 208394 2026-06-06T12:50:28Z WrdSrchSi 3305 + IPA|si + inflection of|si (replaced inflection of|si) 235595 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{etymon|si|id=හිතවත් හු|af|si>හිතවත්#නාම ප්‍රකෘතිය>ප්‍රකෘතිය|si>-හු>ප්‍රත්‍ය|tree=1}} ''[[හිතවත්#නාම ප්‍රකෘතිය|හිතවත්]] (ප්‍රකෘතිය) + [[-හු]] (ප්‍රත්‍ය) > හිතවත්හු >'' [[හිතවත්තු]] ''(පූර්ව ව්‍යඤ්ජන සාම්‍යය)'' ===උච්චාරණය=== * {{IPA|si|/ˈɦitəʋattu/}} ===නාම පදය=== {{head|si|noun form}} # {{lb|si|ප්‍රාණවාචී}} {{plural of|si|හිතවත්#නාම ප්‍රකෘතිය||පෙර විබත්|p}} rioywcr7e7z25hx7h0nzzrmgz3xrpfo 235596 235595 2026-06-06T12:51:45Z WrdSrchSi 3305 Fixed: replaced plural of|si| 235596 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{etymon|si|id=හිතවත් හු|af|si>හිතවත්#නාම ප්‍රකෘතිය>ප්‍රකෘතිය|si>-හු>ප්‍රත්‍ය|tree=1}} ''[[හිතවත්#නාම ප්‍රකෘතිය|හිතවත්]] (ප්‍රකෘතිය) + [[-හු]] (ප්‍රත්‍ය) > හිතවත්හු >'' [[හිතවත්තු]] ''(පූර්ව ව්‍යඤ්ජන සාම්‍යය)'' ===උච්චාරණය=== * {{IPA|si|/ˈɦitəʋattu/}} ===නාම පදය=== {{head|si|noun form}} # {{lb|si|ප්‍රාණවාචී}} {{inflection of|si|හිතවත්#නාම ප්‍රකෘතිය||පෙර විබත්|p}} 2am4t35dpqonxl1l665dmndmf2kmohl ඇකුත් 0 139073 235601 225007 2026-06-06T13:17:15Z WrdSrchSi 3305 /*ක්‍රියා පද*/ + lb|si 235601 wikitext text/x-wiki ==සිංහල== ===වෙනත් ආකාර=== * {{l|si|ඇක්මි#ක්‍රියා පද}} * {{l|si|ඇකුතු#ක්‍රියා පද}} * {{l|si|ඇකුත#ක්‍රියා පද}} ===උච්චාරණය=== * {{IPA|si|/ˈækut/}} ===ක්‍රියා පද=== {{head|si|verb forms}} # {{lb|si|සකර්මක|අකර්මක}} {{alternative form of|si|ඇක්මුණු}} === නාම විශේෂණ පදය === {{si-adj}} # {{rfdef|si}} #:* මහ විජේබා රජු, ''[https://si.wikipedia.org/wiki/%E0%B6%B4%E0%B6%B1%E0%B7%8F%E0%B6%9A%E0%B6%A9%E0%B7%94%E0%B7%80_%E0%B6%AD%E0%B6%B9_%E0%B7%83%E0%B6%B1%E0%B7%8A%E0%B6%B1%E0%B7%83 පනාකඩුව තඹ සන්නස]'', ක්‍රි.ව. 11 වන සියවස #:*: ''පුසැ '''ඇකුත් ඇකුත්''' තන්හි මඟමින් ඇසිරෙන විපකුන් කෙරෙහි වළගා ක(ත?)න්හි තන්හි'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] sa6bv0p8j1maxazlpp4hv89g09hy6ww ඇක්මුණු 0 142169 235602 231674 2026-06-06T13:17:58Z WrdSrchSi 3305 + වෙනත් ආකාර 235602 wikitext text/x-wiki ==සිංහල== ===වෙනත් ආකාර=== * {{l|si|ඇක්මි#ක්‍රියා පද}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' * {{l|si|ඇකුතු#ක්‍රියා පද}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' * {{l|si|ඇකුත්#ක්‍රියා පද}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' * {{l|si|ඇකුත#ක්‍රියා පද}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' ===උච්චාරණය=== * {{IPA|si|/ˈækmuɳu/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=ඇක්මුණු|අනතීත-සකර්මක, අනතීත-අකර්මක, අනතීත-කර්ම කාරක අන්‍ය පුරුෂ බහුවචන|ඇක්මෙති}} # {{lb|si|සකර්මක}} {{infl of|si|ඇක්මේ#ක්‍රියා පද||අතීත|අන්‍ය පුරුෂ|බහුවචන|ආඛ්‍යාත ක්‍රියා}} # {{lb|si|අකර්මක}} {{infl of|si|ඇක්මේ#ක්‍රියා පද||අතීත|අන්‍ය පුරුෂ|බහුවචන|ආඛ්‍යාත ක්‍රියා}} # {{infl of|si|ඇක්මේ#ක්‍රියා පද||අතීත|කර්ම කාරක|අන්‍ය පුරුෂ|බහුවචන|ආඛ්‍යාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 40aztun484qtsqt21909jy8cetlkmzp ඉක්මුණු 0 142521 235599 232448 2026-06-06T13:08:51Z WrdSrchSi 3305 + IPA|si + head|si|verb forms|head= + infl of|si + ප්‍රවර්ගය 235599 wikitext text/x-wiki == සිංහල == ===වෙනත් ආකාර=== * {{l|si|ඉක්මි#ක්‍රියා පද|ඉක්මි}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' * {{l|si|ඉකුතු#ක්‍රියා පද|ඉකුතු}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' * {{l|si|ඉකුත්#ක්‍රියා පද|ඉකුත්}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' * {{l|si|ඉකුත#ක්‍රියා පද|ඉකුත}} ''(සකර්මක, අකර්මක සඳහා පමණි.)'' ===උච්චාරණය=== * {{IPA|si|/ˈikmuɳu/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=ඉක්මුණු|අනතීත-සකර්මක, අනතීත-අකර්මක, අනතීත-කර්ම කාරක අන්‍ය පුරුෂ බහුවචන|ඉක්මෙති}} # {{lb|si|සකර්මක}} {{infl of|si|ඉක්මේ#ක්‍රියා පද||අතීත|අන්‍ය පුරුෂ|බහුවචන|ආඛ්‍යාත ක්‍රියා}} # {{lb|si|අකර්මක}} {{infl of|si|ඉක්මේ#ක්‍රියා පද||අතීත|අන්‍ය පුරුෂ|බහුවචන|ආඛ්‍යාත ක්‍රියා}} # {{infl of|si|ඉක්මේ#ක්‍රියා පද||අතීත|කර්ම කාරක|අන්‍ය පුරුෂ|බහුවචන|ආඛ්‍යාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] dss3z4vt0njkpzsnsk2kj5vf8n2pwcz හිවලුන් 0 143392 235593 233757 2026-06-06T12:39:11Z WrdSrchSi 3305 + etymon|si + IPA|si + example sentences 235593 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{etymon|si|id=හිවල් උන්|af|si>හිවල්#නාම ප්‍රකෘතිය>ප්‍රකෘතිය|si>-උන්>ප්‍රත්‍ය|tree=1}} ''[[හිවල්#නාම ප්‍රකෘතිය|හිවල්]] (ප්‍රකෘතිය) + [[-උන්]] (ප්‍රත්‍ය) >'' [[හිවලුන්]] ===උච්චාරණය=== * {{IPA|si|/ˈɦiʋəlun/}} === නාම පදය === {{head|si|noun form}} # {{lb|si|ප්‍රාණවාචී|පුරුෂ ලිංග}} {{inflection of|si|හිවල්#නාම ප්‍රකෘතිය||කම් විබත්|p}} #: ''{{{2|හේ සතකු මස් කන '''හිවලුන්''' නිරික්සී.}}}'' # {{lb|si|ප්‍රාණවාචී|පුරුෂ ලිංග}} {{inflection of|si|හිවල්#නාම ප්‍රකෘතිය||කතු විබත්|p}} #: ''{{{2|'''හිවලුන්''' විසින් සතෙක් ලුහුබැඳිණි.}}}'' 6motbka9v06m0t0p2wuicey6vksfoge හිතැතියකු 0 143476 235594 233866 2026-06-06T12:43:45Z WrdSrchSi 3305 + IPA|si + head|si|noun form + inflection of|si 235594 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===උච්චාරණය=== * {{IPA|si|/ˈɦitætijəku/}} ===නාම පදය=== {{head|si|noun form}} # {{lb|si|ප්‍රාණවාචී}} {{inflection of|si|හිතැති#නාම ප්‍රකෘතිය||කම් විබත්|අනියමාර්ථ}} # {{lb|si|ප්‍රාණවාචී}} {{inflection of|si|හිතැති#නාම ප්‍රකෘතිය||කතු විබත්|අනියමාර්ථ}} dsh7h1d5v2rzfc70jus1q34cgu6od6w හෙළයකුට 0 144176 235592 2026-06-06T12:22:24Z WrdSrchSi 3305 Page created: + IPA|si + head|si|noun form + inflection of|si 235592 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{rfe|si}} ===උච්චාරණය=== * {{IPA|si|/ˈɦeɭəjəkuʈə/}} ===නාම පදය=== {{head|si|noun form}} # {{lb|si|ප්‍රාණවාචී}} {{inflection of|si|හෙළ#නාම ප්‍රකෘතිය||සපදන් විබත්|අනියමාර්ථ}} ccw6db6rg0pcq3v10d23czrwxvh8fxp හිතවතුන් 0 144177 235597 2026-06-06T12:55:31Z WrdSrchSi 3305 Page created: + etymon|si + IPA|si + head|si|noun form + inflection of|si 235597 wikitext text/x-wiki ==සිංහල== === නිරුක්තිය === {{etymon|si|id=හිතවත් උන්|af|si>හිතවත්#නාම ප්‍රකෘතිය>ප්‍රකෘතිය|si>-උන්>ප්‍රත්‍ය|tree=1}} ''[[හිතවත්#නාම ප්‍රකෘතිය|හිතවත්]] (ප්‍රකෘතිය) + [[-උන්]] (ප්‍රත්‍ය) >'' [[හිතවතුන්]] ===උච්චාරණය=== * {{IPA|si|/ˈɦitəʋətun/}} ===නාම පදය=== {{head|si|noun form}} # {{lb|si|ප්‍රාණවාචී}} {{inflection of|si|හිතවත්#නාම ප්‍රකෘතිය||කම් විබත්|p}} # {{lb|si|ප්‍රාණවාචී}} {{inflection of|si|හිතවත්#නාම ප්‍රකෘතිය||කතු විබත්|p}} nru919ckpiym9vgjewb9fmj9mlqeloe ඉකුත් 0 144178 235598 2026-06-06T13:02:27Z WrdSrchSi 3305 Page created: + වෙනත් ආකාර + IPA|si + alternative form of|si + si-adj + example 235598 wikitext text/x-wiki ==සිංහල== ===වෙනත් ආකාර=== * {{l|si|ඉක්මි#ක්‍රියා පද}} * {{l|si|ඉකුතු#ක්‍රියා පද}} * {{l|si|ඉකුත#ක්‍රියා පද}} ===උච්චාරණය=== * {{IPA|si|/ˈikut/}} ===ක්‍රියා පද=== {{head|si|verb forms}} # {{alternative form of|si|ඉක්මුණු}} === නාම විශේෂණ පදය === {{si-adj}} # {{rfdef|si}} #: ''{{{2|'''ඉකුත්''' බදාදා}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] taotokrcml0kw3t8mombcuf555b96jl 235600 235598 2026-06-06T13:10:48Z WrdSrchSi 3305 /* ක්‍රියා පද */ + lb|si 235600 wikitext text/x-wiki ==සිංහල== ===වෙනත් ආකාර=== * {{l|si|ඉක්මි#ක්‍රියා පද}} * {{l|si|ඉකුතු#ක්‍රියා පද}} * {{l|si|ඉකුත#ක්‍රියා පද}} ===උච්චාරණය=== * {{IPA|si|/ˈikut/}} ===ක්‍රියා පද=== {{head|si|verb forms}} # {{lb|si|සකර්මක|අකර්මක}} {{alternative form of|si|ඉක්මුණු}} === නාම විශේෂණ පදය === {{si-adj}} # {{rfdef|si}} #: ''{{{2|'''ඉකුත්''' බදාදා}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] hxnoaut1czaay1zmql5y0hx9v9cv8v6 Module:Sund-translit 828 144179 235605 2025-05-11T17:59:37Z en>Fenakhay 0 Fenakhay moved page [[Module:su-translit]] to [[Module:Sund-translit]] without leaving a redirect 235605 Scribunto text/plain local export = {} local consonants = { ['ᮊ']='k', ['ᮌ']='g', ['ᮍ']='ng', ['ᮎ']='c', ['ᮏ']='j', ['ᮑ']='ny', ['ᮒ']='t', ['ᮓ']='d', ['ᮔ']='n', ['ᮕ']='p', ['ᮘ']='b', ['ᮙ']='m', ['ᮚ']='y', ['ᮛ']='r', ['ᮜ']='l', ['ᮝ']='w', ['ᮞ']='s', ['ᮠ']='h', ['ᮖ']='f', ['ᮋ']='q', ['ᮗ']='v', ['ᮟ']='x', ['ᮐ']='z', ['ᮮ']='kh', ['ᮯ']='sy', } local diacritics = { ['ᮤ']= 'i' , ['ᮥ']='u' , ['ᮦ']='é' , ['ᮧ']='o' , ['ᮨ']='e' , ['ᮩ']='eu' , ['ᮺ']='-a' , ['᮫']='' , ['᮪']='' , } local special = { ['ᮬ']='m' , ['ᮭ']='w' , ['ᮡ']='y' , ['ᮢ']='r' , ['ᮣ']='l' , } local nonconsonants = { -- vowels ['ᮃ']='a' , ['ᮆ']='é' , ['ᮄ']='i' , ['ᮇ']='o' , ['ᮅ']='u' , ['ᮈ']='e' , ['ᮉ']='eu' , ['ᮻ']='reu' , ['ᮼ']='leu' , -- aditional characters ['|']='', -- digit pipe bar ['ᮀ']='ng', ['ᮁ']='r', ['ᮂ']='h', ['ᮾ']='k', ['ᮿ']='m', -- digits ['᮰'] = '0', ['᮱'] = '1', ['᮲'] = '2', ['᮳'] = '3', ['᮴'] = '4', ['᮵'] = '5', ['᮶'] = '6', ['᮷'] = '7', ['᮸'] = '8', ['᮹'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([ᮊᮌᮍᮎᮏᮑᮒᮓᮔᮕᮘᮙᮚᮛᮜᮝᮞᮠᮖᮋᮗᮟᮐᮮᮯ])'.. '([ᮬᮭᮡᮢᮣ]?)' .. '([ᮤᮥᮦᮧᮨᮩᮺ ᮫᮪]?)', function(c, s, d) if s == "" then if d == "" then return consonants[c] .. 'a' else return consonants[c] .. (diacritics[d] or d) end else if d == "" then return consonants[c] .. (special[s] or s) .. 'a' else return consonants[c] .. (special[s] or s) .. (diacritics[d] or d) end end end) text = mw.ustring.gsub(text, '.', nonconsonants) return text end return export 8kqpl220czqpldp2dhbfjklftbb0xr5 235606 235605 2026-06-06T13:33:44Z Lee 19 [[:en:Module:Sund-translit]] වෙතින් එක් සංශෝධනයක් 235605 Scribunto text/plain local export = {} local consonants = { ['ᮊ']='k', ['ᮌ']='g', ['ᮍ']='ng', ['ᮎ']='c', ['ᮏ']='j', ['ᮑ']='ny', ['ᮒ']='t', ['ᮓ']='d', ['ᮔ']='n', ['ᮕ']='p', ['ᮘ']='b', ['ᮙ']='m', ['ᮚ']='y', ['ᮛ']='r', ['ᮜ']='l', ['ᮝ']='w', ['ᮞ']='s', ['ᮠ']='h', ['ᮖ']='f', ['ᮋ']='q', ['ᮗ']='v', ['ᮟ']='x', ['ᮐ']='z', ['ᮮ']='kh', ['ᮯ']='sy', } local diacritics = { ['ᮤ']= 'i' , ['ᮥ']='u' , ['ᮦ']='é' , ['ᮧ']='o' , ['ᮨ']='e' , ['ᮩ']='eu' , ['ᮺ']='-a' , ['᮫']='' , ['᮪']='' , } local special = { ['ᮬ']='m' , ['ᮭ']='w' , ['ᮡ']='y' , ['ᮢ']='r' , ['ᮣ']='l' , } local nonconsonants = { -- vowels ['ᮃ']='a' , ['ᮆ']='é' , ['ᮄ']='i' , ['ᮇ']='o' , ['ᮅ']='u' , ['ᮈ']='e' , ['ᮉ']='eu' , ['ᮻ']='reu' , ['ᮼ']='leu' , -- aditional characters ['|']='', -- digit pipe bar ['ᮀ']='ng', ['ᮁ']='r', ['ᮂ']='h', ['ᮾ']='k', ['ᮿ']='m', -- digits ['᮰'] = '0', ['᮱'] = '1', ['᮲'] = '2', ['᮳'] = '3', ['᮴'] = '4', ['᮵'] = '5', ['᮶'] = '6', ['᮷'] = '7', ['᮸'] = '8', ['᮹'] = '9', } -- translit any words or phrases function export.tr(text, lang, sc) text = mw.ustring.gsub( text, '([ᮊᮌᮍᮎᮏᮑᮒᮓᮔᮕᮘᮙᮚᮛᮜᮝᮞᮠᮖᮋᮗᮟᮐᮮᮯ])'.. '([ᮬᮭᮡᮢᮣ]?)' .. '([ᮤᮥᮦᮧᮨᮩᮺ ᮫᮪]?)', function(c, s, d) if s == "" then if d == "" then return consonants[c] .. 'a' else return consonants[c] .. (diacritics[d] or d) end else if d == "" then return consonants[c] .. (special[s] or s) .. 'a' else return consonants[c] .. (special[s] or s) .. (diacritics[d] or d) end end end) text = mw.ustring.gsub(text, '.', nonconsonants) return text end return export 8kqpl220czqpldp2dhbfjklftbb0xr5 Module:Sund-translit/testcases/documentation 828 144180 235607 2025-05-11T18:00:17Z en>Fenakhay 0 235607 wikitext text/x-wiki This is the unit-testing module for [[Module:Sund-translit]]. {{#invoke:Sund-translit/testcases|run_tests|differs_at=1}} oebp0epw9zkshuobjn5znpsu4vkszur 235608 235607 2026-06-06T13:34:05Z Lee 19 [[:en:Module:Sund-translit/testcases/documentation]] වෙතින් එක් සංශෝධනයක් 235607 wikitext text/x-wiki This is the unit-testing module for [[Module:Sund-translit]]. {{#invoke:Sund-translit/testcases|run_tests|differs_at=1}} oebp0epw9zkshuobjn5znpsu4vkszur Module:Sund-translit/testcases 828 144181 235609 2025-05-11T18:00:05Z en>Fenakhay 0 235609 Scribunto text/plain -- Unit tests for [[Module:Sund-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local su_translit = require('Module:Sund-translit') function tests:check_translit(Sund, roman) self:equals('<span class="Sund" lang="su">[[' .. Sund .. '#Sundanese|' .. Sund .. ']]</span>', su_translit.tr(Sund, 'su', 'Sund'), roman) end function tests:test_translit_sundanese() self:check_translit('ᮃᮜᮥᮔᮺᮌᮥᮀ', 'alun-agung') self:check_translit('ᮞ᮪ᮝᮛ', 'swara') self:check_translit('ᮍᮜᮌᮨᮔ', 'ngalagena') self:check_translit('ᮛᮛᮀᮊᮨᮔ᮪', 'rarangken') self:check_translit('|᮲᮰᮱᮵|', '2015') self:check_translit('ᮃᮊ᮪ᮞᮛ', 'aksara') self:check_translit('ᮃᮀᮊ', 'angka') self:check_translit('ᮓᮜᮤᮀᮓᮤᮀ', 'dalingding') self:check_translit('ᮃᮍᮤᮔ᮪', 'angin') self:check_translit('ᮌᮥᮔ᮪ᮒᮤᮀ', 'gunting') self:check_translit('ᮓᮓᮝᮥᮠᮔ᮪', 'dadawuhan') self:check_translit('ᮒᮩᮊ᮪ᮒᮩᮊ᮪', 'teukteuk') self:check_translit('ᮃᮔᮾ', 'anak') self:check_translit('ᮄᮊᮣᮤᮙ᮪', 'iklim') end return tests g5gdb54l9100gtq5taz7q9617jwh5l3 235610 235609 2026-06-06T13:34:08Z Lee 19 [[:en:Module:Sund-translit/testcases]] වෙතින් එක් සංශෝධනයක් 235609 Scribunto text/plain -- Unit tests for [[Module:Sund-translit]]. Refresh page to run tests. local tests = require('Module:UnitTests') local su_translit = require('Module:Sund-translit') function tests:check_translit(Sund, roman) self:equals('<span class="Sund" lang="su">[[' .. Sund .. '#Sundanese|' .. Sund .. ']]</span>', su_translit.tr(Sund, 'su', 'Sund'), roman) end function tests:test_translit_sundanese() self:check_translit('ᮃᮜᮥᮔᮺᮌᮥᮀ', 'alun-agung') self:check_translit('ᮞ᮪ᮝᮛ', 'swara') self:check_translit('ᮍᮜᮌᮨᮔ', 'ngalagena') self:check_translit('ᮛᮛᮀᮊᮨᮔ᮪', 'rarangken') self:check_translit('|᮲᮰᮱᮵|', '2015') self:check_translit('ᮃᮊ᮪ᮞᮛ', 'aksara') self:check_translit('ᮃᮀᮊ', 'angka') self:check_translit('ᮓᮜᮤᮀᮓᮤᮀ', 'dalingding') self:check_translit('ᮃᮍᮤᮔ᮪', 'angin') self:check_translit('ᮌᮥᮔ᮪ᮒᮤᮀ', 'gunting') self:check_translit('ᮓᮓᮝᮥᮠᮔ᮪', 'dadawuhan') self:check_translit('ᮒᮩᮊ᮪ᮒᮩᮊ᮪', 'teukteuk') self:check_translit('ᮃᮔᮾ', 'anak') self:check_translit('ᮄᮊᮣᮤᮙ᮪', 'iklim') end return tests g5gdb54l9100gtq5taz7q9617jwh5l3 සිංහාසනය 0 144182 235611 2026-06-06T13:40:49Z Lee 19 '== සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් ව...' යොදමින් නව පිටුවක් තනන ලදි 235611 wikitext text/x-wiki == සිංහල == === නිරුක්තිය === {{rfe|si}} === නාම පදය === {{si-noun}} # {{rfdef|si}} <!-- ==== පරිවර්තන ==== {{trans-top|පරිවර්තන}} * ඉංග්‍රීසි: {{t|en|<<ඉංග්‍රීසි වචනය>>}} {{trans-bottom}} === අමතර අවධානයට === * {{l|si|<<ආශ්‍රිත පවතින වෙනත් වචන>>}} --> 37g9s13iio6w9i2yw7aw46v28viw7h4 පිරික්සීමි 0 144183 235612 2026-06-06T15:07:19Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + ප්‍රවර්ගය 235612 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈpiriksiːmi/}} ===ක්‍රියා පද=== {{head|si|verb forms|අනතීත-සකර්මක උත්තම ඒකවචන|පිරික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|පිරික්සිණිමි#ක්‍රියා පද}} # {{lb|si|සකර්මක}} {{infl of|si|පිරික්සයි#ක්‍රියා පද||අතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] d8lzed4fczlc5gu2y0ehx0gugni6w1o පිරික්සෙමි 0 144184 235613 2026-06-06T15:12:07Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms|head= + infl of|si + example sentence + ප්‍රවර්ගය 235613 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈpiriksemi/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=පිරික්සෙමි|අනතීත-සකර්මක උත්තම ඒකවචන|පිරික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|පිරික්සිණිමි#ක්‍රියා පද}} # {{infl of|si|පිරික්සයි#ක්‍රියා පද||අනතීත|කර්ම කාරක|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම උන් විසින් '''පිරික්සෙමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 5t8pryfnsa4ksenirfh2hhsqoch3krw wulfesheafod 0 144185 235614 2026-06-07T02:24:49Z Lee 19 නිර්මාණය 235614 wikitext text/x-wiki == පුරාතන ඉංග්‍රීසි == === නාම පදය === {{en-noun}} # {{rfdef|en}} 11dnm5t3ywko0bdlsx61ojbbu4hcr7r 235615 235614 2026-06-07T02:26:16Z Lee 19 235615 wikitext text/x-wiki == පුරාතන ඉංග්‍රීසි == === නාම පදය === {{ang-noun}} # {{rfdef|ang}} sio8refs2mu244p7744h67ao7zlamal 235616 235615 2026-06-07T02:26:50Z Lee 19 235616 wikitext text/x-wiki == පුරාතන ඉංග්‍රීසි == === නිරුක්තිය === {{rfe|ang}} === නාම පදය === {{ang-noun}} # {{rfdef|ang}} n7y75v8n21mrfqidos3cxwadk56qs0t outlaw 0 144186 235617 2026-04-22T22:17:44Z en>Netizen3102 0 /* Verb */ archive 235617 wikitext text/x-wiki {{also|Outlaw|-out-law}} ==English== {{wp}} [[File:Tim Pollard as Robin Hood.jpg|thumb|right|Robin Hood, an '''outlaw''' in English folklore.]] [[File:Wanted Jesse James.jpg|thumb|right|A wanted poster for Jesse James, an American '''outlaw'''.]] ===Etymology=== From {{inh|en|enm|outlawe}}, {{m|enm|outlagh}}, {{m|enm|utlaȝe}}, from {{inh|en|ang|ūtlaga|t=outlaw}}, borrowed from {{der|en|non|útlagi|t=outlaw, fugitive}}, equivalent to {{af|en|out-|law}}. Cognate with {{cog|is|útlagi|t=outlaw}}. ===Pronunciation=== * {{IPA|en|/ˈaʊt.lɔː/|a=UK}} ** {{rhymes|en|aʊtlɔː|s=2}} * {{IPA|en|/ˈaʊt.lɔ/|a=US}} * {{IPA|en|/ˈaʊt.lɑ/|a=cot-caught}} * {{IPA|en|/ˈæɔt.loː/|a=AU}} ** {{audio|en|En-au-outlaw.ogg|a=AU}} ===Noun=== {{en-noun}} # {{senseid|en|fugitive}} A [[fugitive]] from the [[law]]. #* {{quote-book|en|year=1956|author=w:C. S. Lewis|title=w:The Last Battle|publisher=Collins|year_published=1998|chapter=5 |passage=“I am going to a certain tower, one of three that were built in my grandsire’s time to guard Lantern Waste against certain perilous '''outlaws''' who dwelled there in his day. {{...}}"}} # {{senseid|en|criminal}} {{lb|en|history}} A [[criminal]] who is excluded from normal [[legal]] [[rights]]; one who can be [[kill]]ed [[at will]] without legal [[penalty]]. # {{senseid|en|person who operates outside established norms}} A person who operates outside established [[norms]]. #: {{ux|en|The main character in the play was a bit of an '''outlaw''' who refused to shake hands or say thank you.}} # {{senseid|en|wild animal}} A [[wild]] or [[violent]] [[animal]], such as a [[horse]]. # {{lb|en|humorous}} An [[in-law]]: a relative by marriage. # {{lb|en|humorous}} One who would be an [[in-law]] except that the marriage-like relationship is unofficial. # {{senseid|en|prostitute}} {{lb|en|slang}} A [[prostitute]] who works [[alone]], without a [[pimp]]. #* {{quote-text|en|year=1977|author=Joseph Julian|title=Social Problems|page=463 |passage=Without a pimp, she was an "'''outlaw'''," likely to be harassed, or threatened with assault or robbery on the street.}} #* {{quote-text|en|year=2010|author=Lawrence Block|title=Eight Million Ways To Die |passage=She was an '''outlaw'''. Chance is doing some double-checking to see if she had a pimp nobody knew about, but it doesn't look likely.}} ====Synonyms==== * {{sense|fugitive}} {{l|en|absconder}}, {{l|en|fugitive}} * {{sense|criminal}} {{l|en|bandit}}, {{l|en|wolf's head}} * {{sense|person who operates outside established norms}} {{l|en|anti-hero}}, {{l|en|deviant}} ====Hypernyms==== * {{sense|criminal}} {{see thesaurus|en|criminal}} * {{sense|prostitute}} {{see thesaurus|en|prostitute}} ====Derived terms==== {{col|en|outlawdom|outlawism|outlawness|outlawry|outlaw state |outlaw country|outlawish}} ====Translations==== {{trans-top-see|a fugitive from the law|fugitive|bandit}} * Bulgarian: {{t+|bg|беглец|m}} * Chinese: *: Mandarin: {{t+|cmn|逃犯|tr=táofàn}}, {{t+|cmn|亡命徒|tr=wángmìngtú}} * Danish: {{t+|da|fredløs|c}} * Dutch: {{t+|nl|vogelvrije}} * Esperanto: {{t|eo|eksterleĝulo}}, {{t|eo|eksterleĝulino}} * Estonian: {{t|et|lindprii}} * Finnish: {{t+|fi|lainsuojaton}} * French: {{t+|fr|hors-la-loi}} * Galician: {{t|gl|gallofo|m}}, {{t|gl|foraxido|m}} * German: {{t+|de|Verfemter|m}} {{qualifier|rare}}, {{t+|de|Outlaw|m}}, {{t+|de|Gesetzloser|m}} * Greek: {{t+|el|παράνομος|m}}, {{t+|el|φυγάς|m}} * Hungarian: {{t|hu|törvényen kívüli}} * Icelandic: {{t|is|útlagi|m}}, {{t|is|útilegumaður}} * Italian: {{t+|it|fuorilegge|m}} * Japanese: {{t+|ja|逃亡者|tr=とうぼうしゃ, tōbōsha}}, {{t|ja|逃亡犯|tr=とうぼうはん, tōbōhan}}, {{t+|ja|逃走者|tr=とうそうしゃ, tōsōsha}}, {{t|ja|逃走犯|tr=とうそうはん, tōsōhan}} * Latin: {{t|la|proscriptus|m}} * Macedonian: {{t|mk|бе́галец|m}}, {{t|mk|одметник|m}} * Māori: {{t|mi|tangata hara}} * Norman: {{t|nrf|proscrit|m}} * Old English: {{t|ang|ūtlaga|m}} * Portuguese: {{t|pt|fora de lei|m|f}}, {{t|pt|fora da lei|m|f}}, {{t+|pt|foragido|m}} * Romanian: {{t+|ro|fugar|m}} * Russian: {{t+|ru|престу́пник|m}}, {{t+|ru|престу́пница|f}}, {{t+|ru|разбо́йник|m}}, {{t+|ru|разбо́йница|f}} * Serbo-Croatian: *: Latin: {{t+|sh|razbojnik|m}}, {{t+|sh|odmetnik|m}}, {{t|sh|izopćenik|m}} * Spanish: {{t+|es|forajido|m}} * Swedish: {{t+|sv|bandit|c}} * Tagalog: {{t|tl|taunlabas}} * Welsh: {{t|cy|gŵr deol|m}} {{trans-bottom}} {{trans-top|person without legal rights}} * Danish: {{t+|da|fredløs|c}} * Dutch: {{t+|nl|vogelvrije}} * Finnish: {{t+|fi|lainsuojaton}} * German: {{t+|de|Ächtung}} * Middle English: {{t|enm|outlawe}} * Romanian: {{t|ro|persoană fără de lege|f}} * Russian: {{t+|ru|изго́й|m}}, {{t+|ru|изгна́нник|m}}, {{t+|ru|изгна́нница|f}}, {{t+|ru|отве́рженный|m}}, {{t+|ru|отверженный|f|alt=отве́рженная}} * Spanish: {{t+|es|proscripto|m}}, {{t+|es|proscrito|m}} * Swedish: {{t+|sv|fredlös|c}} {{trans-bottom}} {{trans-top|wild horse}} * Bulgarian: {{t|bg|мустанг|m}} * Chinese: *: Mandarin: {{t+|cmn|野馬|tr=yěmǎ}} * Finnish: {{t+|fi|villihevonen}} * Greek: {{t|el|αγριάλογο|n}} * Macedonian: {{t|mk|му́станг|m}} * Russian: {{t|ru|[[дикий|ди́кая]] [[ло́шадь]]|f}} {{trans-bottom}} ===See also=== * {{l|en|scofflaw}} ===Verb=== {{en-verb}} # {{lb|en|transitive}} To [[declare]] [[illegal]]. # {{lb|en|transitive}} To [[place]] a [[ban]] upon. #* {{quote-journal|en|date=2016-08-15|url=http://www.bbc.co.uk/news/uk-37080682|title='Zombie knives' ban to come into force|work=w:BBC News|passage=The legal change in England and Wales will '''outlaw''' selling, manufacturing, renting or importing zombie knives.|archiveurl=https://web.archive.org/web/20230830180246/https://www.bbc.com/news/uk-37080682}} #* {{quote-journal|en|author=Michael Fanone|title=Opinion: Here’s the reason people tell me they want to buy an AR-15. And it’s simply ludicrous|magazine=w:CNN|url=https://www.cnn.com/2022/06/05/opinions/guns-ar-15-uvalde-school-shooting-fanone/index.html|date=2022-06-05|passage=And '''outlawing''' these AR-15s would not require confiscating them from people who already have them. Once you’ve made these weapons illegal, anyone found with one would be subject to arrest, since possession of these weapons would be a crime. I think it’s likely that you would see a lot of people opting to turn them in.|archiveurl=https://web.archive.org/web/20230830045650/https://www.cnn.com/2022/06/05/opinions/guns-ar-15-uvalde-school-shooting-fanone/index.html}} # {{lb|en|transitive}} To make or declare (a person) an outlaw. #* {{quote-book|en|title=The Saga of Erik the Red|translator=John Sephton|year=1880|text=Eirik and his people were '''outlawed''' at Thorsnes Thing.}} #* {{quote-journal|en|date=11 Feb 78|volume=5|number=31|journal=Gay Community News|page=5|title=Controversy and Boycott Must Continue|author=Donald Cameron Scot|text=AB has now gone beyond her original stance against gays as teachers and is now advocating a ''federal law'' to '''outlaw''' gays, a law which would override state law in the 19 states which have consenting adults sex laws.}} # {{lb|en|transitive}} To [[remove]] from [[legal]] [[jurisdiction]] or [[enforcement]]. #: {{ux|en|to '''outlaw''' a debt or claim}} # To [[deprive]] of legal [[force]]. #* {{RQ:Fuller Worthies of England|passage=our English common law was '''outlawed''' in those parts.}} ====Translations==== {{trans-top|to declare illegal}} * Bulgarian: {{t|bg|обявявам извън закона}} * Chinese: *: Mandarin: {{t|cmn|[[宣告]][[非法]]|tr=xuāngào fēifǎ}} * Danish: {{t|da|kriminalisere}} * Finnish: {{t|fi|[[julistaa]] [[laittomaksi]]}}, {{t+|fi|kieltää}} * German: {{t+|de|ächten}} * Icelandic: {{t|is|útlægja}} * Old English: {{t|ang|ūtlagian}} * Russian: {{t|ru|[[объявля́ть]] [[вне]] [[закон|зако́на]]|impf}} * Spanish: {{t+|es|ilegalizar}} * Swedish: {{t+|sv|kriminalisera}} {{trans-bottom}} {{trans-top|to place a ban on}} * Bulgarian: {{t|bg|острахирам}} * Danish: {{t|da|banlyse}} * German: {{t+|de|verbannen}} * Icelandic: {{t|is|útlægja}} * Old English: {{t|ang|ūtlagian}} * Swedish: {{t+|sv|bannlysa}} {{trans-bottom}} ====See also==== * {{l|en|criminalize}} * {{l|en|felonize}} * {{l|en|misdemeanorize}} ===Further reading=== * {{R:Webster 1913}} * {{R:Century 1911}} * {{R:OneLook}} {{C|en|Crime|People|Prostitution|Stock characters}} 6o5n6cg4mzem6x4309ta38ilm49x8mo 235618 235617 2026-06-07T02:29:10Z Lee 19 [[:en:outlaw]] වෙතින් එක් සංශෝධනයක් 235617 wikitext text/x-wiki {{also|Outlaw|-out-law}} ==English== {{wp}} [[File:Tim Pollard as Robin Hood.jpg|thumb|right|Robin Hood, an '''outlaw''' in English folklore.]] [[File:Wanted Jesse James.jpg|thumb|right|A wanted poster for Jesse James, an American '''outlaw'''.]] ===Etymology=== From {{inh|en|enm|outlawe}}, {{m|enm|outlagh}}, {{m|enm|utlaȝe}}, from {{inh|en|ang|ūtlaga|t=outlaw}}, borrowed from {{der|en|non|útlagi|t=outlaw, fugitive}}, equivalent to {{af|en|out-|law}}. Cognate with {{cog|is|útlagi|t=outlaw}}. ===Pronunciation=== * {{IPA|en|/ˈaʊt.lɔː/|a=UK}} ** {{rhymes|en|aʊtlɔː|s=2}} * {{IPA|en|/ˈaʊt.lɔ/|a=US}} * {{IPA|en|/ˈaʊt.lɑ/|a=cot-caught}} * {{IPA|en|/ˈæɔt.loː/|a=AU}} ** {{audio|en|En-au-outlaw.ogg|a=AU}} ===Noun=== {{en-noun}} # {{senseid|en|fugitive}} A [[fugitive]] from the [[law]]. #* {{quote-book|en|year=1956|author=w:C. S. Lewis|title=w:The Last Battle|publisher=Collins|year_published=1998|chapter=5 |passage=“I am going to a certain tower, one of three that were built in my grandsire’s time to guard Lantern Waste against certain perilous '''outlaws''' who dwelled there in his day. {{...}}"}} # {{senseid|en|criminal}} {{lb|en|history}} A [[criminal]] who is excluded from normal [[legal]] [[rights]]; one who can be [[kill]]ed [[at will]] without legal [[penalty]]. # {{senseid|en|person who operates outside established norms}} A person who operates outside established [[norms]]. #: {{ux|en|The main character in the play was a bit of an '''outlaw''' who refused to shake hands or say thank you.}} # {{senseid|en|wild animal}} A [[wild]] or [[violent]] [[animal]], such as a [[horse]]. # {{lb|en|humorous}} An [[in-law]]: a relative by marriage. # {{lb|en|humorous}} One who would be an [[in-law]] except that the marriage-like relationship is unofficial. # {{senseid|en|prostitute}} {{lb|en|slang}} A [[prostitute]] who works [[alone]], without a [[pimp]]. #* {{quote-text|en|year=1977|author=Joseph Julian|title=Social Problems|page=463 |passage=Without a pimp, she was an "'''outlaw'''," likely to be harassed, or threatened with assault or robbery on the street.}} #* {{quote-text|en|year=2010|author=Lawrence Block|title=Eight Million Ways To Die |passage=She was an '''outlaw'''. Chance is doing some double-checking to see if she had a pimp nobody knew about, but it doesn't look likely.}} ====Synonyms==== * {{sense|fugitive}} {{l|en|absconder}}, {{l|en|fugitive}} * {{sense|criminal}} {{l|en|bandit}}, {{l|en|wolf's head}} * {{sense|person who operates outside established norms}} {{l|en|anti-hero}}, {{l|en|deviant}} ====Hypernyms==== * {{sense|criminal}} {{see thesaurus|en|criminal}} * {{sense|prostitute}} {{see thesaurus|en|prostitute}} ====Derived terms==== {{col|en|outlawdom|outlawism|outlawness|outlawry|outlaw state |outlaw country|outlawish}} ====Translations==== {{trans-top-see|a fugitive from the law|fugitive|bandit}} * Bulgarian: {{t+|bg|беглец|m}} * Chinese: *: Mandarin: {{t+|cmn|逃犯|tr=táofàn}}, {{t+|cmn|亡命徒|tr=wángmìngtú}} * Danish: {{t+|da|fredløs|c}} * Dutch: {{t+|nl|vogelvrije}} * Esperanto: {{t|eo|eksterleĝulo}}, {{t|eo|eksterleĝulino}} * Estonian: {{t|et|lindprii}} * Finnish: {{t+|fi|lainsuojaton}} * French: {{t+|fr|hors-la-loi}} * Galician: {{t|gl|gallofo|m}}, {{t|gl|foraxido|m}} * German: {{t+|de|Verfemter|m}} {{qualifier|rare}}, {{t+|de|Outlaw|m}}, {{t+|de|Gesetzloser|m}} * Greek: {{t+|el|παράνομος|m}}, {{t+|el|φυγάς|m}} * Hungarian: {{t|hu|törvényen kívüli}} * Icelandic: {{t|is|útlagi|m}}, {{t|is|útilegumaður}} * Italian: {{t+|it|fuorilegge|m}} * Japanese: {{t+|ja|逃亡者|tr=とうぼうしゃ, tōbōsha}}, {{t|ja|逃亡犯|tr=とうぼうはん, tōbōhan}}, {{t+|ja|逃走者|tr=とうそうしゃ, tōsōsha}}, {{t|ja|逃走犯|tr=とうそうはん, tōsōhan}} * Latin: {{t|la|proscriptus|m}} * Macedonian: {{t|mk|бе́галец|m}}, {{t|mk|одметник|m}} * Māori: {{t|mi|tangata hara}} * Norman: {{t|nrf|proscrit|m}} * Old English: {{t|ang|ūtlaga|m}} * Portuguese: {{t|pt|fora de lei|m|f}}, {{t|pt|fora da lei|m|f}}, {{t+|pt|foragido|m}} * Romanian: {{t+|ro|fugar|m}} * Russian: {{t+|ru|престу́пник|m}}, {{t+|ru|престу́пница|f}}, {{t+|ru|разбо́йник|m}}, {{t+|ru|разбо́йница|f}} * Serbo-Croatian: *: Latin: {{t+|sh|razbojnik|m}}, {{t+|sh|odmetnik|m}}, {{t|sh|izopćenik|m}} * Spanish: {{t+|es|forajido|m}} * Swedish: {{t+|sv|bandit|c}} * Tagalog: {{t|tl|taunlabas}} * Welsh: {{t|cy|gŵr deol|m}} {{trans-bottom}} {{trans-top|person without legal rights}} * Danish: {{t+|da|fredløs|c}} * Dutch: {{t+|nl|vogelvrije}} * Finnish: {{t+|fi|lainsuojaton}} * German: {{t+|de|Ächtung}} * Middle English: {{t|enm|outlawe}} * Romanian: {{t|ro|persoană fără de lege|f}} * Russian: {{t+|ru|изго́й|m}}, {{t+|ru|изгна́нник|m}}, {{t+|ru|изгна́нница|f}}, {{t+|ru|отве́рженный|m}}, {{t+|ru|отверженный|f|alt=отве́рженная}} * Spanish: {{t+|es|proscripto|m}}, {{t+|es|proscrito|m}} * Swedish: {{t+|sv|fredlös|c}} {{trans-bottom}} {{trans-top|wild horse}} * Bulgarian: {{t|bg|мустанг|m}} * Chinese: *: Mandarin: {{t+|cmn|野馬|tr=yěmǎ}} * Finnish: {{t+|fi|villihevonen}} * Greek: {{t|el|αγριάλογο|n}} * Macedonian: {{t|mk|му́станг|m}} * Russian: {{t|ru|[[дикий|ди́кая]] [[ло́шадь]]|f}} {{trans-bottom}} ===See also=== * {{l|en|scofflaw}} ===Verb=== {{en-verb}} # {{lb|en|transitive}} To [[declare]] [[illegal]]. # {{lb|en|transitive}} To [[place]] a [[ban]] upon. #* {{quote-journal|en|date=2016-08-15|url=http://www.bbc.co.uk/news/uk-37080682|title='Zombie knives' ban to come into force|work=w:BBC News|passage=The legal change in England and Wales will '''outlaw''' selling, manufacturing, renting or importing zombie knives.|archiveurl=https://web.archive.org/web/20230830180246/https://www.bbc.com/news/uk-37080682}} #* {{quote-journal|en|author=Michael Fanone|title=Opinion: Here’s the reason people tell me they want to buy an AR-15. And it’s simply ludicrous|magazine=w:CNN|url=https://www.cnn.com/2022/06/05/opinions/guns-ar-15-uvalde-school-shooting-fanone/index.html|date=2022-06-05|passage=And '''outlawing''' these AR-15s would not require confiscating them from people who already have them. Once you’ve made these weapons illegal, anyone found with one would be subject to arrest, since possession of these weapons would be a crime. I think it’s likely that you would see a lot of people opting to turn them in.|archiveurl=https://web.archive.org/web/20230830045650/https://www.cnn.com/2022/06/05/opinions/guns-ar-15-uvalde-school-shooting-fanone/index.html}} # {{lb|en|transitive}} To make or declare (a person) an outlaw. #* {{quote-book|en|title=The Saga of Erik the Red|translator=John Sephton|year=1880|text=Eirik and his people were '''outlawed''' at Thorsnes Thing.}} #* {{quote-journal|en|date=11 Feb 78|volume=5|number=31|journal=Gay Community News|page=5|title=Controversy and Boycott Must Continue|author=Donald Cameron Scot|text=AB has now gone beyond her original stance against gays as teachers and is now advocating a ''federal law'' to '''outlaw''' gays, a law which would override state law in the 19 states which have consenting adults sex laws.}} # {{lb|en|transitive}} To [[remove]] from [[legal]] [[jurisdiction]] or [[enforcement]]. #: {{ux|en|to '''outlaw''' a debt or claim}} # To [[deprive]] of legal [[force]]. #* {{RQ:Fuller Worthies of England|passage=our English common law was '''outlawed''' in those parts.}} ====Translations==== {{trans-top|to declare illegal}} * Bulgarian: {{t|bg|обявявам извън закона}} * Chinese: *: Mandarin: {{t|cmn|[[宣告]][[非法]]|tr=xuāngào fēifǎ}} * Danish: {{t|da|kriminalisere}} * Finnish: {{t|fi|[[julistaa]] [[laittomaksi]]}}, {{t+|fi|kieltää}} * German: {{t+|de|ächten}} * Icelandic: {{t|is|útlægja}} * Old English: {{t|ang|ūtlagian}} * Russian: {{t|ru|[[объявля́ть]] [[вне]] [[закон|зако́на]]|impf}} * Spanish: {{t+|es|ilegalizar}} * Swedish: {{t+|sv|kriminalisera}} {{trans-bottom}} {{trans-top|to place a ban on}} * Bulgarian: {{t|bg|острахирам}} * Danish: {{t|da|banlyse}} * German: {{t+|de|verbannen}} * Icelandic: {{t|is|útlægja}} * Old English: {{t|ang|ūtlagian}} * Swedish: {{t+|sv|bannlysa}} {{trans-bottom}} ====See also==== * {{l|en|criminalize}} * {{l|en|felonize}} * {{l|en|misdemeanorize}} ===Further reading=== * {{R:Webster 1913}} * {{R:Century 1911}} * {{R:OneLook}} {{C|en|Crime|People|Prostitution|Stock characters}} 6o5n6cg4mzem6x4309ta38ilm49x8mo 235667 235618 2026-06-07T05:16:04Z Pinthura 2424 යොමු තොරතුරු පරිවර්තනය 235667 wikitext text/x-wiki {{also|Outlaw|-out-law}} == ඉංග්‍රීසි == {{wp}} [[File:Tim Pollard as Robin Hood.jpg|thumb|right|Robin Hood, an '''outlaw''' in English folklore.]] [[File:Wanted Jesse James.jpg|thumb|right|A wanted poster for Jesse James, an American '''outlaw'''.]] === නිරුක්තිය === From {{inh|en|enm|outlawe}}, {{m|enm|outlagh}}, {{m|enm|utlaȝe}}, from {{inh|en|ang|ūtlaga|t=outlaw}}, borrowed from {{der|en|non|útlagi|t=outlaw, fugitive}}, equivalent to {{af|en|out-|law}}. Cognate with {{cog|is|útlagi|t=outlaw}}. === උච්චාරණය === * {{IPA|en|/ˈaʊt.lɔː/|a=UK}} ** {{rhymes|en|aʊtlɔː|s=2}} * {{IPA|en|/ˈaʊt.lɔ/|a=US}} * {{IPA|en|/ˈaʊt.lɑ/|a=cot-caught}} * {{IPA|en|/ˈæɔt.loː/|a=AU}} ** {{audio|en|En-au-outlaw.ogg|a=AU}} === නාම පදය === {{en-noun}} # {{senseid|en|fugitive}} A [[fugitive]] from the [[law]]. #* {{quote-book|en|year=1956|author=w:C. S. Lewis|title=w:The Last Battle|publisher=Collins|year_published=1998|chapter=5 |passage=“I am going to a certain tower, one of three that were built in my grandsire’s time to guard Lantern Waste against certain perilous '''outlaws''' who dwelled there in his day. {{...}}"}} # {{senseid|en|criminal}} {{lb|en|history}} A [[criminal]] who is excluded from normal [[legal]] [[rights]]; one who can be [[kill]]ed [[at will]] without legal [[penalty]]. # {{senseid|en|person who operates outside established norms}} A person who operates outside established [[norms]]. #: {{ux|en|The main character in the play was a bit of an '''outlaw''' who refused to shake hands or say thank you.}} # {{senseid|en|wild animal}} A [[wild]] or [[violent]] [[animal]], such as a [[horse]]. # {{lb|en|humorous}} An [[in-law]]: a relative by marriage. # {{lb|en|humorous}} One who would be an [[in-law]] except that the marriage-like relationship is unofficial. # {{senseid|en|prostitute}} {{lb|en|slang}} A [[prostitute]] who works [[alone]], without a [[pimp]]. #* {{quote-text|en|year=1977|author=Joseph Julian|title=Social Problems|page=463 |passage=Without a pimp, she was an "'''outlaw'''," likely to be harassed, or threatened with assault or robbery on the street.}} #* {{quote-text|en|year=2010|author=Lawrence Block|title=Eight Million Ways To Die |passage=She was an '''outlaw'''. Chance is doing some double-checking to see if she had a pimp nobody knew about, but it doesn't look likely.}} ==== සමාන පද ==== * {{sense|fugitive}} {{l|en|absconder}}, {{l|en|fugitive}} * {{sense|criminal}} {{l|en|bandit}}, {{l|en|wolf's head}} * {{sense|person who operates outside established norms}} {{l|en|anti-hero}}, {{l|en|deviant}} ====Hypernyms==== * {{sense|criminal}} {{see thesaurus|en|criminal}} * {{sense|prostitute}} {{see thesaurus|en|prostitute}} ==== ව්‍යුත්පන්න යෙදුම් ==== {{col|en|outlawdom|outlawism|outlawness|outlawry|outlaw state |outlaw country|outlawish}} ==== පරිවර්තන ==== {{trans-top-see|a fugitive from the law|fugitive|bandit}} * Bulgarian: {{t+|bg|беглец|m}} * Chinese: *: Mandarin: {{t+|cmn|逃犯|tr=táofàn}}, {{t+|cmn|亡命徒|tr=wángmìngtú}} * Danish: {{t+|da|fredløs|c}} * Dutch: {{t+|nl|vogelvrije}} * Esperanto: {{t|eo|eksterleĝulo}}, {{t|eo|eksterleĝulino}} * Estonian: {{t|et|lindprii}} * Finnish: {{t+|fi|lainsuojaton}} * French: {{t+|fr|hors-la-loi}} * Galician: {{t|gl|gallofo|m}}, {{t|gl|foraxido|m}} * German: {{t+|de|Verfemter|m}} {{qualifier|rare}}, {{t+|de|Outlaw|m}}, {{t+|de|Gesetzloser|m}} * Greek: {{t+|el|παράνομος|m}}, {{t+|el|φυγάς|m}} * Hungarian: {{t|hu|törvényen kívüli}} * Icelandic: {{t|is|útlagi|m}}, {{t|is|útilegumaður}} * Italian: {{t+|it|fuorilegge|m}} * Japanese: {{t+|ja|逃亡者|tr=とうぼうしゃ, tōbōsha}}, {{t|ja|逃亡犯|tr=とうぼうはん, tōbōhan}}, {{t+|ja|逃走者|tr=とうそうしゃ, tōsōsha}}, {{t|ja|逃走犯|tr=とうそうはん, tōsōhan}} * Latin: {{t|la|proscriptus|m}} * Macedonian: {{t|mk|бе́галец|m}}, {{t|mk|одметник|m}} * Māori: {{t|mi|tangata hara}} * Norman: {{t|nrf|proscrit|m}} * Old English: {{t|ang|ūtlaga|m}} * Portuguese: {{t|pt|fora de lei|m|f}}, {{t|pt|fora da lei|m|f}}, {{t+|pt|foragido|m}} * Romanian: {{t+|ro|fugar|m}} * Russian: {{t+|ru|престу́пник|m}}, {{t+|ru|престу́пница|f}}, {{t+|ru|разбо́йник|m}}, {{t+|ru|разбо́йница|f}} * Serbo-Croatian: *: Latin: {{t+|sh|razbojnik|m}}, {{t+|sh|odmetnik|m}}, {{t|sh|izopćenik|m}} * Spanish: {{t+|es|forajido|m}} * Swedish: {{t+|sv|bandit|c}} * Tagalog: {{t|tl|taunlabas}} * Welsh: {{t|cy|gŵr deol|m}} {{trans-bottom}} {{trans-top|person without legal rights}} * Danish: {{t+|da|fredløs|c}} * Dutch: {{t+|nl|vogelvrije}} * Finnish: {{t+|fi|lainsuojaton}} * German: {{t+|de|Ächtung}} * Middle English: {{t|enm|outlawe}} * Romanian: {{t|ro|persoană fără de lege|f}} * Russian: {{t+|ru|изго́й|m}}, {{t+|ru|изгна́нник|m}}, {{t+|ru|изгна́нница|f}}, {{t+|ru|отве́рженный|m}}, {{t+|ru|отверженный|f|alt=отве́рженная}} * Spanish: {{t+|es|proscripto|m}}, {{t+|es|proscrito|m}} * Swedish: {{t+|sv|fredlös|c}} {{trans-bottom}} {{trans-top|wild horse}} * Bulgarian: {{t|bg|мустанг|m}} * Chinese: *: Mandarin: {{t+|cmn|野馬|tr=yěmǎ}} * Finnish: {{t+|fi|villihevonen}} * Greek: {{t|el|αγριάλογο|n}} * Macedonian: {{t|mk|му́станг|m}} * Russian: {{t|ru|[[дикий|ди́кая]] [[ло́шадь]]|f}} {{trans-bottom}} === අමතර අවධානයට === * {{l|en|scofflaw}} === ක්‍රියා පදය === {{en-verb}} # {{lb|en|transitive}} To [[declare]] [[illegal]]. # {{lb|en|transitive}} To [[place]] a [[ban]] upon. #* {{quote-journal|en|date=2016-08-15|url=http://www.bbc.co.uk/news/uk-37080682|title='Zombie knives' ban to come into force|work=w:BBC News|passage=The legal change in England and Wales will '''outlaw''' selling, manufacturing, renting or importing zombie knives.|archiveurl=https://web.archive.org/web/20230830180246/https://www.bbc.com/news/uk-37080682}} #* {{quote-journal|en|author=Michael Fanone|title=Opinion: Here’s the reason people tell me they want to buy an AR-15. And it’s simply ludicrous|magazine=w:CNN|url=https://www.cnn.com/2022/06/05/opinions/guns-ar-15-uvalde-school-shooting-fanone/index.html|date=2022-06-05|passage=And '''outlawing''' these AR-15s would not require confiscating them from people who already have them. Once you’ve made these weapons illegal, anyone found with one would be subject to arrest, since possession of these weapons would be a crime. I think it’s likely that you would see a lot of people opting to turn them in.|archiveurl=https://web.archive.org/web/20230830045650/https://www.cnn.com/2022/06/05/opinions/guns-ar-15-uvalde-school-shooting-fanone/index.html}} # {{lb|en|transitive}} To make or declare (a person) an outlaw. #* {{quote-book|en|title=The Saga of Erik the Red|translator=John Sephton|year=1880|text=Eirik and his people were '''outlawed''' at Thorsnes Thing.}} #* {{quote-journal|en|date=11 Feb 78|volume=5|number=31|journal=Gay Community News|page=5|title=Controversy and Boycott Must Continue|author=Donald Cameron Scot|text=AB has now gone beyond her original stance against gays as teachers and is now advocating a ''federal law'' to '''outlaw''' gays, a law which would override state law in the 19 states which have consenting adults sex laws.}} # {{lb|en|transitive}} To [[remove]] from [[legal]] [[jurisdiction]] or [[enforcement]]. #: {{ux|en|to '''outlaw''' a debt or claim}} # To [[deprive]] of legal [[force]]. #* {{RQ:Fuller Worthies of England|passage=our English common law was '''outlawed''' in those parts.}} ==== පරිවර්තන ==== {{trans-top|to declare illegal}} * Bulgarian: {{t|bg|обявявам извън закона}} * Chinese: *: Mandarin: {{t|cmn|[[宣告]][[非法]]|tr=xuāngào fēifǎ}} * Danish: {{t|da|kriminalisere}} * Finnish: {{t|fi|[[julistaa]] [[laittomaksi]]}}, {{t+|fi|kieltää}} * German: {{t+|de|ächten}} * Icelandic: {{t|is|útlægja}} * Old English: {{t|ang|ūtlagian}} * Russian: {{t|ru|[[объявля́ть]] [[вне]] [[закон|зако́на]]|impf}} * Spanish: {{t+|es|ilegalizar}} * Swedish: {{t+|sv|kriminalisera}} {{trans-bottom}} {{trans-top|to place a ban on}} * Bulgarian: {{t|bg|острахирам}} * Danish: {{t|da|banlyse}} * German: {{t+|de|verbannen}} * Icelandic: {{t|is|útlægja}} * Old English: {{t|ang|ūtlagian}} * Swedish: {{t+|sv|bannlysa}} {{trans-bottom}} ==== අමතර අවධානයට ==== * {{l|en|criminalize}} * {{l|en|felonize}} * {{l|en|misdemeanorize}} === වැඩිදුර් කියවීම සඳහා === * {{R:Webster 1913}} * {{R:Century 1911}} * {{R:OneLook}} {{C|en|Crime|People|Prostitution|Stock characters}} 3mqjjtexaojn0uqrvwsf3iuyevcs5tp outlaws 0 144187 235619 2024-06-02T22:51:18Z en>WingerBot 0 replace <* {{audio|en|LL-Q1860 (eng)-Wodencafe-outlaws.wav|Audio (US)}}> with <* {{audio|en|LL-Q1860 (eng)-Wodencafe-outlaws.wav|a=US}}> (clean up audio captions) 235619 wikitext text/x-wiki ==English== ===Pronunciation=== * {{audio|en|LL-Q1860 (eng)-Wodencafe-outlaws.wav|a=US}} ===Noun=== {{head|en|noun form}} # {{plural of|en|outlaw}} ===Verb=== {{head|en|verb form}} # {{infl of|en|outlaw||s-verb-form}} 0pt664015enj240lpkt7ls7ceayt91z 235620 235619 2026-06-07T02:29:15Z Lee 19 [[:en:outlaws]] වෙතින් එක් සංශෝධනයක් 235619 wikitext text/x-wiki ==English== ===Pronunciation=== * {{audio|en|LL-Q1860 (eng)-Wodencafe-outlaws.wav|a=US}} ===Noun=== {{head|en|noun form}} # {{plural of|en|outlaw}} ===Verb=== {{head|en|verb form}} # {{infl of|en|outlaw||s-verb-form}} 0pt664015enj240lpkt7ls7ceayt91z 235666 235620 2026-06-07T05:15:54Z Pinthura 2424 යොමු තොරතුරු පරිවර්තනය 235666 wikitext text/x-wiki == ඉංග්‍රීසි == === උච්චාරණය === * {{audio|en|LL-Q1860 (eng)-Wodencafe-outlaws.wav|a=US}} === නාම පදය === {{head|en|noun form}} # {{plural of|en|outlaw}} === ක්‍රියා පදය === {{head|en|verb form}} # {{infl of|en|outlaw||s-verb-form}} czxlgex4utenfrwgxae4le9b9dwf65r සැකිල්ල:ang-noun 10 144188 235621 2026-04-15T09:11:13Z en>Surjection 0 Changed protection settings for "[[Template:ang-noun]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite)) 235621 wikitext text/x-wiki {{#invoke:ang-headword|show|nouns}}<noinclude>{{documentation}}</noinclude> o34yz291seqb0o8y1ogrfmuyq3ve1j0 235622 235621 2026-06-07T04:50:43Z Lee 19 [[:en:Template:ang-noun]] වෙතින් එක් සංශෝධනයක් 235621 wikitext text/x-wiki {{#invoke:ang-headword|show|nouns}}<noinclude>{{documentation}}</noinclude> o34yz291seqb0o8y1ogrfmuyq3ve1j0 සැකිල්ල:ang-noun/documentation 10 144189 235623 2025-07-06T05:20:32Z en>WingerBot 0 use {{hwcat}} instead of manual headword-line categorization, misc cleanups (manually assisted) 235623 wikitext text/x-wiki {{documentation subpage}} ==Usage== ; <code>head=</code> : Use this to specify alternative display (for diacritics, etc.). Default is <nowiki>{{PAGENAME}}</nowiki>. ; <code>1=</code> : The gender (''m'', ''f'', ''n'' etc.). See [[Module:gender and number]]. ; <code>2=</code> : Plural form. No default, only appears when specified. This can contain macrons, they are removed automatically from the linked page name. ; <code>pl2=</code> : The second plural form. No default, only appears when specified. '''Example:''' (''on page [[dran#Old English|dran]]'') {{temp|ang-noun|head{{=}}drān|m|drāne|pl2{{=}}drāna}} ''this gives:'' {{ang-noun|head=drān|m|drāne|pl2=drāna}} {{hwcat}} kiq5nuago812czdbi7kee0sxroz8bku 235624 235623 2026-06-07T04:51:12Z Lee 19 [[:en:Template:ang-noun/documentation]] වෙතින් එක් සංශෝධනයක් 235623 wikitext text/x-wiki {{documentation subpage}} ==Usage== ; <code>head=</code> : Use this to specify alternative display (for diacritics, etc.). Default is <nowiki>{{PAGENAME}}</nowiki>. ; <code>1=</code> : The gender (''m'', ''f'', ''n'' etc.). See [[Module:gender and number]]. ; <code>2=</code> : Plural form. No default, only appears when specified. This can contain macrons, they are removed automatically from the linked page name. ; <code>pl2=</code> : The second plural form. No default, only appears when specified. '''Example:''' (''on page [[dran#Old English|dran]]'') {{temp|ang-noun|head{{=}}drān|m|drāne|pl2{{=}}drāna}} ''this gives:'' {{ang-noun|head=drān|m|drāne|pl2=drāna}} {{hwcat}} kiq5nuago812czdbi7kee0sxroz8bku Module:ang-headword 828 144190 235625 2025-11-21T23:14:08Z en>Benwing2 0 don't add reconstructed terms to 'reconstructed POS' per [[Wiktionary:Beer_parlour/2025/November#categories_like_Category:Latin_reconstructed_nouns]] 235625 Scribunto text/plain local export = {} local pos_functions = {} local lang = require("Module:languages").getByCode("ang") local insert = table.insert local remove = table.remove local function get_plaintext(...) get_plaintext = require("Module:utilities").get_plaintext return get_plaintext(...) end local function track(page) require("Module:debug").track("ang-headword/" .. page) return true end local function glossary_link(anchor, text) text = text or anchor return "[[Appendix:Glossary#" .. anchor .. "|" .. text .. "]]" end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local NAMESPACE = mw.title.getCurrentTitle().nsText -- unused -- local PAGENAME = mw.loadData("Module:headword/data").pagename local iparams = { [1] = {required = true}, ["def"] = true, ["suff_type"] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local args = frame:getParent().args local poscat = iargs[1] local def = iargs.def local suff_type = iargs.suff_type local postype = nil if suff_type then postype = poscat .. "-" .. suff_type else postype = poscat end local data = { lang = lang, heads = {}, genders = {}, inflections = {}, categories = {}, no_redundant_head_cat = true, -- we want the headword specified to specify whether it has long vowels } if poscat == "suffixes" then insert(data.categories, "Old English " .. suff_type .. "-forming suffixes") end if pos_functions[postype] then local new_poscat = pos_functions[postype](def, args, data) if new_poscat then poscat = new_poscat end end data.pos_category = poscat return require("Module:headword").full_headword(data) end local function validate_genders(genders) for _, gspec in ipairs(genders) do local g = gspec.spec if g ~= "m" and g ~= "f" and g ~= "n" and g ~= "m-p" and g ~= "f-p" and g ~= "n-p" and g ~= "?" then error("Invalid gender: " .. g) end end end pos_functions["nouns"] = function(def, args, data) local params = { ["head"] = {list = true}, ["id"] = true, [1] = {type = "genders", list = "g", flatten = true, disallow_holes = true}, ["g"] = {alias_of = 1, list = false}, [2] = {list = "pl", disallow_holes = true}, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id validate_genders(args[1]) data.genders = args[1] local pl = args[2] if pl[1] then pl.label = "nominative plural" insert(data.inflections, pl) end end pos_functions["proper nouns"] = pos_functions["nouns"] pos_functions["verbs"] = function(def, args, data) local params = { [1] = {alias_of = "head", list = false}, ["head"] = {list = true}, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id end local function adjectives(pos, def, args, data) local list = {list = true} local params = { [1] = {alias_of = "head", list = false}, ["head"] = list, ["comp"] = list, [2] = {alias_of = "comp", list = false}, ["sup"] = list, [3] = {alias_of = "sup", list = false}, ["adv"] = list, ["indecl"] = {type = "boolean"}, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id if args.indecl then insert(data.inflections, {label = glossary_link("indeclinable")}) end local comp = args.comp if #comp > 0 then comp.label = "comparative" insert(data.inflections, comp) end local sup = args.sup if #sup > 0 then sup.label = "superlative" insert(data.inflections, sup) end if #args.adv > 0 then args.adv.label = "adverb" insert(data.inflections, args.adv) end end pos_functions["adjectives"] = function(def, args, data) return adjectives("adjectives", def, args, data) end pos_functions["participles"] = function(def, args, data) return adjectives("participles", def, args, data) end pos_functions["determiners"] = function(def, args, data) return adjectives("determiners", def, args, data) end pos_functions["pronouns"] = function(def, args, data) return adjectives("pronouns", def, args, data) end pos_functions["suffixes-adjective"] = function(def, args, data) return adjectives("suffixes", def, args, data) end pos_functions["numerals-adjective"] = function(def, args, data) return adjectives("numerals", def, args, data) end pos_functions["adverbs"] = function(def, args, data) local list = {list = true} local params = { [1] = {alias_of = "head", list = false}, [2] = {alias_of = "comp", list = false}, [3] = {alias_of = "sup", list = false}, ["head"] = list, ["comp"] = list, ["sup"] = list, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id local comp, sup if args.comp[1] == "-" then comp = "-" elseif #args.comp > 0 then args.comp.label = glossary_link("comparative") comp = args.comp end if args.comp[1] == "-" or args.sup[1] == "-" then sup = "-" elseif #args.sup > 0 then args.sup.label = glossary_link("superlative") sup = args.sup end if comp == "-" then insert(data.inflections, {label = "not " .. glossary_link("comparable")}) insert(data.categories, "Old English uncomparable adverbs") else insert(data.inflections, comp) end if sup == "-" then if comp ~= "-" then insert(data.inflections, {label = "no " .. glossary_link("superlative")}) end else insert(data.inflections, sup) end end pos_functions["suffixes-adverb"] = pos_functions["adverbs"] local function get_forms(forms) if #forms == 0 then return nil end local i, attested = 1, false while true do local form = forms[i] if form == nil then return forms, attested elseif form == "-" then remove(forms, i) else if not (attested or get_plaintext(form):sub(1, 1) == "*") then attested = true end i = i + 1 end end end local function degree(pos, deg, other_arg, other_label, args, data) local boolean = {type = "boolean"} local list = {list = true} local params = { [1] = {alias_of = "head", list = false}, ["head"] = list, ["positive"] = list, [other_arg] = list, ["indecl"] = boolean, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id if args.indecl then insert(data.inflections, {label = glossary_link("indeclinable")}) end local positive, positive_attested = get_forms(args.positive) if positive then if not positive_attested then insert(data.categories, "Old English " .. deg .. "-only " .. pos) end if #positive > 0 then args.positive.label = "positive" insert(data.inflections, args.positive) else insert(data.inflections, {label = "no positive form"}) end end local other = get_forms(args[other_arg]) if other then if #other > 0 then args[other_arg].label = other_label insert(data.inflections, args[other_arg]) else insert(data.inflections, {label = "no " .. other_label .. " form"}) end end -- If a lemma, return the primary part of speech ("adjectives" or -- "adverbs"), so that the term is categorized in "Old English adjectives" -- or "Old English adverbs". Otherwise, return nothing, so that the term -- goes in the relevant non-lemma category (e.g. "Old English comparative -- adjectives"), and into "Old English non-lemma forms". if positive and not positive_attested then return pos end end pos_functions["comparative adjectives"] = function(def, args, data) return degree("adjectives", "comparative", "sup", "superlative", args, data) end pos_functions["superlative adjectives"] = function(def, args, data) return degree("adjectives", "superlative", "comp", "comparative", args, data) end pos_functions["comparative adverbs"] = function(def, args, data) return degree("adverbs", "comparative", "sup", "superlative", args, data) end pos_functions["superlative adverbs"] = function(def, args, data) return degree("adverbs", "superlative", "comp", "comparative", args, data) end local function non_lemma_forms(def, args, data) local params = { [1] = {required = true, default = def}, -- headword or cases ["head"] = {list = true, require_index = true}, ["g"] = {list = true}, ["id"] = true, } local args = require("Module:parameters").process(args, params) local heads = {args[1]} for _, head in ipairs(args.head) do insert(heads, head) end data.heads = heads data.genders = args.g data.id = args.id end pos_functions["noun forms"] = non_lemma_forms pos_functions["proper noun forms"] = non_lemma_forms pos_functions["pronoun forms"] = non_lemma_forms pos_functions["verb forms"] = non_lemma_forms pos_functions["adjective forms"] = non_lemma_forms pos_functions["participle forms"] = non_lemma_forms pos_functions["determiner forms"] = non_lemma_forms pos_functions["numeral forms"] = non_lemma_forms pos_functions["suffix forms"] = non_lemma_forms return export 8rm183yhaougjiapgy1o5zen3ojx6oa 235626 235625 2026-06-07T04:52:02Z Lee 19 [[:en:Module:ang-headword]] වෙතින් එක් සංශෝධනයක් 235625 Scribunto text/plain local export = {} local pos_functions = {} local lang = require("Module:languages").getByCode("ang") local insert = table.insert local remove = table.remove local function get_plaintext(...) get_plaintext = require("Module:utilities").get_plaintext return get_plaintext(...) end local function track(page) require("Module:debug").track("ang-headword/" .. page) return true end local function glossary_link(anchor, text) text = text or anchor return "[[Appendix:Glossary#" .. anchor .. "|" .. text .. "]]" end -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local NAMESPACE = mw.title.getCurrentTitle().nsText -- unused -- local PAGENAME = mw.loadData("Module:headword/data").pagename local iparams = { [1] = {required = true}, ["def"] = true, ["suff_type"] = true, } local iargs = require("Module:parameters").process(frame.args, iparams) local args = frame:getParent().args local poscat = iargs[1] local def = iargs.def local suff_type = iargs.suff_type local postype = nil if suff_type then postype = poscat .. "-" .. suff_type else postype = poscat end local data = { lang = lang, heads = {}, genders = {}, inflections = {}, categories = {}, no_redundant_head_cat = true, -- we want the headword specified to specify whether it has long vowels } if poscat == "suffixes" then insert(data.categories, "Old English " .. suff_type .. "-forming suffixes") end if pos_functions[postype] then local new_poscat = pos_functions[postype](def, args, data) if new_poscat then poscat = new_poscat end end data.pos_category = poscat return require("Module:headword").full_headword(data) end local function validate_genders(genders) for _, gspec in ipairs(genders) do local g = gspec.spec if g ~= "m" and g ~= "f" and g ~= "n" and g ~= "m-p" and g ~= "f-p" and g ~= "n-p" and g ~= "?" then error("Invalid gender: " .. g) end end end pos_functions["nouns"] = function(def, args, data) local params = { ["head"] = {list = true}, ["id"] = true, [1] = {type = "genders", list = "g", flatten = true, disallow_holes = true}, ["g"] = {alias_of = 1, list = false}, [2] = {list = "pl", disallow_holes = true}, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id validate_genders(args[1]) data.genders = args[1] local pl = args[2] if pl[1] then pl.label = "nominative plural" insert(data.inflections, pl) end end pos_functions["proper nouns"] = pos_functions["nouns"] pos_functions["verbs"] = function(def, args, data) local params = { [1] = {alias_of = "head", list = false}, ["head"] = {list = true}, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id end local function adjectives(pos, def, args, data) local list = {list = true} local params = { [1] = {alias_of = "head", list = false}, ["head"] = list, ["comp"] = list, [2] = {alias_of = "comp", list = false}, ["sup"] = list, [3] = {alias_of = "sup", list = false}, ["adv"] = list, ["indecl"] = {type = "boolean"}, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id if args.indecl then insert(data.inflections, {label = glossary_link("indeclinable")}) end local comp = args.comp if #comp > 0 then comp.label = "comparative" insert(data.inflections, comp) end local sup = args.sup if #sup > 0 then sup.label = "superlative" insert(data.inflections, sup) end if #args.adv > 0 then args.adv.label = "adverb" insert(data.inflections, args.adv) end end pos_functions["adjectives"] = function(def, args, data) return adjectives("adjectives", def, args, data) end pos_functions["participles"] = function(def, args, data) return adjectives("participles", def, args, data) end pos_functions["determiners"] = function(def, args, data) return adjectives("determiners", def, args, data) end pos_functions["pronouns"] = function(def, args, data) return adjectives("pronouns", def, args, data) end pos_functions["suffixes-adjective"] = function(def, args, data) return adjectives("suffixes", def, args, data) end pos_functions["numerals-adjective"] = function(def, args, data) return adjectives("numerals", def, args, data) end pos_functions["adverbs"] = function(def, args, data) local list = {list = true} local params = { [1] = {alias_of = "head", list = false}, [2] = {alias_of = "comp", list = false}, [3] = {alias_of = "sup", list = false}, ["head"] = list, ["comp"] = list, ["sup"] = list, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id local comp, sup if args.comp[1] == "-" then comp = "-" elseif #args.comp > 0 then args.comp.label = glossary_link("comparative") comp = args.comp end if args.comp[1] == "-" or args.sup[1] == "-" then sup = "-" elseif #args.sup > 0 then args.sup.label = glossary_link("superlative") sup = args.sup end if comp == "-" then insert(data.inflections, {label = "not " .. glossary_link("comparable")}) insert(data.categories, "Old English uncomparable adverbs") else insert(data.inflections, comp) end if sup == "-" then if comp ~= "-" then insert(data.inflections, {label = "no " .. glossary_link("superlative")}) end else insert(data.inflections, sup) end end pos_functions["suffixes-adverb"] = pos_functions["adverbs"] local function get_forms(forms) if #forms == 0 then return nil end local i, attested = 1, false while true do local form = forms[i] if form == nil then return forms, attested elseif form == "-" then remove(forms, i) else if not (attested or get_plaintext(form):sub(1, 1) == "*") then attested = true end i = i + 1 end end end local function degree(pos, deg, other_arg, other_label, args, data) local boolean = {type = "boolean"} local list = {list = true} local params = { [1] = {alias_of = "head", list = false}, ["head"] = list, ["positive"] = list, [other_arg] = list, ["indecl"] = boolean, ["id"] = true, } local args = require("Module:parameters").process(args, params) data.heads = args.head data.id = args.id if args.indecl then insert(data.inflections, {label = glossary_link("indeclinable")}) end local positive, positive_attested = get_forms(args.positive) if positive then if not positive_attested then insert(data.categories, "Old English " .. deg .. "-only " .. pos) end if #positive > 0 then args.positive.label = "positive" insert(data.inflections, args.positive) else insert(data.inflections, {label = "no positive form"}) end end local other = get_forms(args[other_arg]) if other then if #other > 0 then args[other_arg].label = other_label insert(data.inflections, args[other_arg]) else insert(data.inflections, {label = "no " .. other_label .. " form"}) end end -- If a lemma, return the primary part of speech ("adjectives" or -- "adverbs"), so that the term is categorized in "Old English adjectives" -- or "Old English adverbs". Otherwise, return nothing, so that the term -- goes in the relevant non-lemma category (e.g. "Old English comparative -- adjectives"), and into "Old English non-lemma forms". if positive and not positive_attested then return pos end end pos_functions["comparative adjectives"] = function(def, args, data) return degree("adjectives", "comparative", "sup", "superlative", args, data) end pos_functions["superlative adjectives"] = function(def, args, data) return degree("adjectives", "superlative", "comp", "comparative", args, data) end pos_functions["comparative adverbs"] = function(def, args, data) return degree("adverbs", "comparative", "sup", "superlative", args, data) end pos_functions["superlative adverbs"] = function(def, args, data) return degree("adverbs", "superlative", "comp", "comparative", args, data) end local function non_lemma_forms(def, args, data) local params = { [1] = {required = true, default = def}, -- headword or cases ["head"] = {list = true, require_index = true}, ["g"] = {list = true}, ["id"] = true, } local args = require("Module:parameters").process(args, params) local heads = {args[1]} for _, head in ipairs(args.head) do insert(heads, head) end data.heads = heads data.genders = args.g data.id = args.id end pos_functions["noun forms"] = non_lemma_forms pos_functions["proper noun forms"] = non_lemma_forms pos_functions["pronoun forms"] = non_lemma_forms pos_functions["verb forms"] = non_lemma_forms pos_functions["adjective forms"] = non_lemma_forms pos_functions["participle forms"] = non_lemma_forms pos_functions["determiner forms"] = non_lemma_forms pos_functions["numeral forms"] = non_lemma_forms pos_functions["suffix forms"] = non_lemma_forms return export 8rm183yhaougjiapgy1o5zen3ojx6oa සැකිල්ල:ang-decl-noun-a-n 10 144191 235627 2025-11-13T18:55:35Z en>AutoDooz 0 no existing calls with bad parameters, throw error instead of warning to avoid future misuse 235627 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{ang-decl-noun<!-- -->|type=strong ''a''-stem<!-- -->|1={{{nomsg|{{{1}}}}}}<!-- -->|3={{{nomsg|{{{1}}}}}}<!-- -->|5={{{1}}}{{#if:{{{vowel|}}}||e}}s<!-- -->|7={{{datsg|{{{1}}}{{#if:{{{vowel|}}}||e}}}}}<!-- -->|2={{#if:{{{short|}}}|{{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}|{{{nomsg|{{{2|{{{1}}}}}}}}}}}<!-- -->|4={{#if:{{{short|}}}|{{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}|{{{nomsg|{{{2|{{{1}}}}}}}}}}}<!-- -->|6={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}|n}}a<!-- -->|8={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}m{{#if:{{{vowel|}}}|,{{{2|{{{1}}}}}}um}}<!-- -->|num={{{num|}}}<!-- -->|title={{{title|}}}<!-- -->}}<!-- -->{{cln|ang|neuter a-stem nouns}}<!-- --><noinclude>{{documentation}}</noinclude> 7lekjiluuj7dd7p3vflzj1f7a4envzy 235628 235627 2026-06-07T04:54:24Z Lee 19 [[:en:Template:ang-decl-noun-a-n]] වෙතින් එක් සංශෝධනයක් 235627 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{ang-decl-noun<!-- -->|type=strong ''a''-stem<!-- -->|1={{{nomsg|{{{1}}}}}}<!-- -->|3={{{nomsg|{{{1}}}}}}<!-- -->|5={{{1}}}{{#if:{{{vowel|}}}||e}}s<!-- -->|7={{{datsg|{{{1}}}{{#if:{{{vowel|}}}||e}}}}}<!-- -->|2={{#if:{{{short|}}}|{{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}|{{{nomsg|{{{2|{{{1}}}}}}}}}}}<!-- -->|4={{#if:{{{short|}}}|{{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}|{{{nomsg|{{{2|{{{1}}}}}}}}}}}<!-- -->|6={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}|n}}a<!-- -->|8={{{2|{{{1}}}}}}{{#if:{{{vowel|}}}||u}}m{{#if:{{{vowel|}}}|,{{{2|{{{1}}}}}}um}}<!-- -->|num={{{num|}}}<!-- -->|title={{{title|}}}<!-- -->}}<!-- -->{{cln|ang|neuter a-stem nouns}}<!-- --><noinclude>{{documentation}}</noinclude> 7lekjiluuj7dd7p3vflzj1f7a4envzy සැකිල්ල:ang-decl-noun-a-n/documentation 10 144192 235629 2013-11-20T20:22:53Z en>Rua 0 Created page with "{{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> Category:Ol..." 235629 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[Category:Old English noun inflection-table templates|a-n]] </includeonly> eg8cs255qv5map6k5dv0ek101ick65p 235630 235629 2026-06-07T04:55:54Z Lee 19 [[:en:Template:ang-decl-noun-a-n/documentation]] වෙතින් එක් සංශෝධනයක් 235629 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> <includeonly> [[Category:Old English noun inflection-table templates|a-n]] </includeonly> eg8cs255qv5map6k5dv0ek101ick65p සැකිල්ල:ang-decl-noun 10 144193 235631 2024-04-27T12:31:29Z en>SurjectionBot 0 Protected "[[Template:ang-decl-noun]]": (bot) automatically protect highly visible templates/modules (reference score: 1999+ >= 1000) ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) 235631 wikitext text/x-wiki {{#invoke:ang-noun|make_table}}<!-- --><noinclude>{{documentation}}</noinclude> hs3z8byefav9f7spfhd975yslulzz9v 235632 235631 2026-06-07T05:00:20Z Lee 19 [[:en:Template:ang-decl-noun]] වෙතින් එක් සංශෝධනයක් 235631 wikitext text/x-wiki {{#invoke:ang-noun|make_table}}<!-- --><noinclude>{{documentation}}</noinclude> hs3z8byefav9f7spfhd975yslulzz9v සැකිල්ල:ang-decl-noun/documentation 10 144194 235633 2021-09-25T12:21:04Z en>Winthrop23 0 235633 wikitext text/x-wiki {{documentation subpage}} ===Usage=== This template is designed to show the full inflection of Old English nouns, including proper nouns. It should be used directly under the ====Declension==== header. It takes the following parameters ; {{para|1}} : Nominative singular ; {{para|2}} : Nominative plural ; {{para|3}} : Accusative singular ; {{para|4}} : Accusative plural ; {{para|5}} : Genitive singular ; {{para|6}} : Genitive plural ; {{para|7}} : Dative singular ; {{para|8}} : Dative plural ; {{para|g|opt=1}} or {{para|gender|opt=1}} : Gender (<code>m</code>, <code>f</code> or <code>n</code>) ; {{para|num|opt=1}} : Number restriction (<code>sg</code> or <code>pl</code>) Multiple forms can be specified by separating them with a comma, and they will be properly linked. Thus, wikilinks (<nowiki>[[]]</nowiki>) should not be used. ===See also=== * [[:Category:Old English noun inflection-table templates]] <includeonly> [[Category:Old English noun inflection-table templates| ]] </includeonly> nlxqfq7rz9oyv23pea7gy7ev7iqd52d 235634 235633 2026-06-07T05:00:40Z Lee 19 [[:en:Template:ang-decl-noun/documentation]] වෙතින් එක් සංශෝධනයක් 235633 wikitext text/x-wiki {{documentation subpage}} ===Usage=== This template is designed to show the full inflection of Old English nouns, including proper nouns. It should be used directly under the ====Declension==== header. It takes the following parameters ; {{para|1}} : Nominative singular ; {{para|2}} : Nominative plural ; {{para|3}} : Accusative singular ; {{para|4}} : Accusative plural ; {{para|5}} : Genitive singular ; {{para|6}} : Genitive plural ; {{para|7}} : Dative singular ; {{para|8}} : Dative plural ; {{para|g|opt=1}} or {{para|gender|opt=1}} : Gender (<code>m</code>, <code>f</code> or <code>n</code>) ; {{para|num|opt=1}} : Number restriction (<code>sg</code> or <code>pl</code>) Multiple forms can be specified by separating them with a comma, and they will be properly linked. Thus, wikilinks (<nowiki>[[]]</nowiki>) should not be used. ===See also=== * [[:Category:Old English noun inflection-table templates]] <includeonly> [[Category:Old English noun inflection-table templates| ]] </includeonly> nlxqfq7rz9oyv23pea7gy7ev7iqd52d සැකිල්ල:ang-decl-noun/sandbox 10 144195 235635 2024-08-26T10:30:19Z en>Feondulf 0 235635 wikitext text/x-wiki {{#invoke:ang-noun/sandbox|make_table}}<!-- --><noinclude>{{documentation}}</noinclude> hviu6r7gsoamlhskijebm07nmyttppj 235636 235635 2026-06-07T05:01:00Z Lee 19 [[:en:Template:ang-decl-noun/sandbox]] වෙතින් එක් සංශෝධනයක් 235635 wikitext text/x-wiki {{#invoke:ang-noun/sandbox|make_table}}<!-- --><noinclude>{{documentation}}</noinclude> hviu6r7gsoamlhskijebm07nmyttppj සැකිල්ල:ang-prep 10 144196 235637 2025-09-05T15:14:30Z en>AutoDooz 0 no existing calls with bad parameters, throw error instead of warning to avoid future misuse 235637 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|ang|preposition|head={{{head|}}}|sort={{{sort|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 8256ywpjfw4n6ce37ihil688b4lw5h0 235638 235637 2026-06-07T05:01:19Z Lee 19 [[:en:Template:ang-prep]] වෙතින් එක් සංශෝධනයක් 235637 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- Validate template parameters -->{{head|ang|preposition|head={{{head|}}}|sort={{{sort|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> 8256ywpjfw4n6ce37ihil688b4lw5h0 සැකිල්ල:ang-prep/documentation 10 144197 235639 2025-07-06T05:20:34Z en>WingerBot 0 use {{hwcat}} instead of manual headword-line categorization, misc cleanups (manually assisted) 235639 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{hwcat}} f8u1ebax0fek1lf9jgky9pqli0yk03y 235640 235639 2026-06-07T05:01:42Z Lee 19 [[:en:Template:ang-prep/documentation]] වෙතින් එක් සංශෝධනයක් 235639 wikitext text/x-wiki {{documentation subpage}} {{documentation needed}}<!-- Replace this with a short description of the purpose of the template, and how to use it. --> {{hwcat}} f8u1ebax0fek1lf9jgky9pqli0yk03y සැකිල්ල:ang-IPA 10 144198 235641 2026-04-15T08:27:25Z en>Surjection 0 Changed protection settings for "[[Template:ang-IPA]]": Highly visible template/module ([Edit=Allow only autopatrollers] (indefinite) [Move=Allow only autopatrollers] (indefinite)) 235641 wikitext text/x-wiki {{#invoke:ang-pron|show}}<!-- --><noinclude>{{documentation}}</noinclude> 8aw7mdvw7f3l2c8uvckwwljw3is47gn 235642 235641 2026-06-07T05:02:02Z Lee 19 [[:en:Template:ang-IPA]] වෙතින් එක් සංශෝධනයක් 235641 wikitext text/x-wiki {{#invoke:ang-pron|show}}<!-- --><noinclude>{{documentation}}</noinclude> 8aw7mdvw7f3l2c8uvckwwljw3is47gn සැකිල්ල:ang-IPA/documentation 10 144199 235643 2023-10-03T00:28:30Z en>WingerBot 0 clean up pronunciation template categories (manually assisted) 235643 wikitext text/x-wiki {{documentation subpage}} This template automatically generates pronunciation for Old English words, relying on [[Module:ang-pron]]. '''NOTE: This documentation is incomplete. Please contact [[User:Benwing2]] for questions.''' ==Usage== Generally, you should supply the regular spelling of the word in {{para|1}}, properly marked up in lower case, with macrons for long vowels, and ċ ġ ċġ sċ for soft versions of these consonants. The module will automatically attempt to generate stress in the correct places, taking into account known prefixes and the {{para|pos}} parameter (see below). In addition, the following symbols can be used: * acute accent on a vowel to override the position of primary stress (e.g. á ī́ ḗa) * grave accent to add secondary stress (e.g. à ī̀ ḕa) * circumflex to force no stress on the word or prefix, for example in a compound (e.g. â ī̂ ē̂a) * <code>.</code> (period) to force a syllable boundary * <code>-</code> (hyphen) to force a prefix/word or word/word boundary in a compound word; the result will be displayed as a single word but the consonants on either side treated as if they occurred at the beginning/end of the word * <code>+</code> (plus) is the opposite of <code>-</code>; it forces a prefix/word or word/word boundary to '''NOT''' occur when it otherwise would * <code><</code> (less-than) to indicate a boundary between a prefix and the main stem; this is similar to <code>-</code> but the prefix will always be unstressed * <code>></code> (greater-than) to indicate a boundary between the main stem and a suffix; this is similar to <code>-</code> but the suffix will always be unstressed * <code>[C]</code> (a single char between brackets) to force a particular allophone of {{IPAchar|/θ s f ɡ x i/}} (see below) For optimal results, you may need to specify the part of speech using {{para|pos}}, either {{para|pos|noun}}, {{para|pos|adj}} (equivalent to {{para|pos|noun}}), {{para|pos|verb}}, or {{para|pos|verbal}} (for participles, verbal nouns in {{m|ang|-ing}}/{{m|ang|-ung}}, and words formed from participles or verbal nouns by adding {{m|ang|-nes}} or variants, {{m|ang|-līċ}} or {{m|ang|-līċe}}). The part of speech determines the recognized prefixes (see below) and the handling of those prefixes. Specifically, prefixes attached to verbs normally have no stress or secondary stress, while prefixes attached to nouns normally have primary stress, with the exception of {{m|ang|ġe-}}, {{m|ang|be-}} and {{m|ang|for-}}. Words with part of speech <code>verbal</code> behave like verbs except with respect to the prefix {{m|ang|un-}}, which bears primary stress in "verbals" but is unstressed in verbs. ===Parameters=== ; {{para|1}}, {{para|2}}, etc. : One or more respelled words or phrases, for which pronunciation will be generated. ; {{para|pos}} : Part of speech (see above). This controls the handling of prefixes. Normally, this does not need to be specified, as it is autodetected. ; {{para|ann}} : If specified, add a boldface "annotation" before the generated pronunciation(s). This should be used when there are multiple pronunciations listed in an etymology section that differ in macrons and/or presence or absence of ''ċ'' or ''ġ''. See {{m|ang|gripe}}/{{m|ang|grīpe}} for an example. The annotation identifies the spelling of the particular pronunciation(s) listed to the right. If {{para|ann|1}} is given, the annotation is generated from the respelling, with special respelling characters and stress accents removed. If any other value is given, it is used directly. ==Prefixes and suffixes== The module will automatically recognize and split off common prefixes and suffixes. "Split off" means that a strong morpheme boundary will be inserted between the prefix/suffix and main component. This causes /f/, /g/, /s/, /þ/, /x/ next to the boundary to be treated as if they are at the beginning or end of a word, and ensures that the main component gets its own stress independently of the prefixes and suffixes (secondary stress a prefix has primary stress, otherwise primary stress). Multiple stacked prefixes/suffixes will be correctly split off if they occur. The prefixes and suffixes that are recognized, and their stress behavior, depend on the inferred or explicitly specified part of speech of the word. There are three basic parts of speech used for this purpose: <code>noun</code> (which includes adjectives and other parts of speech besides verbs), <code>verb</code>, and <code>verbal</code>. "Verbals" include participles in {{m|ang|-ed}}, {{m|ang|-od}} or {{m|ang|-en}} and verbal nouns in {{m|ang|-ing}} or {{m|ang|-ung}}, as well as words formed from participles or verbal nouns by adding {{m|ang|-nes}} or variants, {{m|ang|-līċ}} or {{m|ang|-līċe}}. Examples of the latter are {{m|ang|ābroþennes}}, {{m|ang|āberendlīċ}}, and {{m|ang|ġetācniġendlīce}}. "Verbals" are treated as verbs for the purpose of prefix separation and stress assignment except in the case of {{m|ang|un-}}, where nouns and verbals get primary stress on the prefix while verbs get secondary stress on the prefix. Normally you do not need to specify the part of speech explicitly. It is inferred based on the following rules: * Words ending in ''-an'', ''-ān'', ''-ōn'', ''-ēon'', and ''-enne'' are inferred to be verbs. * Words ending in ''-end'', ''-ende'', ''-ed'', ''-od'', ''-en'', ''-ing'', ''-ung'', or words ending one of these suffixes followed by one or more occurrences of any of the suffixes ''-l[iī][ċc]'', ''-l[iī][ċc]e'', ''-n[eiy]s'' or ''-n[eiy]ss'' (e.g. {{m|ang|ācennedlīċ||native}}, {{m|ang|tōmearcodnes||description}} and {{m|ang|unġedafenlīcnes||unfitness, inconvenience}}) are inferred to be verbals. * All other words are inferred to be nouns. Prefixes are not recognized in some circumstances, specifically: * Some prefixes are only recognized for certain parts of speech (see table below). * Some prefixes have a restriction that they can't be directly followed by ''a'', ''o'', ''ā'' or ''ō'' (this applies in particular to prefixes ending in ''-e'', such as {{m|ang|ġe-}}, and prevents e.g. {{m|ang|ġearwian}} or {{m|ang|beofor}} from being recognized as containing a prefix). * Prefixes with any special characters or accents in them aren't recognized. * Prefixes aren't recognized if directly followed by <code>+</code> (which indicates a non-boundary). * Prefixes aren't recognized if not followed by at least one vowel (hence {{m|ang|betst}} is not recognized as containing {{m|ang|be-}} and {{m|ang|ford}} is not recognized as containing {{m|ang|for-}}). * Prefixes aren't recognized if not followed by at least three letters (hence {{m|ang|inne}} is not recognized as containing {{m|ang|in-}}). * Prefixes aren't recognized if directly followed by a cluster of consonants that are not an allowed word onset (hence {{m|ang|āxian}} is not recognized as containing {{m|ang|ā-}}, because ''x-'' is not a valid onset; likewise {{m|ang|bennian}} and {{m|ang|bercan}} are not recognized as containing {{m|ang|be-}}). * Prefixes aren't recognized if directly followed by one or more consonants plus an explicit syllable division marker <code>.</code> (since splitting off the prefix would result in a syllable with no vowels). Suffixes aren't recognized in similar circumstances, specifically: * Some suffixes are only recognized for certain parts of speech (see table below). * Suffixes with any special characters or accents in them aren't recognized. * Suffixes aren't recognized if directly preceded by <code>+</code> (which indicates a non-boundary). * Suffixes aren't recognized if not preceded by at least one vowel. * Suffixes aren't recognized if the preceding text ends in an explicit syllable division marker <code>.</code> followed by at least one consonant (since splitting off the suffix would result in a syllable with no vowels). The following is the complete list of prefixes recognized as of Dec 15, 2019: {|class="wikitable" ! Prefix !! Verb/verbal behavior !! Noun behavior !! Notes |- | {{m|ang|ā-}} || no stress || primary stress || |- | {{m|ang|æt-}} || no stress || (unrecognized) || |- | {{m|ang|æfter-}} || secondary stress || primary stress || |- | {{m|ang|and-}} || no stress || primary stress || |- | {{m|ang|an-}} || no stress || primary stress || |- | {{m|ang|be-}} || no stress || no stress || not when followed by ''a'', ''o'', ''ā'' or ''ō'' |- | {{m|ang|bī-}} || (unrecognized) || primary stress || |- | {{m|ang|ed-}} || no stress || primary stress || |- | {{m|ang|fore-}} || no stress || primary stress || not when followed by ''a'', ''o'', ''ā'' or ''ō'' |- | {{m|ang|forþ-}} || no stress || primary stress || also {{m|ang|forð-}} |- | {{m|ang|for-}} || no stress || no stress || |- | {{m|ang|fram-}} || no stress || primary stress || |- | {{m|ang|ġeond-}} || no stress || (unrecognized) || |- | {{m|ang|ġe-}} || no stress || no stress || not when followed by ''a'', ''o'', ''ā'' or ''ō'' |- | {{m|ang|in-}} || no stress || primary stress || |- | {{m|ang|mis-}} || no stress || (unrecognized) || |- | {{m|ang|ofer-}} || secondary stress || primary stress || |- | {{m|ang|of-}} || no stress || primary stress || |- | {{m|ang|on-}} || no stress || primary stress || |- | {{m|ang|or-}} || (unrecognized) || primary stress || |- | {{m|ang|oþ-}} || no stress || (unrecognized) || also {{m|ang|oð-}} |- | {{m|ang|stēop-}} || (unrecognized) || primary stress || |- | {{m|ang|tō-}} || no stress || primary stress || |- | {{m|ang|under-}} || secondary stress || primary stress || |- | {{m|ang|un-}} || no stress || primary stress || primary stress in verbals |- | {{m|ang|up-}} || no stress || primary stress || |- | {{m|ang|ūt-}} || no stress || primary stress || |- | {{m|ang|ūþ-}} || (unrecognized) || primary stress || also {{m|ang|ūð-}} |- | {{m|ang|wiþer-}} || secondary stress || primary stress || also {{m|ang|wiðer-}} and corresponding variants with ''ƿ'' |- | {{m|ang|wiþ-}} || no stress || (unrecognized) || also {{m|ang|wið-}} and corresponding variants with ''ƿ'' |- | {{m|ang|ymb-}} || no stress || primary stress || |- | {{m|ang|þurh-}} || no stress || primary stress || also {{m|ang|ðurh-}} |} Note the general pattern where prefixes are stressed as nouns but unstressed as verbs (where multisyllabic prefixes generally get secondary stress), and the fact that {{m|ang|be-}}, {{m|ang|for-}}, and {{m|ang|ġe-}} are exceptions in that they never receive stress. When stress is assigned to a multisyllabic prefix, it goes on the first syllable. The following is the complete list of suffixes recognized as of Dec 15, 2019: {|class="wikitable" ! Prefix !! Verb/verbal behavior !! Noun behavior !! Notes |- | {{m|ang|-bǣre}} || (unrecognized) || secondary stress || |- | {{m|ang|-fæst}} || (unrecognized) || secondary stress || |- | {{m|ang|-feald}} || (unrecognized) || secondary stress || |- | {{m|ang|-ful}}, {{m|ang|-full}} || (unrecognized) || no stress || |- | {{m|ang|-lēas}} || (unrecognized) || secondary stress || |- | {{m|ang|-līċ}}, {{m|ang|-līc}}, {{m|ang|-liċ}}, {{m|ang|-lic}} || no stress || no stress || |- | {{m|ang|-līċe}} || secondary stress || secondary stress || |- | {{m|ang|-nes}}, {{m|ang|-ness}}, {{m|ang|-nis}}, {{m|ang|-nys}} || no stress || no stress || |- | {{m|ang|-sum}} || (unrecognized) || no stress || |} ==Explicit allophones== Occasionally you will need to force a particular allophone of a multi-allophone phoneme such as {{IPAchar|/s/}} to appear. An example is verbs ending in ''-sian''. These are special-cased to have the {{IPAchar|[s]}} allophone even following a voiced sound, which applies in most cases, but {{m|ang|clǣnsian||to cleanse}} and derivatives are exceptions, and have {{IPAchar|[z]}}. To force this, use a respelling with ''[z]'', e.g. ''clǣn[z]ian''. Another example is verbs ending in ''-rian''. If directly preceded by a short front vowel, it is assumed to be weak class I and have phonemic /j/ for written ''i''. However, some verbs of this form are weak class II (e.g. {{m|ang|beterian}}), and are pronounced with phonemic /i/. To force this, use a respelling with ''[i]'', e.g. ''be+ter[i]an'' (we also need the ''+'' symbol to prevent ''be-'' from being interpreted as a prefix). The following explicit-allophone symbols are currently recognized: * <code>[þ]</code> (voiceless allophone of {{IPAchar|/θ/}}) * <code>[ð]</code> (voiced allophone of {{IPAchar|/θ/}}) * <code>[s]</code> (voiceless allophone of {{IPAchar|/s/}}) * <code>[z]</code> (voiced allophone of {{IPAchar|/s/}}) * <code>[f]</code> (voiceless allophone of {{IPAchar|/f/}}) * <code>[v]</code> (voiced allophone of {{IPAchar|/f/}}) * <code>[g]</code> (stop allophone of {{IPAchar|/ɡ/}}) * <code>[ɣ]</code> (fricative allophone of {{IPAchar|/ɡ/}}) * <code>[x]</code> (velar fricative allophone of {{IPAchar|/x/}}) * <code>[ç]</code> (palatal fricative allophone of {{IPAchar|/x/}}) * <code>[h]</code> (glottal fricative allophone of {{IPAchar|/x/}}) * <code>[i]</code> (interpretation of written ''i'' as {{IPAchar|/i/}} not {{IPAchar|/j/}}) There is no <code>[j]</code>; use ''ġ'' to force a {{IPAchar|/j/}}. <includeonly> [[Category:Old English pronunciation templates|IPA]] </includeonly> 2ulza2rrqqwiut6nv3pxbwlo2nd6ud3 235644 235643 2026-06-07T05:02:27Z Lee 19 [[:en:Template:ang-IPA/documentation]] වෙතින් එක් සංශෝධනයක් 235643 wikitext text/x-wiki {{documentation subpage}} This template automatically generates pronunciation for Old English words, relying on [[Module:ang-pron]]. '''NOTE: This documentation is incomplete. Please contact [[User:Benwing2]] for questions.''' ==Usage== Generally, you should supply the regular spelling of the word in {{para|1}}, properly marked up in lower case, with macrons for long vowels, and ċ ġ ċġ sċ for soft versions of these consonants. The module will automatically attempt to generate stress in the correct places, taking into account known prefixes and the {{para|pos}} parameter (see below). In addition, the following symbols can be used: * acute accent on a vowel to override the position of primary stress (e.g. á ī́ ḗa) * grave accent to add secondary stress (e.g. à ī̀ ḕa) * circumflex to force no stress on the word or prefix, for example in a compound (e.g. â ī̂ ē̂a) * <code>.</code> (period) to force a syllable boundary * <code>-</code> (hyphen) to force a prefix/word or word/word boundary in a compound word; the result will be displayed as a single word but the consonants on either side treated as if they occurred at the beginning/end of the word * <code>+</code> (plus) is the opposite of <code>-</code>; it forces a prefix/word or word/word boundary to '''NOT''' occur when it otherwise would * <code><</code> (less-than) to indicate a boundary between a prefix and the main stem; this is similar to <code>-</code> but the prefix will always be unstressed * <code>></code> (greater-than) to indicate a boundary between the main stem and a suffix; this is similar to <code>-</code> but the suffix will always be unstressed * <code>[C]</code> (a single char between brackets) to force a particular allophone of {{IPAchar|/θ s f ɡ x i/}} (see below) For optimal results, you may need to specify the part of speech using {{para|pos}}, either {{para|pos|noun}}, {{para|pos|adj}} (equivalent to {{para|pos|noun}}), {{para|pos|verb}}, or {{para|pos|verbal}} (for participles, verbal nouns in {{m|ang|-ing}}/{{m|ang|-ung}}, and words formed from participles or verbal nouns by adding {{m|ang|-nes}} or variants, {{m|ang|-līċ}} or {{m|ang|-līċe}}). The part of speech determines the recognized prefixes (see below) and the handling of those prefixes. Specifically, prefixes attached to verbs normally have no stress or secondary stress, while prefixes attached to nouns normally have primary stress, with the exception of {{m|ang|ġe-}}, {{m|ang|be-}} and {{m|ang|for-}}. Words with part of speech <code>verbal</code> behave like verbs except with respect to the prefix {{m|ang|un-}}, which bears primary stress in "verbals" but is unstressed in verbs. ===Parameters=== ; {{para|1}}, {{para|2}}, etc. : One or more respelled words or phrases, for which pronunciation will be generated. ; {{para|pos}} : Part of speech (see above). This controls the handling of prefixes. Normally, this does not need to be specified, as it is autodetected. ; {{para|ann}} : If specified, add a boldface "annotation" before the generated pronunciation(s). This should be used when there are multiple pronunciations listed in an etymology section that differ in macrons and/or presence or absence of ''ċ'' or ''ġ''. See {{m|ang|gripe}}/{{m|ang|grīpe}} for an example. The annotation identifies the spelling of the particular pronunciation(s) listed to the right. If {{para|ann|1}} is given, the annotation is generated from the respelling, with special respelling characters and stress accents removed. If any other value is given, it is used directly. ==Prefixes and suffixes== The module will automatically recognize and split off common prefixes and suffixes. "Split off" means that a strong morpheme boundary will be inserted between the prefix/suffix and main component. This causes /f/, /g/, /s/, /þ/, /x/ next to the boundary to be treated as if they are at the beginning or end of a word, and ensures that the main component gets its own stress independently of the prefixes and suffixes (secondary stress a prefix has primary stress, otherwise primary stress). Multiple stacked prefixes/suffixes will be correctly split off if they occur. The prefixes and suffixes that are recognized, and their stress behavior, depend on the inferred or explicitly specified part of speech of the word. There are three basic parts of speech used for this purpose: <code>noun</code> (which includes adjectives and other parts of speech besides verbs), <code>verb</code>, and <code>verbal</code>. "Verbals" include participles in {{m|ang|-ed}}, {{m|ang|-od}} or {{m|ang|-en}} and verbal nouns in {{m|ang|-ing}} or {{m|ang|-ung}}, as well as words formed from participles or verbal nouns by adding {{m|ang|-nes}} or variants, {{m|ang|-līċ}} or {{m|ang|-līċe}}. Examples of the latter are {{m|ang|ābroþennes}}, {{m|ang|āberendlīċ}}, and {{m|ang|ġetācniġendlīce}}. "Verbals" are treated as verbs for the purpose of prefix separation and stress assignment except in the case of {{m|ang|un-}}, where nouns and verbals get primary stress on the prefix while verbs get secondary stress on the prefix. Normally you do not need to specify the part of speech explicitly. It is inferred based on the following rules: * Words ending in ''-an'', ''-ān'', ''-ōn'', ''-ēon'', and ''-enne'' are inferred to be verbs. * Words ending in ''-end'', ''-ende'', ''-ed'', ''-od'', ''-en'', ''-ing'', ''-ung'', or words ending one of these suffixes followed by one or more occurrences of any of the suffixes ''-l[iī][ċc]'', ''-l[iī][ċc]e'', ''-n[eiy]s'' or ''-n[eiy]ss'' (e.g. {{m|ang|ācennedlīċ||native}}, {{m|ang|tōmearcodnes||description}} and {{m|ang|unġedafenlīcnes||unfitness, inconvenience}}) are inferred to be verbals. * All other words are inferred to be nouns. Prefixes are not recognized in some circumstances, specifically: * Some prefixes are only recognized for certain parts of speech (see table below). * Some prefixes have a restriction that they can't be directly followed by ''a'', ''o'', ''ā'' or ''ō'' (this applies in particular to prefixes ending in ''-e'', such as {{m|ang|ġe-}}, and prevents e.g. {{m|ang|ġearwian}} or {{m|ang|beofor}} from being recognized as containing a prefix). * Prefixes with any special characters or accents in them aren't recognized. * Prefixes aren't recognized if directly followed by <code>+</code> (which indicates a non-boundary). * Prefixes aren't recognized if not followed by at least one vowel (hence {{m|ang|betst}} is not recognized as containing {{m|ang|be-}} and {{m|ang|ford}} is not recognized as containing {{m|ang|for-}}). * Prefixes aren't recognized if not followed by at least three letters (hence {{m|ang|inne}} is not recognized as containing {{m|ang|in-}}). * Prefixes aren't recognized if directly followed by a cluster of consonants that are not an allowed word onset (hence {{m|ang|āxian}} is not recognized as containing {{m|ang|ā-}}, because ''x-'' is not a valid onset; likewise {{m|ang|bennian}} and {{m|ang|bercan}} are not recognized as containing {{m|ang|be-}}). * Prefixes aren't recognized if directly followed by one or more consonants plus an explicit syllable division marker <code>.</code> (since splitting off the prefix would result in a syllable with no vowels). Suffixes aren't recognized in similar circumstances, specifically: * Some suffixes are only recognized for certain parts of speech (see table below). * Suffixes with any special characters or accents in them aren't recognized. * Suffixes aren't recognized if directly preceded by <code>+</code> (which indicates a non-boundary). * Suffixes aren't recognized if not preceded by at least one vowel. * Suffixes aren't recognized if the preceding text ends in an explicit syllable division marker <code>.</code> followed by at least one consonant (since splitting off the suffix would result in a syllable with no vowels). The following is the complete list of prefixes recognized as of Dec 15, 2019: {|class="wikitable" ! Prefix !! Verb/verbal behavior !! Noun behavior !! Notes |- | {{m|ang|ā-}} || no stress || primary stress || |- | {{m|ang|æt-}} || no stress || (unrecognized) || |- | {{m|ang|æfter-}} || secondary stress || primary stress || |- | {{m|ang|and-}} || no stress || primary stress || |- | {{m|ang|an-}} || no stress || primary stress || |- | {{m|ang|be-}} || no stress || no stress || not when followed by ''a'', ''o'', ''ā'' or ''ō'' |- | {{m|ang|bī-}} || (unrecognized) || primary stress || |- | {{m|ang|ed-}} || no stress || primary stress || |- | {{m|ang|fore-}} || no stress || primary stress || not when followed by ''a'', ''o'', ''ā'' or ''ō'' |- | {{m|ang|forþ-}} || no stress || primary stress || also {{m|ang|forð-}} |- | {{m|ang|for-}} || no stress || no stress || |- | {{m|ang|fram-}} || no stress || primary stress || |- | {{m|ang|ġeond-}} || no stress || (unrecognized) || |- | {{m|ang|ġe-}} || no stress || no stress || not when followed by ''a'', ''o'', ''ā'' or ''ō'' |- | {{m|ang|in-}} || no stress || primary stress || |- | {{m|ang|mis-}} || no stress || (unrecognized) || |- | {{m|ang|ofer-}} || secondary stress || primary stress || |- | {{m|ang|of-}} || no stress || primary stress || |- | {{m|ang|on-}} || no stress || primary stress || |- | {{m|ang|or-}} || (unrecognized) || primary stress || |- | {{m|ang|oþ-}} || no stress || (unrecognized) || also {{m|ang|oð-}} |- | {{m|ang|stēop-}} || (unrecognized) || primary stress || |- | {{m|ang|tō-}} || no stress || primary stress || |- | {{m|ang|under-}} || secondary stress || primary stress || |- | {{m|ang|un-}} || no stress || primary stress || primary stress in verbals |- | {{m|ang|up-}} || no stress || primary stress || |- | {{m|ang|ūt-}} || no stress || primary stress || |- | {{m|ang|ūþ-}} || (unrecognized) || primary stress || also {{m|ang|ūð-}} |- | {{m|ang|wiþer-}} || secondary stress || primary stress || also {{m|ang|wiðer-}} and corresponding variants with ''ƿ'' |- | {{m|ang|wiþ-}} || no stress || (unrecognized) || also {{m|ang|wið-}} and corresponding variants with ''ƿ'' |- | {{m|ang|ymb-}} || no stress || primary stress || |- | {{m|ang|þurh-}} || no stress || primary stress || also {{m|ang|ðurh-}} |} Note the general pattern where prefixes are stressed as nouns but unstressed as verbs (where multisyllabic prefixes generally get secondary stress), and the fact that {{m|ang|be-}}, {{m|ang|for-}}, and {{m|ang|ġe-}} are exceptions in that they never receive stress. When stress is assigned to a multisyllabic prefix, it goes on the first syllable. The following is the complete list of suffixes recognized as of Dec 15, 2019: {|class="wikitable" ! Prefix !! Verb/verbal behavior !! Noun behavior !! Notes |- | {{m|ang|-bǣre}} || (unrecognized) || secondary stress || |- | {{m|ang|-fæst}} || (unrecognized) || secondary stress || |- | {{m|ang|-feald}} || (unrecognized) || secondary stress || |- | {{m|ang|-ful}}, {{m|ang|-full}} || (unrecognized) || no stress || |- | {{m|ang|-lēas}} || (unrecognized) || secondary stress || |- | {{m|ang|-līċ}}, {{m|ang|-līc}}, {{m|ang|-liċ}}, {{m|ang|-lic}} || no stress || no stress || |- | {{m|ang|-līċe}} || secondary stress || secondary stress || |- | {{m|ang|-nes}}, {{m|ang|-ness}}, {{m|ang|-nis}}, {{m|ang|-nys}} || no stress || no stress || |- | {{m|ang|-sum}} || (unrecognized) || no stress || |} ==Explicit allophones== Occasionally you will need to force a particular allophone of a multi-allophone phoneme such as {{IPAchar|/s/}} to appear. An example is verbs ending in ''-sian''. These are special-cased to have the {{IPAchar|[s]}} allophone even following a voiced sound, which applies in most cases, but {{m|ang|clǣnsian||to cleanse}} and derivatives are exceptions, and have {{IPAchar|[z]}}. To force this, use a respelling with ''[z]'', e.g. ''clǣn[z]ian''. Another example is verbs ending in ''-rian''. If directly preceded by a short front vowel, it is assumed to be weak class I and have phonemic /j/ for written ''i''. However, some verbs of this form are weak class II (e.g. {{m|ang|beterian}}), and are pronounced with phonemic /i/. To force this, use a respelling with ''[i]'', e.g. ''be+ter[i]an'' (we also need the ''+'' symbol to prevent ''be-'' from being interpreted as a prefix). The following explicit-allophone symbols are currently recognized: * <code>[þ]</code> (voiceless allophone of {{IPAchar|/θ/}}) * <code>[ð]</code> (voiced allophone of {{IPAchar|/θ/}}) * <code>[s]</code> (voiceless allophone of {{IPAchar|/s/}}) * <code>[z]</code> (voiced allophone of {{IPAchar|/s/}}) * <code>[f]</code> (voiceless allophone of {{IPAchar|/f/}}) * <code>[v]</code> (voiced allophone of {{IPAchar|/f/}}) * <code>[g]</code> (stop allophone of {{IPAchar|/ɡ/}}) * <code>[ɣ]</code> (fricative allophone of {{IPAchar|/ɡ/}}) * <code>[x]</code> (velar fricative allophone of {{IPAchar|/x/}}) * <code>[ç]</code> (palatal fricative allophone of {{IPAchar|/x/}}) * <code>[h]</code> (glottal fricative allophone of {{IPAchar|/x/}}) * <code>[i]</code> (interpretation of written ''i'' as {{IPAchar|/i/}} not {{IPAchar|/j/}}) There is no <code>[j]</code>; use ''ġ'' to force a {{IPAchar|/j/}}. <includeonly> [[Category:Old English pronunciation templates|IPA]] </includeonly> 2ulza2rrqqwiut6nv3pxbwlo2nd6ud3 Module:ang-pron 828 144200 235645 2024-06-09T07:36:53Z en>Benwing2 0 capturing_split() renamed to split() 235645 Scribunto text/plain --[=[ Implementation of pronunciation-generation module from spelling for Old English. Author: Benwing Generally, the user should supply the spelling, properly marked up with macrons for long vowels, and ċ ġ ċġ sċ for soft versions of these consonants. In addition, the following symbols can be used: -- acute accent on a vowel to override the position of primary stress -- (in a diphthong, put it over the first vowel) -- grave accent to add secondary stress -- circumflex to force no stress on the word or prefix (e.g. in a compound) -- . (period) to force a syllable boundary -- - (hyphen) to force a prefix/word or word/word boundary in a compound word; -- the result will be displayed as a single word but the consonants on -- either side treated as if they occurred at the beginning/end of the word -- + (plus) is the opposite of -; it forces a prefix/word or word/word boundary -- to *NOT* occur when it otherwise would -- _ (underscore) to force the letters on either side to be interpreted -- independently, when the combination of the two would normally have a -- special meaning FIXME: 1. Implement < and > which works like - but don't trigger secondary stress (< after a prefix, > before a suffix) (DONE) 2. Recognize -lēas and -l[iī][cċ] as suffixes. (DONE) 2b. Recognize -fæst, -ful, -full as suffixes (so no voicing of initial fricative). (DONE) 3. If explicit syllable boundary in cluster after prefix, don't recognize as prefix (hence ġeddung could be written ġed.dung, bedreda bed.reda) (DONE) 4. Two bugs in swīþfèrhþ: missing initial stress, front h should be back (DONE) 5. Check Urszag's code changes for /h/. (DONE) 6. Bug in wasċan; probably sċ between vowels should be ʃʃ (DONE) 7. Bug in ġeddung, doesn't have allowed onset with ġe-ddung (DONE) 8. āxiġendlīc -- x is not an allowed onset (DONE) 9. Handle prefixes/suffixes denoted with initial/final hyphen -- shouldn't trigger automatic stress when multisyllabic. (DONE) 10. Don't remove user-specified accents on monosyllabic words. (DONE) 11. Final -þu/-þo after a consonant should always be voiceless (but should be overridable). (DONE; OVERRIDABLE THROUGH "EXPLICIT ALLOPHONE" NOTATION) 12. Fricative voiced between voiced sounds even across prefix/compound boundary when before (but not after) the boundary. (DONE) 13. Fricative between unstressed vowels should be voiceless (e.g. adesa); maybe only after the stress? (DONE) 14. Resonant after fricative/stop in a given syllable should be rendered as syllabic (e.g. ādl [ˈɑːdl̩], botm [botm̥], bōsm, bēacn [ˈbæːɑ̯kn̩]; also -mn e.g stemn /ˈstemn̩/. (DONE, BUT REVERSED) 15. Add aġēn- and onġēan- prefixes with secondary stress for verbs. (WILL NOT DO) 16. and- (and maybe all others) should be unstressed as verbal prefix. andswarian is an exception. (DONE) 17. Support multiple pronunciations as separate numbered params. (DONE) 17b. Additional specifiers should follow each pronun as PRONUN<K:V,K2:V2,...>. This includes the current pos=. 18. Double hh should be pronounced as [xː]. (DONE) 19. Add -bǣre as a suffix with secondary stress. (DONE) 20. Add -līċ(e), lī[cċ]nes(s) as suffixes with secondary stress. -lī[cċ]nes(s) should behave like -līċ(e) in that what's before is checked to determine the pos. (DONE) 21. -lēasnes should be a recognized suffix with secondary stress. (DONE) 22. Fix handling of crinċġan, dynċġe, should behave as if ċ isn't there. (DONE) 23. Rewrite to use [[Module:ang-common]]. (DONE) 24. Ignore final period/question mark/exclamation point. (DONE) 25. Implement pos=verbal for handling un-. (DONE) 26. Simplify geminate consonants within a single syllable. (DONE) 27. Implement "explicit allophone" notation, e.g. [s] [z]. (DONE) 28. ''-sian'' should be voiceless in verbs. (DONE) 29. ''-rian'' should have /j/ after short vowels in verbs. (DONE) 30. BUG: Secondary stress not getting applied in ''-lēas'' (see [[aldorleas]]). QUESTIONS: 1. Should /an/, /on/ be pronounced [ɒn]? Same for /am/, /om/. [NO] 2. Should final /ɣ/ be rendered as [x]? [NO] 3. Should word-final double consonants be simplified in phonetic representation? Maybe also syllable-final except obstruents before [lr]? [YES] 4. Should we use /x/ instead of /h/? [YES] 5. Should we recognize from- along with fram-? [NO] 6. Should we recognize bi- along with be-? (danger of false positives) [NO] 7. Should fricative be voiced before voicd sound across word boundary? (dæġes ēage [ˈdæːjez ˈæːɑ̯ɣe]?) [NO] 8. Ask about pronunciation of bræġn, is the n syllabic? It's given as /ˈbræjn̩/. Similarly, seġl given as /ˈsejl̩/. [NO; HUNDWINE AND URSZAG DISAGREE] 9. Ask about pronunciation of ġeond-, can it be either [eo] or [o]? [UNCLEAR] 10. Is final -ol pronounced [ul] e.g regol [ˈreɣul]? Hundwine has created entries this way. What about final -oc etc.? [NO] 11. Is final -ian pronounced [jan] or [ian]? Cf. sċyldigian given as {{IPA|ang|/ˈʃyldiɣiɑn/|/ˈʃyldiɣjɑn/}}. What about spyrian given as /ˈspyr.jɑn/? [-ian in weak II verbs, -jan in weak I verbs] 12. seht given as /seçt/ but sehtlian given as /ˈsextliɑn/. Which one is correct? [ç] 13. Final -liċ or -līċ, with or without secondary stress? 14. Should we special-case -sian [sian]? Then we need support for [z] notation to override phonetics. ]=] local strutils = require("Module:string utilities") local m_table = require("Module:table") local m_IPA = require("Module:IPA") local lang = require("Module:languages").getByCode("ang") local com = require("Module:ang-common") local u = require("Module:string/char") local rsubn = mw.ustring.gsub local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rgsplit = mw.text.gsplit local ulen = mw.ustring.len local ulower = mw.ustring.lower -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end -- like str:gsub() but discards all but the first return value local function gsub(term, foo, bar, n) local retval = term:gsub(foo, bar, n) return retval end local export = {} -- When auto-generating primary and secondary stress accents, we use these -- special characters, and later convert to normal IPA accent marks, so -- we can distinguish auto-generated stress from user-specified stress. local AUTOACUTE = u(0xFFF0) local AUTOGRAVE = u(0xFFF1) -- When the user uses the "explicit allophone" notation such as [z] or [ç] to -- force a particular allophone, we internally convert that notation into a -- single special character. local EXPLICIT_TH = u(0xFFF2) local EXPLICIT_DH = u(0xFFF3) local EXPLICIT_S = u(0xFFF4) local EXPLICIT_Z = u(0xFFF5) local EXPLICIT_F = u(0xFFF6) local EXPLICIT_V = u(0xFFF7) local EXPLICIT_G = u(0xFFF8) local EXPLICIT_GH = u(0xFFF9) local EXPLICIT_H = u(0xFFFA) local EXPLICIT_X = u(0xFFFB) local EXPLICIT_C = u(0xFFFC) local EXPLICIT_I = u(0xFFFD) local explicit_cons = EXPLICIT_TH .. EXPLICIT_DH .. EXPLICIT_S .. EXPLICIT_Z .. EXPLICIT_F .. EXPLICIT_V .. EXPLICIT_G .. EXPLICIT_GH .. EXPLICIT_H .. EXPLICIT_X .. EXPLICIT_C -- Map "explicit allophone" notation into special char. See above. local char_to_explicit_char = { ["þ"] = EXPLICIT_TH, ["ð"] = EXPLICIT_DH, ["s"] = EXPLICIT_S, ["z"] = EXPLICIT_Z, ["f"] = EXPLICIT_F, ["v"] = EXPLICIT_V, ["g"] = EXPLICIT_G, ["ɣ"] = EXPLICIT_GH, ["h"] = EXPLICIT_H, ["x"] = EXPLICIT_X, ["ç"] = EXPLICIT_C, ["i"] = EXPLICIT_I, } -- Map "explicit allophone" notation into normal spelling, for supporting ann=. local char_to_spelling = { ["þ"] = "þ", ["ð"] = "þ", ["s"] = "s", ["z"] = "s", ["f"] = "f", ["v"] = "f", ["g"] = "g", ["ɣ"] = "g", ["h"] = "h", ["x"] = "h", ["ç"] = "h", ["i"] = "i", } -- Map "explicit allophone" notation into phonemes, for phonemic output. local explicit_char_to_phonemic = { [EXPLICIT_TH] = "θ", [EXPLICIT_DH] = "θ", [EXPLICIT_S] = "s", [EXPLICIT_Z] = "s", [EXPLICIT_F] = "f", [EXPLICIT_V] = "f", [EXPLICIT_G] = "ɡ", -- IPA ɡ! [EXPLICIT_GH] = "ɡ", -- IPA ɡ! [EXPLICIT_H] = "x", [EXPLICIT_X] = "x", [EXPLICIT_C] = "x", [EXPLICIT_I] = "i", } -- Map "explicit allophone" notation into IPA phones, for phonetic output. local explicit_char_to_phonetic = { [EXPLICIT_TH] = "θ", [EXPLICIT_DH] = "ð", [EXPLICIT_S] = "s", [EXPLICIT_Z] = "z", [EXPLICIT_F] = "f", [EXPLICIT_V] = "v", [EXPLICIT_G] = "ɡ", -- IPA ɡ! [EXPLICIT_GH] = "ɣ", [EXPLICIT_H] = "h", [EXPLICIT_X] = "x", [EXPLICIT_C] = "ç", [EXPLICIT_I] = "i", } local accent = com.MACRON .. com.ACUTE .. com.GRAVE .. com.CFLEX .. AUTOACUTE .. AUTOGRAVE local accent_c = "[" .. accent .. "]" local stress_accent = com.ACUTE .. com.GRAVE .. com.CFLEX .. AUTOACUTE .. AUTOGRAVE local stress_accent_c = "[" .. stress_accent .. "]" local back_vowel = "aɑou" local front_vowel = "eiyæœø" .. EXPLICIT_I local vowel = back_vowel .. front_vowel local vowel_or_accent = vowel .. accent local vowel_c = "[" .. vowel .. "]" local vowel_or_accent_c = "[" .. vowel_or_accent .. "]" local non_vowel_c = "[^" .. vowel .. "]" local front_vowel_c = "[" .. front_vowel .. "]" -- The following include both IPA symbols and letters (including regular g and IPA ɡ) -- so it can be used at any step of the process. local obstruent = "bcċçdfgɡɣhkpqstvxzþðθʃʒ" .. explicit_cons local resonant = "lmnŋrɫ" local glide = "ġjwƿ" local cons = obstruent .. resonant .. glide local cons_c = "[" .. cons .. "]" local voiced_sound = vowel .. "lrmnwjbdɡ" -- WARNING, IPA ɡ used here -- These rules operate in order, and apply to the actual spelling, -- after (1) macron decomposition, (2) syllable and prefix splitting, -- (3) placement of primary and secondary stresses at the beginning -- of the syllable. Each syllable will be separated either by ˈ -- (if the following syllable is stressed), by ˌ (if the following -- syllable has secondary stress), or by . (otherwise). In addition, -- morpheme boundaries where the consonants on either side should be -- treated as at the beginning/end of word (i.e. between prefix and -- word, or between words in a compound word) will be marked with ⁀ -- before the syllable separator, and the beginning and end of text -- will be marked by ⁀⁀. The output of this is fed into phonetic_rules, -- and then is used to generate the displayed phonemic pronunciation -- by removing ⁀ symbols. local phonemic_rules = { {com.MACRON, "ː"}, {"eoː", "oː"}, -- e.g. ġeōmor {"eaː", "aː"}, {"[ei]ː?[aeo]", { -- Alternative notation for short diphthongs: iu̯, eo̯, æɑ̯ -- Alternative notation for long diphthongs: iːu̯, eːo̯, æːɑ̯ ["ea"] = "æ͜ɑ", ["eːa"] = "æ͜ɑː", ["eo"] = "e͜o", ["eːo"] = "e͜oː", ["io"] = "i͜u", ["iːo"] = "i͜uː", ["ie"] = "i͜y", ["iːe"] = "i͜yː", }}, -- sċ between vowels when at the beginning of a syllable should be ʃ.ʃ {"(" .. vowel_c .. "ː?)([.ˈˌ]?)sċ(" .. vowel_c .. ")", "%1ʃ%2ʃ%3"}, -- other sċ should be ʃ; note that sċ divided between syllables becomes s.t͡ʃ {"sċ", "ʃ"}, -- x between vowels when at the beginning of a syllable should be k.s; -- remaining x handled below {"(" .. vowel_c .. "ː?)([.ˈˌ]?)x(" .. vowel_c .. ")", "%1k%2s%3"}, -- z between vowels when at the beginning of a syllable should be t.s; -- remaining z handled below {"(" .. vowel_c .. "ː?)([.ˈˌ]?)z(" .. vowel_c .. ")", "%1t%2s%3"}, -- short front vowel + -rian, -riend, -rienne, -riende in verb or verbal is -- rendered with /j/; we need to carefully change the syllable structure -- when doing this {"(" .. front_vowel_c .. ")%.ri%.(an⁀)", "%1r.ġ%2", {"verb"}}, {"(" .. front_vowel_c .. ")%.ri%.(end⁀)", "%1r.ġ%2", {"verb", "verbal"}}, {"(" .. front_vowel_c .. ")%.ri%.(en%.[nd]e⁀)", "%1r.ġ%2", {"verb", "verbal"}}, {"nċ([.ˈˌ]?)ġ", "n%1j"}, {"ċ([.ˈˌ]?)ġ", "j%1j"}, {"c([.ˈˌ]?)g", "g%1g"}, {"ċ([.ˈˌ]?)ċ", "t%1t͡ʃ"}, {".", { ["ċ"] = "t͡ʃ", ["c"] = "k", ["ġ"] = "j", ["h"] = "x", ["þ"] = "θ", ["ð"] = "θ", ["ƿ"] = "w", ["x"] = "ks", ["z"] = "ts", ["g"] = "ɡ", -- map to IPA ɡ ["a"] = "ɑ", ["œ"] = "ø", }}, } local fricative_to_voiced = { ["f"] = "v", ["s"] = "z", ["θ"] = "ð", } local fricative_to_unvoiced = { ["v"] = "f", ["z"] = "s", ["ð"] = "θ", } -- These rules operate in order, on the output of phonemic_rules. -- The output of this is used to generate the displayed phonemic -- pronunciation by removing ⁀ symbols. local phonetic_rules = { -- Fricative voicing between voiced sounds. Note, the following operates -- across a ⁀ boundary for a fricative before the boundary but not after. {"([" .. voiced_sound .. "][ː.ˈˌ]*)([fsθ])([ː.ˈˌ⁀]*[" .. voiced_sound .. "])", function(s1, c, s2) return s1 .. fricative_to_voiced[c] .. s2 end }, -- Fricative between unstressed vowels should be devoiced. -- Note that unstressed syllables are preceded by . while stressed -- syllables are preceded by a stress mark. {"(%.[^.⁀][" .. vowel .. com.DOUBLE_BREVE_BELOW .. "ː]*%.)([vzð])", function(s1, c) return s1 .. fricative_to_unvoiced[c] end }, -- Final -sian, -siend, -sienne, -siende (and variants such as -siġan, -- -siġend, etc.) in verb or verbal is rendered with [s]; clǣnsian will -- have to be special-cased with ''[z]'' {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?ɑn⁀)", "%1s%2", {"verb"}}, {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?end⁀)", "%1s%2", {"verb", "verbal"}}, {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?en%.[nd]e⁀)", "%1s%2", {"verb", "verbal"}}, -- Final unstressed -þu/-þo after a consonant should be devoiced. {"(" .. cons_c .. "ː?" .. "%.)ð([uo]⁀)", function(s1, s2) return s1 .. "θ" .. s2 end }, {"x[wnlr]", { ["xw"] = "ʍ", ["xl"] = "l̥", ["xn"] = "n̥", ["xr"] = "r̥", }}, -- Note, the following will not operate across a ⁀ boundary. {"n([.ˈˌ]?[ɡk])", "ŋ%1"}, -- WARNING, IPA ɡ used here {"n([.ˈˌ]?)j", "n%1d͡ʒ"}, {"j([.ˈˌ]?)j", "d%1d͡ʒ"}, {"([^x][⁀.ˈˌ])x", "%1h"}, -- [h] occurs as a syllable-initial allophone {"(" .. front_vowel_c .. ")x", "%1ç"}, -- [ç] occurs after front vowels -- An IPA ɡ after a word/prefix boundary, after another ɡ or after n -- (previously converted to ŋ in this circumstance) should remain as ɡ, -- while all other ɡ's should be converted to ɣ except that word-final ɡ -- becomes x. We do this by converting the ɡ's that should remain to regular -- g (which should never occur otherwise), convert the remaining IPA ɡ's to ɣ -- or x, and then convert the regular g's back to IPA ɡ. {"ɡ([.ˈˌ]?)ɡ", "g%1g"}, -- WARNING, IPA ɡ on the left, regular g on the right {"([ŋ⁀])([.ˈˌ]?)ɡ", "%1%2g"}, -- WARNING, IPA ɡ on the left, regular g on the right {"ɡ", "ɣ"}, {"g", "ɡ"}, -- WARNING, regular g on the left, IPA ɡ on the right {"l([.ˈˌ]?)l", "ɫ%1ɫ"}, {"r([.ˈˌ]?)r", "rˠ%1rˠ"}, {"l([.ˈˌ]?" .. cons_c .. ")", "ɫ%1"}, {"r([.ˈˌ]?" .. cons_c .. ")", "rˠ%1"}, -- Geminate consonants within a single syllable are pronounced singly. -- Does not apply e.g. to ''ǣttren'', which will be divided as ''ǣt.tren''. {"(" .. cons_c .. ")%1", "%1"}, {"rˠrˠ", "rˠ"}, -- [In the sequence vowel + obstruent + resonant in a single syllable, -- the resonant should become syllabic, e.g. ādl [ˈɑːdl̩], blōstm [bloːstm̩], -- fæþm [fæðm̩], bēacn [ˈbæːɑ̯kn̩]. We allow anything but a syllable or word -- boundary betweent the vowel and the obstruent.] [BASED ON INPUT FROM -- [[User:Urszag]], I'VE DECIDE AGAINST THIS] -- {"(" .. vowel_c .. "[^.ˈˌ⁀]*[" .. obstruent .. "]ː?[" .. resonant .. "])", "%1" .. com.SYLLABIC}, -- also -mn e.g stemn /ˈstemn̩/; same for m + other resonants except m -- {"(" .. vowel_c .. "[^.ˈˌ⁀]*mː?[lnŋrɫ])", "%1" .. com.SYLLABIC}, {".", explicit_char_to_phonetic}, } local function apply_rules(word, rules, pos) for _, rule in ipairs(rules) do local allowed_pos = rule[3] if not allowed_pos or m_table.contains(allowed_pos, pos) then word = rsub(word, rule[1], rule[2]) end end return word end local function lookup_stress_spec(stress_spec, pos) return stress_spec[pos] or (pos == "verbal" and stress_spec["verb"]) or nil end local function split_on_word_boundaries(word, pos) local retparts = {} local parts = strutils.split(word, "([<>%-])") local i = 1 local saw_primary_stress = false while i <= #parts do local split_part = false local insert_position = #retparts + 1 if parts[i + 1] ~= "<" and parts[i - 1] ~= ">" then -- Split off any prefixes. while true do local broke_prefix = false for _, prefixspec in ipairs(com.prefixes) do local prefix_pattern = prefixspec[1] local stress_spec = prefixspec[2] local pos_stress = lookup_stress_spec(stress_spec, pos) local prefix, rest = rmatch(parts[i], "^(" .. prefix_pattern .. ")(.*)$") if prefix then if not pos_stress then -- prefix not recognized for this POS, don't split here elseif stress_spec.restriction and not rfind(rest, stress_spec.restriction) then -- restriction not met, don't split here elseif rfind(rest, "^%+") then -- explicit non-boundary here, so don't split here elseif not rfind(rest, vowel_c) then -- no vowels, don't split here elseif rfind(rest, "^..?$") then -- only two letters, unlikely to be a word, probably an ending, so don't split -- here else local initial_cluster, after_cluster = rmatch(rest, "^(" .. non_vowel_c .. "*)(.-)$") if rfind(initial_cluster, "..") and ( not (com.onsets_2[initial_cluster] or com.secondary_onsets_2[initial_cluster] or com.onsets_3[initial_cluster])) then -- initial cluster isn't a possible onset, don't split here elseif rfind(initial_cluster, "^x") then -- initial cluster isn't a possible onset, don't split here elseif rfind(after_cluster, "^" .. vowel_c .. "$") then -- remainder is a cluster + short vowel, -- unlikely to be a word so don't split here else -- break the word in two; next iteration we process -- the rest, which may need breaking again parts[i] = rest if pos_stress == "unstressed" then -- don't do anything elseif pos_stress == "secstressed" or (saw_primary_stress and pos_stress == "stressed") then prefix = rsub(prefix, "(" .. vowel_c .. ")", "%1" .. AUTOGRAVE, 1) elseif pos_stress == "stressed" then prefix = rsub(prefix, "(" .. vowel_c .. ")", "%1" .. AUTOACUTE, 1) saw_primary_stress = true else error("Unrecognized stress spec for pos=" .. pos .. ", prefix=" .. prefix .. ": " .. pos_stress) end table.insert(retparts, insert_position, prefix) insert_position = insert_position + 1 broke_prefix = true break end end end end if not broke_prefix then break end end -- Now do the same for suffixes. while true do local broke_suffix = false for _, suffixspec in ipairs(com.suffixes) do local suffix_pattern = suffixspec[1] local stress_spec = suffixspec[2] local pos_stress = lookup_stress_spec(stress_spec, pos) local rest, suffix = rmatch(parts[i], "^(.-)(" .. suffix_pattern .. ")$") if suffix then if not pos_stress then -- suffix not recognized for this POS, don't split here elseif stress_spec.restriction and not rfind(rest, stress_spec.restriction) then -- restriction not met, don't split here elseif rfind(rest, "%+$") then -- explicit non-boundary here, so don't split here elseif not rfind(rest, vowel_c) then -- no vowels, don't split here else local before_cluster, final_cluster = rmatch(rest, "^(.-)(" .. non_vowel_c .. "*)$") if rfind(final_cluster, "%..") then -- syllable division within or before final -- cluster, don't split here else -- break the word in two; next iteration we process -- the rest, which may need breaking again parts[i] = rest if pos_stress == "unstressed" then -- don't do anything elseif pos_stress == "secstressed" then suffix = rsub(suffix, "(" .. vowel_c .. ")", "%1" .. AUTOGRAVE, 1) elseif pos_stress == "stressed" then error("Primary stress not allowed for suffixes (suffix=" .. suffix .. ")") else error("Unrecognized stress spec for pos=" .. pos .. ", suffix=" .. suffix .. ": " .. pos_stress) end table.insert(retparts, insert_position, suffix) broke_suffix = true break end end end end if not broke_suffix then break end end end local acc = rfind(parts[i], "(" .. stress_accent_c .. ")") if acc == com.CFLEX then -- remove circumflex but don't accent parts[i] = gsub(parts[i], com.CFLEX, "") elseif acc == com.ACUTE or acc == AUTOACUTE then saw_primary_stress = true elseif not acc and parts[i + 1] ~= "<" and parts[i - 1] ~= ">" then -- Add primary or secondary stress on the part; primary stress if no primary -- stress yet, otherwise secondary stress. acc = saw_primary_stress and AUTOGRAVE or AUTOACUTE saw_primary_stress = true parts[i] = rsub(parts[i], "(" .. vowel_c .. ")", "%1" .. acc, 1) end table.insert(retparts, insert_position, parts[i]) i = i + 2 end -- remove any +, which has served its purpose for i, part in ipairs(retparts) do retparts[i] = gsub(part, "%+", "") end return retparts end local function break_vowels(vowelseq) local function check_empty(char) if char ~= "" then error("Something wrong, non-vowel '" .. char .. "' seen in vowel sequence '" .. vowelseq .. "'") end end local vowels = {} local chars = strutils.split(vowelseq, "(" .. vowel_c .. accent_c .. "*)") local i = 1 while i <= #chars do if i % 2 == 1 then check_empty(chars[i]) i = i + 1 else if i < #chars - 1 and com.diphthongs[ rsub(chars[i], stress_accent_c, "") .. rsub(chars[i + 2], stress_accent_c, "") ] then check_empty(chars[i + 1]) table.insert(vowels, chars[i] .. chars[i + 2]) i = i + 3 else table.insert(vowels, chars[i]) i = i + 1 end end end return vowels end -- Break a word into alternating C and V components where a C component is a run -- of zero or more consonants and a V component in a single vowel or dipthong. -- There will always be an odd number of components, where all odd-numbered -- components (starting from 1) are C components and all even-numbered components -- are V components. local function break_into_c_and_v_components(word) local cons_vowel = strutils.split(word, "(" .. vowel_or_accent_c .. "+)") local components = {} for i = 1, #cons_vowel do if i % 2 == 1 then table.insert(components, cons_vowel[i]) else local vowels = break_vowels(cons_vowel[i]) for j = 1, #vowels do if j == 1 then table.insert(components, vowels[j]) else table.insert(components, "") table.insert(components, vowels[j]) end end end end return components end local function split_into_syllables(word) local cons_vowel = break_into_c_and_v_components(word) if #cons_vowel == 1 then return cons_vowel end for i = 1, #cons_vowel do if i % 2 == 1 then -- consonant local cluster = cons_vowel[i] local len = ulen(cluster) if i == 1 then cons_vowel[i + 1] = cluster .. cons_vowel[i + 1] elseif i == #cons_vowel then cons_vowel[i - 1] = cons_vowel[i - 1] .. cluster elseif rfind(cluster, "%.") then local before_break, after_break = rmatch(cluster, "^(.-)%.(.*)$") cons_vowel[i - 1] = cons_vowel[i - 1] .. before_break cons_vowel[i + 1] = after_break .. cons_vowel[i + 1] elseif len == 0 then -- do nothing elseif len == 1 then cons_vowel[i + 1] = cluster .. cons_vowel[i + 1] elseif len == 2 then local c1, c2 = rmatch(cluster, "^(.)(.)$") if c1 == "s" and c2 == "ċ" then cons_vowel[i + 1] = "sċ" .. cons_vowel[i + 1] else cons_vowel[i - 1] = cons_vowel[i - 1] .. c1 cons_vowel[i + 1] = c2 .. cons_vowel[i + 1] end else -- check for onset_3 preceded by consonant(s). local first, last3 = rmatch(cluster, "^(.-)(...)$") if #first > 0 and com.onsets_3[last3] then cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last3 .. cons_vowel[i + 1] else local first, last2 = rmatch(cluster, "^(.-)(..)$") if com.onsets_2[last2] or (com.secondary_onsets_2[last2] and not first:find("[lr]$")) then cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last2 .. cons_vowel[i + 1] else local first, last = rmatch(cluster, "^(.-)(.)$") cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last .. cons_vowel[i + 1] end end end end end local retval = {} for i = 1, #cons_vowel do if i % 2 == 0 then -- remove any stray periods. table.insert(retval, rsub(cons_vowel[i], "%.", "")) end end return retval end -- Combine syllables into a word, moving stress markers (acute/grave) to the -- beginning of the syllable. local function combine_syllables_moving_stress(syllables, no_auto_stress) local modified_syls = {} for i, syl in ipairs(syllables) do if syl:find(com.ACUTE) or syl:find(AUTOACUTE) and not no_auto_stress then syl = "ˈ" .. syl elseif syl:find(com.GRAVE) or syl:find(AUTOGRAVE) and not no_auto_stress then syl = "ˌ" .. syl elseif i > 1 then syl = "." .. syl end syl = rsub(syl, stress_accent_c, "") table.insert(modified_syls, syl) end return table.concat(modified_syls) end -- Combine word parts (split-off prefixes, suffixes or parts of a compound word) -- into a single word. Separate parts with ⁀ and the put ⁀⁀ at word boundaries. local function combine_parts(parts) local text = {} for i, part in ipairs(parts) do if i > 1 and not rfind(part, "^[ˈˌ]") then -- Need a syllable boundary if there isn't a stress marker. table.insert(text, "." .. part) else table.insert(text, part) end end return "⁀⁀" .. table.concat(text, "⁀") .. "⁀⁀" end local function transform_word(word, pos, no_auto_stress) word = com.decompose(word) local parts = split_on_word_boundaries(word, pos) for i, part in ipairs(parts) do local syllables = split_into_syllables(part) parts[i] = combine_syllables_moving_stress(syllables, no_auto_stress or (#parts == 1 and #syllables == 1)) end return combine_parts(parts) end local function default_pos(word, pos) if not pos then -- verbs in -an/-ōn/-ēon, inflected infinitives in -enne if rfind(word, "[aāō]n$") or rfind(word, "ēon$") or rfind(word, "enne$") then pos = "verb" else -- adjectives in -līċ, adverbs in -līċe and nouns in -nes can follow -- nouns or participles (which are "verbal"); truncate the ending -- and check what precedes word = rsub(word, "^(.*" .. vowel_c .. ".*)l[iī][cċ]e?$", "%1") word = rsub(word, "^(.*" .. vowel_c .. ".*)n[eiy]ss?$", "%1") -- participles in -end(e)/-en/-ed/-od, verbal nouns in -ing/-ung if rfind(word, "ende?$") or rfind(word, "[eo]d$") or rfind(word, "en$") or rfind(word, "[iu]ng$") then pos = "verbal" else pos = "noun" end end elseif pos == "adj" or pos == "adjective" then pos = "noun" elseif pos ~= "noun" and pos ~= "verb" and pos ~= "verbal" then error("Unrecognized part of speech: " .. pos) end return pos end local function generate_phonemic_word(word, pos) word = gsub(word, "[.!?]$", "") word = rsub(word, "%[(.)%]", char_to_explicit_char) pos = default_pos(word, pos) local is_prefix_suffix if word:find("^%-") or word:find("%-$") then is_prefix_suffix = true word = gsub(word, "^%-?(.-)%-?$", "%1") end word = transform_word(word, pos, is_prefix_suffix) word = apply_rules(word, phonemic_rules, pos) return word, pos end function export.phonemic(text, pos) if type(text) == "table" then pos = text.args["pos"] text = text[1] end local result = {} text = ulower(text) for word in rgsplit(text, " ") do local phonemic, respos = generate_phonemic_word(word, pos) table.insert(result, phonemic) end result = table.concat(result, " ") result = rsub(result, ".", explicit_char_to_phonemic) return gsub(result, "⁀", "") end function export.phonetic(text, pos) if type(text) == "table" then pos = text.args["pos"] text = text[1] end local result = {} text = ulower(text) for word in rgsplit(text, " ") do local phonemic, respos = generate_phonemic_word(word, pos) word = apply_rules(phonemic, phonetic_rules, respos) table.insert(result, word) end return gsub(table.concat(result, " "), "⁀", "") end function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = { required = true, default = "hlǣf-dīġe", list = true }, ["pos"] = {}, ["ann"] = {}, } local args = require("Module:parameters").process(parent_args, params) local IPA_args = {} for _, arg in ipairs(args[1]) do local phonemic = export.phonemic(arg, args.pos) local phonetic = export.phonetic(arg, args.pos) table.insert(IPA_args, {pron = '/' .. phonemic .. '/'}) if phonemic ~= phonetic then table.insert(IPA_args, {pron = '[' .. phonetic .. ']'}) end end local anntext if args.ann == "1" then anntext = {} for _, arg in ipairs(args[1]) do -- remove all spelling markup except ġ/ċ and macrons arg = rsub(com.decompose(arg), "[%-+._<>" .. com.ACUTE .. com.GRAVE .. com.CFLEX .. "]", "") arg = rsub(arg, "%[(.)%]", char_to_spelling) m_table.insertIfNot(anntext, "'''" .. arg .. "'''") end anntext = table.concat(anntext, ", ") .. ":&#32;" elseif args.ann then anntext = "'''" .. args.ann .. "''':&#32;" else anntext = "" end return anntext .. m_IPA.format_IPA_full { lang = lang, items = IPA_args } end return export 7xwigi7qyvreir6ly33p8y0byzjjvk0 235646 235645 2026-06-07T05:03:22Z Lee 19 [[:en:Module:ang-pron]] වෙතින් එක් සංශෝධනයක් 235645 Scribunto text/plain --[=[ Implementation of pronunciation-generation module from spelling for Old English. Author: Benwing Generally, the user should supply the spelling, properly marked up with macrons for long vowels, and ċ ġ ċġ sċ for soft versions of these consonants. In addition, the following symbols can be used: -- acute accent on a vowel to override the position of primary stress -- (in a diphthong, put it over the first vowel) -- grave accent to add secondary stress -- circumflex to force no stress on the word or prefix (e.g. in a compound) -- . (period) to force a syllable boundary -- - (hyphen) to force a prefix/word or word/word boundary in a compound word; -- the result will be displayed as a single word but the consonants on -- either side treated as if they occurred at the beginning/end of the word -- + (plus) is the opposite of -; it forces a prefix/word or word/word boundary -- to *NOT* occur when it otherwise would -- _ (underscore) to force the letters on either side to be interpreted -- independently, when the combination of the two would normally have a -- special meaning FIXME: 1. Implement < and > which works like - but don't trigger secondary stress (< after a prefix, > before a suffix) (DONE) 2. Recognize -lēas and -l[iī][cċ] as suffixes. (DONE) 2b. Recognize -fæst, -ful, -full as suffixes (so no voicing of initial fricative). (DONE) 3. If explicit syllable boundary in cluster after prefix, don't recognize as prefix (hence ġeddung could be written ġed.dung, bedreda bed.reda) (DONE) 4. Two bugs in swīþfèrhþ: missing initial stress, front h should be back (DONE) 5. Check Urszag's code changes for /h/. (DONE) 6. Bug in wasċan; probably sċ between vowels should be ʃʃ (DONE) 7. Bug in ġeddung, doesn't have allowed onset with ġe-ddung (DONE) 8. āxiġendlīc -- x is not an allowed onset (DONE) 9. Handle prefixes/suffixes denoted with initial/final hyphen -- shouldn't trigger automatic stress when multisyllabic. (DONE) 10. Don't remove user-specified accents on monosyllabic words. (DONE) 11. Final -þu/-þo after a consonant should always be voiceless (but should be overridable). (DONE; OVERRIDABLE THROUGH "EXPLICIT ALLOPHONE" NOTATION) 12. Fricative voiced between voiced sounds even across prefix/compound boundary when before (but not after) the boundary. (DONE) 13. Fricative between unstressed vowels should be voiceless (e.g. adesa); maybe only after the stress? (DONE) 14. Resonant after fricative/stop in a given syllable should be rendered as syllabic (e.g. ādl [ˈɑːdl̩], botm [botm̥], bōsm, bēacn [ˈbæːɑ̯kn̩]; also -mn e.g stemn /ˈstemn̩/. (DONE, BUT REVERSED) 15. Add aġēn- and onġēan- prefixes with secondary stress for verbs. (WILL NOT DO) 16. and- (and maybe all others) should be unstressed as verbal prefix. andswarian is an exception. (DONE) 17. Support multiple pronunciations as separate numbered params. (DONE) 17b. Additional specifiers should follow each pronun as PRONUN<K:V,K2:V2,...>. This includes the current pos=. 18. Double hh should be pronounced as [xː]. (DONE) 19. Add -bǣre as a suffix with secondary stress. (DONE) 20. Add -līċ(e), lī[cċ]nes(s) as suffixes with secondary stress. -lī[cċ]nes(s) should behave like -līċ(e) in that what's before is checked to determine the pos. (DONE) 21. -lēasnes should be a recognized suffix with secondary stress. (DONE) 22. Fix handling of crinċġan, dynċġe, should behave as if ċ isn't there. (DONE) 23. Rewrite to use [[Module:ang-common]]. (DONE) 24. Ignore final period/question mark/exclamation point. (DONE) 25. Implement pos=verbal for handling un-. (DONE) 26. Simplify geminate consonants within a single syllable. (DONE) 27. Implement "explicit allophone" notation, e.g. [s] [z]. (DONE) 28. ''-sian'' should be voiceless in verbs. (DONE) 29. ''-rian'' should have /j/ after short vowels in verbs. (DONE) 30. BUG: Secondary stress not getting applied in ''-lēas'' (see [[aldorleas]]). QUESTIONS: 1. Should /an/, /on/ be pronounced [ɒn]? Same for /am/, /om/. [NO] 2. Should final /ɣ/ be rendered as [x]? [NO] 3. Should word-final double consonants be simplified in phonetic representation? Maybe also syllable-final except obstruents before [lr]? [YES] 4. Should we use /x/ instead of /h/? [YES] 5. Should we recognize from- along with fram-? [NO] 6. Should we recognize bi- along with be-? (danger of false positives) [NO] 7. Should fricative be voiced before voicd sound across word boundary? (dæġes ēage [ˈdæːjez ˈæːɑ̯ɣe]?) [NO] 8. Ask about pronunciation of bræġn, is the n syllabic? It's given as /ˈbræjn̩/. Similarly, seġl given as /ˈsejl̩/. [NO; HUNDWINE AND URSZAG DISAGREE] 9. Ask about pronunciation of ġeond-, can it be either [eo] or [o]? [UNCLEAR] 10. Is final -ol pronounced [ul] e.g regol [ˈreɣul]? Hundwine has created entries this way. What about final -oc etc.? [NO] 11. Is final -ian pronounced [jan] or [ian]? Cf. sċyldigian given as {{IPA|ang|/ˈʃyldiɣiɑn/|/ˈʃyldiɣjɑn/}}. What about spyrian given as /ˈspyr.jɑn/? [-ian in weak II verbs, -jan in weak I verbs] 12. seht given as /seçt/ but sehtlian given as /ˈsextliɑn/. Which one is correct? [ç] 13. Final -liċ or -līċ, with or without secondary stress? 14. Should we special-case -sian [sian]? Then we need support for [z] notation to override phonetics. ]=] local strutils = require("Module:string utilities") local m_table = require("Module:table") local m_IPA = require("Module:IPA") local lang = require("Module:languages").getByCode("ang") local com = require("Module:ang-common") local u = require("Module:string/char") local rsubn = mw.ustring.gsub local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rgsplit = mw.text.gsplit local ulen = mw.ustring.len local ulower = mw.ustring.lower -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end -- like str:gsub() but discards all but the first return value local function gsub(term, foo, bar, n) local retval = term:gsub(foo, bar, n) return retval end local export = {} -- When auto-generating primary and secondary stress accents, we use these -- special characters, and later convert to normal IPA accent marks, so -- we can distinguish auto-generated stress from user-specified stress. local AUTOACUTE = u(0xFFF0) local AUTOGRAVE = u(0xFFF1) -- When the user uses the "explicit allophone" notation such as [z] or [ç] to -- force a particular allophone, we internally convert that notation into a -- single special character. local EXPLICIT_TH = u(0xFFF2) local EXPLICIT_DH = u(0xFFF3) local EXPLICIT_S = u(0xFFF4) local EXPLICIT_Z = u(0xFFF5) local EXPLICIT_F = u(0xFFF6) local EXPLICIT_V = u(0xFFF7) local EXPLICIT_G = u(0xFFF8) local EXPLICIT_GH = u(0xFFF9) local EXPLICIT_H = u(0xFFFA) local EXPLICIT_X = u(0xFFFB) local EXPLICIT_C = u(0xFFFC) local EXPLICIT_I = u(0xFFFD) local explicit_cons = EXPLICIT_TH .. EXPLICIT_DH .. EXPLICIT_S .. EXPLICIT_Z .. EXPLICIT_F .. EXPLICIT_V .. EXPLICIT_G .. EXPLICIT_GH .. EXPLICIT_H .. EXPLICIT_X .. EXPLICIT_C -- Map "explicit allophone" notation into special char. See above. local char_to_explicit_char = { ["þ"] = EXPLICIT_TH, ["ð"] = EXPLICIT_DH, ["s"] = EXPLICIT_S, ["z"] = EXPLICIT_Z, ["f"] = EXPLICIT_F, ["v"] = EXPLICIT_V, ["g"] = EXPLICIT_G, ["ɣ"] = EXPLICIT_GH, ["h"] = EXPLICIT_H, ["x"] = EXPLICIT_X, ["ç"] = EXPLICIT_C, ["i"] = EXPLICIT_I, } -- Map "explicit allophone" notation into normal spelling, for supporting ann=. local char_to_spelling = { ["þ"] = "þ", ["ð"] = "þ", ["s"] = "s", ["z"] = "s", ["f"] = "f", ["v"] = "f", ["g"] = "g", ["ɣ"] = "g", ["h"] = "h", ["x"] = "h", ["ç"] = "h", ["i"] = "i", } -- Map "explicit allophone" notation into phonemes, for phonemic output. local explicit_char_to_phonemic = { [EXPLICIT_TH] = "θ", [EXPLICIT_DH] = "θ", [EXPLICIT_S] = "s", [EXPLICIT_Z] = "s", [EXPLICIT_F] = "f", [EXPLICIT_V] = "f", [EXPLICIT_G] = "ɡ", -- IPA ɡ! [EXPLICIT_GH] = "ɡ", -- IPA ɡ! [EXPLICIT_H] = "x", [EXPLICIT_X] = "x", [EXPLICIT_C] = "x", [EXPLICIT_I] = "i", } -- Map "explicit allophone" notation into IPA phones, for phonetic output. local explicit_char_to_phonetic = { [EXPLICIT_TH] = "θ", [EXPLICIT_DH] = "ð", [EXPLICIT_S] = "s", [EXPLICIT_Z] = "z", [EXPLICIT_F] = "f", [EXPLICIT_V] = "v", [EXPLICIT_G] = "ɡ", -- IPA ɡ! [EXPLICIT_GH] = "ɣ", [EXPLICIT_H] = "h", [EXPLICIT_X] = "x", [EXPLICIT_C] = "ç", [EXPLICIT_I] = "i", } local accent = com.MACRON .. com.ACUTE .. com.GRAVE .. com.CFLEX .. AUTOACUTE .. AUTOGRAVE local accent_c = "[" .. accent .. "]" local stress_accent = com.ACUTE .. com.GRAVE .. com.CFLEX .. AUTOACUTE .. AUTOGRAVE local stress_accent_c = "[" .. stress_accent .. "]" local back_vowel = "aɑou" local front_vowel = "eiyæœø" .. EXPLICIT_I local vowel = back_vowel .. front_vowel local vowel_or_accent = vowel .. accent local vowel_c = "[" .. vowel .. "]" local vowel_or_accent_c = "[" .. vowel_or_accent .. "]" local non_vowel_c = "[^" .. vowel .. "]" local front_vowel_c = "[" .. front_vowel .. "]" -- The following include both IPA symbols and letters (including regular g and IPA ɡ) -- so it can be used at any step of the process. local obstruent = "bcċçdfgɡɣhkpqstvxzþðθʃʒ" .. explicit_cons local resonant = "lmnŋrɫ" local glide = "ġjwƿ" local cons = obstruent .. resonant .. glide local cons_c = "[" .. cons .. "]" local voiced_sound = vowel .. "lrmnwjbdɡ" -- WARNING, IPA ɡ used here -- These rules operate in order, and apply to the actual spelling, -- after (1) macron decomposition, (2) syllable and prefix splitting, -- (3) placement of primary and secondary stresses at the beginning -- of the syllable. Each syllable will be separated either by ˈ -- (if the following syllable is stressed), by ˌ (if the following -- syllable has secondary stress), or by . (otherwise). In addition, -- morpheme boundaries where the consonants on either side should be -- treated as at the beginning/end of word (i.e. between prefix and -- word, or between words in a compound word) will be marked with ⁀ -- before the syllable separator, and the beginning and end of text -- will be marked by ⁀⁀. The output of this is fed into phonetic_rules, -- and then is used to generate the displayed phonemic pronunciation -- by removing ⁀ symbols. local phonemic_rules = { {com.MACRON, "ː"}, {"eoː", "oː"}, -- e.g. ġeōmor {"eaː", "aː"}, {"[ei]ː?[aeo]", { -- Alternative notation for short diphthongs: iu̯, eo̯, æɑ̯ -- Alternative notation for long diphthongs: iːu̯, eːo̯, æːɑ̯ ["ea"] = "æ͜ɑ", ["eːa"] = "æ͜ɑː", ["eo"] = "e͜o", ["eːo"] = "e͜oː", ["io"] = "i͜u", ["iːo"] = "i͜uː", ["ie"] = "i͜y", ["iːe"] = "i͜yː", }}, -- sċ between vowels when at the beginning of a syllable should be ʃ.ʃ {"(" .. vowel_c .. "ː?)([.ˈˌ]?)sċ(" .. vowel_c .. ")", "%1ʃ%2ʃ%3"}, -- other sċ should be ʃ; note that sċ divided between syllables becomes s.t͡ʃ {"sċ", "ʃ"}, -- x between vowels when at the beginning of a syllable should be k.s; -- remaining x handled below {"(" .. vowel_c .. "ː?)([.ˈˌ]?)x(" .. vowel_c .. ")", "%1k%2s%3"}, -- z between vowels when at the beginning of a syllable should be t.s; -- remaining z handled below {"(" .. vowel_c .. "ː?)([.ˈˌ]?)z(" .. vowel_c .. ")", "%1t%2s%3"}, -- short front vowel + -rian, -riend, -rienne, -riende in verb or verbal is -- rendered with /j/; we need to carefully change the syllable structure -- when doing this {"(" .. front_vowel_c .. ")%.ri%.(an⁀)", "%1r.ġ%2", {"verb"}}, {"(" .. front_vowel_c .. ")%.ri%.(end⁀)", "%1r.ġ%2", {"verb", "verbal"}}, {"(" .. front_vowel_c .. ")%.ri%.(en%.[nd]e⁀)", "%1r.ġ%2", {"verb", "verbal"}}, {"nċ([.ˈˌ]?)ġ", "n%1j"}, {"ċ([.ˈˌ]?)ġ", "j%1j"}, {"c([.ˈˌ]?)g", "g%1g"}, {"ċ([.ˈˌ]?)ċ", "t%1t͡ʃ"}, {".", { ["ċ"] = "t͡ʃ", ["c"] = "k", ["ġ"] = "j", ["h"] = "x", ["þ"] = "θ", ["ð"] = "θ", ["ƿ"] = "w", ["x"] = "ks", ["z"] = "ts", ["g"] = "ɡ", -- map to IPA ɡ ["a"] = "ɑ", ["œ"] = "ø", }}, } local fricative_to_voiced = { ["f"] = "v", ["s"] = "z", ["θ"] = "ð", } local fricative_to_unvoiced = { ["v"] = "f", ["z"] = "s", ["ð"] = "θ", } -- These rules operate in order, on the output of phonemic_rules. -- The output of this is used to generate the displayed phonemic -- pronunciation by removing ⁀ symbols. local phonetic_rules = { -- Fricative voicing between voiced sounds. Note, the following operates -- across a ⁀ boundary for a fricative before the boundary but not after. {"([" .. voiced_sound .. "][ː.ˈˌ]*)([fsθ])([ː.ˈˌ⁀]*[" .. voiced_sound .. "])", function(s1, c, s2) return s1 .. fricative_to_voiced[c] .. s2 end }, -- Fricative between unstressed vowels should be devoiced. -- Note that unstressed syllables are preceded by . while stressed -- syllables are preceded by a stress mark. {"(%.[^.⁀][" .. vowel .. com.DOUBLE_BREVE_BELOW .. "ː]*%.)([vzð])", function(s1, c) return s1 .. fricative_to_unvoiced[c] end }, -- Final -sian, -siend, -sienne, -siende (and variants such as -siġan, -- -siġend, etc.) in verb or verbal is rendered with [s]; clǣnsian will -- have to be special-cased with ''[z]'' {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?ɑn⁀)", "%1s%2", {"verb"}}, {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?end⁀)", "%1s%2", {"verb", "verbal"}}, {"(" .. cons_c .. "ː?" .. "%.)z(i%.j?en%.[nd]e⁀)", "%1s%2", {"verb", "verbal"}}, -- Final unstressed -þu/-þo after a consonant should be devoiced. {"(" .. cons_c .. "ː?" .. "%.)ð([uo]⁀)", function(s1, s2) return s1 .. "θ" .. s2 end }, {"x[wnlr]", { ["xw"] = "ʍ", ["xl"] = "l̥", ["xn"] = "n̥", ["xr"] = "r̥", }}, -- Note, the following will not operate across a ⁀ boundary. {"n([.ˈˌ]?[ɡk])", "ŋ%1"}, -- WARNING, IPA ɡ used here {"n([.ˈˌ]?)j", "n%1d͡ʒ"}, {"j([.ˈˌ]?)j", "d%1d͡ʒ"}, {"([^x][⁀.ˈˌ])x", "%1h"}, -- [h] occurs as a syllable-initial allophone {"(" .. front_vowel_c .. ")x", "%1ç"}, -- [ç] occurs after front vowels -- An IPA ɡ after a word/prefix boundary, after another ɡ or after n -- (previously converted to ŋ in this circumstance) should remain as ɡ, -- while all other ɡ's should be converted to ɣ except that word-final ɡ -- becomes x. We do this by converting the ɡ's that should remain to regular -- g (which should never occur otherwise), convert the remaining IPA ɡ's to ɣ -- or x, and then convert the regular g's back to IPA ɡ. {"ɡ([.ˈˌ]?)ɡ", "g%1g"}, -- WARNING, IPA ɡ on the left, regular g on the right {"([ŋ⁀])([.ˈˌ]?)ɡ", "%1%2g"}, -- WARNING, IPA ɡ on the left, regular g on the right {"ɡ", "ɣ"}, {"g", "ɡ"}, -- WARNING, regular g on the left, IPA ɡ on the right {"l([.ˈˌ]?)l", "ɫ%1ɫ"}, {"r([.ˈˌ]?)r", "rˠ%1rˠ"}, {"l([.ˈˌ]?" .. cons_c .. ")", "ɫ%1"}, {"r([.ˈˌ]?" .. cons_c .. ")", "rˠ%1"}, -- Geminate consonants within a single syllable are pronounced singly. -- Does not apply e.g. to ''ǣttren'', which will be divided as ''ǣt.tren''. {"(" .. cons_c .. ")%1", "%1"}, {"rˠrˠ", "rˠ"}, -- [In the sequence vowel + obstruent + resonant in a single syllable, -- the resonant should become syllabic, e.g. ādl [ˈɑːdl̩], blōstm [bloːstm̩], -- fæþm [fæðm̩], bēacn [ˈbæːɑ̯kn̩]. We allow anything but a syllable or word -- boundary betweent the vowel and the obstruent.] [BASED ON INPUT FROM -- [[User:Urszag]], I'VE DECIDE AGAINST THIS] -- {"(" .. vowel_c .. "[^.ˈˌ⁀]*[" .. obstruent .. "]ː?[" .. resonant .. "])", "%1" .. com.SYLLABIC}, -- also -mn e.g stemn /ˈstemn̩/; same for m + other resonants except m -- {"(" .. vowel_c .. "[^.ˈˌ⁀]*mː?[lnŋrɫ])", "%1" .. com.SYLLABIC}, {".", explicit_char_to_phonetic}, } local function apply_rules(word, rules, pos) for _, rule in ipairs(rules) do local allowed_pos = rule[3] if not allowed_pos or m_table.contains(allowed_pos, pos) then word = rsub(word, rule[1], rule[2]) end end return word end local function lookup_stress_spec(stress_spec, pos) return stress_spec[pos] or (pos == "verbal" and stress_spec["verb"]) or nil end local function split_on_word_boundaries(word, pos) local retparts = {} local parts = strutils.split(word, "([<>%-])") local i = 1 local saw_primary_stress = false while i <= #parts do local split_part = false local insert_position = #retparts + 1 if parts[i + 1] ~= "<" and parts[i - 1] ~= ">" then -- Split off any prefixes. while true do local broke_prefix = false for _, prefixspec in ipairs(com.prefixes) do local prefix_pattern = prefixspec[1] local stress_spec = prefixspec[2] local pos_stress = lookup_stress_spec(stress_spec, pos) local prefix, rest = rmatch(parts[i], "^(" .. prefix_pattern .. ")(.*)$") if prefix then if not pos_stress then -- prefix not recognized for this POS, don't split here elseif stress_spec.restriction and not rfind(rest, stress_spec.restriction) then -- restriction not met, don't split here elseif rfind(rest, "^%+") then -- explicit non-boundary here, so don't split here elseif not rfind(rest, vowel_c) then -- no vowels, don't split here elseif rfind(rest, "^..?$") then -- only two letters, unlikely to be a word, probably an ending, so don't split -- here else local initial_cluster, after_cluster = rmatch(rest, "^(" .. non_vowel_c .. "*)(.-)$") if rfind(initial_cluster, "..") and ( not (com.onsets_2[initial_cluster] or com.secondary_onsets_2[initial_cluster] or com.onsets_3[initial_cluster])) then -- initial cluster isn't a possible onset, don't split here elseif rfind(initial_cluster, "^x") then -- initial cluster isn't a possible onset, don't split here elseif rfind(after_cluster, "^" .. vowel_c .. "$") then -- remainder is a cluster + short vowel, -- unlikely to be a word so don't split here else -- break the word in two; next iteration we process -- the rest, which may need breaking again parts[i] = rest if pos_stress == "unstressed" then -- don't do anything elseif pos_stress == "secstressed" or (saw_primary_stress and pos_stress == "stressed") then prefix = rsub(prefix, "(" .. vowel_c .. ")", "%1" .. AUTOGRAVE, 1) elseif pos_stress == "stressed" then prefix = rsub(prefix, "(" .. vowel_c .. ")", "%1" .. AUTOACUTE, 1) saw_primary_stress = true else error("Unrecognized stress spec for pos=" .. pos .. ", prefix=" .. prefix .. ": " .. pos_stress) end table.insert(retparts, insert_position, prefix) insert_position = insert_position + 1 broke_prefix = true break end end end end if not broke_prefix then break end end -- Now do the same for suffixes. while true do local broke_suffix = false for _, suffixspec in ipairs(com.suffixes) do local suffix_pattern = suffixspec[1] local stress_spec = suffixspec[2] local pos_stress = lookup_stress_spec(stress_spec, pos) local rest, suffix = rmatch(parts[i], "^(.-)(" .. suffix_pattern .. ")$") if suffix then if not pos_stress then -- suffix not recognized for this POS, don't split here elseif stress_spec.restriction and not rfind(rest, stress_spec.restriction) then -- restriction not met, don't split here elseif rfind(rest, "%+$") then -- explicit non-boundary here, so don't split here elseif not rfind(rest, vowel_c) then -- no vowels, don't split here else local before_cluster, final_cluster = rmatch(rest, "^(.-)(" .. non_vowel_c .. "*)$") if rfind(final_cluster, "%..") then -- syllable division within or before final -- cluster, don't split here else -- break the word in two; next iteration we process -- the rest, which may need breaking again parts[i] = rest if pos_stress == "unstressed" then -- don't do anything elseif pos_stress == "secstressed" then suffix = rsub(suffix, "(" .. vowel_c .. ")", "%1" .. AUTOGRAVE, 1) elseif pos_stress == "stressed" then error("Primary stress not allowed for suffixes (suffix=" .. suffix .. ")") else error("Unrecognized stress spec for pos=" .. pos .. ", suffix=" .. suffix .. ": " .. pos_stress) end table.insert(retparts, insert_position, suffix) broke_suffix = true break end end end end if not broke_suffix then break end end end local acc = rfind(parts[i], "(" .. stress_accent_c .. ")") if acc == com.CFLEX then -- remove circumflex but don't accent parts[i] = gsub(parts[i], com.CFLEX, "") elseif acc == com.ACUTE or acc == AUTOACUTE then saw_primary_stress = true elseif not acc and parts[i + 1] ~= "<" and parts[i - 1] ~= ">" then -- Add primary or secondary stress on the part; primary stress if no primary -- stress yet, otherwise secondary stress. acc = saw_primary_stress and AUTOGRAVE or AUTOACUTE saw_primary_stress = true parts[i] = rsub(parts[i], "(" .. vowel_c .. ")", "%1" .. acc, 1) end table.insert(retparts, insert_position, parts[i]) i = i + 2 end -- remove any +, which has served its purpose for i, part in ipairs(retparts) do retparts[i] = gsub(part, "%+", "") end return retparts end local function break_vowels(vowelseq) local function check_empty(char) if char ~= "" then error("Something wrong, non-vowel '" .. char .. "' seen in vowel sequence '" .. vowelseq .. "'") end end local vowels = {} local chars = strutils.split(vowelseq, "(" .. vowel_c .. accent_c .. "*)") local i = 1 while i <= #chars do if i % 2 == 1 then check_empty(chars[i]) i = i + 1 else if i < #chars - 1 and com.diphthongs[ rsub(chars[i], stress_accent_c, "") .. rsub(chars[i + 2], stress_accent_c, "") ] then check_empty(chars[i + 1]) table.insert(vowels, chars[i] .. chars[i + 2]) i = i + 3 else table.insert(vowels, chars[i]) i = i + 1 end end end return vowels end -- Break a word into alternating C and V components where a C component is a run -- of zero or more consonants and a V component in a single vowel or dipthong. -- There will always be an odd number of components, where all odd-numbered -- components (starting from 1) are C components and all even-numbered components -- are V components. local function break_into_c_and_v_components(word) local cons_vowel = strutils.split(word, "(" .. vowel_or_accent_c .. "+)") local components = {} for i = 1, #cons_vowel do if i % 2 == 1 then table.insert(components, cons_vowel[i]) else local vowels = break_vowels(cons_vowel[i]) for j = 1, #vowels do if j == 1 then table.insert(components, vowels[j]) else table.insert(components, "") table.insert(components, vowels[j]) end end end end return components end local function split_into_syllables(word) local cons_vowel = break_into_c_and_v_components(word) if #cons_vowel == 1 then return cons_vowel end for i = 1, #cons_vowel do if i % 2 == 1 then -- consonant local cluster = cons_vowel[i] local len = ulen(cluster) if i == 1 then cons_vowel[i + 1] = cluster .. cons_vowel[i + 1] elseif i == #cons_vowel then cons_vowel[i - 1] = cons_vowel[i - 1] .. cluster elseif rfind(cluster, "%.") then local before_break, after_break = rmatch(cluster, "^(.-)%.(.*)$") cons_vowel[i - 1] = cons_vowel[i - 1] .. before_break cons_vowel[i + 1] = after_break .. cons_vowel[i + 1] elseif len == 0 then -- do nothing elseif len == 1 then cons_vowel[i + 1] = cluster .. cons_vowel[i + 1] elseif len == 2 then local c1, c2 = rmatch(cluster, "^(.)(.)$") if c1 == "s" and c2 == "ċ" then cons_vowel[i + 1] = "sċ" .. cons_vowel[i + 1] else cons_vowel[i - 1] = cons_vowel[i - 1] .. c1 cons_vowel[i + 1] = c2 .. cons_vowel[i + 1] end else -- check for onset_3 preceded by consonant(s). local first, last3 = rmatch(cluster, "^(.-)(...)$") if #first > 0 and com.onsets_3[last3] then cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last3 .. cons_vowel[i + 1] else local first, last2 = rmatch(cluster, "^(.-)(..)$") if com.onsets_2[last2] or (com.secondary_onsets_2[last2] and not first:find("[lr]$")) then cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last2 .. cons_vowel[i + 1] else local first, last = rmatch(cluster, "^(.-)(.)$") cons_vowel[i - 1] = cons_vowel[i - 1] .. first cons_vowel[i + 1] = last .. cons_vowel[i + 1] end end end end end local retval = {} for i = 1, #cons_vowel do if i % 2 == 0 then -- remove any stray periods. table.insert(retval, rsub(cons_vowel[i], "%.", "")) end end return retval end -- Combine syllables into a word, moving stress markers (acute/grave) to the -- beginning of the syllable. local function combine_syllables_moving_stress(syllables, no_auto_stress) local modified_syls = {} for i, syl in ipairs(syllables) do if syl:find(com.ACUTE) or syl:find(AUTOACUTE) and not no_auto_stress then syl = "ˈ" .. syl elseif syl:find(com.GRAVE) or syl:find(AUTOGRAVE) and not no_auto_stress then syl = "ˌ" .. syl elseif i > 1 then syl = "." .. syl end syl = rsub(syl, stress_accent_c, "") table.insert(modified_syls, syl) end return table.concat(modified_syls) end -- Combine word parts (split-off prefixes, suffixes or parts of a compound word) -- into a single word. Separate parts with ⁀ and the put ⁀⁀ at word boundaries. local function combine_parts(parts) local text = {} for i, part in ipairs(parts) do if i > 1 and not rfind(part, "^[ˈˌ]") then -- Need a syllable boundary if there isn't a stress marker. table.insert(text, "." .. part) else table.insert(text, part) end end return "⁀⁀" .. table.concat(text, "⁀") .. "⁀⁀" end local function transform_word(word, pos, no_auto_stress) word = com.decompose(word) local parts = split_on_word_boundaries(word, pos) for i, part in ipairs(parts) do local syllables = split_into_syllables(part) parts[i] = combine_syllables_moving_stress(syllables, no_auto_stress or (#parts == 1 and #syllables == 1)) end return combine_parts(parts) end local function default_pos(word, pos) if not pos then -- verbs in -an/-ōn/-ēon, inflected infinitives in -enne if rfind(word, "[aāō]n$") or rfind(word, "ēon$") or rfind(word, "enne$") then pos = "verb" else -- adjectives in -līċ, adverbs in -līċe and nouns in -nes can follow -- nouns or participles (which are "verbal"); truncate the ending -- and check what precedes word = rsub(word, "^(.*" .. vowel_c .. ".*)l[iī][cċ]e?$", "%1") word = rsub(word, "^(.*" .. vowel_c .. ".*)n[eiy]ss?$", "%1") -- participles in -end(e)/-en/-ed/-od, verbal nouns in -ing/-ung if rfind(word, "ende?$") or rfind(word, "[eo]d$") or rfind(word, "en$") or rfind(word, "[iu]ng$") then pos = "verbal" else pos = "noun" end end elseif pos == "adj" or pos == "adjective" then pos = "noun" elseif pos ~= "noun" and pos ~= "verb" and pos ~= "verbal" then error("Unrecognized part of speech: " .. pos) end return pos end local function generate_phonemic_word(word, pos) word = gsub(word, "[.!?]$", "") word = rsub(word, "%[(.)%]", char_to_explicit_char) pos = default_pos(word, pos) local is_prefix_suffix if word:find("^%-") or word:find("%-$") then is_prefix_suffix = true word = gsub(word, "^%-?(.-)%-?$", "%1") end word = transform_word(word, pos, is_prefix_suffix) word = apply_rules(word, phonemic_rules, pos) return word, pos end function export.phonemic(text, pos) if type(text) == "table" then pos = text.args["pos"] text = text[1] end local result = {} text = ulower(text) for word in rgsplit(text, " ") do local phonemic, respos = generate_phonemic_word(word, pos) table.insert(result, phonemic) end result = table.concat(result, " ") result = rsub(result, ".", explicit_char_to_phonemic) return gsub(result, "⁀", "") end function export.phonetic(text, pos) if type(text) == "table" then pos = text.args["pos"] text = text[1] end local result = {} text = ulower(text) for word in rgsplit(text, " ") do local phonemic, respos = generate_phonemic_word(word, pos) word = apply_rules(phonemic, phonetic_rules, respos) table.insert(result, word) end return gsub(table.concat(result, " "), "⁀", "") end function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = { required = true, default = "hlǣf-dīġe", list = true }, ["pos"] = {}, ["ann"] = {}, } local args = require("Module:parameters").process(parent_args, params) local IPA_args = {} for _, arg in ipairs(args[1]) do local phonemic = export.phonemic(arg, args.pos) local phonetic = export.phonetic(arg, args.pos) table.insert(IPA_args, {pron = '/' .. phonemic .. '/'}) if phonemic ~= phonetic then table.insert(IPA_args, {pron = '[' .. phonetic .. ']'}) end end local anntext if args.ann == "1" then anntext = {} for _, arg in ipairs(args[1]) do -- remove all spelling markup except ġ/ċ and macrons arg = rsub(com.decompose(arg), "[%-+._<>" .. com.ACUTE .. com.GRAVE .. com.CFLEX .. "]", "") arg = rsub(arg, "%[(.)%]", char_to_spelling) m_table.insertIfNot(anntext, "'''" .. arg .. "'''") end anntext = table.concat(anntext, ", ") .. ":&#32;" elseif args.ann then anntext = "'''" .. args.ann .. "''':&#32;" else anntext = "" end return anntext .. m_IPA.format_IPA_full { lang = lang, items = IPA_args } end return export 7xwigi7qyvreir6ly33p8y0byzjjvk0 Module:ang-pron/testcases/documentation 828 144201 235647 2024-03-06T04:44:05Z en>WingerBot 0 remove unnecessary categorization now handled automatically by [[Module:documentation]] and [[Module:module categorization]] (manually assisted) 235647 wikitext text/x-wiki {{#invoke:ang-pron/testcases|run_tests}} hbfkw6nf3tnf5tnvii0xrjvyux6k16j 235648 235647 2026-06-07T05:03:43Z Lee 19 [[:en:Module:ang-pron/testcases/documentation]] වෙතින් එක් සංශෝධනයක් 235647 wikitext text/x-wiki {{#invoke:ang-pron/testcases|run_tests}} hbfkw6nf3tnf5tnvii0xrjvyux6k16j Module:ang-pron/testcases 828 144202 235649 2026-05-09T13:37:21Z en>Urszag 0 235649 Scribunto text/plain local tests = require "Module:UnitTests" local m_IPA = require "Module:ang-pron" local gline = require("Module:string/gline") local lang = require("Module:languages").getByCode("ang") local function tag_IPA(phonemic) return function (IPA) if phonemic then IPA = '/' .. IPA .. '/' else IPA = '[' .. IPA .. ']' end return '<span class="IPA">' .. IPA .. '</span>' end end local function remove_diacritics(term) term = mw.ustring.toNFD(term) return term:gsub("\204[\128-\191]", "") -- codepoints U+300-33F end local function link(term) return '<span class="Latn" lang="ang">[[' .. remove_diacritics(term) .. "#Old English|" .. term .. ']]</span>' end local phonemic_options = { display = tag_IPA(true), show_difference = true } function tests:check_phonemic(spelling, respelling, expected, transcription_options) local pos = transcription_options.pos self:equals(link(spelling) .. (spelling ~= respelling and (" (respelled " .. require("Module:script_utilities").tag_text(respelling, lang) .. ")" ) or "") .. (pos and ", pos=" .. pos or ""), m_IPA.phonemic(respelling, pos), expected, phonemic_options) end local phonetic_options = { display = tag_IPA(false), show_difference = true } function tests:check_phonetic(spelling, respelling, expected, transcription_options) local pos = transcription_options.pos self:equals(link(spelling) .. (spelling ~= respelling and (" (respelled " .. require("Module:script_utilities").tag_text(respelling, lang) .. ")" ) or "") .. (pos and ", pos=" .. pos or ""), m_IPA.phonetic(respelling, pos), expected, phonetic_options) end -- Tab-separated words used in [[Module:ang-pron/testcases]]: -- word, phonemic transcription, part of speech. -- The word can be in the form `spelling:respelling` for words needing respelling. -- The part of speech and preceding tab can be omitted. local phonemic_examples = [[ habban ˈxɑb.bɑn verb ēaġe ˈæ͜ɑː.je senġan ˈsen.jɑn verb eċġ ejj noun ālīefan ɑːˈli͜yː.fɑn oferdōn ˌo.ferˈdoːn æx æks noun beforan beˈfo.rɑn āsāƿan ɑːˈsɑː.wɑn verb ġeong:ġung junɡ sċeolde:sċolde ˈʃol.de sċeadu:sċadu ˈʃɑ.du noun ġeolu ˈje͜o.lu sellan ˈsel.lɑn verb feallan ˈfæ͜ɑl.lɑn verb wasċan ˈwɑʃ.ʃɑn -- In some existing transcriptions, gemination of /ʃ/ is only phonetic. husċ xuʃ foresċēawung fo.reˈʃæ͜ɑː.wunɡ ġeddung ˈjed.dunɡ unġewintred:un-ġewintred ˈun.jeˌwin.tred fleaxen ˈflæ͜ɑk.sen edcwician:ed<cwician edˈkwi.ki.ɑn ān ɑːn ān and twēntiġ ɑːn ɑnd ˈtweːn.tij ā́n and twēntiġ ˈɑːn ɑnd ˈtweːn.tij bēacniendlīċ:bēacni.endlīċ ˈbæ͜ɑːk.ni.end.liːt͡ʃ bedul:bédul ˈbe.dul beorhtost ˈbe͜orx.tost ġeāgniendlīċ:ġe<āg.ni.endlīċ jeˈɑːɡ.ni.end.liːt͡ʃ -estre es.tre aldorlēas ˈɑl.dorˌlæ͜ɑːs unclǣne ˈunˌklæː.ne -- un- before nouns and adjectives is stressed undōn unˈdoːn -- un- before verbs is unstressed unġesewenlīċ ˈun.jeˌse.wen.liːt͡ʃ -- un- before "verbals" is stressed ]] -- Same as above, but for phonetic (not phonemic) transcription. local phonetic_examples = [[ habban ˈhɑb.bɑn senġan ˈsen.d͡ʒɑn verb senċġan ˈsen.d͡ʒɑn eċġ ed͡ʒ noun ālīefan ɑːˈli͜yː.vɑn oferdōn ˌo.verˈdoːn æx æks noun beforan beˈfo.rɑn ġeong:ġung juŋɡ sċeolde:sċolde ˈʃoɫ.de sellan ˈseɫ.ɫɑn verb -- Should maybe have clear l (ˈsel.lɑn), because e is not diphthongized to eo. feallan ˈfæ͜ɑɫ.ɫɑn verb hēafdes ˈhæ͜ɑːv.des noun siġehrēþiġ:siġe-hrēþiġ ˈsi.jeˌr̥eː.ðij swīþferhþ:swī́þfèrhþ ˈswiːθˌferˠxθ miht miçt noun beorht be͜orˠxt nēah næ͜ɑːx rihte ˈriç.te dryht dryçt sċyhhan ˈʃyç.çɑn --comparison to other velars suggests h was palatalized to ç by original following j fȳhtan ˈfyːç.tɑn hliehhan ˈl̥i͜yç.çɑn hlihhan ˈl̥iç.çɑn feohtan ˈfe͜ox.tɑn verb herian ˈher.jɑn --etymological r.j does not cause breaking, implying r was not velarized here feorr fe͜orˠ fæþm fæðm wīnġeard:wīn-ġeard ˈwiːnˌjæ͜ɑrˠd noun wynsum ˈwyn.sum ċearfull ˈt͡ʃæ͜ɑr.fuɫ wyrgþu ˈwyrˠɣ.θu ālīefednes ɑːˈli͜yː.ved.nes verb pohha ˈpox.xɑ adesa ˈɑ.de.sɑ hlǣfdīġe:hlǣf-dīġe ˈl̥æːvˌdiː.je ǣttren ˈæːt.tren sċeacga:sċacga ˈʃɑɡ.ɡɑ drūsian ˈdruː.zi.ɑn --s would be voiced here because the word is from *drūsijaną hālsian ˈhɑːɫ.si.ɑn --s thought to be voiceless here because the word is contracted (from PG hailisōną) clǣnsian:clǣn[z]ian ˈklæːn.zi.ɑn --exception with voicing despite contraction ]] local function parse(examples) examples = examples:gsub("%s*%-%-[^\n]*", "") local parsed_examples = {} for line in gline(examples, "BLANK") do local word, phonemic, POS = line:match "^([^\t]+)\t([^\t]+)\t?(.*)" local spelling, respelling = word:match "^(.*):(.*)$" spelling = spelling or word respelling = respelling or word if POS == "" then POS = nil end table.insert(parsed_examples, { spelling, respelling, phonemic, { pos = POS }}) end return parsed_examples end function tests:test_phonemic() self:iterate(parse(phonemic_examples), "check_phonemic") end function tests:test_phonetic() self:iterate(parse(phonetic_examples), "check_phonetic") end return tests ngky5e6zdtuxz4pu263paqibot4eg7b 235650 235649 2026-06-07T05:03:47Z Lee 19 [[:en:Module:ang-pron/testcases]] වෙතින් එක් සංශෝධනයක් 235649 Scribunto text/plain local tests = require "Module:UnitTests" local m_IPA = require "Module:ang-pron" local gline = require("Module:string/gline") local lang = require("Module:languages").getByCode("ang") local function tag_IPA(phonemic) return function (IPA) if phonemic then IPA = '/' .. IPA .. '/' else IPA = '[' .. IPA .. ']' end return '<span class="IPA">' .. IPA .. '</span>' end end local function remove_diacritics(term) term = mw.ustring.toNFD(term) return term:gsub("\204[\128-\191]", "") -- codepoints U+300-33F end local function link(term) return '<span class="Latn" lang="ang">[[' .. remove_diacritics(term) .. "#Old English|" .. term .. ']]</span>' end local phonemic_options = { display = tag_IPA(true), show_difference = true } function tests:check_phonemic(spelling, respelling, expected, transcription_options) local pos = transcription_options.pos self:equals(link(spelling) .. (spelling ~= respelling and (" (respelled " .. require("Module:script_utilities").tag_text(respelling, lang) .. ")" ) or "") .. (pos and ", pos=" .. pos or ""), m_IPA.phonemic(respelling, pos), expected, phonemic_options) end local phonetic_options = { display = tag_IPA(false), show_difference = true } function tests:check_phonetic(spelling, respelling, expected, transcription_options) local pos = transcription_options.pos self:equals(link(spelling) .. (spelling ~= respelling and (" (respelled " .. require("Module:script_utilities").tag_text(respelling, lang) .. ")" ) or "") .. (pos and ", pos=" .. pos or ""), m_IPA.phonetic(respelling, pos), expected, phonetic_options) end -- Tab-separated words used in [[Module:ang-pron/testcases]]: -- word, phonemic transcription, part of speech. -- The word can be in the form `spelling:respelling` for words needing respelling. -- The part of speech and preceding tab can be omitted. local phonemic_examples = [[ habban ˈxɑb.bɑn verb ēaġe ˈæ͜ɑː.je senġan ˈsen.jɑn verb eċġ ejj noun ālīefan ɑːˈli͜yː.fɑn oferdōn ˌo.ferˈdoːn æx æks noun beforan beˈfo.rɑn āsāƿan ɑːˈsɑː.wɑn verb ġeong:ġung junɡ sċeolde:sċolde ˈʃol.de sċeadu:sċadu ˈʃɑ.du noun ġeolu ˈje͜o.lu sellan ˈsel.lɑn verb feallan ˈfæ͜ɑl.lɑn verb wasċan ˈwɑʃ.ʃɑn -- In some existing transcriptions, gemination of /ʃ/ is only phonetic. husċ xuʃ foresċēawung fo.reˈʃæ͜ɑː.wunɡ ġeddung ˈjed.dunɡ unġewintred:un-ġewintred ˈun.jeˌwin.tred fleaxen ˈflæ͜ɑk.sen edcwician:ed<cwician edˈkwi.ki.ɑn ān ɑːn ān and twēntiġ ɑːn ɑnd ˈtweːn.tij ā́n and twēntiġ ˈɑːn ɑnd ˈtweːn.tij bēacniendlīċ:bēacni.endlīċ ˈbæ͜ɑːk.ni.end.liːt͡ʃ bedul:bédul ˈbe.dul beorhtost ˈbe͜orx.tost ġeāgniendlīċ:ġe<āg.ni.endlīċ jeˈɑːɡ.ni.end.liːt͡ʃ -estre es.tre aldorlēas ˈɑl.dorˌlæ͜ɑːs unclǣne ˈunˌklæː.ne -- un- before nouns and adjectives is stressed undōn unˈdoːn -- un- before verbs is unstressed unġesewenlīċ ˈun.jeˌse.wen.liːt͡ʃ -- un- before "verbals" is stressed ]] -- Same as above, but for phonetic (not phonemic) transcription. local phonetic_examples = [[ habban ˈhɑb.bɑn senġan ˈsen.d͡ʒɑn verb senċġan ˈsen.d͡ʒɑn eċġ ed͡ʒ noun ālīefan ɑːˈli͜yː.vɑn oferdōn ˌo.verˈdoːn æx æks noun beforan beˈfo.rɑn ġeong:ġung juŋɡ sċeolde:sċolde ˈʃoɫ.de sellan ˈseɫ.ɫɑn verb -- Should maybe have clear l (ˈsel.lɑn), because e is not diphthongized to eo. feallan ˈfæ͜ɑɫ.ɫɑn verb hēafdes ˈhæ͜ɑːv.des noun siġehrēþiġ:siġe-hrēþiġ ˈsi.jeˌr̥eː.ðij swīþferhþ:swī́þfèrhþ ˈswiːθˌferˠxθ miht miçt noun beorht be͜orˠxt nēah næ͜ɑːx rihte ˈriç.te dryht dryçt sċyhhan ˈʃyç.çɑn --comparison to other velars suggests h was palatalized to ç by original following j fȳhtan ˈfyːç.tɑn hliehhan ˈl̥i͜yç.çɑn hlihhan ˈl̥iç.çɑn feohtan ˈfe͜ox.tɑn verb herian ˈher.jɑn --etymological r.j does not cause breaking, implying r was not velarized here feorr fe͜orˠ fæþm fæðm wīnġeard:wīn-ġeard ˈwiːnˌjæ͜ɑrˠd noun wynsum ˈwyn.sum ċearfull ˈt͡ʃæ͜ɑr.fuɫ wyrgþu ˈwyrˠɣ.θu ālīefednes ɑːˈli͜yː.ved.nes verb pohha ˈpox.xɑ adesa ˈɑ.de.sɑ hlǣfdīġe:hlǣf-dīġe ˈl̥æːvˌdiː.je ǣttren ˈæːt.tren sċeacga:sċacga ˈʃɑɡ.ɡɑ drūsian ˈdruː.zi.ɑn --s would be voiced here because the word is from *drūsijaną hālsian ˈhɑːɫ.si.ɑn --s thought to be voiceless here because the word is contracted (from PG hailisōną) clǣnsian:clǣn[z]ian ˈklæːn.zi.ɑn --exception with voicing despite contraction ]] local function parse(examples) examples = examples:gsub("%s*%-%-[^\n]*", "") local parsed_examples = {} for line in gline(examples, "BLANK") do local word, phonemic, POS = line:match "^([^\t]+)\t([^\t]+)\t?(.*)" local spelling, respelling = word:match "^(.*):(.*)$" spelling = spelling or word respelling = respelling or word if POS == "" then POS = nil end table.insert(parsed_examples, { spelling, respelling, phonemic, { pos = POS }}) end return parsed_examples end function tests:test_phonemic() self:iterate(parse(phonemic_examples), "check_phonemic") end function tests:test_phonetic() self:iterate(parse(phonetic_examples), "check_phonetic") end return tests ngky5e6zdtuxz4pu263paqibot4eg7b Module:ang-pron/documentation 828 144203 235651 2024-03-06T07:15:03Z en>WingerBot 0 remove unnecessary categorization now handled automatically by [[Module:documentation]] and [[Module:module categorization]], and/or use {{module cat}} (manually assisted) 235651 wikitext text/x-wiki This module generates IPA for Old English words. There are three entry points: * <code>show</code> directly implements [[Template:ang-IPA]], and is meant to be called from that template. * <code>phonemic()</code> generates the raw phonemic IPA for Old English text. * <code>phonetic()</code> generates the raw phonetic IPA for Old English text. Test cases can be found in [[Module:ang-pron/testcases]]. The primary documentation for this module can be found in the documentation for [[Template:ang-IPA]]. 8d3k7khv4ehzp10fa4qhlai71wkw3yn 235652 235651 2026-06-07T05:03:50Z Lee 19 [[:en:Module:ang-pron/documentation]] වෙතින් එක් සංශෝධනයක් 235651 wikitext text/x-wiki This module generates IPA for Old English words. There are three entry points: * <code>show</code> directly implements [[Template:ang-IPA]], and is meant to be called from that template. * <code>phonemic()</code> generates the raw phonemic IPA for Old English text. * <code>phonetic()</code> generates the raw phonetic IPA for Old English text. Test cases can be found in [[Module:ang-pron/testcases]]. The primary documentation for this module can be found in the documentation for [[Template:ang-IPA]]. 8d3k7khv4ehzp10fa4qhlai71wkw3yn Module:ang-common 828 144204 235653 2024-04-27T09:09:03Z en>SurjectionBot 0 Protected "[[Module:ang-common]]": (bot) automatically protect highly visible templates/modules (reference score: 2000+ >= 1000) ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) 235653 Scribunto text/plain --[=[ Common utilities and definitions used by various Old English modules. Author: Benwing ]=] local m_table = require("Module:table") local u = require("Module:string/char") local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end local export = {} export.ACUTE = u(0x0301) export.GRAVE = u(0x0300) export.CFLEX = u(0x0302) export.MACRON = u(0x0304) export.DOTABOVE = u(0x0307) export.SYLLABIC = u(0x0329) export.CEDILLA = u(0x0327) export.DOUBLE_BREVE_BELOW = u(0x035C) local accent = export.MACRON .. export.ACUTE .. export.GRAVE .. export.CFLEX local recomposer = { ["g" .. export.DOTABOVE] = "ġ", ["G" .. export.DOTABOVE] = "Ġ", ["c" .. export.DOTABOVE] = "ċ", ["C" .. export.DOTABOVE] = "Ċ", -- used in "explicit allophone" notation in [[Module:ang-pron]] ["c" .. export.CEDILLA] = "ç", ["C" .. export.CEDILLA] = "Ç", } -- Decompose macron, acute, grave, circumflex, but leave alone ġ, ċ and uppercase equiv function export.decompose(text) text = mw.ustring.toNFD(text) text = rsub(text, ".[" .. export.DOTABOVE .. "]", recomposer) return text end -- We use the following syllable-splitting algorithm. -- (1) A single consonant goes with the following syllable. -- (2) Two consonants are split down the middle. -- (3) For three or more consonants, check for clusters ending in -- onsets_3 then onsets_2, with at least one preceding consonant. -- If so, split between the onset and the preceding consonant(s). -- (4) Check similarly for secondary_onsets_2. If seen, then check -- the preceding consonant; if it's not an l or r, split before -- the onset. -- (5) Otherwise, split before the last consonant (i.e. the last -- consonant goes with the following syllable, and all preceding -- consonants go with the preceding syllable). export.onsets_2 = m_table.listToSet({ "pr", "pl", "br", "bl", "tr", "tw", "dr", "dw", "cr", "cl", "cw", --skip "cn" "kr", "kl", "kw", --skip "kn" "gr", "gl", -- skip "gn" "sm", "sn", "sl", "sw", "sp", "st", "sc", "sk", "sċ", "fr", "fl", --skip "fn", "þr", "þw", "ðr", "ðw", "hr", "hl", "hw", -- skip "hn" "wr", "wl", }) export.secondary_onsets_2 = m_table.listToSet({ "cn", "kn", "gn", "fn", "hn", }) export.onsets_3 = m_table.listToSet({ "spr", "spl", "str", "scr", "skr", "sċr", }) export.diphthongs = m_table.listToSet({ "ea", export.decompose("ēa"), export.decompose("eā"), "eo", export.decompose("ēo"), export.decompose("eō"), "io", export.decompose("īo"), export.decompose("iō"), "ie", export.decompose("īe"), export.decompose("iē"), }) export.prefixes = { {export.decompose("ā"), {verb = "unstressed", noun = "stressed"}}, {"æt", {verb = "unstressed"}}, {"æfter", {verb = "secstressed", noun = "stressed"}}, -- not very common {"and", {verb = "unstressed", noun = "stressed"}}, {"an", {verb = "unstressed", noun = "stressed"}}, {"be", {verb = "unstressed", noun = "unstressed", restriction = "^[^" .. accent .. "ao]"}}, {export.decompose("bī"), {noun = "stressed"}}, {"ed", {verb = "unstressed", noun = "stressed"}}, -- not very common {"fore", {verb = "unstressed", noun = "stressed", restriction = "^[^" .. accent .. "ao]"}}, {"for[þð]", {verb = "unstressed", noun = "stressed"}}, {"for", {verb = "unstressed", noun = "unstressed"}}, {"fram", {verb = "unstressed", noun = "stressed"}}, -- not very common -- following is rare as a noun, mostly from verbal forms {"ġeond", {verb = "unstressed"}}, {"ġe", {verb = "unstressed", noun = "unstressed", restriction = "^[^" .. accent .. "ao]"}}, {"in", {verb = "unstressed", noun = "stressed"}}, -- not very common {"mis", {verb = "unstressed"}}, {"ofer", {verb = "secstressed", noun = "stressed"}}, {"of", {verb = "unstressed", noun = "stressed"}}, {"on", {verb = "unstressed", noun = "stressed"}}, {"or", {noun = "stressed"}}, {"o[þð]", {verb = "unstressed"}}, {export.decompose("stēop"), {noun = "stressed"}}, {export.decompose("tō"), {verb = "unstressed", noun = "stressed"}}, {"under", {verb = "secstressed", noun = "stressed"}}, {"un", {verb = "unstressed", noun = "stressed", verbal = "stressed"}}, -- uncommon as verb {"up", {verb = "unstressed", noun = "stressed"}}, {export.decompose("ūt"), {verb = "unstressed", noun = "stressed"}}, {export.decompose("ū[þð]"), {noun = "stressed"}}, {"[wƿ]i[þð]er", {verb = "secstressed", noun = "stressed"}}, {"[wƿ]i[þð]", {verb = "unstressed"}}, {"ymb", {verb = "unstressed", noun = "stressed"}}, {"[þð]urh", {verb = "unstressed", noun = "stressed"}}, } export.suffixes = { {export.decompose("bǣre"), {noun = "secstressed"}}, {"fæst", {noun = "secstressed"}}, {"feald", {noun = "secstressed"}}, {"full?", {noun = "unstressed"}}, {export.decompose("lēas"), {noun = "secstressed"}}, -- These can be "verbal" if following a verbal past participle or similar {export.decompose("līċe"), {noun = "secstressed", verb = "secstressed"}}, -- ī is decomposed into two chars so can't combine into [īi] {export.decompose("li[ċc]"), {noun = "unstressed", verb = "unstressed"}}, {export.decompose("lī[ċc]"), {noun = "unstressed", verb = "unstressed"}}, {"n[eiy]ss?", {noun = "unstressed", verb = "unstressed"}}, {"sum", {noun = "unstressed"}}, } return export fc79ypblk4nipwsalhix5guv4evn5wg 235654 235653 2026-06-07T05:04:54Z Lee 19 [[:en:Module:ang-common]] වෙතින් එක් සංශෝධනයක් 235653 Scribunto text/plain --[=[ Common utilities and definitions used by various Old English modules. Author: Benwing ]=] local m_table = require("Module:table") local u = require("Module:string/char") local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar, n) local retval = rsubn(term, foo, bar, n) return retval end local export = {} export.ACUTE = u(0x0301) export.GRAVE = u(0x0300) export.CFLEX = u(0x0302) export.MACRON = u(0x0304) export.DOTABOVE = u(0x0307) export.SYLLABIC = u(0x0329) export.CEDILLA = u(0x0327) export.DOUBLE_BREVE_BELOW = u(0x035C) local accent = export.MACRON .. export.ACUTE .. export.GRAVE .. export.CFLEX local recomposer = { ["g" .. export.DOTABOVE] = "ġ", ["G" .. export.DOTABOVE] = "Ġ", ["c" .. export.DOTABOVE] = "ċ", ["C" .. export.DOTABOVE] = "Ċ", -- used in "explicit allophone" notation in [[Module:ang-pron]] ["c" .. export.CEDILLA] = "ç", ["C" .. export.CEDILLA] = "Ç", } -- Decompose macron, acute, grave, circumflex, but leave alone ġ, ċ and uppercase equiv function export.decompose(text) text = mw.ustring.toNFD(text) text = rsub(text, ".[" .. export.DOTABOVE .. "]", recomposer) return text end -- We use the following syllable-splitting algorithm. -- (1) A single consonant goes with the following syllable. -- (2) Two consonants are split down the middle. -- (3) For three or more consonants, check for clusters ending in -- onsets_3 then onsets_2, with at least one preceding consonant. -- If so, split between the onset and the preceding consonant(s). -- (4) Check similarly for secondary_onsets_2. If seen, then check -- the preceding consonant; if it's not an l or r, split before -- the onset. -- (5) Otherwise, split before the last consonant (i.e. the last -- consonant goes with the following syllable, and all preceding -- consonants go with the preceding syllable). export.onsets_2 = m_table.listToSet({ "pr", "pl", "br", "bl", "tr", "tw", "dr", "dw", "cr", "cl", "cw", --skip "cn" "kr", "kl", "kw", --skip "kn" "gr", "gl", -- skip "gn" "sm", "sn", "sl", "sw", "sp", "st", "sc", "sk", "sċ", "fr", "fl", --skip "fn", "þr", "þw", "ðr", "ðw", "hr", "hl", "hw", -- skip "hn" "wr", "wl", }) export.secondary_onsets_2 = m_table.listToSet({ "cn", "kn", "gn", "fn", "hn", }) export.onsets_3 = m_table.listToSet({ "spr", "spl", "str", "scr", "skr", "sċr", }) export.diphthongs = m_table.listToSet({ "ea", export.decompose("ēa"), export.decompose("eā"), "eo", export.decompose("ēo"), export.decompose("eō"), "io", export.decompose("īo"), export.decompose("iō"), "ie", export.decompose("īe"), export.decompose("iē"), }) export.prefixes = { {export.decompose("ā"), {verb = "unstressed", noun = "stressed"}}, {"æt", {verb = "unstressed"}}, {"æfter", {verb = "secstressed", noun = "stressed"}}, -- not very common {"and", {verb = "unstressed", noun = "stressed"}}, {"an", {verb = "unstressed", noun = "stressed"}}, {"be", {verb = "unstressed", noun = "unstressed", restriction = "^[^" .. accent .. "ao]"}}, {export.decompose("bī"), {noun = "stressed"}}, {"ed", {verb = "unstressed", noun = "stressed"}}, -- not very common {"fore", {verb = "unstressed", noun = "stressed", restriction = "^[^" .. accent .. "ao]"}}, {"for[þð]", {verb = "unstressed", noun = "stressed"}}, {"for", {verb = "unstressed", noun = "unstressed"}}, {"fram", {verb = "unstressed", noun = "stressed"}}, -- not very common -- following is rare as a noun, mostly from verbal forms {"ġeond", {verb = "unstressed"}}, {"ġe", {verb = "unstressed", noun = "unstressed", restriction = "^[^" .. accent .. "ao]"}}, {"in", {verb = "unstressed", noun = "stressed"}}, -- not very common {"mis", {verb = "unstressed"}}, {"ofer", {verb = "secstressed", noun = "stressed"}}, {"of", {verb = "unstressed", noun = "stressed"}}, {"on", {verb = "unstressed", noun = "stressed"}}, {"or", {noun = "stressed"}}, {"o[þð]", {verb = "unstressed"}}, {export.decompose("stēop"), {noun = "stressed"}}, {export.decompose("tō"), {verb = "unstressed", noun = "stressed"}}, {"under", {verb = "secstressed", noun = "stressed"}}, {"un", {verb = "unstressed", noun = "stressed", verbal = "stressed"}}, -- uncommon as verb {"up", {verb = "unstressed", noun = "stressed"}}, {export.decompose("ūt"), {verb = "unstressed", noun = "stressed"}}, {export.decompose("ū[þð]"), {noun = "stressed"}}, {"[wƿ]i[þð]er", {verb = "secstressed", noun = "stressed"}}, {"[wƿ]i[þð]", {verb = "unstressed"}}, {"ymb", {verb = "unstressed", noun = "stressed"}}, {"[þð]urh", {verb = "unstressed", noun = "stressed"}}, } export.suffixes = { {export.decompose("bǣre"), {noun = "secstressed"}}, {"fæst", {noun = "secstressed"}}, {"feald", {noun = "secstressed"}}, {"full?", {noun = "unstressed"}}, {export.decompose("lēas"), {noun = "secstressed"}}, -- These can be "verbal" if following a verbal past participle or similar {export.decompose("līċe"), {noun = "secstressed", verb = "secstressed"}}, -- ī is decomposed into two chars so can't combine into [īi] {export.decompose("li[ċc]"), {noun = "unstressed", verb = "unstressed"}}, {export.decompose("lī[ċc]"), {noun = "unstressed", verb = "unstressed"}}, {"n[eiy]ss?", {noun = "unstressed", verb = "unstressed"}}, {"sum", {noun = "unstressed"}}, } return export fc79ypblk4nipwsalhix5guv4evn5wg Module:ang-noun 828 144205 235655 2024-11-30T12:36:18Z en>Theknightwho 0 Bugfix error. 235655 Scribunto text/plain local m_links = require("Module:links") local strutils = require("Module:string utilities") local lang = require("Module:languages").getByCode("ang") local export = {} local cases = { "nom", "acc", "gen", "dat" } local numbers = { "sg", "pl" } local slots_to_accel_form = {} for _, case in ipairs(cases) do for _, number in ipairs(numbers) do slots_to_accel_form[case .. "_" .. number] = case .. "|" .. number end end local slots_to_args = { nom_sg = 1, nom_pl = 2, acc_sg = 3, acc_pl = 4, gen_sg = 5, gen_pl = 6, dat_sg = 7, dat_pl = 8, } function export.make_table(frame) local parent_args = frame:getParent().args local params = { ["title"] = {}, -- To be removed. ["type"] = {}, ["width"] = {}, ["style"] = {}, ["num"] = {}, ["g"] = {}, ["gender"] = {alias_of = "g"}, } for slot, arg in pairs(slots_to_args) do params[arg] = {list = slot} end local args = require("Module:parameters").process(parent_args, params) local table_args = { style = args.style == "right" and "float:right; clear:right;" or "", width = args.width or "30", } local accel_lemma_sg = args[slots_to_args.nom_sg][1] local accel_lemma_pl = args[slots_to_args.nom_pl][1] local accel_lemma = accel_lemma_sg and accel_lemma_sg ~= "—" and accel_lemma_sg ~= "-" and accel_lemma_sg:gsub(",.*", "") or accel_lemma_pl and accel_lemma_pl ~= "—" and accel_lemma_pl ~= "-" and accel_lemma_pl:gsub(",.*", "") or nil for slot, accel_form in pairs(slots_to_accel_form) do local form_args = args[slots_to_args[slot]] if #form_args == 0 then form_args = {"—"} end local forms = {} for _, form_arg in ipairs(form_args) do for _, form in ipairs(mw.text.split(form_arg, ", *")) do table.insert(forms, form) end end local table_arg = {} for _, form in ipairs(forms) do table.insert(table_arg, form == "—" and form or m_links.full_link{ lang = lang, term = form, accel = { form = accel_form, lemma = accel_lemma, } }) table_args[slot] = table.concat(table_arg, ", ") end end if args.num == "pl" then table_args.nom_sg = "—" table_args.acc_sg = "—" table_args.gen_sg = "—" table_args.dat_sg = "—" elseif args.num == "sg" then table_args.nom_pl = "—" table_args.acc_pl = "—" table_args.gen_pl = "—" table_args.dat_pl = "—" end local type = '' if args["type"] then type = type .. (args["type"]:gsub("^%l", string.upper)) end if args.g then type = type .. " (" .. ( args.g == "m" and "masculine" or args.g == "f" and "feminine" or args.g == "n" and "neuter" or error("Unrecognized gender '" .. args.g .. "'") ) .. ")" end type = type .. ':' local table = type .. (type and '\n') table = table .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'indigo' } } table = table .. [=[ ! ! singular ! plural |- ! [[nominative case|nominative]] | {nom_sg} | {nom_pl} |- ! [[accusative case|accusative]] | {acc_sg} | {acc_pl} |- ! [[genitive case|genitive]] | {gen_sg} | {gen_pl} |- ! [[dative case|dative]] | {dat_sg} | {dat_pl} ]=] table = table .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' } return strutils.format(table, table_args) end return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: 6q4c38268gm7fgsaauxkaywf80rjzyw 235656 235655 2026-06-07T05:05:54Z Lee 19 [[:en:Module:ang-noun]] වෙතින් එක් සංශෝධනයක් 235655 Scribunto text/plain local m_links = require("Module:links") local strutils = require("Module:string utilities") local lang = require("Module:languages").getByCode("ang") local export = {} local cases = { "nom", "acc", "gen", "dat" } local numbers = { "sg", "pl" } local slots_to_accel_form = {} for _, case in ipairs(cases) do for _, number in ipairs(numbers) do slots_to_accel_form[case .. "_" .. number] = case .. "|" .. number end end local slots_to_args = { nom_sg = 1, nom_pl = 2, acc_sg = 3, acc_pl = 4, gen_sg = 5, gen_pl = 6, dat_sg = 7, dat_pl = 8, } function export.make_table(frame) local parent_args = frame:getParent().args local params = { ["title"] = {}, -- To be removed. ["type"] = {}, ["width"] = {}, ["style"] = {}, ["num"] = {}, ["g"] = {}, ["gender"] = {alias_of = "g"}, } for slot, arg in pairs(slots_to_args) do params[arg] = {list = slot} end local args = require("Module:parameters").process(parent_args, params) local table_args = { style = args.style == "right" and "float:right; clear:right;" or "", width = args.width or "30", } local accel_lemma_sg = args[slots_to_args.nom_sg][1] local accel_lemma_pl = args[slots_to_args.nom_pl][1] local accel_lemma = accel_lemma_sg and accel_lemma_sg ~= "—" and accel_lemma_sg ~= "-" and accel_lemma_sg:gsub(",.*", "") or accel_lemma_pl and accel_lemma_pl ~= "—" and accel_lemma_pl ~= "-" and accel_lemma_pl:gsub(",.*", "") or nil for slot, accel_form in pairs(slots_to_accel_form) do local form_args = args[slots_to_args[slot]] if #form_args == 0 then form_args = {"—"} end local forms = {} for _, form_arg in ipairs(form_args) do for _, form in ipairs(mw.text.split(form_arg, ", *")) do table.insert(forms, form) end end local table_arg = {} for _, form in ipairs(forms) do table.insert(table_arg, form == "—" and form or m_links.full_link{ lang = lang, term = form, accel = { form = accel_form, lemma = accel_lemma, } }) table_args[slot] = table.concat(table_arg, ", ") end end if args.num == "pl" then table_args.nom_sg = "—" table_args.acc_sg = "—" table_args.gen_sg = "—" table_args.dat_sg = "—" elseif args.num == "sg" then table_args.nom_pl = "—" table_args.acc_pl = "—" table_args.gen_pl = "—" table_args.dat_pl = "—" end local type = '' if args["type"] then type = type .. (args["type"]:gsub("^%l", string.upper)) end if args.g then type = type .. " (" .. ( args.g == "m" and "masculine" or args.g == "f" and "feminine" or args.g == "n" and "neuter" or error("Unrecognized gender '" .. args.g .. "'") ) .. ")" end type = type .. ':' local table = type .. (type and '\n') table = table .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-top', args = { title = '-', palette = 'indigo' } } table = table .. [=[ ! ! singular ! plural |- ! [[nominative case|nominative]] | {nom_sg} | {nom_pl} |- ! [[accusative case|accusative]] | {acc_sg} | {acc_pl} |- ! [[genitive case|genitive]] | {gen_sg} | {gen_pl} |- ! [[dative case|dative]] | {dat_sg} | {dat_pl} ]=] table = table .. mw.getCurrentFrame():expandTemplate{ title = 'inflection-table-bottom' } return strutils.format(table, table_args) end return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: 6q4c38268gm7fgsaauxkaywf80rjzyw Module:ang-noun/documentation 828 144206 235657 2024-03-06T05:39:27Z en>WingerBot 0 remove unnecessary categorization now handled automatically by [[Module:documentation]] and [[Module:module categorization]] (manually assisted) 235657 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> htv9bx6p31m48q39zcc87mucqafkwrv 235658 235657 2026-06-07T05:07:03Z Lee 19 [[:en:Module:ang-noun/documentation]] වෙතින් එක් සංශෝධනයක් 235657 wikitext text/x-wiki {{documentation needed}}<!-- Replace this with a short description of the purpose of the module, and how to use it. --> htv9bx6p31m48q39zcc87mucqafkwrv ප්‍රවර්ගය:පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි 14 144207 235659 2026-06-07T05:08:41Z Pinthura 2424 සේවා: [[:[[en:Category:Old English noun inflection-table templates]]]] තුළ තිබූ පෙළ මෙහි ඇතුළු කිරීම. 235659 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235660 235659 2026-06-07T05:08:51Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:Old English noun inflection-table templates]] සිට [[ප්‍රවර්ගය:පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 235659 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx 235662 235660 2026-06-07T05:09:01Z Pinthura 2424 සේවා: ඉංග්‍රීසි ව්‍යාපෘතිය වෙත සබැඳියක් එක් කිරීම. 235662 wikitext text/x-wiki {{auto cat}} [[en:Category:Old English noun inflection-table templates]] 12d3ei3ce5wwzsooa8avu0zmmmzkdfw ප්‍රවර්ගය:Old English noun inflection-table templates 14 144208 235661 2026-06-07T05:08:52Z Pinthura 2424 Pinthura විසින් [[ප්‍රවර්ගය:Old English noun inflection-table templates]] සිට [[ප්‍රවර්ගය:පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි]] වෙත පිටුව ගෙන යන ලදී: සේවා: නව ප්‍රවර්ග නාමය වෙත ගෙනයාම. 235661 wikitext text/x-wiki #යළියොමුව [[:ප්‍රවර්ගය:පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි]] 75tytodjnd0zm6x4m44n8l87uzc3rsm 235663 235661 2026-06-07T05:09:11Z Pinthura 2424 සේවා: යළියොමුව, මෘදු ප්‍රවර්ග යළියොමුවක් බවට හැරවීම. 235663 wikitext text/x-wiki {{category redirect|පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි}} m4xpo86hef0o8tn40ed7azq9u5ts67k ප්‍රවර්ගය:Old English නාම පද වරනැගීම්-වගු සැකිලි 14 144209 235664 2026-06-07T05:09:21Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 235664 wikitext text/x-wiki {{category redirect|පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි}} m4xpo86hef0o8tn40ed7azq9u5ts67k ප්‍රවර්ගය:පුරාතන ඉංග්‍රීසි noun inflection-table templates 14 144210 235665 2026-06-07T05:09:31Z Pinthura 2424 සේවා: මෘදු ප්‍රවර්ග යළියොමුවක් නිර්මාණය. 235665 wikitext text/x-wiki {{category redirect|පුරාතන ඉංග්‍රීසි නාම පද වරනැගීම්-වගු සැකිලි}} m4xpo86hef0o8tn40ed7azq9u5ts67k නිරික්සීමි 0 144211 235668 2026-06-07T11:17:38Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + example sentence + ප්‍රවර්ගය 235668 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈniriksiːmi/}} ===ක්‍රියා පද=== {{head|si|verb forms|අනතීත-සකර්මක උත්තම ඒකවචන|නිරික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|නිරික්සිණිමි#ක්‍රියා පද}} # {{lb|si|සකර්මක}} {{infl of|si|නිරික්සයි#ක්‍රියා පද||අතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම ඊයේ තෙලික්සුවෙන් තරු '''නිරික්සීමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] oxhma30ivgd2yxqqbwrsruzqzjgjpdz නිරික්සිණිමි 0 144212 235669 2026-06-07T11:22:26Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + example sentence + ප්‍රවර්ගය 235669 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈniriksiɳimi/}} ===ක්‍රියා පද=== {{head|si|verb forms|අනතීත-සකර්මක උත්තම ඒකවචන|නිරික්සමි#ක්‍රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|නිරික්සෙමි#ක්‍රියා පද}} # {{infl of|si|නිරික්සයි||අතීත|කර්ම කාරක|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම ඊයේ නිරික්සුවන් විසින් '''නිරික්සිණිමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] nrjn9c55b3hyw5pzzr1tag70jjsenkd නිරික්සෙමි 0 144213 235670 2026-06-07T11:29:04Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + example sentence + ප්‍රවර්ගය 235670 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈniriksemi/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=නිරික්සෙමි|අනතීත-සකර්මක උත්තම ඒකවචන|නිරික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|නිරික්සිණිමි#ක්‍රියා පද}} # {{infl of|si|නිරික්සයි#ක්‍රියා පද||අනතීත|කර්ම කාරක|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම නිරික්සුවන් විසින් '''නිරික්සෙමි'''.)}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] q3kjizulgus92svl1ktywqkmqa8183m 235673 235670 2026-06-07T11:39:15Z WrdSrchSi 3305 /* ක්‍රියා පද */ Fixed. 235673 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈniriksemi/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=නිරික්සෙමි|අනතීත-සකර්මක උත්තම ඒකවචන|නිරික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|නිරික්සිණිමි#ක්‍රියා පද}} # {{infl of|si|නිරික්සයි#ක්‍රියා පද||අනතීත|කර්ම කාරක|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම නිරික්සුවන් විසින් '''නිරික්සෙමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 0q6w21xb1b4xg839wi018fbev7ukuyx සුවික්සීමි 0 144214 235671 2026-06-07T11:34:50Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + example sentence + ප්‍රවර්ගය 235671 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈsuʋiksiːmi/}} ===ක්‍රියා පද=== {{head|si|verb forms|අනතීත-සකර්මක උත්තම ඒකවචන|සුවික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|සුවික්සිණිමි#ක්‍රියා පද}} # {{lb|si|සකර්මක}} {{infl of|si|සුවික්සයි#ක්‍රියා පද||අතීත|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම ඔවුන් වැඩ '''සුවික්සීමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 5myetrj62mdor7thm65490x5usylkrt සුවික්සිණිමි 0 144215 235672 2026-06-07T11:37:51Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + example sentence + ප්‍රවර්ගය 235672 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈsuʋiksiɳimi/}} ===ක්‍රියා පද=== {{head|si|verb forms|අනතීත-සකර්මක උත්තම ඒකවචන|සුවික්සමි#ක්‍රියා පද|අනතීත-කර්ම කාරක උත්තම ඒකවචන|සුවික්සෙමි#ක්‍රියා පද}} # {{infl of|si|සුවික්සයි||අතීත|කර්ම කාරක|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම ඊයේ සුවික්සුවන් විසින් '''සුවික්සිණිමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] h001y8n17l45bpkzegocxl8jes5y5zh සුවික්සෙමි 0 144216 235674 2026-06-07T11:41:50Z WrdSrchSi 3305 Page created: + IPA|si + head|si|verb forms + infl of|si + example sentence + ප්‍රවර්ගය 235674 wikitext text/x-wiki ==සිංහල== ===උච්චාරණය=== * {{IPA|si|/ˈsuʋiksemi/}} ===ක්‍රියා පද=== {{head|si|verb forms|head=සුවික්සෙමි|අනතීත-සකර්මක උත්තම ඒකවචන|සුවික්සමි#ක්‍රියා පද|අතීත-කර්ම කාරක උත්තම ඒකවචන|සුවික්සිණිමි#ක්‍රියා පද}} # {{infl of|si|සුවික්සයි#ක්‍රියා පද||අනතීත|කර්ම කාරක|උත්තම පුරුෂ|ඒකවචන|ආඛ්‍යාත ක්‍රියා}} #: ''{{{2|මම සුවික්සුවන් විසින් '''සුවික්සෙමි'''.}}}'' [[ප්‍රවර්ගය: සිංහල ආඛ්‍යාත ක්‍රියා පද]] 23fqj3u5gaq3obikc4s1bz02ex6h6b4