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