Wiktionary viwiktionary https://vi.wiktionary.org/wiki/Wiktionary:Trang_Ch%C3%ADnh MediaWiki 1.46.0-wmf.22 case-sensitive Phương tiện Đặc biệt Thảo luận Thành viên Thảo luận Thành viên Wiktionary Thảo luận Wiktionary Tập tin Thảo luận Tập tin MediaWiki Thảo luận MediaWiki Bản mẫu Thảo luận Bản mẫu Trợ giúp Thảo luận Trợ giúp Thể loại Thảo luận Thể loại Phụ lục Thảo luận Phụ lục TimedText TimedText talk Mô đun Thảo luận Mô đun Event Event talk horticulture 0 17678 2341631 1853164 2026-04-01T04:11:13Z Hiyuune 50834 2341631 wikitext text/x-wiki =={{langname|en}}== {{wp|en:}} ==={{section|pron}}=== * {{IPA4|en|/ˈhɔː.tɪˌkʌl.tʃə(ɹ)/|a=RP}} * {{IPA4|en|/ˈhɔɹ.tɪˌkʌl.t͡ʃɚ/|a=GA}} * {{hyph|en|hor|ti|cul|ture}} * {{audio|en|LL-Q1860 (eng)-Vininn126-horticulture.wav|a=US}} ==={{section|n}}=== {{en-noun|-|s}} # [[nghề|Nghề]] [[làm]] [[vườn]]. ===={{section|drv}}==== {{col|en|agrohorticulture|horsiculture|horticulturism |horticultural|horticulturally|horticulturist}} ==={{section|ref}}=== * {{R:FVDP|db=ev}} =={{langname|fr}}== ==={{section|pron}}=== * {{fr-muteh}} {{fr-IPA}} * {{audio|fr|LL-Q150 (fra)-LoquaxFR-horticulture.wav|a=Vosges}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-horticulture.wav|a=Lyon}} ==={{section|n}}=== {{fr-noun|f}} # [[nghề|Nghề]] [[làm]] [[vườn]]. ===={{section|rel}}==== * {{l|fr|horticole}} * {{l|fr|horticulteur}} ===={{section|see}}==== * {{l|fr|jardinage}} ==={{section|ref}}=== * {{R:FVDP|db=ev}} ==={{section|further}}=== * {{R:fr:TLFi}} 847ba4zmpma89nbtpa76jrgxzpvdrz0 chi tiết 0 27442 2341651 2172177 2026-04-01T06:15:44Z ~2026-20152-83 60989 Đã lùi lại sửa đổi [[Special:Diff/2172177|2172177]] của [[Special:Contributions/ToadetteEdit|ToadetteEdit]] ([[User talk:ToadetteEdit|thảo luận]]) 2341651 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|chi|tiết}} {{-etym-}} 枝節 Phiên âm Hán Việt của [[chi]] (nghĩa là [[cành cây]]) + [[tiết]] (nghĩa là [[đốt tre]]), ý nói là [[tỉ mỉ]] đến từ phần nhỏ. {{-noun-}} '''chi tiết''' # [[điểm|Điểm]] [[nhỏ]], [[phần]] rất [[nhỏ]] trong [[nội dung]]. #: ''Kể đầy đủ các '''chi tiết'''.'' #: ''Có nhiều '''chi tiết''' không đúng với thực tế.'' # [[bộ phận|Bộ phận]] [[riêng lẻ]], có thể [[tháo]] [[lắp]] [[được]], [[trang thiết bị]] [[máy móc]]. #: ''Tháo lắp từng '''chi tiết''' máy.'' {{-adj-}} '''chi tiết''' # [[tỉ mỉ|Tỉ mỉ]], [[đầy]] đủ [[các]] [[điểm]] [[nhỏ]] trong [[nội dung]]. #: ''Trình bày '''chi tiết'''.'' #: ''Đề cương '''chi tiết'''.'' {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] s7uxtpppecvf5gkuulzr88o7lp3fgcd 2341652 2341651 2026-04-01T06:22:15Z Hiyuune 50834 Đã lùi lại sửa đổi của [[Special:Contributions/~2026-20152-83|~2026-20152-83]] ([[User talk:~2026-20152-83|thảo luận]]) quay về phiên bản cuối của [[User:ToadetteEdit|ToadetteEdit]] 2172177 wikitext text/x-wiki {{-vie-}} {{-pron-}} {{vie-pron|chi|tiết}} {{-etym-}} Phiên âm Hán Việt của [[chi]] (nghĩa là [[cành cây]]) + [[tiết]] (nghĩa là [[đốt tre]]), ý nói là [[tỉ mỉ]] đến từ phần nhỏ. {{-noun-}} '''chi tiết''' # [[điểm|Điểm]] [[nhỏ]], [[phần]] rất [[nhỏ]] trong [[nội dung]]. #: ''Kể đầy đủ các '''chi tiết'''.'' #: ''Có nhiều '''chi tiết''' không đúng với thực tế.'' # [[bộ phận|Bộ phận]] [[riêng lẻ]], có thể [[tháo]] [[lắp]] [[được]], [[trang thiết bị]] [[máy móc]]. #: ''Tháo lắp từng '''chi tiết''' máy.'' {{-adj-}} '''chi tiết''' # [[tỉ mỉ|Tỉ mỉ]], [[đầy]] đủ [[các]] [[điểm]] [[nhỏ]] trong [[nội dung]]. #: ''Trình bày '''chi tiết'''.'' #: ''Đề cương '''chi tiết'''.'' {{-ref-}} {{R:FVDP}} [[Thể loại:Danh từ tiếng Việt]] [[Thể loại:Tính từ tiếng Việt]] tibwnla6nnvikgof8vx3tsd2wmn1hxs baa 0 96589 2341614 2228688 2026-04-01T01:47:29Z Hiyuune 50834 2341614 wikitext text/x-wiki {{also|BAA|baaʼ|bää|bąą}} =={{langname|mul}}== ==={{section|etym}}=== {{abbrev|mul|en:'''Ba'''b'''a'''tana}}. ==={{section|symbol}}=== {{mul-symbol}} # {{ISO 639|3}} =={{langname|en}}== ==={{section|etym}} 1=== ===={{section|alt}}==== * {{alter|en|bah||obsolete}} ===={{section|pron}}==== * {{IPA4|en|[bɑː]|a=UK}} * {{IPA4|en|[bæ]|[bɑ]|a=US}} * {{IPA4|en|[bæ̰ː]|[bæ̰ˀæ̰ˀæ̰ˀæ̰ˀ]}} * {{audio|en|en-uk-baa.ogg|a=RP}} * {{audio|en|en-us-baa.ogg|a=GenAm}} * {{rhymes|en|ɑː|æ|s=1}} * {{homophones|en|bah|bar}} ===={{section|n}}==== {{en-noun}} # {{lb|en|onomatopoeia}} [[tiếng|Tiếng]] [[be be]] (cừu). ====={{section|drv}}===== * {{l|en|baa-lamb}} ===={{section|v}}==== {{en-verb}} # [[kêu|Kêu]] [[be be]] (cừu). ==={{section|etym}} 2=== Từ {{bor|en|ar|بَاء}}. ===={{section|n}}==== {{en-noun}} # Chữ cái của {{lang|und|sc=Arab|[[ب]]}} trong chữ Ả Rập. ==={{section|ana}}=== * {{anagrams|en|a=aab|A.B.A.|AAB|ABA|Aba|aba}} ==={{section|ref}}=== * {{R:FVDP|db=ev}} =={{langname|bej}}== ==={{section|n}}=== {{head|bej|Danh từ}} # {{Latn-def|bej|name|B|b}} =={{langname|dta}}== ==={{section|pronoun}}=== {{head|dta|Đại từ}} # [[chúng ta|Chúng ta]]. =={{langname|dwr}}== ==={{section|n}}=== {{head|dwr|Danh từ}} # [[trẻ con|Trẻ con]]. ==={{section|ref}}=== * Alemayehu Abebe (2002) ''[https://www.sil.org/system/files/reapdata/11/04/88/110488031523696633065171363399668390747/SILESR2002_068.pdf Ometo Dialect Pilot Survey Report]''. SIL International. =={{langname|wlo}}== ==={{section|n}}=== {{head|wlo|Danh từ}} # [[đầu|Đầu]]. ==={{section|ref}}=== * {{cite-book|last=Anceaux|first=Johannes C.|year=1987|title=Wolio Dictionary (Wolio-English-Indonesian) / Kamus Bahasa Wolio (Wolio-Inggeris-Indonesia)|location=Dordrecht|publisher=Foris}} =={{langname|wtw}}== ==={{section|noun}}=== {{head|wtw|Danh từ}} # [[đầu|Đầu]]. aay1x7oefotz84m9u91duvlw8huv9nb horticulturist 0 125906 2341632 1853165 2026-04-01T04:12:41Z Hiyuune 50834 2341632 wikitext text/x-wiki =={{langname|en}}== ==={{section|pron}}=== * {{audio|en|LL-Q1860 (eng)-Wodencafe-horticulturist.wav|a=US}} ==={{section|noun}}=== {{en-noun}} # [[người làm|Người làm]] [[vườn]]. #: {{syn|en|horticultor}} ===={{section|rel}}==== * {{l|en|horticultural}} * {{l|en|horticulturally}} * {{l|en|horticulture}} * {{l|en|horticulturism}} ==={{section|ref}}=== * {{R:FVDP|db=ev}} 4g2fqm29s768lpps25zi4w736lfd9s9 swell-headed 0 163800 2341587 1924903 2026-03-31T16:12:29Z Hiyuune 50834 2341587 wikitext text/x-wiki {{also|swellheaded}} =={{langname|en}}== ==={{section|adj}}=== {{en-adj}} # [[tự cao|Tự cao]] [[tự]] đại. ===={{section|syn}}==== * {{l|en|swollen-headed}} ===={{section|rel}}==== * {{l|en|swellhead}} ==={{section|ref}}=== * {{R:FVDP|db=ev}} 3ytdd0es3s7zfhlcxy7wy6ewuxico5n kinh kệ 0 193540 2341630 1321485 2026-04-01T04:08:46Z Hiyuune 50834 2341630 wikitext text/x-wiki =={{langname|vi}}== ==={{section|pron}}=== {{vi-pron}} ==={{section|n}}=== {{vi-noun}} # [[kinh|Kinh]] [[sách]] [[nhà]] [[Phật]] [[nói chung]]. ==={{section|ref}}=== * {{R:FVDP}} kwhw2fuz6xu3t2qrbhnzpzw8b1pqlil agglomerated 0 217911 2341638 1791293 2026-04-01T04:16:39Z Hiyuune 50834 2341638 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|agglomerate||ed-form}} rdqd7b70ddcn1d2wnhqwl1s3w6d5q9c pinched 0 220977 2341634 1893117 2026-04-01T04:13:37Z Hiyuune 50834 2341634 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|pinch||ed-form}} p0dgry95dz4yy3mxgr4bd4cwqek7xod acknowledged 0 222077 2341637 1789884 2026-04-01T04:16:05Z Hiyuune 50834 2341637 wikitext text/x-wiki =={{langname|en}}== ==={{section|pron}}=== * {{audio|en|en-us-acknowledged.ogg|a=US}} ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|acknowledg||ed-form}} # {{infl of|en|acknowledge||ed-form}} 63kysog3xr70tjpcmobdwuftdzs51h3 achieved 0 224106 2341635 1789793 2026-04-01T04:14:41Z Hiyuune 50834 2341635 wikitext text/x-wiki =={{langname|en}}== ==={{section|pron}}=== * {{IPA4|en|/əˈt͡ʃiːvd/}} * {{rhymes|en|iːvd|s=2}} ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|achieve||ed-form}} mxrub0awzb02fct3wcxv3vzvjnju2og baaed 0 225094 2341613 1799131 2026-04-01T01:42:00Z Hiyuune 50834 2341613 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|baa||ed-form}} ==={{section|ana}}=== * {{anagrams|en|a=aabde|Adabe|Baade|abade}} 1hzil8xrlvpzo2vlrh0idjjy1hw8mfy acidified 0 228352 2341636 1789842 2026-04-01T04:15:10Z Hiyuune 50834 2341636 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|acidify||ed-form}} jr7kncjuuqpn6mv353ki0df81okindh shades 0 235625 2341621 2193231 2026-04-01T04:00:18Z Hiyuune 50834 2341621 wikitext text/x-wiki =={{langname|en}}== ==={{section|n}}=== {{head|en|Biến thể hình thái danh từ}} # {{plural of|en|shade}} ==={{section|ana}}=== * {{anagrams|en|a=adehss|Sheads|dashes|sadhes|sashed}} =={{langname|pt}}== ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|shade}} 24r6rwyfjqfh25cwyqntw6b80tcbnpw cenorias 0 257033 2341597 2180793 2026-04-01T01:12:22Z Hiyuune 50834 2341597 wikitext text/x-wiki =={{langname|gl}}== ==={{section|noun}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|cenoria}} 0x74kd5u41b8foj4t480fplny0mkzmb telecommute 0 257238 2341609 2010446 2026-04-01T01:38:12Z Hiyuune 50834 2341609 wikitext text/x-wiki =={{langname|en}}== ==={{section|etym}}=== Từ {{prefix|en|tele-|commute}}. ==={{section|pron}}=== * {{IPA4|en|/ˈtɛləkəˌmjut/|a=US}} * {{audio|en|LL-Q1860 (eng)-Knabrupt-telecommute.wav|a=General American}} ==={{section|v}}=== {{en-verb}} # [[làm việc|Làm việc]] tại [[nhà]] và [[liên lạc]] với [[văn phòng]], [[trụ sở]] làm việc qua [[điện thoại]], [[email]], [[internet]]. ===={{section|syn}}==== * {{l|en|telework}} ===={{section|drv}}==== * {{l|en|telecommuter}} * {{l|en|telecommuting}} gppsef417kli12cnornmo29b571n7iq klavan 0 268216 2341570 2065459 2026-03-31T13:28:44Z Kelly zhrm 58416 2341570 wikitext text/x-wiki =={{langname|vo}}== ==={{ĐM|n}}=== {{vo-noun}} # Người [[đánh máy]], nhân viên đánh máy. ===={{ĐM|decl}}==== {{vo-decl-noun}} ===={{ĐM|drv}}==== * {{l|vo|hiklavan}} * {{l|vo|jiklavan}} ===={{ĐM|rel}}==== {{col|vo |gelaklavem |klav |klavem |klavön |laidaklavam |penamachin }} ===={{ĐM|see}}==== * {{l|vo|klavikul}} * {{l|vo|klavizep}} {{C|vo|Nghề nghiệp}} 2zqphgr9y6ecloxfupxjjtmhi49nv3h selidöpan 0 268295 2341572 2065634 2026-03-31T13:32:35Z Kelly zhrm 58416 2341572 wikitext text/x-wiki =={{langname|vo}}== ==={{ĐM|etym}}=== {{suffix|vo|selidöp|an}} ==={{ĐM|n}}=== {{vo-noun}} # [[nhân viên|Nhân viên]] [[bán hàng]], người bán hàng. ===={{ĐM|decl}}==== {{vo-decl-noun}} {{C|vo|Nghề nghiệp}} ma1322jmas41n2g94bvf5z5ik8iyqn9 sekretan 0 268297 2341573 2065637 2026-03-31T13:34:47Z Kelly zhrm 58416 2341573 wikitext text/x-wiki =={{langname|eo}}== ==={{ĐM|adj}}=== {{eo-head}} # {{eo-form of|sekret|an}} =={{langname|vo}}== ==={{ĐM|n}}=== {{vo-noun}} # [[thư ký|Thư ký]]. ===={{ĐM|decl}}==== {{vo-decl-noun}} ===={{ĐM|drv}}==== {{col3 |vo|dakonsälahisekretan |dakonsälajisekretan |dakonsälasekretan |gitädahisekretan |gitädajisekretan |gitädasekretan |hisekretan |jisekretan |klänasekretan |legätasekretan |sekretanam |sekretanacal |sekretanef |sekretanik |zifahisekretan |zifajisekretan |zifasekretan }} ===={{ĐM|rel}}==== * {{l|vo|sekret}} {{C|vo|Nghề nghiệp}} 0ude8gedc84bcu5lv0zxjyh4w4djq5b profäsoran 0 268320 2341571 2075886 2026-03-31T13:30:53Z Kelly zhrm 58416 2341571 wikitext text/x-wiki =={{langname|vo}}== ==={{ĐM|pron}}=== * {{IPA4|vo|[pɾofɛsoˈɾan]}} ==={{ĐM|n}}=== {{vo-noun}} # [[giáo sư|Giáo sư]] ([[đại học]]). ===={{ĐM|decl}}==== {{vo-decl-noun}} ===={{ĐM|drv}}==== {{col4|vo |gitavaprofäsoran |gitavaprofäsoranef |hiprofäsoran |hiprofäsoranef |hiprofäsoranik |hiprofäsoraniko |hiprofäsorano |jiprofäsoran |jiprofäsoranef |jiprofäsoranik |jiprofäsoraniko |jiprofäsorano |lifavaprofäsoran |lifavaprofäsoranef |profäsoranef |profäsoranefik |profäsoranik |profäsoraniko |profäsorano }} ===={{ĐM|rel}}==== * {{l|vo|profäsor}} {{C|vo|Giáo dục|Nghề nghiệp}} jjgnhpaq3a50p9e72lfgjcgvqpg69ms 2341580 2341571 2026-03-31T14:33:18Z TheHighFighter2 42988 /* Tiếng Volapük */ 2341580 wikitext text/x-wiki =={{langname|vo}}== ==={{ĐM|pron}}=== * {{IPA4|vo|[pɾofɛsoˈɾan]}} ==={{ĐM|n}}=== {{vo-noun}} # [[giáo sư|Giáo sư]] ([[đại học]]). ===={{ĐM|decl}}==== {{vo-decl-noun}} ===={{ĐM|drv}}==== {{col4|vo |gitavaprofäsoran |gitavaprofäsoranef |hiprofäsoran |hiprofäsoranef |hiprofäsoranik |hiprofäsoraniko |hiprofäsorano |jiprofäsoran |jiprofäsoranef |jiprofäsoranik |jiprofäsoraniko |jiprofäsorano |lifavaprofäsoran |lifavaprofäsoranef |profäsoranef |profäsoranefik |profäsoranik |profäsoraniko |profäsorano }} ===={{ĐM|rel}}==== * {{l|vo|profäsor}} {{C|vo|Giáo dục|Nghề nghiệp}} lnl0cg5rrupfoaystspwnowfpw3c443 Bản mẫu:bảng:mùa/vo 10 269292 2341643 2117430 2026-04-01T05:19:00Z Kelly zhrm 58416 2341643 wikitext text/x-wiki {{bảng:mùa|lang=vo |seasons={{l-self|vo|säsun|säsuns}} |spring={{l-self|vo|florüp||mùa xuân}} |summer={{l-self|vo|hitüp||mùa hè, hạ}} |autumn={{l-self|vo|fluküp||mùa thu}} |winter={{l-self|vo|nifüp||mùa đông}} }}<noinclude>{{table doc}}</noinclude> {{C|vo|Mùa}} 882ir58i3inmdo9yi50b6qtf5xoq2x3 florüp 0 269293 2341575 2217942 2026-03-31T13:37:29Z Kelly zhrm 58416 2341575 wikitext text/x-wiki =={{langname|vo}}== ==={{đm|pron}}=== * {{IPA4|vo|[floˈɾyp]}} ==={{đm|noun}}=== {{vo-noun}} # [[mùa|Mùa]] [[xuân]] ===={{đm|decl}}==== {{vo-decl-noun}} ===={{đm|derived}}==== * {{l|vo|florüpik}} * {{l|vo|florüpiko}} * {{l|vo|florüpo}} ==={{đm|see}}=== * {{l|vo|fluküpik}} * {{l|vo|hitüpik}} * {{l|vo|nifüpik}} {{bảng:mùa/vo}} {{C|vo|Mùa}} hbdkjz1chyymakrhegp3s5uirobtsmr 2341644 2341575 2026-04-01T05:19:24Z Kelly zhrm 58416 2341644 wikitext text/x-wiki =={{langname|vo}}== ==={{đm|pron}}=== * {{IPA4|vo|[floˈɾyp]}} ==={{đm|noun}}=== {{vo-noun}} # [[mùa|Mùa]] [[xuân]] ===={{đm|decl}}==== {{vo-decl-noun}} ===={{đm|derived}}==== * {{l|vo|florüpik}} * {{l|vo|florüpiko}} * {{l|vo|florüpo}} ==={{đm|see}}=== * {{l|vo|fluküpik}} * {{l|vo|hitüpik}} * {{l|vo|nifüpik}} {{bảng:mùa/vo}} n1urfuqvtqnsrkf1u7um4005ohh4u6q Thể loại:vo:Mùa 14 269294 2341576 2069040 2026-03-31T13:38:01Z Kelly zhrm 58416 Kelly zhrm đã đổi [[Thể loại:Mùa/Tiếng Volapük]] thành [[Thể loại:vo:Mùa]] 2069040 wikitext text/x-wiki Trang này liệt kê các mục từ tiếng Volapük thuộc chủ đề [[mùa]]. [[Thể loại:Mục từ tiếng Volapük theo chủ đề]] [[Thể loại:Mùa|V]] 7h56q9hukohaop0c4ph2txqzdnmt9sz 2341578 2341576 2026-03-31T13:38:18Z Kelly zhrm 58416 Thay cả nội dung bằng “{{auto cat}}” 2341578 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx hitüp 0 269295 2341640 2129459 2026-04-01T05:12:23Z Kelly zhrm 58416 2341640 wikitext text/x-wiki {{also|hit up}} =={{langname|vo}}== ==={{đm|pron}}=== * {{IPA4|vo|[hiˈtyp]}} ==={{đm|n}}=== {{vo-noun}} # [[mùa hè|Mùa hè]]. ===={{đm|decl}}==== {{vo-decl-noun}} ===={{đm|drv}}==== * {{l|vo|hitüpik}} * {{l|vo|hitüpiko}} * {{l|vo|hitüpo}} ==={{đm|see}}=== {{bảng:mùa/vo}} * {{l|vo|florüpik}} * {{l|vo|fluküpik}} * {{l|vo|nifüpik}} hx3kknfq5fjfl4l0s969od1cyjwycem fluküp 0 269296 2341641 2129457 2026-04-01T05:14:31Z Kelly zhrm 58416 2341641 wikitext text/x-wiki =={{langname|vo}}== ==={{đm|pron}}=== * {{IPA4|vo|[fluˈkyp]}} ==={{đm|n}}=== {{vo-noun}} # [[mùa thu|Mùa thu]]. ===={{đm|decl}}==== {{vo-decl-noun}} ===={{đm|drv}}==== * {{l|vo|fluküpik}} * {{l|vo|fluküpiko}} * {{l|vo|fluküpo}} ==={{đm|see}}=== {{bảng:mùa/vo}} * {{l|vo|florüpik}} * {{l|vo|hitüpik}} * {{l|vo|nifüpik}} c5leue4yj2u9ssn7lq2yddc28fk3fbn nifüp 0 269297 2341642 2129460 2026-04-01T05:16:31Z Kelly zhrm 58416 2341642 wikitext text/x-wiki =={{langname|vo}}== ==={{đm|pron}}=== * {{IPA4|vo|[niˈfyp]}} ==={{đm|n}}=== {{vo-noun}} # [[mùa đông|Mùa đông]]. ===={{đm|decl}}==== {{vo-decl-noun}} ===={{đm|drv}}==== * {{l|vo|nifüpik}} * {{l|vo|nifüpiko}} * {{l|vo|nifüpo}} ==={{đm|see}}=== {{bảng:mùa/vo}} * {{l|vo|florüpik}} * {{l|vo|fluküpik}} * {{l|vo|hitüpik}} kwylo9hrsu7pthoesuh76wzscnbtjdc hạ bệ 0 288063 2341608 2116663 2026-04-01T01:31:51Z Hiyuune 50834 2341608 wikitext text/x-wiki =={{langname|vi}}== ==={{section|pron}}=== {{vi-pron}} ==={{section|v}}=== {{vi-verb}} # {{label|vi|khẩu ngữ}} [[lật đổ|Lật đổ]] khỏi [[địa vị]] (lớn và có quyền thế). #: {{ux|vi|Bị cấp dưới '''hạ bệ'''.}} ==={{section|ana}}=== * {{l|vi|bệ hạ}} ==={{section|ref}}=== * {{R:Tratu}} b99ohnoxaopr08439288hvx1qxyoqv9 Bản mẫu:vo-noun 10 288167 2341581 2286075 2026-03-31T15:40:41Z Hiyuune 50834 2341581 wikitext text/x-wiki {{head|vo|Danh từ|head={{{head|}}}|sort={{{sort|}}}<!-- -->|{{#ifeq:{{{1|}}}|-|không đếm được|[[nominative|danh sách]] số nhiều}}<!-- -->|{{{head|{{PAGENAME}}}}}s<!-- -->|f1accel-form=nom{{!}}p<!-- -->}}<!-- --><noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> 9lzrqd4r3jy4c32j9hj9w2shuc7opys 2341582 2341581 2026-03-31T15:41:26Z Hiyuune 50834 2341582 wikitext text/x-wiki {{head|vo|Danh từ |head={{{head|}}} |sort={{{sort|}}} |cat2={{{cat|}}} |[[genitive|sinh cách]] |{{{head|{{PAGENAME}}}}}a |f1accel-form=gen{{!}}s |{{#ifeq:{{{1|}}}|-|không đếm được|số nhiều}} |{{#ifeq:{{{1|}}}|-||{{{head|{{PAGENAME}}}}}s}} |f2accel-form=nom{{!}}p}}<!-- --><noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> sdprnh3j9ht4wu23ui88w4glkqmtxil c'art 0 303266 2341595 2154718 2026-04-01T01:11:25Z Hiyuune 50834 2341595 wikitext text/x-wiki {{also|Phụ lục:Biến thể của "cart"}} =={{langname|oka}}== ==={{section|alt}}=== * {{alt|oka|c̓art}} ==={{section|n}}=== {{head|oka|Danh từ}} # [[muối|Muối]]. ===={{section|ref}}==== * Sʕamtíc̓aʔ (Sarah Peterson), ''N̓səl̓xcin 1: A Beginning Course in Colville-Okanagan Salish'', ẩn bản 3 {{C|oka|Gia vị}} rookl43jldm6hwkc5ybatpgooidctf7 c'éʔc'əm' 0 303313 2341598 2155342 2026-04-01T01:12:43Z Hiyuune 50834 2341598 wikitext text/x-wiki =={{langname|clm}}== ==={{section|noun}}=== {{head|clm|Danh từ}} # [[chim|Chim]] [[nhỏ]]. {{C|clm|Lớp Chim}} tg1w95zprq5m2daah36w24px9d0xtym c'əc'psiʔúcən 0 303318 2341606 2155347 2026-04-01T01:23:03Z Hiyuune 50834 2341606 wikitext text/x-wiki =={{langname|clm}}== ==={{section|n}}=== {{head|clm|Danh từ}} # [[sóc|Sóc]]. {{C|clm|Lớp Thú}} 6cbnwp78u2p2jxorz0wmue5vcvb6l3c मैत्रीकरुणा 0 304914 2341674 2341540 2026-04-01T09:06:23Z TheHighFighter2 42988 Đã lùi lại sửa đổi [[Special:Diff/2341540|2341540]] của [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|thảo luận]]) 2341674 wikitext text/x-wiki {{-san-}} {{-noun-}} '''मैत्रीकरुणा''' ([[maitrīkaruṇā]]) # (Phật giáo) [[từ bi]] {{-trans-}} # {{en}}: [[benevolence]] [[and]] [[compassion]] # {{zh}}: [[慈悲]] lseud5ezng6wljjbxwrfs2stfh5ipd9 2341675 2341674 2026-04-01T09:13:45Z TheHighFighter2 42988 2341675 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|noun}}=== {{sa-noun}} # {{nhãn|sa|Phật giáo}} Lòng [[từ bi]]. k1sgq8o8jj1eq6i1oxy4hotl99dczc9 慈悲 0 304915 2341654 2284423 2026-04-01T07:41:31Z Hiyuune 50834 2341654 wikitext text/x-wiki =={{langname|zh}}== {{zh-forms}} ==={{section|etym}}=== {{calque|zh|sa|[[मैत्री]][[करुणा]]}} ==={{section|pron}}=== {{zh-pron |m=cíbēi |c=ci4 bei1 |g='ci2 bi1 |h=pfs=chhṳ̀-pî;hrs=h:cii buiˋ |md=cṳ̀-pĭ |mn=xm,zz,tw:chû-pi/qz:chîr-pi |mn-t=ce5 bui1 |mc=y |cat=a |w=sh:6zy pe }} ==={{section|adj}}=== {{head|zh|Tính từ}} # {{lb|zh|originally|Buddhism}} [[từ bi|Từ bi]]. axfijeor595gx5bf1crnjudjz9w7nrs ज्ञान 0 305125 2341661 2341532 2026-04-01T08:08:39Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[jñāna]] thành [[ज्ञान]] (đã tắt đổi hướng) 2341532 wikitext text/x-wiki <noinclude>{{delete|từ bịa <small>[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]</small>}}</noinclude> {{-san-}} {{-noun-}} {{pn}} (ज्ञान) # (Phật giáo) trí, trí thức, kiến thức, sự nhận thức {{-trans-}} * {{en}}: [[jnana]], [[knowledge]] * {{zh}}: 若那, 智, 智慧 jrbtghs4cmzo8c96kahx5m0vswf2cst 2341665 2341661 2026-04-01T08:16:03Z TheHighFighter2 42988 2341665 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|alt}}=== {{sa-alt}} ==={{ĐM|etym}}=== {{sa-root|ज्ञा|अन|t1=[[biết]], nhận thức thấy}}. ==={{ĐM|pron}}=== {{sa-IPA}} ==={{ĐM|noun}}=== {{sa-noun|g=n}} # [[trí|Trí]], [[trí thức]], [[kiến thức]], sự [[nhận thức]], (nhất là) tri thức ở tầng bậc cao hơn (trong Phật giáo, đề cập đến trạng thái nhận thức thuần túy, vượt thoát khỏi sự áp đặt của khái niệm và cấu trúc tư duy; trong Ấn Độ giáo, đề cập đến tri thức chân thực về sự đồng nhất giữa Bản ngã và Thực tại Tối hậu). # "Sự nhận thức về bất kỳ sự vật nào" (so sánh {{mention|sa||ज्ञानतस्}} và {{mention|sa|अज्ञान}}). # [[lương tri|Lương tri]]. # = {{mention|sa||ज्ञानेन्द्रिय}}. # Tên một [[shakti]]. ===={{ĐM|decl}}==== {{sa-decl-noun-n}} ===={{ĐM|desc}}==== * {{desc|pra-mah}} ** {{desc|omr|जाण|tr=j̈āṇ}} * {{desctree|pi|ñāṇa}} * {{desc|pra}} ** {{desc|gu|જાણ}} ** {{desc|hi|जान}} ** {{desc|pa|ਜਾਣ}} * {{desc|en|jnana|lbor=1}} * {{desc|as|জ্ঞান|lbor=1}} * {{desc|bn|জ্ঞান|lbor=1}} * {{desc|gu|જ્ઞાન|lbor=1}} * {{desc|inc-hnd|-|bor=1}} ** {{desc|hi|ज्ञान}} ** {{desc|ur|گیان}} * {{desc|kn|ಜ್ಞಾನ|bor=1}} * {{desc|omr|𑘕𑘿𑘗𑘰𑘡|bor=1}} ** {{desc|mr|ज्ञान}} * {{desc|ne|ज्ञान|bor=1}} * {{desc|pa|ਗਿਆਨ|bor=1}} * {{desc|syl|ꠉꠤꠀꠘ|bor=1}} * {{desctree|bor=1|oty|𑀜𑀸𑀷𑀫𑁆}} * {{desc|te|జ్ఞానము|bor=1}} ==={{ĐM|ref}}=== * {{R:MW|426|col=1}} * {{R:CDIAL|jñāna|5281|page=291}} * {{R:sa:DCS}} gdksz8wz3iqcl71j31qsm9lo2i3781w 2341671 2341665 2026-04-01T08:49:11Z TheHighFighter2 42988 2341671 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|alt sc}}=== {{sa-alt}} ==={{ĐM|etym}}=== {{sa-root|ज्ञा|अन|t1=[[biết]], nhận thức thấy}}. ==={{ĐM|pron}}=== {{sa-IPA}} ==={{ĐM|noun}}=== {{sa-noun|g=n}} # [[trí|Trí]], [[trí thức]], [[kiến thức]], sự [[nhận thức]], (nhất là) tri thức ở tầng bậc cao hơn (trong Phật giáo, đề cập đến trạng thái nhận thức thuần túy, vượt thoát khỏi sự áp đặt của khái niệm và cấu trúc tư duy; trong Ấn Độ giáo, đề cập đến tri thức chân thực về sự đồng nhất giữa Bản ngã và Thực tại Tối hậu). # "Sự nhận thức về bất kỳ sự vật nào" (so sánh {{mention|sa||ज्ञानतस्}} và {{mention|sa|अज्ञान}}). # [[lương tri|Lương tri]]. # = {{mention|sa||ज्ञानेन्द्रिय}}. # Tên một [[shakti]]. ===={{ĐM|decl}}==== {{sa-decl-noun-n}} ===={{ĐM|desc}}==== * {{desc|pra-mah}} ** {{desc|omr|जाण|tr=j̈āṇ}} * {{desctree|pi|ñāṇa}} * {{desc|pra}} ** {{desc|gu|જાણ}} ** {{desc|hi|जान}} ** {{desc|pa|ਜਾਣ}} * {{desc|en|jnana|lbor=1}} * {{desc|as|জ্ঞান|lbor=1}} * {{desc|bn|জ্ঞান|lbor=1}} * {{desc|gu|જ્ઞાન|lbor=1}} * {{desc|inc-hnd|-|bor=1}} ** {{desc|hi|ज्ञान}} ** {{desc|ur|گیان}} * {{desc|kn|ಜ್ಞಾನ|bor=1}} * {{desc|omr|𑘕𑘿𑘗𑘰𑘡|bor=1}} ** {{desc|mr|ज्ञान}} * {{desc|ne|ज्ञान|bor=1}} * {{desc|pa|ਗਿਆਨ|bor=1}} * {{desc|syl|ꠉꠤꠀꠘ|bor=1}} * {{desctree|bor=1|oty|𑀜𑀸𑀷𑀫𑁆}} * {{desc|te|జ్ఞానము|bor=1}} ==={{ĐM|ref}}=== * {{R:MW|426|col=1}} * {{R:CDIAL|jñāna|5281|page=291}} * {{R:sa:DCS}} 2vjdksmocpxxt6rf4rmo52h8eun2j1r विद्या 0 305126 2341593 2341537 2026-03-31T17:53:49Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[vidyā]] thành [[विद्या]] (đã tắt đổi hướng) 2341537 wikitext text/x-wiki <noinclude>{{delete|từ do rối bịa ra <small>[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]</small>}}</noinclude> {{-san-}} {{-noun-}} {{pn}} (विद्या) * (Phật giáo) minh, trí tuệ, tri thức, kiến thức. {{-trans-}} * {{en}}: [[vidya]], [[science]], [[knowledge]] * {{zh}}: 明, 智慧, 知識 insofmkyfrx93n72c62szjq9zn107za 2341594 2341593 2026-03-31T18:00:44Z TheHighFighter2 42988 2341594 wikitext text/x-wiki =={{langname|sa}}== {{wp|sa:|sc=Deva}} ==={{ĐM|alt}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{sa-IPA|a=2}} ==={{ĐM|noun}}=== {{sa-noun|विद्|tr=vidyā́|g=f}} # [[trí tuệ|Trí tuệ]], [[tri thức]], [[kiến thức]]. ===={{ĐM|decl}}==== {{sa-decl-noun-f|vidyā́}} ===={{ĐM|der}}==== * {{l|sa|विद्याधर}} * {{l|sa|विद्यालय}} * {{l|sa|अविद्य}} ===={{ĐM|desc}}==== * {{desc|bn|বিদ্যা|tr=bidda}} * {{desc|hi|विद्या}} * {{desctree|bor=1|kaw|widyā}} * {{desc|pi|vijjā}} *: {{desc|th|วิชา|bor=1}} *: {{desc|lo|ວິຊາ|bor=1}} *: {{desc|km|វិជ្ជា|tr=vityie|bor=1}} * {{desc|pa|ਵਿੱਦਿਆ|lbor=1}} * {{desc|te|విద్య}} * {{desc|th|วิทยา|tr=wíttáyaa|bor=1}} * {{desc|my|ဝိဇ္ဇာ|tr=wizza|bor=1}} * {{desc|lo|ວິທະຍາ|bor=1}} * {{desc|km|វិទ្យា|tr=vityie|bor=1}} * {{desc|cjm|ꨝꨪꨖꨪ|bor=1}} * {{desc|ms|widya|lbor=1}} ==={{ĐM|further}}=== * {{R:MW|963|col=3}} * {{R:sa:DCS}} gnimhaziwt5bvc7gcwtdqr9pjvlvkxp 2341672 2341594 2026-04-01T08:50:10Z TheHighFighter2 42988 2341672 wikitext text/x-wiki =={{langname|sa}}== {{wp|sa:|sc=Deva}} ==={{ĐM|alt sc}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{sa-IPA|a=2}} ==={{ĐM|noun}}=== {{sa-noun|विद्|tr=vidyā́|g=f}} # [[trí tuệ|Trí tuệ]], [[tri thức]], [[kiến thức]]. ===={{ĐM|decl}}==== {{sa-decl-noun-f|vidyā́}} ===={{ĐM|der}}==== * {{l|sa|विद्याधर}} * {{l|sa|विद्यालय}} * {{l|sa|अविद्य}} ===={{ĐM|desc}}==== * {{desc|bn|বিদ্যা|tr=bidda}} * {{desc|hi|विद्या}} * {{desctree|bor=1|kaw|widyā}} * {{desc|pi|vijjā}} *: {{desc|th|วิชา|bor=1}} *: {{desc|lo|ວິຊາ|bor=1}} *: {{desc|km|វិជ្ជា|tr=vityie|bor=1}} * {{desc|pa|ਵਿੱਦਿਆ|lbor=1}} * {{desc|te|విద్య}} * {{desc|th|วิทยา|tr=wíttáyaa|bor=1}} * {{desc|my|ဝိဇ္ဇာ|tr=wizza|bor=1}} * {{desc|lo|ວິທະຍາ|bor=1}} * {{desc|km|វិទ្យា|tr=vityie|bor=1}} * {{desc|cjm|ꨝꨪꨖꨪ|bor=1}} * {{desc|ms|widya|lbor=1}} ==={{ĐM|further}}=== * {{R:MW|963|col=3}} * {{R:sa:DCS}} ch2acqccn87k6w90tsdzarf1zygr625 आत्मन् 0 305128 2341666 2341534 2026-04-01T08:26:27Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[ātman]] thành [[आत्मन्]] (đã tắt đổi hướng) 2341534 wikitext text/x-wiki <noinclude>{{delete|từ bịa <small>[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]</small>}}</noinclude> {{-san-}} {{-noun-}} {{pn}} (आत्मन्) * (Ấn Độ giáo, Phật giáo) cái tôi, cái ta, bản ngã. {{-trans-}} * {{en}}: atmam, attā, ego, self * {{zh}}: 我, 自我, 本我 {{-paro-}} * [[anātman]] (अनात्मन्) * anattā (𑀅𑀦𑀢𑁆𑀢𑀸) 7fc307epkwztglu1m0eeeshxusqxcr5 2341667 2341666 2026-04-01T08:34:38Z TheHighFighter2 42988 2341667 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|alt}}=== * {{alt|sa|त्मन्|tr=tmán}} ==={{ĐM|alt sc}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{sa-IPA|a=2}} ==={{ĐM|n}}=== {{sa-noun|tr=ātmán|g=m}} # [[cái tôi|Cái tôi]], [[cái ta]], [[bản ngã]]. ===={{ĐM|decl}}==== {{sa-decl-noun-m|ātmán}} ===={{ĐM|der}}==== * {{l|sa|अनात्मन्}} * {{l|sa|आत्मभाव}} * {{l|sa|महात्मन्}} e38y43j7pv1m4mwabk4tzylq9e7fl05 Śūnyatā 0 305208 2341668 2341544 2026-04-01T08:39:55Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[śūnyatā]] thành [[Śūnyatā]] (đã tắt đổi hướng) 2341544 wikitext text/x-wiki <noinclude>{{delete|từ bịa <small>[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]</small>}}</noinclude> {{-san-}} {{-pron-}} * [[Wiktionary:IPA|IPA]]: {{IPA|/ʃuːnjəˈtɑː/; /shoon-yə-TAH/}} {{-noun-}} {{pn}} ([[शून्यता]]) * Sự trống rỗng * (Phật giáo) [[Tính Không]] {{-trans-}} * {{en}}: [[Sunyata]], [[Shunyata]], [[Emptiness]] * {{zh}}: [[空性]] m9xuwiqm6wcb1mnzdd8m0xpu4ph9jo7 2341669 2341668 2026-04-01T08:41:25Z TheHighFighter2 42988 2341669 wikitext text/x-wiki {{also|sunyata}} =={{langname|en}}== ==={{ĐM|n}}=== {{en-noun}} # {{alternative spelling of|en|sunyata}}. i499bdka3mn4gloj8smjm0evny4aphu स्थविर 0 305213 2341589 2341543 2026-03-31T16:17:01Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Sthavira]] thành [[स्थविर]] (đã tắt đổi hướng) 2341543 wikitext text/x-wiki <noinclude>{{delete|SOP + từ không đủ nổi bật <small>[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]</small>}}</noinclude> {{-san-}} {{-noun-}} {{pn}} ([[स्थविर]]) # (Phật giáo) [[Thượng tọa]], [[Trưởng lão]]. {{-syn-}} * [[Thera]] {{-trans-}} * {{en}}: [[Thera]]/[[Sthavira]] * {{zh}}: [[上座]], [[長老]] {{-paro-}} * [[Upādhyāya]] 0p8cqqdk8t1ilm66tzx4g65imjdwk81 2341590 2341589 2026-03-31T16:21:49Z TheHighFighter2 42988 2341590 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|alt}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{sa-IPA|a=1}} ==={{ĐM|adj}}=== {{sa-adj|tr=sthávira}} # [[rộng|Rộng]], [[dày]]. # [[khỏe|Khỏe]], [[mạnh]] ({{sa-a|RV}}, {{sa-a|AV}}, {{sa-a|Br}}, {{sa-a|MBh}}, {{sa-a|Hariv}}). # [[già|Già]], [[cổ]], đáng [[tôn kính]] ({{sa-a|Br}} v.v.). ===={{ĐM|decl}}==== {{sa-decl-adj-mfn|sthávira|sthávirā|sthávira}} <!--Ghi chú cho biên tập viên: Theo MW, có một dạng giống cái khác là: sthávirī, nhưng không được hiển thị do giới hạn của bản mẫu--> ==={{ĐM|noun}}=== {{sa-noun|tr=sthávira|g=m}} # [[ông già|Ông già]] ({{sa-a|W}}). #: {{coordinate terms|sa|स्थविरा|t=bà già}} # {{lb|sa|Buddhism}} [[trưởng lão|Trưởng lão]] {{gloss|danh hiệu của vị [[tỳ kheo]] cao tuổi và đáng kính nhất}} ({{sa-a|MWB}} tr. 184, 255 v.v.). # {{lb|sa|in the plural}} [[tên|Tên]] một [[bộ phái]] ({{sa-a|Buddh}}). #: {{uxi|sa|^आर्य'''स्थाविर'''|(tên của một bộ phái Phật giáo cụ thể)}} ===={{ĐM|decl}}==== {{sa-decl-noun-m|sthávira}} ==={{ĐM|ref}}=== * {{R:MW|1265|col=2}} cce296hw8mmpfeqja6u8lkhhmf4a2zc 2341673 2341590 2026-04-01T08:51:53Z TheHighFighter2 42988 2341673 wikitext text/x-wiki =={{langname|sa}}== ==={{ĐM|alt sc}}=== {{sa-alt}} ==={{ĐM|pron}}=== {{sa-IPA|a=1}} ==={{ĐM|adj}}=== {{sa-adj|tr=sthávira}} # [[rộng|Rộng]], [[dày]]. # [[khỏe|Khỏe]], [[mạnh]] ({{sa-a|RV}}, {{sa-a|AV}}, {{sa-a|Br}}, {{sa-a|MBh}}, {{sa-a|Hariv}}). # [[già|Già]], [[cổ]], đáng [[tôn kính]] ({{sa-a|Br}} v.v.). ===={{ĐM|decl}}==== {{sa-decl-adj-mfn|sthávira|sthávirā|sthávira}} <!--Ghi chú cho biên tập viên: Theo MW, có một dạng giống cái khác là: sthávirī, nhưng không được hiển thị do giới hạn của bản mẫu--> ==={{ĐM|noun}}=== {{sa-noun|tr=sthávira|g=m}} # [[ông già|Ông già]] ({{sa-a|W}}). #: {{coordinate terms|sa|स्थविरा|t=bà già}} # {{lb|sa|Buddhism}} [[trưởng lão|Trưởng lão]] {{gloss|danh hiệu của vị [[tỳ kheo]] cao tuổi và đáng kính nhất}} ({{sa-a|MWB}} tr. 184, 255 v.v.). # {{lb|sa|in the plural}} [[tên|Tên]] một [[bộ phái]] ({{sa-a|Buddh}}). #: {{uxi|sa|^आर्य'''स्थाविर'''|(tên của một bộ phái Phật giáo cụ thể)}} ===={{ĐM|decl}}==== {{sa-decl-noun-m|sthávira}} ==={{ĐM|ref}}=== * {{R:MW|1265|col=2}} ohuu9zlri9l26sb93dvlotcxiulbmuq Thể loại:Mục từ tiếng Orma 14 305479 2341677 2161043 2026-04-01T11:50:14Z WhoAlone 40420 2341677 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Danh từ tiếng Orma 14 305482 2341679 2161051 2026-04-01T11:50:36Z WhoAlone 40420 2341679 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx ç'içça 0 305497 2341607 2161072 2026-04-01T01:28:46Z Hiyuune 50834 2341607 wikitext text/x-wiki =={{langname|orc}}== ==={{section|pron}}=== * {{IPA4|orc|[tʃˈit̚t̻ʃa]}} ==={{section|n}}=== {{head|orc|Danh từ}} # [[phòng|Phòng]] [[tổ chức]]. ==={{section|ref}}=== * Dale R. Hoskins (2011) ''Phonology of the Orma language''. 5872qmow3kmjy4etqwjm6ika6qw4d1x निर्वाण 0 305508 2341591 2341528 2026-03-31T16:35:46Z TheHighFighter2 42988 TheHighFighter2 đã đổi [[Nirvāṇa]] thành [[निर्वाण]] (đã tắt đổi hướng) 2341528 wikitext text/x-wiki <noinclude>{{delete|tiếng Phạn không dùng chữ Latinh làm hệ thống viết bản địa <small>[[:m:Special:MyLanguage/User:TenWhile6/XReport|XReport]]</small>}}</noinclude> =={{langname|sa}}== ==={{ĐM|n}}=== {{sa-noun}} # {{nhãn|sa|Buddhism}} Niết-bàn. sahn9m1mbk5fpr35q5gps7io1pokahi 2341592 2341591 2026-03-31T16:49:43Z TheHighFighter2 42988 2341592 wikitext text/x-wiki =={{langname|hi}}== ==={{ĐM|etym}}=== {{bor+|hi|sa|निर्वाण||thổi tắt, dập tắt}}. ==={{ĐM|adj}}=== {{hi-adj|ind=1}} # [[dập tắt|Dập tắt]], [[thổi]] tắt. ==={{ĐM|noun}}=== {{hi-noun|m}} # {{lb|hi|Buddhism}} [[niết bàn|Niết bàn]]. ===={{ĐM|decl}}==== {{hi-ndecl|<M>}} =={{langname|sa}}== {{wp|sa:+म्}} ==={{ĐM|alt}}=== {{sa-alt}} ==={{ĐM|etym}}=== {{etymon|sa|:af|निर्-<t:ra khỏi>|वान<t:đã thổi>|tree=+|text=*}} ==={{ĐM|pron}}=== {{sa-IPA|novedic=1}} ==={{ĐM|noun}}=== {{sa-noun|g=n}} {{tlb|sa|Classical}} # Sự [[thổi]] tắt, sự [[tuyệt diệt]], sự [[chấm dứt]], sự [[lặn]], sự [[tan biến]]. #: {{uxi|sa|निर्वाणं [[कृ]]|tr=nirvāṇaṃ kṛ|làm thổi tắt, dập tắt}} # {{lb|sa|Hinduism}} Sự [[tắt]] ngọn lửa [[sự sống]], cái [[chết]], sự [[giải thoát]] tối hậu khỏi vật chất để hợp nhất với Linh hồn Tối thượng. # {{lb|sa|Buddhism|Jainism}} Sự [[tịch diệt]] hoàn toàn (= {{mention|sa|शून्य}}) mọi [[ham muốn]] [[dục vọng]]. # {{lb|sa|figuratively}} [[cực lạc|Cực lạc]], trạng thái [[tĩnh tại]], [[an nhiên]] hoặc [[hạnh phúc]] cao nhất. ===={{ĐM|decl}}==== {{sa-decl-noun-n|novedic=1}} ===={{ĐM|desc}}==== * Pahar Trung: ** {{desc|kfy|निमान|t=dập tắt}} * {{desctree|pi|nibbāna}} * {{desc|pra-mah|𑀡𑀺𑀯𑁆𑀯𑀸𑀡}} ** {{desc|mr|निवाण|t1=phương pháp làm mát mắt|निवाणें|t2=sự phá hủy, tiêu diệt|निव्णें|t3=lỗ đặt nồi để nguội gần lò sưởi}} * {{desc|en|nirvana|bor=1}} * {{desc|bn|নির্বাণ|bor=1}} * {{desc|oui|𐽺𐽶𐽾𐽱𐽰𐽺|bor=1}} ** {{desctree|xng|ꡋꡞꡘ ꡓꡋ|tr=nir-wn|ts=nirvan|bor=1}} * {{desc|gu|નિર્વાણ|bor=1}} * {{desc|hi|निर्वाण|bor=1}} * {{desc|id|nirwana|bor=1}} * {{desc|kn|ನಿರ್ವಾಣ|bor=1}} * {{desc|mr|निर्वाण|bor=1}} * {{desc|ru|нирва́на|bor=1}} * {{desc|pa|ਨਿਰਵਾਣ|bor=1}} * {{desc|zh|涅槃|tr=nièpán|bor=1}} ** {{desc|ja|涅槃|tr=nehan|bor=1}} ** {{desc|ko|열반(涅槃)|bor=1}} ** {{desc|vi|niết bàn|bor=1}} * {{desc|uk|нірва́на|bor=1}} ==={{ĐM|adj}}=== {{sa-adj}} # Đã thổi tắt, đã làm tắt (ánh đèn hay ánh ánh lửa); lặn (mặt trời); đã làm [[dịu]], đã [[lắng]] xuống; đã [[thuần hóa]]; đã chết (n.đen: lửa sự sống bị dập tắt); đã biến mất. # [[chìm đắm|Chìm đắm]]. # Không thể [[di chuyển]] được. ===={{ĐM|decl}}==== {{sa-decl-adj-mfn||निर्वाणा}} ==={{ĐM|ref}}=== * Collins, Steven (2010) ''Nirvana: Concept, Imagery, Narrative''. Nhà xuất bản Đại học Cambridge, tr. 63-64. * {{R:MW|0557}} {{C|sa|Chết|Trạng thái cảm xúc}} gzvdn1j9wbsx7cqbv7jkrm70s51dxwc Thể loại:Phó từ tiếng Orma 14 305599 2341680 2161288 2026-04-01T11:50:39Z WhoAlone 40420 2341680 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx camaleóns 0 319563 2341596 2191967 2026-04-01T01:11:53Z Hiyuune 50834 2341596 wikitext text/x-wiki {{also|camaleons}} =={{langname|gl}}== ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|camaleón}} ds6cwhl9swkvmc4wmhsrview08fq734 duquesas 0 320042 2341622 2192865 2026-04-01T04:01:06Z Hiyuune 50834 2341622 wikitext text/x-wiki =={{langname|pt}}== ==={{section|pron}}=== {{pt-IPA|duquêsas}} ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{feminine plural of|pt|duque}} =={{langname|gl}}== ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|duquesa}} =={{langname|es}}== ==={{section|n}}=== {{head|es|Biến thể hình thái danh từ}} # {{plural of|es|duquesa}} 7ftf8rhvh6zmwkvsd295ux676plh7g6 chaveiros 0 320044 2341624 2192830 2026-04-01T04:02:21Z Hiyuune 50834 2341624 wikitext text/x-wiki =={{langname|pt}}== ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|chaveiro}} =={{langname|gl}}== ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|chaveiro}} 76hg828xer4slcij3x24pzgybvyuxz1 dormideiras 0 320081 2341625 2192919 2026-04-01T04:02:50Z Hiyuune 50834 2341625 wikitext text/x-wiki =={{langname|pt}}== ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|dormideira}} =={{langname|gl}}== ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|dormideira}} hrazch8o6ntw5lnui48ljyhf1joq8gw flamengos 0 320085 2341626 2192923 2026-04-01T04:04:12Z Hiyuune 50834 2341626 wikitext text/x-wiki =={{langname|pt}}== ==={{section|adj}}=== {{head|pt|Biến thể hình thái tính từ}} # {{masculine plural of|pt|flamengo}} ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|flamengo}} =={{langname|gl}}== ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|flamengo}} pjbk2xjzab4x0rkac2obshhuvz6msqc kigurumis 0 320439 2341623 2193783 2026-04-01T04:01:51Z Hiyuune 50834 2341623 wikitext text/x-wiki =={{langname|en}}== ==={{section|n}}=== {{head|en|Biến thể hình thái danh từ}} # {{plural of|en|kigurumi}} =={{langname|pt}}== ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|kigurumi}} 1s2fy9rtwqqiiuv6w99i3xzb2juk5tq californianos 0 321076 2341627 2194751 2026-04-01T04:06:29Z Hiyuune 50834 2341627 wikitext text/x-wiki =={{langname|pt}}== ==={{section|adj}}=== {{head|pt|Biến thể hình thái tính từ}} # {{adj form of|pt|californiano||m|p}} ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|californiano}} =={{langname|gl}}== ==={{section|adj}}=== {{head|gl|Biến thể hình thái tính từ}} # {{masculine plural of|gl|californiano}} ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|californiano}} =={{langname|la}}== ==={{section|pron}}=== * {{la-IPA|californiānōs}} ==={{section|adj== {{head|la|Biến thể hình thái tính từ|head=californiānōs}} # {{inflection of|la|californiānus||acc|m|p}} =={{langname|es}}== ==={{section|adj}}=== {{head|es|Biến thể hình thái tính từ}} # {{adj form of|es|californiano||m|p}} ==={{section|n}}=== {{head|es|Biến thể hình thái danh từ}} # {{plural of|es|californiano}} pa720mt7yl1h9zk457a2dtwix2n9z36 2341628 2341627 2026-04-01T04:07:33Z Hiyuune 50834 /* {{langname|la}} */ 2341628 wikitext text/x-wiki =={{langname|pt}}== ==={{section|adj}}=== {{head|pt|Biến thể hình thái tính từ}} # {{adj form of|pt|californiano||m|p}} ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|californiano}} =={{langname|gl}}== ==={{section|adj}}=== {{head|gl|Biến thể hình thái tính từ}} # {{masculine plural of|gl|californiano}} ==={{section|n}}=== {{head|gl|Biến thể hình thái danh từ}} # {{plural of|gl|californiano}} =={{langname|la}}== ==={{section|pron}}=== * {{la-IPA|californiānōs}} ==={{section|adj}}=== {{head|la|Biến thể hình thái tính từ|head=californiānōs}} # {{inflection of|la|californiānus||acc|m|p}} =={{langname|es}}== ==={{section|adj}}=== {{head|es|Biến thể hình thái tính từ}} # {{adj form of|es|californiano||m|p}} ==={{section|n}}=== {{head|es|Biến thể hình thái danh từ}} # {{plural of|es|californiano}} 6hxkteohjzgcrily01gi8zmkf3ds0k7 arawa 0 321093 2341670 2194770 2026-04-01T08:45:31Z Hiyuune 50834 2341670 wikitext text/x-wiki {{also|Arawá}} =={{langname|msk}}== ==={{section|n|}}=== {{head|msk|Danh từ}} # [[tất lưới|Tất lưới]]. =={{langname|ja}}== ==={{section|rom}}=== {{ja-romaji}} # {{ja-romanization of|あらわ}} =={{langname|ssn}}== ==={{section|n}}=== {{head|ssn|Danh từ}} # [[lưỡi|Lưỡi]]. ==={{section|ref}}=== * [https://asjp.clld.org/languages/WAATA Danh sách từ tiếng Waata] tại Cơ sở Dữ liệu ASJP kfk8rion5jsyrnsro1q3y5tej0ixswr bengalas 0 321331 2341629 2195104 2026-04-01T04:08:01Z Hiyuune 50834 2341629 wikitext text/x-wiki =={{langname|pt}}== ==={{section|n}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|bengala}} =={{langname|es}}== ==={{section|n}}=== {{head|es|Biến thể hình thái danh từ}} # {{plural of|es|bengala}} h56dp7fysac4igzg4zzhvqply1cxvy5 horticulturists 0 321639 2341633 2195703 2026-04-01T04:13:06Z Hiyuune 50834 2341633 wikitext text/x-wiki =={{langname|en}}== ==={{section|pron}}=== * {{audio|en|LL-Q1860 (eng)-Wodencafe-horticulturists.wav|a=US}} ==={{section|n}}=== {{head|en|Biến thể hình thái danh từ}} # {{plural of|en|horticulturist}} ge4snyi7l1nfy7yf2t5dhns437koov4 Thành viên:Hiyuune/test7 2 357623 2341656 2296791 2026-04-01T07:51:57Z Hiyuune 50834 Thay cả nội dung bằng “{{#invoke:mr-verb|show}}<!-- --><noinclude>{{documentation}}</noinclude>” 2341656 wikitext text/x-wiki {{#invoke:mr-verb|show}}<!-- --><noinclude>{{documentation}}</noinclude> nm39w3493ws43y2u3n9mmfoyn8w0kqa 2341658 2341656 2026-04-01T07:54:44Z Hiyuune 50834 2341658 wikitext text/x-wiki {{#invoke:mr-verb|show|page=आणणे}}<!-- --><noinclude>{{documentation}}</noinclude> 22xq2pfrwkjzbwlvsbglz811jmonv1i 2341662 2341658 2026-04-01T08:08:42Z Hiyuune 50834 Đã lùi lại sửa đổi của [[Special:Contributions/Hiyuune|Hiyuune]] ([[User talk:Hiyuune|thảo luận]]) quay về phiên bản cuối của [[User:J ansari|J ansari]] 2263696 wikitext text/x-wiki == Bản mẫu cấm == === Cấm thông thường === <div class="user-block" style="background-color: var(--background-color-warning-subtle, #f1f4fd); border: 2px solid var(--border-color-warning, #36c); color: var(--color-base, #202122); padding:0.5em; margin:0.5em auto; min-height: 40px"> {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes|[[File:OOjs_UI_icon_block-destructive.svg|40px|left|alt=Stop icon]]|[[File:Timeblock.svg|40px|left]]}} Bạn đã bị '''[[Wiktionary:Quy định cấm thành viên|cấm]]''' {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes|sửa đổi '''vô hạn'''|{{{{{|safesubst:}}}#if:{{{time|{{{thời gian|}}}}}}|không được sửa đổi trong '''{{{time|{{{thời gian|một khoảng thời gian}}}}}}'''|tạm thời không được sửa đổi}}}} vì {{{{{|safesubst:}}}#if:{{{reason|{{{lý do|}}}}}}|{{{reason|{{{lý do}}}}}}|lý do nào đó}}. {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes||Khi thời hạn cấm đã hết, hoan nghênh bạn tiếp tục đóng góp mang tính xây dựng.}} Nếu bạn tin rằng lần cấm này là không công bằng, bạn có thể xem qua [[Wiktionary:Chống lại quyết định cấm|hướng dẫn chống lại quyết định cấm]], rồi sau đó thêm văn bản sau vào cuối trang thảo luận của mình: <code><nowiki>{{Bỏ cấm|1=lý do của bạn ~~~~}}</nowiki></code> </div> {{{{{|safesubst:}}}#if:{{{ký|}}}|<includeonly>~~</includeonly>~~}} === Cấm (bao gồm khả năng sửa trang thảo luận) === <div class="user-block" style="background-color: var(--background-color-warning-subtle, #f1f4fd); border: 2px solid var(--border-color-warning, #36c); color: var(--color-base, #202122); padding:0.5em; margin:0.5em auto; min-height: 40px"> {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes|[[File:OOjs_UI_icon_block-destructive.svg|40px|left|alt=Stop icon]]|[[File:Timeblock.svg|40px|left]]}} Bạn đã bị '''[[Wiktionary:Quy định cấm thành viên|cấm]]''' {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes|sửa đổi '''vô hạn'''|{{{{{|safesubst:}}}#if:{{{time|{{{thời gian|}}}}}}|không được sửa đổi trong '''{{{time|{{{thời gian|một khoảng thời gian}}}}}}'''|tạm thời không được sửa đổi}}}} vì {{{{{|safesubst:}}}#if:{{{reason|{{{lý do|}}}}}}|{{{reason|{{{lý do}}}}}}|lý do nào đó}}. {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes||Khi thời hạn cấm đã hết, hoan nghênh bạn tiếp tục đóng góp mang tính xây dựng.}} Ngoài ra, bạn cũng đã bị tước quyền sửa đổi trang thảo luận của mình. </div> {{{{{|safesubst:}}}#if:{{{ký|}}}|<includeonly>~~</includeonly>~~}} ===Cấm vì vi phạm bản quyền=== <div class="user-block" style="background-color: var(--background-color-warning-subtle, #f1f4fd); border: 2px solid var(--border-color-warning, #36c); color: var(--color-base, #202122); padding:0.5em; margin:0.5em auto; min-height: 40px"> {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes|[[File:OOjs_UI_icon_block-destructive.svg|40px|left|alt=Stop icon]]|[[File:Timeblock.svg|40px|left]]}} Bạn đã bị '''[[Wiktionary:Quy định cấm thành viên|cấm]]''' {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes|sửa đổi '''vô hạn'''|{{{{{|safesubst:}}}#if:{{{time|{{{thời gian|}}}}}}|không được sửa đổi trong '''{{{time|{{{thời gian|một khoảng thời gian}}}}}}'''|tạm thời không được sửa đổi}}}} vì vi phạm quy định về bản quyền bằng cách sao chép nội dung vào Wiktionary từ một nguồn khác mà không có bằng chứng về việc được cấp phép sử dụng. Hãy nhân cơ hội này để chắc chắn rằng bạn đã hiểu rõ quy định về quyền tác giả và quy định về cách sử dụng nội dung không tự do của chúng tôi. {{{{{|safesubst:}}}#ifeq:{{{indef|}}}|yes||Khi thời hạn cấm đã hết, hoan nghênh bạn tiếp tục đóng góp mang tính xây dựng.}} Nếu bạn tin rằng lần cấm này là không công bằng, bạn có thể xem qua [[Wiktionary:Chống lại quyết định cấm|hướng dẫn chống lại quyết định cấm]], rồi sau đó thêm văn bản sau vào cuối trang thảo luận của mình: <code><nowiki>{{Bỏ cấm|1=lý do của bạn ~~~~}}</nowiki></code> </div> qqrcgv8ucln42k4j4oxvai9mvd8wvjm Bản mẫu:mr-noun 10 359218 2341655 2299940 2026-04-01T07:43:03Z Hiyuune 50834 2341655 wikitext text/x-wiki {{head|mr|Danh từ|sccat=1|sort={{{sort|}}}|head={{{head|}}}|tr={{{tr|}}} |g={{{g|?}}}|g2={{{g2|}}}|g3={{{g3|}}} |{{#ifeq:{{{p|{{{pl|}}}}}}|-|chỉ có số ít}}| |{{#switch:{{{p|{{{pl|}}}}}}|-|=|#default=số nhiều}}|{{{pl|{{{p|}}}}}} |{{#if:{{{m|}}}|giống đực tương đương}}|{{{m}}} |{{#if:{{{f|}}}|giống cái tương đương}}|{{{f}}} |{{#if:{{{n|}}}|giống trung tương đương}}|{{{n}}} |cat2={{#if:{{{m|}}}{{{f|}}}{{{n|}}}|Danh từ với giống khác tương đương}} }}<noinclude>{{tài liệu}}{{tcat|hw}}</noinclude> 2m974zw5zo63dz309dwbzeqpg9nm24i 0 390970 2341583 2026-03-31T15:42:36Z Hiyuune 50834 + mul 2341583 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=64|rad=手|as=02|sn=5|four=57027|canj=QNHS|ids=⿰扌乃}} ===={{section|ref}}==== {{Han ref|kx=0417.130|dkj=11782|dj=0764.010|hdz=31828.010|uh=6254}} cv5ly61mokgl4a9w1ft0psoe8jrtyu6 𫭅 0 390971 2341584 2026-03-31T15:52:52Z Hiyuune 50834 + mul 2341584 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=31|rad=囗|as=5|sn=|four=|canj=|ids=⿴囗払}} ===={{section|han}}==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=2BB45}} pem11mgx5euto9besimskbtm6ecodr0 2341586 2341584 2026-03-31T15:53:08Z Hiyuune 50834 /* Đa ngữ */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2341586 wikitext text/x-wiki {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=31|rad=囗|as=5|sn=|four=|canj=|ids=⿴囗払}} ===={{section|ref}}==== * {{Han ref|kx=|dkj=|dj=|hdz=|uh=2BB45}} jvwg05o11ivoz36d8s5rg9xjpachnhn 0 390972 2341585 2026-03-31T15:52:58Z Hiyuune 50834 + mul 2341585 wikitext text/x-wiki {{also|拂}} {{character info}} =={{langname|mul}}== ==={{section|han}}=== {{Han char|rn=64|rad=手|as=02|sn=5|four=|canj=QI,XXQI|ids=⿰扌厶}} ===={{section|drv}}==== * {{l|mul|[[𫭅]]}} ===={{section|ref}}==== * {{Han ref|kx=0417.131|dkj=11784|dj=0764.040|hdz=31828.020|uh=6255}} nb39t0b8cwjcswozofba6bvahrrmajd swellheaded 0 390973 2341588 2026-03-31T16:12:57Z Hiyuune 50834 + en 2341588 wikitext text/x-wiki {{also|swell-headed}} =={{langname|en}}== ==={{section|adj}}=== {{en-adj}} # {{alternative form of|en|swell-headed}}. hn5hkp05705unr6sx60knpuzgmdr27e Thể loại:clm:Lớp Chim 14 390974 2341599 2026-04-01T01:13:12Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2341599 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:clm:Phân ngành Có xương sống 14 390975 2341600 2026-04-01T01:13:51Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2341600 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:clm:Ngành Dây sống 14 390976 2341601 2026-04-01T01:14:08Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2341601 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:clm:Động vật 14 390977 2341602 2026-04-01T01:14:31Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2341602 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:clm:Danh sách chủ đề thuộc nhóm tập hợp 14 390978 2341603 2026-04-01T01:14:54Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2341603 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:clm:Tất cả chủ đề 14 390979 2341604 2026-04-01T01:15:34Z Hiyuune 50834 Trang mới: “{{auto cat}}” 2341604 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Tiếng Klallam 14 390980 2341605 2026-04-01T01:21:08Z Hiyuune 50834 Trang mới: “{{auto cat|Hoa Kỳ}}” 2341605 wikitext text/x-wiki {{auto cat|Hoa Kỳ}} s3wuj92v3371lxc2qrs5r0bbzwjnqzj telecommutes 0 390981 2341610 2026-04-01T01:39:02Z Hiyuune 50834 + en 2341610 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|telecommute||s-verb-form}} og1spbbgz603c3yrpj0ehz0yad5gysp telecommuting 0 390982 2341611 2026-04-01T01:40:24Z Hiyuune 50834 + en 2341611 wikitext text/x-wiki =={{langname|en}}== ==={{section|etym}}=== Từ {{prefix|en|tele|commuting}}. ==={{section|pron}}=== * {{IPA4|en|/ˈtɛləkəˌmjutɪŋ/|a=US}} * {{audio|en|LL-Q1860 (eng)-Knabrupt-telecommuting.wav|a=General American}} ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|telecommute||ing-form}} ===={{section|rel}}==== * {{l|en|telecommute}} * {{l|en|telecommuter}} 7j9q6xoegxp36ajxenu7y2msej2mgoe telecommuted 0 390983 2341612 2026-04-01T01:40:58Z Hiyuune 50834 + en 2341612 wikitext text/x-wiki =={{langname|en}}== ==={{section|v}}=== {{head|en|Biến thể hình thái động từ}} # {{infl of|en|telecommute||ed-form}} fdhkg4b7auwtg3btlys4r382wuqqh73 sutiã 0 390985 2341616 2026-04-01T03:57:25Z Hiyuune 50834 Trang mới: “{{also|sutia}} =={{langname|pt}}== {{wp|pt:}} ==={{section|alt}}=== * {{alt|pt|soutien||chính tả chưa điểu chỉnh}} ==={{section|etym}}=== {{bor+|pt|fr|soutien}}, {{mention|fr|soutien-gorge}}. So sánh với {{cog|el|σουτιέν}} và {{cog|tr|sütyen}}. ==={{section|pron]}=== {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-MedK1-sutiã.wav|a=Caipira}} * {{rhymes|pt|ɐ̃|s=3}} * {{hyphenation|pt|su|ti|ã}} ==={{section|n}}=== {{pt-noun|m}} # áo ngực|Áo ngực…” 2341616 wikitext text/x-wiki {{also|sutia}} =={{langname|pt}}== {{wp|pt:}} ==={{section|alt}}=== * {{alt|pt|soutien||chính tả chưa điểu chỉnh}} ==={{section|etym}}=== {{bor+|pt|fr|soutien}}, {{mention|fr|soutien-gorge}}. So sánh với {{cog|el|σουτιέν}} và {{cog|tr|sütyen}}. ==={{section|pron]}=== {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-MedK1-sutiã.wav|a=Caipira}} * {{rhymes|pt|ɐ̃|s=3}} * {{hyphenation|pt|su|ti|ã}} ==={{section|n}}=== {{pt-noun|m}} # [[áo ngực|Áo ngực]]; [[áo lót]]. ===={{section|syn}}==== {{dialect synonyms|pt}} ==={{section|further}}=== * {{R:pt:Aulete}} * {{R:pt:Infopédia}} * {{R:pt:Michaelis}} * {{R:pt:Priberam}} {{C|pt|Trang phục}} cekzqkqpsibxq1lnfz3sjprlhtk14v3 2341617 2341616 2026-04-01T03:57:36Z Hiyuune 50834 /* Tiếng Bồ Đào Nha */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2341617 wikitext text/x-wiki {{also|sutia}} =={{langname|pt}}== {{wp|pt:}} ==={{section|alt}}=== * {{alt|pt|soutien||chính tả chưa điểu chỉnh}} ==={{section|etym}}=== {{bor+|pt|fr|soutien}}, {{mention|fr|soutien-gorge}}. So sánh với {{cog|el|σουτιέν}} và {{cog|tr|sütyen}}. ==={{section|pron}}=== {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-MedK1-sutiã.wav|a=Caipira}} * {{rhymes|pt|ɐ̃|s=3}} * {{hyphenation|pt|su|ti|ã}} ==={{section|n}}=== {{pt-noun|m}} # [[áo ngực|Áo ngực]]; [[áo lót]]. ===={{section|syn}}==== {{dialect synonyms|pt}} ==={{section|further}}=== * {{R:pt:Aulete}} * {{R:pt:Infopédia}} * {{R:pt:Michaelis}} * {{R:pt:Priberam}} {{C|pt|Trang phục}} 64l7hbhl68nr2ltyi8zvu4396gkg7a3 2341618 2341617 2026-04-01T03:57:44Z Hiyuune 50834 /* Cách viết khác */ (sử dụng [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]) 2341618 wikitext text/x-wiki {{also|sutia}} =={{langname|pt}}== {{wp|pt:}} ==={{section|alt}}=== * {{alt|pt|soutien||chính tả chưa điều chỉnh}} ==={{section|etym}}=== {{bor+|pt|fr|soutien}}, {{mention|fr|soutien-gorge}}. So sánh với {{cog|el|σουτιέν}} và {{cog|tr|sütyen}}. ==={{section|pron}}=== {{pt-IPA}} * {{audio|pt|LL-Q5146 (por)-MedK1-sutiã.wav|a=Caipira}} * {{rhymes|pt|ɐ̃|s=3}} * {{hyphenation|pt|su|ti|ã}} ==={{section|n}}=== {{pt-noun|m}} # [[áo ngực|Áo ngực]]; [[áo lót]]. ===={{section|syn}}==== {{dialect synonyms|pt}} ==={{section|further}}=== * {{R:pt:Aulete}} * {{R:pt:Infopédia}} * {{R:pt:Michaelis}} * {{R:pt:Priberam}} {{C|pt|Trang phục}} nwo8u2h46n46bdashe6ruz0knmmzajr corpete 0 390986 2341619 2026-04-01T03:58:51Z Hiyuune 50834 + pt 2341619 wikitext text/x-wiki =={{langname|pt}}== ==={{section|pron}}=== {{pt-IPA|corpête}} * {{hyphenation|pt|cor|pe|te}} ==={{section|n}}=== {{pt-noun|m}} # [[áo lót|Áo lót]]. ==={{section|further}}=== * {{R:pt:Aulete}} * {{R:pt:Priberam}} {{C|pt|Trang phục}} qo4ik12b421q8yzifa89dgkfzaixuug corpetes 0 390987 2341620 2026-04-01T03:59:26Z Hiyuune 50834 + pt 2341620 wikitext text/x-wiki =={{langname|pt}}== ==={{section|noun}}=== {{head|pt|Biến thể hình thái danh từ}} # {{plural of|pt|corpete}} hbjmq4zdvtirl2041lrezixvjzmnerv ზამთარი 0 390988 2341645 2026-04-01T05:25:22Z Kelly zhrm 58416 Trang mới: “=={{langname|ka}}== ==={{đm|etym}}=== Từ {{inh|ka|oge|ზამთარი}}, từ {{inh|ka|ccs-gzn-pro|*zamtar-|*za-mt-ar-}}. ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|n}}=== {{ka-noun}} # [[mùa đông|Mùa đông]]. ===={{đm|decl}}==== {{ka-decl-noun|ზამთრ|-}} ===={{đm|drv}}==== * {{l|ka|საზამთრო}} ==={{đm|see}}=== {{bảng:mùa/ka}} =={{langname|oge}}== ==={{đm|etym}}=== Từ {{inh|oge|ccs-gzn-pro|*zamtar-|*za-…” 2341645 wikitext text/x-wiki =={{langname|ka}}== ==={{đm|etym}}=== Từ {{inh|ka|oge|ზამთარი}}, từ {{inh|ka|ccs-gzn-pro|*zamtar-|*za-mt-ar-}}. ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|n}}=== {{ka-noun}} # [[mùa đông|Mùa đông]]. ===={{đm|decl}}==== {{ka-decl-noun|ზამთრ|-}} ===={{đm|drv}}==== * {{l|ka|საზამთრო}} ==={{đm|see}}=== {{bảng:mùa/ka}} =={{langname|oge}}== ==={{đm|etym}}=== Từ {{inh|oge|ccs-gzn-pro|*zamtar-|*za-mt-ar-}}. ==={{đm|n}}=== {{head|oge|Danh từ}} # [[mùa đông|Mùa đông]]. ===={{đm|desc}}==== * {{desc|ka|ზამთარი}} ==={{đm|further}}=== * {{R:oge:Abuladze|page=162a}} fyq4vpw2xia74icup0v2f3leudhfrax Bản mẫu:bảng:mùa/ka 10 390989 2341646 2026-04-01T05:26:46Z Kelly zhrm 58416 Trang mới: “{{bảng:mùa|lang=ka |seasons={{l-self|ka|წელიწადის დროები}} |spring={{l-self|ka|გაზაფხული||mùa xuân}} |summer={{l-self|ka|ზაფხული||mùa hè, hạ}} |autumn={{l-self|ka|შემოდგომა||mùa thu}} |winter={{l-self|ka|ზამთარი||mùa đông}} }}<noinclude>{{table doc}}</noinclude> {{C|ka|Mùa}}” 2341646 wikitext text/x-wiki {{bảng:mùa|lang=ka |seasons={{l-self|ka|წელიწადის დროები}} |spring={{l-self|ka|გაზაფხული||mùa xuân}} |summer={{l-self|ka|ზაფხული||mùa hè, hạ}} |autumn={{l-self|ka|შემოდგომა||mùa thu}} |winter={{l-self|ka|ზამთარი||mùa đông}} }}<noinclude>{{table doc}}</noinclude> {{C|ka|Mùa}} hamlp70hxqql6aj7e7jbd2kwa91z4d8 შემოდგომა 0 390990 2341647 2026-04-01T05:29:03Z Kelly zhrm 58416 Trang mới: “=={{langname|ka}}== ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|etym}} 1=== Từ {{prefix|ka|შემო|დგომა}}. ===={{đm|n}}==== {{ka-noun}} # [[mùa thu|Mùa thu]]. ====={{đm|drv}}===== {{col|ka |საშემოდგომო }} ==={{đm|see}}=== {{bảng:mùa/ka}} ==={{đm|etym}} 2=== ===={{đm|n}}==== {{ka-verbal noun}} # {{verbal noun of|ka|შემოდგება}} # {{verbal noun of|ka|შემოადგება}} # {…” 2341647 wikitext text/x-wiki =={{langname|ka}}== ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|etym}} 1=== Từ {{prefix|ka|შემო|დგომა}}. ===={{đm|n}}==== {{ka-noun}} # [[mùa thu|Mùa thu]]. ====={{đm|drv}}===== {{col|ka |საშემოდგომო }} ==={{đm|see}}=== {{bảng:mùa/ka}} ==={{đm|etym}} 2=== ===={{đm|n}}==== {{ka-verbal noun}} # {{verbal noun of|ka|შემოდგება}} # {{verbal noun of|ka|შემოადგება}} # {{verbal noun of|ka|შემოუდგება}} 183d70dkvq8pcxvj0w5ugrzso5wgf1g ზაფხული 0 390991 2341648 2026-04-01T05:31:24Z Kelly zhrm 58416 Trang mới: “=={{langname|ka}}== {{wp|ka:}} ==={{đm|etym}}=== Từ {{inh|ka|oge|ზაფხული}}, từ {{inh|ka|ccs-gzn-pro|*zapxul-|*za-px-ul-}}. ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|n}}=== {{ka-noun|-}} # [[mùa hè|Mùa hè]]. ===={{đm|decl}}==== {{ka-decl-noun|-}} ===={{đm|drv}}==== * {{l|ka|ზაფხულის მზებუდობა}} * {{l|ka|ზაფხულის ნაბუნიობა}} * {{l|ka|შუა ზაფხულ…” 2341648 wikitext text/x-wiki =={{langname|ka}}== {{wp|ka:}} ==={{đm|etym}}=== Từ {{inh|ka|oge|ზაფხული}}, từ {{inh|ka|ccs-gzn-pro|*zapxul-|*za-px-ul-}}. ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|n}}=== {{ka-noun|-}} # [[mùa hè|Mùa hè]]. ===={{đm|decl}}==== {{ka-decl-noun|-}} ===={{đm|drv}}==== * {{l|ka|ზაფხულის მზებუდობა}} * {{l|ka|ზაფხულის ნაბუნიობა}} * {{l|ka|შუა ზაფხული}} * {{l|ka|შუაგული ზაფხული}} * {{l|ka|გაგანია ზაფხული}} ==={{đm|see}}=== {{bảng:mùa/ka}} =={{langname|oge}}== ==={{đm|etym}}=== Từ {{inh|oge|ccs-gzn-pro|*zapxul-|*za-px-ul-}}. ==={{đm|n}}=== {{head|oge|Danh từ}} # [[mùa hè|Mùa hè]]. ===={{đm|desc}}==== * {{desc|ka|ზაფხული}} ==={{đm|further}}=== * {{R:oge:Abuladze|page=162b}} 8pv63qxyhzdibwdy6f9x6bgiwp3dmyc გაზაფხული 0 390992 2341649 2026-04-01T05:34:00Z Kelly zhrm 58416 Trang mới: “=={{langname|ka}}== ==={{đm|etym}}=== Từ {{inh|ka|oge|გაზაფხული}}. Liên quan đến {{mention|ka|ზაფხული}}. ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|n}}=== {{ka-noun|-}} # [[mùa xuân|Mùa xuân]]. ===={{đm|drv}}==== * {{l|ka|გაზაფხულის პირი}} ===={{đm|desc}}==== * {{desc|bbl|გაზაფხუჲლა|g=cjj|bor=1}} * {{desc|xmf|გაზარხული|bor=1}} ==={{đm|see}}=…” 2341649 wikitext text/x-wiki =={{langname|ka}}== ==={{đm|etym}}=== Từ {{inh|ka|oge|გაზაფხული}}. Liên quan đến {{mention|ka|ზაფხული}}. ==={{đm|pron}}=== * {{ka-IPA}} * {{ka-hyphen}} ==={{đm|n}}=== {{ka-noun|-}} # [[mùa xuân|Mùa xuân]]. ===={{đm|drv}}==== * {{l|ka|გაზაფხულის პირი}} ===={{đm|desc}}==== * {{desc|bbl|გაზაფხუჲლა|g=cjj|bor=1}} * {{desc|xmf|გაზარხული|bor=1}} ==={{đm|see}}=== {{bảng:mùa/ka}} qqghtk8l8twm8e8cpme3b4urlj3wika Thể loại:Từ kế thừa từ tiếng Gruzia cổ tiếng Gruzia 14 390993 2341650 2026-04-01T05:34:25Z Kelly zhrm 58416 Trang mới: “{{auto cat}}” 2341650 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Mô đun:mr-common 828 390994 2341657 2026-04-01T07:53:21Z Hiyuune 50834 Trang mới: “local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] local m_links = require("Module:links") local iut = require("Module:inflection utilities") local lang = require("Module:languages").getByCode("mr") local current_title = mw.title.getCurrentTitle() local PAGENAME = current_title.text local u = mw.ustring.char local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsubn = mw.ustring.gsub local unpack = unpack or tabl…” 2341657 Scribunto text/plain local export = {} --[=[ Authorship: Ben Wing <benwing2> ]=] local m_links = require("Module:links") local iut = require("Module:inflection utilities") local lang = require("Module:languages").getByCode("mr") local current_title = mw.title.getCurrentTitle() local PAGENAME = current_title.text local u = mw.ustring.char local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsubn = mw.ustring.gsub local unpack = unpack or table.unpack -- Lua 5.2 compatibility local usub = mw.ustring.sub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- vowel diacritics; don't display nicely on their own local AA = u(0x093e) local AI = u(0x0948) local AU = u(0x094c) local E = u(0x0947) local I = u(0x093f) local II = u(0x0940) local O = u(0x094b) local U = u(0x0941) local UU = u(0x0942) local R = u(0x0943) local VIRAMA = u(0x094d) local TILDE = u(0x0303) export.diacritic_to_independent = { [AA] = "आ", [I] = "इ", [II] = "ई", [U] = "उ", [UU] = "ऊ", [R] = "ऋ", [E] = "ए", [AI] = "ऐ", [O] = "ओ", [AU] = "औ", } local diacritic_list = {} local independent_list = {} for dia, ind in pairs(export.diacritic_to_independent) do table.insert(independent_list, ind) table.insert(diacritic_list, dia) end export.diacritics = table.concat(diacritic_list) export.independents = table.concat(independent_list) .. "अ" export.vowels = export.diacritics .. export.independents export.transliterated_diacritics = "aāãeẽiīĩoõuūũṛ" .. TILDE -- variant codes export.VAR1 = u(0xFFF0) export.VAR2 = u(0xFFF1) export.VAR3 = u(0xFFF2) export.VAR4 = u(0xFFF3) export.VAR5 = u(0xFFF4) export.VAR6 = u(0xFFF5) export.var_code_c = "[" .. export.VAR1 .. export.VAR2 .. export.VAR3 .. export.VAR4 .. export.VAR5 .. export.VAR6 .. "]" export.not_var_code_c = "[^" .. export.VAR1 .. export.VAR2 .. export.VAR3 .. export.VAR4 .. export.VAR5 .. export.VAR6 .. "]" export.index_to_variant_code = { [1] = export.VAR1, [2] = export.VAR2, [3] = export.VAR3, [4] = export.VAR4, [5] = export.VAR5, [6] = export.VAR6, } function export.split_term_respelling(term) if rfind(term, "//") then local split = rsplit(term, "//") if #split ~= 2 then error("Term with respelling should have only one // in it: " .. term) end return unpack(split) else return term, nil end end function export.transliterate_respelling(phon) if not phon then return nil end local hindi_range = "[ऀ-ॿ*]" -- 0x0900 to 0x097f; include *, which is a translit signal if rfind(phon, "^%-?" .. hindi_range) then return rsub((lang:transliterate(phon)), "%.", "") end return phon -- already transliterated end function export.add_form(base, stem, translit_stem, slot, ending, footnotes, link_words, double_word) if not ending then return end local function combine_stem_ending(stem, ending) local result if ending == "" then result = stem else if rfind(stem, VIRAMA .. "$") and rfind(base.lemma, VIRAMA .. "$") then stem = rsub(stem, VIRAMA .. "$", "") end if stem == "" or rfind(stem, "[" .. export.vowels .. "]$") then -- A diacritic at the beginning of the ending should be converted to its independent form -- if the stem does not end in a consonant. if rfind(ending, "^[" .. export.diacritics .. "]") then local ending_first = usub(ending, 1, 1) ending = (export.diacritic_to_independent[ending_first] or ending_first) .. usub(ending, 2) -- Diacritic e goes above the line and requires anusvara, but independent e does not -- go above the line and prefers chandrabindu in endings. ending = rsub(ending, "एं", "एँ") end end -- Don't convert independent letters to diacritics after consonants because of cases like मई -- where the independent letter belongs after the consonant. result = stem .. ending end if link_words then -- Add links around the words. result = "[[" .. rsub(result, " ", "]] [[") .. "]]" end if double_word then -- hack to support the progressive form of verbs, which is e.g. करते-करते return result .. "-" .. result else return result end end local function combine_stem_ending_tr(stem, ending) local result if ending == "" then result = stem else -- When adding a non-null ending, remove final '-a' from the stem, but only -- if the transliterated lemma also ended in '-a'. This way, a noun like -- पुनश्च transliterated 'punaśca' "postscript" gets oblique plural transliterated -- 'punaścõ' with dropped '-a', but मई transliterated 'maī' "May" with -- transliterated stem 'ma' and ending singular ending '-ī' doesn't get the -- '-a' dropped. A third case we need to handle correctly is इंटरव्यू "interview"; -- if we truncate the final ू '-ū' and then transliterate, we get 'iṇṭarvya' -- with extra '-a' that may appear in the transliteration if we're not careful. -- -- HACK! Handle प्रातः correctly by checking specially for lemma_translit ending -- in -a or -aḥ and ending starting with a vowel. The proper way to do this -- correctly that handles all of the above cases requires access to the original -- (Devanagari) ending, and checks to see if the stem ends in '-a' and the ending -- begins with a Devanagari diacritic; in this case, it's correct to elide the '-a'. if base.lemma_translit and rfind(stem, "a$") and rfind(base.lemma_translit, "aḥ?$") and rfind(ending, "^[" .. export.transliterated_diacritics .. "]") then stem = rsub(stem, "a$", "") end result = stem .. ending end if double_word then -- hack to support the progressive form of verbs, which is e.g. करते-करते return result .. "-" .. result else return result end end footnotes = iut.combine_footnotes(base.footnotes, footnotes) local ending_obj = iut.combine_form_and_footnotes(ending, footnotes) if translit_stem then stem = {form = stem, translit = translit_stem} end iut.add_forms(base.forms, slot, stem, ending_obj, combine_stem_ending, lang, combine_stem_ending_tr) end function export.strip_ending_from_stem(stem, translit_stem, ending) local new_stem = rmatch(stem, "^(.*)" .. ending .. "$") if not new_stem then error("Lỗi nội bộ: Từ hoặc thân từ " .. stem .. " nên kết thúc bằng " .. ending) end local new_translit_stem if translit_stem then local ending_translit = (lang:transliterate(ending)) new_translit_stem = rmatch(translit_stem, "^(.*)" .. ending_translit .. "$") if not new_translit_stem then error("Unable to strip ending " .. ending .. " (transliterated " .. ending_translit .. ") from transliteration " .. translit_stem) end end return new_stem, new_translit_stem end function export.strip_ending(base, ending) return export.strip_ending_from_stem(base.lemma, base.lemma_translit, ending) end -- Normalize all lemmas, splitting out phonetic respellings and substituting -- the pagename for blank lemmas. Set `lemma_translit` to the transliteration of the -- respelling, or (if `always_transliterate` is given) to the transliteration of the -- lemma. `always_transliterate` should be specified for nouns and adjectives, where the -- lemma transliteration should be carried over to all remaining forms (hence since अंकल -- is transliterated 'aṅkal', the oblique plural अंकलों should be 'aṅkalõ' not #'aṅklõ', -- the default transliteration). But it should not be specified for verbs, where this -- carry-over doesn't apply: even though उगालना has transliteration 'ugalnā', the -- perfective participle उगला has default transliteration 'uglā' not the carry-over -- transliteration #'ugalā'. function export.normalize_all_lemmas(alternant_multiword_spec, always_transliterate) iut.map_word_specs(alternant_multiword_spec, function(base) base.lemma, base.phon_lemma = export.split_term_respelling(base.lemma) if base.lemma == "" then base.lemma = PAGENAME end base.orig_lemma = base.lemma base.orig_lemma_no_links = m_links.remove_links(base.lemma) base.lemma = base.orig_lemma_no_links if base.phon_lemma then base.lemma_translit = export.transliterate_respelling(base.phon_lemma) elseif always_transliterate then base.lemma_translit = (lang:transliterate(base.lemma)) end end) end --[=[ Remove redundant translit. We need to do all declension of nouns and adjectives using manual translit because declined forms of nouns like अचकन "jacket" and कालाधन "black money" may need manual translit, even though the base form itself doesn't need manual translit. For example, अचकन has default translit ''ackan'', which is correct, but the oblique plural अचकनों has default translit ''acaknõ'', which is incorrect (correct is ''ackanõ'', with stem translit as in the base). In general, such words need manual translit that forces the stem of the inflected form to have the same translit as the stem of the base form. We want to remove redundant manual translit so that accelerator-generated entries don't have unnecessary manual translit in them. Finally, we need to remove redundant manual translit at the very end, not as we decline each part of a multiword expression (which we used to do), because of cases like कालाधन, which declines as if written काला धन. Hence it has oblique plural कालेधनों, which has incorrect default translit ''kaledhnõ'' instead of correct ''kaledhanõ'', even though the individual parts काले and धनों both have correct default translits. ]=] function export.remove_redundant_translit(alternant_multiword_spec) for slot, forms in pairs(alternant_multiword_spec.forms) do alternant_multiword_spec.forms[slot] = iut.map_forms(forms, function(form, translit) if translit and (lang:transliterate(m_links.remove_links(form))) == translit then return form, nil else return form, translit end end) end end function export.get_variants(form) return rsub(form, export.not_var_code_c, "") end function export.remove_variant_codes(form) return rsub(form, export.var_code_c, "") end -- Add variant codes to all slots with more than one form. The intention of variant -- codes is to prevent there being N^2 slot variants in a verb like [[हिलना-डुलना]] in -- slots that normally have N variants. Rather than combining all variants of [[हिलना]] -- with all variants of [[डुलना]] for the given slot, we only want to combine parallel -- variants. We implement this by tagging each variant with a "variant code" character -- and rejecting combinations with mismatching variant code characters. function export.add_variant_codes(base) for slot, forms in pairs(base.forms) do if #forms > 1 then local index = 0 base.forms[slot] = iut.map_forms(forms, function(form, translit) index = index + 1 local varcode = export.index_to_variant_code[index] if not varcode then error("Lỗi nội bộ: Encountered too many variants (" .. #forms .. "), no more variant codes available") end return form .. varcode, translit end) end end end return export 28ht1hmat6kkvhf281deehe25gkpt8m Bản mẫu:mr-conj 10 390995 2341659 2026-04-01T07:55:21Z Hiyuune 50834 Trang mới: “{{#invoke:mr-verb|show}}<!-- --><noinclude>{{tài liệu}}</noinclude>” 2341659 wikitext text/x-wiki {{#invoke:mr-verb|show}}<!-- --><noinclude>{{tài liệu}}</noinclude> 1hysdrfd0j1zapftk4tjx5pfbo6y1dz Mô đun:mr-verb 828 390996 2341660 2026-04-01T08:06:31Z Hiyuune 50834 Trang mới: “local export = {} --[=[ Authorship: Aryaman Arora <AryamanA> based on work by Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of person/number/gender/tense/etc. Example slot names for verbs are "inf_mp" (masculine plural infinitive), "prog" (undeclined progressive form), "pfv_ind_fut_2sm" (second-person singular masculine perfective indicative future). Each slot is filled with zero or more forms. -- "form" = The conjugated M…” 2341660 Scribunto text/plain local export = {} --[=[ Authorship: Aryaman Arora <AryamanA> based on work by Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of person/number/gender/tense/etc. Example slot names for verbs are "inf_mp" (masculine plural infinitive), "prog" (undeclined progressive form), "pfv_ind_fut_2sm" (second-person singular masculine perfective indicative future). Each slot is filled with zero or more forms. -- "form" = The conjugated Marathi form representing the value of a given slot. -- "lemma" = The dictionary form of a given Marathi term. Generally the direct masculine singular infinitive, but may occasionally be another form if that form is missing. ]=] --[=[ FIXME: ]=] local lang = require("Module:languages").getByCode("mr") local m_table = require("Module:table") local m_links = require("Module:links") local m_string_utilities = require("Module:string utilities") local m_script_utilities = require("Module:script utilities") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local m_para = require("Module:parameters") local com = require("Module:mr-common") local u = require("Module:string/char") local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rgmatch = mw.ustring.gmatch local rsubn = mw.ustring.gsub local ulen = mw.ustring.len local usub = mw.ustring.sub local uupper = mw.ustring.upper local ulower = mw.ustring.lower -- vowel diacritics; don't display nicely on their own local M = u(0x0901) local N = u(0x0902) local AA = u(0x093e) local AI = u(0x0948) local AU = u(0x094c) local E = u(0x0947) local EN = E .. N local I = u(0x093f) local II = u(0x0940) local IIN = II .. N local O = u(0x094b) local U = u(0x0941) local UU = u(0x0942) local UUM = UU .. M local R = u(0x0943) local VIRAMA = u(0x094d) local TILDE = u(0x0303) -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- version of rsubn() that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function tag_text(text) return m_script_utilities.tag_text(text, lang) end local function term_link(mr, tr) return m_links.full_link({term = mr, tr = tr, lang = lang}, "term") end local irreg_perf = { -- suppletive ["कर"] = "के", ["जा"] = "गे", ["दे"] = "दि", ["मर"] = "मे", ["ये"] = "आ", ["हो"] = "झा", -- not suppletive -- ā-ending ["निघ"] = "निघा", ["पळ"] = "पळा", ["मिळ"] = "मिळा", -- i-ending ["पाह"] = "पाहि", ["राह"] = "राहि", -- it-ending ["बघ"] = "बघित", ["माग"] = "मागित", ["सांग"] = "सांगित", -- t-ending ["घाल"] = "घात", ["घे"] = "घेत", ["धु"] = "धुत", -- y-ending ["गा"] = "गाय", ["पि"] = "प्याय", -- other ["खा"] = "खाल" .. VIRAMA, ["म्हण"] = "म्हट", -- also "म्हणा" } local irreg_subj = { } local irreg_polite_imp = { -- ā-stem ["खा"] = "ख", ["गा"] = "ग", ["जा"] = "ज", -- i-stem ["पिणे"] = "प्य", ["लिहि"] = "लिह", -- u-stem ["धु"] = "धुव", -- e-stem ["घे"] = "घ्य", ["दे"] = "द्य", ["ये"] = "या", -- o-stem ["हो"] = "व्ह", } local verb_slots_impers = { inf = "inf", obl_inf = "obl_inf", stem = "stem", compl = "compl", pros = "pros", inc = "inc", desid = "desid", prog = "prog", obl_perf = "obl_perf", } local verb_slots_pers = { subj_neg = "subj_neg", } -- Add entries for a slot with only gender/number variants. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect; -- `tag_suffix` is the set of inflection tags to add after the gender/number tags, -- or "-" to use "-" as the inflection tags (which indicates that no accelerator entry -- should be generated); and `verb_slots` is the table (personal or impersonal) to -- add the entries to. local function add_slot_gendered(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers verb_slots[slot_prefix .. "_ms"] = tag_suffix == "-" and "-" or "m|s|" .. tag_suffix verb_slots[slot_prefix .. "_mp"] = tag_suffix == "-" and "-" or "m|p|" .. tag_suffix verb_slots[slot_prefix .. "_fs"] = tag_suffix == "-" and "-" or "f|s|" .. tag_suffix verb_slots[slot_prefix .. "_fp"] = tag_suffix == "-" and "-" or "f|p|" .. tag_suffix verb_slots[slot_prefix .. "_ns"] = tag_suffix == "-" and "-" or "n|s|" .. tag_suffix verb_slots[slot_prefix .. "_np"] = tag_suffix == "-" and "-" or "n|p|" .. tag_suffix end -- Same as add_slot_gendered() but specifically for participles. This changes the inflection -- tags used, because the masculine singular entry is really only for direct masculine singular, -- and the masculine plural entry is also for oblique masculine singular. local function add_slot_gendered_part(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers verb_slots[slot_prefix .. "_ms"] = tag_suffix == "-" and "-" or "dir|m|s|" .. tag_suffix verb_slots[slot_prefix .. "_mp"] = tag_suffix == "-" and "-" or "m|p|" .. tag_suffix .. "|;|obl|m|s|" .. tag_suffix verb_slots[slot_prefix .. "_fs"] = tag_suffix == "-" and "-" or "f|s|" .. tag_suffix verb_slots[slot_prefix .. "_fp"] = tag_suffix == "-" and "-" or "f|p|" .. tag_suffix end -- Compute the inflection tags associated with a given person/number/gender combination. local function personal_tags(slot_prefix, tag_suffix, persnum, gender) gender = gender and gender .. "|" or "" local suffix = gender .. tag_suffix if persnum == "2s" then -- only for imperatives return "2|s|intim|" .. suffix elseif persnum == "23s" then return "2|s|intim|" .. suffix .. "|;|3|s|" .. suffix elseif persnum == "13p" then return "13|p|" .. suffix .. "|;|2|formal|" .. suffix elseif persnum == "2p" then return "2|fam|" .. suffix elseif persnum == "3p" then -- only for imperatives return "3|p|" .. suffix .. "|;|2|formal|" .. suffix else -- 1s, 3s or 1p return persnum:gsub("^(.)(.)$", "%1|%2") .. "|" .. suffix end end -- Return the possible person/number combinations given the slot prefix. local function persnum_values(slot_prefix) if slot_prefix:find("^imp_") then return {"2s", "2p"} else return {"1s", "2s", "3s", "1p", "2p", "3p"} end end -- Add entries for a slot with only person/number variants. See `add_slot_gendered()`. local function add_slot_personal(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers for _, persnum in ipairs(persnum_values(slot_prefix)) do local slot = slot_prefix .. "_" .. persnum if tag_suffix == "-" then verb_slots[slot] = "-" else verb_slots[slot] = personal_tags(slot_prefix, tag_suffix, persnum) end end end -- Add entries for a slot with person/number/gender variants. See `add_slot_gendered()`. local function add_slot_gendered_personal(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers for _, persnum in ipairs(persnum_values(slot_prefix)) do for _, gender in ipairs({"m", "f", "n"}) do local slot = slot_prefix .. "_" .. persnum .. gender if tag_suffix == "-" then verb_slots[slot] = "-" else verb_slots[slot] = personal_tags(slot_prefix, tag_suffix, persnum, gender) end end end end add_slot_gendered_personal("ind_hab", "hab|ind") add_slot_personal("ind_hab_neg", "hab|ind|neg") add_slot_gendered_personal("ind_perf", "perf|ind") add_slot_gendered_personal("ind_perf_neg", "perf|ind|neg") add_slot_gendered("subj", "subj") add_slot_gendered_personal("prs_prog", "prs|prog") add_slot_personal("prs_prog_neg", "prs|prog|neg") add_slot_gendered_personal("pst_prog", "pst|prog") add_slot_gendered_personal("pst_prog_neg", "pst|prog|neg") local all_verb_slots = {} for k, v in pairs(verb_slots_impers) do all_verb_slots[k] = v end for k, v in pairs(verb_slots_pers) do all_verb_slots[k] = v end -- Add one inflected form to `base.forms`, specifically to the list of forms associated with -- the slot `slot` in the table in `base.forms`. Each element of the list is an object of the -- form {form=FORM, translit=TRANSLIT, footnotes=FOOTNOTES}, where TRANSLIT is missing if no -- manual translit needs to be given and FOOTNOTES is missing if there aren't any footnotes. -- If FOOTNOTES is present it is a list of footnotes, where each footnote is e.g. "[rare or archaic]", -- i.e. surrounded by brackets, with the first character lowercase and no final period. -- (The brackets are automatically removed, the first character capitalized and a final period added.) -- -- `stem` is the Devanagari stem to add the ending to. -- `translit_stem` is the transliteration of `stem`, or nil to use the default transliteration. -- `ending` is the Devanagari ending to add to the stem, possibly with sandhi changes to the -- stem or ending. -- `footnotes` is a list of associated footnotes in the same format as FOOTNOTES above, or nil. -- `double_word` if given causes the resulting form to be doubled with a hyphen in between the two -- parts, for use with the progressive form (e.g. करते-करते of verb करना). local function add(base, stem, translit_stem, slot, ending, footnotes, double_word) local function doadd(new_stem, new_translit_stem, new_ending, slot_footnotes) new_ending = new_ending or ending if new_ending and base.notlast then -- If we're not the last verb in a multiword expression, chop off -- anything after a space. This is to handle verbs like [[हिलना-डुलना]], -- which have e.g. nonaspectual subjunctive 1sg masc हिलूँ-डुलूँ -- but perfective future indicative 1sg masc हिला-डुला हूँगा. Also, there -- are some special cases: -- (1) the conjunctive form should be e.g. हिल-डुलकर or हिल-डुलके -- (2) the future indicative should be e.g. 1sg हिलूँ-डुलूँगा -- (3) the future imperative 3pl should be e.g. हिलिये-डुलियेगा -- (4) the agentive should be e.g. हिलने-डुलनेवाला if slot == "conj" then new_ending = "" elseif slot:find("^ind_fut") then new_ending = rsub(new_ending, "ग.$", "") -- गा, गे or गी elseif slot == "imp_fut_3p" then new_ending = rsub(new_ending, "गा$", "") elseif slot:find("^agent") then new_ending = rsub(new_ending, "वाल." .. N .. "?$", "") -- वाला, वाले, वाली, वालीं else new_ending = rsub(new_ending, " .*", "") end end com.add_form(base, new_stem or stem, new_translit_stem or translit_stem, slot, new_ending, iut.combine_footnotes(slot_footnotes, footnotes), "link words", double_word) end doadd() end -- Add the conjugation for a tense/aspect row with gender/number variants only. local function add_conj_gendered(base, slot_prefix, stem, translit_stem, m_s, m_p, f_s, f_p, n_s, n_p, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_ms", m_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_mp", m_p, footnotes) add(base, stem, translit_stem, slot_prefix .. "_fs", f_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_fp", f_p, footnotes) add(base, stem, translit_stem, slot_prefix .. "_ns", n_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_np", n_p, footnotes) end -- Add the conjugation for a tense/aspect row with person/number variants only. local function add_conj_personal(base, slot_prefix, stem, translit_stem, s1, s2, s3, p1, p2, p3, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_1s", s1, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2s", s2, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3s", s3, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1p", p1, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2p", p2, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3p", p3, footnotes) end -- Add the conjugation for a tense/aspect row with person/number/gender variants. local function add_conj_gendered_personal(base, slot_prefix, stem, translit_stem, s1m, s2m, s3m, p1m, p2m, p3m, s1f, s2f, s3f, p1f, p2f, p3f, s1n, s2n, s3n, p1n, p2n, p3n, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_1sm", s1m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sm", s2m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sm", s3m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pm", p1m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pm", p2m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pm", p3m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1sf", s1f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sf", s2f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sf", s3f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pf", p1f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pf", p2f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pf", p3f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1sn", s1n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sn", s2n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sn", s3n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pn", p1n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pn", p2n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pn", p3n, footnotes) end local function handle_derived_slots_and_overrides(base) -- No overrides implemented currently. -- process_slot_overrides(base) -- Compute linked versions of potential lemma slots, for use in {{hi-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. -- (NOTE: Not currently used by {{hi-verb}}.) for _, slot in ipairs({"inf_ms"}) do iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form, translit) if form == base.orig_lemma_no_links and translit == base.lemma_translit and rfind(base.orig_lemma, "%[%[") then return base.orig_lemma, base.lemma_translit else return form, translit end end)) end end local conjs = {} local conjprops = {} conjs["normal"] = function(base) local function fetch_irreg(irreg_table) if irreg_table[base.stem] then local stem = irreg_table[base.stem] return stem, nil else return base.stem, base.stem_translit end end local perf, trperf = fetch_irreg(irreg_perf) local subj, trsubj = fetch_irreg(irreg_subj) local polite_imp, tr_polite_imp = fetch_irreg(irreg_polite_imp) -- Undeclined forms add(base, base.stem, base.stem_translit, "stem", "-") add(base, base.stem, base.stem_translit, "inf", "णे") add(base, base.stem, base.stem_translit, "inf", "ण" .. N) add(base, base.stem, base.stem_translit, "obl_inf", "ण्या-") add(base, base.stem, base.stem_translit, "compl", UU .. "न") add(base, base.stem, base.stem_translit, "pros", "णार") add(base, base.stem, base.stem_translit, "inc", UU) add(base, polite_imp, tr_polite_imp, "desid", AA .. "यला") add(base, base.stem, base.stem_translit, "prog", "ताना") add(base, base.stem, base.stem_translit, "prog", "ता", nil, not base.multiword) add(base, perf, trperf, "obl_perf", "ल्या-") add_conj_gendered_personal(base, "ind_hab", nil, nil, "तो", "तोस", "तो", "तो", "ता", "तात", "ते", "तेस", "ते", "तो", "ता", "तात", nil, nil, "ते", "तो", "ता", "तात") add_conj_personal(base, "ind_hab_neg", nil, nil, "त नाही", "त नाहीस", "त नाही", "त नाही", "त नाही", "त नाहीत") add(base, base.stem, base.stem_translit, "ind_hab_3sn", "त" .. N) add_conj_gendered_personal(base, "ind_perf", perf, trperf, "लो", "लास", "ला", "लो", "ला", "ले", "ले","लीस", "ली", "लो", "ला", "ल्या", nil, nil, "ले", nil, nil, "ली") add(base, perf, trperf, "ind_perf_3sn", "ल" .. N) add(base, perf, trperf, "ind_perf_2pm", "लात") add(base, perf, trperf, "ind_perf_2pf", "लात") add_conj_gendered_personal(base, "ind_perf_neg", perf, trperf, "लो नाही", "ला नाहीस", "ला नाही", "लो नाही", "ला नाहीत", "ले नाहीत", "ले नाही", "ली नाहीस", "ली नाही", "लो नाही", "ला नाहीत", "ल्या नाहीत", nil, nil, "ले नाही", nil, nil, "ली नाहीत") add(base, perf, trperf, "ind_perf_neg_3sn", "ल" .. N .. " नाही") add_conj_gendered(base, "subj", polite_imp, tr_polite_imp, AA .. "वा", AA .. "वे", AA .. "वी", AA .. "व्या", AA .. "वे", AA .. "वी") add(base, polite_imp, tr_polite_imp, "subj_mp", AA .. "वेत") add(base, polite_imp, tr_polite_imp, "subj_fp", AA .. "व्यात") add(base, polite_imp, tr_polite_imp, "subj_ns", AA .. "व" .. N) add(base, polite_imp, tr_polite_imp, "subj_np", AA .. "वीत") add(base, base.stem, base.stem_translit, "subj_neg", UU .. " नये") --[=[ add_conj_personal (base, "fut", nil, nil, "एन", "शील", "एल", "ऊ", "आल", "तील") add(base, base.stem, base.stem_translit, "fut_1s", "एन") add(base, base.stem, base.stem_translit, "fut_2s", "शील") add(base, base.stem, base.stem_translit, "fut_3s", "एल") add(base, base.stem, base.stem_translit, "fut1p", "ऊ") add(base, base.stem, base.stem_translit, "fut_2p", "आल") add(base, base.stem, base.stem_translit, "fut_3p", "तील") ]=] add_conj_gendered_personal(base, "prs_prog", nil, nil, "तो आहे", "तो आहेस", "तो आहे", "तो आहोत", "ता आहात", "ता आहेत", "ते आहे", "ते आहेस", "ते आहे", "तो आहोत", "ता आहात", "ता आहेत", nil, nil, "ते आहे", "तो आहोत", "ता आहात", "ता आहेत") -- add_conj_gendered_personal(base, "prs_prog", nil, nil, "तोय", "तोयस", "तोय", "तोय", "ताय", "तायत", "त्येय", "त्येस", "त्येय", "तोय", "ताय", "तायत", nil, nil, "तंय", "तोय", "ताय", "तायत") add_conj_personal(base, "prs_prog_neg", nil, nil, "त नाहीये", "त नाहीयेस", "त नाहीये", "त नाहीयोत", "त नाहीयात", "त नाहीयेत") add_conj_gendered_personal(base, "pst_prog", nil, nil, "त होतो", "त होतास", "त होता", "त होतो", "त होता", "त होते", "त होते", "त होतीस", "त होती", "त होतो", "त होता", "त होत्या", nil, nil, "त होते", nil, nil, "त होती") add(base, base.stem, base.stem_translit, "pst_prog_3sn", "त होत" .. N) add_conj_gendered_personal(base, "pst_prog_neg", nil, nil, "त नव्हतो", "त नव्हतास", "त नव्हता", "त नव्हतो", "त नव्हता", "त नव्हते", "त नव्हते", "त नव्हतीस", "त नव्हती", "त नव्हतो", "त नव्हता", "त नव्हत्या", nil, nil, "त नव्हते", nil, nil, "त नव्हती") add(base, base.stem, base.stem_translit, "pst_prog_neg_3sn", "त नव्हत" .. N) end --[=[ Parse an indicator spec (text consisting of angle brackets and zero or more dot-separated indicators within them). Return value is an object of the form { forms = {}, -- forms for a single spec alternant; see `forms` below -- The following additional fields are added by other functions: orig_lemma = "ORIGINAL-LEMMA", -- as given by the user or taken from pagename orig_lemma_no_links = "ORIGINAL-LEMMA-NO-LINKS", -- links removed lemma = "LEMMA", -- `orig_lemma_no_links`, converted to singular form if plural phon_lemma = "LEMMA-PHONETIC-RESPELLING", -- as specified by the user; may be missing lemma_translit = "LEMMA-TRANSLIT", -- translit of phon_lemma (if present) forms = { SLOT = { { form = "FORM", footnotes = {"FOOTNOTE", "FOOTNOTE", ...} -- may be missing }, ... }, ... }, conj = "CONJ", -- declension, e.g. "normal" (the only one currently implemented) } ]=] local function parse_indicator_spec(angle_bracket_spec) local inside = rmatch(angle_bracket_spec, "^<(.*)>$") assert(inside) local base = {overrides = {}, forms = {}} if inside ~= "" then local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do -- No indicators allowed currently. local part = dot_separated_group[1] error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'") end end return base end local function detect_indicator_spec(base) base.conj = "normal" base.stem, base.stem_translit = com.strip_ending(base, "णे") end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) end) -- Set notlast=true on verbs that aren't the last one in a multiword expression, and -- multiword=true on all verbs in multiword expressions (as well as at top level), so -- we can properly handle verbs like [[हिलना-डुलना]]. for i, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for j, word_spec in ipairs(multiword_spec.word_specs) do if j < #multiword_spec.word_specs then word_spec.notlast = true end if #multiword_spec.word_specs > 1 then word_spec.multiword = true alternant_multiword_spec.multiword = true end end end else if i < #alternant_multiword_spec.alternant_or_word_specs then alternant_or_word_spec.notlast = true end if #alternant_multiword_spec.alternant_or_word_specs > 1 then alternant_or_word_spec.multiword = true alternant_multiword_spec.multiword = true end end end end local function conjugate_verb(base) if not conjs[base.conj] then error("Internal error: Unrecognized conjugation type '" .. base.conj .. "'") end conjs[base.conj](base) if base.multiword then -- See comment in add_variant_codes() for the purpose of this. com.add_variant_codes(base) end handle_derived_slots_and_overrides(base) end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) local cats = {} local function insert(cattype) cattype = rsub(cattype, "~", alternant_multiword_spec.pos) m_table.insertIfNot(cats, cattype .. " tiếng Marathi") end local annotation if alternant_multiword_spec.manual then alternant_multiword_spec.annotation = "" else local function do_word_spec(base) if base.lemma_translit and (lang:transliterate(base.lemma)) ~= base.lemma_translit then insert("~ với ngữ âm chính tả viết lại") end end iut.map_word_specs(alternant_multiword_spec, function(base) do_word_spec(base) end) end alternant_multiword_spec.categories = cats end -- Convert forms from their list/object form (see the comments to add() for how this works) -- to strings that can be directly filled into the table. Approximately, each form is converted -- to a formatted link with accelerators and the results are concatenated, followed by an newline -- and then the formatted transliterations. local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.inf_ms or {} local props = { lemmas = lemmas, slot_table = verb_slots_impers, lang = lang, include_translit = true, } if alternant_multiword_spec.multiword then -- Remove variant codes that were added to ensure only parallel variants in -- multiword expressions like [[हिलना-डुलना]] get generated. See com.add_variant_codes() -- for more information. props.canonicalize = function(form) return com.remove_variant_codes(form) end end iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.forms.footnote_impers = alternant_multiword_spec.forms.footnote props.slot_table = verb_slots_pers iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.forms.footnote_pers = alternant_multiword_spec.forms.footnote end -- Generate the conjugation table. This should be called after show_forms() has converted -- each form to a formatted string. local function make_table(alternant_multiword_spec) local table_spec_impersonal = [=[ <div class="NavFrame" style="display: table;"> <div class="NavHead hi-table-title" style="background: var(--wikt-palette-blue-2,#d9ebff);color:inherit">Dạng không ngôi của {inf_raw}</div> <div class="NavContent"> {\op}| class="inflection-table inflection-hi inflection-verb" data-toggle-category="inflection" |- | class="hi-tense-aspect-cell"colspan=100% | ''Không biến tố'' |- | class="hi-tense-aspect-cell" colspan=2 | ''Thân''</br><span lang="mr" class="Deva">धातू</span> | colspan="100%" | {stem} |- | class="hi-tense-aspect-cell" colspan=2 | ''Nguyên mẫu'' | colspan="100%" | {inf} |- | class="hi-tense-aspect-cell" colspan=2 | ''Nguyên mẫu gián tiếp'' | colspan="100%" | {obl_inf} |- | class="hi-tense-aspect-cell" colspan=2 | ''Bổ khuyết'' | colspan="100%" | {compl} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[prospective|Tương lai]]'' | colspan="100%" | {pros} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[inceptive|Bắt đầu]]'' | colspan="100%" | {inc} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[desiderative|Mong mỏi]]'' | colspan="100%" | {desid} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[progressive|Tiếp diễn]]'' | colspan="100%" | {prog} |- | class="hi-tense-aspect-cell" colspan=2 | ''Hoàn thành gián tiếp'' | colspan="100%" | {obl_perf} |{\cl}{notes_clause}</div></div>]=] local person_number_header_two_row = [=[ |- class="hi-table-header" | rowspan=2 | | rowspan=2 | | class="hi-mf-cell" rowspan=2 | ]=] local person_number_header_sg_pl_headers = [=[ | colspan=3 | '''Số ít'''</br><span lang="mr" class="Deva">'''एकवचन'''</span> | colspan=3 | '''Số nhiều'''</br><span lang="mr" class="Deva">'''अनेकवचन'''</span> ]=] local person_number_header_table_div = [=[ |- class="hi-table-header" ]=] local person_number_header_pers_num_headers = [=[ | '''ngôi thứ nhất'''<br><span lang="mr" class="Deva">[[मी]]</span> | '''ngôi thứ hai (thân mật)'''<br><span lang="mr" class="Deva">[[तू]]</span> | '''ngôi thứ ba (gần người nói)''': <span lang="mr" class="Deva">[[हे]] / [[हा]] / [[ही]]</span></br>'''xa người nói''': <span lang="mr" class="Deva">[[ते]] / [[तो]] / [[ती]]</span> | '''ngôi thứ nhất (loại trừ): <span lang="mr" class="Deva">[[आम्ही]]</span></br>'''ngôi bao hàm''': <span lang="mr" class="Deva">[[आपण]]</span> | '''ngôi thứ nhất (thân mật)'''<br><span lang="mr" class="Deva">[[तुम्ही]]</span> | '''ngôi thứ ba (xa người nói)''': <span lang="mr" class="Deva">[[ही]] / [[हे]] / [[ह्या]] [[या]]</span></br>'''xa người nói''': <span lang="mr" class="Deva">[[ती]] / [[ते]] / [[त्या]]</span> ]=] -- Regular person-number header used at the top of the table and in the middle. local person_number_header = person_number_header_table_div .. person_number_header_two_row .. person_number_header_sg_pl_headers .. person_number_header_table_div .. person_number_header_pers_num_headers -- Reversed person-number header used at the bottom of the table. "Reversed" means that -- the two rows are in reversed order; but internally we can't switch the order of everything -- (e.g. the double-row cells at the left side), so we need to break up the header into multiple -- parts and only reverse certain parts. local reversed_person_number_header = person_number_header_table_div .. person_number_header_two_row .. person_number_header_pers_num_headers .. person_number_header_table_div .. person_number_header_sg_pl_headers local table_spec_personal = [=[ <div class="NavFrame" style="display: table;> <div class="NavHead hi-table-title" style="background: var(--wikt-palette-blue-2,#d9ebff);color:inherit;">Dạng ngôi của {inf_raw}</div> <div class="NavContent"> {\op}| class="inflection-table inflection-hi inflection-verb" data-toggle-category="inflection" |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Phi khía cạnh'' {person_number_header} |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | Giả định | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {subj_ns} | | | {subj_np} |- | class="hi-mf-cell" | {m} | colspan=3 | {subj_ms} | colspan=3 | {subj_mp} |- | class="hi-mf-cell" | {f} | colspan=3 | {subj_fs} | colspan=3 | {subj_fp} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | colspan=6 | {subj_neg} |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Hoàn thành'' |- | class="hi-tense-aspect-cell" rowspan=6 colspan=1 | Unmarked | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_perf_3sn} | | | {ind_perf_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_perf_1sm} | {ind_perf_2sm} | {ind_perf_3sm} | {ind_perf_1pm} | {ind_perf_2pm} | {ind_perf_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_perf_1sf} | {ind_perf_2sf} | {ind_perf_3sf} | {ind_perf_1pf} | {ind_perf_2pf} | {ind_perf_3pf} |- | class="hi-polarity-cell" rowspan=3 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_perf_neg_3sn} | | | {ind_perf_neg_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_perf_neg_1sm} | {ind_perf_neg_2sm} | {ind_perf_neg_3sm} | {ind_perf_neg_1pm} | {ind_perf_neg_2pm} | {ind_perf_neg_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_perf_neg_1sf} | {ind_perf_neg_2sf} | {ind_perf_neg_3sf} | {ind_perf_neg_1pf} | {ind_perf_neg_2pf} | {ind_perf_neg_3pf} |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Chưa hoàn thành'' |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | {HAB} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_hab_3sn} | | | {ind_hab_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_hab_1sm} | {ind_hab_2sm} | {ind_hab_3sm} | rowspan = 2 | {ind_hab_1pm} | rowspan = 2 | {ind_hab_2pm} | rowspan = 2 | {ind_hab_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_hab_1sf} | {ind_hab_2sf} | {ind_hab_3sf} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | {ind_hab_neg_1s} | {ind_hab_neg_2s} | {ind_hab_neg_3s} | {ind_hab_neg_1p} | {ind_hab_neg_2p} | {ind_hab_neg_3p} |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | {PRS} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {prs_prog_3sn} | | | {prs_prog_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {prs_prog_1sm} | {prs_prog_2sm} | {prs_prog_3sm} | rowspan=2 | {prs_prog_1pm} | rowspan=2 | {prs_prog_2pm} | rowspan=2 | {prs_prog_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {prs_prog_1sf} | {prs_prog_2sf} | {prs_prog_3sf} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | {prs_prog_neg_1s} | {prs_prog_neg_2s} | {prs_prog_neg_3s} | {prs_prog_neg_1p} | {prs_prog_neg_2p} | {prs_prog_neg_3p} |- | class="hi-tense-aspect-cell" rowspan=6 colspan=1 | {PST} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {pst_prog_3sn} | | | {pst_prog_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {pst_prog_1sm} | {pst_prog_2sm} | {pst_prog_3sm} | {pst_prog_1pm} | {pst_prog_2pm} | {pst_prog_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {pst_prog_1sf} | {pst_prog_2sf} | {pst_prog_3sf} | {pst_prog_1pf} | {pst_prog_2pf} | {pst_prog_3pf} |- | class="hi-polarity-cell" rowspan=3 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {n} | | | {pst_prog_neg_3sn} | | | {pst_prog_neg_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {pst_prog_neg_1sm} | {pst_prog_neg_2sm} | {pst_prog_neg_3sm} | {pst_prog_neg_1pm} | {pst_prog_neg_2pm} | {pst_prog_neg_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {pst_prog_neg_1sf} | {pst_prog_neg_2sf} | {pst_prog_neg_3sf} | {pst_prog_neg_1pf} | {pst_prog_neg_2pf} | {pst_prog_neg_3pf} {reversed_person_number_header}|{\cl}{notes_clause}</div></div>]=] local pres_impf_table = [=[]=] local pres_impf_table_missing = [=[]=] local presum_table = [=[]=] local combined_subj = [=[]=] local split_subj = [=[]=] local notes_template = [===[ <div class="hi-footnote-outer-div"> <div class="hi-footnote-inner-div"> {footnote} </div></div> ]===] local forms = alternant_multiword_spec.forms local function make_gender_abbr(title, text) return '<span class="gender"><abbr title="' .. title .. '">' .. text .. '</abbr></span>' end local function make_tense_aspect_abbr(title, text) local template = [=[ ''<abbr style="font-variant: small-caps; text-transform: lowercase;" title="{title}">{text}</abbr>'']=] return m_string_utilities.format(template, {title = title, text = text}) end forms.m = make_gender_abbr("giống đực", "gđ") forms.f = make_gender_abbr("giống cái", "gc") forms.n = make_gender_abbr("giống trung", "gc") forms.mfn = forms.m .. " " .. forms.f .. " " .. forms.n forms.s = make_gender_abbr("số ít", "s") forms.p = make_gender_abbr("số nhiều", "p") forms.dir = make_gender_abbr("trực tiếp", "dir") forms.obl = make_gender_abbr("gián tiếp", "obl") forms.HAB = make_tense_aspect_abbr("Habitual", "HAB") forms.PERF = make_tense_aspect_abbr("Hoàn thành", "PERF") forms.SUBJ = make_tense_aspect_abbr("Giả định", "SUBJ") forms.IMPF = make_tense_aspect_abbr("Chưa hoàn thành", "IMPF") forms.PST = make_tense_aspect_abbr("Quá khứ", "PST") forms.FUT = make_tense_aspect_abbr("Tương lai", "FUT") forms.PRS = make_tense_aspect_abbr("Hiện tại", "PRS") forms.PRS_FUT = make_tense_aspect_abbr("Hiện tại/Tương lai", "PRS<br />FUT") forms.PRS_PST = make_tense_aspect_abbr("Hiện tại/Quá khứ", "PRS<br />PST") forms.PRS_PST_FUT = make_tense_aspect_abbr("Hiện tại/Quá khứ/Tương lai", "PRS<br />PST<br />FUT") forms.inf_raw = tag_text(forms.lemma) -- Now format the impersonal table. forms.footnote = forms.footnote_impers forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_table_impers = m_string_utilities.format(table_spec_impersonal, forms) -- Now format the personal table. forms.footnote = forms.footnote_pers forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" if forms.ind_pres_1s ~= "—" then -- होना forms.subj_table = m_string_utilities.format(split_subj, forms) forms.pres_impf_table = m_string_utilities.format(pres_impf_table, forms) forms.presum_table = m_string_utilities.format(presum_table, forms) else forms.subj_table = m_string_utilities.format(combined_subj, forms) forms.pres_impf_table = pres_impf_table_missing forms.presum_table = "" end forms.person_number_header = person_number_header forms.reversed_person_number_header = reversed_person_number_header local formatted_table_pers = m_string_utilities.format(table_spec_personal, forms) -- Concatenate both. return require("Module:TemplateStyles")("Module:hi-verb/style.css") .. formatted_table_impers .. formatted_table_pers end -- Implementation of template 'hi-verb cat'. -- NOTE: Not currently used. function export.catboiler(frame) local SUBPAGENAME = mw.loadData("Module:headword/data").pagename local params = { [1] = {}, } local args = m_para.process(frame:getParent().args, params) local function get_pos() local pos = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s ") if not pos then pos = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s$") end if not pos then error("Invalid category name, should be e.g. \"Marathi verbs with ...\" or \"Marathi ... verbs\"") end return pos end local function get_sort_key() local pos, sort_key = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s with (.*)$") if sort_key then return sort_key end pos, sort_key = rmatch(SUBPAGENAME, "^Marathi ([^ ]*)s (.*)$") if sort_key then return sort_key end return rsub(SUBPAGENAME, "^Marathi ", "") end local cats = {}, pos -- Insert the category CAT (a string) into the categories. String will -- have "Marathi " prepended and ~ substituted for the plural part of speech. local function insert(cat, atbeg) local fullcat = "Marathi " .. rsub(cat, "~", pos .. "s") if atbeg then table.insert(cats, 1, fullcat) else table.insert(cats, fullcat) end end local maintext while true do if args[1] then maintext = "~ " .. args[1] pos = get_pos() break end error("Unrecognized Marathi verb category name") end insert("~|" .. get_sort_key(), "at beginning") local categories = {} for _, cat in ipairs(cats) do table.insert(categories, "[[Thể loại:" .. cat .. "]]") end return "This category contains Marathi " .. rsub(maintext, "~", pos .. "s") .. "\n" .. mw.getCurrentFrame():expandTemplate{title="mr-categoryTOC", args={}} .. table.concat(categories, "") end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, translit=TRANSLIT, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, pos, from_headword, def) local params = { [1] = {}, title = {}, } if from_headword then params["lemma"] = {list = true} params["id"] = {} end local args = m_para.process(parent_args, params) local PAGENAME = mw.loadData("Module:headword/data").pagename if not args[1] then if PAGENAME == "mr-conj" then args[1] = def or "ऐकणे" else args[1] = PAGENAME -- If pagename has spaces in it, add links around each word if args[1]:find(" ") then args[1] = "[[" .. rsub(args[1], " ", "]] [[") .. "]]" end end end local parse_props = { parse_indicator_spec = parse_indicator_spec, lang = lang, transliterate_respelling = com.transliterate_respelling, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props) alternant_multiword_spec.title = args.title alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args com.normalize_all_lemmas(alternant_multiword_spec) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_table = all_verb_slots, lang = lang, inflect_word_spec = conjugate_verb, -- Return the variant code that was added to ensure only parallel variants in -- multiword expressions like [[हिलना-डुलना]] get generated. See com.add_variant_codes() -- for more information. get_variants = alternant_multiword_spec.multiword and com.get_variants or nil, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) compute_categories_and_annotation(alternant_multiword_spec) return alternant_multiword_spec end -- Entry point for {{hi-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end -- Concatenate all forms of all slots into a single string of the form -- "SLOT=FORM,FORM,...|SLOT=FORM,FORM,...|...". Each FORM is either a string in Devanagari or -- (if manual translit is present) a specification of the form "FORM//TRANSLIT" where FORM is the -- Devanagari representation of the form and TRANSLIT its manual transliteration. Embedded pipe symbols -- (as might occur in embedded links) are converted to <!>. If INCLUDE_PROPS is given, also include -- additional properties (currently, none). This is for use by bots. local function concat_forms(alternant_spec, include_props) local ins_text = {} for slot, _ in pairs(verb_slots_with_linked) do local formtext = iut.concat_forms_in_slot(alternant_spec.forms[slot]) if formtext then table.insert(ins_text, slot .. "=" .. formtext) end end return table.concat(ins_text, "|") end -- Template-callable function to parse and conjugate a verb given user-specified arguments and return -- the forms as a string of the same form as documented in concat_forms() above. function export.generate_forms(frame) local include_props = frame.args["include_props"] local parent_args = frame:getParent().args local alternant_spec = export.do_generate_forms(parent_args) return concat_forms(alternant_spec, include_props) end return export coxgtco2gav6b1yh1faaqz4825u6lpt 2341663 2341660 2026-04-01T08:10:47Z Hiyuune 50834 2341663 Scribunto text/plain local export = {} --[=[ Authorship: Aryaman Arora <AryamanA> based on work by Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of person/number/gender/tense/etc. Example slot names for verbs are "inf_mp" (masculine plural infinitive), "prog" (undeclined progressive form), "pfv_ind_fut_2sm" (second-person singular masculine perfective indicative future). Each slot is filled with zero or more forms. -- "form" = The conjugated Marathi form representing the value of a given slot. -- "lemma" = The dictionary form of a given Marathi term. Generally the direct masculine singular infinitive, but may occasionally be another form if that form is missing. ]=] --[=[ FIXME: ]=] local lang = require("Module:languages").getByCode("mr") local m_table = require("Module:table") local m_links = require("Module:links") local m_string_utilities = require("Module:string utilities") local m_script_utilities = require("Module:script utilities") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local m_para = require("Module:parameters") local com = require("Module:mr-common") local u = require("Module:string/char") local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rgmatch = mw.ustring.gmatch local rsubn = mw.ustring.gsub local ulen = mw.ustring.len local usub = mw.ustring.sub local uupper = mw.ustring.upper local ulower = mw.ustring.lower -- vowel diacritics; don't display nicely on their own local M = u(0x0901) local N = u(0x0902) local AA = u(0x093e) local AI = u(0x0948) local AU = u(0x094c) local E = u(0x0947) local EN = E .. N local I = u(0x093f) local II = u(0x0940) local IIN = II .. N local O = u(0x094b) local U = u(0x0941) local UU = u(0x0942) local UUM = UU .. M local R = u(0x0943) local VIRAMA = u(0x094d) local TILDE = u(0x0303) -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- version of rsubn() that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function tag_text(text) return m_script_utilities.tag_text(text, lang) end local function term_link(mr, tr) return m_links.full_link({term = mr, tr = tr, lang = lang}, "term") end local irreg_perf = { -- suppletive ["कर"] = "के", ["जा"] = "गे", ["दे"] = "दि", ["मर"] = "मे", ["ये"] = "आ", ["हो"] = "झा", -- not suppletive -- ā-ending ["निघ"] = "निघा", ["पळ"] = "पळा", ["मिळ"] = "मिळा", -- i-ending ["पाह"] = "पाहि", ["राह"] = "राहि", -- it-ending ["बघ"] = "बघित", ["माग"] = "मागित", ["सांग"] = "सांगित", -- t-ending ["घाल"] = "घात", ["घे"] = "घेत", ["धु"] = "धुत", -- y-ending ["गा"] = "गाय", ["पि"] = "प्याय", -- other ["खा"] = "खाल" .. VIRAMA, ["म्हण"] = "म्हट", -- also "म्हणा" } local irreg_subj = { } local irreg_polite_imp = { -- ā-stem ["खा"] = "ख", ["गा"] = "ग", ["जा"] = "ज", -- i-stem ["पिणे"] = "प्य", ["लिहि"] = "लिह", -- u-stem ["धु"] = "धुव", -- e-stem ["घे"] = "घ्य", ["दे"] = "द्य", ["ये"] = "या", -- o-stem ["हो"] = "व्ह", } local verb_slots_impers = { inf = "inf", obl_inf = "obl_inf", stem = "stem", compl = "compl", pros = "pros", inc = "inc", desid = "desid", prog = "prog", obl_perf = "obl_perf", } local verb_slots_pers = { subj_neg = "subj_neg", } -- Add entries for a slot with only gender/number variants. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect; -- `tag_suffix` is the set of inflection tags to add after the gender/number tags, -- or "-" to use "-" as the inflection tags (which indicates that no accelerator entry -- should be generated); and `verb_slots` is the table (personal or impersonal) to -- add the entries to. local function add_slot_gendered(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers verb_slots[slot_prefix .. "_ms"] = tag_suffix == "-" and "-" or "m|s|" .. tag_suffix verb_slots[slot_prefix .. "_mp"] = tag_suffix == "-" and "-" or "m|p|" .. tag_suffix verb_slots[slot_prefix .. "_fs"] = tag_suffix == "-" and "-" or "f|s|" .. tag_suffix verb_slots[slot_prefix .. "_fp"] = tag_suffix == "-" and "-" or "f|p|" .. tag_suffix verb_slots[slot_prefix .. "_ns"] = tag_suffix == "-" and "-" or "n|s|" .. tag_suffix verb_slots[slot_prefix .. "_np"] = tag_suffix == "-" and "-" or "n|p|" .. tag_suffix end -- Same as add_slot_gendered() but specifically for participles. This changes the inflection -- tags used, because the masculine singular entry is really only for direct masculine singular, -- and the masculine plural entry is also for oblique masculine singular. local function add_slot_gendered_part(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers verb_slots[slot_prefix .. "_ms"] = tag_suffix == "-" and "-" or "dir|m|s|" .. tag_suffix verb_slots[slot_prefix .. "_mp"] = tag_suffix == "-" and "-" or "m|p|" .. tag_suffix .. "|;|obl|m|s|" .. tag_suffix verb_slots[slot_prefix .. "_fs"] = tag_suffix == "-" and "-" or "f|s|" .. tag_suffix verb_slots[slot_prefix .. "_fp"] = tag_suffix == "-" and "-" or "f|p|" .. tag_suffix end -- Compute the inflection tags associated with a given person/number/gender combination. local function personal_tags(slot_prefix, tag_suffix, persnum, gender) gender = gender and gender .. "|" or "" local suffix = gender .. tag_suffix if persnum == "2s" then -- only for imperatives return "2|s|intim|" .. suffix elseif persnum == "23s" then return "2|s|intim|" .. suffix .. "|;|3|s|" .. suffix elseif persnum == "13p" then return "13|p|" .. suffix .. "|;|2|formal|" .. suffix elseif persnum == "2p" then return "2|fam|" .. suffix elseif persnum == "3p" then -- only for imperatives return "3|p|" .. suffix .. "|;|2|formal|" .. suffix else -- 1s, 3s or 1p return persnum:gsub("^(.)(.)$", "%1|%2") .. "|" .. suffix end end -- Return the possible person/number combinations given the slot prefix. local function persnum_values(slot_prefix) if slot_prefix:find("^imp_") then return {"2s", "2p"} else return {"1s", "2s", "3s", "1p", "2p", "3p"} end end -- Add entries for a slot with only person/number variants. See `add_slot_gendered()`. local function add_slot_personal(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers for _, persnum in ipairs(persnum_values(slot_prefix)) do local slot = slot_prefix .. "_" .. persnum if tag_suffix == "-" then verb_slots[slot] = "-" else verb_slots[slot] = personal_tags(slot_prefix, tag_suffix, persnum) end end end -- Add entries for a slot with person/number/gender variants. See `add_slot_gendered()`. local function add_slot_gendered_personal(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers for _, persnum in ipairs(persnum_values(slot_prefix)) do for _, gender in ipairs({"m", "f", "n"}) do local slot = slot_prefix .. "_" .. persnum .. gender if tag_suffix == "-" then verb_slots[slot] = "-" else verb_slots[slot] = personal_tags(slot_prefix, tag_suffix, persnum, gender) end end end end add_slot_gendered_personal("ind_hab", "hab|ind") add_slot_personal("ind_hab_neg", "hab|ind|neg") add_slot_gendered_personal("ind_perf", "perf|ind") add_slot_gendered_personal("ind_perf_neg", "perf|ind|neg") add_slot_gendered("subj", "subj") add_slot_gendered_personal("prs_prog", "prs|prog") add_slot_personal("prs_prog_neg", "prs|prog|neg") add_slot_gendered_personal("pst_prog", "pst|prog") add_slot_gendered_personal("pst_prog_neg", "pst|prog|neg") local all_verb_slots = {} for k, v in pairs(verb_slots_impers) do all_verb_slots[k] = v end for k, v in pairs(verb_slots_pers) do all_verb_slots[k] = v end -- Add one inflected form to `base.forms`, specifically to the list of forms associated with -- the slot `slot` in the table in `base.forms`. Each element of the list is an object of the -- form {form=FORM, translit=TRANSLIT, footnotes=FOOTNOTES}, where TRANSLIT is missing if no -- manual translit needs to be given and FOOTNOTES is missing if there aren't any footnotes. -- If FOOTNOTES is present it is a list of footnotes, where each footnote is e.g. "[rare or archaic]", -- i.e. surrounded by brackets, with the first character lowercase and no final period. -- (The brackets are automatically removed, the first character capitalized and a final period added.) -- -- `stem` is the Devanagari stem to add the ending to. -- `translit_stem` is the transliteration of `stem`, or nil to use the default transliteration. -- `ending` is the Devanagari ending to add to the stem, possibly with sandhi changes to the -- stem or ending. -- `footnotes` is a list of associated footnotes in the same format as FOOTNOTES above, or nil. -- `double_word` if given causes the resulting form to be doubled with a hyphen in between the two -- parts, for use with the progressive form (e.g. करते-करते of verb करना). local function add(base, stem, translit_stem, slot, ending, footnotes, double_word) local function doadd(new_stem, new_translit_stem, new_ending, slot_footnotes) new_ending = new_ending or ending if new_ending and base.notlast then -- If we're not the last verb in a multiword expression, chop off -- anything after a space. This is to handle verbs like [[हिलना-डुलना]], -- which have e.g. nonaspectual subjunctive 1sg masc हिलूँ-डुलूँ -- but perfective future indicative 1sg masc हिला-डुला हूँगा. Also, there -- are some special cases: -- (1) the conjunctive form should be e.g. हिल-डुलकर or हिल-डुलके -- (2) the future indicative should be e.g. 1sg हिलूँ-डुलूँगा -- (3) the future imperative 3pl should be e.g. हिलिये-डुलियेगा -- (4) the agentive should be e.g. हिलने-डुलनेवाला if slot == "conj" then new_ending = "" elseif slot:find("^ind_fut") then new_ending = rsub(new_ending, "ग.$", "") -- गा, गे or गी elseif slot == "imp_fut_3p" then new_ending = rsub(new_ending, "गा$", "") elseif slot:find("^agent") then new_ending = rsub(new_ending, "वाल." .. N .. "?$", "") -- वाला, वाले, वाली, वालीं else new_ending = rsub(new_ending, " .*", "") end end com.add_form(base, new_stem or stem, new_translit_stem or translit_stem, slot, new_ending, iut.combine_footnotes(slot_footnotes, footnotes), "link words", double_word) end doadd() end -- Add the conjugation for a tense/aspect row with gender/number variants only. local function add_conj_gendered(base, slot_prefix, stem, translit_stem, m_s, m_p, f_s, f_p, n_s, n_p, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_ms", m_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_mp", m_p, footnotes) add(base, stem, translit_stem, slot_prefix .. "_fs", f_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_fp", f_p, footnotes) add(base, stem, translit_stem, slot_prefix .. "_ns", n_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_np", n_p, footnotes) end -- Add the conjugation for a tense/aspect row with person/number variants only. local function add_conj_personal(base, slot_prefix, stem, translit_stem, s1, s2, s3, p1, p2, p3, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_1s", s1, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2s", s2, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3s", s3, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1p", p1, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2p", p2, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3p", p3, footnotes) end -- Add the conjugation for a tense/aspect row with person/number/gender variants. local function add_conj_gendered_personal(base, slot_prefix, stem, translit_stem, s1m, s2m, s3m, p1m, p2m, p3m, s1f, s2f, s3f, p1f, p2f, p3f, s1n, s2n, s3n, p1n, p2n, p3n, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_1sm", s1m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sm", s2m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sm", s3m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pm", p1m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pm", p2m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pm", p3m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1sf", s1f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sf", s2f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sf", s3f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pf", p1f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pf", p2f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pf", p3f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1sn", s1n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sn", s2n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sn", s3n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pn", p1n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pn", p2n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pn", p3n, footnotes) end local function handle_derived_slots_and_overrides(base) -- No overrides implemented currently. -- process_slot_overrides(base) -- Compute linked versions of potential lemma slots, for use in {{hi-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. -- (NOTE: Not currently used by {{hi-verb}}.) for _, slot in ipairs({"inf_ms"}) do iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form, translit) if form == base.orig_lemma_no_links and translit == base.lemma_translit and rfind(base.orig_lemma, "%[%[") then return base.orig_lemma, base.lemma_translit else return form, translit end end)) end end local conjs = {} local conjprops = {} conjs["normal"] = function(base) local function fetch_irreg(irreg_table) if irreg_table[base.stem] then local stem = irreg_table[base.stem] return stem, nil else return base.stem, base.stem_translit end end local perf, trperf = fetch_irreg(irreg_perf) local subj, trsubj = fetch_irreg(irreg_subj) local polite_imp, tr_polite_imp = fetch_irreg(irreg_polite_imp) -- Undeclined forms add(base, base.stem, base.stem_translit, "stem", "-") add(base, base.stem, base.stem_translit, "inf", "णे") add(base, base.stem, base.stem_translit, "inf", "ण" .. N) add(base, base.stem, base.stem_translit, "obl_inf", "ण्या-") add(base, base.stem, base.stem_translit, "compl", UU .. "न") add(base, base.stem, base.stem_translit, "pros", "णार") add(base, base.stem, base.stem_translit, "inc", UU) add(base, polite_imp, tr_polite_imp, "desid", AA .. "यला") add(base, base.stem, base.stem_translit, "prog", "ताना") add(base, base.stem, base.stem_translit, "prog", "ता", nil, not base.multiword) add(base, perf, trperf, "obl_perf", "ल्या-") add_conj_gendered_personal(base, "ind_hab", nil, nil, "तो", "तोस", "तो", "तो", "ता", "तात", "ते", "तेस", "ते", "तो", "ता", "तात", nil, nil, "ते", "तो", "ता", "तात") add_conj_personal(base, "ind_hab_neg", nil, nil, "त नाही", "त नाहीस", "त नाही", "त नाही", "त नाही", "त नाहीत") add(base, base.stem, base.stem_translit, "ind_hab_3sn", "त" .. N) add_conj_gendered_personal(base, "ind_perf", perf, trperf, "लो", "लास", "ला", "लो", "ला", "ले", "ले","लीस", "ली", "लो", "ला", "ल्या", nil, nil, "ले", nil, nil, "ली") add(base, perf, trperf, "ind_perf_3sn", "ल" .. N) add(base, perf, trperf, "ind_perf_2pm", "लात") add(base, perf, trperf, "ind_perf_2pf", "लात") add_conj_gendered_personal(base, "ind_perf_neg", perf, trperf, "लो नाही", "ला नाहीस", "ला नाही", "लो नाही", "ला नाहीत", "ले नाहीत", "ले नाही", "ली नाहीस", "ली नाही", "लो नाही", "ला नाहीत", "ल्या नाहीत", nil, nil, "ले नाही", nil, nil, "ली नाहीत") add(base, perf, trperf, "ind_perf_neg_3sn", "ल" .. N .. " नाही") add_conj_gendered(base, "subj", polite_imp, tr_polite_imp, AA .. "वा", AA .. "वे", AA .. "वी", AA .. "व्या", AA .. "वे", AA .. "वी") add(base, polite_imp, tr_polite_imp, "subj_mp", AA .. "वेत") add(base, polite_imp, tr_polite_imp, "subj_fp", AA .. "व्यात") add(base, polite_imp, tr_polite_imp, "subj_ns", AA .. "व" .. N) add(base, polite_imp, tr_polite_imp, "subj_np", AA .. "वीत") add(base, base.stem, base.stem_translit, "subj_neg", UU .. " नये") --[=[ add_conj_personal (base, "fut", nil, nil, "एन", "शील", "एल", "ऊ", "आल", "तील") add(base, base.stem, base.stem_translit, "fut_1s", "एन") add(base, base.stem, base.stem_translit, "fut_2s", "शील") add(base, base.stem, base.stem_translit, "fut_3s", "एल") add(base, base.stem, base.stem_translit, "fut1p", "ऊ") add(base, base.stem, base.stem_translit, "fut_2p", "आल") add(base, base.stem, base.stem_translit, "fut_3p", "तील") ]=] add_conj_gendered_personal(base, "prs_prog", nil, nil, "तो आहे", "तो आहेस", "तो आहे", "तो आहोत", "ता आहात", "ता आहेत", "ते आहे", "ते आहेस", "ते आहे", "तो आहोत", "ता आहात", "ता आहेत", nil, nil, "ते आहे", "तो आहोत", "ता आहात", "ता आहेत") -- add_conj_gendered_personal(base, "prs_prog", nil, nil, "तोय", "तोयस", "तोय", "तोय", "ताय", "तायत", "त्येय", "त्येस", "त्येय", "तोय", "ताय", "तायत", nil, nil, "तंय", "तोय", "ताय", "तायत") add_conj_personal(base, "prs_prog_neg", nil, nil, "त नाहीये", "त नाहीयेस", "त नाहीये", "त नाहीयोत", "त नाहीयात", "त नाहीयेत") add_conj_gendered_personal(base, "pst_prog", nil, nil, "त होतो", "त होतास", "त होता", "त होतो", "त होता", "त होते", "त होते", "त होतीस", "त होती", "त होतो", "त होता", "त होत्या", nil, nil, "त होते", nil, nil, "त होती") add(base, base.stem, base.stem_translit, "pst_prog_3sn", "त होत" .. N) add_conj_gendered_personal(base, "pst_prog_neg", nil, nil, "त नव्हतो", "त नव्हतास", "त नव्हता", "त नव्हतो", "त नव्हता", "त नव्हते", "त नव्हते", "त नव्हतीस", "त नव्हती", "त नव्हतो", "त नव्हता", "त नव्हत्या", nil, nil, "त नव्हते", nil, nil, "त नव्हती") add(base, base.stem, base.stem_translit, "pst_prog_neg_3sn", "त नव्हत" .. N) end --[=[ Parse an indicator spec (text consisting of angle brackets and zero or more dot-separated indicators within them). Return value is an object of the form { forms = {}, -- forms for a single spec alternant; see `forms` below -- The following additional fields are added by other functions: orig_lemma = "ORIGINAL-LEMMA", -- as given by the user or taken from pagename orig_lemma_no_links = "ORIGINAL-LEMMA-NO-LINKS", -- links removed lemma = "LEMMA", -- `orig_lemma_no_links`, converted to singular form if plural phon_lemma = "LEMMA-PHONETIC-RESPELLING", -- as specified by the user; may be missing lemma_translit = "LEMMA-TRANSLIT", -- translit of phon_lemma (if present) forms = { SLOT = { { form = "FORM", footnotes = {"FOOTNOTE", "FOOTNOTE", ...} -- may be missing }, ... }, ... }, conj = "CONJ", -- declension, e.g. "normal" (the only one currently implemented) } ]=] local function parse_indicator_spec(angle_bracket_spec) local inside = rmatch(angle_bracket_spec, "^<(.*)>$") assert(inside) local base = {overrides = {}, forms = {}} if inside ~= "" then local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do -- No indicators allowed currently. local part = dot_separated_group[1] error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'") end end return base end local function detect_indicator_spec(base) base.conj = "normal" base.stem, base.stem_translit = com.strip_ending(base, "णे") end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) end) -- Set notlast=true on verbs that aren't the last one in a multiword expression, and -- multiword=true on all verbs in multiword expressions (as well as at top level), so -- we can properly handle verbs like [[हिलना-डुलना]]. for i, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for j, word_spec in ipairs(multiword_spec.word_specs) do if j < #multiword_spec.word_specs then word_spec.notlast = true end if #multiword_spec.word_specs > 1 then word_spec.multiword = true alternant_multiword_spec.multiword = true end end end else if i < #alternant_multiword_spec.alternant_or_word_specs then alternant_or_word_spec.notlast = true end if #alternant_multiword_spec.alternant_or_word_specs > 1 then alternant_or_word_spec.multiword = true alternant_multiword_spec.multiword = true end end end end local function conjugate_verb(base) if not conjs[base.conj] then error("Internal error: Unrecognized conjugation type '" .. base.conj .. "'") end conjs[base.conj](base) if base.multiword then -- See comment in add_variant_codes() for the purpose of this. com.add_variant_codes(base) end handle_derived_slots_and_overrides(base) end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) local cats = {} local function insert(cattype) cattype = rsub(cattype, "~", alternant_multiword_spec.pos) m_table.insertIfNot(cats, cattype .. " tiếng Marathi") end local annotation if alternant_multiword_spec.manual then alternant_multiword_spec.annotation = "" else local function do_word_spec(base) if base.lemma_translit and (lang:transliterate(base.lemma)) ~= base.lemma_translit then insert("~ với ngữ âm chính tả viết lại") end end iut.map_word_specs(alternant_multiword_spec, function(base) do_word_spec(base) end) end alternant_multiword_spec.categories = cats end -- Convert forms from their list/object form (see the comments to add() for how this works) -- to strings that can be directly filled into the table. Approximately, each form is converted -- to a formatted link with accelerators and the results are concatenated, followed by an newline -- and then the formatted transliterations. local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.inf_ms or {} local props = { lemmas = lemmas, slot_table = verb_slots_impers, lang = lang, include_translit = true, } if alternant_multiword_spec.multiword then -- Remove variant codes that were added to ensure only parallel variants in -- multiword expressions like [[हिलना-डुलना]] get generated. See com.add_variant_codes() -- for more information. props.canonicalize = function(form) return com.remove_variant_codes(form) end end iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.forms.footnote_impers = alternant_multiword_spec.forms.footnote props.slot_table = verb_slots_pers iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.forms.footnote_pers = alternant_multiword_spec.forms.footnote end -- Generate the conjugation table. This should be called after show_forms() has converted -- each form to a formatted string. local function make_table(alternant_multiword_spec) local table_spec_impersonal = [=[ <div class="NavFrame" style="display: table;"> <div class="NavHead hi-table-title" style="background: var(--wikt-palette-blue-2,#d9ebff);color:inherit">Dạng không ngôi của {inf_raw}</div> <div class="NavContent"> {\op}| class="inflection-table inflection-hi inflection-verb" data-toggle-category="inflection" |- | class="hi-tense-aspect-cell"colspan=100% | ''Không biến tố'' |- | class="hi-tense-aspect-cell" colspan=2 | ''Thân''</br><span lang="mr" class="Deva">धातू</span> | colspan="100%" | {stem} |- | class="hi-tense-aspect-cell" colspan=2 | ''Nguyên mẫu'' | colspan="100%" | {inf} |- | class="hi-tense-aspect-cell" colspan=2 | ''Nguyên mẫu gián tiếp'' | colspan="100%" | {obl_inf} |- | class="hi-tense-aspect-cell" colspan=2 | ''Bổ khuyết'' | colspan="100%" | {compl} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[prospective|Tương lai]]'' | colspan="100%" | {pros} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[inceptive|Bắt đầu]]'' | colspan="100%" | {inc} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[desiderative|Mong mỏi]]'' | colspan="100%" | {desid} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[progressive|Tiếp diễn]]'' | colspan="100%" | {prog} |- | class="hi-tense-aspect-cell" colspan=2 | ''Hoàn thành gián tiếp'' | colspan="100%" | {obl_perf} |{\cl}{notes_clause}</div></div>]=] local person_number_header_two_row = [=[ |- class="hi-table-header" | rowspan=2 | | rowspan=2 | | class="hi-mf-cell" rowspan=2 | ]=] local person_number_header_sg_pl_headers = [=[ | colspan=3 | '''Số ít'''</br><span lang="mr" class="Deva">'''एकवचन'''</span> | colspan=3 | '''Số nhiều'''</br><span lang="mr" class="Deva">'''अनेकवचन'''</span> ]=] local person_number_header_table_div = [=[ |- class="hi-table-header" ]=] local person_number_header_pers_num_headers = [=[ | '''ngôi thứ nhất'''<br><span lang="mr" class="Deva">[[मी]]</span> | '''ngôi thứ hai (thân mật)'''<br><span lang="mr" class="Deva">[[तू]]</span> | '''ngôi thứ ba (gần người nói)''': <span lang="mr" class="Deva">[[हे]] / [[हा]] / [[ही]]</span></br>'''xa người nói''': <span lang="mr" class="Deva">[[ते]] / [[तो]] / [[ती]]</span> | '''ngôi thứ nhất (loại trừ): <span lang="mr" class="Deva">[[आम्ही]]</span></br>'''ngôi bao hàm''': <span lang="mr" class="Deva">[[आपण]]</span> | '''ngôi thứ nhất (thân mật)'''<br><span lang="mr" class="Deva">[[तुम्ही]]</span> | '''ngôi thứ ba (xa người nói)''': <span lang="mr" class="Deva">[[ही]] / [[हे]] / [[ह्या]] [[या]]</span></br>'''xa người nói''': <span lang="mr" class="Deva">[[ती]] / [[ते]] / [[त्या]]</span> ]=] -- Regular person-number header used at the top of the table and in the middle. local person_number_header = person_number_header_table_div .. person_number_header_two_row .. person_number_header_sg_pl_headers .. person_number_header_table_div .. person_number_header_pers_num_headers -- Reversed person-number header used at the bottom of the table. "Reversed" means that -- the two rows are in reversed order; but internally we can't switch the order of everything -- (e.g. the double-row cells at the left side), so we need to break up the header into multiple -- parts and only reverse certain parts. local reversed_person_number_header = person_number_header_table_div .. person_number_header_two_row .. person_number_header_pers_num_headers .. person_number_header_table_div .. person_number_header_sg_pl_headers local table_spec_personal = [=[ <div class="NavFrame" style="display: table;> <div class="NavHead hi-table-title" style="background: var(--wikt-palette-blue-2,#d9ebff);color:inherit;">Dạng ngôi của {inf_raw}</div> <div class="NavContent"> {\op}| class="inflection-table inflection-hi inflection-verb" data-toggle-category="inflection" |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Phi khía cạnh'' {person_number_header} |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | Giả định | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {subj_ns} | | | {subj_np} |- | class="hi-mf-cell" | {m} | colspan=3 | {subj_ms} | colspan=3 | {subj_mp} |- | class="hi-mf-cell" | {f} | colspan=3 | {subj_fs} | colspan=3 | {subj_fp} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | colspan=6 | {subj_neg} |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Hoàn thành'' |- | class="hi-tense-aspect-cell" rowspan=6 colspan=1 | Unmarked | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_perf_3sn} | | | {ind_perf_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_perf_1sm} | {ind_perf_2sm} | {ind_perf_3sm} | {ind_perf_1pm} | {ind_perf_2pm} | {ind_perf_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_perf_1sf} | {ind_perf_2sf} | {ind_perf_3sf} | {ind_perf_1pf} | {ind_perf_2pf} | {ind_perf_3pf} |- | class="hi-polarity-cell" rowspan=3 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_perf_neg_3sn} | | | {ind_perf_neg_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_perf_neg_1sm} | {ind_perf_neg_2sm} | {ind_perf_neg_3sm} | {ind_perf_neg_1pm} | {ind_perf_neg_2pm} | {ind_perf_neg_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_perf_neg_1sf} | {ind_perf_neg_2sf} | {ind_perf_neg_3sf} | {ind_perf_neg_1pf} | {ind_perf_neg_2pf} | {ind_perf_neg_3pf} |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Chưa hoàn thành'' |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | {HAB} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_hab_3sn} | | | {ind_hab_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_hab_1sm} | {ind_hab_2sm} | {ind_hab_3sm} | rowspan = 2 | {ind_hab_1pm} | rowspan = 2 | {ind_hab_2pm} | rowspan = 2 | {ind_hab_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_hab_1sf} | {ind_hab_2sf} | {ind_hab_3sf} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | {ind_hab_neg_1s} | {ind_hab_neg_2s} | {ind_hab_neg_3s} | {ind_hab_neg_1p} | {ind_hab_neg_2p} | {ind_hab_neg_3p} |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | {PRS} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {prs_prog_3sn} | | | {prs_prog_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {prs_prog_1sm} | {prs_prog_2sm} | {prs_prog_3sm} | rowspan=2 | {prs_prog_1pm} | rowspan=2 | {prs_prog_2pm} | rowspan=2 | {prs_prog_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {prs_prog_1sf} | {prs_prog_2sf} | {prs_prog_3sf} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | {prs_prog_neg_1s} | {prs_prog_neg_2s} | {prs_prog_neg_3s} | {prs_prog_neg_1p} | {prs_prog_neg_2p} | {prs_prog_neg_3p} |- | class="hi-tense-aspect-cell" rowspan=6 colspan=1 | {PST} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {pst_prog_3sn} | | | {pst_prog_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {pst_prog_1sm} | {pst_prog_2sm} | {pst_prog_3sm} | {pst_prog_1pm} | {pst_prog_2pm} | {pst_prog_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {pst_prog_1sf} | {pst_prog_2sf} | {pst_prog_3sf} | {pst_prog_1pf} | {pst_prog_2pf} | {pst_prog_3pf} |- | class="hi-polarity-cell" rowspan=3 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {n} | | | {pst_prog_neg_3sn} | | | {pst_prog_neg_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {pst_prog_neg_1sm} | {pst_prog_neg_2sm} | {pst_prog_neg_3sm} | {pst_prog_neg_1pm} | {pst_prog_neg_2pm} | {pst_prog_neg_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {pst_prog_neg_1sf} | {pst_prog_neg_2sf} | {pst_prog_neg_3sf} | {pst_prog_neg_1pf} | {pst_prog_neg_2pf} | {pst_prog_neg_3pf} {reversed_person_number_header}|{\cl}{notes_clause}</div></div>]=] local pres_impf_table = [=[]=] local pres_impf_table_missing = [=[]=] local presum_table = [=[]=] local combined_subj = [=[]=] local split_subj = [=[]=] local notes_template = [===[ <div class="hi-footnote-outer-div"> <div class="hi-footnote-inner-div"> {footnote} </div></div> ]===] local forms = alternant_multiword_spec.forms local function make_gender_abbr(title, text) return '<span class="gender"><abbr title="' .. title .. '">' .. text .. '</abbr></span>' end local function make_tense_aspect_abbr(title, text) local template = [=[ ''<abbr style="font-variant: small-caps; text-transform: lowercase;" title="{title}">{text}</abbr>'']=] return m_string_utilities.format(template, {title = title, text = text}) end forms.m = make_gender_abbr("giống đực", "gđ") forms.f = make_gender_abbr("giống cái", "gc") forms.n = make_gender_abbr("giống trung", "gch") forms.mfn = forms.m .. " " .. forms.f .. " " .. forms.n forms.s = make_gender_abbr("số ít", "s") forms.p = make_gender_abbr("số nhiều", "p") forms.dir = make_gender_abbr("trực tiếp", "dir") forms.obl = make_gender_abbr("gián tiếp", "obl") forms.HAB = make_tense_aspect_abbr("Habitual", "HAB") forms.PERF = make_tense_aspect_abbr("Hoàn thành", "PERF") forms.SUBJ = make_tense_aspect_abbr("Giả định", "SUBJ") forms.IMPF = make_tense_aspect_abbr("Chưa hoàn thành", "IMPF") forms.PST = make_tense_aspect_abbr("Quá khứ", "PST") forms.FUT = make_tense_aspect_abbr("Tương lai", "FUT") forms.PRS = make_tense_aspect_abbr("Hiện tại", "PRS") forms.PRS_FUT = make_tense_aspect_abbr("Hiện tại/Tương lai", "PRS<br />FUT") forms.PRS_PST = make_tense_aspect_abbr("Hiện tại/Quá khứ", "PRS<br />PST") forms.PRS_PST_FUT = make_tense_aspect_abbr("Hiện tại/Quá khứ/Tương lai", "PRS<br />PST<br />FUT") forms.inf_raw = tag_text(forms.lemma) -- Now format the impersonal table. forms.footnote = forms.footnote_impers forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_table_impers = m_string_utilities.format(table_spec_impersonal, forms) -- Now format the personal table. forms.footnote = forms.footnote_pers forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" if forms.ind_pres_1s ~= "—" then -- होना forms.subj_table = m_string_utilities.format(split_subj, forms) forms.pres_impf_table = m_string_utilities.format(pres_impf_table, forms) forms.presum_table = m_string_utilities.format(presum_table, forms) else forms.subj_table = m_string_utilities.format(combined_subj, forms) forms.pres_impf_table = pres_impf_table_missing forms.presum_table = "" end forms.person_number_header = person_number_header forms.reversed_person_number_header = reversed_person_number_header local formatted_table_pers = m_string_utilities.format(table_spec_personal, forms) -- Concatenate both. return require("Module:TemplateStyles")("Module:hi-verb/style.css") .. formatted_table_impers .. formatted_table_pers end -- Implementation of template 'hi-verb cat'. -- NOTE: Not currently used. function export.catboiler(frame) local SUBPAGENAME = mw.loadData("Module:headword/data").pagename local params = { [1] = {}, } local args = m_para.process(frame:getParent().args, params) local function get_pos() local pos = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s ") if not pos then pos = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s$") end if not pos then error("Invalid category name, should be e.g. \"Marathi verbs with ...\" or \"Marathi ... verbs\"") end return pos end local function get_sort_key() local pos, sort_key = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s with (.*)$") if sort_key then return sort_key end pos, sort_key = rmatch(SUBPAGENAME, "^Marathi ([^ ]*)s (.*)$") if sort_key then return sort_key end return rsub(SUBPAGENAME, "^Marathi ", "") end local cats = {}, pos -- Insert the category CAT (a string) into the categories. String will -- have "Marathi " prepended and ~ substituted for the plural part of speech. local function insert(cat, atbeg) local fullcat = "Marathi " .. rsub(cat, "~", pos .. "s") if atbeg then table.insert(cats, 1, fullcat) else table.insert(cats, fullcat) end end local maintext while true do if args[1] then maintext = "~ " .. args[1] pos = get_pos() break end error("Unrecognized Marathi verb category name") end insert("~|" .. get_sort_key(), "at beginning") local categories = {} for _, cat in ipairs(cats) do table.insert(categories, "[[Thể loại:" .. cat .. "]]") end return "This category contains Marathi " .. rsub(maintext, "~", pos .. "s") .. "\n" .. mw.getCurrentFrame():expandTemplate{title="mr-categoryTOC", args={}} .. table.concat(categories, "") end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, translit=TRANSLIT, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, pos, from_headword, def) local params = { [1] = {}, title = {}, } if from_headword then params["lemma"] = {list = true} params["id"] = {} end local args = m_para.process(parent_args, params) local PAGENAME = mw.loadData("Module:headword/data").pagename if not args[1] then if PAGENAME == "mr-conj" then args[1] = def or "ऐकणे" else args[1] = PAGENAME -- If pagename has spaces in it, add links around each word if args[1]:find(" ") then args[1] = "[[" .. rsub(args[1], " ", "]] [[") .. "]]" end end end local parse_props = { parse_indicator_spec = parse_indicator_spec, lang = lang, transliterate_respelling = com.transliterate_respelling, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props) alternant_multiword_spec.title = args.title alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args com.normalize_all_lemmas(alternant_multiword_spec) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_table = all_verb_slots, lang = lang, inflect_word_spec = conjugate_verb, -- Return the variant code that was added to ensure only parallel variants in -- multiword expressions like [[हिलना-डुलना]] get generated. See com.add_variant_codes() -- for more information. get_variants = alternant_multiword_spec.multiword and com.get_variants or nil, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) compute_categories_and_annotation(alternant_multiword_spec) return alternant_multiword_spec end -- Entry point for {{hi-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end -- Concatenate all forms of all slots into a single string of the form -- "SLOT=FORM,FORM,...|SLOT=FORM,FORM,...|...". Each FORM is either a string in Devanagari or -- (if manual translit is present) a specification of the form "FORM//TRANSLIT" where FORM is the -- Devanagari representation of the form and TRANSLIT its manual transliteration. Embedded pipe symbols -- (as might occur in embedded links) are converted to <!>. If INCLUDE_PROPS is given, also include -- additional properties (currently, none). This is for use by bots. local function concat_forms(alternant_spec, include_props) local ins_text = {} for slot, _ in pairs(verb_slots_with_linked) do local formtext = iut.concat_forms_in_slot(alternant_spec.forms[slot]) if formtext then table.insert(ins_text, slot .. "=" .. formtext) end end return table.concat(ins_text, "|") end -- Template-callable function to parse and conjugate a verb given user-specified arguments and return -- the forms as a string of the same form as documented in concat_forms() above. function export.generate_forms(frame) local include_props = frame.args["include_props"] local parent_args = frame:getParent().args local alternant_spec = export.do_generate_forms(parent_args) return concat_forms(alternant_spec, include_props) end return export cb2yqnzmwk0eaezk3wng6gn4j07c952 2341664 2341663 2026-04-01T08:11:24Z Hiyuune 50834 2341664 Scribunto text/plain local export = {} --[=[ Authorship: Aryaman Arora <AryamanA> based on work by Ben Wing <benwing2> ]=] --[=[ TERMINOLOGY: -- "slot" = A particular combination of person/number/gender/tense/etc. Example slot names for verbs are "inf_mp" (masculine plural infinitive), "prog" (undeclined progressive form), "pfv_ind_fut_2sm" (second-person singular masculine perfective indicative future). Each slot is filled with zero or more forms. -- "form" = The conjugated Marathi form representing the value of a given slot. -- "lemma" = The dictionary form of a given Marathi term. Generally the direct masculine singular infinitive, but may occasionally be another form if that form is missing. ]=] --[=[ FIXME: ]=] local lang = require("Module:languages").getByCode("mr") local m_table = require("Module:table") local m_links = require("Module:links") local m_string_utilities = require("Module:string utilities") local m_script_utilities = require("Module:script utilities") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local m_para = require("Module:parameters") local com = require("Module:mr-common") local u = require("Module:string/char") local rsplit = mw.text.split local rfind = mw.ustring.find local rmatch = mw.ustring.match local rgmatch = mw.ustring.gmatch local rsubn = mw.ustring.gsub local ulen = mw.ustring.len local usub = mw.ustring.sub local uupper = mw.ustring.upper local ulower = mw.ustring.lower -- vowel diacritics; don't display nicely on their own local M = u(0x0901) local N = u(0x0902) local AA = u(0x093e) local AI = u(0x0948) local AU = u(0x094c) local E = u(0x0947) local EN = E .. N local I = u(0x093f) local II = u(0x0940) local IIN = II .. N local O = u(0x094b) local U = u(0x0941) local UU = u(0x0942) local UUM = UU .. M local R = u(0x0943) local VIRAMA = u(0x094d) local TILDE = u(0x0303) -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- version of rsubn() that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function tag_text(text) return m_script_utilities.tag_text(text, lang) end local function term_link(mr, tr) return m_links.full_link({term = mr, tr = tr, lang = lang}, "term") end local irreg_perf = { -- suppletive ["कर"] = "के", ["जा"] = "गे", ["दे"] = "दि", ["मर"] = "मे", ["ये"] = "आ", ["हो"] = "झा", -- not suppletive -- ā-ending ["निघ"] = "निघा", ["पळ"] = "पळा", ["मिळ"] = "मिळा", -- i-ending ["पाह"] = "पाहि", ["राह"] = "राहि", -- it-ending ["बघ"] = "बघित", ["माग"] = "मागित", ["सांग"] = "सांगित", -- t-ending ["घाल"] = "घात", ["घे"] = "घेत", ["धु"] = "धुत", -- y-ending ["गा"] = "गाय", ["पि"] = "प्याय", -- other ["खा"] = "खाल" .. VIRAMA, ["म्हण"] = "म्हट", -- also "म्हणा" } local irreg_subj = { } local irreg_polite_imp = { -- ā-stem ["खा"] = "ख", ["गा"] = "ग", ["जा"] = "ज", -- i-stem ["पिणे"] = "प्य", ["लिहि"] = "लिह", -- u-stem ["धु"] = "धुव", -- e-stem ["घे"] = "घ्य", ["दे"] = "द्य", ["ये"] = "या", -- o-stem ["हो"] = "व्ह", } local verb_slots_impers = { inf = "inf", obl_inf = "obl_inf", stem = "stem", compl = "compl", pros = "pros", inc = "inc", desid = "desid", prog = "prog", obl_perf = "obl_perf", } local verb_slots_pers = { subj_neg = "subj_neg", } -- Add entries for a slot with only gender/number variants. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect; -- `tag_suffix` is the set of inflection tags to add after the gender/number tags, -- or "-" to use "-" as the inflection tags (which indicates that no accelerator entry -- should be generated); and `verb_slots` is the table (personal or impersonal) to -- add the entries to. local function add_slot_gendered(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers verb_slots[slot_prefix .. "_ms"] = tag_suffix == "-" and "-" or "m|s|" .. tag_suffix verb_slots[slot_prefix .. "_mp"] = tag_suffix == "-" and "-" or "m|p|" .. tag_suffix verb_slots[slot_prefix .. "_fs"] = tag_suffix == "-" and "-" or "f|s|" .. tag_suffix verb_slots[slot_prefix .. "_fp"] = tag_suffix == "-" and "-" or "f|p|" .. tag_suffix verb_slots[slot_prefix .. "_ns"] = tag_suffix == "-" and "-" or "n|s|" .. tag_suffix verb_slots[slot_prefix .. "_np"] = tag_suffix == "-" and "-" or "n|p|" .. tag_suffix end -- Same as add_slot_gendered() but specifically for participles. This changes the inflection -- tags used, because the masculine singular entry is really only for direct masculine singular, -- and the masculine plural entry is also for oblique masculine singular. local function add_slot_gendered_part(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers verb_slots[slot_prefix .. "_ms"] = tag_suffix == "-" and "-" or "dir|m|s|" .. tag_suffix verb_slots[slot_prefix .. "_mp"] = tag_suffix == "-" and "-" or "m|p|" .. tag_suffix .. "|;|obl|m|s|" .. tag_suffix verb_slots[slot_prefix .. "_fs"] = tag_suffix == "-" and "-" or "f|s|" .. tag_suffix verb_slots[slot_prefix .. "_fp"] = tag_suffix == "-" and "-" or "f|p|" .. tag_suffix end -- Compute the inflection tags associated with a given person/number/gender combination. local function personal_tags(slot_prefix, tag_suffix, persnum, gender) gender = gender and gender .. "|" or "" local suffix = gender .. tag_suffix if persnum == "2s" then -- only for imperatives return "2|s|intim|" .. suffix elseif persnum == "23s" then return "2|s|intim|" .. suffix .. "|;|3|s|" .. suffix elseif persnum == "13p" then return "13|p|" .. suffix .. "|;|2|formal|" .. suffix elseif persnum == "2p" then return "2|fam|" .. suffix elseif persnum == "3p" then -- only for imperatives return "3|p|" .. suffix .. "|;|2|formal|" .. suffix else -- 1s, 3s or 1p return persnum:gsub("^(.)(.)$", "%1|%2") .. "|" .. suffix end end -- Return the possible person/number combinations given the slot prefix. local function persnum_values(slot_prefix) if slot_prefix:find("^imp_") then return {"2s", "2p"} else return {"1s", "2s", "3s", "1p", "2p", "3p"} end end -- Add entries for a slot with only person/number variants. See `add_slot_gendered()`. local function add_slot_personal(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers for _, persnum in ipairs(persnum_values(slot_prefix)) do local slot = slot_prefix .. "_" .. persnum if tag_suffix == "-" then verb_slots[slot] = "-" else verb_slots[slot] = personal_tags(slot_prefix, tag_suffix, persnum) end end end -- Add entries for a slot with person/number/gender variants. See `add_slot_gendered()`. local function add_slot_gendered_personal(slot_prefix, tag_suffix, verb_slots) verb_slots = verb_slots or verb_slots_pers for _, persnum in ipairs(persnum_values(slot_prefix)) do for _, gender in ipairs({"m", "f", "n"}) do local slot = slot_prefix .. "_" .. persnum .. gender if tag_suffix == "-" then verb_slots[slot] = "-" else verb_slots[slot] = personal_tags(slot_prefix, tag_suffix, persnum, gender) end end end end add_slot_gendered_personal("ind_hab", "hab|ind") add_slot_personal("ind_hab_neg", "hab|ind|neg") add_slot_gendered_personal("ind_perf", "perf|ind") add_slot_gendered_personal("ind_perf_neg", "perf|ind|neg") add_slot_gendered("subj", "subj") add_slot_gendered_personal("prs_prog", "prs|prog") add_slot_personal("prs_prog_neg", "prs|prog|neg") add_slot_gendered_personal("pst_prog", "pst|prog") add_slot_gendered_personal("pst_prog_neg", "pst|prog|neg") local all_verb_slots = {} for k, v in pairs(verb_slots_impers) do all_verb_slots[k] = v end for k, v in pairs(verb_slots_pers) do all_verb_slots[k] = v end -- Add one inflected form to `base.forms`, specifically to the list of forms associated with -- the slot `slot` in the table in `base.forms`. Each element of the list is an object of the -- form {form=FORM, translit=TRANSLIT, footnotes=FOOTNOTES}, where TRANSLIT is missing if no -- manual translit needs to be given and FOOTNOTES is missing if there aren't any footnotes. -- If FOOTNOTES is present it is a list of footnotes, where each footnote is e.g. "[rare or archaic]", -- i.e. surrounded by brackets, with the first character lowercase and no final period. -- (The brackets are automatically removed, the first character capitalized and a final period added.) -- -- `stem` is the Devanagari stem to add the ending to. -- `translit_stem` is the transliteration of `stem`, or nil to use the default transliteration. -- `ending` is the Devanagari ending to add to the stem, possibly with sandhi changes to the -- stem or ending. -- `footnotes` is a list of associated footnotes in the same format as FOOTNOTES above, or nil. -- `double_word` if given causes the resulting form to be doubled with a hyphen in between the two -- parts, for use with the progressive form (e.g. करते-करते of verb करना). local function add(base, stem, translit_stem, slot, ending, footnotes, double_word) local function doadd(new_stem, new_translit_stem, new_ending, slot_footnotes) new_ending = new_ending or ending if new_ending and base.notlast then -- If we're not the last verb in a multiword expression, chop off -- anything after a space. This is to handle verbs like [[हिलना-डुलना]], -- which have e.g. nonaspectual subjunctive 1sg masc हिलूँ-डुलूँ -- but perfective future indicative 1sg masc हिला-डुला हूँगा. Also, there -- are some special cases: -- (1) the conjunctive form should be e.g. हिल-डुलकर or हिल-डुलके -- (2) the future indicative should be e.g. 1sg हिलूँ-डुलूँगा -- (3) the future imperative 3pl should be e.g. हिलिये-डुलियेगा -- (4) the agentive should be e.g. हिलने-डुलनेवाला if slot == "conj" then new_ending = "" elseif slot:find("^ind_fut") then new_ending = rsub(new_ending, "ग.$", "") -- गा, गे or गी elseif slot == "imp_fut_3p" then new_ending = rsub(new_ending, "गा$", "") elseif slot:find("^agent") then new_ending = rsub(new_ending, "वाल." .. N .. "?$", "") -- वाला, वाले, वाली, वालीं else new_ending = rsub(new_ending, " .*", "") end end com.add_form(base, new_stem or stem, new_translit_stem or translit_stem, slot, new_ending, iut.combine_footnotes(slot_footnotes, footnotes), "link words", double_word) end doadd() end -- Add the conjugation for a tense/aspect row with gender/number variants only. local function add_conj_gendered(base, slot_prefix, stem, translit_stem, m_s, m_p, f_s, f_p, n_s, n_p, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_ms", m_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_mp", m_p, footnotes) add(base, stem, translit_stem, slot_prefix .. "_fs", f_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_fp", f_p, footnotes) add(base, stem, translit_stem, slot_prefix .. "_ns", n_s, footnotes) add(base, stem, translit_stem, slot_prefix .. "_np", n_p, footnotes) end -- Add the conjugation for a tense/aspect row with person/number variants only. local function add_conj_personal(base, slot_prefix, stem, translit_stem, s1, s2, s3, p1, p2, p3, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_1s", s1, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2s", s2, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3s", s3, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1p", p1, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2p", p2, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3p", p3, footnotes) end -- Add the conjugation for a tense/aspect row with person/number/gender variants. local function add_conj_gendered_personal(base, slot_prefix, stem, translit_stem, s1m, s2m, s3m, p1m, p2m, p3m, s1f, s2f, s3f, p1f, p2f, p3f, s1n, s2n, s3n, p1n, p2n, p3n, footnotes) if not stem then stem = base.stem translit_stem = base.stem_translit end add(base, stem, translit_stem, slot_prefix .. "_1sm", s1m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sm", s2m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sm", s3m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pm", p1m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pm", p2m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pm", p3m, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1sf", s1f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sf", s2f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sf", s3f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pf", p1f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pf", p2f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pf", p3f, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1sn", s1n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2sn", s2n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3sn", s3n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_1pn", p1n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_2pn", p2n, footnotes) add(base, stem, translit_stem, slot_prefix .. "_3pn", p3n, footnotes) end local function handle_derived_slots_and_overrides(base) -- No overrides implemented currently. -- process_slot_overrides(base) -- Compute linked versions of potential lemma slots, for use in {{hi-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. -- (NOTE: Not currently used by {{hi-verb}}.) for _, slot in ipairs({"inf_ms"}) do iut.insert_forms(base.forms, slot .. "_linked", iut.map_forms(base.forms[slot], function(form, translit) if form == base.orig_lemma_no_links and translit == base.lemma_translit and rfind(base.orig_lemma, "%[%[") then return base.orig_lemma, base.lemma_translit else return form, translit end end)) end end local conjs = {} local conjprops = {} conjs["normal"] = function(base) local function fetch_irreg(irreg_table) if irreg_table[base.stem] then local stem = irreg_table[base.stem] return stem, nil else return base.stem, base.stem_translit end end local perf, trperf = fetch_irreg(irreg_perf) local subj, trsubj = fetch_irreg(irreg_subj) local polite_imp, tr_polite_imp = fetch_irreg(irreg_polite_imp) -- Undeclined forms add(base, base.stem, base.stem_translit, "stem", "-") add(base, base.stem, base.stem_translit, "inf", "णे") add(base, base.stem, base.stem_translit, "inf", "ण" .. N) add(base, base.stem, base.stem_translit, "obl_inf", "ण्या-") add(base, base.stem, base.stem_translit, "compl", UU .. "न") add(base, base.stem, base.stem_translit, "pros", "णार") add(base, base.stem, base.stem_translit, "inc", UU) add(base, polite_imp, tr_polite_imp, "desid", AA .. "यला") add(base, base.stem, base.stem_translit, "prog", "ताना") add(base, base.stem, base.stem_translit, "prog", "ता", nil, not base.multiword) add(base, perf, trperf, "obl_perf", "ल्या-") add_conj_gendered_personal(base, "ind_hab", nil, nil, "तो", "तोस", "तो", "तो", "ता", "तात", "ते", "तेस", "ते", "तो", "ता", "तात", nil, nil, "ते", "तो", "ता", "तात") add_conj_personal(base, "ind_hab_neg", nil, nil, "त नाही", "त नाहीस", "त नाही", "त नाही", "त नाही", "त नाहीत") add(base, base.stem, base.stem_translit, "ind_hab_3sn", "त" .. N) add_conj_gendered_personal(base, "ind_perf", perf, trperf, "लो", "लास", "ला", "लो", "ला", "ले", "ले","लीस", "ली", "लो", "ला", "ल्या", nil, nil, "ले", nil, nil, "ली") add(base, perf, trperf, "ind_perf_3sn", "ल" .. N) add(base, perf, trperf, "ind_perf_2pm", "लात") add(base, perf, trperf, "ind_perf_2pf", "लात") add_conj_gendered_personal(base, "ind_perf_neg", perf, trperf, "लो नाही", "ला नाहीस", "ला नाही", "लो नाही", "ला नाहीत", "ले नाहीत", "ले नाही", "ली नाहीस", "ली नाही", "लो नाही", "ला नाहीत", "ल्या नाहीत", nil, nil, "ले नाही", nil, nil, "ली नाहीत") add(base, perf, trperf, "ind_perf_neg_3sn", "ल" .. N .. " नाही") add_conj_gendered(base, "subj", polite_imp, tr_polite_imp, AA .. "वा", AA .. "वे", AA .. "वी", AA .. "व्या", AA .. "वे", AA .. "वी") add(base, polite_imp, tr_polite_imp, "subj_mp", AA .. "वेत") add(base, polite_imp, tr_polite_imp, "subj_fp", AA .. "व्यात") add(base, polite_imp, tr_polite_imp, "subj_ns", AA .. "व" .. N) add(base, polite_imp, tr_polite_imp, "subj_np", AA .. "वीत") add(base, base.stem, base.stem_translit, "subj_neg", UU .. " नये") --[=[ add_conj_personal (base, "fut", nil, nil, "एन", "शील", "एल", "ऊ", "आल", "तील") add(base, base.stem, base.stem_translit, "fut_1s", "एन") add(base, base.stem, base.stem_translit, "fut_2s", "शील") add(base, base.stem, base.stem_translit, "fut_3s", "एल") add(base, base.stem, base.stem_translit, "fut1p", "ऊ") add(base, base.stem, base.stem_translit, "fut_2p", "आल") add(base, base.stem, base.stem_translit, "fut_3p", "तील") ]=] add_conj_gendered_personal(base, "prs_prog", nil, nil, "तो आहे", "तो आहेस", "तो आहे", "तो आहोत", "ता आहात", "ता आहेत", "ते आहे", "ते आहेस", "ते आहे", "तो आहोत", "ता आहात", "ता आहेत", nil, nil, "ते आहे", "तो आहोत", "ता आहात", "ता आहेत") -- add_conj_gendered_personal(base, "prs_prog", nil, nil, "तोय", "तोयस", "तोय", "तोय", "ताय", "तायत", "त्येय", "त्येस", "त्येय", "तोय", "ताय", "तायत", nil, nil, "तंय", "तोय", "ताय", "तायत") add_conj_personal(base, "prs_prog_neg", nil, nil, "त नाहीये", "त नाहीयेस", "त नाहीये", "त नाहीयोत", "त नाहीयात", "त नाहीयेत") add_conj_gendered_personal(base, "pst_prog", nil, nil, "त होतो", "त होतास", "त होता", "त होतो", "त होता", "त होते", "त होते", "त होतीस", "त होती", "त होतो", "त होता", "त होत्या", nil, nil, "त होते", nil, nil, "त होती") add(base, base.stem, base.stem_translit, "pst_prog_3sn", "त होत" .. N) add_conj_gendered_personal(base, "pst_prog_neg", nil, nil, "त नव्हतो", "त नव्हतास", "त नव्हता", "त नव्हतो", "त नव्हता", "त नव्हते", "त नव्हते", "त नव्हतीस", "त नव्हती", "त नव्हतो", "त नव्हता", "त नव्हत्या", nil, nil, "त नव्हते", nil, nil, "त नव्हती") add(base, base.stem, base.stem_translit, "pst_prog_neg_3sn", "त नव्हत" .. N) end --[=[ Parse an indicator spec (text consisting of angle brackets and zero or more dot-separated indicators within them). Return value is an object of the form { forms = {}, -- forms for a single spec alternant; see `forms` below -- The following additional fields are added by other functions: orig_lemma = "ORIGINAL-LEMMA", -- as given by the user or taken from pagename orig_lemma_no_links = "ORIGINAL-LEMMA-NO-LINKS", -- links removed lemma = "LEMMA", -- `orig_lemma_no_links`, converted to singular form if plural phon_lemma = "LEMMA-PHONETIC-RESPELLING", -- as specified by the user; may be missing lemma_translit = "LEMMA-TRANSLIT", -- translit of phon_lemma (if present) forms = { SLOT = { { form = "FORM", footnotes = {"FOOTNOTE", "FOOTNOTE", ...} -- may be missing }, ... }, ... }, conj = "CONJ", -- declension, e.g. "normal" (the only one currently implemented) } ]=] local function parse_indicator_spec(angle_bracket_spec) local inside = rmatch(angle_bracket_spec, "^<(.*)>$") assert(inside) local base = {overrides = {}, forms = {}} if inside ~= "" then local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do -- No indicators allowed currently. local part = dot_separated_group[1] error("Unrecognized indicator '" .. part .. "': '" .. inside .. "'") end end return base end local function detect_indicator_spec(base) base.conj = "normal" base.stem, base.stem_translit = com.strip_ending(base, "णे") end local function detect_all_indicator_specs(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) end) -- Set notlast=true on verbs that aren't the last one in a multiword expression, and -- multiword=true on all verbs in multiword expressions (as well as at top level), so -- we can properly handle verbs like [[हिलना-डुलना]]. for i, alternant_or_word_spec in ipairs(alternant_multiword_spec.alternant_or_word_specs) do if alternant_or_word_spec.alternants then for _, multiword_spec in ipairs(alternant_or_word_spec.alternants) do for j, word_spec in ipairs(multiword_spec.word_specs) do if j < #multiword_spec.word_specs then word_spec.notlast = true end if #multiword_spec.word_specs > 1 then word_spec.multiword = true alternant_multiword_spec.multiword = true end end end else if i < #alternant_multiword_spec.alternant_or_word_specs then alternant_or_word_spec.notlast = true end if #alternant_multiword_spec.alternant_or_word_specs > 1 then alternant_or_word_spec.multiword = true alternant_multiword_spec.multiword = true end end end end local function conjugate_verb(base) if not conjs[base.conj] then error("Internal error: Unrecognized conjugation type '" .. base.conj .. "'") end conjs[base.conj](base) if base.multiword then -- See comment in add_variant_codes() for the purpose of this. com.add_variant_codes(base) end handle_derived_slots_and_overrides(base) end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) local cats = {} local function insert(cattype) cattype = rsub(cattype, "~", alternant_multiword_spec.pos) m_table.insertIfNot(cats, cattype .. " tiếng Marathi") end local annotation if alternant_multiword_spec.manual then alternant_multiword_spec.annotation = "" else local function do_word_spec(base) if base.lemma_translit and (lang:transliterate(base.lemma)) ~= base.lemma_translit then insert("~ với ngữ âm chính tả viết lại") end end iut.map_word_specs(alternant_multiword_spec, function(base) do_word_spec(base) end) end alternant_multiword_spec.categories = cats end -- Convert forms from their list/object form (see the comments to add() for how this works) -- to strings that can be directly filled into the table. Approximately, each form is converted -- to a formatted link with accelerators and the results are concatenated, followed by an newline -- and then the formatted transliterations. local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.inf_ms or {} local props = { lemmas = lemmas, slot_table = verb_slots_impers, lang = lang, include_translit = true, } if alternant_multiword_spec.multiword then -- Remove variant codes that were added to ensure only parallel variants in -- multiword expressions like [[हिलना-डुलना]] get generated. See com.add_variant_codes() -- for more information. props.canonicalize = function(form) return com.remove_variant_codes(form) end end iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.forms.footnote_impers = alternant_multiword_spec.forms.footnote props.slot_table = verb_slots_pers iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.forms.footnote_pers = alternant_multiword_spec.forms.footnote end -- Generate the conjugation table. This should be called after show_forms() has converted -- each form to a formatted string. local function make_table(alternant_multiword_spec) local table_spec_impersonal = [=[ <div class="NavFrame" style="display: table;"> <div class="NavHead hi-table-title" style="background: var(--wikt-palette-blue-2,#d9ebff);color:inherit">Dạng không ngôi của {inf_raw}</div> <div class="NavContent"> {\op}| class="inflection-table inflection-hi inflection-verb" data-toggle-category="inflection" |- | class="hi-tense-aspect-cell"colspan=100% | ''Không biến tố'' |- | class="hi-tense-aspect-cell" colspan=2 | ''Thân''</br><span lang="mr" class="Deva">धातू</span> | colspan="100%" | {stem} |- | class="hi-tense-aspect-cell" colspan=2 | ''Nguyên mẫu'' | colspan="100%" | {inf} |- | class="hi-tense-aspect-cell" colspan=2 | ''Nguyên mẫu gián tiếp'' | colspan="100%" | {obl_inf} |- | class="hi-tense-aspect-cell" colspan=2 | ''Bổ khuyết'' | colspan="100%" | {compl} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[prospective|Tương lai]]'' | colspan="100%" | {pros} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[inceptive|Bắt đầu]]'' | colspan="100%" | {inc} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[desiderative|Mong mỏi]]'' | colspan="100%" | {desid} |- | class="hi-tense-aspect-cell" colspan=2 | ''[[progressive|Tiếp diễn]]'' | colspan="100%" | {prog} |- | class="hi-tense-aspect-cell" colspan=2 | ''Hoàn thành gián tiếp'' | colspan="100%" | {obl_perf} |{\cl}{notes_clause}</div></div>]=] local person_number_header_two_row = [=[ |- class="hi-table-header" | rowspan=2 | | rowspan=2 | | class="hi-mf-cell" rowspan=2 | ]=] local person_number_header_sg_pl_headers = [=[ | colspan=3 | '''Số ít'''</br><span lang="mr" class="Deva">'''एकवचन'''</span> | colspan=3 | '''Số nhiều'''</br><span lang="mr" class="Deva">'''अनेकवचन'''</span> ]=] local person_number_header_table_div = [=[ |- class="hi-table-header" ]=] local person_number_header_pers_num_headers = [=[ | '''ngôi thứ nhất'''<br><span lang="mr" class="Deva">[[मी]]</span> | '''ngôi thứ hai (thân mật)'''<br><span lang="mr" class="Deva">[[तू]]</span> | '''ngôi thứ ba (gần người nói)''': <span lang="mr" class="Deva">[[हे]] / [[हा]] / [[ही]]</span></br>'''xa người nói''': <span lang="mr" class="Deva">[[ते]] / [[तो]] / [[ती]]</span> | '''ngôi thứ nhất (loại trừ): <span lang="mr" class="Deva">[[आम्ही]]</span></br>'''ngôi bao hàm''': <span lang="mr" class="Deva">[[आपण]]</span> | '''ngôi thứ nhất (thân mật)'''<br><span lang="mr" class="Deva">[[तुम्ही]]</span> | '''ngôi thứ ba (xa người nói)''': <span lang="mr" class="Deva">[[ही]] / [[हे]] / [[ह्या]] [[या]]</span></br>'''xa người nói''': <span lang="mr" class="Deva">[[ती]] / [[ते]] / [[त्या]]</span> ]=] -- Regular person-number header used at the top of the table and in the middle. local person_number_header = person_number_header_table_div .. person_number_header_two_row .. person_number_header_sg_pl_headers .. person_number_header_table_div .. person_number_header_pers_num_headers -- Reversed person-number header used at the bottom of the table. "Reversed" means that -- the two rows are in reversed order; but internally we can't switch the order of everything -- (e.g. the double-row cells at the left side), so we need to break up the header into multiple -- parts and only reverse certain parts. local reversed_person_number_header = person_number_header_table_div .. person_number_header_two_row .. person_number_header_pers_num_headers .. person_number_header_table_div .. person_number_header_sg_pl_headers local table_spec_personal = [=[ <div class="NavFrame" style="display: table;> <div class="NavHead hi-table-title" style="background: var(--wikt-palette-blue-2,#d9ebff);color:inherit;">Dạng ngôi của {inf_raw}</div> <div class="NavContent"> {\op}| class="inflection-table inflection-hi inflection-verb" data-toggle-category="inflection" |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Phi khía cạnh'' {person_number_header} |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | Giả định | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {subj_ns} | | | {subj_np} |- | class="hi-mf-cell" | {m} | colspan=3 | {subj_ms} | colspan=3 | {subj_mp} |- | class="hi-mf-cell" | {f} | colspan=3 | {subj_fs} | colspan=3 | {subj_fp} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | colspan=6 | {subj_neg} |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Hoàn thành'' |- | class="hi-tense-aspect-cell" rowspan=6 colspan=1 | Unmarked | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_perf_3sn} | | | {ind_perf_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_perf_1sm} | {ind_perf_2sm} | {ind_perf_3sm} | {ind_perf_1pm} | {ind_perf_2pm} | {ind_perf_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_perf_1sf} | {ind_perf_2sf} | {ind_perf_3sf} | {ind_perf_1pf} | {ind_perf_2pf} | {ind_perf_3pf} |- | class="hi-polarity-cell" rowspan=3 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_perf_neg_3sn} | | | {ind_perf_neg_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_perf_neg_1sm} | {ind_perf_neg_2sm} | {ind_perf_neg_3sm} | {ind_perf_neg_1pm} | {ind_perf_neg_2pm} | {ind_perf_neg_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_perf_neg_1sf} | {ind_perf_neg_2sf} | {ind_perf_neg_3sf} | {ind_perf_neg_1pf} | {ind_perf_neg_2pf} | {ind_perf_neg_3pf} |- | class="hi-sec-div" rowspan=1 colspan=100% | ''Chưa hoàn thành'' |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | {HAB} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {ind_hab_3sn} | | | {ind_hab_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {ind_hab_1sm} | {ind_hab_2sm} | {ind_hab_3sm} | rowspan = 2 | {ind_hab_1pm} | rowspan = 2 | {ind_hab_2pm} | rowspan = 2 | {ind_hab_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {ind_hab_1sf} | {ind_hab_2sf} | {ind_hab_3sf} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | {ind_hab_neg_1s} | {ind_hab_neg_2s} | {ind_hab_neg_3s} | {ind_hab_neg_1p} | {ind_hab_neg_2p} | {ind_hab_neg_3p} |- | class="hi-tense-aspect-cell" rowspan=4 colspan=1 | {PRS} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {prs_prog_3sn} | | | {prs_prog_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {prs_prog_1sm} | {prs_prog_2sm} | {prs_prog_3sm} | rowspan=2 | {prs_prog_1pm} | rowspan=2 | {prs_prog_2pm} | rowspan=2 | {prs_prog_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {prs_prog_1sf} | {prs_prog_2sf} | {prs_prog_3sf} |- | class="hi-polarity-cell" rowspan=1 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {mfn} | {prs_prog_neg_1s} | {prs_prog_neg_2s} | {prs_prog_neg_3s} | {prs_prog_neg_1p} | {prs_prog_neg_2p} | {prs_prog_neg_3p} |- | class="hi-tense-aspect-cell" rowspan=6 colspan=1 | {PST} | class="hi-polarity-cell" rowspan=3 colspan=1 | +</br>Khẳng định</br><span lang="mr" class="Deva">होकारार्थी</span> | class="hi-mf-cell" | {n} | | | {pst_prog_3sn} | | | {pst_prog_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {pst_prog_1sm} | {pst_prog_2sm} | {pst_prog_3sm} | {pst_prog_1pm} | {pst_prog_2pm} | {pst_prog_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {pst_prog_1sf} | {pst_prog_2sf} | {pst_prog_3sf} | {pst_prog_1pf} | {pst_prog_2pf} | {pst_prog_3pf} |- | class="hi-polarity-cell" rowspan=3 colspan=1 | –</br>Phủ định</br><span lang="mr" class="Deva">नकारार्थी</span> | class="hi-mf-cell" | {n} | | | {pst_prog_neg_3sn} | | | {pst_prog_neg_3pn} |- class="hi-row-f" | class="hi-mf-cell" | {m} | {pst_prog_neg_1sm} | {pst_prog_neg_2sm} | {pst_prog_neg_3sm} | {pst_prog_neg_1pm} | {pst_prog_neg_2pm} | {pst_prog_neg_3pm} |- class="hi-row-f" | class="hi-mf-cell" | {f} | {pst_prog_neg_1sf} | {pst_prog_neg_2sf} | {pst_prog_neg_3sf} | {pst_prog_neg_1pf} | {pst_prog_neg_2pf} | {pst_prog_neg_3pf} {reversed_person_number_header}|{\cl}{notes_clause}</div></div>]=] local pres_impf_table = [=[]=] local pres_impf_table_missing = [=[]=] local presum_table = [=[]=] local combined_subj = [=[]=] local split_subj = [=[]=] local notes_template = [===[ <div class="hi-footnote-outer-div"> <div class="hi-footnote-inner-div"> {footnote} </div></div> ]===] local forms = alternant_multiword_spec.forms local function make_gender_abbr(title, text) return '<span class="gender"><abbr title="' .. title .. '">' .. text .. '</abbr></span>' end local function make_tense_aspect_abbr(title, text) local template = [=[ ''<abbr style="font-variant: small-caps; text-transform: lowercase;" title="{title}">{text}</abbr>'']=] return m_string_utilities.format(template, {title = title, text = text}) end forms.m = make_gender_abbr("giống đực", "gđ") forms.f = make_gender_abbr("giống cái", "gc") forms.n = make_gender_abbr("giống trung", "gt") forms.mfn = forms.m .. " " .. forms.f .. " " .. forms.n forms.s = make_gender_abbr("số ít", "s") forms.p = make_gender_abbr("số nhiều", "p") forms.dir = make_gender_abbr("trực tiếp", "dir") forms.obl = make_gender_abbr("gián tiếp", "obl") forms.HAB = make_tense_aspect_abbr("Habitual", "HAB") forms.PERF = make_tense_aspect_abbr("Hoàn thành", "PERF") forms.SUBJ = make_tense_aspect_abbr("Giả định", "SUBJ") forms.IMPF = make_tense_aspect_abbr("Chưa hoàn thành", "IMPF") forms.PST = make_tense_aspect_abbr("Quá khứ", "PST") forms.FUT = make_tense_aspect_abbr("Tương lai", "FUT") forms.PRS = make_tense_aspect_abbr("Hiện tại", "PRS") forms.PRS_FUT = make_tense_aspect_abbr("Hiện tại/Tương lai", "PRS<br />FUT") forms.PRS_PST = make_tense_aspect_abbr("Hiện tại/Quá khứ", "PRS<br />PST") forms.PRS_PST_FUT = make_tense_aspect_abbr("Hiện tại/Quá khứ/Tương lai", "PRS<br />PST<br />FUT") forms.inf_raw = tag_text(forms.lemma) -- Now format the impersonal table. forms.footnote = forms.footnote_impers forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local formatted_table_impers = m_string_utilities.format(table_spec_impersonal, forms) -- Now format the personal table. forms.footnote = forms.footnote_pers forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" if forms.ind_pres_1s ~= "—" then -- होना forms.subj_table = m_string_utilities.format(split_subj, forms) forms.pres_impf_table = m_string_utilities.format(pres_impf_table, forms) forms.presum_table = m_string_utilities.format(presum_table, forms) else forms.subj_table = m_string_utilities.format(combined_subj, forms) forms.pres_impf_table = pres_impf_table_missing forms.presum_table = "" end forms.person_number_header = person_number_header forms.reversed_person_number_header = reversed_person_number_header local formatted_table_pers = m_string_utilities.format(table_spec_personal, forms) -- Concatenate both. return require("Module:TemplateStyles")("Module:hi-verb/style.css") .. formatted_table_impers .. formatted_table_pers end -- Implementation of template 'hi-verb cat'. -- NOTE: Not currently used. function export.catboiler(frame) local SUBPAGENAME = mw.loadData("Module:headword/data").pagename local params = { [1] = {}, } local args = m_para.process(frame:getParent().args, params) local function get_pos() local pos = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s ") if not pos then pos = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s$") end if not pos then error("Invalid category name, should be e.g. \"Marathi verbs with ...\" or \"Marathi ... verbs\"") end return pos end local function get_sort_key() local pos, sort_key = rmatch(SUBPAGENAME, "^Marathi.- ([^ ]*)s with (.*)$") if sort_key then return sort_key end pos, sort_key = rmatch(SUBPAGENAME, "^Marathi ([^ ]*)s (.*)$") if sort_key then return sort_key end return rsub(SUBPAGENAME, "^Marathi ", "") end local cats = {}, pos -- Insert the category CAT (a string) into the categories. String will -- have "Marathi " prepended and ~ substituted for the plural part of speech. local function insert(cat, atbeg) local fullcat = "Marathi " .. rsub(cat, "~", pos .. "s") if atbeg then table.insert(cats, 1, fullcat) else table.insert(cats, fullcat) end end local maintext while true do if args[1] then maintext = "~ " .. args[1] pos = get_pos() break end error("Unrecognized Marathi verb category name") end insert("~|" .. get_sort_key(), "at beginning") local categories = {} for _, cat in ipairs(cats) do table.insert(categories, "[[Thể loại:" .. cat .. "]]") end return "This category contains Marathi " .. rsub(maintext, "~", pos .. "s") .. "\n" .. mw.getCurrentFrame():expandTemplate{title="mr-categoryTOC", args={}} .. table.concat(categories, "") end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, translit=TRANSLIT, footnotes=FOOTNOTES}. function export.do_generate_forms(parent_args, pos, from_headword, def) local params = { [1] = {}, title = {}, } if from_headword then params["lemma"] = {list = true} params["id"] = {} end local args = m_para.process(parent_args, params) local PAGENAME = mw.loadData("Module:headword/data").pagename if not args[1] then if PAGENAME == "mr-conj" then args[1] = def or "ऐकणे" else args[1] = PAGENAME -- If pagename has spaces in it, add links around each word if args[1]:find(" ") then args[1] = "[[" .. rsub(args[1], " ", "]] [[") .. "]]" end end end local parse_props = { parse_indicator_spec = parse_indicator_spec, lang = lang, transliterate_respelling = com.transliterate_respelling, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(args[1], parse_props) alternant_multiword_spec.title = args.title alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args com.normalize_all_lemmas(alternant_multiword_spec) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_table = all_verb_slots, lang = lang, inflect_word_spec = conjugate_verb, -- Return the variant code that was added to ensure only parallel variants in -- multiword expressions like [[हिलना-डुलना]] get generated. See com.add_variant_codes() -- for more information. get_variants = alternant_multiword_spec.multiword and com.get_variants or nil, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) compute_categories_and_annotation(alternant_multiword_spec) return alternant_multiword_spec end -- Entry point for {{hi-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local alternant_multiword_spec = export.do_generate_forms(parent_args) show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang) end -- Concatenate all forms of all slots into a single string of the form -- "SLOT=FORM,FORM,...|SLOT=FORM,FORM,...|...". Each FORM is either a string in Devanagari or -- (if manual translit is present) a specification of the form "FORM//TRANSLIT" where FORM is the -- Devanagari representation of the form and TRANSLIT its manual transliteration. Embedded pipe symbols -- (as might occur in embedded links) are converted to <!>. If INCLUDE_PROPS is given, also include -- additional properties (currently, none). This is for use by bots. local function concat_forms(alternant_spec, include_props) local ins_text = {} for slot, _ in pairs(verb_slots_with_linked) do local formtext = iut.concat_forms_in_slot(alternant_spec.forms[slot]) if formtext then table.insert(ins_text, slot .. "=" .. formtext) end end return table.concat(ins_text, "|") end -- Template-callable function to parse and conjugate a verb given user-specified arguments and return -- the forms as a string of the same form as documented in concat_forms() above. function export.generate_forms(frame) local include_props = frame.args["include_props"] local parent_args = frame:getParent().args local alternant_spec = export.do_generate_forms(parent_args) return concat_forms(alternant_spec, include_props) end return export 3xiu000impzuiison891sfkc0878wr9 ǃ'OǃKung 0 390997 2341676 2026-04-01T10:35:38Z Hiyuune 50834 + en 2341676 wikitext text/x-wiki {{also|ǃOǃKung}} =={{langname|en}}== ==={{section|pr-noun}}=== {{en-proper noun}} # {{alternative form of|en|ǃOǃKung}}. {{C|en|Tên ngôn ngữ}} 6t4zils2zojja0adjznwr86syz1nj50 Thể loại:Mục từ có cách phát âm IPA tiếng Orma 14 390998 2341678 2026-04-01T11:50:31Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2341678 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx Thể loại:Bảo trì mục từ tiếng Orma 14 390999 2341681 2026-04-01T11:51:00Z WhoAlone 40420 Trang mới: “{{auto cat}}” 2341681 wikitext text/x-wiki {{auto cat}} eomzlm5v4j7ond1phrju7cnue91g5qx せいくわ 0 391000 2341682 2026-04-01T11:52:48Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|製靴|生果}}” 2341682 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|製靴|生果}} 5zwwkoe3s6mg7zl1dlaxbkzbamfzrdr 水𫞂日 0 391001 2341683 2026-04-01T11:54:07Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-kanjitab|すい|よう|ひ|k3=び|r=y|yomi=o2,k}} {{ja-see|水曜日}}” 2341683 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|すい|よう|ひ|k3=び|r=y|yomi=o2,k}} {{ja-see|水曜日}} ewftfazgw1f5xdd361upss8a6cr63vu すし 0 391002 2341684 2026-04-01T11:55:20Z WhoAlone 40420 Trang mới: “{{also|すじ|ずし}} =={{langname|ja}}== {{ja-see|寿司|酸模|酸し}}” 2341684 wikitext text/x-wiki {{also|すじ|ずし}} =={{langname|ja}}== {{ja-see|寿司|酸模|酸し}} m0lll2ms3nl4itv3rgu65wg9rzmgt85 久紫 0 391003 2341685 2026-04-01T11:56:29Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|寿司}}” 2341685 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|寿司}} 0ukbc5oo2afu0hrpzscltu75y9i2tc2 ひさ志 0 391004 2341686 2026-04-01T11:56:31Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|寿司}}” 2341686 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|寿司}} 0ukbc5oo2afu0hrpzscltu75y9i2tc2 尚四 0 391005 2341687 2026-04-01T11:56:33Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|寿司}}” 2341687 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|寿司}} 0ukbc5oo2afu0hrpzscltu75y9i2tc2 寿志 0 391006 2341688 2026-04-01T11:56:36Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|寿司}}” 2341688 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|寿司}} 0ukbc5oo2afu0hrpzscltu75y9i2tc2 壽司 0 391007 2341689 2026-04-01T11:57:05Z WhoAlone 40420 Trang mới: “=={{langname|ja}}== {{ja-see|寿司}}” 2341689 wikitext text/x-wiki =={{langname|ja}}== {{ja-see|寿司}} 0ukbc5oo2afu0hrpzscltu75y9i2tc2 2341690 2341689 2026-04-01T11:57:29Z WhoAlone 40420 2341690 wikitext text/x-wiki =={{langname|ja}}== {{ja-kanjitab|す|し|yomi=kan,o1}} {{ja-kanjitab|ひさ|し|yomi=nanori,o1}} {{ja-see|寿司}} 6uhxytds5l67hr7q25qf9z83rqpthtf