Wîkîferheng
kuwiktionary
https://ku.wiktionary.org/wiki/Destp%C3%AAk
MediaWiki 1.47.0-wmf.6
case-sensitive
Medya
Taybet
Gotûbêj
Bikarhêner
Gotûbêja bikarhêner
Wîkîferheng
Gotûbêja Wîkîferhengê
Wêne
Gotûbêja wêneyî
MediaWiki
Gotûbêja MediaWiki
Şablon
Gotûbêja şablonê
Alîkarî
Gotûbêja alîkariyê
Kategorî
Gotûbêja kategoriyê
Pêvek
Gotûbêja pêvekê
Nimînok
Gotûbêja nimînokê
Portal
Gotûbêja portalê
Tewandin
Gotûbêja tewandinê
Jinûvesazî
Gotûbêja jinûvesaziyê
TimedText
TimedText talk
Modul
Gotûbêja modulê
Event
Event talk
çûn
0
3143
6237726
6231816
2026-06-15T03:43:57Z
Ghybu
1393
/* Lêker */
6237726
wikitext
text/x-wiki
{{bnr-h|cun|cûn|cün|çun|çûn|çün}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/t͡ʃʰuːn/}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-çûn.wav|Deng|Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-çûn.wav|Deng|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çûn|form=negerguhêz|niha=her|niha2=ç|borî=çû}}
[[Wêne:Elephant_Walking_animated.gif|thumb|[[fîl|Fîlek]] bi rê ve [[çûn|diçe]].]]
{{lêker|ku|c=x-ngh}}
# Ji [[der]]ekê [[dûr ketin]], [[cih]]ek [[bi cih hêlan]] / [[bi cih hiştin]], [[dûr]]î derekê bûn.
#: {{hevmane|ku|herîn|rewtin|bi rê ketin}}
#* {{jêder-pirtûk|ku|jêgirtin=Nezer ji mala [[dewat]]ê der tê û di riya xwe de '''diçe'''.|nivîskar=Têmûrê Xelîl Mûradov|sernav=Nezerê Mêrxas|sal=1937|rûpel=}}
# [[hinda]] bûn, [[neman]], [[berze bûn]], [[rabûn]]:
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin='''Çûn''' ji behrê me'rîfet ew hate der<br />[[qetre|Qetre]] jêr werya bi ilham ew qeder}}
* {{jêder|ku|{{Jêgirtin/Feqiyê Teyran}}|jêgirtin=Taziyê uryan im ez</br>Perde '''çû''' ez mame tazî</br>Dil sera mehbûb dixwazî}}
==== Bi alfabeyên din ====
* {{ku-ar|چوون}}
* {{ku-kr|ч'ӧн}}
==== Herwiha ====
* {{g|ku|çûndin}}
* {{g|ku|çûyin}}
* {{g|ku|çûyîn}}
==== Dijmane ====
* {{g|ku|hatin}}
==== Têkildar ====
* {{g|ku|bezîn}}
* {{g|ku|gerîn}}
* {{g|ku|livîn}}
* {{g|ku|meşîn}}
==== Jê ====
{{stûn|
* {{mj|lêker}} {{g|ku|çûn anîn}}
* {{mj|navdêr}} {{g|ku|çûnanîn}}
* {{g|ku|çûyî}}
* {{g|ku|derçûn}}
* {{g|ku|jê çûn}}
* {{g|ku|ji ber çûn}}
* {{g|ku|ji bîrê çûn}}
* {{g|ku|ji dest çûn}}
* {{g|ku|jihev çûn}}
* {{g|ku|pev çûn}}
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|-}} *''[[ḱey-]]''. Guherîna *ḱ-ya [[proto-hindûewropî]] bi /ç/ di zimanên [[hindûîranî]] de diyardeyeke berbelav e, binêrin bo nimûne: ''[[çar]], [[çav]], [[çend]], [[çi]]''...
Hevreha {{hv|ckb|چوون}}, [[kurdiya başûrî]] ''[[çûn]]'', [[şêxbizinî]] ''[[cigin]]'', zazakî ''[[şiyayene]]'', goranî/hewramî ''[[şiyay]]'', osetî [[цӕуын]] (çæwyn), {{hv|fa|شدن|tr=berê /şuden/ bi wateya ''çûn'', niha /şoden/ bi manaya ''bûn, bûn tiştek''}}, tacikî [[шудан]] (şudan), {{hv|pal||şuten|sc=Latn}}, hexamenişî [[𐎠𐏁𐎡𐎹𐎺𐎶]] (š(i)yav-, /şiyev/), peştûyî {{g|ps|شول|tr=şwəl}}, {{hv|ae||ş(ii)aw-|sc=Latn}} (/şyew-/), {{hv|sa|च्य्अवते}} (cyávate: [[ketin]]), {{hv|grc|σεύω}} (seúō: [[dan pey]], li [[pey]] çûn; [[lezîn]]) û [[κῐ́ω]] (kíō: çûn) û [[κῑνέω]] (kīnéō: [[livandin]]), latînî ''[[cieō]]'' ([[livandin]]), albanî ''[[qoj]]'' (bixwîne: /çoy/, [[hişyar]] kirin)... Bêjeka kurdî ketiye ermenî wek {{hv|xcl|չուեմ|w=çûn}} û {{hv|hy|չու|w=rêwîtî}}, {{q|hy|չվել|w=bar kirin, koç kirin}}.
Peyva {{hv|grc|κῑνέω}} (kīnéō: [[livandin]]) wek [[kîne-]] û [[sîne-]] ketiye gelek zimanan û kurdî jî, bo nimûne: ''[[kînetîk]], [[sînema]]''.
;{{biçûk|Çavkanî:
* {{Cheung}}
* {{Chyet}}
* {{Lubotsky}}
* {{Tsabolov}}
}}
==== Werger ====
{{werger-ser|dûr ketin}}
* {{Z|de}}: {{W+|de|gehen}}, {{W+|de|fahren}}
* {{Z|az}}: {{W+|az|getmək}}
* {{Z|ba}}: {{W-|ba|барыу}}
* {{Z|br}}: {{W+|br|mont}}, {{W+|br|monet}}
* {{Z|bg}}: {{W+|bg|отивам|n}}
* {{Z|cs}}: {{W+|cs|jít}}
* {{Z|zh}}: {{W+|zh|去|tr=qǜ}}
* {{Z|da}}: {{W+|da|gå}}
* {{Z|ar}}: {{W+|ar|راح|tr=raḧe|cuda=راحَ}}, {{W+|ar|ذهب|tr=ḏehebe}}
* {{Z|eo}}: {{W+|eo|iri}}
* {{Z|fa}}: {{W+|fa|رفتن|tr=reften}}
* {{Z|fi}}: {{W+|fi|mennä}}, {{W+|fi|lähteä}}
* {{Z|vls}}: {{W-|vls|goan}}
* {{Z|fr}}: {{W+|fr|aller}}, {{W+|fr|partir}}
* {{Z|gag}}: {{W-|gag|gitmää}}
* {{Z|roa-gal}}: {{W-|roa-gal|aler}}, {{W-|roa-gal|alae}}
* {{Z|got}}: {{W-|got|𐌲𐌰𐌲𐌲𐌰𐌽|tr=gaggan}}
* {{Z|en}}: {{W+|en|go}}
* {{Z|ga}}: {{W-|ga|dul}}
* {{Z|it}}: {{W+|it|andare}}
* {{Z|ja}}: {{W+|ja|行く|tr=iku}}
* {{Z|krc}}: {{W-|krc|барыргъа}}
* {{Z|ca}}: {{W+|ca|anar}}
* {{Z|ky}}: {{W+|ky|баруу}}
* {{Z|ki}}: {{W-|ki|thie}}
* {{Z|ko}}: {{W+|ko|가다|tr=gada}}
* {{Z|kum}}: {{W-|kum|бармакъ}}
* {{Z|lb}}: {{W+|lb|goen}}
* {{Z|mk}}: {{W-|mk|оди|tr=ódi}}
* {{Z|mi}}: {{W-|mi|haere}}
* {{Z|hu}}: {{W+|hu|megy}}
* {{Z|nrf}}: {{W-|nrf|marchi}}
* {{Z|oc}}: {{W+|oc|anar}}
* {{Z|oia}}: {{W-|oia|mara}}
* {{Z|pt}}: {{W+|pt|ir}}
* {{Z|kk}}: {{W+|kk|бару|tr=baruw}}
* {{Z|ro}}: {{W+|ro|merge}}, se {{W+|ro|duce}}
* {{Z|se}}: {{W-|se|mannat}}, {{W-|se|johtit}}, {{W-|se|fitnat}}
* {{Z|sh}}: {{W+|sh|ići}}, {{W-|sh|ићи}}
* {{Z|sk}}: {{W+|sk|ísť}}
* {{Z|es}}: {{W+|es|ir}}
* {{Z|sv}}: {{W+|sv|gå}}, {{W+|sv|åka}}
* {{Z|zdj}}: {{W-|zdj|hwenɗa}}, {{W-|zdj|henɗa}}
* {{Z|tt}}: {{W-|tt|бару}}
* {{Z|tr}}: {{W+|tr|gitmek}}
* {{Z|tk}}: {{W-|tk|gitmek}}
* {{Z|vi}}: {{W+|vi|đi}}
* {{Z|kjh}}: {{W-|kjh|парарға}}
* {{Z|sah}}: {{W-|sah|бар}}
* {{Z|el}}: {{W+|el|πάω|tr=páo}}, {{W+|el|πηγαίνω|tr=piyéno}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# (ji "çûn") ''Binêre'': '''[[çûn]]'''.
=== Navdêr ===
{{ku-tewîn-nav|çûn|mê}}
{{navdêr|ku|z=m}}
# [[birêketin]], [[dûrketin]], [[dûr]]bûn, [[royîştin]], [[rewtin]], [[sefer]]kirin:
#: {{mk|ku|'''Çûna''' we bixêr be!|Hûn bixêr biçin!}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
{{bend}}
=== Hoker ===
{{hoker|ku}}
# [[wek|Wek]], [[mîna]], [[şibî]], [[nola]], [[fena]] (li [[pey]] peyvan bi kar tê).
#: {{mk|ku|mirov çûn|wek mirovan|birêz=1}}
==== Etîmolojî ====
Têkilî '' [[çawa]]''.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Lêker ===
{{lêker|ckb|sc=Latn}}
# {{g|ku|çûn}}
68xysy5zsbohb4hhtj3vb85vdjn1f6e
hatin
0
3609
6237727
6231301
2026-06-15T03:44:50Z
Ghybu
1393
/* Lêker */
6237727
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163_(kmr)-Key Mîrza-hatin.wav|Deng|Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|hatin|form=negerguhêz|niha=wer|niha2=ê|borî=hat}}
{{lêker|ku|c=x-ngh}}
# Ji [[cih]]ek [[dûr]]tir [[gihiştin]] cihek [[nêzîk]]tir; [[nêzîk]]tir bûn, [[nêzîk]] bûn.
#: {{mk|ku|Em ji dûr '''hatine'''.}}
#* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin=Lew Melek '''hatin''' ji bo wî sacidîn<br />Bû xezîne ew ji bo durra yetîm}}
#* {{jêder|ku|jêgirtin=Xuya ye ji devera wan '''dihên''' û ber bi Zaxo diçin.|{{Jêgirtin/Sidqî Hirorî/Kurê Zinarê Serbilind/1996}}}}
#* {{jêder|ku|jêgirtin=Erd û esman li te '''bên''' hev.|{{Jêgirtin/Ahmet Öner/Di edebiyata kurdî ya gelêrî da di’a û nifir/2017|r=119}}}}
# [[dema|Dema]] [[tişt]]ek ji [[mirov]]î re [[tê]] di bêjin.
#: {{mk|ku|Telefonek bu min '''hat'''.}}
# Bi [[rê]]ve hatin yan [[pê]]ya '''hatin'''.
#: {{mk|ku|Em pêya '''hatin''' vêrê.}}
# [[lêker|Lêker]]ek [[alîkar]] bo [[çêkirin]]a [[form]]a [[tebatî]] anku [[pasîv]].
#: {{mk|ku|Hemî '''hatin''' kuştin.}}
#: {{mk|ku|Stranên ko heta niha '''nehatine''' gotin, zimanê ko '''nehatiye''' vejandin, wêjeya '''ko''' nehatiye nivîsandin, klasîkên ko '''nehatine''' çapkirin û belavkirin, çanda ko '''nehatiye''' nasandin û gelek tiştên din...}}
#* {{jêder-kitêb|ku-pro|nekat=1|amadekar=D.N. Mackenzie|sernav=The Language of the Medians |nivîskar={{w|Matenadaran MS 7117|ziman=en}}|sal=~1430-1446|sala weşandinê=1959|jêgirtin=Pakəž xodé, pakəž záhm, pakəž vémark, kóy '''hat'ì''' xač'é, əškə́rma. Rahmát'ē ma.|tr=Pakij xudê, pakij zehm, pakij vêmerg, koy '''hatî''' xaçê, ijkir me rehmetê me<ref name="Bor2016">{{kovar|url=https://dergipark.org.tr/tr/download/article-file/416578|kovar=Nûbihar Akademî|nivîskar=D.N. Mackenzie|sernav=Zimanê Medan|sal=2016|terciman=İbrahim Bor|hejmar=4|rûpel=116}}</ref>|werger=Pakê Xweda, Pakê Qadir, Pakê Nemir, mirina di xaçê de ku '''hat''', Xweda bi me bê rehmê<ref name="Bor2016"/>}}
==== Bi alfabeyên din ====
* {{ku-ar|ھاتن}}
* {{ku-kr|һатьн}}
==== Dijmane ====
* {{g|ku|çûn}}
==== Jê ====
{{kol3|ku
| dahat
| dahate
| dahatin
| dahatî
| hatî
| hilhatin
| pêkhate
| pêk hatin
| hatin girtin<q:lêker>
| hatin berdan<q:lêker>
| hatin danîn
| hatin xistin
| hatin birin
| hatin kirin
| hatin xwarin
| hatingirtin<q:navdêr>
| hatinberdan<q:navdêr>
| hatindanîn
| hatinxistin
| hatinbirin
| hatinkirin
| hatinxwarin
}}
==== Etîmolojî ====
{{şêwexirab|beş}}
Ji {{ji|ine-pro|ku|-}} *'''g<sup>w</sup>em'''- ("hatin"),
{{ji|ira-pro||-}} *'''[[a]]'''- ("[[ber bi … ve]]") + '''gem'''- ("hatin"),
{{ae}}: '''a'''-'''gem'''- ("hatin"),
{{peo}}: '''a'''-'''gem'''- ("hatin"),
{{pal}}: '''a'''-'''md'''- ("hatin"),
{{fa}}: '''a'''-'''meden''' ("hatin"),
{{xpr}}: '''a'''-'''gd'''- ("hatin"),
{{sog}}: '''a'''-'''ğd'''- ("hatin"),
{{gil}}: '''a'''-'''men-''' ("hatin"),
{{siv}}: '''ā'''-'''mēy''' ("hatin") {{ir}},
[[partî]]: '''a'''-'''γd'''- ... {{ir}},
{{kmr}}: '''ha'''-'''tin''' ("hatin"),
{{ckb}}: '''ha'''-'''tin''' ("hatin"),
{{hac}}: '''a'''-'''may''' ("hatin"),
{{zza}}: '''a'''-'''mayen''' ("hatin"),
{{sa}}: '''gem''' ("hatin"),
{{la}}: '''venire''' ("hatin"),
{{el}}: '''bainein''' ("hatin"),
{{en}}: '''come''' ("hatin") ...
Ji hametin > havetin > havitin~hawitin > hawtin~havtin > hatin.
;{{biçûk|Çavkanî:
* {{Cheung|r=100}}
* {{Watkins|r=33}}
* {{Pokorny|r=465}}
[[hevreh|Hevreh]]: [[zeman]], [[gav]], [[peyam]]
}}
;{{biçûk|Çavkanî:
* {{Cheung|r=156}},
* {{Watkins|r=22}}
Bo rehê ''-wer-'' binêre: '''[[-wer-]]'''
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: hatin
* {{Z|sdh}}: hatin
* {{Z|lki}}: {{W-|lki|hetin|sc=Latn}}, hatin
* {{Z|hac}}: {{W-|hac|amay|sc=Latn}}
* {{Z|zza}}: {{W-|zza|ameyene}}, {{W-|zza|hamayene}}, [[amayene]], [[ameyîş]], [[amayîş]]
* Luřî: [[oman]]
==== Werger ====
{{werger-ser}}
* {{Z|ab}}: {{W-|ab|аара}}
* {{Z|ady}}: {{W-|ady|къэкӏон}}
* {{Z|af}}: {{W+|af|kom}}
* {{Z|ak}}: {{W-|ak|bra}}
* {{Z|sq}}: {{W+|sq|vij}}
* {{Z|pdc}}: {{W-|pdc|kumme}}
* {{Z|de}}: {{W+|de|kommen}}
*: {{Z|gsw}}: {{W-|gsw|choo}}
* {{Z|alt}}: {{W-|alt|келер}}
* {{Z|rup}}: {{W-|rup|vin}}, {{W-|rup|yin}}
* {{Z|inc-oas}}: {{W-|inc-oas|আস্}}, {{W-|inc-oas|আ}}
* {{Z|as}}: {{W-|as|আহ}}
* {{Z|ast}}: {{W+|ast|venir}}
* {{Z|ae}}: {{W-|ae|𐬘𐬀𐬨𐬀𐬌𐬙𐬌}}
* {{Z|az}}: {{W+|az|gəlmək}}
* {{Z|ban}}: {{W-|ban|teka}}
* {{Z|eu}}: {{W-|eu|etorri}}
* {{Z|bar}}: {{W-|bar|kemma}}
* {{Z|be}}: {{W-|be|прыбыва́ць|impf}}, {{W-|be|прыбы́ць|pf}}; {{W-|be|прыхо́дзіць|impf}}, {{W-|be|прыйсці́|pf}}; {{W-|be|прыязджа́ць|impf}}, {{W-|be|прые́хаць|pf}}
* {{Z|bn}}: {{W+|bn|আসা|sc=Beng}}
* {{Z|bqi}}: {{W-|bqi|اودن|tr=aweðen|sc=fa-Arab}}
* {{Z|bor}}: {{W-|bor|aregodu}}
* {{Z|brh}}: {{W-|brh|barr}}
* {{Z|bg}}: {{W-|bg|и́двам|impf}}, {{W-|bg|до́йда|pf}}
* {{Z|my}}: {{W+|my|လာ|sc=Mymr}}
* {{Z|chg}}: {{W-|chg|کلادو|tr=kelādū}}
* {{Z|ce}}: {{W-|ce|лела}}
* {{Z|cs}}: {{W+|cs|přicházet|impf}}, {{W+|cs|přijít|pf}}; {{W-|cs|přijíždět|impf}}, {{W+|cs|přijet|pf}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|嚟|tr=lei4; lai4}}
*: {{Z|dng}}: {{W-|dng|лэ}}
*: {{Z|cmn}}: {{W+|cmn|來|tr=lái}}
*: {{Z|cdo}}: {{W-|cdo|來|tr=lì}}
*: {{Z|wuu}}: {{W-|wuu|來}}
* {{Z|dlm}}: {{W-|dlm|vener}}
* {{Z|da}}: {{W+|da|komme}}
* {{Z|dlg}}: {{W-|dlg|кэл|tr=kel}}
* {{Z|id}}: {{W+|id|datang}}, {{W+|id|datang|cuda=mendatangi}}, {{W+|id|datang|cuda=mendatang}}, {{W+|id|datang|cuda=mendatangkan}}
* {{Z|ar}}: {{W-|ar|جَاءَ}}, {{W+|ar|أَتَى}}
*: {{Z|arz}}: {{W-|arz|جا|tr=gā|sc=Arab}}, {{W-|arz|جه|tr=geh|sc=Arab}}
*: {{Z|acw}}: {{W-|acw|جا|tr=jā|sc=Arab}}
*: {{Z|apc}}: {{W-|apc|إجا|tr=ʾijā}}
*: {{Z|aeb}}: {{W-|aeb|جاء|tr=jāʾ|sc=Arab}}
* {{Z|hy}}: {{W+|hy|գալ}}
* {{Z|eo}}: {{W+|eo|veni}}
* {{Z|et}}: {{W+|et|tulema}}
* {{Z|fa}}: {{W+|fa|آمدن|tr=âmadan}}
* {{Z|ddg}}: {{W-|ddg|ma'u}}
* {{Z|phn}}: {{W-|phn|𐤁𐤀}}
* {{Z|fo}}: {{W+|fo|koma}}
* {{Z|fi}}: {{W+|fi|tulla}}
* {{Z|fr}}: {{W+|fr|venir}}
* {{Z|fur}}: {{W-|fur|vignî}}
* {{Z|frr}}: {{W-|frr|kaame}}, {{W-|frr|kem}}, {{W-|frr|kum}}
* {{Z|fy}}: {{W+|fy|komme}}
* {{Z|gd}}: {{W-|gd|thig}}
* {{Z|gl}}: {{W+|gl|vir}}
* {{Z|ka}}: {{W-|ka|მისვლა|sc=Geor}}, {{W-|ka|ჩამოსვლა|sc=Geor}}
* {{Z|ht}}: {{W-|ht|vini}}
* {{Z|ha}}: {{W+|ha|zo}}
* {{Z|hi}}: {{W+|hi|आना}}
* {{Z|mww}}: {{W-|mww|los}}
* {{Z|nl}}: {{W+|nl|komen}}
* {{Z|hrx}}: {{W-|hrx|komme}}
* {{Z|he}}: {{W-|he|בָּא|tr=ba}}
* {{Z|io}}: {{W+|io|venar}}
* {{Z|ang}}: {{W-|ang|cuman}}
* {{Z|enm}}: {{W-|enm|comen}}
* {{Z|en}}: {{W+|en|come}}, {{W+|en|arrive}}
* {{Z|ia}}: {{W+|ia|venir}}
* {{Z|ga}}: {{W-|ga|tar}}
*: {{Z|sga}}: {{W-|sga|do·icc}}, {{W-|sga|do·tét}}
* {{Z|ist}}: {{W-|ist|vignì}}
* {{Z|it}}: {{W+|it|venire}}
* {{Z|is}}: {{W+|is|koma}}
* {{Z|ja}}: {{W+|ja|来る|tr=くる, kuru}}, {{W+|ja|いらっしゃる|tr=irassharu}}, {{W-|ja|おいでになる|tr=o-ide ni naru}}, {{W+|ja|参る|tr=まいる, mairu}}
* {{Z|kaw}}: {{W-|kaw|tĕka}}
* {{Z|jv}}: {{W+|jv|teka}}
* {{Z|kbd}}: {{W-|kbd|къэкӏуэн}}
* {{Z|rkt}}: {{W-|rkt|aṣ}}
* {{Z|xqa}}: {{W-|xqa|کَلْماكْ|tr=kelmēk}}
* {{Z|ca}}: {{W+|ca|venir}}
* {{Z|qu}}: {{W+|qu|hamuy}}, {{W-|qu|hamui}}, {{W-|qu|şamui}}, {{W-|qu|jamuy}}
* {{Z|ks}}: {{W-|ks|یُن}}
* {{Z|ky}}: {{W+|ky|келүү}}
* {{Z|ki}}: {{W-|ki|ũka}}
* {{Z|si}}: {{W-|si|එනවා|sc=Sinh}}
* {{Z|swb}}: {{W-|swb|ja|cuda=uja}}
* {{Z|ko}}: {{W+|ko|오다}}
* {{Z|jam}}: {{W-|jam|come}}
* {{Z|mfe}}: {{W-|mfe|vini}}
* {{Z|kum}}: {{W-|kum|гелмек}}
* {{Z|la}}: {{W+|la|venio}}, {{W+|la|progredior}}
* {{Z|lv}}: {{W+|lv|nākt}}
* {{Z|lo}}: {{W-|lo|ມາ}}
* {{Z|lt}}: {{W+|lt|ateiti}}
* {{Z|lmo}}: {{W-|lmo|vegnì}}
* {{Z|khb}}: {{W-|khb|ᦙᦱ}}
* {{Z|lut}}: {{W-|lut|ʔəƛ̕}}
* {{Z|mhn}}: {{W-|mhn|kemmen}}
* {{Z|mkz}}: {{W-|mkz|ma'u}}
* {{Z|mk}}: {{W-|mk|доаѓа|impf}}, {{W-|mk|дојде|pf}}
* {{Z|ms}}: {{W+|ms|datang}}, {{W+|ms|mari}}
* {{Z|mt}}: {{W-|mt|ġie}}
* {{Z|mnc}}: {{W-|mnc|ᠵᡳᠮᠪᡳ}}
* {{Z|gv}}: {{W-|gv|tar}}
* {{Z|msk}}: {{W-|msk|datung}}
* {{Z|yua}}: {{W-|yua|tal}}
* {{Z|hu}}: {{W+|hu|jön}}
* {{Z|egy}}: {{W-egy|jj|h=ii-i-D54}}, {{W-egy|jwj|h=D54-w}}
* {{Z|min}}: {{W-|min|datang}}
* {{Z|mn}}: {{W+|mn|ирэх}}
* {{Z|nci}}: {{W-|nci|huītz}}
* {{Z|gld}}: {{W-|gld|ди-}}
* {{Z|nap}}: {{W-|nap|venì}}
* {{Z|ne}}: {{W+|ne|आउनु}}
* {{Z|nrf}}: {{W-|nrf|v'nîn}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|komme}}
*: {{Z|nn}}: {{W-|nn|koma}}
* {{Z|cst}}: {{W-|cst|ká̄nak 'íwqisin}}
* {{Z|oc}}: {{W+|oc|venir}}, {{W-|oc|vir}}
* {{Z|or}}: {{W-|or|ଆସିବା}}
* {{Z|os}}: {{W-|os|ӕрцӕуын}}
* {{Z|ota}}: {{W-|ota|گلمك|tr=gelmek}}
* {{Z|ug}}: {{W-|ug|كەلمەك}}
* {{Z|uz}}: {{W+|uz|kelmoq}}
* {{Z|pap}}: {{W-|pap|bini}}
* {{Z|ps}}: {{W+|ps|راتلل|tr=rātlᶕl|sc=ps-Arab}}
* {{Z|ppl}}: {{W-|ppl|witz}}, {{W-|ppl|huitz}}
* {{Z|pl}}: {{W+|pl|przychodzić|impf}}, {{W+|pl|przyjść|pf}}; {{W+|pl|przyjeżdżać|impf}}, {{W+|pl|przyjechać|pf}}
* {{Z|pt}}: {{W+|pt|vir}}
* {{Z|pa}}: {{W+|pa|ਆਉਣਾ|tr=āuṇā}}
* {{Z|xpu}}: {{W-|xpu|𐤁𐤀}}
* {{Z|kk}}: {{W+|kk|келу}}
* {{Z|rhg}}: {{W-|rhg|ai}}
* {{Z|rm}}: {{W-|rm|vegnir}}, {{W-|rm|vagnir}}, {{W-|rm|neir}}, {{W-|rm|gnir}}
* {{Z|ro}}: {{W+|ro|veni}}
* {{Z|ru}}: {{W-|ru|приходи́ть|impf}}, {{W-|ru|прийти́|pf}}; {{W-|ru|приезжа́ть|impf}}, {{W-|ru|прие́хать|pf}}
* {{Z|osx}}: {{W-|osx|kuman}}
* {{Z|sa}}: {{W-|sa|गमति}}, {{W-|sa|आगच्छति}}
* {{Z|sc}}: {{W-|sc|bènnere}}, {{W-|sc|benni}}, {{W-|sc|bènniri}}, {{W-|sc|vènnere}}
* {{Z|scn}}: {{W+|scn|vèniri}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|доћи|pf|sc=Cyrl}}
*: Latînî: {{W+|sh|doći|pf}}
* {{Z|syl}}: {{W-|syl|ꠀꠃꠣ}}
* {{Z|sco}}: {{W-|sco|cum}}
* {{Z|sk}}: {{W-|sk|prichádzať|impf}}, {{W-|sk|prísť|pf}}
* {{Z|sl}}: {{W+|sl|priti|pf}}
* {{Z|so}}: {{W-|so|imasho}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|pśiś}}, {{W-|dsb|póraś|impf|cuda=se póraś}}
* {{Z|es}}: {{W+|es|venir}}
* {{Z|su}}: {{W-|su|sumping}}
* {{Z|sw}}: {{W-|sw|kuja}}
* {{Z|sv}}: {{W+|sv|komma}}
* {{Z|tg}}: {{W+|tg|омадан}}
* {{Z|tl}}: {{W-|tl|pumunta}}, {{W-|tl|magpunta}}
* {{Z|ta}}: {{W+|ta|வா}}
* {{Z|nod}}: {{W-|nod|ᨾᩣ|tr=ma|sc=Lana}}
* {{Z|th}}: {{W+|th|มา}}
* {{Z|crh}}: {{W-|crh|kelmek}}
* {{Z|tt}}: {{W+|tt|килергә}}
* {{Z|tet}}: {{W-|tet|mai}}
* {{Z|otk}}: {{W-|otk|𐰚𐰠|tr=kel-}}
* {{Z|tr}}: {{W+|tr|gelmek}}
* {{Z|tk}}: {{W+|tk|gelmek}}
* {{Z|bo}}: {{W-|bo|ཡོང|sc=Tibt}}, {{W-|bo|ཕེབས|sc=Tibt}}
* {{Z|xto}}: {{W-|xto|kum-}}, {{W-|xto|käm-}}
* {{Z|txb}}: {{W-|txb|käm-}}
* {{Z|tyv}}: {{W-|tyv|келир}}
* {{Z|ur}}: {{W+|ur|آنا|tr=ānā}}
* {{Z|uk}}: {{W-|uk|прихо́дити|impf}}, {{W-|uk|прийти́|pf}}; {{W-|uk|приїжджа́ти|impf}}, {{W-|uk|приї́хати|pf}}, {{W-|uk|приїзди́ти|impf}}
* {{Z|vec}}: {{W+|vec|vegner}}
* {{Z|vi}}: {{W+|vi|lại}}, {{W+|vi|đến}}
* {{Z|wa}}: {{W+|wa|vni}}, {{W+|wa|vini}}
* {{Z|cy}}: {{W+|cy|dod}}
* {{Z|kjh}}: {{W-|kjh|килерге}}
* {{Z|km}}: {{W+|km|មក}}
* {{Z|sah}}: {{W-|sah|кэл}}
* {{Z|yag}}: {{W-|yag|akata}}
* {{Z|yi}}: {{W-|yi|קומען|sc=Hebr}}
* {{Z|yo}}: {{W-|yo|wá}}, {{W-|yo|bọ̀}}
* {{Z|el}}: {{W+|el|έρχομαι}}
*: Kevn: {{W-|grc|ἀφικνέομαι}}, {{W-|grc|ἔρχομαι}}, {{W-|grc|ἱκνέομαι}}, {{W-|grc|ἱκάνω}}, {{W-|grc|ἵκω}}, {{W-|grc|ἥκω}}, {{W-|grc|ἕπομαι}}
* {{Z|zea}}: {{W-|zea|komme}}
* {{Z|za}}: {{W-|za|daeuj}}
* {{Z|zu}}: {{W-|zu|za|cuda=-za}}
{{werger-bin}}
=== Navdêr ===
{{ku-tewîn-nav|hatin|mê}}
{{navdêr|ku|z=m}}
# [[amadebûn]], [[hazirbûn]], [[gihiştin]]
#: {{mk|ku|Bi '''hatina''' te kêfxweş bûm.}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|aankoms}}
* {{Z|sq}}: {{W+|sq|arritje|m}}
* {{Z|de}}: {{W+|de|Ankunft|m}}
* {{Z|az}}: {{W-|az|gəliş}}
* {{Z|be}}: {{W-|be|прыбыццё|nt|sc=Cyrl}}, {{W-|be|прые́зд|n|sc=Cyrl}}, {{W-|be|прыхо́д|n|sc=Cyrl}}, {{W-|be|прылёт|n|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|আগমন}}
* {{Z|bg}}: {{W-|bg|присти́гане|nt}}
* {{Z|my}}: {{W+|my|ဆိုက်ရောက်|sc=Mymr}}, {{W-|my|ရောက်လာခြင်း|sc=Mymr}}
* {{Z|cs}}: {{W+|cs|příchod|n}}, {{W+|cs|příjezd|n}}, {{W+|cs|přílet|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|到達|tr=dàodá}}, {{W-|cmn|到來|tr=dàolái}}, {{W-|cmn|抵達|tr=dǐdá}}
* {{Z|da}}: {{W+|da|ankomst|g}}
* {{Z|id}}: {{W+|id|kedatangan}}
* {{Z|ar}}: {{W-|ar|وُصُول|n}}, {{W-|ar|وِفَادَة|m}}
*: {{Z|arz}}: {{W-|arz|وصول|n|tr=wuṣūl}}
* {{Z|hy}}: {{W+|hy|ժամանում}}, {{W+|hy|գալուստ}}
* {{Z|eo}}: {{W+|eo|alveno}}
* {{Z|et}}: {{W+|et|saabumine}}
* {{Z|fa}}: {{W+|fa|ورود|tr=vorud}}
* {{Z|fi}}: {{W+|fi|saapuminen}}
* {{Z|fr}}: {{W+|fr|arrivée|m}}
* {{Z|gl}}: {{W-|gl|chegada|m}}, {{W+|gl|vida|m}}
* {{Z|got}}: {{W-|got|𐌵𐌿𐌼𐍃|n}}
* {{Z|ka}}: {{W-|ka|ჩამოსვლა}}, {{W-|ka|ჩამოფრენა}}
* {{Z|hi}}: {{W+|hi|आगमन|n|sc=Deva}}
* {{Z|nl}}: {{W+|nl|komst|m}}, {{W+|nl|aankomst|m}}
* {{Z|he}}: {{W-|he|הַגָּעָה|m|tr=haga'a|sc=Hebr}}
* {{Z|en}}: {{W+|en|coming}}, {{W+|en|advent}}, {{W+|en|arrival}},
* {{Z|it}}: {{W+|it|arrivo|n}}
* {{Z|is}}: {{W+|is|koma|m}}
* {{Z|ja}}: {{W+|ja|到着|tr=とうちゃく, tōchaku|sc=Jpan}}
* {{Z|ca}}: {{W+|ca|arribada|m}}
* {{Z|ko}}: {{W-|ko|도착(到着)}}
* {{Z|la}}: {{W+|la|perventio|m}}, {{W+|la|adventum|nt}}, {{W+|la|adventus|n}}
* {{Z|lt}}: {{W+|lt|gimimas|n}}
* {{Z|mk}}: {{W-|mk|пристигнување|nt|sc=Cyrl}}
* {{Z|ms}}: {{W+|ms|kedatangan}}, {{W-|ms|ketibaan}}
* {{Z|mi}}: {{W-|mi|taenga}}, {{W-|mi|taetaenga}}, {{W-|mi|haramaitanga}}
* {{Z|hu}}: {{W+|hu|érkezés}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|ankomst|n}}
*: {{Z|nn}}: {{W-|nn|framkome|m}}, {{W-|nn|tilkomst|n}}, {{W-|nn|framkomst|n}}
* {{Z|ota}}: {{W-|ota|ادراك|tr=idrak}}
* {{Z|uz}}: {{W-|uz|yetib kelish}}, {{W+|uz|kelish}}
* {{Z|pdt}}: {{W-|pdt|Aunkunft|m}}
* {{Z|pl}}: {{W+|pl|przybycie|nt}}, {{W+|pl|przyjazd|n}}, {{W+|pl|przyjście|nt}}, {{W+|pl|przylot|n}}
* {{Z|pt}}: {{W+|pt|chegada|m}}, {{W+|pt|vinda|m}}
* {{Z|ro}}: {{W+|ro|venire|m}}, {{W+|ro|sosire|m}}, {{W+|ro|ajungere|m}}
* {{Z|ru}}: {{W-|ru|прибы́тие|nt}}, {{W-|ru|прие́зд|n}}, {{W-|ru|прихо́д|n}}, {{W+|ru|прилёт|n}}
* {{Z|sa}}: {{W+|sa|आगमन|nt}}
* {{Z|sk}}: {{W-|sk|príchod|n}}, {{W-|sk|príjazd|n}}, {{W-|sk|prílet}}
* {{Z|sl}}: {{W+|sl|prihod|n}}
* {{Z|es}}: {{W+|es|llegada|m}}, {{W+|es|venida|m}}, {{W+|es|arribo|n}}, {{W+|es|arribada|m}}
* {{Z|sw}}: {{W+|sw|ujaji}}
* {{Z|sv}}: {{W+|sv|ankomst|g}}
* {{Z|tl}}: {{W-|tl|dating}}
* {{Z|twf}}: {{W-|twf|kwònéne}}
* {{Z|th}}: {{W-|th|การมาถึง|tr=gaan maa tʉ̌ng}}
* {{Z|te}}: {{W+|te|ఆగమనము}}
* {{Z|tr}}: {{W+|tr|geliş}}
* {{Z|ur}}: {{W+|ur|آمد|n|tr=āmad|sc=ur-Arab}}
* {{Z|uk}}: {{W-|uk|прибуття́|nt|sc=Cyrl}}, {{W-|uk|приї́зд|n|sc=Cyrl}}, {{W-|uk|прихі́д|n|sc=Cyrl}}, {{W-|uk|прилі́т|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|đến|cuda=sự đến}}
* {{Z|cy}}: {{W-|cy|dyfodiad|n}}
* {{Z|km}}: {{W+|km|ដំណល់|tr=dɑmnɑl|sc=Khmr}}
* {{Z|el}}: {{W+|el|άφιξη|m}}
*: Kevn: {{W-|grc|ἄφιξις|m}}, {{W-|grc|ἔλευσις|m}}
{{werger-bin}}
smt9myfu0942hd8tkmxf9kgcy4b9t5o
çip
0
4726
6237702
6129528
2026-06-14T14:54:55Z
Ghybu
1393
6237702
wikitext
text/x-wiki
{{bnr-h|cip|cîp|çîp}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr 1===
{{ku-tewîn-nav|çip|mê}}
{{navdêr|ku|z=m}}
# [[dilop]], [[lib]]ên avê, [[heb]]ên avê yan yên [[şilî|şiliyek]]e din
#: {{nim|ku|Baran '''çip-çip''' dibarî.}}
# {{f|ku|mecazî}} [[piçek]], [[kêm]], [[hinek]]
#: {{nim|ku|Ger '''çipek''' jî hiş di serê te heba, te wa nedigot.}}
==== Ji wêjeyê ====
* {{jêder|ku|jêgirtin=Qedeha xwe ta '''çipa''' dawîn bi ser dilê xwe de kir, destê xwe bi serûçavên xwe de anî. Paşî destê xwe kir berîka xwe de û parçehelbesta xwe deranî. Xemek xweşik ket ser rûyê wî, dişibî mijek binefşî. Ji xwe re got: Helbest jiyanek bi serê xwe ye, wek tê gotin, zimanê xwedayan e. Ev tenêtiya min, esmanê sayî, dara şên, çîrok û şano, hemî bedewî û delaliyên vê jiyanê helbest in. 'Neke' û 'here' yên keçan, axîn û nalînên kuran, xwişîn û lemelema kanîkan, berfa rizde û betenan, hemî helbest in. Jiyana helbest tê de nemîne, dê bibe cemed û qeşayek bêtam û bêbêhn.| Reûf Bêgerd: ''Mirina helbestvanekî'', wergerrandin ji soranî: Husein Muhammed, Nefel.com, 10/2009}}
==== Etîmolojî ====
{{onom|ku}}, bide ber îbrî [[טיפה]] (ṭipa)
==== Jê ====
{{kol3|ku|cure=Jê
|çip kirin<q:lêker>
|çipkirin<q:navdêr>
|çipkirî<q:rengdêr>
|çipandin
|çip-çip
|çip-çipî
|çip-çipkî
|çipî
|çipîn
|çipik
|çipikandin
|çipikî
|çipikîn
}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Tropfen}} {{nt}}
* {{Z|fi}}: {{W+|fi|pisara}}
* {{Z|fr}}: {{W+|fr|goutte}}
* {{Z|nl}}: {{W+|nl|druppel}} {{n}}
* {{Z|en}}: {{W+|en|drop}}
* {{Z|it}}: {{W+|it|goccia}}
* [[slovakî]]: [[kvapka]]
* {{Z|tr}}: {{W+|tr|damla}}, {{W+|tr|şıp}}, {{W+|tr|pıt}}, {{W+|tr|zıp|guman=erê}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# '''xwe çip kirin''': xwe[[hilavêtin]]
#* {{bêmînak|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
1rt4c8y88spgfe7c59mlgm02p84bdx8
rêbir
0
5568
6237732
6236208
2026-06-15T10:11:51Z
IbrahimKocher Duhok
4280
/* Werger */
6237732
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}} {{r-ya req}}
* {{kîte|ku|rê|bir}}
=== Navdêr 1 ===
{{ku-tewîn-nav|rêbir|mê}}
{{navdêr|ku|z=m}}
# Kesa/ê [[rê]] [[girtin|digire]].
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|رێبڕ}}
==== Herwiha ====
* [[rêbirr]]
==== Hevmane ====
* [[rêgir]]
* [[korsan]]
* [[eşqiya]]
* [[heydûd]]
* [[nijdevan]]
* [[çete]]
==== Etîmolojî ====
Ji {{qertaf|ku|rê|-bir}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Räuber|m|guman=erê}}, {{W+|de|Behinderung|f|guman=erê}}
* {{Z|ar}}: {{W-|ar|قاطع طريق}};{{W-|ar|لص}}
* {{Z|en}}: {{W+|en|raider}}, {{W+|en|brigand}}, {{W+|en|bandit}}, {{W+|en|pirate}}, {{W+|en|highwayman}}, {{W+|en|bandolero|guman=erê}}, {{W-|en|highway robber|guman=erê}}
* {{Z|tr}}: {{W+|tr|gangster}}, {{W+|tr|hayta}}, {{W+|tr|korsan}}, {{W+|tr|eşkıya}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=mn}}
# ''(kesa/ê rê nîşanî xelkê dide) Binere'': '''[[rêber]]'''
#* {{bêmînak|ku}}
gb1zvbjjot3ku0dx8gtl6sf2isi2wyg
cil
0
7061
6237697
6114607
2026-06-14T14:24:34Z
Ghybu
1393
/* Navdêr */
6237697
wikitext
text/x-wiki
{{bnr-h|cil|cîl|çil|çîl}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-cil.wav|Deng|Amed}}
* {{ku-kîte}}
=== Navdêr ===
{{ku-tewîn-nav|cil|nêr}}
[[Wêne:Clothes.jpg|thumb|Hin [[cûn]] '''cilên''' dîrokî.]]
{{navdêr|ku|z=n}}
# Tiştên mirov [[li xwe kirin|li xwe dikin]] anku [[kirin ber xwe|dikin ber xwe]] (wek [[gumlek]], [[derpî]], [[gore]], [[fanêle]], [[saqo]] û hwd.).
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Darûwê qelbê Melê bû</br>Lew bi çehvên min '''cila''' ye</br>Banesîm dê çî lezînî}}
==== Bi alfabeyên din ====
* {{ku-ar|جل}}
==== Herwiha ====
* [[cilik]]
* [[cilk]]
==== Hevmane ====
* [[çek]]
* [[libas]]
* [[kinc]]
* [[berg]]
==== Jê ====
{{kol3|ku|cure=Jê
|cil şil bûn<q:lêker>
|cil şil kirin<q:lêker>
|cil ziwa bûn
|cil ziwa kirin
|cil kirin
|cil xistin
|cillixwekirin<q:navdêr>
|ciljixwekirin<q:navdêr>
|ciljiberxwekirin<q:navdêr>
|cilşilbûn
|cilşilkirin
|cilziwabûn
|cilziwakirin
|cilbiristêvekirin
|ciljiristêvekirin
|cilkirin
|cilxistin
|bêcil
|bêcilî
|bicil
|bicilî
|bincil
|cildir
|cildirî
|cildirû
|sercil
}}
==== Etîmolojî ====
Herwiha [[cilik]], [[hevreh]]a tirkî [[çul]], herdu ji {{ji|ar|ku|جلة}} (culle<sup>t</sup>: cil, libas; [[sercil]]). Peyva erebî bi xwe ihtimalen ji {{ji|tr|ku|yelek}} e, ji tirkiya kevn [[yél-]] ([[pif]] dan, [[pif]] kirinê). Ji eynî rehî: [[êlek]], [[jîle]]. Bo guherîna Y bi C bide ber: [[cihû]], [[cejn]], [[cuda]], [[cot]]... Peyva [[çek]] ya bi maneya "cil" jî dîsa kurtkirina "*celek" (cil, cilik) e lê L û E-yek jê hatine avêtin û C hatiye bêlerzkirin anku bûye Ç. Heman peyv wek [[jelick]] / [[gilet]] ketiye zimanên ewropî jî û wek [[jîle]] / [[jile]] li kurdî û tirkî vegeriye.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|klere}}
* {{Z|sq}}: {{W-|sq|rroba}}, {{W-|sq|tesha}}, {{W+|sq|veshje|m}}, {{W+|sq|enë}}
* {{Z|pdc}}: {{W-|pdc|Gleeder|nt-p}}
* {{Z|de}}: {{W+|de|Kleider|nt-p}}, {{W+|de|Kleidung|m}}; {{W+|de|Anziehsachen|m-p}}, {{W+|de|Klamotten|m-p}}
* {{Z|alt}}: {{W-|alt|кийим}}
* {{Z|rup}}: {{W-|rup|vishtimintu|nt}}, {{W-|rup|nviscãmindu|nt}}, {{W-|rup|stranj|nt}}, {{W-|rup|stranjiu|nt}}, {{W-|rup|alãxãmintu|nt}}, {{W-|rup|stoli}}, {{W-|rup|custumi}}
* {{Z|ast}}: {{W-|ast|ropa|m}}
* {{Z|az}}: {{W+|az|geyim}}, {{W+|az|paltar}}, {{W-|az|libas}}, {{W-|az|əyin}}
* {{Z|eu}}: {{W-|eu|arropa}}
* {{Z|ba}}: {{W-|ba|кейем}}
* {{Z|be}}: {{W-|be|адзе́жа|m}}, {{W-|be|адзе́нне|nt}}
* {{Z|bn}}: {{W+|bn|পোশাক}}, {{W+|bn|কাপড়}}, {{W+|bn|বস্ত্র}}
* {{Z|bg}}: {{W+|bg|облекло́|nt}}, {{W+|bg|дре́хи|p}}, {{W+|bg|оде́жда|m}}
* {{Z|my}}: {{W+|my|အဝတ်အစား}}
* {{Z|ccc}}: {{W-|ccc|ropa}}
* {{Z|cs}}: {{W+|cs|oblečení|nt}}, {{W+|cs|šaty|p}}
* {{Z|chr}}: {{W-|chr|ᏧᎾᏄᏬ}}, {{W-|chr|ᏗᎿᏬ}}
* {{Z|cic}}: {{W-|cic|naafka}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|衣服|tr=ji1 fuk6}}, {{W-|yue|服裝|tr=fuk6 zong1}}, {{W-|yue|衣著}}, {{W-|yue|衣着|tr=ji1 zoek3}}, {{W-|yue|衫褲|tr=saam1 fu3}}, {{W-|yue|衫|tr=saam1}}
*: {{Z|dng}}: {{W-|dng|йишон}}, {{W-|dng|йифу}}
*: {{Z|hak}}: {{W-|hak|服裝|tr=fu̍k-chông}}, {{W-|hak|衫褲|tr=sâm-fu}}
*: {{Z|cmn}}: {{W+|cmn|衣服|tr=yīfu}}, {{W+|cmn|服裝|tr=fúzhuāng}}, {{W+|cmn|衣裳|tr=yīshang}}, {{W-|cmn|衣著}}, {{W+|cmn|衣着|tr=yīzhuó}}
*: {{Z|cdo}}: {{W-|cdo|衣裳|tr=ĭ-siòng}}
*: {{Z|nan}}: {{W-|nan|衣服|tr=i-ho̍k}}, {{W+|nan|服裝|tr=ho̍k-tsong}}, {{W-|nan|衫褲|tr=saⁿ-khò͘}}, {{W+|nan|衫仔褲|tr=saⁿ-á-khò͘}}, {{W+|nan|衫|tr=saⁿ}}
*: {{Z|wuu}}: {{W-|wuu|衣裳}}
* {{Z|da}}: {{W+|da|tøj|nt}}, {{W-|da|klæder|p}}, {{W-|da|beklædning|g}}
* {{Z|dlg}}: {{W-|dlg|таӈас|tr=taňas}}
* {{Z|id}}: {{W+|id|pakaian}}
* {{Z|ar}}: {{W-|ar|مَلَابِس|m}}, {{W-|ar|ثِيَاب|m}}, {{W-|ar|كِسْوَة|m}}
*: {{Z|arz}}: {{W-|arz|هدوم|tr=hidūm}}, {{W-|arz|لبس|n|tr=libs}}
* {{Z|hy}}: {{W+|hy|հագուստ}}, {{W+|hy|զգեստ}}
* {{Z|eo}}: {{W+|eo|vestaĵo}}
* {{Z|et}}: {{W-|et|kehakate}}, {{W-|et|riided}}, {{W-|et|riietus}}
* {{Z|fa}}: {{W+|fa|لباس|tr=lebâs}}, {{W+|fa|پوشاک|tr=pušâk}}
* {{Z|ddg}}: {{W-|ddg|faru}}
* {{Z|fo}}: {{W-|fo|klæði|nt-p}}
* {{Z|fi}}: {{W+|fi|vaate}}
* {{Z|vls}}: {{W-|vls|klêers|p}}
* {{Z|fr}}: {{W+|fr|vêtements}}
* {{Z|gd}}: {{W-|gd|aodach|n}}
* {{Z|gl}}: {{W+|gl|vestimenta|m}}
* {{Z|ka}}: {{W-|ka|ტანსაცმელი}}
* {{Z|haw}}: {{W-|haw|lole}}
* {{Z|hi}}: {{W+|hi|कपड़ा|cuda=कपड़े|n-p}}
* {{Z|mww}}: {{W-|mww|khaub ncaws}}
* {{Z|nl}}: {{W+|nl|kleren|p}}
* {{Z|he}}: {{W-|he|בְּגָדִים|n-p|tr=bgadím}}
* {{Z|io}}: {{W+|io|vesti}}, {{W+|io|vestaro}}
* {{Z|ilo}}: {{W-|ilo|bado}}
* {{Z|ang}}: {{W-|ang|clāþas|n-p}}
* {{Z|enm}}: {{W-|enm|clething}}
* {{Z|en}}: {{W+|en|clothes}}
* {{Z|ga}}: {{W-|ga|éadach|n}}
* {{Z|ist}}: {{W-|ist|vesteîti}}
* {{Z|it}}: {{W+|it|vestiti|n-p}}, {{W+|it|abbigliamento|n}}
* {{Z|is}}: {{W+|is|föt|nt-p}}
* {{Z|ja}}: {{W+|ja|衣服|tr=いふく, ifuku}}, {{W+|ja|服|tr=ふく, fuku}}, {{W+|ja|衣類|tr=いるい, irui}}
* {{Z|jv}}: {{W+|jv|panganggo}}
* {{Z|xal}}: {{W-|xal|хувцн}}
* {{Z|pam}}: {{W-|pam|malan}}
* {{Z|krc}}: {{W-|krc|кийим|tr=kiyim}}
* {{Z|kdr}}: {{W-|kdr|kijit́}}
* {{Z|ca}}: {{W+|ca|roba}}
* {{Z|qu}}: {{W-|qu|p'acha}}
* {{Z|ky}}: {{W+|ky|кийим}}
* {{Z|ko}}: {{W+|ko|옷}}, {{W+|ko|의복}}
* {{Z|kum}}: {{W-|kum|гийим|tr=giyim}}
* {{Z|la}}: {{W-|la|vestīmenta|nt-p}}, {{W-|la|vestītus|n}}, {{W-|la|vestis|m}}, {{W-|la|velāmen|nt}}
* {{Z|lv}}: {{W-|lv|drēbes|m-p}}
* {{Z|lo}}: {{W-|lo|ສົ້ງເສື້ອ}}, {{W-|lo|ເສື້ອຜ້າ}}, {{W-|lo|ເຄື່ອງນຸ່ງ}}
* {{Z|lt}}: {{W-|lt|apranga|m}}
* {{Z|mk}}: {{W-|mk|облека|m}}
* {{Z|ms}}: {{W+|ms|pakaian}}
* {{Z|mt}}: {{W-|mt|ħwejjeġ|p}}
* {{Z|mi}}: {{W-|mi|kākahu}}, {{W-|mi|koheka}}
* {{Z|hu}}: {{W+|hu|ruha}}, {{W+|hu|ruhák}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|хувцас}}, {{W+|mn|хунар}}
* {{Z|nv}}: {{W-|nv|ééʼ}}
* {{Z|ne}}: {{W+|ne|कपडा}}
* {{Z|nay}}: {{W-|nay|mayinggar}}
* {{Z|nog}}: {{W-|nog|кийим}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|klær|p}}, {{W-|nb|bekledning|m}}
* {{Z|oc}}: {{W+|oc|vestit|n}}
* {{Z|om}}: {{W-|om|uffata}}
* {{Z|os}}: {{W-|os|дарӕс}}, {{W-|os|уӕлӕдарӕс}}, {{W-|os|дзаума}}
* {{Z|ug}}: {{W+|ug|كىيىم}}
* {{Z|uz}}: {{W+|uz|kiyim}}, {{W+|uz|libos}}
* {{Z|ps}}: {{W-|ps|البسه|m-p|tr=albesá}}, {{W-|ps|نواري|n-p|tr=nawārí}}
* {{Z|pl}}: {{W+|pl|ubranie|nt}}, {{W-|pl|ubrania|nt-p}}, {{W+|pl|odzież|n}}
* {{Z|pt}}: {{W+|pt|roupa|m}}, {{W+|pt|vestuário|n}}
* {{Z|pa}}: {{W-|pa|ਬਸਤਰ|n}}, {{W-|pa|ਕੱਪੜੇ|n-p}}, {{W-|pa|ਪਹਿਰਾਵਾ|n}}
* {{Z|kk}}: {{W-|kk|киім}}
* {{Z|rom}}: {{W-|rom|gada|n-p}}
* {{Z|ro}}: {{W+|ro|haine|m-p}}, {{W+|ro|îmbrăcăminte|m}}, {{W+|ro|rufe|m-p}}
* {{Z|ru}}: {{W+|ru|оде́жда|m}}, {{W+|ru|одёжа|m}}
* {{Z|ceb}}: {{W-|ceb|sinina}}
* {{Z|sid}}: {{W-|sid|uddano}}
* {{Z|csm}}: {{W-|csm|ˀyká·py-}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|о̏дећа|m}}, {{W-|sh|о̏дјећа|m}}, {{W-|sh|о̀дежда|m}}
*: Latînî: {{W+|sh|ȍdeća|m}}, {{W+|sh|ȍdjeća|m}}, {{W+|sh|òdežda|m}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|одежда|m}}
* {{Z|sk}}: {{W-|sk|oblečenie|nt}}, {{W-|sk|šaty|p}}, {{W-|sk|oblek|n}}
* {{Z|sl}}: {{W+|sl|obleka|m}}, {{W-|sl|perílo|nt}}
* {{Z|so}}: {{W-|so|lebis}}
* {{Z|st}}: {{W-|st|diaparo}}
* {{Z|es}}: {{W+|es|ropa|m}}, {{W+|es|trapos|n-p}}
* {{Z|sv}}: {{W+|sv|kläder|c-p}}
* {{Z|tg}}: {{W+|tg|либос}}
* {{Z|tl}}: {{W-|tl|kasuotan}}, {{W+|tl|damit}}
* {{Z|ta}}: {{W+|ta|உடுப்பு}}, {{W+|ta|உடை}}, {{W+|ta|ஆடை}}, {{W+|ta|துணி}}
* {{Z|rif}}: {{W-|rif|arruḍ|n}}
* {{Z|th}}: {{W+|th|เสื้อผ้า}}
* {{Z|crh}}: {{W-|crh|urba}}
* {{Z|tt}}: {{W+|tt|кием}}
* {{Z|tr}}: {{W+|tr|giyim}}, {{W+|tr|giysi}}, {{W+|tr|örtüler}}
* {{Z|tk}}: {{W-|tk|geýim}}, {{W-|tk|egin-eşik}}
* {{Z|bo}}: {{W-|bo|ན་བཟའ}}, {{W-|bo|དུག་སློག}}
* {{Z|kim}}: {{W-|kim|кедім|tr=kedim}}
* {{Z|tpi}}: {{W-|tpi|klos}}
* {{Z|txb}}: {{W-|txb|wastsi}}
* {{Z|ur}}: {{W-|ur|کپڑا|cuda=کپڑے|n-p|tr=kapṛe}}, {{W-|ur|لباس|tr=libās}}, {{W-|ur|پوشاک|tr=pośāk}}
* {{Z|uk}}: {{W+|uk|о́дяг|n}}, {{W-|uk|оде́жа|m}}, {{W-|uk|о́діж|m}}
* {{Z|uum}}: {{W-|uum|кийим|tr=kiyim}} ,{{W-|uum|т'ийим|tr=t́iyim}}
* {{Z|vi}}: {{W+|vi|quần áo}}, {{W+|vi|đồ}}
* {{Z|cy}}: {{W+|cy|dillad|p}}, {{W+|cy|dilledyn|n}}
* {{Z|win}}: {{W-|win|wainį}}
* {{Z|kjh}}: {{W-|kjh|кип}}
* {{Z|km}}: {{W-|km|ខោអាវ}}, {{W+|km|អាវ}}
* {{Z|sah}}: {{W-|sah|таҥас}}
* {{Z|yi}}: {{W-|yi|אָנטאָן|nt}}, {{W-|yi|קליידער|nt-p}}
* {{Z|yo}}: {{W-|yo|aṣọ}}, {{W-|yo|ẹ̀wù}}
* {{Z|el}}: {{W+|el|ρούχο|nt}}
*: Kevn: {{W-|grc|ἐσθής|m}}, {{W-|grc|[[ἱμάτιον|ἱμάτια]]|nt-p}}
* {{Z|za}}: {{W-|za|buh}}, {{W-|za|buhvaq}}
{{werger-bin}}
:{{werger çavkanî|en|clothes|beş=Ev beşa Wergerê|oldid=75616000}}
== {{ziman|dlm}} ==
=== Navdêr ===
{{navdêr|dlm|z=n}}
# {{mijar|dlm|stêrnasî}} {{g|ku|esman}}
#* {{bêmînak|dlm}}
=== Çavkanî ===
{{rûpela wergerê|dlm|esman}}
== {{ziman|fr}} ==
=== Bilêvkirin ===
* {{deng|fr|LL-Q150 (fra)-Helenou66-cil.wav|Deng|dever=Saint-Laurent-de-Cerdans, Fransa}}
=== Navdêr ===
{{navdêr|fr|z=n}}
# {{mijar|fr|anatomî}} {{g|ku|bijang}}, {{g|ku|mijûlank}}
#* {{bêmînak|fr}}
=== Çavkanî ===
{{rûpela wergerê|fr|bijang}}
== {{ziman|vo}} ==
=== Navdêr ===
{{navdêr|vo}}
# {{f|vo|malbat}} [[zarok#ku|zarok]]
#* {{bêmînak|vo}}
8ce6ed3xw5m2z69xsk5mrlioeg3i4sc
zirûf
0
9160
6237731
6026974
2026-06-15T09:48:36Z
IbrahimKocher Duhok
4280
/* Werger */
6237731
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[rewş]], [[destûdar]], [[kavdan]], [[barûdox]], [[hal]], [[weziyet]]
#* {{bêmînak|ku}}
# {{kontrol|rêz=erê|[[timtêl]], [[kewn]], [[kewter]]}}
#* {{bêmînak|ku}}
==== Herwiha ====
* [[zirof]]
* [[zurof]]
* [[zurûf]]
==== Etîmolojî ====
Ji {{ji|ar|ku}}
==== Jê ====
* [[zirûfî]]
==== Werger ====
''rewş''
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|شرایط}}, {{W+|fa|وضعیت}}
* {{Z|fi}}: {{W+|fi|tilanne}}
* {{Z|en}}: {{W-|en|situation}}, {{W+|en|state}}, {{W+|en|position}}
* {{Z|tr}}: {{W+|tr|durum}}
{{werger-bin}}
mw1vlrqum0rxl2ebjt845g5dywvhj39
çêkirin
0
10539
6237707
6232961
2026-06-14T22:10:00Z
~2026-34921-97
15054
Werger: +gahrî : [[Zayenda]] (bi alîkarî)
6237707
wikitext
text/x-wiki
{{bnr-h|çekirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-çêkirin.wav|Deng|Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-çêkirin.wav|Deng|Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çêkirin|form=gerguhêz|niha=k|borî=kir|pêşgir=çê}}
{{lêker|ku|c=p-gh}}
# [[afirandin]], [[durist|durist kirin]], [[saz| saz kirin]], [[amade|amade kirin]], [[pêk anîn]], [[encam dan]], [[hazir kirin]]
#* {{bêmînak|ku}}
# [[piraştin]]
#: {{mk|ku|Piraştina xwarinan gelek bi pêngav in}}
#* {{bêmînak|ku}}
# [[dariştin]]
#* {{bêmînak|ku}}
# [[daberandin]]
#* {{bêmînak|ku}}
# [[ava kirin]]
#: {{mk|ku|Mirovên berê bi keviran xanî ava dikir}}
#* {{bêmînak|ku}}
# [[hilberandin]]
#: {{mk|ku|Mêşhingiv hingivan ji kulîlkan hildiberînin}}
#* {{bêmînak|ku}}
# [[ristin]]
#: {{mk|ku|Hevalên ku projeyek amade kir bi hezaran kod ristibûn}}
#: {{mk|ku|Rìste ristin bestîya kiryarê ye}}
#* {{bêmînak|ku}}
# [[saxlem|saxlem kirin]], [[nûjen]] kirin, [[tamîr|tamîr kirin]], [[baş|baş kirin]], [[çak|çak kirin]], [[qenc|qenc kirin]], [[rind|rind kirin]], [[sax|sax kirin]]
#* {{bêmînak|ku}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin=Kef bûye erd û dûxan bû asîman.<br />Niveka dî '''çêkirin''' jê çarî çîz<br />'Erş û kursî û qelem lewhe temîz}}
==== Bi alfabeyên din ====
* {{ku-ar|چێکرن}}
* (''Ehmedê Xanî''): {{g|ku|sc=Arab|چیکرن|tr=çêkirin}}
==== Herwiha ====
* [[çê kirin]]
==== Têkildar ====
* [[çêbûn]]
==== Jê ====
{{stûn|
* [[çêkar]]
* [[çêkarî]]
* [[çêker]]
* [[çêkerî]]
* [[çêkerîtî]]
* [[çêkirî]]
* [[çêkirîtî]]
}}
==== Etîmolojî ====
Ji {{pêk|ku|çê|kirin}}.
==== Bi zaravayên din ====
* Soranî: [[durist kirin]]
* Zazakî: [[viraştene]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|maak}}
* {{Z|goh}}: {{W-|goh|mahhōn}}
* {{Z|de}}: {{W+|de|machen}}, {{W+|de|bauen}}
* {{Z|am}}: {{W-|am|መስራት|sc=Ethi}}
* {{Z|as}}: {{W-|as|সজা}}, {{W-|as|বনোৱা}}
* {{Z|ain}}: {{W-|ain|カラ|tr=kara}}
* {{Z|az}}: {{W-|az|eləmək}}, {{W+|az|etmək}}
* {{Z|be}}: {{W-|be|рабі́ць|impf|sc=Cyrl}}, {{W-|be|зрабі́ць|pf|sc=Cyrl}}
* {{Z|br}}: {{W+|br|ober}}
* {{Z|mbb}}: {{W-|mbb|ba'al}}
* {{Z|bg}}: {{W+|bg|строя}}
* {{Z|cs}}: {{W+|cs|stavět}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|整|tr=zing2}}
*: {{Z|cmn}}: {{W+|cmn|制造|tr=zhìzào}}, {{W+|cmn|做|tr=zuò}}, {{W+|cmn|製作|tr=zhìzuò}}
* {{Z|chk}}: {{W-|chk|föri}}
* {{Z|da}}: {{W+|da|lave}}, {{W-|da|udføre}}
* {{Z|ar}}: {{W+|ar|فَعَلَ}}, {{W+|ar|صَنَعَ}}
*: {{Z|arq}}: {{W-|arq|دار}}
* {{Z|hy}}: {{W+|hy|անել}}, {{W+|hy|շինել}}, {{W+|hy|սարքել}}, {{W+|hy|պատրաստել}}
* {{Z|eo}}: {{W+|eo|fari}}
* {{Z|et}}: {{W+|et|tegema}}
* {{Z|eve}}: {{W-|eve|о-}}
* {{Z|evn}}: {{W-|evn|о-}}
* {{Z|xfa}}: {{W-|xfa|facio|sc=Ital}}
* {{Z|fa}}: {{W+|fa|ساختن|tr=sâxtan}}
* {{Z|fi}}: {{W+|fi|tehdä}}, {{W+|fi|rakentaa}}
* {{Z|fr}}: {{W+|fr|faire}}
* {{Z|frr}}: {{W-|frr|mååge}}, {{W-|frr|maage}}
* {{Z|fy}}: {{W-|fy|meitsje}}
* {{Z|gd}}: {{W-|gd|dèan}}
* {{Z|bfu}}: {{W|bfu|Zayenda}}
* {{Z|gl}}: {{W+|gl|facer}}, {{W+|gl|construír}}
* {{Z|got}}: {{W-|got|𐍄𐌰𐌿𐌾𐌰𐌽}}
* {{Z|gn}}: {{W+|gn|japo}}
* {{Z|hi}}: {{W+|hi|बनाना}}
* {{Z|nl}}: {{W+|nl|maken}}
* {{Z|he}}: {{W+|he|בנה|tr=banáh}}
* {{Z|ang}}: {{W-|ang|wyrċan}}
* {{Z|en}}: {{W+|en|make}}
* {{Z|ga}}: {{W-|ga|déan}}
* {{Z|ist}}: {{W-|ist|fà}}
* {{Z|it}}: {{W+|it|fare}}
* {{Z|is}}: {{W+|is|gera}}
* {{Z|ja}}: {{W+|ja|作る|tr=つくる, tsukuru}}, {{W+|ja|建設|cuda=建設する|tr=けんせつする, kensetsu suru}}
* {{Z|jra}}: {{W-|jra|ngă}}
* {{Z|xbr}}: {{W-|xbr|pandoi}}
* {{Z|kea}}: {{W-|kea|faze}}
* {{Z|ca}}: {{W+|ca|fer}}
* {{Z|ko}}: {{W+|ko|만들다}}, {{W+|ko|하다}}, {{W+|ko|제작하다}}
* {{Z|kw}}: {{W-|kw|gul}}, {{W-|kw|gwul}}, {{W-|kw|gwruthyl}}
* {{Z|ltg}}: {{W-|ltg|gatavēt}}, {{W-|ltg|rūst}}, {{W-|ltg|taiseit}}
* {{Z|la}}: {{W+|la|facio}}, {{W+|la|ago}}, {{W+|la|struo}}
* {{Z|lv}}: {{W+|lv|darīt}}
* {{Z|liv}}: {{W-|liv|tīedõ}}
* {{Z|mhn}}: {{W-|mhn|mòchen}}
* {{Z|mk}}: {{W+|mk|прави|impf}}
* {{Z|mi}}: {{W-|mi|hanga}}
* {{Z|mrw}}: {{W-|mrw|ba'al}}
* {{Z|gun}}: {{W-|gun|japo}}
* {{Z|hu}}: {{W+|hu|készít}}, {{W+|hu|csinál}}
* {{Z|egy}}: {{W-egy|jrj|h=ir}}
* {{Z|gld}}: {{W-|gld|анго-}}
* {{Z|nds}}:
*: {{Z|nds-de}}: {{W-|nds-de|maken}}
* {{Z|nrf}}: {{W-|nrf|faithe}}
* {{Z|pl}}: {{W+|pl|konstruować}}
* {{Z|pt}}: {{W+|pt|fazer}}, {{W+|pt|construir}}
* {{Z|cop}}: {{W-|cop|ⲉⲓⲣⲉ|sc=Copt}}, {{W-|cop|ⲣⲁ|tr=ra}}
* {{Z|ro}}: {{W+|ro|face}}
* {{Z|ru}}: {{W+|ru|де́лать|impf}}, {{W+|ru|сде́лать|pf}}, {{W+|ru|изгота́вливать|impf}}, {{W+|ru|изготовля́ть|impf}}, {{W+|ru|изгото́вить|pf}}
* {{Z|scn}}: {{W+|scn|fari}}
* {{Z|csm}}: {{W-|csm|čý·l-}}
* {{Z|syl}}: {{W-|syl|ꠛꠣꠘꠣꠘꠤ}}, {{W-|syl|ꠢꠣꠎꠣ}}
* {{Z|sco}}: {{W-|sco|mak}}
* {{Z|sk}}: {{W+|sk|robiť}}
* {{Z|sl}}: {{W-|sl|narediti}}
* {{Z|so}}: {{W-|so|samayn}}
* {{Z|es}}: {{W+|es|hacer}}
* {{Z|sv}}: {{W+|sv|göra}}
* {{Z|tr}}: {{W+|tr|yapmak}}
* {{Z|txb}}: {{W-|txb|yām-}}
* {{Z|ur}}: {{W-|ur|بنانا|tr=banānā|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|роби́ти|impf|sc=Cyrl}}, {{W+|uk|зроби́ти|pf|sc=Cyrl}}, {{W-|uk|виготовля́ти|impf|sc=Cyrl}}, {{W-|uk|вигото́вити|pf|sc=Cyrl}}
* {{Z|vec}}: {{W+|vec|far}}
* {{Z|vi}}: {{W+|vi|làm}}
* {{Z|cy}}: {{W+|cy|gwneud}}
* {{Z|el}}: {{W+|el|κατασκευάζω}}, {{W+|el|φτιάχνω}}
*: Kevn: {{W-|grc|ποιέω}}
{{werger-bin}}
:{{werger çavkanî|en|make|beş=Ev qismê Wergerê|oldid=75964801}}
=== Navdêr ===
{{ku-tewîn-nav|çêkirin|mê}}
{{navdêr|ku|z=m}}
# [[afirandin]], [[duristkirin]], [[sazkirin]], [[amadekirin]], [[pêkanîn]], [[encamdan]], [[hazirkirin]], [[tamîrkirin]]:
#: ''çêkirina xwarinê'' (hazirkirin, kelandin, biraştin...)
#: ''çêkirina xaniyan'' (avakirin)
#: ''çêkirina tiştekî nû'' (îcadkirin, keşkirin)
#: ''çêkirina dersên xwe'' (nivîsîn)
==== Bi zaravayên din ====
* Soranî: [[duristkirin]]
* Zazakî: [[viraştiş]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|Anfertigen|nt}}, {{W+|de|Anfertigung|m}}, {{W+|de|Fabrikation|m}}, {{W+|de|Herstellung|m}}
* {{Z|fi}}: {{W+|fi|tekeminen}}
* {{Z|gl}}: {{W-|gl|feitura|m}}
* {{Z|en}}: {{W+|en|making}}
* {{Z|la}}: {{W+|la|factūra|n}}
* {{Z|sa}}: {{W+|sa|कृति|m}}
* {{Z|tr}}: {{W+|tr|etme}}, {{W+|tr|yapma}}
* Yûnanî:
*: Kevn: {{W-|grc|ποίησις|m}}
{{werger-bin}}
:{{werger çavkanî|en|making|beş=Ev qismê Wergerê|oldid=75964826}}
l0pihcjzrf6qnuiaynxf6pao9kbqetn
6237724
6237707
2026-06-15T02:51:43Z
Ghybu
1393
Guhartoya [[Special:Diff/6237707|6237707]] yê [[Special:Contributions/~2026-34921-97|~2026-34921-97]] ([[User talk:~2026-34921-97|gotûbêj]]) şûnde kir
6237724
wikitext
text/x-wiki
{{bnr-h|çekirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-çêkirin.wav|Deng|Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-çêkirin.wav|Deng|Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çêkirin|form=gerguhêz|niha=k|borî=kir|pêşgir=çê}}
{{lêker|ku|c=p-gh}}
# [[afirandin]], [[durist|durist kirin]], [[saz| saz kirin]], [[amade|amade kirin]], [[pêk anîn]], [[encam dan]], [[hazir kirin]]
#* {{bêmînak|ku}}
# [[piraştin]]
#: {{mk|ku|Piraştina xwarinan gelek bi pêngav in}}
#* {{bêmînak|ku}}
# [[dariştin]]
#* {{bêmînak|ku}}
# [[daberandin]]
#* {{bêmînak|ku}}
# [[ava kirin]]
#: {{mk|ku|Mirovên berê bi keviran xanî ava dikir}}
#* {{bêmînak|ku}}
# [[hilberandin]]
#: {{mk|ku|Mêşhingiv hingivan ji kulîlkan hildiberînin}}
#* {{bêmînak|ku}}
# [[ristin]]
#: {{mk|ku|Hevalên ku projeyek amade kir bi hezaran kod ristibûn}}
#: {{mk|ku|Rìste ristin bestîya kiryarê ye}}
#* {{bêmînak|ku}}
# [[saxlem|saxlem kirin]], [[nûjen]] kirin, [[tamîr|tamîr kirin]], [[baş|baş kirin]], [[çak|çak kirin]], [[qenc|qenc kirin]], [[rind|rind kirin]], [[sax|sax kirin]]
#* {{bêmînak|ku}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin=Kef bûye erd û dûxan bû asîman.<br />Niveka dî '''çêkirin''' jê çarî çîz<br />'Erş û kursî û qelem lewhe temîz}}
==== Bi alfabeyên din ====
* {{ku-ar|چێکرن}}
* (''Ehmedê Xanî''): {{g|ku|sc=Arab|چیکرن|tr=çêkirin}}
==== Herwiha ====
* [[çê kirin]]
==== Têkildar ====
* [[çêbûn]]
==== Jê ====
{{stûn|
* [[çêkar]]
* [[çêkarî]]
* [[çêker]]
* [[çêkerî]]
* [[çêkerîtî]]
* [[çêkirî]]
* [[çêkirîtî]]
}}
==== Etîmolojî ====
Ji {{pêk|ku|çê|kirin}}.
==== Bi zaravayên din ====
* Soranî: [[durist kirin]]
* Zazakî: [[viraştene]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|maak}}
* {{Z|goh}}: {{W-|goh|mahhōn}}
* {{Z|de}}: {{W+|de|machen}}, {{W+|de|bauen}}
* {{Z|am}}: {{W-|am|መስራት|sc=Ethi}}
* {{Z|as}}: {{W-|as|সজা}}, {{W-|as|বনোৱা}}
* {{Z|ain}}: {{W-|ain|カラ|tr=kara}}
* {{Z|az}}: {{W-|az|eləmək}}, {{W+|az|etmək}}
* {{Z|be}}: {{W-|be|рабі́ць|impf|sc=Cyrl}}, {{W-|be|зрабі́ць|pf|sc=Cyrl}}
* {{Z|br}}: {{W+|br|ober}}
* {{Z|mbb}}: {{W-|mbb|ba'al}}
* {{Z|bg}}: {{W+|bg|строя}}
* {{Z|cs}}: {{W+|cs|stavět}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|整|tr=zing2}}
*: {{Z|cmn}}: {{W+|cmn|制造|tr=zhìzào}}, {{W+|cmn|做|tr=zuò}}, {{W+|cmn|製作|tr=zhìzuò}}
* {{Z|chk}}: {{W-|chk|föri}}
* {{Z|da}}: {{W+|da|lave}}, {{W-|da|udføre}}
* {{Z|ar}}: {{W+|ar|فَعَلَ}}, {{W+|ar|صَنَعَ}}
*: {{Z|arq}}: {{W-|arq|دار}}
* {{Z|hy}}: {{W+|hy|անել}}, {{W+|hy|շինել}}, {{W+|hy|սարքել}}, {{W+|hy|պատրաստել}}
* {{Z|eo}}: {{W+|eo|fari}}
* {{Z|et}}: {{W+|et|tegema}}
* {{Z|eve}}: {{W-|eve|о-}}
* {{Z|evn}}: {{W-|evn|о-}}
* {{Z|xfa}}: {{W-|xfa|facio|sc=Ital}}
* {{Z|fa}}: {{W+|fa|ساختن|tr=sâxtan}}
* {{Z|fi}}: {{W+|fi|tehdä}}, {{W+|fi|rakentaa}}
* {{Z|fr}}: {{W+|fr|faire}}
* {{Z|frr}}: {{W-|frr|mååge}}, {{W-|frr|maage}}
* {{Z|fy}}: {{W-|fy|meitsje}}
* {{Z|gd}}: {{W-|gd|dèan}}
* {{Z|gl}}: {{W+|gl|facer}}, {{W+|gl|construír}}
* {{Z|got}}: {{W-|got|𐍄𐌰𐌿𐌾𐌰𐌽}}
* {{Z|gn}}: {{W+|gn|japo}}
* {{Z|hi}}: {{W+|hi|बनाना}}
* {{Z|nl}}: {{W+|nl|maken}}
* {{Z|he}}: {{W+|he|בנה|tr=banáh}}
* {{Z|ang}}: {{W-|ang|wyrċan}}
* {{Z|en}}: {{W+|en|make}}
* {{Z|ga}}: {{W-|ga|déan}}
* {{Z|ist}}: {{W-|ist|fà}}
* {{Z|it}}: {{W+|it|fare}}
* {{Z|is}}: {{W+|is|gera}}
* {{Z|ja}}: {{W+|ja|作る|tr=つくる, tsukuru}}, {{W+|ja|建設|cuda=建設する|tr=けんせつする, kensetsu suru}}
* {{Z|jra}}: {{W-|jra|ngă}}
* {{Z|xbr}}: {{W-|xbr|pandoi}}
* {{Z|kea}}: {{W-|kea|faze}}
* {{Z|ca}}: {{W+|ca|fer}}
* {{Z|ko}}: {{W+|ko|만들다}}, {{W+|ko|하다}}, {{W+|ko|제작하다}}
* {{Z|kw}}: {{W-|kw|gul}}, {{W-|kw|gwul}}, {{W-|kw|gwruthyl}}
* {{Z|ltg}}: {{W-|ltg|gatavēt}}, {{W-|ltg|rūst}}, {{W-|ltg|taiseit}}
* {{Z|la}}: {{W+|la|facio}}, {{W+|la|ago}}, {{W+|la|struo}}
* {{Z|lv}}: {{W+|lv|darīt}}
* {{Z|liv}}: {{W-|liv|tīedõ}}
* {{Z|mhn}}: {{W-|mhn|mòchen}}
* {{Z|mk}}: {{W+|mk|прави|impf}}
* {{Z|mi}}: {{W-|mi|hanga}}
* {{Z|mrw}}: {{W-|mrw|ba'al}}
* {{Z|gun}}: {{W-|gun|japo}}
* {{Z|hu}}: {{W+|hu|készít}}, {{W+|hu|csinál}}
* {{Z|egy}}: {{W-egy|jrj|h=ir}}
* {{Z|gld}}: {{W-|gld|анго-}}
* {{Z|nds}}:
*: {{Z|nds-de}}: {{W-|nds-de|maken}}
* {{Z|nrf}}: {{W-|nrf|faithe}}
* {{Z|pl}}: {{W+|pl|konstruować}}
* {{Z|pt}}: {{W+|pt|fazer}}, {{W+|pt|construir}}
* {{Z|cop}}: {{W-|cop|ⲉⲓⲣⲉ|sc=Copt}}, {{W-|cop|ⲣⲁ|tr=ra}}
* {{Z|ro}}: {{W+|ro|face}}
* {{Z|ru}}: {{W+|ru|де́лать|impf}}, {{W+|ru|сде́лать|pf}}, {{W+|ru|изгота́вливать|impf}}, {{W+|ru|изготовля́ть|impf}}, {{W+|ru|изгото́вить|pf}}
* {{Z|scn}}: {{W+|scn|fari}}
* {{Z|csm}}: {{W-|csm|čý·l-}}
* {{Z|syl}}: {{W-|syl|ꠛꠣꠘꠣꠘꠤ}}, {{W-|syl|ꠢꠣꠎꠣ}}
* {{Z|sco}}: {{W-|sco|mak}}
* {{Z|sk}}: {{W+|sk|robiť}}
* {{Z|sl}}: {{W-|sl|narediti}}
* {{Z|so}}: {{W-|so|samayn}}
* {{Z|es}}: {{W+|es|hacer}}
* {{Z|sv}}: {{W+|sv|göra}}
* {{Z|tr}}: {{W+|tr|yapmak}}
* {{Z|txb}}: {{W-|txb|yām-}}
* {{Z|ur}}: {{W-|ur|بنانا|tr=banānā|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|роби́ти|impf|sc=Cyrl}}, {{W+|uk|зроби́ти|pf|sc=Cyrl}}, {{W-|uk|виготовля́ти|impf|sc=Cyrl}}, {{W-|uk|вигото́вити|pf|sc=Cyrl}}
* {{Z|vec}}: {{W+|vec|far}}
* {{Z|vi}}: {{W+|vi|làm}}
* {{Z|cy}}: {{W+|cy|gwneud}}
* {{Z|el}}: {{W+|el|κατασκευάζω}}, {{W+|el|φτιάχνω}}
*: Kevn: {{W-|grc|ποιέω}}
{{werger-bin}}
:{{werger çavkanî|en|make|beş=Ev qismê Wergerê|oldid=75964801}}
=== Navdêr ===
{{ku-tewîn-nav|çêkirin|mê}}
{{navdêr|ku|z=m}}
# [[afirandin]], [[duristkirin]], [[sazkirin]], [[amadekirin]], [[pêkanîn]], [[encamdan]], [[hazirkirin]], [[tamîrkirin]]:
#: ''çêkirina xwarinê'' (hazirkirin, kelandin, biraştin...)
#: ''çêkirina xaniyan'' (avakirin)
#: ''çêkirina tiştekî nû'' (îcadkirin, keşkirin)
#: ''çêkirina dersên xwe'' (nivîsîn)
==== Bi zaravayên din ====
* Soranî: [[duristkirin]]
* Zazakî: [[viraştiş]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|Anfertigen|nt}}, {{W+|de|Anfertigung|m}}, {{W+|de|Fabrikation|m}}, {{W+|de|Herstellung|m}}
* {{Z|fi}}: {{W+|fi|tekeminen}}
* {{Z|gl}}: {{W-|gl|feitura|m}}
* {{Z|en}}: {{W+|en|making}}
* {{Z|la}}: {{W+|la|factūra|n}}
* {{Z|sa}}: {{W+|sa|कृति|m}}
* {{Z|tr}}: {{W+|tr|etme}}, {{W+|tr|yapma}}
* Yûnanî:
*: Kevn: {{W-|grc|ποίησις|m}}
{{werger-bin}}
:{{werger çavkanî|en|making|beş=Ev qismê Wergerê|oldid=75964826}}
2ve9hz3p94rzwkij4x0isaqot5268wt
çîp
0
12355
6237703
5932243
2026-06-14T14:55:14Z
Ghybu
1393
6237703
wikitext
text/x-wiki
{{bnr-h|cip|cîp|çip}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}}, {{ç-ya req}}, {{p-ya nerm}}
# {{f|ku|anatomî}} [[laq]], [[lûlaq]], [[qaç]], [[ling]] <br>(ji [[çok]]î ta [[gozek]]ê)
#* {{jêder|ku|jêgirtin=Li blûzê wê yê reş, zirav û honandî nihêrîbû, yê ku sîng û berê wê baş dida xuyakirin û ji navê de xwe bera ser '''çîpên''' wê yên bi tayteke reş pêçayî dida.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=105}}}}
==== Jê ====
* [[çîpî]]
* [[çîptazî]]
==== Etîmolojî ====
{{bêetîmolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Unterschenkel|m}}, {{W+|de|Wade|m}}
* {{Z|fa}}: {{W-|fa|ران پا|guman=erê}}, {{W-|fa|ساق پا|guman=erê}}
* {{Z|fi}}: {{W+|fi|sääri}}
* {{Z|en}}: {{W+|en|calf}}, {{W+|en|shank}}, {{W+|en|shin|guman=erê}}, {{W+|en|tibia|guman=erê}}, {{W-|en|shankpiece|guman=erê}}, {{W+|en|shinbone|guman=erê}}
* {{Z|tr}}: {{W+|tr|bacak}}, {{W+|tr|baldır}}, {{W+|tr|incik|guman=erê}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# [[qîj]], [[deng]]ê [[zirav]] û [[bilind]]
#* {{bêmînak|ku}}
==== Jê ====
* [[çîpe-çîp]]
* [[çîpîn]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
egl267s87lqpzogspyfkidz5owpw9by
Wîkîferheng:ceribandin
4
23016
6237722
6237520
2026-06-15T02:35:20Z
Ghybu
1393
6237722
wikitext
text/x-wiki
: [[Modul:ku-tewandin/tablo/ceribandin]]
# [[Wîkîferheng:ceribandin#Gerguhêz|Gerguhêz]]
# [[Wîkîferheng:ceribandin#Negerguhêz|Negerguhêz]]
{{#invoke:ku-tewîn-nav|get_comma_separated_forms|heval|mê û nêr}}
{{#invoke:ku-tewandin/ceribandin|get_comma_separated_forms|niha=kev|borî=ket}}
=== dîtin ===
{{ku-tewandin/ceribandin|dîtin|form=gerguhêz|niha=bîn|borî=dît}}
=== çûn ===
{{ku-tewandin/ceribandin|çûn|form=negerguhêz|niha=ç|borî=çû}}
=== hatin ===
{{ku-tewandin|hatin|form=negerguhêz|niha=wer|niha2=ê|borî=hat}}
b1v98eucf4jjadyztfl6zky4tvcyngt
جيب
0
29974
6237704
5902761
2026-06-14T15:06:13Z
Ghybu
1393
/* {{ziman|ku}} */
6237704
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|sc=Arab|z=|tr=-}}
# {{ku-Latn|cîb}}
== {{ziman|arz}} ==
=== Navdêr ===
{{navdêr|arz|tr=gēb|z=n}}
# {{mijar|arz|cilûberg}} {{g|ku|berîk}}
#* {{bêmînak|arz}}
=== Çavkanî ===
{{rûpela wergerê|arz|berîk}}
== {{ziman|ary}} ==
=== Navdêr ===
{{navdêr|ary|tr=jīb}}
# {{mijar|ary|cilûberg}} {{g|ku|berîk}}
#* {{bêmînak|ary}}
=== Çavkanî ===
{{rûpela wergerê|ary|berîk}}
== {{ziman|ar}} ==
=== Bilêvkirin ===
* {{deng|ar|LL-Q13955 (ara)-Fjmustak-جيب.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|ar|z=}}
# [[berîk]], [[cêb]]
#* {{bêmînak|ar}}
# [[tûr]], [[tûrik]], [[çiwal]], [[torbe]], [[telîs]]
#* {{bêmînak|ar}}
# [[jîp]]
#* {{bêmînak|ar}}
3vwvzbss1etgdgw1tzq0wf7rg3e1n1q
cêb
0
29975
6237698
6237690
2026-06-14T14:38:59Z
Ghybu
1393
/* Navdêr 1 */
6237698
wikitext
text/x-wiki
{{bnr-h|ceb}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{ku-tewîn-nav|cêb|mê}}
[[Wêne:Trouser-parts ku.svg|thumb|Cêb an berîk.]]
{{navdêr|ku|z=m}}
# Cihên li [[cil]]ê mirovî yê ku mirov dikare tiştan bike tê de.
#: {{hevmane|ku|berîk|gîrfan}}
#* {{bêmînak|ku}}
===== Jê =====
{{kol3|ku
| bêcêb
| bêcêbî
| bicêb
| bicêbî
| cêbdar
| cêbdarî
| cêbdarîtî
| cêbdartî
| cêbik
| cêbî
| cêbk
}}
===== Etîmolojî =====
Ji {{ji|ar|ku|جَيْب}}.
===== Werger =====
{{werger-ser}}
* {{Z|af}}: {{W+|af|sak}}
* {{Z|sq}}: {{W+|sq|xhep|m}}
* {{Z|de}}: {{W+|de|Tasche|f}}
* {{Z|br}}: {{W+|br|godell|f}}
* {{Z|ch}}: {{W-|ch|botsa}}
* {{Z|da}}: {{W+|da|lomme}}
* {{Z|id}}: {{W+|id|saku}}; {{W+|id|kantong}}
* {{Z|ar}}: {{W+|ar|جيب|guman=erê}}
* {{Z|eo}}: {{W-|eo|poŝo}}
* {{Z|fo}}: {{W-|fo|lummi}}, {{W-|fo|fikka}}
* {{Z|fi}}: {{W+|fi|tasku}}
* {{Z|fr}}: {{W+|fr|poche}}
* {{Z|fur}}: {{W-|fur|bûse}}
* {{Z|fy}}: {{W-|fy|bûse}}
* {{Z|ht}}: {{W-|ht|pòch}}
* {{Z|nl}}: {{W+|nl|zak}}
* {{Z|en}}: {{W+|en|pocket}}
* {{Z|ca}}: {{W+|ca|butxaca}}
* {{Z|qu}}: {{W-|qu|uña}}
* {{Z|ms}}: {{W-|ms|saku}}
* {{Z|hu}}: {{W+|hu|zseb}}
* {{Z|no}}: {{W+|no|lomme}}
* {{Z|oc}}: {{W+|oc|pòcha}}
* {{Z|pap}}: {{W-|pap|sacu}}
* {{Z|pl}}: {{W+|pl|kieszeń|f}}
* {{Z|pt}}: {{W+|pt|bolso|m}}, {{W+|pt|algibeira}}, {{W+|pt|bolsa}}
* {{Z|rm}}: {{W-|rm|giaglioffa}}
* {{Z|rom}}: {{W-|rom|cêpa}}
* {{Z|ro}}: {{W+|ro|buzunar|n}}
* {{Z|nso}}: {{W-|nso|pôtla}}; {{W-|nso|sakana}}
* {{Z|es}}: {{W+|es|bolsillo}}
* {{Z|sv}}: {{W+|sv|ficka}}
* {{Z|tl}}: {{W-|tl|bulsá}}, {{W-|tl|bulsa}}
* {{Z|tt}}: {{W-|tt|kesä}}
* {{Z|tr}}: {{W-|tr|cep#Turc}}
* {{Z|tpi}}: {{W-|tpi|bak}}
* {{Z|vo}}: {{W+|vo|sakäd}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{guherto|ku|jêp}}
b3k8yw4lcdn745966hrzm75f2jg8nng
6237699
6237698
2026-06-14T14:51:00Z
Ghybu
1393
/* Navdêr 1 */
6237699
wikitext
text/x-wiki
{{bnr-h|ceb}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{ku-tewîn-nav|cêb|mê}}
[[Wêne:Trouser-parts ku.svg|thumb|Nîşandana '''cêbekê''' (an berîk) li ser pantolonekî.]]
{{navdêr|ku|z=m}}
# Cihên li [[cil]]ê mirovî yê ku mirov dikare tiştan bike tê de.
#: {{hevmane|ku|berîk|gîrfan}}
#* {{bêmînak|ku}}
===== Jê =====
{{kol3|ku
| bêcêb
| bêcêbî
| bicêb
| bicêbî
| cêbdar
| cêbdarî
| cêbdarîtî
| cêbdartî
| cêbik
| cêbî
| cêbk
}}
===== Etîmolojî =====
Ji {{ji|ar|ku|جَيْب}}.
===== Werger =====
{{werger-ser}}
* {{Z|af}}: {{W+|af|sak}}
* {{Z|sq}}: {{W+|sq|xhep|m}}
* {{Z|de}}: {{W+|de|Tasche|f}}
* {{Z|br}}: {{W+|br|godell|f}}
* {{Z|ch}}: {{W-|ch|botsa}}
* {{Z|da}}: {{W+|da|lomme}}
* {{Z|id}}: {{W+|id|saku}}; {{W+|id|kantong}}
* {{Z|ar}}: {{W+|ar|جيب|guman=erê}}
* {{Z|eo}}: {{W-|eo|poŝo}}
* {{Z|fo}}: {{W-|fo|lummi}}, {{W-|fo|fikka}}
* {{Z|fi}}: {{W+|fi|tasku}}
* {{Z|fr}}: {{W+|fr|poche}}
* {{Z|fur}}: {{W-|fur|bûse}}
* {{Z|fy}}: {{W-|fy|bûse}}
* {{Z|ht}}: {{W-|ht|pòch}}
* {{Z|nl}}: {{W+|nl|zak}}
* {{Z|en}}: {{W+|en|pocket}}
* {{Z|ca}}: {{W+|ca|butxaca}}
* {{Z|qu}}: {{W-|qu|uña}}
* {{Z|ms}}: {{W-|ms|saku}}
* {{Z|hu}}: {{W+|hu|zseb}}
* {{Z|no}}: {{W+|no|lomme}}
* {{Z|oc}}: {{W+|oc|pòcha}}
* {{Z|pap}}: {{W-|pap|sacu}}
* {{Z|pl}}: {{W+|pl|kieszeń|f}}
* {{Z|pt}}: {{W+|pt|bolso|m}}, {{W+|pt|algibeira}}, {{W+|pt|bolsa}}
* {{Z|rm}}: {{W-|rm|giaglioffa}}
* {{Z|rom}}: {{W-|rom|cêpa}}
* {{Z|ro}}: {{W+|ro|buzunar|n}}
* {{Z|nso}}: {{W-|nso|pôtla}}; {{W-|nso|sakana}}
* {{Z|es}}: {{W+|es|bolsillo}}
* {{Z|sv}}: {{W+|sv|ficka}}
* {{Z|tl}}: {{W-|tl|bulsá}}, {{W-|tl|bulsa}}
* {{Z|tt}}: {{W-|tt|kesä}}
* {{Z|tr}}: {{W-|tr|cep#Turc}}
* {{Z|tpi}}: {{W-|tpi|bak}}
* {{Z|vo}}: {{W+|vo|sakäd}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{guherto|ku|jêp}}
8qtoniufiogf5ktgmvg0ofd4o6r0g7h
gez
0
34798
6237729
6010246
2026-06-15T04:45:35Z
Ghybu
1393
6237729
wikitext
text/x-wiki
{{bnr-h|gêz}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
# devlêkirin, bi diranan dv li lêvên xwe kir
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|گهز}}
==== Herwiha ====
* [[gaz]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Bissen|m}}
* {{Z|ar}}: {{W|ar|الذراع|guman=erê}}, {{W|ar|العجم|guman=erê}}, {{W|ar|العض|guman=erê}}
* {{Z|fa}}: {{W|fa|درخت گز|guman=erê}}, {{W|fa|گز|guman=erê}}, {{W|fa|نوعی گیاه|guman=erê}}, {{W|fa|نیش|guman=erê}}
* {{Z|en}}: {{W+|en|cubit}}, {{W+|en|snap|guman=erê}}, {{W+|en|tamarisk|guman=erê}}, {{W|en|butcher's broom|guman=erê}}, {{W|en|cubitus|guman=erê}}, {{W|en|ell|guman=erê}}, {{W|en|fern|guman=erê}}, {{W|en|fern tree|guman=erê}}, {{W|en|pteridophyte|guman=erê}}, {{W|en|tree fern|guman=erê}}, {{W|en|summer cypress|guman=erê}}, {{W|en|nougat|guman=erê}}
* {{Z|tr}}: {{W+|tr|ılgın}}, {{W+|tr|ısırık|guman=erê}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# [[leq]], [[boç]], [[didan]] [[lêdan]], [[gezandin]], [[dan ber didanan]], bi diranan hûr-hûr kirin
#* {{bêmînak|ku}}
==== Jê ====
* {{mj|lêker}} [[gez kirin]]
* {{mj|navdêr}} [[gezkirin]]
* {{mj|rengdêr}} [[gezkirî]]
* [[gestin]]
* [[gezandin]]
* [[gezandî]]
* [[gezîner]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Navdêr 3 ===
{{navdêr|ku|z=n}}
# [[doner]], [[kebab]]
#* {{bêmînak|ku}}
==== Etîmolojî ====
* {{ji|ira-pro||-}}:*'''gaz'''- ("[[gezandin]], [[gestin]]; [[pê vedan]]")
:{{peo}}: '''gc'''- ("[[pê vedan]]; [[gestin]], [[gezandin]]")
* {{Z|de}}: {{W|de|Biss}}
:{{xpr}}: '''gšt''' ("[[gestin]], [[gezandin]]; [[pê vedan]]")
:{{fa}}: '''gazidan''' ("[[gestin]], [[gezandin]]; [[pê vedan]]"), gazā ("ajelek [[pêveder]]")
:{{bal}}: '''gast''' ("[[gestin]], [[gezandin]]") {{ir}}
:{{kmr}}: '''gestin''' ("[[gezandin]], [[gestin]]")
:{{zza}}: '''gāz''' ("[[gestin]], [[gezandin]]")
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Çavkanî ===
* Têmûrê Xelîl: Peyvên kurdî û îranî di ermenî de'', rojnameya ''Kurmancî'', hj. 39, 2007)
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# kirtika qemça tîrê ya ku dikeve ji yê kevanê
#* {{bêmînak|tr}}
# [[sihrik]], [[gezik]], [[gazik]], [[nîşangeh]]
#* {{bêmînak|tr}}
# [[gaz]]
#* {{bêmînak|tr}}
# [[şakul]]
#* {{bêmînak|tr}}
gc6y83cqnjn0lcgq15kn9ftkgmq303h
cîp
0
52940
6237700
6210443
2026-06-14T14:54:06Z
Ghybu
1393
6237700
wikitext
text/x-wiki
{{bnr-h|cip|çip|çîp}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Mahindra.jpg|thumb|250px|cîpek]]
{{navdêr|ku|z=m}}
# Hin [[tirimpêl]]ên mîna [[cemse]] û [[hummer]] û [[humvî|humviyan]] in û [[bi kêr hatin|bi kêrî]] [[meşîn]] li [[derve]]yî [[rê]]yan tên.
#* {{bêmînak|ku}}
==== Herwiha ====
* [[cêp]]
* [[jêp]]
* [[jîp]]
==== Têkildar ====
* [[cemse]]
* [[hummer]]
* [[humvî]]
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|jeep}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Jeep|m}}
* {{Z|cs}}: {{W-|cs|džíp|m}}
* {{Z|ar}}: {{W+|ar|جيب|guman=erê}}
* {{Z|fa}}: {{W-|fa|نوعی ماشین}}, {{W+|fa|جیپ}}
* {{Z|fi}}: {{W+|fi|maastoauto}}, {{W+|fi|jeeppi}}, {{W+|fi|maasturi}}
* {{Z|fr}}: {{W+|fr|jeep}}
* {{Z|he}}: {{W-|he|ג׳יפ}}
* {{Z|en}}: {{W+|en|jeep}}
* {{Z|it}}: {{W+|it|jeep}}
* {{Z|hu}}: {{W+|hu|dzsip}}
* {{Z|ru}}: {{W+|ru|джип|m}}, {{W+|ru|внедорожник|m}}
* {{Z|es}}: {{W+|es|jeep}}
* {{Z|sv}}: {{W+|sv|jeep}}
* {{Z|tr}}: {{W+|tr|cip}}, {{W+|tr|jip|guman=erê}}
* {{Z|el}}: {{W+|el|τζιπ}}
{{werger-bin}}
ap5gwtiuma8zsjx1onc3pf8kbar5cec
6237705
6237700
2026-06-14T15:07:07Z
Ghybu
1393
/* Navdêr */
6237705
wikitext
text/x-wiki
{{bnr-h|cip|çip|çîp}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Mahindra.jpg|thumb|Cîpek]]
{{navdêr|ku|z=m}}
# Hin [[tirimpêl]]ên mîna [[cemse]] û [[hummer]] û [[humvî|humviyan]] in û [[bi kêr hatin|bi kêrî]] [[meşîn]] li [[derve]]yî [[rê]]yan tên.
#* {{bêmînak|ku}}
==== Herwiha ====
* [[cêp]]
* [[jêp]]
* [[jîp]]
==== Têkildar ====
* [[cemse]]
* [[hummer]]
* [[humvî]]
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|jeep}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Jeep|m}}
* {{Z|cs}}: {{W-|cs|džíp|m}}
* {{Z|ar}}: {{W+|ar|جيب|guman=erê}}
* {{Z|fa}}: {{W-|fa|نوعی ماشین}}, {{W+|fa|جیپ}}
* {{Z|fi}}: {{W+|fi|maastoauto}}, {{W+|fi|jeeppi}}, {{W+|fi|maasturi}}
* {{Z|fr}}: {{W+|fr|jeep}}
* {{Z|he}}: {{W-|he|ג׳יפ}}
* {{Z|en}}: {{W+|en|jeep}}
* {{Z|it}}: {{W+|it|jeep}}
* {{Z|hu}}: {{W+|hu|dzsip}}
* {{Z|ru}}: {{W+|ru|джип|m}}, {{W+|ru|внедорожник|m}}
* {{Z|es}}: {{W+|es|jeep}}
* {{Z|sv}}: {{W+|sv|jeep}}
* {{Z|tr}}: {{W+|tr|cip}}, {{W+|tr|jip|guman=erê}}
* {{Z|el}}: {{W+|el|τζιπ}}
{{werger-bin}}
kr98w0idivgcpfgrnsxbdsgyinn83tp
cip
0
130469
6237701
4608284
2026-06-14T14:54:27Z
Ghybu
1393
6237701
wikitext
text/x-wiki
{{bnr-h|cîp|çip|çîp}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[cîb]]
odgy8mfbko1ti5ick86431d0rldirj8
gêz
0
179721
6237728
5785470
2026-06-15T04:43:27Z
Ghybu
1393
6237728
wikitext
text/x-wiki
{{bnr-h|gez}}
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=}}
# {{f|ku|dar}} Cureyekî daran e.
# {{f|ku|fêkî}} Fêkiyên vê darê.
==== Etîmolojî ====
{{bêetîmolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|نوعی درخت}}
{{werger-bin}}
7qou55yr446110k0fmem5m6ku0j02cx
orispîbûn
0
307003
6237706
6147162
2026-06-14T20:32:36Z
~2026-34921-97
15054
Werger: +gahrî : [[tozan]] (bi alîkarî)
6237706
wikitext
text/x-wiki
{{bnr-l|orispî bûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{ku-tewîn-nav|orispîbûn|mê}}
{{navdêr|ku|z=m}}
# {{mane?|ku}}
#: {{mînak?|ku}}
==== Etîmolojî ====
Ji {{pêk|ku|orispî|bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|bfu}}: {{W|bfu|tozan}}
{{werger-bin}}
ar97entem1yud71l8ow0ayjngmq75ms
6237723
6237706
2026-06-15T02:51:24Z
Ghybu
1393
Guhartoya [[Special:Diff/6237706|6237706]] yê [[Special:Contributions/~2026-34921-97|~2026-34921-97]] ([[User talk:~2026-34921-97|gotûbêj]]) şûnde kir
6237723
wikitext
text/x-wiki
{{bnr-l|orispî bûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{ku-tewîn-nav|orispîbûn|mê}}
{{navdêr|ku|z=m}}
# {{mane?|ku}}
#: {{mînak?|ku}}
==== Etîmolojî ====
Ji {{pêk|ku|orispî|bûn}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
bk29nm0t3tdv3ne2sqg2haufm20beu9
nof
0
540216
6237709
5789979
2026-06-14T22:22:11Z
Ferhengvan
16
/* Kurmancî */
6237709
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Mane ===
{{cure?|ku}}
# [[kom]], [[hrûp]], [[bir]], [[qefle]]
==== Etîmolojî ====
{{bêetîmolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|فصل}}
* {{Z|tr}}: {{W+|tr|bölüm}}
{{werger-bin}}
{{kontrol}}
gpu8rfhgenlmke4srcssr84at69h3tu
6237710
6237709
2026-06-14T22:23:11Z
Ferhengvan
16
/* Navdêr */
6237710
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]], [[hrûp]], [[bir]], [[qefle]]
==== Etîmolojî ====
{{bêetîmolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|فصل}}
* {{Z|tr}}: {{W+|tr|bölüm}}
{{werger-bin}}
{{kontrol}}
7u7hhqiherecxr9sqv6hy02wry7uk2u
6237711
6237710
2026-06-14T22:23:28Z
Ferhengvan
16
/* Navdêr */
6237711
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]], [[grûp]], [[bir]], [[qefle]]
==== Etîmolojî ====
{{bêetîmolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|فصل}}
* {{Z|tr}}: {{W+|tr|bölüm}}
{{werger-bin}}
{{kontrol}}
pfkj3dpm3saimyeoa8y59tw0bogc5n3
6237712
6237711
2026-06-14T22:23:48Z
Ferhengvan
16
/* Werger */
6237712
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]], [[grûp]], [[bir]], [[qefle]]
==== Etîmolojî ====
{{bêetîmolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|فصل}}
* {{Z|tr}}: {{W+|tr|grup}}
{{werger-bin}}
{{kontrol}}
3nft5dway37ji1e1lg5byxyjms4op7e
Modul:ku-tewandin
828
628614
6237714
6237527
2026-06-15T02:02:40Z
Ghybu
1393
+
6237714
Scribunto
text/plain
-- Modula tewandina lêkerên kurmancî
local export = {}
-- Load irregular forms table
-- local irreg = require('Module:ku-tewandin/nestandard')
local langKu = require("Modul:languages").getByCode("ku")
local link = require('Module:links').language_link
local shallowCopy = require("Module:table/shallowCopy")
local deepCopy = require("Module:table/deepCopy")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
-- =============================================================================
-- Pronouns in Kurmanji
-- =============================================================================
export.order = {"s1", "s2", "s3", "p1", "p2", "p3"}
export.pronouns = {
s1 = "ez", p1 = "em",
s2 = "tu", p2 = "hûn",
s3 = "ew", p3 = "ew"
}
export.obliquePronouns = {
s1 = "min", p1 = "me",
s2 = "te", p2 = "we",
s3 = "wê/wî", p3 = "wan"
}
export.agents = {
s1 = "te, wî, wê, we, wan", p1 = "te, wî, wê, we, wan",
s2 = "min, wî, wê, me, wan", p2 = "min, wî, wê, me, wan",
s3 = "min, te, wî, wê, me, we, wan", p3 = "min, te, wî, wê, me, we, wan"
}
-- Oblique pronoun (green)
export.obliquePronounsGreen = {
s1 = '<span style="color:green">min</span>',
s2 = '<span style="color:green">te</span>',
s3 = '<span style="color:green">wê/wî</span>',
p1 = '<span style="color:green">me</span>',
p2 = '<span style="color:green">we</span>',
p3 = '<span style="color:green">wan</span>'
}
-- ─────────────────────────────────────────────────────────────────────────────
-- 1) This function returns correct subject/agent pronoun, ergativity rule:
-- - Transitive verbs in past tenses → oblique pronoun (green) = agent
-- - All other cases → direct pronoun (no color) = subject
-- 2) Also add the subjunctive prefix "(bila)"
-- ─────────────────────────────────────────────────────────────────────────────
function export.conjPronouns(stemType, mode, isTransitive)
local pronouns = shallowCopy(export.pronouns)
-- Ergativity in kurdish: transitive verbs that are conjugated with the past tense stem are
-- conjugated according to the object, not the subject.
-- Therefore, to have an ergative construction,
-- the verb must be transitive and its stem must be the stem of the past tense.
local isErgative = isTransitive and (stemType == 'past')
-- If it's ergative, we use oblique pronouns: "min", "te", ...
-- If it's not ergative, we use normal pronouns: "ez", "tu", ...
if isErgative then
pronouns = shallowCopy(export.obliquePronounsGreen)
end
-- For the subjunctive mood, we add "(bila)" at the beginning.
if mode == 'subjunctive' then
local subjPrefix = '<span style="color:gray">(bila)</span>'
for _, pers in ipairs(export.order) do
pronouns[pers] = subjPrefix .. ' ' .. pronouns[pers]
end
end
return pronouns
end
-- =============================================================================
-- VERBAL STRUCTURE IN THE INFINITIVE:
-- Verbs in the infinitive appear in three main forms:
-- 1) Simple verb (indivisible light verb):
-- - ex.: "kirin", "çûn", "xwarin", ...
-- 2) Verbs with preverbs (preverb + simple verb):
-- - ex.: "rakirin" (ra- + kirin), "çêkirin" (çê- + kirin), "vexwarin" (ve- + xwarin), ...
-- - Preverb verbs don't use the prefix "bi-" (ez ê rakim , ew ê rake , ...)
-- 3) Compound verbs, construction with non-verbal element (the noun is not attached to the verb):
-- - Left of the simple verb: "hez kirin" ("hez" + "kirin"), "li dar xistin" ("li dar" + "xistin"), ...
-- - Right of the simple verb: "kirin der" ("kirin" + "der"), "girtin ser xwe" ("girtin" + "ser xwe"), ...
-- - Compound verbs use the prefix "bi-" (ez ê hez bi-kim , ew ê hez bi-ke )
-- STRUCTURE: preSimpleVerb + spacing + simpleVerb + postSimpleVerb
-- EX. kirin: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- rakirin: preSimpleVerb='ra'; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- hez kirin: preSimpleVerb='hez'; spacing=true; simpleVerb='kirin'; postSimpleVerb=''
-- pev çûn: preSimpleVerb='pev'; spacing=true; simpleVerb='çûn'; postSimpleVerb=''
-- kirin der: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb='der'
-- WARNING: Conjugation can vary depending on the type of verb.
-- For example, in the future tense,the prefix "bi" is used for compound verbs,
-- but not for preverbal verbs, see the function that manages it "tenseRules" table.
-- This table does not yet support the mixed case: a verb composed of a noun and a preverb verb.
-- =============================================================================
function export.verbStruct(isCompoundVerb, preSimpleVerb)
local struct
if (preSimpleVerb and preSimpleVerb ~= '' and not isCompoundVerb) then
struct = 'preverbVerb'
elseif isCompoundVerb then
struct = 'compoundVerb'
else
struct = 'simpleVerb'
end
return struct
end
-- ================================================================
-- INFLECTIONAL ENDINGS
-- Assigns verb inflectional endings (suffixes) to all tenses
-- ================================================================
local getEndings = {}
do
-- ───────────────────────────────────────────────────────────────
-- Ending using present stem
-- ───────────────────────────────────────────────────────────────
getEndings['present'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends = {}
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends['std'] = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
ends['rojhilatî'] = {s1='m', s2='(y)', s3='t', p1='yn', p2='n', p3='n'}
else
ends['std'] = {s1='im', s2='î', s3='e', p1='in', p2='in', p3='in'}
ends['rojhilatî'] = {s1='im', s2='î', s3='<u>it</u>/ît', p1='în', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Ind. preterite + ind. imperfect ending
-- ───────────────────────────────────────────────────────────────
getEndings['past'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiouû]$') then
ends = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
elseif mw.ustring.match(stem, 'î$') then
-- if self.name == 'indImperfect' then
-- -- special indicative ind. imperfect rule
-- ends = {s1='yam', s2='yayî', s3='ya', p1='yan', p2='yan', p3='yan'}
-- end
ends = {s1='m', s2='', s3='', p1='n', p2='n', p3='n'}
else
ends = {s1='im', s2='î', s3='', p1='in', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Compound endings with auxiliary "bûn"
-- Inflectional endings are created by taking the different forms of the
-- verb "bûn" (with present stem "-b-" and past stem "-bû-") and
-- adding an "i-" prefix before them: "i-b-im", "i-bû-m", "i-bû-me", "i-bû-ma".
-- This "i-" varies according to the final letter of the verb stem.
-- ───────────────────────────────────────────────────────────────
local function normalize_i(stem)
local prfx_i = "i"
if mw.ustring.match(stem, "ya$") or
mw.ustring.match(stem, "[îû]$") then -- cf. karîn (-karî-)
prfx_i = ""
elseif mw.ustring.match(stem, '[aeêiou]$') then
prfx_i = "yi"
end
return prfx_i
end
getEndings['ibim'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bim", p1 = prfx_i .. "bin",
s2 = prfx_i .. "bî", p2 = prfx_i .. "bin",
s3 = prfx_i .. "be", p3 = prfx_i .. "bin"
}
end
getEndings['ibûm'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûm", p1 = prfx_i .. "bûn",
s2 = prfx_i .. "bûyî", p2 = prfx_i .. "bûn",
s3 = prfx_i .. "bû", p3 = prfx_i .. "bûn"
}
end
getEndings['ibûme'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûme", p1 = prfx_i .. "bûne",
s2 = prfx_i .. "bûyiye", p2 = prfx_i .. "bûne",
s3 = prfx_i .. "bûye", p3 = prfx_i .. "bûne"
}
end
getEndings['ibûma'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûma", p1 = prfx_i .. "bûna",
s2 = prfx_i .. "bûyayî", p2 = prfx_i .. "bûna",
s3 = prfx_i .. "bûya", p3 = prfx_i .. "bûna"
}
end
-- ───────────────────────────────────────────────────────────────
-- Ind. perfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ime'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="me", s2="yî", s3="ye", p1="ne", p2="ne", p3="ne"}
else
ends = {s1="ime", s2="iyî", s3="iye", p1="ine", p2="ine", p3="ine"}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Subj. Imperfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ama'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
-- The doublet in "-iyan" of verbs in -"în" (gerîn/-geriya-, kenîn/-keniya-, ...),
-- in the conditional and subjunctive moods, a doublet "yaya" appears; it's removed.
-- -yayayî → -yayî; -yaya → -ya
if mw.ustring.match(stem, '(ya)$') then
ends = {s1="ma", s2="yî", s3="", p1="na", p2="na", p3="na"}
elseif mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="ma", s2="yayî", s3="ya", p1="na", p2="na", p3="na"}
else
ends = {s1="ama", s2="ayî", s3="a", p1="ana", p2="ana", p3="ana"}
end
return ends
end
end
-- =============================================================================
-- RULES FOR PREVERBS: "bi-" and "di-"
-- There are two preverbs: "bi-" and "di-". These preverbs can change form
-- depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getPreverb = {}
do
getPreverb['bi'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local verbStruct = opts.verbStruct
local overridePreverb = opts.overridePreverb
local accent = opts.accent
-- Devoka rojhilatî:
-- @Ferhengvan: Dema bêt bi lêkera alîkar "ê / dê" û bi rehê lêkerê yê
-- dema niha û pêşgirên kesî tê çêkirin. Pêşgira "bi-" li destpêka lêkera
-- serekî nîne: - ez ê / dê xw-im (standard: ez ê/dê bi-xw-im).
if (self.name == 'indFuture' and accent == 'rojhilatî') then
return ''
end
-- Preverb verbs don't use the preverb "bi-": ra-kirin (ez ê rakim), ve-xwarin (ez ê vexwim) , ...
-- But compound verb and simple verbs use it: hez kirin (ez ê hez bi-kim), lê bigirin (ez ê lê bi-girim), ...
if (verbStruct == 'preverbVerb') then
return ''
end
-- If the preverb "bi-" is provided.
if (self.stem == 'present' and overridePreverb.presentBi) then
return overridePreverb.presentBi
elseif (self.stem == 'past' and overridePreverb.pastBi) then
return overridePreverb.pastBi
elseif overridePreverb.sameBi then
return overridePreverb.sameBi
end
-- Modification of the preverbe "bi-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[aeêiîouû]') then
return 'b'
end
return 'bi'
end
getPreverb['di'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local overridePreverb = opts.overridePreverb
-- If the preverb "di" is provided.
if (self.stem == 'present' and overridePreverb.presentDi) then
return overridePreverb.presentDi
elseif (self.stem == 'past' and overridePreverb.pastDi) then
return overridePreverb.pastDi
elseif overridePreverb.sameDi then
return overridePreverb.sameDi
end
-- Modification of the preverbe "di-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[ai]') then
return 'd'
end
-- Ex. hatin : stem = -ê- // ez têm
if mw.ustring.match(stem, '^[êî]') then
return 't'
end
return 'di'
end
end
-- =============================================================================
-- RULES FOR NEGATION PREFIXES: "na-" and "ne-"
-- There are two negation prefixes: "na-" and "ne-". These preverbs can change
-- form depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getNegPrefix = {}
do
getNegPrefix['na'] = function (self, opts)
-- self: reserved for future use
local _ = self -- delete the warning (unused argument)
opts = opts or {}
local stem = opts.stem
local overrideNa = opts.overrideNegPrefix.presentNa
if overrideNa then return '<b>' .. overrideNa .. '</b>' end
-- if irreg.dijrezikNa[stem] then return irreg.dijrezikNa[stem] end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>nay</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
return '<b>n</b>'
end
-- Tîpa duyem "-a-" ye (k-a-rîn, z-a-nîn, ...)
if mw.ustring.match(stem, '^%wa') then
return '<b>ni</b>'
end
return '<b>na</b>'
end
getNegPrefix['ne'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local tenseName = self.name
local impNegForm = opts.impNegForm -- form "1" or "2" of imp.
local overrideNegPrefix = opts.overrideNegPrefix
local negPrefix = 'ne'
-- Bo neyînî: pêşgira "di-" tenê di nav dema "indImperfect" de tê bikaranîn.
-- ji ber vê yekê 'negPrefix' hertim (?) 'ne' ye ji ber ku dikeve pêş
-- pêşgira "di-": wê/wî ne-di-elimand (elimandin)
if (tenseName == 'indImperfect') then
return '<b>' .. negPrefix .. '</b>'
end
-- Override
if (overrideNegPrefix.impMe or overrideNegPrefix.presentNe
or overrideNegPrefix.pastNe
or overrideNegPrefix.sameNe) then
-- Ovverride imp.
if (tenseName == 'impPresent') then
if (impNegForm == 1 and overrideNegPrefix.impMe) then
return '<b>' .. overrideNegPrefix.impMe .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.presentNe and
find(overrideNegPrefix.presentNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.presentNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.sameNe and
find(overrideNegPrefix.sameNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.sameNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.sameNe) then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
else
-- For other tenses besides the imperative
if (self.stem == 'present' and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (self.stem == 'past' and overrideNegPrefix.pastNe) then
return '<b>' .. overrideNegPrefix.pastNe .. '</b>'
elseif overrideNegPrefix.sameNe then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
end
end
-- There are two forms of construction of the imperative,
-- one with the prefix "me-" (1) and the other (2) with the prefix "ne-".
if (tenseName == 'impPresent') then
negPrefix = (impNegForm == 2) and 'ne' or 'me'
end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>' .. negPrefix .. 'y</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
negPrefix = mw.ustring.sub(negPrefix, 1, -2)
return '<b>' .. negPrefix .. '</b>'
end
return '<b>' .. negPrefix .. '</b>'
end
end
-- =============================================================================
-- Standardization of the PREVERBAL PARTICLE
-- The proverbial particle "ê" is placed after the personal pronoun.
-- =============================================================================
-- If there are no verbal preparticles, return empty table.
function export.getPreverbParticles(preverbParticle, typeStem, isTransitive)
if not preverbParticle then
return {s1='', s2='', s3='', p1='', p2='', p3=''}
end
if preverbParticle == 'ê' then
local isErgative = isTransitive and (typeStem == 'past')
-- When the personal pronoun ends in a vowel, a "y-" is added before "ê".
-- If it's ergative, we use oblique pronouns: "min", "te", ...
if isErgative then
return {s1='ê/dê', s2='yê/dê', s3='yê/dê', p1='yê/dê', p2='yê/dê', p3='ê/dê'}
else
return {s1='ê/dê', s2='yê/dê', s3='ê/dê', p1='ê/dê', p2='ê/dê', p3='ê/dê'}
end
end
-- If the verbal preparticle is identical for all pronouns,
-- we create a table with the same value.
local preverbParticles = {}
for _, pers in ipairs(export.order) do
preverbParticles[pers] = preverbParticle
end
return preverbParticles
end
-- =============================================================================
-- RULES FOR CONSTRUCTING EACH VERB TENSE
-- This table lists, for each verb tense, what elements are required to form it:
-- - Verb conjugation is built by placing either the preverb "bi-" or "di-" before
-- the verb stem (past or present), followed by a personal ending.
-- - For the negative form, one of the prefixes "na-" or "ne-" is added as well.
-- - In some cases, a preverbal particle such as /ê/ or /dê/ is added before
-- the conjugated verb as well.
-- Not: - The "negPreverb" (preverb (bi-/di-) for negative tenses) parameter has a
-- value different from "nil" only for the Imperfect tense ("negPreverb=di").
-- - The parameter "negPrefix=na" is used only for the present indicative.
--
-- Preverb "di", used in: "indPresent"(present stem), "indImperfect"(past stem)
-- - Bo neyînî: pêşgira "di-" tenê di nav dema "IndImperfect" de tê bikaranîn.
-- Preverb "bi", used in: "indFuture"(present stem), "subPresent"(present stem),
-- "subImperfect"(past stem) = "condPresent"(past stem)
-- - The prefix "bi-" isn't used in negative forms.
--
-- Present stem, used in: "indPresent"(di)(na),
-- "indFuture"(bi)(ne) = "subPresent"(bi)(ne)
--
-- Past stem, used in: "indPreterite"(-)(ne), "indImperfect"(di)(ne), "indPluperfect"(-)(ne),
-- "indPerfect"(-)(ne), "indNwPluperfect"(-)(ne), "indFuturePerfect"(-)(ne),
-- "subPreterite"(-)(ne),
-- "subImperfect"(bi)(ne) = "condPresent"(bi)(ne),
-- "subPluperfect"(-)(ne) = "condPreterite"(-)(ne)
-- =============================================================================
-- Some conjugations are identical except that they differ only in the preverbal particle (/ê/, /dê/).
-- So, to avoid repeating the same information (and thus risking errors),
-- we establish the common part shared between these verbs.
local sharedTenseRules = {
indFuture = {
stem = "present",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['present']
},
indFuturePerfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibim']
},
subImperfect = {
stem = "past",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ama']
},
subPluperfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûma']
}
}
local mt = {
__index = function(t, k)
local commonRules = t._commonRules
if commonRules then return commonRules[k] end
end
}
-- TENSES CONJUGATION RULES
export.tenseRules = {
-- IMPERATIVE MOOD
impPresent = setmetatable({
name = "impPresent",
nameKu = "raweya fermanî",
nameEn = "present imperative",
mode = "imperative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
-- INDICATIVE MOOD
indPresent = {
name = "indPresent",
nameKu = "dema niha",
nameEn = "present",
mode = "indicative",
stem = "present",
preverb = getPreverb['di'],
negPreverb = nil,
negPrefix = getNegPrefix['na'],
endings = getEndings['present'],
preverbParticle = nil
},
indPreterite = {
name = "indPreterite",
nameKu = "raboriya sade",
nameEn = "simple past",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indImperfect = {
name = "indImperfect",
nameKu = "raboriya berdest",
nameEn = "Imperfect",
mode = "indicative",
stem = "past",
preverb = getPreverb['di'],
negPreverb = getPreverb['di'],
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indPluperfect = {
name = "indPluperfect",
nameKu = "raboriya dûr",
nameEn = "pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûm'],
preverbParticle = nil
},
indFuture = setmetatable({
name = "indFuture",
nameKu = "dema bê",
nameEn = "future",
mode = "indicative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = 'ê'
}, mt),
indFuturePerfect = setmetatable({
name = "indFuturePerfect",
nameKu = "dahatiya pêş",
nameEn = "future perfect",
mode = "indicative",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = 'ê'
}, mt),
-- In some books, the "perfect" and "nonconfirmative pluperfect" tenses
-- are classified in the "inferential mood" ("moda neşahidî").
-- Currently we classify them using the indicative mood (at the end).
indPerfect = {
name = "indPerfect",
nameKu = "raboriya dûdar",
nameEn = "perfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ime'],
preverbParticle = nil
},
indNwPluperfect = {
name = "indNwPluperfect",
nameKu = "çîrokiya boriya dûdar",
nameEn = "non-witnessed pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûme'],
preverbParticle = nil
},
-- SUBJUNCTIVE MOOD
subjPresent = setmetatable({
name = "subjPresent",
nameKu = "dema nihaya xwestekî",
nameEn = "present subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
subjPreterite = setmetatable({
name = "subjPreterite",
nameKu = "dema boriya xwestekî",
nameEn = "preterite subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = nil,
}, mt),
subjImperfect = setmetatable({
name = "subjImperfect",
nameKu = "raboriya bilaniyê",
nameEn = "imperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = nil,
}, mt),
subjPluperfect = setmetatable({
name = "subjPluperfect",
nameKu = "raboriya dûr a bilaniyê",
nameEn = "pluperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = nil
}, mt),
-- CONDITIONAL MOOD
condPresent = setmetatable({
name = "condPresent",
nameKu = "çîrokiya dema nihaya mercî",
nameEn = "present conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = 'ê'
}, mt),
condPreterite = setmetatable({
name = "condPreterite",
nameKu = "dema boriya mercî",
nameEn = "preterite conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = 'ê'
}, mt),
}
-- =============================================================================
-- MAIN CONJUGATION FUNCTOIN
-- This function returns an array containing the conjugation table for a given
-- tense as well as other information about the conjugated verb.
-- =============================================================================
function export.conjugate(opts)
opts = opts or {}
-- Required parameters
local tense = opts.tense or error("'tense' required", 2)
--One of the two parameters is required:
-- - If the tense uses the present stem, indicate "presentStem".
-- - If it uses the past stem, indicate "pastStem".
local presentStem = opts.presentStem
local pastStem = opts.pastStem
-- Optional parameters
local isTransitive = opts.isTransitive or false -- Indicate if the verb is transitive (true/false)
local isNegative = opts.isNegative or false -- Indicate if it's the negative form (true/false)
local isCompoundVerb = opts.isCompoundVerb or false -- Indicate if it's a compound verb (true/false)
local preSimpleVerb = opts.preSimpleVerb or '' -- The part before the simple verb
local postSimpleVerb = opts.postSimpleVerb or '' -- The part after the simple verb
-- These parameters are provided when the verb is irregular.
-- Allows you to manually modify preverbs ("bi-"" or "di-")
-- and negation prefixes ("na-" or "ne-")
local overridePreverb = {
-- Preverbs (bi-, di)
presentBi = opts.presentBi or nil,
presentDi = opts.presentDi or nil,
pastBi = opts.pastBi or nil,
pastDi = opts.pastDi or nil,
-- Same preverbs ("past" and "present" stem)
sameBi = opts.sameBi or nil,
sameDi = opts.sameDi or nil,
}
local overrideNegPrefix = {
-- Neg. prefix (na-, ne-)
presentNa = opts.presentNa or nil,
presentNe = opts.presentNe or nil,
pastNe = opts.pastNe or nil,
-- same neg. prefix (for past and present stem)
sameNe = opts.sameNe or nil,
impMe = opts.impMe or nil,
}
-- By default, the negation of the imperative is constructed from the prefix "me-"".
-- To obtain the second variant, the prefix with "ne-", you must specify "impNegForm=2".
local impNegForm = opts.impNegForm or 1
-- Accent/ Devok
local accent = opts.accent or 'std'
-- If "tags='na'", remove links/tags
local tags = opts.tags or 'erê'
-- If addPreverbParticles='na', remove preverb particles (ê/dê) before
-- the conjugated verbs.
local addPreverbParticles = opts.addPreverbParticles or 'erê'
-- We add a space to the left of the "postSimpleVerb" because it shouldn't be attached
-- to the simple verb.
if (postSimpleVerb ~= '' and postSimpleVerb ~=nil) then
postSimpleVerb = ' ' .. postSimpleVerb
end
-- Access to the classification table and retrieval of verb tense parameters
local infoTense = deepCopy(export.tenseRules[tense], 'copy') or false
-- We check that this tense is indeed in table "tenseRules".
if (not infoTense) then
return '<span style="color:red">Unknown tense: ' .. tense ..'</span>'
end
-- We check that one of the two parameters of the stem is given
if (infoTense.stem == 'present' and not presentStem) then
return '<span style="color:red">presentStem parameter required</span>'
elseif (infoTense.stem == 'past' and not pastStem) then
return '<span style="color:red">pasttStem parameter required</span>'
end
-- Choice between the present stem or past stem
local stem = (infoTense.stem == 'present') and presentStem or pastStem
--────────────────────────────
-- Conjugation construction --
-- ───────────────────────────
local preverb = ''
local negPrefix = ''
-- +++++++++++++++++++++++++++
-- Lêkerin nestandard --
-- +++++++++++++++++++++++++++
-- çûn
if (stem == 'her' and pastStem == 'çû') then
if tense == 'indPresent' then
if isNegative then
stem = 'r'
else
stem = 'er'
overridePreverb.presentDi = 't'
end
elseif ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
overridePreverb.presentBi = ''
if isNegative then
stem = 'r'
else
stem = 'her'
end
end
end
-- hatin
if (stem == 'wer' and pastStem == 'hat') then
if ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
if isNegative then
stem = 'ê'
else
overridePreverb.presentBi = ''
stem = 'wer'
end
elseif (tense == 'indPresent') then
stem = 'ê'
end
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ruturns the verb type: "simpleVerb" or "preverbVerb" or "compoundVerb"
local verbStruct = export.verbStruct(isCompoundVerb, preSimpleVerb)
if isNegative then
negPrefix = infoTense:negPrefix{stem=stem,
impNegForm=impNegForm,
overrideNegPrefix=overrideNegPrefix}
if infoTense.negPreverb then
preverb = infoTense:negPreverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb}
end
else
if infoTense.preverb then
preverb = infoTense:preverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb,
accent=accent}
end
end
infoTense.conj = {}
local spacing = isCompoundVerb and ' ' or ''
local endings = infoTense:endings(stem)
-- 'rojhilatî' accent (devok) for present stem
if (infoTense.stem == 'present') then
if (accent == 'rojhilatî') then
endings = endings['rojhilatî']
else
endings = endings['std']
end
end
local preverbParticles = export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem, isTransitive
)
local isErgative = isTransitive and (infoTense.stem == 'past')
-- Creating the conjugation table for a given tense
for _, pers in ipairs(export.order) do
local ending
local conjSimbleVerb
local conjVerb
if isErgative then
ending = endings.s3
else
ending = endings[pers]
end
-- Adding space after the preverbal particle, and
-- if "addPreverbParticles='na'": remove preverb particles (ê/dê).
local preverbParticle = ''
if infoTense.preverbParticle and addPreverbParticles ~= 'na' then
preverbParticle = preverbParticles[pers] .. ' '
end
conjSimbleVerb = negPrefix .. preverb .. stem .. ending
-- Adding prefixe and suffixe
conjVerb = preSimpleVerb .. spacing .. conjSimbleVerb .. postSimpleVerb
-- Spelling correction(îy -> iy)
conjVerb = gsub(conjVerb, 'îy', 'iy')
-- Add a link / if tags='na' no links
if tags ~= 'na' then
conjVerb = link{term=conjVerb, lang=langKu}
end
-- Addition of the preverbal particle
infoTense.conj[pers] = preverbParticle .. conjVerb
end
-- Imperative
if (infoTense.name == 'impPresent') then
infoTense.conj.s1 = nil
infoTense.conj.s2 = infoTense.conj.s3
infoTense.conj.s3 = nil
infoTense.conj.p1 = nil
-- infoTense.conj.p2 = infoTense.conj.p2
infoTense.conj.p3 = nil
end
return infoTense
end
-- =============================================================================
-- END
-- =============================================================================
-- Some useful tools
-- =============================================================================
-- Returns the list of verb tenses
export.tensesList = function()
local list = {}
for _, tense in pairs(export.tenseRules) do
table.insert(list, tense.name)
end
return list
end
-- Concatenation of pronouns and conjugated verbs
-- (for a given conjugate tense in all persons of that tense)
function export.concatPronomsVerbs(pronoms, conjVerbs)
local concatTab = {}
for _, pers in ipairs(export.order) do
local pronom = pronoms[pers] or ""
local verbe = conjVerbs[pers] or ""
if pronom == "" then
concatTab[pers] = verbe
elseif verbe == "" then
concatTab[pers] = pronom
else
concatTab[pers] = pronom .. " " .. verbe
end
end
return concatTab
end
-- Remove duplicates
local function removeDuplicates(list)
local seen = {}
local result = {}
for _, value in ipairs(list) do
if not seen[value] then
seen[value] = true
table.insert(result, value)
end
end
return result
end
-- =============================================================================
-- ADDITIONAL STEM OF THE PAST AND PRESENT (pastStem2, ... and presentStem2, ...)
-- This function does nothing more than add additional parameters for verb stems
-- in the past and present tenses.
-- Conjugations for the different stems will be separated by "/"
-- =============================================================================
function export.conjugateLong(baseOpts, tense, presentStems, pastStems)
local opts = deepCopy(baseOpts or {}, 'copy')
opts.tense = tense
opts.addPreverbParticles = 'na'
presentStems = presentStems or {}
pastStems = pastStems or {}
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
if not infoTense then
return '<span style="color:red">Unknown tense: ' .. tostring(tense) ..'</span>'
end
local stems = (infoTense.stem == 'present') and presentStems or pastStems
-- For each verb stem, its conjugation table is calculated and stored in conjTabs.
local conjTabs = {}
for i = 1, #stems do
local stem = stems[i]
if stem then
if (infoTense.stem == 'past') then
opts.pastStem = stem
elseif (infoTense.stem == 'present') then
opts.presentStem = stem
-- For the recognition of irregular verbs based on the past-stem part
-- see: "çûn" û "hatin"
opts.pastStem = pastStems[1]
end
-- The proverbs are added only for the first conjugation form: reading is easier.
--if (i > 1) then opts.addPreverbParticles = 'na' end
local result = export.conjugate(opts)
if result and result.conj then
table.insert(conjTabs, result.conj)
end
end
end
-- We concatenate each row of the conjugation tables.
local preverbParticles = deepCopy(export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem,
opts.isTransitive
), 'copy')
local concatConjTabs = {}
for _, pers in ipairs(export.order) do
local frag = {}
for i = 1, #conjTabs do
local val = conjTabs[i][pers]
if val then
table.insert(frag, tostring(val))
end
end
frag = removeDuplicates(frag)
if infoTense.preverbParticle then
concatConjTabs[pers] = preverbParticles[pers] .. ' '
.. table.concat(frag, ' — ')
else
concatConjTabs[pers] = table.concat(frag, ' — ')
end
end
infoTense.conj = concatConjTabs
return infoTense
end
-- ====================================================================================
-- VERB CONJUGATION IN ALL TENSES WITH OR WITHOUT PRONOUNS
-- ====================================================================================
function export.conjugateAllTenses(baseOpts, presentStems, pastStems, negation, concatPrs)
-- "concatPrs=false" table without pronouns
local opts = deepCopy(baseOpts or {}, 'copy')
if negation == 'negative' then
opts.isNegative = true
end
presentStems = presentStems or {}
pastStems = pastStems or {}
-- Concatenation of pronouns and conjugated verbs
local concatPronomsVerbs = export.concatPronomsVerbs
local tensesList = export.tensesList()
-- Conjugation in all tenses
local conjTab = {}
for _, tense in ipairs(tensesList) do
-- Conjugations without the pronouns
local conjData = deepCopy(
export.conjugateLong(opts, tense, presentStems, pastStems),
'copy'
)
-- We concatenate the pronouns and the verbs if "concatPrs" is different of "false"
-- No pronouns for the imperative mood
if tense ~= 'impPresent' and concatPrs ~= false then
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
local pronoms = deepCopy(
export.conjPronouns(infoTense.stem, infoTense.mode, opts.isTransitive)
)
conjData.conj = concatPronomsVerbs(pronoms, conjData.conj)
end
conjTab[tense] = conjData
end
return conjTab
end
-- ====================================================================================
-- Allows you to obtain a given conjugation from a model.
-- Ex. {{#invoke:ku-tewandin|tew|dem=indPresent|kes=s1}}
-- See {{ku-tewîn-lk-niha}}
-- ====================================================================================
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isNegative = frame.args['neyînî'] or false,
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = args['lînk'] or 'erê',
accent = args['devok'] or 'std',
}
local tense = frame.args['dem'] or nil
local pers = frame.args['kes'] or nil
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
-- A few checks
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
if (baseOpts.isNegative == 'erê') then
baseOpts.isNegative = true
end
local tabConj = export.conjugateLong(baseOpts, tense, presentStems, pastStems).conj
return tabConj[pers]
end
-- ====================================================================================
-- GET COMMMA SEPARED FORMS
-- Bnr. [[MediaWiki:Gadget-QQ.js]]
-- Ex. {{#invoke:ku-tewandin|get_comma_separated_forms|niha=kev|borî=ket}}
-- ====================================================================================
function export.get_comma_separated_forms(frame)
local opts = {
presentStem = frame.args['niha'],
pastStem = frame.args['borî'],
isTransitive = false,
isNegative = false,
isCompoundVerb = frame['valahî'] or false,
preSimpleVerb = frame['pêşgir'] or '',
postSimpleVerb = frame['paşgir'] or '',
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = 'na', -- Remove links/tags
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local function concateList(tenseList)
local concatList = {}
for _, pers in ipairs({"s1", "s2", "s3", "p1"}) do
local tense = tenseList[pers]
table.insert(concatList, tense)
end
return table.concat(concatList, ",")
end
local tenseList = {'indPresent','indPreterite','indImperfect',
'indPluperfect','indPerfect','indNwPluperfect',
'indFuture','indFuturePerfect',
'subjImperfect','subjPluperfect'
}
local concatAllTense = {}
for i = 1, #tenseList do
local tense = tenseList[i]
if export.tenseRules[tense] then
opts.tense = tense
local conj = shallowCopy(export.conjugate(opts).conj)
local concatTense = concateList(conj)
table.insert(concatAllTense, concatTense)
end
end
return table.concat(concatAllTense, ",")
end
return export
i6qnttl9jzyfrpect3y6g1y3k19hsf6
6237716
6237714
2026-06-15T02:10:42Z
Ghybu
1393
nav
6237716
Scribunto
text/plain
-- Modula tewandina lêkerên kurmancî
local export = {}
-- Load irregular forms table
-- local irreg = require('Module:ku-tewandin/nestandard')
local langKu = require("Modul:languages").getByCode("ku")
local link = require('Module:links').language_link
local shallowCopy = require("Module:table/shallowCopy")
local deepCopy = require("Module:table/deepCopy")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
-- =============================================================================
-- Pronouns in Kurmanji
-- =============================================================================
export.order = {"s1", "s2", "s3", "p1", "p2", "p3"}
export.pronouns = {
s1 = "ez", p1 = "em",
s2 = "tu", p2 = "hûn",
s3 = "ew", p3 = "ew"
}
export.obliquePronouns = {
s1 = "min", p1 = "me",
s2 = "te", p2 = "we",
s3 = "wê/wî", p3 = "wan"
}
export.agents = {
s1 = "te, wî, wê, we, wan", p1 = "te, wî, wê, we, wan",
s2 = "min, wî, wê, me, wan", p2 = "min, wî, wê, me, wan",
s3 = "min, te, wî, wê, me, we, wan", p3 = "min, te, wî, wê, me, we, wan"
}
-- Oblique pronoun (green)
export.obliquePronounsGreen = {
s1 = '<span style="color:green">min</span>',
s2 = '<span style="color:green">te</span>',
s3 = '<span style="color:green">wê/wî</span>',
p1 = '<span style="color:green">me</span>',
p2 = '<span style="color:green">we</span>',
p3 = '<span style="color:green">wan</span>'
}
-- ─────────────────────────────────────────────────────────────────────────────
-- 1) This function returns correct subject/agent pronoun, ergativity rule:
-- - Transitive verbs in past tenses → oblique pronoun (green) = agent
-- - All other cases → direct pronoun (no color) = subject
-- 2) Also add the subjunctive prefix "(bila)"
-- ─────────────────────────────────────────────────────────────────────────────
function export.conjPronouns(stemType, mode, isTransitive)
local pronouns = shallowCopy(export.pronouns)
-- Ergativity in kurdish: transitive verbs that are conjugated with the past tense stem are
-- conjugated according to the object, not the subject.
-- Therefore, to have an ergative construction,
-- the verb must be transitive and its stem must be the stem of the past tense.
local isErgative = isTransitive and (stemType == 'past')
-- If it's ergative, we use oblique pronouns: "min", "te", ...
-- If it's not ergative, we use normal pronouns: "ez", "tu", ...
if isErgative then
pronouns = shallowCopy(export.obliquePronounsGreen)
end
-- For the subjunctive mood, we add "(bila)" at the beginning.
if mode == 'subjunctive' then
local subjPrefix = '<span style="color:gray">(bila)</span>'
for _, pers in ipairs(export.order) do
pronouns[pers] = subjPrefix .. ' ' .. pronouns[pers]
end
end
return pronouns
end
-- =============================================================================
-- VERBAL STRUCTURE IN THE INFINITIVE:
-- Verbs in the infinitive appear in three main forms:
-- 1) Simple verb (indivisible light verb):
-- - ex.: "kirin", "çûn", "xwarin", ...
-- 2) Verbs with preverbs (preverb + simple verb):
-- - ex.: "rakirin" (ra- + kirin), "çêkirin" (çê- + kirin), "vexwarin" (ve- + xwarin), ...
-- - Preverb verbs don't use the prefix "bi-" (ez ê rakim , ew ê rake , ...)
-- 3) Compound verbs, construction with non-verbal element (the noun is not attached to the verb):
-- - Left of the simple verb: "hez kirin" ("hez" + "kirin"), "li dar xistin" ("li dar" + "xistin"), ...
-- - Right of the simple verb: "kirin der" ("kirin" + "der"), "girtin ser xwe" ("girtin" + "ser xwe"), ...
-- - Compound verbs use the prefix "bi-" (ez ê hez bi-kim , ew ê hez bi-ke )
-- STRUCTURE: preSimpleVerb + spacing + simpleVerb + postSimpleVerb
-- EX. kirin: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- rakirin: preSimpleVerb='ra'; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- hez kirin: preSimpleVerb='hez'; spacing=true; simpleVerb='kirin'; postSimpleVerb=''
-- pev çûn: preSimpleVerb='pev'; spacing=true; simpleVerb='çûn'; postSimpleVerb=''
-- kirin der: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb='der'
-- WARNING: Conjugation can vary depending on the type of verb.
-- For example, in the future tense,the prefix "bi" is used for compound verbs,
-- but not for preverbal verbs, see the function that manages it "tenseRules" table.
-- This table does not yet support the mixed case: a verb composed of a noun and a preverb verb.
-- =============================================================================
function export.verbStruct(isCompoundVerb, preSimpleVerb)
local struct
if (preSimpleVerb and preSimpleVerb ~= '' and not isCompoundVerb) then
struct = 'preverbVerb'
elseif isCompoundVerb then
struct = 'compoundVerb'
else
struct = 'simpleVerb'
end
return struct
end
-- ================================================================
-- INFLECTIONAL ENDINGS
-- Assigns verb inflectional endings (suffixes) to all tenses
-- ================================================================
local getEndings = {}
do
-- ───────────────────────────────────────────────────────────────
-- Ending using present stem
-- ───────────────────────────────────────────────────────────────
getEndings['present'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends = {}
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends['std'] = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
ends['rojhilatî'] = {s1='m', s2='(y)', s3='t', p1='yn', p2='n', p3='n'}
else
ends['std'] = {s1='im', s2='î', s3='e', p1='in', p2='in', p3='in'}
ends['rojhilatî'] = {s1='im', s2='î', s3='<u>it</u>/ît', p1='în', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Ind. preterite + ind. imperfect ending
-- ───────────────────────────────────────────────────────────────
getEndings['past'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiouû]$') then
ends = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
elseif mw.ustring.match(stem, 'î$') then
-- if self.name == 'indImperfect' then
-- -- special indicative ind. imperfect rule
-- ends = {s1='yam', s2='yayî', s3='ya', p1='yan', p2='yan', p3='yan'}
-- end
ends = {s1='m', s2='', s3='', p1='n', p2='n', p3='n'}
else
ends = {s1='im', s2='î', s3='', p1='in', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Compound endings with auxiliary "bûn"
-- Inflectional endings are created by taking the different forms of the
-- verb "bûn" (with present stem "-b-" and past stem "-bû-") and
-- adding an "i-" prefix before them: "i-b-im", "i-bû-m", "i-bû-me", "i-bû-ma".
-- This "i-" varies according to the final letter of the verb stem.
-- ───────────────────────────────────────────────────────────────
local function normalize_i(stem)
local prfx_i = "i"
if mw.ustring.match(stem, "ya$") or
mw.ustring.match(stem, "[îû]$") then -- cf. karîn (-karî-)
prfx_i = ""
elseif mw.ustring.match(stem, '[aeêiou]$') then
prfx_i = "yi"
end
return prfx_i
end
getEndings['ibim'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bim", p1 = prfx_i .. "bin",
s2 = prfx_i .. "bî", p2 = prfx_i .. "bin",
s3 = prfx_i .. "be", p3 = prfx_i .. "bin"
}
end
getEndings['ibûm'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûm", p1 = prfx_i .. "bûn",
s2 = prfx_i .. "bûyî", p2 = prfx_i .. "bûn",
s3 = prfx_i .. "bû", p3 = prfx_i .. "bûn"
}
end
getEndings['ibûme'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûme", p1 = prfx_i .. "bûne",
s2 = prfx_i .. "bûyiye", p2 = prfx_i .. "bûne",
s3 = prfx_i .. "bûye", p3 = prfx_i .. "bûne"
}
end
getEndings['ibûma'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûma", p1 = prfx_i .. "bûna",
s2 = prfx_i .. "bûyayî", p2 = prfx_i .. "bûna",
s3 = prfx_i .. "bûya", p3 = prfx_i .. "bûna"
}
end
-- ───────────────────────────────────────────────────────────────
-- Ind. perfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ime'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="me", s2="yî", s3="ye", p1="ne", p2="ne", p3="ne"}
else
ends = {s1="ime", s2="iyî", s3="iye", p1="ine", p2="ine", p3="ine"}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Subj. Imperfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ama'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
-- The doublet in "-iyan" of verbs in -"în" (gerîn/-geriya-, kenîn/-keniya-, ...),
-- in the conditional and subjunctive moods, a doublet "yaya" appears; it's removed.
-- -yayayî → -yayî; -yaya → -ya
if mw.ustring.match(stem, '(ya)$') then
ends = {s1="ma", s2="yî", s3="", p1="na", p2="na", p3="na"}
elseif mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="ma", s2="yayî", s3="ya", p1="na", p2="na", p3="na"}
else
ends = {s1="ama", s2="ayî", s3="a", p1="ana", p2="ana", p3="ana"}
end
return ends
end
end
-- =============================================================================
-- RULES FOR PREVERBS: "bi-" and "di-"
-- There are two preverbs: "bi-" and "di-". These preverbs can change form
-- depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getPreverb = {}
do
getPreverb['bi'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local verbStruct = opts.verbStruct
local overridePreverb = opts.overridePreverb
local accent = opts.accent
-- Devoka rojhilatî:
-- @Ferhengvan: Dema bêt bi lêkera alîkar "ê / dê" û bi rehê lêkerê yê
-- dema niha û pêşgirên kesî tê çêkirin. Pêşgira "bi-" li destpêka lêkera
-- serekî nîne: - ez ê / dê xw-im (standard: ez ê/dê bi-xw-im).
if (self.name == 'indFuture' and accent == 'rojhilatî') then
return ''
end
-- Preverb verbs don't use the preverb "bi-": ra-kirin (ez ê rakim), ve-xwarin (ez ê vexwim) , ...
-- But compound verb and simple verbs use it: hez kirin (ez ê hez bi-kim), lê bigirin (ez ê lê bi-girim), ...
if (verbStruct == 'preverbVerb') then
return ''
end
-- If the preverb "bi-" is provided.
if (self.stem == 'present' and overridePreverb.presentBi) then
return overridePreverb.presentBi
elseif (self.stem == 'past' and overridePreverb.pastBi) then
return overridePreverb.pastBi
elseif overridePreverb.sameBi then
return overridePreverb.sameBi
end
-- Modification of the preverbe "bi-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[aeêiîouû]') then
return 'b'
end
return 'bi'
end
getPreverb['di'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local overridePreverb = opts.overridePreverb
-- If the preverb "di" is provided.
if (self.stem == 'present' and overridePreverb.presentDi) then
return overridePreverb.presentDi
elseif (self.stem == 'past' and overridePreverb.pastDi) then
return overridePreverb.pastDi
elseif overridePreverb.sameDi then
return overridePreverb.sameDi
end
-- Modification of the preverbe "di-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[ai]') then
return 'd'
end
-- Ex. hatin : stem = -ê- // ez têm
if mw.ustring.match(stem, '^[êî]') then
return 't'
end
return 'di'
end
end
-- =============================================================================
-- RULES FOR NEGATION PREFIXES: "na-" and "ne-"
-- There are two negation prefixes: "na-" and "ne-". These preverbs can change
-- form depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getNegPrefix = {}
do
getNegPrefix['na'] = function (self, opts)
-- self: reserved for future use
local _ = self -- delete the warning (unused argument)
opts = opts or {}
local stem = opts.stem
local overrideNa = opts.overrideNegPrefix.presentNa
if overrideNa then return '<b>' .. overrideNa .. '</b>' end
-- if irreg.dijrezikNa[stem] then return irreg.dijrezikNa[stem] end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>nay</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
return '<b>n</b>'
end
-- Tîpa duyem "-a-" ye (k-a-rîn, z-a-nîn, ...)
if mw.ustring.match(stem, '^%wa') then
return '<b>ni</b>'
end
return '<b>na</b>'
end
getNegPrefix['ne'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local tenseName = self.name
local impNegForm = opts.impNegForm -- form "1" or "2" of imp.
local overrideNegPrefix = opts.overrideNegPrefix
local negPrefix = 'ne'
-- Bo neyînî: pêşgira "di-" tenê di nav dema "indImperfect" de tê bikaranîn.
-- ji ber vê yekê 'negPrefix' hertim (?) 'ne' ye ji ber ku dikeve pêş
-- pêşgira "di-": wê/wî ne-di-elimand (elimandin)
if (tenseName == 'indImperfect') then
return '<b>' .. negPrefix .. '</b>'
end
-- Override
if (overrideNegPrefix.impMe or overrideNegPrefix.presentNe
or overrideNegPrefix.pastNe
or overrideNegPrefix.sameNe) then
-- Ovverride imp.
if (tenseName == 'impPresent') then
if (impNegForm == 1 and overrideNegPrefix.impMe) then
return '<b>' .. overrideNegPrefix.impMe .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.presentNe and
find(overrideNegPrefix.presentNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.presentNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.sameNe and
find(overrideNegPrefix.sameNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.sameNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.sameNe) then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
else
-- For other tenses besides the imperative
if (self.stem == 'present' and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (self.stem == 'past' and overrideNegPrefix.pastNe) then
return '<b>' .. overrideNegPrefix.pastNe .. '</b>'
elseif overrideNegPrefix.sameNe then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
end
end
-- There are two forms of construction of the imperative,
-- one with the prefix "me-" (1) and the other (2) with the prefix "ne-".
if (tenseName == 'impPresent') then
negPrefix = (impNegForm == 2) and 'ne' or 'me'
end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>' .. negPrefix .. 'y</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
negPrefix = mw.ustring.sub(negPrefix, 1, -2)
return '<b>' .. negPrefix .. '</b>'
end
return '<b>' .. negPrefix .. '</b>'
end
end
-- =============================================================================
-- Standardization of the PREVERBAL PARTICLE
-- The proverbial particle "ê" is placed after the personal pronoun.
-- =============================================================================
-- If there are no verbal preparticles, return empty table.
function export.getPreverbParticles(preverbParticle, typeStem, isTransitive)
if not preverbParticle then
return {s1='', s2='', s3='', p1='', p2='', p3=''}
end
if preverbParticle == 'ê' then
local isErgative = isTransitive and (typeStem == 'past')
-- When the personal pronoun ends in a vowel, a "y-" is added before "ê".
-- If it's ergative, we use oblique pronouns: "min", "te", ...
if isErgative then
return {s1='ê/dê', s2='yê/dê', s3='yê/dê', p1='yê/dê', p2='yê/dê', p3='ê/dê'}
else
return {s1='ê/dê', s2='yê/dê', s3='ê/dê', p1='ê/dê', p2='ê/dê', p3='ê/dê'}
end
end
-- If the verbal preparticle is identical for all pronouns,
-- we create a table with the same value.
local preverbParticles = {}
for _, pers in ipairs(export.order) do
preverbParticles[pers] = preverbParticle
end
return preverbParticles
end
-- =============================================================================
-- RULES FOR CONSTRUCTING EACH VERB TENSE
-- This table lists, for each verb tense, what elements are required to form it:
-- - Verb conjugation is built by placing either the preverb "bi-" or "di-" before
-- the verb stem (past or present), followed by a personal ending.
-- - For the negative form, one of the prefixes "na-" or "ne-" is added as well.
-- - In some cases, a preverbal particle such as /ê/ or /dê/ is added before
-- the conjugated verb as well.
-- Not: - The "negPreverb" (preverb (bi-/di-) for negative tenses) parameter has a
-- value different from "nil" only for the Imperfect tense ("negPreverb=di").
-- - The parameter "negPrefix=na" is used only for the present indicative.
--
-- Preverb "di", used in: "indPresent"(present stem), "indImperfect"(past stem)
-- - Bo neyînî: pêşgira "di-" tenê di nav dema "IndImperfect" de tê bikaranîn.
-- Preverb "bi", used in: "indFuture"(present stem), "subPresent"(present stem),
-- "subImperfect"(past stem) = "condPresent"(past stem)
-- - The prefix "bi-" isn't used in negative forms.
--
-- Present stem, used in: "indPresent"(di)(na),
-- "indFuture"(bi)(ne) = "subPresent"(bi)(ne)
--
-- Past stem, used in: "indPreterite"(-)(ne), "indImperfect"(di)(ne), "indPluperfect"(-)(ne),
-- "indPerfect"(-)(ne), "indNwPluperfect"(-)(ne), "indFuturePerfect"(-)(ne),
-- "subPreterite"(-)(ne),
-- "subImperfect"(bi)(ne) = "condPresent"(bi)(ne),
-- "subPluperfect"(-)(ne) = "condPreterite"(-)(ne)
-- =============================================================================
-- Some conjugations are identical except that they differ only in the preverbal particle (/ê/, /dê/).
-- So, to avoid repeating the same information (and thus risking errors),
-- we establish the common part shared between these verbs.
local sharedTenseRules = {
indFuture = {
stem = "present",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['present']
},
indFuturePerfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibim']
},
subImperfect = {
stem = "past",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ama']
},
subPluperfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûma']
}
}
local mt = {
__index = function(t, k)
local commonRules = t._commonRules
if commonRules then return commonRules[k] end
end
}
-- TENSES CONJUGATION RULES
export.tenseRules = {
-- IMPERATIVE MOOD
impPresent = setmetatable({
name = "impPresent",
nameKu = "raweya fermanî",
nameEn = "present imperative",
mode = "imperative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
-- INDICATIVE MOOD
indPresent = {
name = "indPresent",
nameKu = "dema niha",
nameEn = "present",
mode = "indicative",
stem = "present",
preverb = getPreverb['di'],
negPreverb = nil,
negPrefix = getNegPrefix['na'],
endings = getEndings['present'],
preverbParticle = nil
},
indPreterite = {
name = "indPreterite",
nameKu = "raboriya sade",
nameEn = "simple past",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indImperfect = {
name = "indImperfect",
nameKu = "raboriya berdest",
nameEn = "Imperfect",
mode = "indicative",
stem = "past",
preverb = getPreverb['di'],
negPreverb = getPreverb['di'],
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indPluperfect = {
name = "indPluperfect",
nameKu = "raboriya dûr",
nameEn = "pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûm'],
preverbParticle = nil
},
indFuture = setmetatable({
name = "indFuture",
nameKu = "dema bê",
nameEn = "future",
mode = "indicative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = 'ê'
}, mt),
indFuturePerfect = setmetatable({
name = "indFuturePerfect",
nameKu = "dahatiya pêş",
nameEn = "future perfect",
mode = "indicative",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = 'ê'
}, mt),
-- In some books, the "perfect" and "nonconfirmative pluperfect" tenses
-- are classified in the "inferential mood" ("moda neşahidî").
-- Currently we classify them using the indicative mood (at the end).
indPerfect = {
name = "indPerfect",
nameKu = "raboriya dûdar",
nameEn = "perfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ime'],
preverbParticle = nil
},
indNwPluperfect = {
name = "indNwPluperfect",
nameKu = "çîrokiya boriya dûdar",
nameEn = "non-witnessed pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûme'],
preverbParticle = nil
},
-- SUBJUNCTIVE MOOD
subjPresent = setmetatable({
name = "subjPresent",
nameKu = "dema nihaya xwestekî",
nameEn = "present subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
subjPreterite = setmetatable({
name = "subjPreterite",
nameKu = "dema boriya xwestekî",
nameEn = "preterite subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = nil,
}, mt),
subjImperfect = setmetatable({
name = "subjImperfect",
nameKu = "raboriya bilaniyê",
nameEn = "imperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = nil,
}, mt),
subjPluperfect = setmetatable({
name = "subjPluperfect",
nameKu = "raboriya dûr a bilaniyê",
nameEn = "pluperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = nil
}, mt),
-- CONDITIONAL MOOD
condPresent = setmetatable({
name = "condPresent",
nameKu = "çîrokiya dema nihaya mercî",
nameEn = "present conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = 'ê'
}, mt),
condPreterite = setmetatable({
name = "condPreterite",
nameKu = "dema boriya mercî",
nameEn = "preterite conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = 'ê'
}, mt),
}
-- =============================================================================
-- MAIN CONJUGATION FUNCTOIN
-- This function returns an array containing the conjugation table for a given
-- tense as well as other information about the conjugated verb.
-- =============================================================================
function export.conjugate(opts)
opts = opts or {}
-- Required parameters
local tense = opts.tense or error("'tense' required", 2)
--One of the two parameters is required:
-- - If the tense uses the present stem, indicate "presentStem".
-- - If it uses the past stem, indicate "pastStem".
local presentStem = opts.presentStem
local pastStem = opts.pastStem
-- Optional parameters
local isTransitive = opts.isTransitive or false -- Indicate if the verb is transitive (true/false)
local isNegative = opts.isNegative or false -- Indicate if it's the negative form (true/false)
local isCompoundVerb = opts.isCompoundVerb or false -- Indicate if it's a compound verb (true/false)
local preSimpleVerb = opts.preSimpleVerb or '' -- The part before the simple verb
local postSimpleVerb = opts.postSimpleVerb or '' -- The part after the simple verb
-- These parameters are provided when the verb is irregular.
-- Allows you to manually modify preverbs ("bi-"" or "di-")
-- and negation prefixes ("na-" or "ne-")
local overridePreverb = {
-- Preverbs (bi-, di)
presentBi = opts.presentBi or nil,
presentDi = opts.presentDi or nil,
pastBi = opts.pastBi or nil,
pastDi = opts.pastDi or nil,
-- Same preverbs ("past" and "present" stem)
sameBi = opts.sameBi or nil,
sameDi = opts.sameDi or nil,
}
local overrideNegPrefix = {
-- Neg. prefix (na-, ne-)
presentNa = opts.presentNa or nil,
presentNe = opts.presentNe or nil,
pastNe = opts.pastNe or nil,
-- same neg. prefix (for past and present stem)
sameNe = opts.sameNe or nil,
impMe = opts.impMe or nil,
}
-- By default, the negation of the imperative is constructed from the prefix "me-"".
-- To obtain the second variant, the prefix with "ne-", you must specify "impNegForm=2".
local impNegForm = opts.impNegForm or 1
-- Accent/ Devok
local accent = opts.accent or 'std'
-- If "tags='na'", remove links/tags
local tags = opts.tags or 'erê'
-- If addPreverbParticles='na', remove preverb particles (ê/dê) before
-- the conjugated verbs.
local addPreverbParticles = opts.addPreverbParticles or 'erê'
-- We add a space to the left of the "postSimpleVerb" because it shouldn't be attached
-- to the simple verb.
if (postSimpleVerb ~= '' and postSimpleVerb ~=nil) then
postSimpleVerb = ' ' .. postSimpleVerb
end
-- Access to the classification table and retrieval of verb tense parameters
local infoTense = deepCopy(export.tenseRules[tense], 'copy') or false
-- We check that this tense is indeed in table "tenseRules".
if (not infoTense) then
return '<span style="color:red">Unknown tense: ' .. tense ..'</span>'
end
-- We check that one of the two parameters of the stem is given
if (infoTense.stem == 'present' and not presentStem) then
return '<span style="color:red">presentStem parameter required</span>'
elseif (infoTense.stem == 'past' and not pastStem) then
return '<span style="color:red">pasttStem parameter required</span>'
end
-- Choice between the present stem or past stem
local stem = (infoTense.stem == 'present') and presentStem or pastStem
--────────────────────────────
-- Conjugation construction --
-- ───────────────────────────
local preverb = ''
local negPrefix = ''
-- +++++++++++++++++++++++++++
-- Lêkerin nestandard --
-- +++++++++++++++++++++++++++
-- çûn
if (stem == 'her' and pastStem == 'çû') then
if tense == 'indPresent' then
if isNegative then
stem = 'r'
else
stem = 'er'
overridePreverb.presentDi = 't'
end
elseif ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
overridePreverb.presentBi = ''
if isNegative then
stem = 'r'
else
stem = 'her'
end
end
end
-- hatin
if (stem == 'wer' and pastStem == 'hat') then
if ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
if isNegative then
stem = 'ê'
else
overridePreverb.presentBi = ''
stem = 'wer'
end
elseif (tense == 'indPresent') then
stem = 'ê'
end
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ruturns the verb type: "simpleVerb" or "preverbVerb" or "compoundVerb"
local verbStruct = export.verbStruct(isCompoundVerb, preSimpleVerb)
if isNegative then
negPrefix = infoTense:negPrefix{stem=stem,
impNegForm=impNegForm,
overrideNegPrefix=overrideNegPrefix}
if infoTense.negPreverb then
preverb = infoTense:negPreverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb}
end
else
if infoTense.preverb then
preverb = infoTense:preverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb,
accent=accent}
end
end
infoTense.conj = {}
local spacing = isCompoundVerb and ' ' or ''
local endings = infoTense:endings(stem)
-- 'rojhilatî' accent (devok) for present stem
if (infoTense.stem == 'present') then
if (accent == 'rojhilatî') then
endings = endings['rojhilatî']
else
endings = endings['std']
end
end
local preverbParticles = export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem, isTransitive
)
local isErgative = isTransitive and (infoTense.stem == 'past')
-- Creating the conjugation table for a given tense
for _, pers in ipairs(export.order) do
local ending
local conjSimbleVerb
local conjVerb
if isErgative then
ending = endings.s3
else
ending = endings[pers]
end
-- Adding space after the preverbal particle, and
-- if "addPreverbParticles='na'": remove preverb particles (ê/dê).
local preverbParticle = ''
if infoTense.preverbParticle and addPreverbParticles ~= 'na' then
preverbParticle = preverbParticles[pers] .. ' '
end
conjSimbleVerb = negPrefix .. preverb .. stem .. ending
-- Adding prefixe and suffixe
conjVerb = preSimpleVerb .. spacing .. conjSimbleVerb .. postSimpleVerb
-- Spelling correction(îy -> iy)
conjVerb = gsub(conjVerb, 'îy', 'iy')
-- Add a link / if tags='na' no links
if tags ~= 'na' then
conjVerb = link{term=conjVerb, lang=langKu}
end
-- Addition of the preverbal particle
infoTense.conj[pers] = preverbParticle .. conjVerb
end
-- Imperative
if (infoTense.name == 'impPresent') then
infoTense.conj.s1 = nil
infoTense.conj.s2 = infoTense.conj.s3
infoTense.conj.s3 = nil
infoTense.conj.p1 = nil
-- infoTense.conj.p2 = infoTense.conj.p2
infoTense.conj.p3 = nil
end
return infoTense
end
-- =============================================================================
-- END
-- =============================================================================
-- Some useful tools
-- =============================================================================
-- Returns the list of verb tenses
export.tensesList = function()
local list = {}
for _, tense in pairs(export.tenseRules) do
table.insert(list, tense.name)
end
return list
end
-- Concatenation of pronouns and conjugated verbs
-- (for a given conjugate tense in all persons of that tense)
function export.concatPronomsVerbs(pronoms, conjVerbs)
local concatTab = {}
for _, pers in ipairs(export.order) do
local pronom = pronoms[pers] or ""
local verbe = conjVerbs[pers] or ""
if pronom == "" then
concatTab[pers] = verbe
elseif verbe == "" then
concatTab[pers] = pronom
else
concatTab[pers] = pronom .. " " .. verbe
end
end
return concatTab
end
-- Remove duplicates
local function removeDuplicates(list)
local seen = {}
local result = {}
for _, value in ipairs(list) do
if not seen[value] then
seen[value] = true
table.insert(result, value)
end
end
return result
end
-- =============================================================================
-- ADDITIONAL STEM OF THE PAST AND PRESENT (pastStem2, ... and presentStem2, ...)
-- This function does nothing more than add additional parameters for verb stems
-- in the past and present tenses.
-- Conjugations for the different stems will be separated by "/"
-- =============================================================================
function export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems)
local opts = deepCopy(baseOpts or {}, 'copy')
opts.tense = tense
opts.addPreverbParticles = 'na'
presentStems = presentStems or {}
pastStems = pastStems or {}
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
if not infoTense then
return '<span style="color:red">Unknown tense: ' .. tostring(tense) ..'</span>'
end
local stems = (infoTense.stem == 'present') and presentStems or pastStems
-- For each verb stem, its conjugation table is calculated and stored in conjTabs.
local conjTabs = {}
for i = 1, #stems do
local stem = stems[i]
if stem then
if (infoTense.stem == 'past') then
opts.pastStem = stem
elseif (infoTense.stem == 'present') then
opts.presentStem = stem
-- For the recognition of irregular verbs based on the past-stem part
-- see: "çûn" û "hatin"
opts.pastStem = pastStems[1]
end
-- The proverbs are added only for the first conjugation form: reading is easier.
--if (i > 1) then opts.addPreverbParticles = 'na' end
local result = export.conjugate(opts)
if result and result.conj then
table.insert(conjTabs, result.conj)
end
end
end
-- We concatenate each row of the conjugation tables.
local preverbParticles = deepCopy(export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem,
opts.isTransitive
), 'copy')
local concatConjTabs = {}
for _, pers in ipairs(export.order) do
local frag = {}
for i = 1, #conjTabs do
local val = conjTabs[i][pers]
if val then
table.insert(frag, tostring(val))
end
end
frag = removeDuplicates(frag)
if infoTense.preverbParticle then
concatConjTabs[pers] = preverbParticles[pers] .. ' '
.. table.concat(frag, ' — ')
else
concatConjTabs[pers] = table.concat(frag, ' — ')
end
end
infoTense.conj = concatConjTabs
return infoTense
end
-- ====================================================================================
-- VERB CONJUGATION IN ALL TENSES WITH OR WITHOUT PRONOUNS
-- ====================================================================================
function export.conjugateAllTenses(baseOpts, presentStems, pastStems, negation, concatPrs)
-- "concatPrs=false" table without pronouns
local opts = deepCopy(baseOpts or {}, 'copy')
if negation == 'negative' then
opts.isNegative = true
end
presentStems = presentStems or {}
pastStems = pastStems or {}
-- Concatenation of pronouns and conjugated verbs
local concatPronomsVerbs = export.concatPronomsVerbs
local tensesList = export.tensesList()
-- Conjugation in all tenses
local conjTab = {}
for _, tense in ipairs(tensesList) do
-- Conjugations without the pronouns
local conjData = deepCopy(
export.conjugateMultiStem(opts, tense, presentStems, pastStems),
'copy'
)
-- We concatenate the pronouns and the verbs if "concatPrs" is different of "false"
-- No pronouns for the imperative mood
if tense ~= 'impPresent' and concatPrs ~= false then
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
local pronoms = deepCopy(
export.conjPronouns(infoTense.stem, infoTense.mode, opts.isTransitive)
)
conjData.conj = concatPronomsVerbs(pronoms, conjData.conj)
end
conjTab[tense] = conjData
end
return conjTab
end
-- ====================================================================================
-- Allows you to obtain a given conjugation from a model.
-- Ex. {{#invoke:ku-tewandin|tew|dem=indPresent|kes=s1}}
-- See {{ku-tewîn-lk-niha}}
-- ====================================================================================
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isNegative = frame.args['neyînî'] or false,
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = args['lînk'] or 'erê',
accent = args['devok'] or 'std',
}
local tense = frame.args['dem'] or nil
local pers = frame.args['kes'] or nil
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
-- A few checks
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
if (baseOpts.isNegative == 'erê') then
baseOpts.isNegative = true
end
local tabConj = export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems).conj
return tabConj[pers]
end
-- ====================================================================================
-- GET COMMMA SEPARED FORMS
-- Bnr. [[MediaWiki:Gadget-QQ.js]]
-- Ex. {{#invoke:ku-tewandin|get_comma_separated_forms|niha=kev|borî=ket}}
-- ====================================================================================
function export.get_comma_separated_forms(frame)
local opts = {
presentStem = frame.args['niha'],
pastStem = frame.args['borî'],
isTransitive = false,
isNegative = false,
isCompoundVerb = frame['valahî'] or false,
preSimpleVerb = frame['pêşgir'] or '',
postSimpleVerb = frame['paşgir'] or '',
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = 'na', -- Remove links/tags
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local function concateList(tenseList)
local concatList = {}
for _, pers in ipairs({"s1", "s2", "s3", "p1"}) do
local tense = tenseList[pers]
table.insert(concatList, tense)
end
return table.concat(concatList, ",")
end
local tenseList = {'indPresent','indPreterite','indImperfect',
'indPluperfect','indPerfect','indNwPluperfect',
'indFuture','indFuturePerfect',
'subjImperfect','subjPluperfect'
}
local concatAllTense = {}
for i = 1, #tenseList do
local tense = tenseList[i]
if export.tenseRules[tense] then
opts.tense = tense
local conj = shallowCopy(export.conjugate(opts).conj)
local concatTense = concateList(conj)
table.insert(concatAllTense, concatTense)
end
end
return table.concat(concatAllTense, ",")
end
return export
ckpv2iiw9xx976gbjy45kvq2bfq0y82
6237718
6237716
2026-06-15T02:14:17Z
Ghybu
1393
6237718
Scribunto
text/plain
-- Modula tewandina lêkerên kurmancî
local export = {}
-- Load irregular forms table
-- local irreg = require('Module:ku-tewandin/nestandard')
local langKu = require("Modul:languages").getByCode("ku")
local link = require('Module:links').language_link
local shallowCopy = require("Module:table/shallowCopy")
local deepCopy = require("Module:table/deepCopy")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
-- =============================================================================
-- Pronouns in Kurmanji
-- =============================================================================
export.order = {"s1", "s2", "s3", "p1", "p2", "p3"}
export.pronouns = {
s1 = "ez", p1 = "em",
s2 = "tu", p2 = "hûn",
s3 = "ew", p3 = "ew"
}
export.obliquePronouns = {
s1 = "min", p1 = "me",
s2 = "te", p2 = "we",
s3 = "wê/wî", p3 = "wan"
}
export.agents = {
s1 = "te, wî, wê, we, wan", p1 = "te, wî, wê, we, wan",
s2 = "min, wî, wê, me, wan", p2 = "min, wî, wê, me, wan",
s3 = "min, te, wî, wê, me, we, wan", p3 = "min, te, wî, wê, me, we, wan"
}
-- Oblique pronoun (green)
export.obliquePronounsGreen = {
s1 = '<span style="color:green">min</span>',
s2 = '<span style="color:green">te</span>',
s3 = '<span style="color:green">wê/wî</span>',
p1 = '<span style="color:green">me</span>',
p2 = '<span style="color:green">we</span>',
p3 = '<span style="color:green">wan</span>'
}
-- ─────────────────────────────────────────────────────────────────────────────
-- 1) This function returns correct subject/agent pronoun, ergativity rule:
-- - Transitive verbs in past tenses → oblique pronoun (green) = agent
-- - All other cases → direct pronoun (no color) = subject
-- 2) Also add the subjunctive prefix "(bila)"
-- ─────────────────────────────────────────────────────────────────────────────
function export.conjPronouns(stemType, mode, isTransitive)
local pronouns = shallowCopy(export.pronouns)
-- Ergativity in kurdish: transitive verbs that are conjugated with the past tense stem are
-- conjugated according to the object, not the subject.
-- Therefore, to have an ergative construction,
-- the verb must be transitive and its stem must be the stem of the past tense.
local isErgative = isTransitive and (stemType == 'past')
-- If it's ergative, we use oblique pronouns: "min", "te", ...
-- If it's not ergative, we use normal pronouns: "ez", "tu", ...
if isErgative then
pronouns = shallowCopy(export.obliquePronounsGreen)
end
-- For the subjunctive mood, we add "(bila)" at the beginning.
if mode == 'subjunctive' then
local subjPrefix = '<span style="color:gray">(bila)</span>'
for _, pers in ipairs(export.order) do
pronouns[pers] = subjPrefix .. ' ' .. pronouns[pers]
end
end
return pronouns
end
-- =============================================================================
-- VERBAL STRUCTURE IN THE INFINITIVE:
-- Verbs in the infinitive appear in three main forms:
-- 1) Simple verb (indivisible light verb):
-- - ex.: "kirin", "çûn", "xwarin", ...
-- 2) Verbs with preverbs (preverb + simple verb):
-- - ex.: "rakirin" (ra- + kirin), "çêkirin" (çê- + kirin), "vexwarin" (ve- + xwarin), ...
-- - Preverb verbs don't use the prefix "bi-" (ez ê rakim , ew ê rake , ...)
-- 3) Compound verbs, construction with non-verbal element (the noun is not attached to the verb):
-- - Left of the simple verb: "hez kirin" ("hez" + "kirin"), "li dar xistin" ("li dar" + "xistin"), ...
-- - Right of the simple verb: "kirin der" ("kirin" + "der"), "girtin ser xwe" ("girtin" + "ser xwe"), ...
-- - Compound verbs use the prefix "bi-" (ez ê hez bi-kim , ew ê hez bi-ke )
-- STRUCTURE: preSimpleVerb + spacing + simpleVerb + postSimpleVerb
-- EX. kirin: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- rakirin: preSimpleVerb='ra'; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- hez kirin: preSimpleVerb='hez'; spacing=true; simpleVerb='kirin'; postSimpleVerb=''
-- pev çûn: preSimpleVerb='pev'; spacing=true; simpleVerb='çûn'; postSimpleVerb=''
-- kirin der: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb='der'
-- WARNING: Conjugation can vary depending on the type of verb.
-- For example, in the future tense,the prefix "bi" is used for compound verbs,
-- but not for preverbal verbs, see the function that manages it "tenseRules" table.
-- This table does not yet support the mixed case: a verb composed of a noun and a preverb verb.
-- =============================================================================
function export.verbStruct(isCompoundVerb, preSimpleVerb)
local struct
if (preSimpleVerb and preSimpleVerb ~= '' and not isCompoundVerb) then
struct = 'preverbVerb'
elseif isCompoundVerb then
struct = 'compoundVerb'
else
struct = 'simpleVerb'
end
return struct
end
-- ================================================================
-- INFLECTIONAL ENDINGS
-- Assigns verb inflectional endings (suffixes) to all tenses
-- ================================================================
local getEndings = {}
do
-- ───────────────────────────────────────────────────────────────
-- Ending using present stem
-- ───────────────────────────────────────────────────────────────
getEndings['present'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends = {}
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends['std'] = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
ends['rojhilatî'] = {s1='m', s2='(y)', s3='t', p1='yn', p2='n', p3='n'}
else
ends['std'] = {s1='im', s2='î', s3='e', p1='in', p2='in', p3='in'}
ends['rojhilatî'] = {s1='im', s2='î', s3='<u>it</u>/ît', p1='în', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Ind. preterite + ind. imperfect ending
-- ───────────────────────────────────────────────────────────────
getEndings['past'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiouû]$') then
ends = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
elseif mw.ustring.match(stem, 'î$') then
-- if self.name == 'indImperfect' then
-- -- special indicative ind. imperfect rule
-- ends = {s1='yam', s2='yayî', s3='ya', p1='yan', p2='yan', p3='yan'}
-- end
ends = {s1='m', s2='', s3='', p1='n', p2='n', p3='n'}
else
ends = {s1='im', s2='î', s3='', p1='in', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Compound endings with auxiliary "bûn"
-- Inflectional endings are created by taking the different forms of the
-- verb "bûn" (with present stem "-b-" and past stem "-bû-") and
-- adding an "i-" prefix before them: "i-b-im", "i-bû-m", "i-bû-me", "i-bû-ma".
-- This "i-" varies according to the final letter of the verb stem.
-- ───────────────────────────────────────────────────────────────
local function normalize_i(stem)
local prfx_i = "i"
if mw.ustring.match(stem, "ya$") or
mw.ustring.match(stem, "[îû]$") then -- cf. karîn (-karî-)
prfx_i = ""
elseif mw.ustring.match(stem, '[aeêiou]$') then
prfx_i = "yi"
end
return prfx_i
end
getEndings['ibim'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bim", p1 = prfx_i .. "bin",
s2 = prfx_i .. "bî", p2 = prfx_i .. "bin",
s3 = prfx_i .. "be", p3 = prfx_i .. "bin"
}
end
getEndings['ibûm'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûm", p1 = prfx_i .. "bûn",
s2 = prfx_i .. "bûyî", p2 = prfx_i .. "bûn",
s3 = prfx_i .. "bû", p3 = prfx_i .. "bûn"
}
end
getEndings['ibûme'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûme", p1 = prfx_i .. "bûne",
s2 = prfx_i .. "bûyiye", p2 = prfx_i .. "bûne",
s3 = prfx_i .. "bûye", p3 = prfx_i .. "bûne"
}
end
getEndings['ibûma'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûma", p1 = prfx_i .. "bûna",
s2 = prfx_i .. "bûyayî", p2 = prfx_i .. "bûna",
s3 = prfx_i .. "bûya", p3 = prfx_i .. "bûna"
}
end
-- ───────────────────────────────────────────────────────────────
-- Ind. perfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ime'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="me", s2="yî", s3="ye", p1="ne", p2="ne", p3="ne"}
else
ends = {s1="ime", s2="iyî", s3="iye", p1="ine", p2="ine", p3="ine"}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Subj. Imperfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ama'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
-- The doublet in "-iyan" of verbs in -"în" (gerîn/-geriya-, kenîn/-keniya-, ...),
-- in the conditional and subjunctive moods, a doublet "yaya" appears; it's removed.
-- -yayayî → -yayî; -yaya → -ya
if mw.ustring.match(stem, '(ya)$') then
ends = {s1="ma", s2="yî", s3="", p1="na", p2="na", p3="na"}
elseif mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="ma", s2="yayî", s3="ya", p1="na", p2="na", p3="na"}
else
ends = {s1="ama", s2="ayî", s3="a", p1="ana", p2="ana", p3="ana"}
end
return ends
end
end
-- =============================================================================
-- RULES FOR PREVERBS: "bi-" and "di-"
-- There are two preverbs: "bi-" and "di-". These preverbs can change form
-- depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getPreverb = {}
do
getPreverb['bi'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local verbStruct = opts.verbStruct
local overridePreverb = opts.overridePreverb
local accent = opts.accent
-- Devoka rojhilatî:
-- @Ferhengvan: Dema bêt bi lêkera alîkar "ê / dê" û bi rehê lêkerê yê
-- dema niha û pêşgirên kesî tê çêkirin. Pêşgira "bi-" li destpêka lêkera
-- serekî nîne: - ez ê / dê xw-im (standard: ez ê/dê bi-xw-im).
if (self.name == 'indFuture' and accent == 'rojhilatî') then
return ''
end
-- Preverb verbs don't use the preverb "bi-": ra-kirin (ez ê rakim), ve-xwarin (ez ê vexwim) , ...
-- But compound verb and simple verbs use it: hez kirin (ez ê hez bi-kim), lê bigirin (ez ê lê bi-girim), ...
if (verbStruct == 'preverbVerb') then
return ''
end
-- If the preverb "bi-" is provided.
if (self.stem == 'present' and overridePreverb.presentBi) then
return overridePreverb.presentBi
elseif (self.stem == 'past' and overridePreverb.pastBi) then
return overridePreverb.pastBi
elseif overridePreverb.sameBi then
return overridePreverb.sameBi
end
-- Modification of the preverbe "bi-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[aeêiîouû]') then
return 'b'
end
return 'bi'
end
getPreverb['di'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local overridePreverb = opts.overridePreverb
-- If the preverb "di" is provided.
if (self.stem == 'present' and overridePreverb.presentDi) then
return overridePreverb.presentDi
elseif (self.stem == 'past' and overridePreverb.pastDi) then
return overridePreverb.pastDi
elseif overridePreverb.sameDi then
return overridePreverb.sameDi
end
-- Modification of the preverbe "di-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[ai]') then
return 'd'
end
-- Ex. hatin : stem = -ê- // ez têm
if mw.ustring.match(stem, '^[êî]') then
return 't'
end
return 'di'
end
end
-- =============================================================================
-- RULES FOR NEGATION PREFIXES: "na-" and "ne-"
-- There are two negation prefixes: "na-" and "ne-". These preverbs can change
-- form depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getNegPrefix = {}
do
getNegPrefix['na'] = function (self, opts)
-- self: reserved for future use
local _ = self -- delete the warning (unused argument)
opts = opts or {}
local stem = opts.stem
local overrideNa = opts.overrideNegPrefix.presentNa
if overrideNa then return '<b>' .. overrideNa .. '</b>' end
-- if irreg.dijrezikNa[stem] then return irreg.dijrezikNa[stem] end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>nay</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
return '<b>n</b>'
end
-- Tîpa duyem "-a-" ye (k-a-rîn, z-a-nîn, ...)
if mw.ustring.match(stem, '^%wa') then
return '<b>ni</b>'
end
return '<b>na</b>'
end
getNegPrefix['ne'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local tenseName = self.name
local impNegForm = opts.impNegForm -- form "1" or "2" of imp.
local overrideNegPrefix = opts.overrideNegPrefix
local negPrefix = 'ne'
-- Bo neyînî: pêşgira "di-" tenê di nav dema "indImperfect" de tê bikaranîn.
-- ji ber vê yekê 'negPrefix' hertim (?) 'ne' ye ji ber ku dikeve pêş
-- pêşgira "di-": wê/wî ne-di-elimand (elimandin)
if (tenseName == 'indImperfect') then
return '<b>' .. negPrefix .. '</b>'
end
-- Override
if (overrideNegPrefix.impMe or overrideNegPrefix.presentNe
or overrideNegPrefix.pastNe
or overrideNegPrefix.sameNe) then
-- Ovverride imp.
if (tenseName == 'impPresent') then
if (impNegForm == 1 and overrideNegPrefix.impMe) then
return '<b>' .. overrideNegPrefix.impMe .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.presentNe and
find(overrideNegPrefix.presentNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.presentNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.sameNe and
find(overrideNegPrefix.sameNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.sameNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.sameNe) then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
else
-- For other tenses besides the imperative
if (self.stem == 'present' and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (self.stem == 'past' and overrideNegPrefix.pastNe) then
return '<b>' .. overrideNegPrefix.pastNe .. '</b>'
elseif overrideNegPrefix.sameNe then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
end
end
-- There are two forms of construction of the imperative,
-- one with the prefix "me-" (1) and the other (2) with the prefix "ne-".
if (tenseName == 'impPresent') then
negPrefix = (impNegForm == 2) and 'ne' or 'me'
end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>' .. negPrefix .. 'y</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
negPrefix = mw.ustring.sub(negPrefix, 1, -2)
return '<b>' .. negPrefix .. '</b>'
end
return '<b>' .. negPrefix .. '</b>'
end
end
-- =============================================================================
-- Standardization of the PREVERBAL PARTICLE
-- The proverbial particle "ê" is placed after the personal pronoun.
-- =============================================================================
-- If there are no verbal preparticles, return empty table.
function export.getPreverbParticles(preverbParticle, typeStem, isTransitive)
if not preverbParticle then
return {s1='', s2='', s3='', p1='', p2='', p3=''}
end
if preverbParticle == 'ê' then
local isErgative = isTransitive and (typeStem == 'past')
-- When the personal pronoun ends in a vowel, a "y-" is added before "ê".
-- If it's ergative, we use oblique pronouns: "min", "te", ...
if isErgative then
return {s1='ê/dê', s2='yê/dê', s3='yê/dê', p1='yê/dê', p2='yê/dê', p3='ê/dê'}
else
return {s1='ê/dê', s2='yê/dê', s3='ê/dê', p1='ê/dê', p2='ê/dê', p3='ê/dê'}
end
end
-- If the verbal preparticle is identical for all pronouns,
-- we create a table with the same value.
local preverbParticles = {}
for _, pers in ipairs(export.order) do
preverbParticles[pers] = preverbParticle
end
return preverbParticles
end
-- =============================================================================
-- RULES FOR CONSTRUCTING EACH VERB TENSE
-- This table lists, for each verb tense, what elements are required to form it:
-- - Verb conjugation is built by placing either the preverb "bi-" or "di-" before
-- the verb stem (past or present), followed by a personal ending.
-- - For the negative form, one of the prefixes "na-" or "ne-" is added as well.
-- - In some cases, a preverbal particle such as /ê/ or /dê/ is added before
-- the conjugated verb as well.
-- Not: - The "negPreverb" (preverb (bi-/di-) for negative tenses) parameter has a
-- value different from "nil" only for the Imperfect tense ("negPreverb=di").
-- - The parameter "negPrefix=na" is used only for the present indicative.
--
-- Preverb "di", used in: "indPresent"(present stem), "indImperfect"(past stem)
-- - Bo neyînî: pêşgira "di-" tenê di nav dema "IndImperfect" de tê bikaranîn.
-- Preverb "bi", used in: "indFuture"(present stem), "subPresent"(present stem),
-- "subImperfect"(past stem) = "condPresent"(past stem)
-- - The prefix "bi-" isn't used in negative forms.
--
-- Present stem, used in: "indPresent"(di)(na),
-- "indFuture"(bi)(ne) = "subPresent"(bi)(ne)
--
-- Past stem, used in: "indPreterite"(-)(ne), "indImperfect"(di)(ne), "indPluperfect"(-)(ne),
-- "indPerfect"(-)(ne), "indNwPluperfect"(-)(ne), "indFuturePerfect"(-)(ne),
-- "subPreterite"(-)(ne),
-- "subImperfect"(bi)(ne) = "condPresent"(bi)(ne),
-- "subPluperfect"(-)(ne) = "condPreterite"(-)(ne)
-- =============================================================================
-- Some conjugations are identical except that they differ only in the preverbal particle (/ê/, /dê/).
-- So, to avoid repeating the same information (and thus risking errors),
-- we establish the common part shared between these verbs.
local sharedTenseRules = {
indFuture = {
stem = "present",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['present']
},
indFuturePerfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibim']
},
subImperfect = {
stem = "past",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ama']
},
subPluperfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûma']
}
}
local mt = {
__index = function(t, k)
local commonRules = t._commonRules
if commonRules then return commonRules[k] end
end
}
-- TENSES CONJUGATION RULES
export.tenseRules = {
-- IMPERATIVE MOOD
impPresent = setmetatable({
name = "impPresent",
nameKu = "raweya fermanî",
nameEn = "present imperative",
mode = "imperative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
-- INDICATIVE MOOD
indPresent = {
name = "indPresent",
nameKu = "dema niha",
nameEn = "present",
mode = "indicative",
stem = "present",
preverb = getPreverb['di'],
negPreverb = nil,
negPrefix = getNegPrefix['na'],
endings = getEndings['present'],
preverbParticle = nil
},
indPreterite = {
name = "indPreterite",
nameKu = "raboriya sade",
nameEn = "simple past",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indImperfect = {
name = "indImperfect",
nameKu = "raboriya berdest",
nameEn = "Imperfect",
mode = "indicative",
stem = "past",
preverb = getPreverb['di'],
negPreverb = getPreverb['di'],
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indPluperfect = {
name = "indPluperfect",
nameKu = "raboriya dûr",
nameEn = "pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûm'],
preverbParticle = nil
},
indFuture = setmetatable({
name = "indFuture",
nameKu = "dema bê",
nameEn = "future",
mode = "indicative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = 'ê'
}, mt),
indFuturePerfect = setmetatable({
name = "indFuturePerfect",
nameKu = "dahatiya pêş",
nameEn = "future perfect",
mode = "indicative",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = 'ê'
}, mt),
-- In some books, the "perfect" and "nonconfirmative pluperfect" tenses
-- are classified in the "inferential mood" ("moda neşahidî").
-- Currently we classify them using the indicative mood (at the end).
indPerfect = {
name = "indPerfect",
nameKu = "raboriya dûdar",
nameEn = "perfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ime'],
preverbParticle = nil
},
indNwPluperfect = {
name = "indNwPluperfect",
nameKu = "çîrokiya boriya dûdar",
nameEn = "non-witnessed pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûme'],
preverbParticle = nil
},
-- SUBJUNCTIVE MOOD
subjPresent = setmetatable({
name = "subjPresent",
nameKu = "dema nihaya xwestekî",
nameEn = "present subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
subjPreterite = setmetatable({
name = "subjPreterite",
nameKu = "dema boriya xwestekî",
nameEn = "preterite subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = nil,
}, mt),
subjImperfect = setmetatable({
name = "subjImperfect",
nameKu = "raboriya bilaniyê",
nameEn = "imperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = nil,
}, mt),
subjPluperfect = setmetatable({
name = "subjPluperfect",
nameKu = "raboriya dûr a bilaniyê",
nameEn = "pluperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = nil
}, mt),
-- CONDITIONAL MOOD
condPresent = setmetatable({
name = "condPresent",
nameKu = "çîrokiya dema nihaya mercî",
nameEn = "present conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = 'ê'
}, mt),
condPreterite = setmetatable({
name = "condPreterite",
nameKu = "dema boriya mercî",
nameEn = "preterite conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = 'ê'
}, mt),
}
-- =============================================================================
-- MAIN CONJUGATION FUNCTOIN
-- This function returns an array containing the conjugation table for a given
-- tense as well as other information about the conjugated verb.
-- =============================================================================
function export.conjugate(opts)
opts = opts or {}
-- Required parameters
local tense = opts.tense or error("'tense' required", 2)
--One of the two parameters is required:
-- - If the tense uses the present stem, indicate "presentStem".
-- - If it uses the past stem, indicate "pastStem".
local presentStem = opts.presentStem
local pastStem = opts.pastStem
-- Optional parameters
local isTransitive = opts.isTransitive or false -- Indicate if the verb is transitive (true/false)
local isNegative = opts.isNegative or false -- Indicate if it's the negative form (true/false)
local isCompoundVerb = opts.isCompoundVerb or false -- Indicate if it's a compound verb (true/false)
local preSimpleVerb = opts.preSimpleVerb or '' -- The part before the simple verb
local postSimpleVerb = opts.postSimpleVerb or '' -- The part after the simple verb
-- These parameters are provided when the verb is irregular.
-- Allows you to manually modify preverbs ("bi-"" or "di-")
-- and negation prefixes ("na-" or "ne-")
local overridePreverb = {
-- Preverbs (bi-, di)
presentBi = opts.presentBi or nil,
presentDi = opts.presentDi or nil,
pastBi = opts.pastBi or nil,
pastDi = opts.pastDi or nil,
-- Same preverbs ("past" and "present" stem)
sameBi = opts.sameBi or nil,
sameDi = opts.sameDi or nil,
}
local overrideNegPrefix = {
-- Neg. prefix (na-, ne-)
presentNa = opts.presentNa or nil,
presentNe = opts.presentNe or nil,
pastNe = opts.pastNe or nil,
-- same neg. prefix (for past and present stem)
sameNe = opts.sameNe or nil,
impMe = opts.impMe or nil,
}
-- By default, the negation of the imperative is constructed from the prefix "me-"".
-- To obtain the second variant, the prefix with "ne-", you must specify "impNegForm=2".
local impNegForm = opts.impNegForm or 1
-- Accent/ Devok
local accent = opts.accent or 'std'
-- If "tags='na'", remove links/tags
local tags = opts.tags or 'erê'
-- If addPreverbParticles='na', remove preverb particles (ê/dê) before
-- the conjugated verbs.
local addPreverbParticles = opts.addPreverbParticles or 'erê'
-- We add a space to the left of the "postSimpleVerb" because it shouldn't be attached
-- to the simple verb.
if (postSimpleVerb ~= '' and postSimpleVerb ~=nil) then
postSimpleVerb = ' ' .. postSimpleVerb
end
-- Access to the classification table and retrieval of verb tense parameters
local infoTense = deepCopy(export.tenseRules[tense], 'copy') or false
-- We check that this tense is indeed in table "tenseRules".
if (not infoTense) then
return '<span style="color:red">Unknown tense: ' .. tense ..'</span>'
end
-- We check that one of the two parameters of the stem is given
if (infoTense.stem == 'present' and not presentStem) then
return '<span style="color:red">presentStem parameter required</span>'
elseif (infoTense.stem == 'past' and not pastStem) then
return '<span style="color:red">pasttStem parameter required</span>'
end
-- Choice between the present stem or past stem
local stem = (infoTense.stem == 'present') and presentStem or pastStem
--────────────────────────────
-- Conjugation construction --
-- ───────────────────────────
local preverb = ''
local negPrefix = ''
-- +++++++++++++++++++++++++++
-- Lêkerin nestandard --
-- +++++++++++++++++++++++++++
-- çûn
if (stem == 'her' and pastStem == 'çû') then
if tense == 'indPresent' then
if isNegative then
stem = 'r'
else
stem = 'er'
overridePreverb.presentDi = 't'
end
elseif ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
overridePreverb.presentBi = ''
if isNegative then
stem = 'r'
else
stem = 'her'
end
end
end
-- hatin
if (stem == 'wer' and pastStem == 'hat') then
if ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
if isNegative then
stem = 'ê'
else
overridePreverb.presentBi = ''
stem = 'wer'
end
elseif (tense == 'indPresent') then
stem = 'ê'
end
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ruturns the verb type: "simpleVerb" or "preverbVerb" or "compoundVerb"
local verbStruct = export.verbStruct(isCompoundVerb, preSimpleVerb)
if isNegative then
negPrefix = infoTense:negPrefix{stem=stem,
impNegForm=impNegForm,
overrideNegPrefix=overrideNegPrefix}
if infoTense.negPreverb then
preverb = infoTense:negPreverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb}
end
else
if infoTense.preverb then
preverb = infoTense:preverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb,
accent=accent}
end
end
infoTense.conj = {}
local spacing = isCompoundVerb and ' ' or ''
local endings = infoTense:endings(stem)
-- 'rojhilatî' accent (devok) for present stem
if (infoTense.stem == 'present') then
if (accent == 'rojhilatî') then
endings = endings['rojhilatî']
else
endings = endings['std']
end
end
local preverbParticles = export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem, isTransitive
)
local isErgative = isTransitive and (infoTense.stem == 'past')
-- Creating the conjugation table for a given tense
for _, pers in ipairs(export.order) do
local ending
local conjSimbleVerb
local conjVerb
if isErgative then
ending = endings.s3
else
ending = endings[pers]
end
-- Adding space after the preverbal particle, and
-- if "addPreverbParticles='na'": remove preverb particles (ê/dê).
local preverbParticle = ''
if infoTense.preverbParticle and addPreverbParticles ~= 'na' then
preverbParticle = preverbParticles[pers] .. ' '
end
conjSimbleVerb = negPrefix .. preverb .. stem .. ending
-- Adding prefixe and suffixe
conjVerb = preSimpleVerb .. spacing .. conjSimbleVerb .. postSimpleVerb
-- Spelling correction(îy -> iy)
conjVerb = gsub(conjVerb, 'îy', 'iy')
-- Add a link / if tags='na' no links
if tags ~= 'na' then
conjVerb = link{term=conjVerb, lang=langKu}
end
-- Addition of the preverbal particle
infoTense.conj[pers] = preverbParticle .. conjVerb
end
-- Imperative
if (infoTense.name == 'impPresent') then
infoTense.conj.s1 = nil
infoTense.conj.s2 = infoTense.conj.s3
infoTense.conj.s3 = nil
infoTense.conj.p1 = nil
-- infoTense.conj.p2 = infoTense.conj.p2
infoTense.conj.p3 = nil
end
return infoTense
end
-- =============================================================================
-- END
-- =============================================================================
-- Some useful tools
-- =============================================================================
-- Returns the list of verb tenses
export.tensesList = function()
local list = {}
for _, tense in pairs(export.tenseRules) do
table.insert(list, tense.name)
end
return list
end
-- Concatenation of pronouns and conjugated verbs
-- (for a given conjugate tense in all persons of that tense)
function export.concatPronomsVerbs(pronoms, conjVerbs)
local concatTab = {}
for _, pers in ipairs(export.order) do
local pronom = pronoms[pers] or ""
local verbe = conjVerbs[pers] or ""
if pronom == "" then
concatTab[pers] = verbe
elseif verbe == "" then
concatTab[pers] = pronom
else
concatTab[pers] = pronom .. " " .. verbe
end
end
return concatTab
end
-- Remove duplicates
local function removeDuplicates(list)
local seen = {}
local result = {}
for _, value in ipairs(list) do
if not seen[value] then
seen[value] = true
table.insert(result, value)
end
end
return result
end
-- =============================================================================
-- ADDITIONAL STEM OF THE PAST AND PRESENT (pastStem2, ... and presentStem2, ...)
-- This function does nothing more than add additional parameters for verb stems
-- in the past and present tenses.
-- Conjugations for the different stems will be separated by "/"
-- =============================================================================
function export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems)
local opts = deepCopy(baseOpts or {}, 'copy')
opts.tense = tense
opts.addPreverbParticles = 'na'
presentStems = presentStems or {}
pastStems = pastStems or {}
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
if not infoTense then
return '<span style="color:red">Unknown tense: ' .. tostring(tense) ..'</span>'
end
local stems = (infoTense.stem == 'present') and presentStems or pastStems
-- For each verb stem, its conjugation table is calculated and stored in conjTabs.
local conjTabs = {}
for i = 1, #stems do
local stem = stems[i]
if stem then
if (infoTense.stem == 'past') then
opts.pastStem = stem
elseif (infoTense.stem == 'present') then
opts.presentStem = stem
-- For the recognition of irregular verbs based on the past-stem part
-- see: "çûn" û "hatin"
opts.pastStem = pastStems[1]
end
local result = export.conjugate(opts)
if result and result.conj then
table.insert(conjTabs, result.conj)
end
end
end
-- We concatenate each row of the conjugation tables.
local preverbParticles = deepCopy(export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem,
opts.isTransitive
), 'copy')
local concatConjTabs = {}
for _, pers in ipairs(export.order) do
local frag = {}
for i = 1, #conjTabs do
local val = conjTabs[i][pers]
if val then
table.insert(frag, tostring(val))
end
end
frag = removeDuplicates(frag)
if infoTense.preverbParticle then
concatConjTabs[pers] = preverbParticles[pers] .. ' '
.. table.concat(frag, ' — ')
else
concatConjTabs[pers] = table.concat(frag, ' — ')
end
end
infoTense.conj = concatConjTabs
return infoTense
end
-- ====================================================================================
-- VERB CONJUGATION IN ALL TENSES WITH OR WITHOUT PRONOUNS
-- ====================================================================================
function export.conjugateAllTenses(baseOpts, presentStems, pastStems, negation, concatPrs)
-- "concatPrs=false" table without pronouns
local opts = deepCopy(baseOpts or {}, 'copy')
if negation == 'negative' then
opts.isNegative = true
end
presentStems = presentStems or {}
pastStems = pastStems or {}
-- Concatenation of pronouns and conjugated verbs
local concatPronomsVerbs = export.concatPronomsVerbs
local tensesList = export.tensesList()
-- Conjugation in all tenses
local conjTab = {}
for _, tense in ipairs(tensesList) do
-- Conjugations without the pronouns
local conjData = deepCopy(
export.conjugateMultiStem(opts, tense, presentStems, pastStems),
'copy'
)
-- We concatenate the pronouns and the verbs if "concatPrs" is different of "false"
-- No pronouns for the imperative mood
if tense ~= 'impPresent' and concatPrs ~= false then
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
local pronoms = deepCopy(
export.conjPronouns(infoTense.stem, infoTense.mode, opts.isTransitive)
)
conjData.conj = concatPronomsVerbs(pronoms, conjData.conj)
end
conjTab[tense] = conjData
end
return conjTab
end
-- ====================================================================================
-- Allows you to obtain a given conjugation from a model.
-- Ex. {{#invoke:ku-tewandin|tew|dem=indPresent|kes=s1}}
-- See {{ku-tewîn-lk-niha}}
-- ====================================================================================
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isNegative = frame.args['neyînî'] or false,
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = args['lînk'] or 'erê',
accent = args['devok'] or 'std',
}
local tense = frame.args['dem'] or nil
local pers = frame.args['kes'] or nil
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
-- A few checks
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
if (baseOpts.isNegative == 'erê') then
baseOpts.isNegative = true
end
local tabConj = export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems).conj
return tabConj[pers]
end
-- ====================================================================================
-- GET COMMMA SEPARED FORMS
-- Bnr. [[MediaWiki:Gadget-QQ.js]]
-- Ex. {{#invoke:ku-tewandin|get_comma_separated_forms|niha=kev|borî=ket}}
-- ====================================================================================
function export.get_comma_separated_forms(frame)
local opts = {
presentStem = frame.args['niha'],
pastStem = frame.args['borî'],
isTransitive = false,
isNegative = false,
isCompoundVerb = frame['valahî'] or false,
preSimpleVerb = frame['pêşgir'] or '',
postSimpleVerb = frame['paşgir'] or '',
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = 'na', -- Remove links/tags
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local function concateList(tenseList)
local concatList = {}
for _, pers in ipairs({"s1", "s2", "s3", "p1"}) do
local tense = tenseList[pers]
table.insert(concatList, tense)
end
return table.concat(concatList, ",")
end
local tenseList = {'indPresent','indPreterite','indImperfect',
'indPluperfect','indPerfect','indNwPluperfect',
'indFuture','indFuturePerfect',
'subjImperfect','subjPluperfect'
}
local concatAllTense = {}
for i = 1, #tenseList do
local tense = tenseList[i]
if export.tenseRules[tense] then
opts.tense = tense
local conj = shallowCopy(export.conjugate(opts).conj)
local concatTense = concateList(conj)
table.insert(concatAllTense, concatTense)
end
end
return table.concat(concatAllTense, ",")
end
return export
1q29dc6lte916kee86l6hfn43jg1mc2
6237725
6237718
2026-06-15T03:41:02Z
Ghybu
1393
neg.
6237725
Scribunto
text/plain
-- Modula tewandina lêkerên kurmancî
local export = {}
-- Load irregular forms table
-- local irreg = require('Module:ku-tewandin/nestandard')
local langKu = require("Modul:languages").getByCode("ku")
local link = require('Module:links').language_link
local shallowCopy = require("Module:table/shallowCopy")
local deepCopy = require("Module:table/deepCopy")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
-- =============================================================================
-- Pronouns in Kurmanji
-- =============================================================================
export.order = {"s1", "s2", "s3", "p1", "p2", "p3"}
export.pronouns = {
s1 = "ez", p1 = "em",
s2 = "tu", p2 = "hûn",
s3 = "ew", p3 = "ew"
}
export.obliquePronouns = {
s1 = "min", p1 = "me",
s2 = "te", p2 = "we",
s3 = "wê/wî", p3 = "wan"
}
export.agents = {
s1 = "te, wî, wê, we, wan", p1 = "te, wî, wê, we, wan",
s2 = "min, wî, wê, me, wan", p2 = "min, wî, wê, me, wan",
s3 = "min, te, wî, wê, me, we, wan", p3 = "min, te, wî, wê, me, we, wan"
}
-- Oblique pronoun (green)
export.obliquePronounsGreen = {
s1 = '<span style="color:green">min</span>',
s2 = '<span style="color:green">te</span>',
s3 = '<span style="color:green">wê/wî</span>',
p1 = '<span style="color:green">me</span>',
p2 = '<span style="color:green">we</span>',
p3 = '<span style="color:green">wan</span>'
}
-- ─────────────────────────────────────────────────────────────────────────────
-- 1) This function returns correct subject/agent pronoun, ergativity rule:
-- - Transitive verbs in past tenses → oblique pronoun (green) = agent
-- - All other cases → direct pronoun (no color) = subject
-- 2) Also add the subjunctive prefix "(bila)"
-- ─────────────────────────────────────────────────────────────────────────────
function export.conjPronouns(stemType, mode, isTransitive)
local pronouns = shallowCopy(export.pronouns)
-- Ergativity in kurdish: transitive verbs that are conjugated with the past tense stem are
-- conjugated according to the object, not the subject.
-- Therefore, to have an ergative construction,
-- the verb must be transitive and its stem must be the stem of the past tense.
local isErgative = isTransitive and (stemType == 'past')
-- If it's ergative, we use oblique pronouns: "min", "te", ...
-- If it's not ergative, we use normal pronouns: "ez", "tu", ...
if isErgative then
pronouns = shallowCopy(export.obliquePronounsGreen)
end
-- For the subjunctive mood, we add "(bila)" at the beginning.
if mode == 'subjunctive' then
local subjPrefix = '<span style="color:gray">(bila)</span>'
for _, pers in ipairs(export.order) do
pronouns[pers] = subjPrefix .. ' ' .. pronouns[pers]
end
end
return pronouns
end
-- =============================================================================
-- VERBAL STRUCTURE IN THE INFINITIVE:
-- Verbs in the infinitive appear in three main forms:
-- 1) Simple verb (indivisible light verb):
-- - ex.: "kirin", "çûn", "xwarin", ...
-- 2) Verbs with preverbs (preverb + simple verb):
-- - ex.: "rakirin" (ra- + kirin), "çêkirin" (çê- + kirin), "vexwarin" (ve- + xwarin), ...
-- - Preverb verbs don't use the prefix "bi-" (ez ê rakim , ew ê rake , ...)
-- 3) Compound verbs, construction with non-verbal element (the noun is not attached to the verb):
-- - Left of the simple verb: "hez kirin" ("hez" + "kirin"), "li dar xistin" ("li dar" + "xistin"), ...
-- - Right of the simple verb: "kirin der" ("kirin" + "der"), "girtin ser xwe" ("girtin" + "ser xwe"), ...
-- - Compound verbs use the prefix "bi-" (ez ê hez bi-kim , ew ê hez bi-ke )
-- STRUCTURE: preSimpleVerb + spacing + simpleVerb + postSimpleVerb
-- EX. kirin: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- rakirin: preSimpleVerb='ra'; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- hez kirin: preSimpleVerb='hez'; spacing=true; simpleVerb='kirin'; postSimpleVerb=''
-- pev çûn: preSimpleVerb='pev'; spacing=true; simpleVerb='çûn'; postSimpleVerb=''
-- kirin der: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb='der'
-- WARNING: Conjugation can vary depending on the type of verb.
-- For example, in the future tense,the prefix "bi" is used for compound verbs,
-- but not for preverbal verbs, see the function that manages it "tenseRules" table.
-- This table does not yet support the mixed case: a verb composed of a noun and a preverb verb.
-- =============================================================================
function export.verbStruct(isCompoundVerb, preSimpleVerb)
local struct
if (preSimpleVerb and preSimpleVerb ~= '' and not isCompoundVerb) then
struct = 'preverbVerb'
elseif isCompoundVerb then
struct = 'compoundVerb'
else
struct = 'simpleVerb'
end
return struct
end
-- ================================================================
-- INFLECTIONAL ENDINGS
-- Assigns verb inflectional endings (suffixes) to all tenses
-- ================================================================
local getEndings = {}
do
-- ───────────────────────────────────────────────────────────────
-- Ending using present stem
-- ───────────────────────────────────────────────────────────────
getEndings['present'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends = {}
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends['std'] = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
ends['rojhilatî'] = {s1='m', s2='(y)', s3='t', p1='yn', p2='n', p3='n'}
else
ends['std'] = {s1='im', s2='î', s3='e', p1='in', p2='in', p3='in'}
ends['rojhilatî'] = {s1='im', s2='î', s3='<u>it</u>/ît', p1='în', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Ind. preterite + ind. imperfect ending
-- ───────────────────────────────────────────────────────────────
getEndings['past'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiouû]$') then
ends = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
elseif mw.ustring.match(stem, 'î$') then
-- if self.name == 'indImperfect' then
-- -- special indicative ind. imperfect rule
-- ends = {s1='yam', s2='yayî', s3='ya', p1='yan', p2='yan', p3='yan'}
-- end
ends = {s1='m', s2='', s3='', p1='n', p2='n', p3='n'}
else
ends = {s1='im', s2='î', s3='', p1='in', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Compound endings with auxiliary "bûn"
-- Inflectional endings are created by taking the different forms of the
-- verb "bûn" (with present stem "-b-" and past stem "-bû-") and
-- adding an "i-" prefix before them: "i-b-im", "i-bû-m", "i-bû-me", "i-bû-ma".
-- This "i-" varies according to the final letter of the verb stem.
-- ───────────────────────────────────────────────────────────────
local function normalize_i(stem)
local prfx_i = "i"
if mw.ustring.match(stem, "ya$") or
mw.ustring.match(stem, "[îû]$") then -- cf. karîn (-karî-)
prfx_i = ""
elseif mw.ustring.match(stem, '[aeêiou]$') then
prfx_i = "yi"
end
return prfx_i
end
getEndings['ibim'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bim", p1 = prfx_i .. "bin",
s2 = prfx_i .. "bî", p2 = prfx_i .. "bin",
s3 = prfx_i .. "be", p3 = prfx_i .. "bin"
}
end
getEndings['ibûm'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûm", p1 = prfx_i .. "bûn",
s2 = prfx_i .. "bûyî", p2 = prfx_i .. "bûn",
s3 = prfx_i .. "bû", p3 = prfx_i .. "bûn"
}
end
getEndings['ibûme'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûme", p1 = prfx_i .. "bûne",
s2 = prfx_i .. "bûyiye", p2 = prfx_i .. "bûne",
s3 = prfx_i .. "bûye", p3 = prfx_i .. "bûne"
}
end
getEndings['ibûma'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûma", p1 = prfx_i .. "bûna",
s2 = prfx_i .. "bûyayî", p2 = prfx_i .. "bûna",
s3 = prfx_i .. "bûya", p3 = prfx_i .. "bûna"
}
end
-- ───────────────────────────────────────────────────────────────
-- Ind. perfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ime'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="me", s2="yî", s3="ye", p1="ne", p2="ne", p3="ne"}
else
ends = {s1="ime", s2="iyî", s3="iye", p1="ine", p2="ine", p3="ine"}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Subj. Imperfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ama'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
-- The doublet in "-iyan" of verbs in -"în" (gerîn/-geriya-, kenîn/-keniya-, ...),
-- in the conditional and subjunctive moods, a doublet "yaya" appears; it's removed.
-- -yayayî → -yayî; -yaya → -ya
if mw.ustring.match(stem, '(ya)$') then
ends = {s1="ma", s2="yî", s3="", p1="na", p2="na", p3="na"}
elseif mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="ma", s2="yayî", s3="ya", p1="na", p2="na", p3="na"}
else
ends = {s1="ama", s2="ayî", s3="a", p1="ana", p2="ana", p3="ana"}
end
return ends
end
end
-- =============================================================================
-- RULES FOR PREVERBS: "bi-" and "di-"
-- There are two preverbs: "bi-" and "di-". These preverbs can change form
-- depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getPreverb = {}
do
getPreverb['bi'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local verbStruct = opts.verbStruct
local overridePreverb = opts.overridePreverb
local accent = opts.accent
-- Devoka rojhilatî:
-- @Ferhengvan: Dema bêt bi lêkera alîkar "ê / dê" û bi rehê lêkerê yê
-- dema niha û pêşgirên kesî tê çêkirin. Pêşgira "bi-" li destpêka lêkera
-- serekî nîne: - ez ê / dê xw-im (standard: ez ê/dê bi-xw-im).
if (self.name == 'indFuture' and accent == 'rojhilatî') then
return ''
end
-- Preverb verbs don't use the preverb "bi-": ra-kirin (ez ê rakim), ve-xwarin (ez ê vexwim) , ...
-- But compound verb and simple verbs use it: hez kirin (ez ê hez bi-kim), lê bigirin (ez ê lê bi-girim), ...
if (verbStruct == 'preverbVerb') then
return ''
end
-- If the preverb "bi-" is provided.
if (self.stem == 'present' and overridePreverb.presentBi) then
return overridePreverb.presentBi
elseif (self.stem == 'past' and overridePreverb.pastBi) then
return overridePreverb.pastBi
elseif overridePreverb.sameBi then
return overridePreverb.sameBi
end
-- Modification of the preverbe "bi-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[aeêiîouû]') then
return 'b'
end
return 'bi'
end
getPreverb['di'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local overridePreverb = opts.overridePreverb
-- If the preverb "di" is provided.
if (self.stem == 'present' and overridePreverb.presentDi) then
return overridePreverb.presentDi
elseif (self.stem == 'past' and overridePreverb.pastDi) then
return overridePreverb.pastDi
elseif overridePreverb.sameDi then
return overridePreverb.sameDi
end
-- Modification of the preverbe "di-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[ai]') then
return 'd'
end
-- Ex. hatin : stem = -ê- // ez têm
if mw.ustring.match(stem, '^[êî]') then
return 't'
end
return 'di'
end
end
-- =============================================================================
-- RULES FOR NEGATION PREFIXES: "na-" and "ne-"
-- There are two negation prefixes: "na-" and "ne-". These preverbs can change
-- form depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getNegPrefix = {}
do
getNegPrefix['na'] = function (self, opts)
-- self: reserved for future use
local _ = self -- delete the warning (unused argument)
opts = opts or {}
local stem = opts.stem
local overrideNa = opts.overrideNegPrefix.presentNa
if overrideNa then return '<b>' .. overrideNa .. '</b>' end
-- if irreg.dijrezikNa[stem] then return irreg.dijrezikNa[stem] end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>nay</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
return '<b>n</b>'
end
-- Tîpa duyem "-a-" ye (k-a-rîn, z-a-nîn, ...)
if mw.ustring.match(stem, '^%wa') then
return '<b>ni</b>'
end
return '<b>na</b>'
end
getNegPrefix['ne'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local tenseName = self.name
local impNegForm = opts.impNegForm -- form "1" or "2" of imp.
local overrideNegPrefix = opts.overrideNegPrefix
local negPrefix = 'ne'
-- Bo neyînî: pêşgira "di-" tenê di nav dema "indImperfect" de tê bikaranîn.
-- ji ber vê yekê 'negPrefix' hertim (?) 'ne' ye ji ber ku dikeve pêş
-- pêşgira "di-": wê/wî ne-di-elimand (elimandin)
if (tenseName == 'indImperfect') then
return '<b>' .. negPrefix .. '</b>'
end
-- Override
if (overrideNegPrefix.impMe or overrideNegPrefix.presentNe
or overrideNegPrefix.pastNe
or overrideNegPrefix.sameNe) then
-- Ovverride imp.
if (tenseName == 'impPresent') then
if (impNegForm == 1 and overrideNegPrefix.impMe) then
return '<b>' .. overrideNegPrefix.impMe .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.presentNe and
find(overrideNegPrefix.presentNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.presentNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.sameNe and
find(overrideNegPrefix.sameNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.sameNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.sameNe) then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
else
-- For other tenses besides the imperative
if (self.stem == 'present' and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (self.stem == 'past' and overrideNegPrefix.pastNe) then
return '<b>' .. overrideNegPrefix.pastNe .. '</b>'
elseif overrideNegPrefix.sameNe then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
end
end
-- There are two forms of construction of the imperative,
-- one with the prefix "me-" (1) and the other (2) with the prefix "ne-".
if (tenseName == 'impPresent') then
negPrefix = (impNegForm == 2) and 'ne' or 'me'
end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>' .. negPrefix .. 'y</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
negPrefix = mw.ustring.sub(negPrefix, 1, -2)
return '<b>' .. negPrefix .. '</b>'
end
return '<b>' .. negPrefix .. '</b>'
end
end
-- =============================================================================
-- Standardization of the PREVERBAL PARTICLE
-- The proverbial particle "ê" is placed after the personal pronoun.
-- =============================================================================
-- If there are no verbal preparticles, return empty table.
function export.getPreverbParticles(preverbParticle, typeStem, isTransitive)
if not preverbParticle then
return {s1='', s2='', s3='', p1='', p2='', p3=''}
end
if preverbParticle == 'ê' then
local isErgative = isTransitive and (typeStem == 'past')
-- When the personal pronoun ends in a vowel, a "y-" is added before "ê".
-- If it's ergative, we use oblique pronouns: "min", "te", ...
if isErgative then
return {s1='ê/dê', s2='yê/dê', s3='yê/dê', p1='yê/dê', p2='yê/dê', p3='ê/dê'}
else
return {s1='ê/dê', s2='yê/dê', s3='ê/dê', p1='ê/dê', p2='ê/dê', p3='ê/dê'}
end
end
-- If the verbal preparticle is identical for all pronouns,
-- we create a table with the same value.
local preverbParticles = {}
for _, pers in ipairs(export.order) do
preverbParticles[pers] = preverbParticle
end
return preverbParticles
end
-- =============================================================================
-- RULES FOR CONSTRUCTING EACH VERB TENSE
-- This table lists, for each verb tense, what elements are required to form it:
-- - Verb conjugation is built by placing either the preverb "bi-" or "di-" before
-- the verb stem (past or present), followed by a personal ending.
-- - For the negative form, one of the prefixes "na-" or "ne-" is added as well.
-- - In some cases, a preverbal particle such as /ê/ or /dê/ is added before
-- the conjugated verb as well.
-- Not: - The "negPreverb" (preverb (bi-/di-) for negative tenses) parameter has a
-- value different from "nil" only for the Imperfect tense ("negPreverb=di").
-- - The parameter "negPrefix=na" is used only for the present indicative.
--
-- Preverb "di", used in: "indPresent"(present stem), "indImperfect"(past stem)
-- - Bo neyînî: pêşgira "di-" tenê di nav dema "IndImperfect" de tê bikaranîn.
-- Preverb "bi", used in: "indFuture"(present stem), "subPresent"(present stem),
-- "subImperfect"(past stem) = "condPresent"(past stem)
-- - The prefix "bi-" isn't used in negative forms.
--
-- Present stem, used in: "indPresent"(di)(na),
-- "indFuture"(bi)(ne) = "subPresent"(bi)(ne)
--
-- Past stem, used in: "indPreterite"(-)(ne), "indImperfect"(di)(ne), "indPluperfect"(-)(ne),
-- "indPerfect"(-)(ne), "indNwPluperfect"(-)(ne), "indFuturePerfect"(-)(ne),
-- "subPreterite"(-)(ne),
-- "subImperfect"(bi)(ne) = "condPresent"(bi)(ne),
-- "subPluperfect"(-)(ne) = "condPreterite"(-)(ne)
-- =============================================================================
-- Some conjugations are identical except that they differ only in the preverbal particle (/ê/, /dê/).
-- So, to avoid repeating the same information (and thus risking errors),
-- we establish the common part shared between these verbs.
local sharedTenseRules = {
indFuture = {
stem = "present",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['present']
},
indFuturePerfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibim']
},
subImperfect = {
stem = "past",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ama']
},
subPluperfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûma']
}
}
local mt = {
__index = function(t, k)
local commonRules = t._commonRules
if commonRules then return commonRules[k] end
end
}
-- TENSES CONJUGATION RULES
export.tenseRules = {
-- IMPERATIVE MOOD
impPresent = setmetatable({
name = "impPresent",
nameKu = "raweya fermanî",
nameEn = "present imperative",
mode = "imperative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
-- INDICATIVE MOOD
indPresent = {
name = "indPresent",
nameKu = "dema niha",
nameEn = "present",
mode = "indicative",
stem = "present",
preverb = getPreverb['di'],
negPreverb = nil,
negPrefix = getNegPrefix['na'],
endings = getEndings['present'],
preverbParticle = nil
},
indPreterite = {
name = "indPreterite",
nameKu = "raboriya sade",
nameEn = "simple past",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indImperfect = {
name = "indImperfect",
nameKu = "raboriya berdest",
nameEn = "Imperfect",
mode = "indicative",
stem = "past",
preverb = getPreverb['di'],
negPreverb = getPreverb['di'],
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indPluperfect = {
name = "indPluperfect",
nameKu = "raboriya dûr",
nameEn = "pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûm'],
preverbParticle = nil
},
indFuture = setmetatable({
name = "indFuture",
nameKu = "dema bê",
nameEn = "future",
mode = "indicative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = 'ê'
}, mt),
indFuturePerfect = setmetatable({
name = "indFuturePerfect",
nameKu = "dahatiya pêş",
nameEn = "future perfect",
mode = "indicative",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = 'ê'
}, mt),
-- In some books, the "perfect" and "nonconfirmative pluperfect" tenses
-- are classified in the "inferential mood" ("moda neşahidî").
-- Currently we classify them using the indicative mood (at the end).
indPerfect = {
name = "indPerfect",
nameKu = "raboriya dûdar",
nameEn = "perfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ime'],
preverbParticle = nil
},
indNwPluperfect = {
name = "indNwPluperfect",
nameKu = "çîrokiya boriya dûdar",
nameEn = "non-witnessed pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûme'],
preverbParticle = nil
},
-- SUBJUNCTIVE MOOD
subjPresent = setmetatable({
name = "subjPresent",
nameKu = "dema nihaya xwestekî",
nameEn = "present subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
subjPreterite = setmetatable({
name = "subjPreterite",
nameKu = "dema boriya xwestekî",
nameEn = "preterite subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = nil,
}, mt),
subjImperfect = setmetatable({
name = "subjImperfect",
nameKu = "raboriya bilaniyê",
nameEn = "imperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = nil,
}, mt),
subjPluperfect = setmetatable({
name = "subjPluperfect",
nameKu = "raboriya dûr a bilaniyê",
nameEn = "pluperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = nil
}, mt),
-- CONDITIONAL MOOD
condPresent = setmetatable({
name = "condPresent",
nameKu = "çîrokiya dema nihaya mercî",
nameEn = "present conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = 'ê'
}, mt),
condPreterite = setmetatable({
name = "condPreterite",
nameKu = "dema boriya mercî",
nameEn = "preterite conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = 'ê'
}, mt),
}
-- =============================================================================
-- MAIN CONJUGATION FUNCTOIN
-- This function returns an array containing the conjugation table for a given
-- tense as well as other information about the conjugated verb.
-- =============================================================================
function export.conjugate(opts)
opts = opts or {}
-- Required parameters
local tense = opts.tense or error("'tense' required", 2)
--One of the two parameters is required:
-- - If the tense uses the present stem, indicate "presentStem".
-- - If it uses the past stem, indicate "pastStem".
local presentStem = opts.presentStem
local pastStem = opts.pastStem
-- Optional parameters
local isTransitive = opts.isTransitive or false -- Indicate if the verb is transitive (true/false)
local isNegative = opts.isNegative or false -- Indicate if it's the negative form (true/false)
local isCompoundVerb = opts.isCompoundVerb or false -- Indicate if it's a compound verb (true/false)
local preSimpleVerb = opts.preSimpleVerb or '' -- The part before the simple verb
local postSimpleVerb = opts.postSimpleVerb or '' -- The part after the simple verb
-- These parameters are provided when the verb is irregular.
-- Allows you to manually modify preverbs ("bi-"" or "di-")
-- and negation prefixes ("na-" or "ne-")
local overridePreverb = {
-- Preverbs (bi-, di)
presentBi = opts.presentBi or nil,
presentDi = opts.presentDi or nil,
pastBi = opts.pastBi or nil,
pastDi = opts.pastDi or nil,
-- Same preverbs ("past" and "present" stem)
sameBi = opts.sameBi or nil,
sameDi = opts.sameDi or nil,
}
local overrideNegPrefix = {
-- Neg. prefix (na-, ne-)
presentNa = opts.presentNa or nil,
presentNe = opts.presentNe or nil,
pastNe = opts.pastNe or nil,
-- same neg. prefix (for past and present stem)
sameNe = opts.sameNe or nil,
impMe = opts.impMe or nil,
}
-- By default, the negation of the imperative is constructed from the prefix "me-"".
-- To obtain the second variant, the prefix with "ne-", you must specify "impNegForm=2".
local impNegForm = opts.impNegForm or 1
-- Accent/ Devok
local accent = opts.accent or 'std'
-- If "tags='na'", remove links/tags
local tags = opts.tags or 'erê'
-- If addPreverbParticles='na', remove preverb particles (ê/dê) before
-- the conjugated verbs.
local addPreverbParticles = opts.addPreverbParticles or 'erê'
-- We add a space to the left of the "postSimpleVerb" because it shouldn't be attached
-- to the simple verb.
if (postSimpleVerb ~= '' and postSimpleVerb ~=nil) then
postSimpleVerb = ' ' .. postSimpleVerb
end
-- Access to the classification table and retrieval of verb tense parameters
local infoTense = deepCopy(export.tenseRules[tense], 'copy') or false
-- We check that this tense is indeed in table "tenseRules".
if (not infoTense) then
return '<span style="color:red">Unknown tense: ' .. tense ..'</span>'
end
-- We check that one of the two parameters of the stem is given
if (infoTense.stem == 'present' and not presentStem) then
return '<span style="color:red">presentStem parameter required</span>'
elseif (infoTense.stem == 'past' and not pastStem) then
return '<span style="color:red">pasttStem parameter required</span>'
end
-- Choice between the present stem or past stem
local stem = (infoTense.stem == 'present') and presentStem or pastStem
--────────────────────────────
-- Conjugation construction --
-- ───────────────────────────
local preverb = ''
local negPrefix = ''
-- +++++++++++++++++++++++++++
-- Lêkerin nestandard --
-- +++++++++++++++++++++++++++
-- çûn
if (stem == 'her' and pastStem == 'çû') then
if tense == 'indPresent' then
if isNegative then
stem = 'r'
else
stem = 'er'
overridePreverb.presentDi = 't'
end
elseif ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
overridePreverb.presentBi = ''
if isNegative then
stem = 'r'
else
stem = 'her'
end
end
end
-- hatin
if (stem == 'wer' and pastStem == 'hat') then
if ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
if isNegative then
stem = 'ê'
else
overridePreverb.presentBi = ''
stem = 'wer'
end
elseif (tense == 'indPresent') then
stem = 'ê'
end
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ruturns the verb type: "simpleVerb" or "preverbVerb" or "compoundVerb"
local verbStruct = export.verbStruct(isCompoundVerb, preSimpleVerb)
if isNegative then
negPrefix = infoTense:negPrefix{stem=stem,
impNegForm=impNegForm,
overrideNegPrefix=overrideNegPrefix}
if infoTense.negPreverb then
preverb = infoTense:negPreverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb}
end
else
if infoTense.preverb then
preverb = infoTense:preverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb,
accent=accent}
end
end
infoTense.conj = {}
local spacing = isCompoundVerb and ' ' or ''
local endings = infoTense:endings(stem)
-- 'rojhilatî' accent (devok) for present stem
if (infoTense.stem == 'present') then
if (accent == 'rojhilatî') then
endings = endings['rojhilatî']
else
endings = endings['std']
end
end
local preverbParticles = export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem, isTransitive
)
local isErgative = isTransitive and (infoTense.stem == 'past')
-- Creating the conjugation table for a given tense
for _, pers in ipairs(export.order) do
local ending
local conjSimbleVerb
local conjVerb
if isErgative then
ending = endings.s3
else
ending = endings[pers]
end
-- Adding space after the preverbal particle, and
-- if "addPreverbParticles='na'": remove preverb particles (ê/dê).
local preverbParticle = ''
if infoTense.preverbParticle and addPreverbParticles ~= 'na' then
preverbParticle = preverbParticles[pers] .. ' '
end
conjSimbleVerb = negPrefix .. preverb .. stem .. ending
-- Adding prefixe and suffixe
conjVerb = preSimpleVerb .. spacing .. conjSimbleVerb .. postSimpleVerb
-- Spelling correction(îy -> iy)
conjVerb = gsub(conjVerb, 'îy', 'iy')
-- Add a link / if tags='na' no links
if tags ~= 'na' then
conjVerb = link{term=conjVerb, lang=langKu}
end
-- Addition of the preverbal particle
infoTense.conj[pers] = preverbParticle .. conjVerb
end
-- Imperative
if (infoTense.name == 'impPresent') then
infoTense.conj.s1 = nil
infoTense.conj.s2 = infoTense.conj.s3
infoTense.conj.s3 = nil
infoTense.conj.p1 = nil
-- infoTense.conj.p2 = infoTense.conj.p2
infoTense.conj.p3 = nil
end
return infoTense
end
-- =============================================================================
-- END
-- =============================================================================
-- Some useful tools
-- =============================================================================
-- Returns the list of verb tenses
export.tensesList = function()
local list = {}
for _, tense in pairs(export.tenseRules) do
table.insert(list, tense.name)
end
return list
end
-- Concatenation of pronouns and conjugated verbs
-- (for a given conjugate tense in all persons of that tense)
function export.concatPronomsVerbs(pronoms, conjVerbs)
local concatTab = {}
for _, pers in ipairs(export.order) do
local pronom = pronoms[pers] or ""
local verbe = conjVerbs[pers] or ""
if pronom == "" then
concatTab[pers] = verbe
elseif verbe == "" then
concatTab[pers] = pronom
else
concatTab[pers] = pronom .. " " .. verbe
end
end
return concatTab
end
-- Remove duplicates
local function removeDuplicates(list)
local seen = {}
local result = {}
for _, value in ipairs(list) do
if not seen[value] then
seen[value] = true
table.insert(result, value)
end
end
return result
end
-- =============================================================================
-- ADDITIONAL STEM OF THE PAST AND PRESENT (pastStem2, ... and presentStem2, ...)
-- This function does nothing more than add additional parameters for verb stems
-- in the past and present tenses.
-- Conjugations for the different stems will be separated by "/"
-- =============================================================================
function export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems, negation)
local opts = deepCopy(baseOpts or {}, 'copy')
opts.tense = tense
if negation == 'negative' then
opts.isNegative = true
end
opts.addPreverbParticles = 'na'
presentStems = presentStems or {}
pastStems = pastStems or {}
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
if not infoTense then
return '<span style="color:red">Unknown tense: ' .. tostring(tense) ..'</span>'
end
local stems = (infoTense.stem == 'present') and presentStems or pastStems
-- For each verb stem, its conjugation table is calculated and stored in conjTabs.
local conjTabs = {}
for i = 1, #stems do
local stem = stems[i]
if stem then
if (infoTense.stem == 'past') then
opts.pastStem = stem
elseif (infoTense.stem == 'present') then
opts.presentStem = stem
-- For the recognition of irregular verbs based on the past-stem part
-- see: "çûn" û "hatin"
opts.pastStem = pastStems[1]
end
local result = export.conjugate(opts)
if result and result.conj then
table.insert(conjTabs, result.conj)
end
end
end
-- We concatenate each row of the conjugation tables.
local preverbParticles = deepCopy(export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem,
opts.isTransitive
), 'copy')
local concatConjTabs = {}
for _, pers in ipairs(export.order) do
local frag = {}
for i = 1, #conjTabs do
local val = conjTabs[i][pers]
if val then
table.insert(frag, tostring(val))
end
end
frag = removeDuplicates(frag)
if infoTense.preverbParticle then
concatConjTabs[pers] = preverbParticles[pers] .. ' '
.. table.concat(frag, ' — ')
else
concatConjTabs[pers] = table.concat(frag, ' — ')
end
end
infoTense.conj = concatConjTabs
return infoTense
end
-- ====================================================================================
-- VERB CONJUGATION IN ALL TENSES WITH OR WITHOUT PRONOUNS
-- ====================================================================================
function export.conjugateAllTenses(baseOpts, presentStems, pastStems, negation, concatPrs)
-- "concatPrs=false" table without pronouns
local opts = deepCopy(baseOpts or {}, 'copy')
if negation == 'negative' then
opts.isNegative = true
end
presentStems = presentStems or {}
pastStems = pastStems or {}
-- Concatenation of pronouns and conjugated verbs
local concatPronomsVerbs = export.concatPronomsVerbs
local tensesList = export.tensesList()
-- Conjugation in all tenses
local conjTab = {}
for _, tense in ipairs(tensesList) do
-- Conjugations without the pronouns
local conjData = deepCopy(
export.conjugateMultiStem(opts, tense, presentStems, pastStems),
'copy'
)
-- We concatenate the pronouns and the verbs if "concatPrs" is different of "false"
-- No pronouns for the imperative mood
if tense ~= 'impPresent' and concatPrs ~= false then
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
local pronoms = deepCopy(
export.conjPronouns(infoTense.stem, infoTense.mode, opts.isTransitive)
)
conjData.conj = concatPronomsVerbs(pronoms, conjData.conj)
end
conjTab[tense] = conjData
end
return conjTab
end
-- ====================================================================================
-- Allows you to obtain a given conjugation from a model.
-- Ex. {{#invoke:ku-tewandin|tew|dem=indPresent|kes=s1}}
-- See {{ku-tewîn-lk-niha}}
-- ====================================================================================
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isNegative = frame.args['neyînî'] or false,
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = args['lînk'] or 'erê',
accent = args['devok'] or 'std',
}
local tense = frame.args['dem'] or nil
local pers = frame.args['kes'] or nil
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
-- A few checks
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
if (baseOpts.isNegative == 'erê') then
baseOpts.isNegative = true
end
local tabConj = export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems).conj
return tabConj[pers]
end
-- ====================================================================================
-- GET COMMMA SEPARED FORMS
-- Bnr. [[MediaWiki:Gadget-QQ.js]]
-- Ex. {{#invoke:ku-tewandin|get_comma_separated_forms|niha=kev|borî=ket}}
-- ====================================================================================
function export.get_comma_separated_forms(frame)
local opts = {
presentStem = frame.args['niha'],
pastStem = frame.args['borî'],
isTransitive = false,
isNegative = false,
isCompoundVerb = frame['valahî'] or false,
preSimpleVerb = frame['pêşgir'] or '',
postSimpleVerb = frame['paşgir'] or '',
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = 'na', -- Remove links/tags
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local function concateList(tenseList)
local concatList = {}
for _, pers in ipairs({"s1", "s2", "s3", "p1"}) do
local tense = tenseList[pers]
table.insert(concatList, tense)
end
return table.concat(concatList, ",")
end
local tenseList = {'indPresent','indPreterite','indImperfect',
'indPluperfect','indPerfect','indNwPluperfect',
'indFuture','indFuturePerfect',
'subjImperfect','subjPluperfect'
}
local concatAllTense = {}
for i = 1, #tenseList do
local tense = tenseList[i]
if export.tenseRules[tense] then
opts.tense = tense
local conj = shallowCopy(export.conjugate(opts).conj)
local concatTense = concateList(conj)
table.insert(concatAllTense, concatTense)
end
end
return table.concat(concatAllTense, ",")
end
return export
9nw43mradg7rycypwqkbv3xu9b8go8z
Modul:ku-tewandin/tablo
828
628615
6237715
6237501
2026-06-15T02:10:15Z
Ghybu
1393
6237715
Scribunto
text/plain
local export = {}
local conj = require('Modul:ku-tewandin')
local lang = mw.getContentLanguage()
function export.tablo(frame)
local args = frame:getParent().args
local baseOpts = {
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or '',
postSimpleVerb = args['paşgir'] or '',
accent = args['devok'] or 'std',
-- overridePreverb:
presentBi = args['nihaBi'] or nil,
presentDi = args['nihaDi'] or nil,
pastBi = args['borîBi'] or nil,
pastDi = args['borîDi'] or nil,
sameBi = args['bi'] or nil,
sameDi = args['di'] or nil,
-- overrideNegPrefix:
presentNa = args['na'] or nil,
presentNe = args['nihaNe'] or nil,
pastNe = args['borîNe'] or nil,
sameNe = args['ne'] or nil,
impMe = args['me'] or nil,
-- impNegForm = 1, -- By default negative form with 'me' (1).
-- tags = 'erê',
-- addPreverbParticles = 'erê',
}
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerghuhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
-- Conjugation table in all tenses
local infoTense = conj.conjugateAllTenses(baseOpts, presentStems, pastStems)
-- Negatives conjugations table
local negInfoTense = conj.conjugateAllTenses(baseOpts, presentStems, pastStems, 'negative')
-- Imperatrive form '2'; negative form with 'ne'
baseOpts.impNegForm = 2
local impNegForm2 = conj.conjugateMultiStem(baseOpts, 'impPresent', presentStems, pastStems, 'negative').conj
-- Creation of internal conjugation tables for the different tenses
local function conjugateTable(tense)
local nameKu = lang:ucfirst(infoTense[tense].nameKu) -- Kurdish name
local nameEn = lang:ucfirst(infoTense[tense].nameEn) -- English name
local idName = infoTense[tense].name -- 'tenseRules' name (indPresent, ...)
local classStem = infoTense[tense].stem -- 'present' or 'past'
-- First, create the table header.
local tabHeader = '\n! colspan="2" id="' .. idName .. '"'
.. 'class="' .. classStem .. '-stem tense-table-title" |'
.. nameKu .. ' - <small><i>-{'.. nameEn ..'}-</i></small>'
.. '\n|-'
.. '\n! class="negative" | Erênî'
.. '\n! class="positive" | Neyînî'
.. '\n|-'
-- Create the table body.
local tabBody = ''
for _, pers in ipairs(conj.order) do
tabBody = tabBody .. '\n|' .. infoTense[tense].conj[pers]
.. '\n|' .. negInfoTense[tense].conj[pers]
.. '\n|-'
end
-- Create the table (header + body).
local tab = '\n{| cellpadding="2" class="tense-table"'
.. '\n|-'
.. tabHeader
.. tabBody
.. '\n|}'
return tab
end
--Retrieving some parameters for creating the main table header
local verb = args[1]
local transitivity = args['form']
local preSimpleVerb = args['pêşgir'] or ''
local postSimpleVerb = args['paşgir'] or ''
-- Cureyê lêkerê
local verbStruc = conj.verbStruct(baseOpts.isCompoundVerb, baseOpts.preSimpleVerb)
if (verbStruc == 'preverbVerb') then
verbStruc = 'pêkhatî'
elseif (verbStruc == 'compoundVerb') then
verbStruc = 'hevedudanî'
else
verbStruc = 'xwerû'
end
local prsStemsFormat = {}
for _, stem in ipairs(presentStems) do
if stem then prsStemsFormat[#prsStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local pstStemsFormat = {}
for _, stem in ipairs(pastStems) do
if stem then pstStemsFormat[#pstStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local prsStems = table.concat(prsStemsFormat, ' / ') .. postSimpleVerb
local pstStems = table.concat(pstStemsFormat, ' / ') .. postSimpleVerb
return
'{| align="center" class="conj-table"'
.. '\n|-'
.. '\n| colspan="8" class="title" | Tewandina lêkera [[' .. verb .. ']]<br><span style="font-weight:normal;">(' .. verbStruc .. ', ' .. transitivity .. ')</span>'
.. '\n|-'
.. '\n! colspan="2" class="present-stem" | Rehê dema niha'
.. '\n! colspan="6" style="font-weight:normal; text-align:center; border-bottom:dotted 1px grey;" | ' .. prsStems
.. '\n|-'
.. '\n! colspan="2" class="past-stem" | Rehê dema borî'
.. '\n! colspan="6" style="font-weight:normal; text-align:center;" | ' .. pstStems
.. '\n|-'
.. '\n|'
.. '\n|-'
.. '\n| colspan="8" id="imp" class="mood" | Raweya fermanî - <small><i>Imperative</i></small>'
.. '\n|-'
.. '\n| colspan="8" valign="top" | '
.. '\n{| cellpadding="2" class="tense-table"'
.. '\n|-'
.. '\n| colspan="2" class="present-stem" style="border-top:1px dotted grey; border-bottom:1px dotted grey"| '
.. '\n|-'
.. '\n! class="negative" | Erênî'
.. '\n! class="positive" | Neyînî'
.. '\n|-'
.. '\n| valign="top" | <span style="color:gray">(tû)</span> ' .. infoTense.impPresent.conj.s2
.. '\n| valign="top" | <span style="color:gray">(tû)</span> ' .. negInfoTense.impPresent.conj.s2
.. '<br> <span style="color:gray">(tû)</span> ' .. impNegForm2.s2
.. '\n|-'
.. '\n| valign="top" | <span style="color:gray">(hûn)</span> ' .. infoTense.impPresent.conj.p2
.. '\n| valign="top" | <span style="color:gray">(hûn)</span> ' .. negInfoTense.impPresent.conj.p2
.. '<br> <span style="color:gray">(hûn)</span> ' .. impNegForm2.p2
..'\n|}'
.. '\n|-'
.. '\n| colspan="8" id="ind" class="mood" | Raweya pêşkerî - <small><i>Indicative</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPreterite')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indImperfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPluperfect')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indFuture')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indFuturePerfect')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPerfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indNwPluperfect')
.. '\n|-'
.. '\n| colspan="8" id="subj" class="mood" | Raweya xwestekî - <small><i>Subjunctive</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPreterite')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjImperfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPluperfect')
.. '\n|-'
.. '\n| colspan="8" id="cond" class="mood" | Raweya mercî - <small><i>Conditional</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('condPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('condPreterite')
.. '\n|}'
end
return export
7k48pkbp4uoz5ai2x41b9pwk6o88o0n
Gotûbêja modulê:ku-tewandin
829
628996
6237708
6237278
2026-06-14T22:12:49Z
Ferhengvan
16
/* Paşgirên lêkeran di kurmanciya rojhilatî de */ Bersiv
6237708
wikitext
text/x-wiki
{{arşîvkirin|1=
* [[Gotûbêja modulê:ku-tewandin/arşîv 1|Arşîv 1]]
}}
== Ergatîvî ==
; Lêkera ''[[Tewandin:kirin#indPreterite|kirin]]'' (dema borî):
{| class="wikitable"
|+ {{reng2|green|Biker}} + Berkar {{nobold|(bireser/obje)}} + lêkera tewandî
|-
! {{reng2|green|Biker}} \ Berkar !! ez !! tu !! ew/– !! em !! hûn !! ew
|-
! {{reng2|green|min}}
| <u>xwe</u> kirim || kirî || style="background-color:#FFF9E0"| kir || kirin || kirin || kirin
|-
! {{reng2|green|te}}
| kirim || <u>xwe</u> kirî || style="background-color:#FFF9E0"| kir || kirin || kirin || kirin
|-
! {{reng2|green|wê/wî}}
| kirim || kirî || style="background-color:#FFF9E0"| <u>xwe</u>/– kir || kirin || kirin || kirin
|-
! {{reng2|green|me}}
| kirim || kirî || style="background-color:#FFF9E0"| kir || <u>xwe</u> kirin || kirin || kirin
|-
! {{reng2|green|we}}
| kirim || kirî || style="background-color:#FFF9E0"| kir || kirin || <u>xwe</u> kirin || kirin
|-
! {{reng2|green|wan}}
| kirim || kirî || style="background-color:#FFF9E0"| kir || kirin || kirin || <u>xwe</u> kirin
|}
* <u>Xwandina tabloyê</u> ({{reng2|green|Bik.}} + '''Berk.''' + ''L''):
*:stûn1 ('''Berk.'''=ez): {{reng2|green|min}} '''ez''' <u>xwe</u> kirim; {{reng2|green|te}} '''ez''' kirim; {{reng2|green|wê/wî}} '''ez''' kirim; {{reng2|green|me}} '''ez''' kirim; {{reng2|green|we}} '''ez''' kirim; {{reng2|green|hûn}} '''ez''' kirim
*:stûn2 ('''Berk.'''=tu): {{reng2|green|min}} '''tu''' kirî; {{reng2|green|te}} '''tu''' <u>xwe</u> kirî; {{reng2|green|wê/wî}} '''tu''' kirî; {{reng2|green|me}} '''tu''' kirî; ...
*:stûn3 ('''Berk.'''=ew/–): {{reng2|green|min}} '''(ew)''' kir; {{reng2|green|te}} '''(ew)''' kir; {{reng2|green|wê/wî}} '''(ew <u>xwe</u>)''' kir; {{reng2|green|me}} '''(ew)''' kir; ...
*: ...
Silav, em tewandinên lêkerên gerguhêz wekî tabloya jor tevlî Tabloya tewandinê ([[Tewandin:kirin]]) bikin? {{ping|Ferhengvan|Bikarhêner|Keyomerd}} [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 23:21, 11 gulan 2026 (UTC)
:Ê min ket serê min. Lê min beşên ko "xwe" dihewînin fam nekir. Divê bo nimûne "min xwe kir" be, an jî "min ez kirim" be lê jixwe tiştekî werê jî tune ye. [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 08:36, 12 gulan 2026 (UTC)
::Bi vî awayî?
{| cellspacing="0" cellpadding="4" style=" border-collapse:collapse;" align=center
|+ {{{ser|}}}
|-style="border-bottom:solid 1px grey; border-top:solid 1px grey;"
!id="11" colspan="2" bgcolor=#FFFFE0|[[Pêvek:Rastnivîsî/Lêker/Dema niha|Dema niha]] - <small>''Present''</small>
!colspan="4" bgcolor=#ececff|[[Pêvek:Rastnivîsî/Lêker/Dema borî ya sade|Raboriya sade]] - <small>''Preterite''</small><br><small>Dema boriya têdeyî</small>
|-
|bgcolor=#F4F4F4|Erênî
|bgcolor=#F4F4F4|Neyînî
|bgcolor=#e9e9e9|{{reng2|green|Biker}}
|bgcolor=#e9e9e9|{{reng2|blue|Berkar}}
|bgcolor=#F4F4F4|Erênî
|bgcolor=#F4F4F4|Neyînî
|-
|ez dikim
|ez '''na'''kim
|{{reng2|green|te, wî/wê, we, wan}}
|{{reng2|blue|ez}}
|kirim
|'''ne'''kirim
|-
|tu dikî
|tu '''na'''kî
|{{reng2|green|min, wî/wê, me, wan}}
|{{reng2|blue|tu}}
|kirî
|'''ne'''kirî
|-
|ew dike
|ew '''na'''ke
|{{reng2|green|min, te, wî/wê, me, we, wan}}
|{{reng2|blue|ew}}
|kir
|'''ne'''kir
|-
|em dikin
|em '''na'''kin
|{{reng2|green|te, wî/wê, we, wan}}
|{{reng2|blue|em}}
|kirin
|'''ne'''kirin
|-
|hûn dikin
|hûn '''na'''kin
|{{reng2|green|min, wî/wê, me, wan}}
|{{reng2|blue|hûn}}
|kirin
|'''ne'''kirin
|-
|ew dikin
|ew '''na'''kin
|{{reng2|green|min, te, wî/wê, me, we, wan}}
|{{reng2|blue|ew}}
|kirin
|'''ne'''kirin
|}
::--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:26, 20 gulan 2026 (UTC)
:::{{silav|Bikarhêner}}. Tu dikarî van rûpelan çêkî:
:::* [//ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Ghybu/common.js&oldid=6236001] → tevlî [[MediaWiki:Gadget-kuTewandin.js]] bike
:::* <code><nowiki>Stûna bikerê (bireser/obje) di [[Şablon:ku-tewandin|tabloya tewandinê]] de berfire dike.</nowiki></code> → [[MediaWiki:Gadget-kuTewandin]]
:::* <code><nowiki>* kuTewandin[ResourceLoader|default]|kuTewandin.js</nowiki></code> → tevlî beşa "Rû" ([[MediaWiki:Gadgets-definition#Rû]]) bike.
:::* '''Encam''': [[Wîkîferheng:ceribandin]] / herwiha rûyê mobîlê û moda tarî jî hatin guherandin...
:::Spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 19:25, 24 gulan 2026 (UTC)
::::Çêbû? -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 09:25, 25 gulan 2026 (UTC)
:::::Vêga çêbû? -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 17:54, 25 gulan 2026 (UTC)
::::::{{çêbû}} Spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 19:50, 25 gulan 2026 (UTC)
:::::::Yên din (her dukên pêşîyê, eger bêkêr bin) jê bibim? -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 22:24, 25 gulan 2026 (UTC)
::::::::Erê, jê bibe. Spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:41, 26 gulan 2026 (UTC)
== Paşgirên lêkeran di kurmanciya rojhilatî de ==
:→ ''Binêre: [[Gotûbêja_modulê:ku-tewandin/arşîv_1#Paşgirên_lêkeran_di_kurmanciya_rojhilatî_de|Paşgirên_lêkeran_di_kurmanciya_rojhilatî_de]]''
{{silav|Ferhengvan}}. Min paşgirên lêkeran çêkirin (kod li [[Modul:ku-tewandin#L-132|'''vira''']] ye / [[Modul:ku-tewandin#L-290|kod]]) feqet kontrol kirin hewce ye, bnr. [[Tewandin:kirin/test]] û [[Tewandin:xistin/test]].<br>Min hemû paşgirên demên niha guherand: ''[[Tewandin:kirin/test#indPresent|'''indPresent''']], [[Tewandin:kirin/test#indFuture|'''indFuture''']], [[Tewandin:kirin/test#subjPresent|'''subjPresent''']], [[Tewandin:kirin/test#imp|'''imperative''']]''
Çend pirsên min hene:
# Tenê dema hiha û dema bê tên guherandin an jî hemû (''indPresent, indFuture, subjPresent, imperative'')
# Di devoka rojhilatê de raweya fermanî çito tê çêkirin wekî dema bê (kesê 3em)?<br> Di forma neyînî de kijan paşgir tê bikaranîn '''[[me-]]''' an '''[[ne-]]''' ?
# Paşgirên rojhilatî ji bo hemû rehan werin çêkirin an jî tenê yên ku di wê devokê de tên bikaranîn ? Niha bi parametreya {{param2|devok|rojhilatî}} tê çêkirin.
# Paşgirên demên borî?
[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 00:22, 8 hezîran 2026 (UTC)
:Silav! Gelek spas. Di devokên kurmanciya rojhilatî de:
:1. Guherandin di dema indPresent, indFuture, subjPresent de hene.
:2. Imperatîv wek ya standard e: bike! bikin!
:3. Paşgira neyînîkirina împeratîvê "ne-" ye: neke! nekin!
:4. Mebesta te ew peyv in ku di kurmanciya rojhilatî de nayên bikaraîn? Eger ew be, bi nêrîna min divê em tenê ji wan lêkeran re çêkin ku bi rastî di kurmanciya rojhilatî de hene. Bo nimûne, lêkera "karîn/kanîn" di devokên kurmanciya rojhilatî de nîne lome nabe ku em li ber "karîn"ê "formên rojhilatî" bidin çunkî di pratîkê de formên wisa peyda nabin.
:4. Paşgirên de borî:
:- dema borî ya sade, atematîk: ez hat-im, tu hat-î, ew hat, em hat-în, hûn hat-in, ew hat-in
:- dema borî ya sade, tematîk: ez çû-m, tu çû-y (ne wek standard: çû-yî), ew çû, em çû-yn, hûn çû-n, ew çû-n
:- dema borî ya dûdar: varyanteke wek ya standard tê bikaranîn (hin varyantên din jî hene)
:- dema borî ya dûr: varyanteke wek ya standard tê bikaranîn (hin varyantên din jî hene) [[Bikarhêner:Ferhengvan|Ferhengvan]] ([[Gotûbêja bikarhêner:Ferhengvan|gotûbêj]]) 22:12, 14 hezîran 2026 (UTC)
t1d3q8oks326t6oh6bgy9660d7x0rda
Modul:ku-tewandin/tablo/ceribandin
828
1325207
6237721
6237499
2026-06-15T02:34:03Z
Ghybu
1393
6237721
Scribunto
text/plain
local export = {}
local conj = require('Modul:ku-tewandin')
local lang = mw.getContentLanguage()
function export.tablo(frame)
local args = frame:getParent().args
local baseOpts = {
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or '',
postSimpleVerb = args['paşgir'] or '',
accent = args['devok'] or 'std',
-- overridePreverb:
presentBi = args['nihaBi'] or nil,
presentDi = args['nihaDi'] or nil,
pastBi = args['borîBi'] or nil,
pastDi = args['borîDi'] or nil,
sameBi = args['bi'] or nil,
sameDi = args['di'] or nil,
-- overrideNegPrefix:
presentNa = args['na'] or nil,
presentNe = args['nihaNe'] or nil,
pastNe = args['borîNe'] or nil,
sameNe = args['ne'] or nil,
impMe = args['me'] or nil,
-- impNegForm = 1, -- By default negative form with 'me' (1).
-- tags = 'erê',
-- addPreverbParticles = 'erê',
}
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerghuhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
-- Conjugation table in all tenses
local infoTense = conj.conjugateAllTenses(baseOpts, presentStems, pastStems)
-- Negatives conjugations table
local negInfoTense = conj.conjugateAllTenses(baseOpts, presentStems, pastStems, 'negative')
-- Imperatrive form '2'; negative form with 'ne'
baseOpts.impNegForm = 2
local impNegForm2 = conj.conjugateMultiStem(baseOpts, 'impPresent', presentStems, pastStems, 'negative').conj
-- Creation of internal conjugation tables for the different tenses
local function conjugateTable(tense)
local nameKu = lang:ucfirst(infoTense[tense].nameKu) -- Kurdish name
local nameEn = lang:ucfirst(infoTense[tense].nameEn) -- English name
local idName = infoTense[tense].name -- 'tenseRules' name (indPresent, ...)
local classStem = infoTense[tense].stem -- 'present' or 'past'
-- First, create the table header.
local tabHeader = '\n! colspan="2" id="' .. idName .. '"'
.. 'class="' .. classStem .. '-stem tense-table-title" |'
.. nameKu .. ' - <small><i>-{'.. nameEn ..'}-</i></small>'
.. '\n|-'
.. '\n! class="negative" | Erênî'
.. '\n! class="positive" | Neyînî'
.. '\n|-'
-- Create the table body.
local tabBody = ''
for _, pers in ipairs(conj.order) do
tabBody = tabBody .. '\n|' .. infoTense[tense].conj[pers]
.. '\n|' .. negInfoTense[tense].conj[pers]
.. '\n|-'
end
-- Create the table (header + body).
local tab = '\n{| cellpadding="2" class="tense-table"'
.. '\n|-'
.. tabHeader
.. tabBody
.. '\n|}'
return tab
end
--Retrieving some parameters for creating the main table header
local verb = args[1]
local transitivity = args['form']
local preSimpleVerb = args['pêşgir'] or ''
local postSimpleVerb = args['paşgir'] or ''
-- Cureyê lêkerê
local verbStruc = conj.verbStruct(baseOpts.isCompoundVerb, baseOpts.preSimpleVerb)
if (verbStruc == 'preverbVerb') then
verbStruc = 'pêkhatî'
elseif (verbStruc == 'compoundVerb') then
verbStruc = 'hevedudanî'
else
verbStruc = 'xwerû'
end
local prsStemsFormat = {}
for _, stem in ipairs(presentStems) do
if stem then prsStemsFormat[#prsStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local pstStemsFormat = {}
for _, stem in ipairs(pastStems) do
if stem then pstStemsFormat[#pstStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local prsStems = table.concat(prsStemsFormat, ' / ') .. postSimpleVerb
local pstStems = table.concat(pstStemsFormat, ' / ') .. postSimpleVerb
return
'{| align="center" class="conj-table"'
.. '\n|-'
.. '\n| colspan="8" class="title" | Tewandina lêkera [[' .. verb .. ']]<br><span style="font-weight:normal;">(' .. verbStruc .. ', ' .. transitivity .. ')</span>'
.. '\n|-'
.. '\n! colspan="2" class="present-stem" | Rehê dema niha'
.. '\n! colspan="6" style="font-weight:normal; text-align:center; border-bottom:dotted 1px grey;" | ' .. prsStems
.. '\n|-'
.. '\n! colspan="2" class="past-stem" | Rehê dema borî'
.. '\n! colspan="6" style="font-weight:normal; text-align:center;" | ' .. pstStems
.. '\n|-'
.. '\n|'
.. '\n|-'
.. '\n| colspan="8" id="imp" class="mood" | Raweya fermanî - <small><i>Imperative</i></small>'
.. '\n|-'
.. '\n| colspan="8" valign="top" | '
.. '\n{| cellpadding="2" class="tense-table"'
.. '\n|-'
.. '\n| colspan="2" class="present-stem" style="border-top:1px dotted grey; border-bottom:1px dotted grey"| '
.. '\n|-'
.. '\n! class="negative" | Erênî'
.. '\n! class="positive" | Neyînî'
.. '\n|-'
.. '\n| valign="top" | <span style="color:gray">(tû)</span> ' .. infoTense.impPresent.conj.s2
.. '\n| valign="top" | <span style="color:gray">(tû)</span> ' .. negInfoTense.impPresent.conj.s2
.. '<br> <span style="color:gray">(tû)</span> ' .. impNegForm2.s2
.. '\n|-'
.. '\n| valign="top" | <span style="color:gray">(hûn)</span> ' .. infoTense.impPresent.conj.p2
.. '\n| valign="top" | <span style="color:gray">(hûn)</span> ' .. negInfoTense.impPresent.conj.p2
.. '<br> <span style="color:gray">(hûn)</span> ' .. impNegForm2.p2
..'\n|}'
.. '\n|-'
.. '\n| colspan="8" id="ind" class="mood" | Raweya pêşkerî - <small><i>Indicative</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPreterite')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indImperfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPluperfect')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indFuture')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indFuturePerfect')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPerfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indNwPluperfect')
.. '\n|-'
.. '\n| colspan="8" id="subj" class="mood" | Raweya xwestekî - <small><i>Subjunctive</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPreterite')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjImperfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPluperfect')
.. '\n|-'
.. '\n| colspan="8" id="cond" class="mood" | Raweya mercî - <small><i>Conditional</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('condPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('condPreterite')
.. '\n|}'
end
return export
7k48pkbp4uoz5ai2x41b9pwk6o88o0n
Modul:ku-tewandin/ceribandin
828
1356654
6237713
6237503
2026-06-15T00:33:21Z
Ghybu
1393
6237713
Scribunto
text/plain
-- Modula tewandina lêkerên kurmancî
local export = {}
-- Load irregular forms table
-- local irreg = require('Module:ku-tewandin/nestandard')
local langKu = require("Modul:languages").getByCode("ku")
local link = require('Module:links').language_link
local shallowCopy = require("Module:table/shallowCopy")
local deepCopy = require("Module:table/deepCopy")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
-- =============================================================================
-- Pronouns in Kurmanji
-- =============================================================================
export.order = {"s1", "s2", "s3", "p1", "p2", "p3"}
export.pronouns = {
s1 = "ez", p1 = "em",
s2 = "tu", p2 = "hûn",
s3 = "ew", p3 = "ew"
}
export.obliquePronouns = {
s1 = "min", p1 = "me",
s2 = "te", p2 = "we",
s3 = "wê/wî", p3 = "wan"
}
export.agents = {
s1 = "te, wî, wê, we, wan", p1 = "te, wî, wê, we, wan",
s2 = "min, wî, wê, me, wan", p2 = "min, wî, wê, me, wan",
s3 = "min, te, wî, wê, me, we, wan", p3 = "min, te, wî, wê, me, we, wan"
}
-- Oblique pronoun (green)
export.obliquePronounsGreen = {
s1 = '<span style="color:green">min</span>',
s2 = '<span style="color:green">te</span>',
s3 = '<span style="color:green">wê/wî</span>',
p1 = '<span style="color:green">me</span>',
p2 = '<span style="color:green">we</span>',
p3 = '<span style="color:green">wan</span>'
}
-- ─────────────────────────────────────────────────────────────────────────────
-- 1) This function returns correct subject/agent pronoun, ergativity rule:
-- - Transitive verbs in past tenses → oblique pronoun (green) = agent
-- - All other cases → direct pronoun (no color) = subject
-- 2) Also add the subjunctive prefix "(bila)"
-- ─────────────────────────────────────────────────────────────────────────────
function export.conjPronouns(stemType, mode, isTransitive)
local pronouns = shallowCopy(export.pronouns)
-- Ergativity in kurdish: transitive verbs that are conjugated with the past tense stem are
-- conjugated according to the object, not the subject.
-- Therefore, to have an ergative construction,
-- the verb must be transitive and its stem must be the stem of the past tense.
local isErgative = isTransitive and (stemType == 'past')
-- If it's ergative, we use oblique pronouns: "min", "te", ...
-- If it's not ergative, we use normal pronouns: "ez", "tu", ...
if isErgative then
pronouns = shallowCopy(export.obliquePronounsGreen)
end
-- For the subjunctive mood, we add "(bila)" at the beginning.
if mode == 'subjunctive' then
local subjPrefix = '<span style="color:gray">(bila)</span>'
for _, pers in ipairs(export.order) do
pronouns[pers] = subjPrefix .. ' ' .. pronouns[pers]
end
end
return pronouns
end
-- =============================================================================
-- VERBAL STRUCTURE IN THE INFINITIVE:
-- Verbs in the infinitive appear in three main forms:
-- 1) Simple verb (indivisible light verb):
-- - ex.: "kirin", "çûn", "xwarin", ...
-- 2) Verbs with preverbs (preverb + simple verb):
-- - ex.: "rakirin" (ra- + kirin), "çêkirin" (çê- + kirin), "vexwarin" (ve- + xwarin), ...
-- - Preverb verbs don't use the prefix "bi-" (ez ê rakim , ew ê rake , ...)
-- 3) Compound verbs, construction with non-verbal element (the noun is not attached to the verb):
-- - Left of the simple verb: "hez kirin" ("hez" + "kirin"), "li dar xistin" ("li dar" + "xistin"), ...
-- - Right of the simple verb: "kirin der" ("kirin" + "der"), "girtin ser xwe" ("girtin" + "ser xwe"), ...
-- - Compound verbs use the prefix "bi-" (ez ê hez bi-kim , ew ê hez bi-ke )
-- STRUCTURE: preSimpleVerb + spacing + simpleVerb + postSimpleVerb
-- EX. kirin: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- rakirin: preSimpleVerb='ra'; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- hez kirin: preSimpleVerb='hez'; spacing=true; simpleVerb='kirin'; postSimpleVerb=''
-- pev çûn: preSimpleVerb='pev'; spacing=true; simpleVerb='çûn'; postSimpleVerb=''
-- kirin der: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb='der'
-- WARNING: Conjugation can vary depending on the type of verb.
-- For example, in the future tense,the prefix "bi" is used for compound verbs,
-- but not for preverbal verbs, see the function that manages it "tenseRules" table.
-- This table does not yet support the mixed case: a verb composed of a noun and a preverb verb.
-- =============================================================================
function export.verbStruct(isCompoundVerb, preSimpleVerb)
local struct
if (preSimpleVerb and preSimpleVerb ~= '' and not isCompoundVerb) then
struct = 'preverbVerb'
elseif isCompoundVerb then
struct = 'compoundVerb'
else
struct = 'simpleVerb'
end
return struct
end
-- ================================================================
-- INFLECTIONAL ENDINGS
-- Assigns verb inflectional endings (suffixes) to all tenses
-- ================================================================
local getEndings = {}
do
-- ───────────────────────────────────────────────────────────────
-- Ending using present stem
-- ───────────────────────────────────────────────────────────────
getEndings['present'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends = {}
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends['std'] = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
ends['rojhilatî'] = {s1='m', s2='(y)', s3='t', p1='yn', p2='n', p3='n'}
else
ends['std'] = {s1='im', s2='î', s3='e', p1='in', p2='in', p3='in'}
ends['rojhilatî'] = {s1='im', s2='î', s3='<u>it</u>/ît', p1='în', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Ind. preterite + ind. imperfect ending
-- ───────────────────────────────────────────────────────────────
getEndings['past'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiouû]$') then
ends = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
elseif mw.ustring.match(stem, 'î$') then
-- if self.name == 'indImperfect' then
-- -- special indicative ind. imperfect rule
-- ends = {s1='yam', s2='yayî', s3='ya', p1='yan', p2='yan', p3='yan'}
-- end
ends = {s1='m', s2='', s3='', p1='n', p2='n', p3='n'}
else
ends = {s1='im', s2='î', s3='', p1='in', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Compound endings with auxiliary "bûn"
-- Inflectional endings are created by taking the different forms of the
-- verb "bûn" (with present stem "-b-" and past stem "-bû-") and
-- adding an "i-" prefix before them: "i-b-im", "i-bû-m", "i-bû-me", "i-bû-ma".
-- This "i-" varies according to the final letter of the verb stem.
-- ───────────────────────────────────────────────────────────────
local function normalize_i(stem)
local prfx_i = "i"
if mw.ustring.match(stem, "ya$") or
mw.ustring.match(stem, "[îû]$") then -- cf. karîn (-karî-)
prfx_i = ""
elseif mw.ustring.match(stem, '[aeêiou]$') then
prfx_i = "yi"
end
return prfx_i
end
getEndings['ibim'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bim", p1 = prfx_i .. "bin",
s2 = prfx_i .. "bî", p2 = prfx_i .. "bin",
s3 = prfx_i .. "be", p3 = prfx_i .. "bin"
}
end
getEndings['ibûm'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûm", p1 = prfx_i .. "bûn",
s2 = prfx_i .. "bûyî", p2 = prfx_i .. "bûn",
s3 = prfx_i .. "bû", p3 = prfx_i .. "bûn"
}
end
getEndings['ibûme'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûme", p1 = prfx_i .. "bûne",
s2 = prfx_i .. "bûyiye", p2 = prfx_i .. "bûne",
s3 = prfx_i .. "bûye", p3 = prfx_i .. "bûne"
}
end
getEndings['ibûma'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûma", p1 = prfx_i .. "bûna",
s2 = prfx_i .. "bûyayî", p2 = prfx_i .. "bûna",
s3 = prfx_i .. "bûya", p3 = prfx_i .. "bûna"
}
end
-- ───────────────────────────────────────────────────────────────
-- Ind. perfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ime'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="me", s2="yî", s3="ye", p1="ne", p2="ne", p3="ne"}
else
ends = {s1="ime", s2="iyî", s3="iye", p1="ine", p2="ine", p3="ine"}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Subj. Imperfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ama'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
-- The doublet in "-iyan" of verbs in -"în" (gerîn/-geriya-, kenîn/-keniya-, ...),
-- in the conditional and subjunctive moods, a doublet "yaya" appears; it's removed.
-- -yayayî → -yayî; -yaya → -ya
if mw.ustring.match(stem, '(ya)$') then
ends = {s1="ma", s2="yî", s3="", p1="na", p2="na", p3="na"}
elseif mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="ma", s2="yayî", s3="ya", p1="na", p2="na", p3="na"}
else
ends = {s1="ama", s2="ayî", s3="a", p1="ana", p2="ana", p3="ana"}
end
return ends
end
end
-- =============================================================================
-- RULES FOR PREVERBS: "bi-" and "di-"
-- There are two preverbs: "bi-" and "di-". These preverbs can change form
-- depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getPreverb = {}
do
getPreverb['bi'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local verbStruct = opts.verbStruct
local overridePreverb = opts.overridePreverb
local accent = opts.accent
-- Devoka rojhilatî:
-- @Ferhengvan: Dema bêt bi lêkera alîkar "ê / dê" û bi rehê lêkerê yê
-- dema niha û pêşgirên kesî tê çêkirin. Pêşgira "bi-" li destpêka lêkera
-- serekî nîne: - ez ê / dê xw-im (standard: ez ê/dê bi-xw-im).
if (self.name == 'indFuture' and accent == 'rojhilatî') then
return ''
end
-- Preverb verbs don't use the preverb "bi-": ra-kirin (ez ê rakim), ve-xwarin (ez ê vexwim) , ...
-- But compound verb and simple verbs use it: hez kirin (ez ê hez bi-kim), lê bigirin (ez ê lê bi-girim), ...
if (verbStruct == 'preverbVerb') then
return ''
end
-- If the preverb "bi-" is provided.
if (self.stem == 'present' and overridePreverb.presentBi) then
return overridePreverb.presentBi
elseif (self.stem == 'past' and overridePreverb.pastBi) then
return overridePreverb.pastBi
elseif overridePreverb.sameBi then
return overridePreverb.sameBi
end
-- Modification of the preverbe "bi-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[aeêiîouû]') then
return 'b'
end
return 'bi'
end
getPreverb['di'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local overridePreverb = opts.overridePreverb
-- If the preverb "di" is provided.
if (self.stem == 'present' and overridePreverb.presentDi) then
return overridePreverb.presentDi
elseif (self.stem == 'past' and overridePreverb.pastDi) then
return overridePreverb.pastDi
elseif overridePreverb.sameDi then
return overridePreverb.sameDi
end
-- Modification of the preverbe "di-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[ai]') then
return 'd'
end
-- Ex. hatin : stem = -ê- // ez têm
if mw.ustring.match(stem, '^[êî]') then
return 't'
end
return 'di'
end
end
-- =============================================================================
-- RULES FOR NEGATION PREFIXES: "na-" and "ne-"
-- There are two negation prefixes: "na-" and "ne-". These preverbs can change
-- form depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getNegPrefix = {}
do
getNegPrefix['na'] = function (self, opts)
-- self: reserved for future use
local _ = self -- delete the warning (unused argument)
opts = opts or {}
local stem = opts.stem
local overrideNa = opts.overrideNegPrefix.presentNa
if overrideNa then return '<b>' .. overrideNa .. '</b>' end
-- if irreg.dijrezikNa[stem] then return irreg.dijrezikNa[stem] end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>nay</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
return '<b>n</b>'
end
-- Tîpa duyem "-a-" ye (k-a-rîn, z-a-nîn, ...)
if mw.ustring.match(stem, '^%wa') then
return '<b>ni</b>'
end
return '<b>na</b>'
end
getNegPrefix['ne'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local tenseName = self.name
local impNegForm = opts.impNegForm -- form "1" or "2" of imp.
local overrideNegPrefix = opts.overrideNegPrefix
local negPrefix = 'ne'
-- Bo neyînî: pêşgira "di-" tenê di nav dema "indImperfect" de tê bikaranîn.
-- ji ber vê yekê 'negPrefix' hertim (?) 'ne' ye ji ber ku dikeve pêş
-- pêşgira "di-": wê/wî ne-di-elimand (elimandin)
if (tenseName == 'indImperfect') then
return '<b>' .. negPrefix .. '</b>'
end
-- Override
if (overrideNegPrefix.impMe or overrideNegPrefix.presentNe
or overrideNegPrefix.pastNe
or overrideNegPrefix.sameNe) then
-- Ovverride imp.
if (tenseName == 'impPresent') then
if (impNegForm == 1 and overrideNegPrefix.impMe) then
return '<b>' .. overrideNegPrefix.impMe .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.presentNe and
find(overrideNegPrefix.presentNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.presentNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.sameNe and
find(overrideNegPrefix.sameNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.sameNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.sameNe) then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
else
-- For other tenses besides the imperative
if (self.stem == 'present' and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (self.stem == 'past' and overrideNegPrefix.pastNe) then
return '<b>' .. overrideNegPrefix.pastNe .. '</b>'
elseif overrideNegPrefix.sameNe then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
end
end
-- There are two forms of construction of the imperative,
-- one with the prefix "me-" (1) and the other (2) with the prefix "ne-".
if (tenseName == 'impPresent') then
negPrefix = (impNegForm == 2) and 'ne' or 'me'
end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>' .. negPrefix .. 'y</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
negPrefix = mw.ustring.sub(negPrefix, 1, -2)
return '<b>' .. negPrefix .. '</b>'
end
return '<b>' .. negPrefix .. '</b>'
end
end
-- =============================================================================
-- Standardization of the PREVERBAL PARTICLE
-- The proverbial particle "ê" is placed after the personal pronoun.
-- =============================================================================
-- If there are no verbal preparticles, return empty table.
function export.getPreverbParticules(preverbParticle, typeStem, isTransitive)
if not preverbParticle then
return {s1='', s2='', s3='', p1='', p2='', p3=''}
end
if preverbParticle == 'ê' then
local isErgative = isTransitive and (typeStem == 'past')
-- When the personal pronoun ends in a vowel, a "y-" is added before "ê".
-- If it's ergative, we use oblique pronouns: "min", "te", ...
if isErgative then
return {s1='ê/dê', s2='yê/dê', s3='yê/dê', p1='yê/dê', p2='yê/dê', p3='ê/dê'}
else
return {s1='ê/dê', s2='yê/dê', s3='ê/dê', p1='ê/dê', p2='ê/dê', p3='ê/dê'}
end
end
-- If the verbal preparticle is identical for all pronouns,
-- we create a table with the same value.
local preverbParticles = {}
for _, pers in ipairs(export.order) do
preverbParticles[pers] = preverbParticle
end
return preverbParticles
end
-- =============================================================================
-- RULES FOR CONSTRUCTING EACH VERB TENSE
-- This table lists, for each verb tense, what elements are required to form it:
-- - Verb conjugation is built by placing either the preverb "bi-" or "di-" before
-- the verb stem (past or present), followed by a personal ending.
-- - For the negative form, one of the prefixes "na-" or "ne-" is added as well.
-- - In some cases, a preverbal particle such as /ê/ or /dê/ is added before
-- the conjugated verb as well.
-- Not: - The "negPreverb" (preverb (bi-/di-) for negative tenses) parameter has a
-- value different from "nil" only for the Imperfect tense ("negPreverb=di").
-- - The parameter "negPrefix=na" is used only for the present indicative.
--
-- Preverb "di", used in: "indPresent"(present stem), "indImperfect"(past stem)
-- - Bo neyînî: pêşgira "di-" tenê di nav dema "IndImperfect" de tê bikaranîn.
-- Preverb "bi", used in: "indFuture"(present stem), "subPresent"(present stem),
-- "subImperfect"(past stem) = "condPresent"(past stem)
-- - The prefix "bi-" isn't used in negative forms.
--
-- Present stem, used in: "indPresent"(di)(na),
-- "indFuture"(bi)(ne) = "subPresent"(bi)(ne)
--
-- Past stem, used in: "indPreterite"(-)(ne), "indImperfect"(di)(ne), "indPluperfect"(-)(ne),
-- "indPerfect"(-)(ne), "indNwPluperfect"(-)(ne), "indFuturePerfect"(-)(ne),
-- "subPreterite"(-)(ne),
-- "subImperfect"(bi)(ne) = "condPresent"(bi)(ne),
-- "subPluperfect"(-)(ne) = "condPreterite"(-)(ne)
-- =============================================================================
-- Some conjugations are identical except that they differ only in the preverbal particle (/ê/, /dê/).
-- So, to avoid repeating the same information (and thus risking errors),
-- we establish the common part shared between these verbs.
local sharedTenseRules = {
indFuture = {
stem = "present",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['present']
},
indFuturePerfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibim']
},
subImperfect = {
stem = "past",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ama']
},
subPluperfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûma']
}
}
local mt = {
__index = function(t, k)
local commonRules = t._commonRules
if commonRules then return commonRules[k] end
end
}
-- TENSES CONJUGATION RULES
export.tenseRules = {
-- IMPERATIVE MOOD
impPresent = setmetatable({
name = "impPresent",
nameKu = "raweya fermanî",
nameEn = "present imperative",
mode = "imperative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
-- INDICATIVE MOOD
indPresent = {
name = "indPresent",
nameKu = "dema niha",
nameEn = "present",
mode = "indicative",
stem = "present",
preverb = getPreverb['di'],
negPreverb = nil,
negPrefix = getNegPrefix['na'],
endings = getEndings['present'],
preverbParticle = nil
},
indPreterite = {
name = "indPreterite",
nameKu = "raboriya sade",
nameEn = "simple past",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indImperfect = {
name = "indImperfect",
nameKu = "raboriya berdest",
nameEn = "Imperfect",
mode = "indicative",
stem = "past",
preverb = getPreverb['di'],
negPreverb = getPreverb['di'],
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indPluperfect = {
name = "indPluperfect",
nameKu = "raboriya dûr",
nameEn = "pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûm'],
preverbParticle = nil
},
indFuture = setmetatable({
name = "indFuture",
nameKu = "dema bê",
nameEn = "future",
mode = "indicative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = 'ê'
}, mt),
indFuturePerfect = setmetatable({
name = "indFuturePerfect",
nameKu = "dahatiya pêş",
nameEn = "future perfect",
mode = "indicative",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = 'ê'
}, mt),
-- In some books, the "perfect" and "nonconfirmative pluperfect" tenses
-- are classified in the "inferential mood" ("moda neşahidî").
-- Currently we classify them using the indicative mood (at the end).
indPerfect = {
name = "indPerfect",
nameKu = "raboriya dûdar",
nameEn = "perfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ime'],
preverbParticle = nil
},
indNwPluperfect = {
name = "indNwPluperfect",
nameKu = "çîrokiya boriya dûdar",
nameEn = "non-witnessed pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûme'],
preverbParticle = nil
},
-- SUBJUNCTIVE MOOD
subjPresent = setmetatable({
name = "subjPresent",
nameKu = "dema nihaya xwestekî",
nameEn = "present subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
subjPreterite = setmetatable({
name = "subjPreterite",
nameKu = "dema boriya xwestekî",
nameEn = "preterite subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = nil,
}, mt),
subjImperfect = setmetatable({
name = "subjImperfect",
nameKu = "raboriya bilaniyê",
nameEn = "imperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = nil,
}, mt),
subjPluperfect = setmetatable({
name = "subjPluperfect",
nameKu = "raboriya dûr a bilaniyê",
nameEn = "pluperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = nil
}, mt),
-- CONDITIONAL MOOD
condPresent = setmetatable({
name = "condPresent",
nameKu = "çîrokiya dema nihaya mercî",
nameEn = "present conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = 'ê'
}, mt),
condPreterite = setmetatable({
name = "condPreterite",
nameKu = "dema boriya mercî",
nameEn = "preterite conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = 'ê'
}, mt),
}
-- =============================================================================
-- MAIN CONJUGATION FUNCTOIN
-- This function returns an array containing the conjugation table for a given
-- tense as well as other information about the conjugated verb.
-- =============================================================================
function export.conjugate(opts)
opts = opts or {}
-- Required parameters
local tense = opts.tense or error("'tense' required", 2)
--One of the two parameters is required:
-- - If the tense uses the present stem, indicate "presentStem".
-- - If it uses the past stem, indicate "pastStem".
local presentStem = opts.presentStem
local pastStem = opts.pastStem
-- Optional parameters
local isTransitive = opts.isTransitive or false -- Indicate if the verb is transitive (true/false)
local isNegative = opts.isNegative or false -- Indicate if it's the negative form (true/false)
local isCompoundVerb = opts.isCompoundVerb or false -- Indicate if it's a compound verb (true/false)
local preSimpleVerb = opts.preSimpleVerb or '' -- The part before the simple verb
local postSimpleVerb = opts.postSimpleVerb or '' -- The part after the simple verb
-- These parameters are provided when the verb is irregular.
-- Allows you to manually modify preverbs ("bi-"" or "di-")
-- and negation prefixes ("na-" or "ne-")
local overridePreverb = {
-- Preverbs (bi-, di)
presentBi = opts.presentBi or nil,
presentDi = opts.presentDi or nil,
pastBi = opts.pastBi or nil,
pastDi = opts.pastDi or nil,
-- Same preverbs ("past" and "present" stem)
sameBi = opts.sameBi or nil,
sameDi = opts.sameDi or nil,
}
local overrideNegPrefix = {
-- Neg. prefix (na-, ne-)
presentNa = opts.presentNa or nil,
presentNe = opts.presentNe or nil,
pastNe = opts.pastNe or nil,
-- same neg. prefix (for past and present stem)
sameNe = opts.sameNe or nil,
impMe = opts.impMe or nil,
}
-- By default, the negation of the imperative is constructed from the prefix "me-"".
-- To obtain the second variant, the prefix with "ne-", you must specify "impNegForm=2".
local impNegForm = opts.impNegForm or 1
-- Accent/ Devok
local accent = opts.accent or 'std'
-- If "tags='na'", remove links/tags
local tags = opts.tags or 'erê'
-- If addPreverbParticles='na', remove preverb particles (ê/dê) before
-- the conjugated verbs.
local addPreverbParticles = opts.addPreverbParticles or 'erê'
-- We add a space to the left of the "postSimpleVerb" because it shouldn't be attached
-- to the simple verb.
if (postSimpleVerb ~= '' and postSimpleVerb ~=nil) then
postSimpleVerb = ' ' .. postSimpleVerb
end
-- Access to the classification table and retrieval of verb tense parameters
local infoTense = deepCopy(export.tenseRules[tense], 'copy') or false
-- We check that this tense is indeed in table "tenseRules".
if (not infoTense) then
return '<span style="color:red">Unknown tense: ' .. tense ..'</span>'
end
-- We check that one of the two parameters of the stem is given
if (infoTense.stem == 'present' and not presentStem) then
return '<span style="color:red">presentStem parameter required</span>'
elseif (infoTense.stem == 'past' and not pastStem) then
return '<span style="color:red">pasttStem parameter required</span>'
end
-- Choice between the present stem or past stem
local stem = (infoTense.stem == 'present') and presentStem or pastStem
--────────────────────────────
-- Conjugation construction --
-- ───────────────────────────
local preverb = ''
local negPrefix = ''
-- +++++++++++++++++++++++++++
-- Lêkerin nestandard --
-- +++++++++++++++++++++++++++
-- çûn
if (stem == 'her' and pastStem == 'çû') then
if tense == 'indPresent' then
if isNegative then
stem = 'r'
else
stem = 'er'
overridePreverb.presentDi = 't'
end
elseif ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
overridePreverb.presentBi = ''
if isNegative then
stem = 'r'
else
stem = 'her'
end
end
end
-- hatin
if (stem == 'wer' and pastStem == 'hat') then
if ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
if isNegative then
stem = 'ê'
else
overridePreverb.presentBi = ''
stem = 'wer'
end
elseif (tense == 'indPresent') then
stem = 'ê'
end
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ruturns the verb type: "simpleVerb" or "preverbVerb" or "compoundVerb"
local verbStruct = export.verbStruct(isCompoundVerb, preSimpleVerb)
if isNegative then
negPrefix = infoTense:negPrefix{stem=stem,
impNegForm=impNegForm,
overrideNegPrefix=overrideNegPrefix}
if infoTense.negPreverb then
preverb = infoTense:negPreverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb}
end
else
if infoTense.preverb then
preverb = infoTense:preverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb,
accent=accent}
end
end
infoTense.conj = {}
local spacing = isCompoundVerb and ' ' or ''
local endings = infoTense:endings(stem)
-- 'rojhilatî' accent (devok) for present stem
if (infoTense.stem == 'present') then
if (accent == 'rojhilatî') then
endings = endings['rojhilatî']
else
endings = endings['std']
end
end
local preverbParticles = export.getPreverbParticules(
infoTense.preverbParticle,
infoTense.stem, isTransitive
)
local isErgative = isTransitive and (infoTense.stem == 'past')
-- Creating the conjugation table for a given tense
for _, pers in ipairs(export.order) do
local ending
local conjSimbleVerb
local conjVerb
if isErgative then
ending = endings.s3
else
ending = endings[pers]
end
-- Adding space after the preverbal particle, and
-- if "addPreverbParticles='na'": remove preverb particles (ê/dê).
local preverbParticle = ''
if infoTense.preverbParticle and addPreverbParticles ~= 'na' then
preverbParticle = preverbParticles[pers] .. ' '
end
conjSimbleVerb = negPrefix .. preverb .. stem .. ending
-- Adding prefixe and suffixe
conjVerb = preSimpleVerb .. spacing .. conjSimbleVerb .. postSimpleVerb
-- Spelling correction(îy -> iy)
conjVerb = gsub(conjVerb, 'îy', 'iy')
-- Add a link / if tags='na' no links
if tags ~= 'na' then
conjVerb = link{term=conjVerb, lang=langKu}
end
-- Addition of the preverbal particle
infoTense.conj[pers] = preverbParticle .. conjVerb
end
-- Imperative
if (infoTense.name == 'impPresent') then
infoTense.conj.s1 = nil
infoTense.conj.s2 = infoTense.conj.s3
infoTense.conj.s3 = nil
infoTense.conj.p1 = nil
-- infoTense.conj.p2 = infoTense.conj.p2
infoTense.conj.p3 = nil
end
return infoTense
end
-- =============================================================================
-- END
-- =============================================================================
-- Some useful tools
-- =============================================================================
-- Returns the list of verb tenses
export.tensesList = function()
local list = {}
for _, tense in pairs(export.tenseRules) do
table.insert(list, tense.name)
end
return list
end
-- Concatenation of pronouns and conjugated verbs
-- (for a given conjugate tense in all persons of that tense)
function export.concatPronomsVerbs(pronoms, conjVerbs)
local concatTab = {}
for _, pers in ipairs(export.order) do
local pronom = pronoms[pers] or ""
local verbe = conjVerbs[pers] or ""
if pronom == "" then
concatTab[pers] = verbe
elseif verbe == "" then
concatTab[pers] = pronom
else
concatTab[pers] = pronom .. " " .. verbe
end
end
return concatTab
end
-- Remove duplicates
local function removeDuplicates(list)
local seen = {}
local result = {}
for _, value in ipairs(list) do
if not seen[value] then
seen[value] = true
table.insert(result, value)
end
end
return result
end
-- =============================================================================
-- ADDITIONAL STEM OF THE PAST AND PRESENT (pastStem2, ... and presentStem2, ...)
-- This function does nothing more than add additional parameters for verb stems
-- in the past and present tenses.
-- Conjugations for the different stems will be separated by "/"
-- =============================================================================
function export.conjugateLong(baseOpts, tense, presentStems, pastStems)
local opts = deepCopy(baseOpts or {}, 'copy')
opts.addPreverbParticles = 'na'
presentStems = presentStems or {}
pastStems = pastStems or {}
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
if not infoTense then
return '<span style="color:red">Unknown tense: ' .. tostring(tense) ..'</span>'
end
local stems = (infoTense.stem == 'present') and presentStems or pastStems
-- For each verb stem, its conjugation table is calculated and stored in conjTabs.
local conjTabs = {}
for i = 1, #stems do
local stem = stems[i]
if stem then
if (infoTense.stem == 'past') then
opts.pastStem = stem
elseif (infoTense.stem == 'present') then
opts.presentStem = stem
-- For the recognition of irregular verbs based on the past-stem part
-- see: "çûn" û "hatin"
opts.pastStem = pastStems[1]
end
-- The proverbs are added only for the first conjugation form: reading is easier.
--if (i > 1) then opts.addPreverbParticles = 'na' end
local result = export.conjugate(opts)
if result and result.conj then
table.insert(conjTabs, result.conj)
end
end
end
-- We concatenate each row of the conjugation tables.
local preverbParticules = deepCopy(export.getPreverbParticules(
infoTense.preverbParticule,
infoTense.stem,
opts.isTransitive
), 'copy')
local concatConjTabs = {}
for _, pers in ipairs(export.order) do
local frag = {}
for i = 1, #conjTabs do
local val = conjTabs[i][pers]
if val then
table.insert(frag, tostring(val))
end
end
frag = removeDuplicates(frag)
concatConjTabs[pers] = preverbParticules[pers]
.. table.concat(frag, ' — ')
end
infoTense.conj = concatConjTabs
return infoTense
end
-- ====================================================================================
-- VERB CONJUGATION IN ALL TENSES WITH OR WITHOUT PRONOUNS
-- ====================================================================================
function export.conjugateAllTenses(baseOpts, presentStems, pastStems, negation, concatPrs)
-- "concatPrs=false" table without pronouns
local opts = deepCopy(baseOpts or {}, 'copy')
if negation == 'negative' then
opts.isNegative = true
end
presentStems = presentStems or {}
pastStems = pastStems or {}
-- Concatenation of pronouns and conjugated verbs
local concatPronomsVerbs = export.concatPronomsVerbs
local tensesList = export.tensesList()
-- Conjugation in all tenses
local conjTab = {}
for _, tense in ipairs(tensesList) do
-- Conjugations without the pronouns
local conjData = deepCopy(
export.conjugateLong(opts, tense, presentStems, pastStems),
'copy'
)
-- We concatenate the pronouns and the verbs if "concatPrs" is different of "false"
-- No pronouns for the imperative mood
if tense ~= 'impPresent' and concatPrs ~= false then
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
local pronoms = deepCopy(
export.conjPronouns(infoTense.stem, infoTense.mode, opts.isTransitive)
)
conjData.conj = concatPronomsVerbs(pronoms, conjData.conj)
end
conjTab[tense] = conjData
end
return conjTab
end
-- ====================================================================================
-- Allows you to obtain a given conjugation from a model.
-- Ex. {{#invoke:ku-tewandin|tew|dem=indPresent|kes=s1}}
-- See {{ku-tewîn-lk-niha}}
-- ====================================================================================
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isNegative = frame.args['neyînî'] or false,
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = args['lînk'] or 'erê',
accent = args['devok'] or 'std',
}
local tense = frame.args['dem'] or nil
local pers = frame.args['kes'] or nil
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
-- A few checks
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
if (baseOpts.isNegative == 'erê') then
baseOpts.isNegative = true
end
local tabConj = export.conjugateLong(baseOpts, tense, presentStems, pastStems).conj
return tabConj[pers]
end
-- ====================================================================================
-- GET COMMMA SEPARED FORMS
-- Bnr. [[MediaWiki:Gadget-QQ.js]]
-- Ex. {{#invoke:ku-tewandin|get_comma_separated_forms|niha=kev|borî=ket}}
-- ====================================================================================
function export.get_comma_separated_forms(frame)
local opts = {
presentStem = frame.args['niha'],
pastStem = frame.args['borî'],
isTransitive = false,
isNegative = false,
isCompoundVerb = frame['valahî'] or false,
preSimpleVerb = frame['pêşgir'] or '',
postSimpleVerb = frame['paşgir'] or '',
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = 'na', -- Remove links/tags
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local function concateList(tenseList)
local concatList = {}
for _, pers in ipairs({"s1", "s2", "s3", "p1"}) do
local tense = tenseList[pers]
table.insert(concatList, tense)
end
return table.concat(concatList, ",")
end
local tenseList = {'indPresent','indPreterite','indImperfect',
'indPluperfect','indPerfect','indNwPluperfect',
'indFuture','indFuturePerfect',
'subjImperfect','subjPluperfect'
}
local concatAllTense = {}
for i = 1, #tenseList do
local tense = tenseList[i]
if export.tenseRules[tense] then
opts.tense = tense
local conj = shallowCopy(export.conjugate(opts).conj)
local concatTense = concateList(conj)
table.insert(concatAllTense, concatTense)
end
end
return table.concat(concatAllTense, ",")
end
return export
rvwjyj9e7t53tav206e82nij1z4oy0o
6237720
6237713
2026-06-15T02:31:58Z
Ghybu
1393
6237720
Scribunto
text/plain
-- Modula tewandina lêkerên kurmancî
local export = {}
-- Load irregular forms table
-- local irreg = require('Module:ku-tewandin/nestandard')
local langKu = require("Modul:languages").getByCode("ku")
local link = require('Module:links').language_link
local shallowCopy = require("Module:table/shallowCopy")
local deepCopy = require("Module:table/deepCopy")
local gsub = mw.ustring.gsub
local find = mw.ustring.find
-- =============================================================================
-- Pronouns in Kurmanji
-- =============================================================================
export.order = {"s1", "s2", "s3", "p1", "p2", "p3"}
export.pronouns = {
s1 = "ez", p1 = "em",
s2 = "tu", p2 = "hûn",
s3 = "ew", p3 = "ew"
}
export.obliquePronouns = {
s1 = "min", p1 = "me",
s2 = "te", p2 = "we",
s3 = "wê/wî", p3 = "wan"
}
export.agents = {
s1 = "te, wî, wê, we, wan", p1 = "te, wî, wê, we, wan",
s2 = "min, wî, wê, me, wan", p2 = "min, wî, wê, me, wan",
s3 = "min, te, wî, wê, me, we, wan", p3 = "min, te, wî, wê, me, we, wan"
}
-- Oblique pronoun (green)
export.obliquePronounsGreen = {
s1 = '<span style="color:green">min</span>',
s2 = '<span style="color:green">te</span>',
s3 = '<span style="color:green">wê/wî</span>',
p1 = '<span style="color:green">me</span>',
p2 = '<span style="color:green">we</span>',
p3 = '<span style="color:green">wan</span>'
}
-- ─────────────────────────────────────────────────────────────────────────────
-- 1) This function returns correct subject/agent pronoun, ergativity rule:
-- - Transitive verbs in past tenses → oblique pronoun (green) = agent
-- - All other cases → direct pronoun (no color) = subject
-- 2) Also add the subjunctive prefix "(bila)"
-- ─────────────────────────────────────────────────────────────────────────────
function export.conjPronouns(stemType, mode, isTransitive)
local pronouns = shallowCopy(export.pronouns)
-- Ergativity in kurdish: transitive verbs that are conjugated with the past tense stem are
-- conjugated according to the object, not the subject.
-- Therefore, to have an ergative construction,
-- the verb must be transitive and its stem must be the stem of the past tense.
local isErgative = isTransitive and (stemType == 'past')
-- If it's ergative, we use oblique pronouns: "min", "te", ...
-- If it's not ergative, we use normal pronouns: "ez", "tu", ...
if isErgative then
pronouns = shallowCopy(export.obliquePronounsGreen)
end
-- For the subjunctive mood, we add "(bila)" at the beginning.
if mode == 'subjunctive' then
local subjPrefix = '<span style="color:gray">(bila)</span>'
for _, pers in ipairs(export.order) do
pronouns[pers] = subjPrefix .. ' ' .. pronouns[pers]
end
end
return pronouns
end
-- =============================================================================
-- VERBAL STRUCTURE IN THE INFINITIVE:
-- Verbs in the infinitive appear in three main forms:
-- 1) Simple verb (indivisible light verb):
-- - ex.: "kirin", "çûn", "xwarin", ...
-- 2) Verbs with preverbs (preverb + simple verb):
-- - ex.: "rakirin" (ra- + kirin), "çêkirin" (çê- + kirin), "vexwarin" (ve- + xwarin), ...
-- - Preverb verbs don't use the prefix "bi-" (ez ê rakim , ew ê rake , ...)
-- 3) Compound verbs, construction with non-verbal element (the noun is not attached to the verb):
-- - Left of the simple verb: "hez kirin" ("hez" + "kirin"), "li dar xistin" ("li dar" + "xistin"), ...
-- - Right of the simple verb: "kirin der" ("kirin" + "der"), "girtin ser xwe" ("girtin" + "ser xwe"), ...
-- - Compound verbs use the prefix "bi-" (ez ê hez bi-kim , ew ê hez bi-ke )
-- STRUCTURE: preSimpleVerb + spacing + simpleVerb + postSimpleVerb
-- EX. kirin: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- rakirin: preSimpleVerb='ra'; spacing=false; simpleVerb='kirin'; postSimpleVerb=''
-- hez kirin: preSimpleVerb='hez'; spacing=true; simpleVerb='kirin'; postSimpleVerb=''
-- pev çûn: preSimpleVerb='pev'; spacing=true; simpleVerb='çûn'; postSimpleVerb=''
-- kirin der: preSimpleVerb=''; spacing=false; simpleVerb='kirin'; postSimpleVerb='der'
-- WARNING: Conjugation can vary depending on the type of verb.
-- For example, in the future tense,the prefix "bi" is used for compound verbs,
-- but not for preverbal verbs, see the function that manages it "tenseRules" table.
-- This table does not yet support the mixed case: a verb composed of a noun and a preverb verb.
-- =============================================================================
function export.verbStruct(isCompoundVerb, preSimpleVerb)
local struct
if (preSimpleVerb and preSimpleVerb ~= '' and not isCompoundVerb) then
struct = 'preverbVerb'
elseif isCompoundVerb then
struct = 'compoundVerb'
else
struct = 'simpleVerb'
end
return struct
end
-- ================================================================
-- INFLECTIONAL ENDINGS
-- Assigns verb inflectional endings (suffixes) to all tenses
-- ================================================================
local getEndings = {}
do
-- ───────────────────────────────────────────────────────────────
-- Ending using present stem
-- ───────────────────────────────────────────────────────────────
getEndings['present'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends = {}
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends['std'] = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
ends['rojhilatî'] = {s1='m', s2='(y)', s3='t', p1='yn', p2='n', p3='n'}
else
ends['std'] = {s1='im', s2='î', s3='e', p1='in', p2='in', p3='in'}
ends['rojhilatî'] = {s1='im', s2='î', s3='<u>it</u>/ît', p1='în', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Ind. preterite + ind. imperfect ending
-- ───────────────────────────────────────────────────────────────
getEndings['past'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiouû]$') then
ends = {s1='m', s2='yî', s3='', p1='n', p2='n', p3='n'}
elseif mw.ustring.match(stem, 'î$') then
-- if self.name == 'indImperfect' then
-- -- special indicative ind. imperfect rule
-- ends = {s1='yam', s2='yayî', s3='ya', p1='yan', p2='yan', p3='yan'}
-- end
ends = {s1='m', s2='', s3='', p1='n', p2='n', p3='n'}
else
ends = {s1='im', s2='î', s3='', p1='in', p2='in', p3='in'}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Compound endings with auxiliary "bûn"
-- Inflectional endings are created by taking the different forms of the
-- verb "bûn" (with present stem "-b-" and past stem "-bû-") and
-- adding an "i-" prefix before them: "i-b-im", "i-bû-m", "i-bû-me", "i-bû-ma".
-- This "i-" varies according to the final letter of the verb stem.
-- ───────────────────────────────────────────────────────────────
local function normalize_i(stem)
local prfx_i = "i"
if mw.ustring.match(stem, "ya$") or
mw.ustring.match(stem, "[îû]$") then -- cf. karîn (-karî-)
prfx_i = ""
elseif mw.ustring.match(stem, '[aeêiou]$') then
prfx_i = "yi"
end
return prfx_i
end
getEndings['ibim'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bim", p1 = prfx_i .. "bin",
s2 = prfx_i .. "bî", p2 = prfx_i .. "bin",
s3 = prfx_i .. "be", p3 = prfx_i .. "bin"
}
end
getEndings['ibûm'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûm", p1 = prfx_i .. "bûn",
s2 = prfx_i .. "bûyî", p2 = prfx_i .. "bûn",
s3 = prfx_i .. "bû", p3 = prfx_i .. "bûn"
}
end
getEndings['ibûme'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûme", p1 = prfx_i .. "bûne",
s2 = prfx_i .. "bûyiye", p2 = prfx_i .. "bûne",
s3 = prfx_i .. "bûye", p3 = prfx_i .. "bûne"
}
end
getEndings['ibûma'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local prfx_i = normalize_i(stem)
return {
s1 = prfx_i .. "bûma", p1 = prfx_i .. "bûna",
s2 = prfx_i .. "bûyayî", p2 = prfx_i .. "bûna",
s3 = prfx_i .. "bûya", p3 = prfx_i .. "bûna"
}
end
-- ───────────────────────────────────────────────────────────────
-- Ind. perfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ime'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
if mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="me", s2="yî", s3="ye", p1="ne", p2="ne", p3="ne"}
else
ends = {s1="ime", s2="iyî", s3="iye", p1="ine", p2="ine", p3="ine"}
end
return ends
end
-- ───────────────────────────────────────────────────────────────
-- Subj. Imperfect ending.
-- ───────────────────────────────────────────────────────────────
getEndings['ama'] = function(self, stem)
-- self: reserved for future use (was used before, might be needed again)
local _ = self -- delete the warning (unused argument)
local ends
-- The doublet in "-iyan" of verbs in -"în" (gerîn/-geriya-, kenîn/-keniya-, ...),
-- in the conditional and subjunctive moods, a doublet "yaya" appears; it's removed.
-- -yayayî → -yayî; -yaya → -ya
if mw.ustring.match(stem, '(ya)$') then
ends = {s1="ma", s2="yî", s3="", p1="na", p2="na", p3="na"}
elseif mw.ustring.match(stem, '[aeêiîouû]$') then
ends = {s1="ma", s2="yayî", s3="ya", p1="na", p2="na", p3="na"}
else
ends = {s1="ama", s2="ayî", s3="a", p1="ana", p2="ana", p3="ana"}
end
return ends
end
end
-- =============================================================================
-- RULES FOR PREVERBS: "bi-" and "di-"
-- There are two preverbs: "bi-" and "di-". These preverbs can change form
-- depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getPreverb = {}
do
getPreverb['bi'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local verbStruct = opts.verbStruct
local overridePreverb = opts.overridePreverb
local accent = opts.accent
-- Devoka rojhilatî:
-- @Ferhengvan: Dema bêt bi lêkera alîkar "ê / dê" û bi rehê lêkerê yê
-- dema niha û pêşgirên kesî tê çêkirin. Pêşgira "bi-" li destpêka lêkera
-- serekî nîne: - ez ê / dê xw-im (standard: ez ê/dê bi-xw-im).
if (self.name == 'indFuture' and accent == 'rojhilatî') then
return ''
end
-- Preverb verbs don't use the preverb "bi-": ra-kirin (ez ê rakim), ve-xwarin (ez ê vexwim) , ...
-- But compound verb and simple verbs use it: hez kirin (ez ê hez bi-kim), lê bigirin (ez ê lê bi-girim), ...
if (verbStruct == 'preverbVerb') then
return ''
end
-- If the preverb "bi-" is provided.
if (self.stem == 'present' and overridePreverb.presentBi) then
return overridePreverb.presentBi
elseif (self.stem == 'past' and overridePreverb.pastBi) then
return overridePreverb.pastBi
elseif overridePreverb.sameBi then
return overridePreverb.sameBi
end
-- Modification of the preverbe "bi-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[aeêiîouû]') then
return 'b'
end
return 'bi'
end
getPreverb['di'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local overridePreverb = opts.overridePreverb
-- If the preverb "di" is provided.
if (self.stem == 'present' and overridePreverb.presentDi) then
return overridePreverb.presentDi
elseif (self.stem == 'past' and overridePreverb.pastDi) then
return overridePreverb.pastDi
elseif overridePreverb.sameDi then
return overridePreverb.sameDi
end
-- Modification of the preverbe "di-" according to the last letter of the stem.
if mw.ustring.match(stem, '^[ai]') then
return 'd'
end
-- Ex. hatin : stem = -ê- // ez têm
if mw.ustring.match(stem, '^[êî]') then
return 't'
end
return 'di'
end
end
-- =============================================================================
-- RULES FOR NEGATION PREFIXES: "na-" and "ne-"
-- There are two negation prefixes: "na-" and "ne-". These preverbs can change
-- form depending on the first letters of the verb’s present stem or past stem.
-- =============================================================================
local getNegPrefix = {}
do
getNegPrefix['na'] = function (self, opts)
-- self: reserved for future use
local _ = self -- delete the warning (unused argument)
opts = opts or {}
local stem = opts.stem
local overrideNa = opts.overrideNegPrefix.presentNa
if overrideNa then return '<b>' .. overrideNa .. '</b>' end
-- if irreg.dijrezikNa[stem] then return irreg.dijrezikNa[stem] end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>nay</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
return '<b>n</b>'
end
-- Tîpa duyem "-a-" ye (k-a-rîn, z-a-nîn, ...)
if mw.ustring.match(stem, '^%wa') then
return '<b>ni</b>'
end
return '<b>na</b>'
end
getNegPrefix['ne'] = function (self, opts)
opts = opts or {}
local stem = opts.stem
local tenseName = self.name
local impNegForm = opts.impNegForm -- form "1" or "2" of imp.
local overrideNegPrefix = opts.overrideNegPrefix
local negPrefix = 'ne'
-- Bo neyînî: pêşgira "di-" tenê di nav dema "indImperfect" de tê bikaranîn.
-- ji ber vê yekê 'negPrefix' hertim (?) 'ne' ye ji ber ku dikeve pêş
-- pêşgira "di-": wê/wî ne-di-elimand (elimandin)
if (tenseName == 'indImperfect') then
return '<b>' .. negPrefix .. '</b>'
end
-- Override
if (overrideNegPrefix.impMe or overrideNegPrefix.presentNe
or overrideNegPrefix.pastNe
or overrideNegPrefix.sameNe) then
-- Ovverride imp.
if (tenseName == 'impPresent') then
if (impNegForm == 1 and overrideNegPrefix.impMe) then
return '<b>' .. overrideNegPrefix.impMe .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.presentNe and
find(overrideNegPrefix.presentNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.presentNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 1 and overrideNegPrefix.sameNe and
find(overrideNegPrefix.sameNe, '^n')) then
--For the "me-" form, we replace the "n" with an "m".
return '<b>' .. gsub(overrideNegPrefix.sameNe, '^(.)', 'm') .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (impNegForm == 2 and overrideNegPrefix.sameNe) then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
else
-- For other tenses besides the imperative
if (self.stem == 'present' and overrideNegPrefix.presentNe) then
return '<b>' .. overrideNegPrefix.presentNe .. '</b>'
elseif (self.stem == 'past' and overrideNegPrefix.pastNe) then
return '<b>' .. overrideNegPrefix.pastNe .. '</b>'
elseif overrideNegPrefix.sameNe then
return '<b>' .. overrideNegPrefix.sameNe .. '</b>'
end
end
end
-- There are two forms of construction of the imperative,
-- one with the prefix "me-" (1) and the other (2) with the prefix "ne-".
if (tenseName == 'impPresent') then
negPrefix = (impNegForm == 2) and 'ne' or 'me'
end
-- Add sufix "-y" before certain vowels.
if mw.ustring.match(stem, '^[eêiîouû]') then
return '<b>' .. negPrefix .. 'y</b>'
end
-- Elision before stems beginning with "a-" (removal of the final "-e").
if mw.ustring.match(stem, '^a') then
negPrefix = mw.ustring.sub(negPrefix, 1, -2)
return '<b>' .. negPrefix .. '</b>'
end
return '<b>' .. negPrefix .. '</b>'
end
end
-- =============================================================================
-- Standardization of the PREVERBAL PARTICLE
-- The proverbial particle "ê" is placed after the personal pronoun.
-- =============================================================================
-- If there are no verbal preparticles, return empty table.
function export.getPreverbParticles(preverbParticle, typeStem, isTransitive)
if not preverbParticle then
return {s1='', s2='', s3='', p1='', p2='', p3=''}
end
if preverbParticle == 'ê' then
local isErgative = isTransitive and (typeStem == 'past')
-- When the personal pronoun ends in a vowel, a "y-" is added before "ê".
-- If it's ergative, we use oblique pronouns: "min", "te", ...
if isErgative then
return {s1='ê/dê', s2='yê/dê', s3='yê/dê', p1='yê/dê', p2='yê/dê', p3='ê/dê'}
else
return {s1='ê/dê', s2='yê/dê', s3='ê/dê', p1='ê/dê', p2='ê/dê', p3='ê/dê'}
end
end
-- If the verbal preparticle is identical for all pronouns,
-- we create a table with the same value.
local preverbParticles = {}
for _, pers in ipairs(export.order) do
preverbParticles[pers] = preverbParticle
end
return preverbParticles
end
-- =============================================================================
-- RULES FOR CONSTRUCTING EACH VERB TENSE
-- This table lists, for each verb tense, what elements are required to form it:
-- - Verb conjugation is built by placing either the preverb "bi-" or "di-" before
-- the verb stem (past or present), followed by a personal ending.
-- - For the negative form, one of the prefixes "na-" or "ne-" is added as well.
-- - In some cases, a preverbal particle such as /ê/ or /dê/ is added before
-- the conjugated verb as well.
-- Not: - The "negPreverb" (preverb (bi-/di-) for negative tenses) parameter has a
-- value different from "nil" only for the Imperfect tense ("negPreverb=di").
-- - The parameter "negPrefix=na" is used only for the present indicative.
--
-- Preverb "di", used in: "indPresent"(present stem), "indImperfect"(past stem)
-- - Bo neyînî: pêşgira "di-" tenê di nav dema "IndImperfect" de tê bikaranîn.
-- Preverb "bi", used in: "indFuture"(present stem), "subPresent"(present stem),
-- "subImperfect"(past stem) = "condPresent"(past stem)
-- - The prefix "bi-" isn't used in negative forms.
--
-- Present stem, used in: "indPresent"(di)(na),
-- "indFuture"(bi)(ne) = "subPresent"(bi)(ne)
--
-- Past stem, used in: "indPreterite"(-)(ne), "indImperfect"(di)(ne), "indPluperfect"(-)(ne),
-- "indPerfect"(-)(ne), "indNwPluperfect"(-)(ne), "indFuturePerfect"(-)(ne),
-- "subPreterite"(-)(ne),
-- "subImperfect"(bi)(ne) = "condPresent"(bi)(ne),
-- "subPluperfect"(-)(ne) = "condPreterite"(-)(ne)
-- =============================================================================
-- Some conjugations are identical except that they differ only in the preverbal particle (/ê/, /dê/).
-- So, to avoid repeating the same information (and thus risking errors),
-- we establish the common part shared between these verbs.
local sharedTenseRules = {
indFuture = {
stem = "present",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['present']
},
indFuturePerfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibim']
},
subImperfect = {
stem = "past",
preverb = getPreverb['bi'],
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ama']
},
subPluperfect = {
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûma']
}
}
local mt = {
__index = function(t, k)
local commonRules = t._commonRules
if commonRules then return commonRules[k] end
end
}
-- TENSES CONJUGATION RULES
export.tenseRules = {
-- IMPERATIVE MOOD
impPresent = setmetatable({
name = "impPresent",
nameKu = "raweya fermanî",
nameEn = "present imperative",
mode = "imperative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
-- INDICATIVE MOOD
indPresent = {
name = "indPresent",
nameKu = "dema niha",
nameEn = "present",
mode = "indicative",
stem = "present",
preverb = getPreverb['di'],
negPreverb = nil,
negPrefix = getNegPrefix['na'],
endings = getEndings['present'],
preverbParticle = nil
},
indPreterite = {
name = "indPreterite",
nameKu = "raboriya sade",
nameEn = "simple past",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indImperfect = {
name = "indImperfect",
nameKu = "raboriya berdest",
nameEn = "Imperfect",
mode = "indicative",
stem = "past",
preverb = getPreverb['di'],
negPreverb = getPreverb['di'],
negPrefix = getNegPrefix['ne'],
endings = getEndings['past'],
preverbParticle = nil
},
indPluperfect = {
name = "indPluperfect",
nameKu = "raboriya dûr",
nameEn = "pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûm'],
preverbParticle = nil
},
indFuture = setmetatable({
name = "indFuture",
nameKu = "dema bê",
nameEn = "future",
mode = "indicative",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = 'ê'
}, mt),
indFuturePerfect = setmetatable({
name = "indFuturePerfect",
nameKu = "dahatiya pêş",
nameEn = "future perfect",
mode = "indicative",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = 'ê'
}, mt),
-- In some books, the "perfect" and "nonconfirmative pluperfect" tenses
-- are classified in the "inferential mood" ("moda neşahidî").
-- Currently we classify them using the indicative mood (at the end).
indPerfect = {
name = "indPerfect",
nameKu = "raboriya dûdar",
nameEn = "perfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ime'],
preverbParticle = nil
},
indNwPluperfect = {
name = "indNwPluperfect",
nameKu = "çîrokiya boriya dûdar",
nameEn = "non-witnessed pluperfect",
mode = "indicative",
stem = "past",
preverb = nil,
negPreverb = nil,
negPrefix = getNegPrefix['ne'],
endings = getEndings['ibûme'],
preverbParticle = nil
},
-- SUBJUNCTIVE MOOD
subjPresent = setmetatable({
name = "subjPresent",
nameKu = "dema nihaya xwestekî",
nameEn = "present subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuture,
preverbParticle = nil
}, mt),
subjPreterite = setmetatable({
name = "subjPreterite",
nameKu = "dema boriya xwestekî",
nameEn = "preterite subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.indFuturePerfect,
preverbParticle = nil,
}, mt),
subjImperfect = setmetatable({
name = "subjImperfect",
nameKu = "raboriya bilaniyê",
nameEn = "imperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = nil,
}, mt),
subjPluperfect = setmetatable({
name = "subjPluperfect",
nameKu = "raboriya dûr a bilaniyê",
nameEn = "pluperfect subjunctive",
mode = "subjunctive",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = nil
}, mt),
-- CONDITIONAL MOOD
condPresent = setmetatable({
name = "condPresent",
nameKu = "çîrokiya dema nihaya mercî",
nameEn = "present conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subImperfect,
preverbParticle = 'ê'
}, mt),
condPreterite = setmetatable({
name = "condPreterite",
nameKu = "dema boriya mercî",
nameEn = "preterite conditional",
mode = "conditional",
_commonRules = sharedTenseRules.subPluperfect,
preverbParticle = 'ê'
}, mt),
}
-- =============================================================================
-- MAIN CONJUGATION FUNCTOIN
-- This function returns an array containing the conjugation table for a given
-- tense as well as other information about the conjugated verb.
-- =============================================================================
function export.conjugate(opts)
opts = opts or {}
-- Required parameters
local tense = opts.tense or error("'tense' required", 2)
--One of the two parameters is required:
-- - If the tense uses the present stem, indicate "presentStem".
-- - If it uses the past stem, indicate "pastStem".
local presentStem = opts.presentStem
local pastStem = opts.pastStem
-- Optional parameters
local isTransitive = opts.isTransitive or false -- Indicate if the verb is transitive (true/false)
local isNegative = opts.isNegative or false -- Indicate if it's the negative form (true/false)
local isCompoundVerb = opts.isCompoundVerb or false -- Indicate if it's a compound verb (true/false)
local preSimpleVerb = opts.preSimpleVerb or '' -- The part before the simple verb
local postSimpleVerb = opts.postSimpleVerb or '' -- The part after the simple verb
-- These parameters are provided when the verb is irregular.
-- Allows you to manually modify preverbs ("bi-"" or "di-")
-- and negation prefixes ("na-" or "ne-")
local overridePreverb = {
-- Preverbs (bi-, di)
presentBi = opts.presentBi or nil,
presentDi = opts.presentDi or nil,
pastBi = opts.pastBi or nil,
pastDi = opts.pastDi or nil,
-- Same preverbs ("past" and "present" stem)
sameBi = opts.sameBi or nil,
sameDi = opts.sameDi or nil,
}
local overrideNegPrefix = {
-- Neg. prefix (na-, ne-)
presentNa = opts.presentNa or nil,
presentNe = opts.presentNe or nil,
pastNe = opts.pastNe or nil,
-- same neg. prefix (for past and present stem)
sameNe = opts.sameNe or nil,
impMe = opts.impMe or nil,
}
-- By default, the negation of the imperative is constructed from the prefix "me-"".
-- To obtain the second variant, the prefix with "ne-", you must specify "impNegForm=2".
local impNegForm = opts.impNegForm or 1
-- Accent/ Devok
local accent = opts.accent or 'std'
-- If "tags='na'", remove links/tags
local tags = opts.tags or 'erê'
-- If addPreverbParticles='na', remove preverb particles (ê/dê) before
-- the conjugated verbs.
local addPreverbParticles = opts.addPreverbParticles or 'erê'
-- We add a space to the left of the "postSimpleVerb" because it shouldn't be attached
-- to the simple verb.
if (postSimpleVerb ~= '' and postSimpleVerb ~=nil) then
postSimpleVerb = ' ' .. postSimpleVerb
end
-- Access to the classification table and retrieval of verb tense parameters
local infoTense = deepCopy(export.tenseRules[tense], 'copy') or false
-- We check that this tense is indeed in table "tenseRules".
if (not infoTense) then
return '<span style="color:red">Unknown tense: ' .. tense ..'</span>'
end
-- We check that one of the two parameters of the stem is given
if (infoTense.stem == 'present' and not presentStem) then
return '<span style="color:red">presentStem parameter required</span>'
elseif (infoTense.stem == 'past' and not pastStem) then
return '<span style="color:red">pasttStem parameter required</span>'
end
-- Choice between the present stem or past stem
local stem = (infoTense.stem == 'present') and presentStem or pastStem
--────────────────────────────
-- Conjugation construction --
-- ───────────────────────────
local preverb = ''
local negPrefix = ''
-- +++++++++++++++++++++++++++
-- Lêkerin nestandard --
-- +++++++++++++++++++++++++++
-- çûn
if (stem == 'her' and pastStem == 'çû') then
if tense == 'indPresent' then
if isNegative then
stem = 'r'
else
stem = 'er'
overridePreverb.presentDi = 't'
end
elseif ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
overridePreverb.presentBi = ''
if isNegative then
stem = 'r'
else
stem = 'her'
end
end
end
-- hatin
if (stem == 'wer' and pastStem == 'hat') then
if ({impPresent=true, indFuture=true, subjPresent=true})[tense] then
if isNegative then
stem = 'ê'
else
overridePreverb.presentBi = ''
stem = 'wer'
end
elseif (tense == 'indPresent') then
stem = 'ê'
end
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Ruturns the verb type: "simpleVerb" or "preverbVerb" or "compoundVerb"
local verbStruct = export.verbStruct(isCompoundVerb, preSimpleVerb)
if isNegative then
negPrefix = infoTense:negPrefix{stem=stem,
impNegForm=impNegForm,
overrideNegPrefix=overrideNegPrefix}
if infoTense.negPreverb then
preverb = infoTense:negPreverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb}
end
else
if infoTense.preverb then
preverb = infoTense:preverb{stem=stem, verbStruct=verbStruct,
overridePreverb=overridePreverb,
accent=accent}
end
end
infoTense.conj = {}
local spacing = isCompoundVerb and ' ' or ''
local endings = infoTense:endings(stem)
-- 'rojhilatî' accent (devok) for present stem
if (infoTense.stem == 'present') then
if (accent == 'rojhilatî') then
endings = endings['rojhilatî']
else
endings = endings['std']
end
end
local preverbParticles = export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem, isTransitive
)
local isErgative = isTransitive and (infoTense.stem == 'past')
-- Creating the conjugation table for a given tense
for _, pers in ipairs(export.order) do
local ending
local conjSimbleVerb
local conjVerb
if isErgative then
ending = endings.s3
else
ending = endings[pers]
end
-- Adding space after the preverbal particle, and
-- if "addPreverbParticles='na'": remove preverb particles (ê/dê).
local preverbParticle = ''
if infoTense.preverbParticle and addPreverbParticles ~= 'na' then
preverbParticle = preverbParticles[pers] .. ' '
end
conjSimbleVerb = negPrefix .. preverb .. stem .. ending
-- Adding prefixe and suffixe
conjVerb = preSimpleVerb .. spacing .. conjSimbleVerb .. postSimpleVerb
-- Spelling correction(îy -> iy)
conjVerb = gsub(conjVerb, 'îy', 'iy')
-- Add a link / if tags='na' no links
if tags ~= 'na' then
conjVerb = link{term=conjVerb, lang=langKu}
end
-- Addition of the preverbal particle
infoTense.conj[pers] = preverbParticle .. conjVerb
end
-- Imperative
if (infoTense.name == 'impPresent') then
infoTense.conj.s1 = nil
infoTense.conj.s2 = infoTense.conj.s3
infoTense.conj.s3 = nil
infoTense.conj.p1 = nil
-- infoTense.conj.p2 = infoTense.conj.p2
infoTense.conj.p3 = nil
end
return infoTense
end
-- =============================================================================
-- END
-- =============================================================================
-- Some useful tools
-- =============================================================================
-- Returns the list of verb tenses
export.tensesList = function()
local list = {}
for _, tense in pairs(export.tenseRules) do
table.insert(list, tense.name)
end
return list
end
-- Concatenation of pronouns and conjugated verbs
-- (for a given conjugate tense in all persons of that tense)
function export.concatPronomsVerbs(pronoms, conjVerbs)
local concatTab = {}
for _, pers in ipairs(export.order) do
local pronom = pronoms[pers] or ""
local verbe = conjVerbs[pers] or ""
if pronom == "" then
concatTab[pers] = verbe
elseif verbe == "" then
concatTab[pers] = pronom
else
concatTab[pers] = pronom .. " " .. verbe
end
end
return concatTab
end
-- Remove duplicates
local function removeDuplicates(list)
local seen = {}
local result = {}
for _, value in ipairs(list) do
if not seen[value] then
seen[value] = true
table.insert(result, value)
end
end
return result
end
-- =============================================================================
-- ADDITIONAL STEM OF THE PAST AND PRESENT (pastStem2, ... and presentStem2, ...)
-- This function does nothing more than add additional parameters for verb stems
-- in the past and present tenses.
-- Conjugations for the different stems will be separated by "/"
-- =============================================================================
function export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems)
local opts = deepCopy(baseOpts or {}, 'copy')
opts.tense = tense
opts.addPreverbParticles = 'na'
presentStems = presentStems or {}
pastStems = pastStems or {}
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
if not infoTense then
return '<span style="color:red">Unknown tense: ' .. tostring(tense) ..'</span>'
end
local stems = (infoTense.stem == 'present') and presentStems or pastStems
-- For each verb stem, its conjugation table is calculated and stored in conjTabs.
local conjTabs = {}
for i = 1, #stems do
local stem = stems[i]
if stem then
if (infoTense.stem == 'past') then
opts.pastStem = stem
elseif (infoTense.stem == 'present') then
opts.presentStem = stem
-- For the recognition of irregular verbs based on the past-stem part
-- see: "çûn" û "hatin"
opts.pastStem = pastStems[1]
end
local result = export.conjugate(opts)
if result and result.conj then
table.insert(conjTabs, result.conj)
end
end
end
-- We concatenate each row of the conjugation tables.
local preverbParticles = deepCopy(export.getPreverbParticles(
infoTense.preverbParticle,
infoTense.stem,
opts.isTransitive
), 'copy')
local concatConjTabs = {}
for _, pers in ipairs(export.order) do
local frag = {}
for i = 1, #conjTabs do
local val = conjTabs[i][pers]
if val then
table.insert(frag, tostring(val))
end
end
frag = removeDuplicates(frag)
if infoTense.preverbParticle then
concatConjTabs[pers] = preverbParticles[pers] .. ' '
.. table.concat(frag, ' — ')
else
concatConjTabs[pers] = table.concat(frag, ' — ')
end
end
infoTense.conj = concatConjTabs
return infoTense
end
-- ====================================================================================
-- VERB CONJUGATION IN ALL TENSES WITH OR WITHOUT PRONOUNS
-- ====================================================================================
function export.conjugateAllTenses(baseOpts, presentStems, pastStems, negation, concatPrs)
-- "concatPrs=false" table without pronouns
local opts = deepCopy(baseOpts or {}, 'copy')
if negation == 'negative' then
opts.isNegative = true
end
presentStems = presentStems or {}
pastStems = pastStems or {}
-- Concatenation of pronouns and conjugated verbs
local concatPronomsVerbs = export.concatPronomsVerbs
local tensesList = export.tensesList()
-- Conjugation in all tenses
local conjTab = {}
for _, tense in ipairs(tensesList) do
-- Conjugations without the pronouns
local conjData = deepCopy(
export.conjugateMultiStem(opts, tense, presentStems, pastStems),
'copy'
)
-- We concatenate the pronouns and the verbs if "concatPrs" is different of "false"
-- No pronouns for the imperative mood
if tense ~= 'impPresent' and concatPrs ~= false then
local infoTense = deepCopy(export.tenseRules[tense], 'copy')
local pronoms = deepCopy(
export.conjPronouns(infoTense.stem, infoTense.mode, opts.isTransitive)
)
conjData.conj = concatPronomsVerbs(pronoms, conjData.conj)
end
conjTab[tense] = conjData
end
return conjTab
end
-- ====================================================================================
-- Allows you to obtain a given conjugation from a model.
-- Ex. {{#invoke:ku-tewandin|tew|dem=indPresent|kes=s1}}
-- See {{ku-tewîn-lk-niha}}
-- ====================================================================================
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isNegative = frame.args['neyînî'] or false,
isTransitive = args['form'],
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = args['lînk'] or 'erê',
accent = args['devok'] or 'std',
}
local tense = frame.args['dem'] or nil
local pers = frame.args['kes'] or nil
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
-- A few checks
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
if (baseOpts.isNegative == 'erê') then
baseOpts.isNegative = true
end
local tabConj = export.conjugateMultiStem(baseOpts, tense, presentStems, pastStems).conj
return tabConj[pers]
end
-- ====================================================================================
-- GET COMMMA SEPARED FORMS
-- Bnr. [[MediaWiki:Gadget-QQ.js]]
-- Ex. {{#invoke:ku-tewandin|get_comma_separated_forms|niha=kev|borî=ket}}
-- ====================================================================================
function export.get_comma_separated_forms(frame)
local opts = {
presentStem = frame.args['niha'],
pastStem = frame.args['borî'],
isTransitive = false,
isNegative = false,
isCompoundVerb = frame['valahî'] or false,
preSimpleVerb = frame['pêşgir'] or '',
postSimpleVerb = frame['paşgir'] or '',
-- overridePreverb:
presentBi = frame['nihaBi'] or nil,
presentDi = frame['nihaDi'] or nil,
pastBi = frame['borîBi'] or nil,
pastDi = frame['borîDi'] or nil,
sameBi = frame['bi'] or nil,
sameDi = frame['di'] or nil,
-- overrideNegPrefix:
presentNa = frame['na'] or nil,
presentNe = frame['nihaNe'] or nil,
pastNe = frame['borîNe'] or nil,
sameNe = frame['ne'] or nil,
impMe = frame['me'] or nil,
impNegForm = 1,
tags = 'na', -- Remove links/tags
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local function concateList(tenseList)
local concatList = {}
for _, pers in ipairs({"s1", "s2", "s3", "p1"}) do
local tense = tenseList[pers]
table.insert(concatList, tense)
end
return table.concat(concatList, ",")
end
local tenseList = {'indPresent','indPreterite','indImperfect',
'indPluperfect','indPerfect','indNwPluperfect',
'indFuture','indFuturePerfect',
'subjImperfect','subjPluperfect'
}
local concatAllTense = {}
for i = 1, #tenseList do
local tense = tenseList[i]
if export.tenseRules[tense] then
opts.tense = tense
local conj = shallowCopy(export.conjugate(opts).conj)
local concatTense = concateList(conj)
table.insert(concatAllTense, concatTense)
end
end
return table.concat(concatAllTense, ",")
end
return export
1q29dc6lte916kee86l6hfn43jg1mc2
Modul:ku-tewandin/tabloGotar
828
1357097
6237717
6237500
2026-06-15T02:11:42Z
Ghybu
1393
6237717
Scribunto
text/plain
-- ====================================================================================
-- Modula tabloya gotaran, bikaranîn: {{ku-tewîn-lk}}
-- Ji bo tabloya mezin, bnr. [[Modul:ku-tewandin/tablo]]
-- Ji bo stîla vê tabloyê, bnr. {{ku-tewîn-nav/style.css}}
-- ====================================================================================
local export = {}
local conj = require('Modul:ku-tewandin')
function export.tew(frame)
local args = frame:getParent().args
local baseOpts = {
isTransitive = args['form'],
isNegative = false,
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or nil,
postSimpleVerb = args['paşgir'] or nil,
accent = args['devok'] or 'std',
impNegForm = 1,
-- overridePreverb:
presentBi = args['nihaBi'] or nil,
presentDi = args['nihaDi'] or nil,
pastBi = args['borîBi'] or nil,
pastDi = args['borîDi'] or nil,
sameBi = args['bi'] or nil,
sameDi = args['di'] or nil,
-- overrideNegPrefix:
presentNa = args['na'] or nil,
presentNe = args['nihaNe'] or nil,
pastNe = args['borîNe'] or nil,
sameNe = args['ne'] or nil,
impMe = args['me'] or nil,
-- tags = 'erê',
-- addPreverbParticles = 'erê'
}
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
if (baseOpts.isTransitive == 'gerguhêz') then
baseOpts.isTransitive = true
elseif (baseOpts.isTransitive == 'negerguhêz') then
baseOpts.isTransitive = false
else
return '<span style="color:red">form = gerguhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
-- Retrieving conjugation tables for different tenses
local indPresent = conj.conjugateMultiStem(baseOpts, 'indPresent', presentStems, pastStems).conj
local impPresent = conj.conjugateMultiStem(baseOpts, 'impPresent', presentStems, pastStems).conj
local indPreterite = conj.conjugateMultiStem(baseOpts, 'indPreterite', presentStems, pastStems).conj
-- Past pronouns for preterite tense
local prtPronouns = conj.conjPronouns('past', 'indicative', baseOpts.isTransitive)
-- =========================================================================
-- TABLE
-- =========================================================================
-- Construction of the verbal stems for the table title ("rehNiha" and "rehBori")
local verb = args[1] or mw.title.getCurrentTitle().subpageText
local transitivity = args['form']
local preSimpleVerb = args['pêşgir'] or ''
local postSimpleVerb = args['paşgir'] or ''
local sameConjAs = args['wekî'] or nil
local prsStemsFormat = {}
for _, stem in ipairs(presentStems) do
if stem then prsStemsFormat[#prsStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local pstStemsFormat = {}
for _, stem in ipairs(pastStems) do
if stem then pstStemsFormat[#pstStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local prsStems = table.concat(prsStemsFormat, ' / ') .. postSimpleVerb
local pstStems = table.concat(pstStemsFormat, ' / ') .. postSimpleVerb
-- Formata "Raweya pêşkerî" (RP.)
local indTitle = '<span style="cursor:help;" title="Raweya pêşkerî">'
.. '<span style="border-bottom: 1px dotted #555555; ">RP.</span>'
.. '</span>'
local function nobold(str)
return '<span style="font-weight:normal;"> '.. str .. '</span>'
end
-- Preloads [[Şablon:ku-tewandin/preload]]
local function preloadUrl(title, preload)
local params = {
args['form'],
args['niha'],
args['niha2'] or nil,
args['niha3'] or nil,
args['borî'],
args['borî2'] or nil,
args['pêşgir'] or nil,
args['valahî'] or nil,
args['paşgir'] or nil
}
local query = {
action = 'edit',
preload = preload,
['preloadparams'] = params
}
local url = mw.uri.fullUrl(title, query)
url = '<span class="plainlinks">['
.. tostring(url)
.. ' <span style="color:#9f3526">'.. title .. '</span>'
.. ']</span>'
return url
end
-- Formên din
local otherConjForms
if (mw.title.new(verb, 'Tewandin').exists == true) then
otherConjForms = '[['.. 'Tewandin:'.. verb ..']]'
elseif sameConjAs then
otherConjForms = 'wekî [['.. 'Tewandin:' .. sameConjAs ..']]'
else
otherConjForms = preloadUrl('Tewandin:' .. verb, 'Şablon:ku-tewandin/preload')
end
return
'{| class="wikitable tablo-flip tewandin-tablo mw-collapsible"'
.. '\n! colspan="3" class="row-flip tewandin-header" |'
.. verb .. ' ' .. nobold('('.. transitivity .. '</span>)')
.. '\n|-'
.. '\n! colspan="3" class="tewandin-header3" align="center" style="font-size:85%;" |'
.. nobold('Rehê dema niha:') .. ' ' .. prsStems
.. '\n|-'
.. '\n! rowspan="5" |' .. indTitle .. '<br>Niha'
.. '\n|-'
.. '\n| width="60" |ez'
.. '\n| width="100" |' .. indPresent.s1
.. '\n|-'
.. '\n| tu'
.. '\n|' .. indPresent.s2
.. '\n|-'
.. '\n| ew'
.. '\n|' .. indPresent.s3
.. '\n|-'
.. '\n| em, hûn, ew'
.. '\n| ' .. indPresent.p1
.. '\n|-'
.. '\n! rowspan="2" | Fermanî'
.. '\n| width="60" | <small>Yekjimar</small>'
.. '\n| width="100" |' .. impPresent.s2
.. '\n|-'
.. '\n| width="60" | <small>Pirjimar</small>'
.. '\n| width="100" |' .. impPresent.p2
.. '\n|-'
.. '\n! colspan="3" class="tewandin-header3" align="center" style="font-size:85%;" |'
.. nobold('Rehê dema borî:') .. ' ' .. pstStems
.. '\n|-'
.. '\n! rowspan="5" |'.. indTitle ..'<br>Boriya<br>sade'
.. '\n|-'
.. '\n|' .. prtPronouns.s1
.. '\n|' .. indPreterite.s1
.. '\n|-'
.. '\n|' .. prtPronouns.s2
.. '\n|' .. indPreterite.s2
.. '\n|-'
.. '\n|' .. prtPronouns.s3
.. '\n|' .. indPreterite.s3
.. '\n|-'
.. '\n|' .. prtPronouns.p1 .. ', ' .. prtPronouns.p2 .. ', ' .. prtPronouns.p3
.. '\n|' .. indPreterite.p1
.. '\n|-'
.. '\n| colspan="3" style="text-align:center; background-color:#transparent;" |'
.. 'Formên din: [[Wêne:1rightarrow.png|15px|link=]]' .. otherConjForms
.. '\n|}'
end
return export
4ptxvqgr48ir7kftb0zboy4cghp5yjq
Şablon:ku-dem-lîste
10
1357125
6237730
6236011
2026-06-15T06:38:37Z
Ghybu
1393
6237730
wikitext
text/x-wiki
{| class="wikitable mw-collapsible <includeonly>mw-collapsed</includeonly>" style="background-color:white;"
|-
! colspan="6" | Lîsteya nav û şablonên lêkerên kurmancî{{pad|0.3em}}<includeonly><small>{{nobold|1=[[[Şablon:ku-dem-lîste|biguhêre]]]}}</small>{{pad|0.3em}}</includeonly>
|-
! style="background-color:#f2f2f2;" | Rawe
! style="background-color:#f2f2f2;" | Dem
! style="background-color:#f2f2f2;" | Bi îngilîzî
! style="background-color:#f2f2f2;" | Mînak {{nobold|1=([[ketin]])}}
! style="background-color:#f2f2f2;" | ≅
! style="background-color:#f2f2f2;" | Şablon
|-
| style="background-color:#FFCC99" | ''Imp.''
| id="imperative" | Fermanî
| ''Imperative'' || [[bikeve]] || || {{ş|ku-fermanî}}
|-
| rowspan="6" style="background-color:#FFDBA8" | ''Ind.''
| id="indPresent" | Dema niha
| ''Present'' || ez [[dikevim]] || || {{ş|ku-dema-niha}}
|-
| id="indPreterite" | Raboriya sade<br>Dema boriya têdeyî
| ''Simple past'' || ez [[ketim]] || || {{ş|ku-raboriya-sade}}
|-
| id="indImperfect" | Raboriya berdest<br>Çîrokiya dema niha
| ''Imperfect'' || ez [[diketim]] || || {{ş|ku-raboriya-berdest}}
|-
| id="indPluperfect" | Raboriya dûr<br>Çîrokiya boriya têdeyî
| ''Pluperfect'' || ez [[ketibûm]]|| || {{ş|ku-raboriya-dûr}}
|-
| id="indFuture" | Dema bê
| ''Future'' || ez ê [[bikevim]] || A || {{ş|ku-dema-bê}}
|-
| id="indFuturePrefect" | Dathatiya pêş
| ''Future perfect'' || ez ê [[ketibim]] || B || {{ş|ku-dahatiya-pêş}}
|-
| rowspan="2" style="background-color:#FFEBB8" | ''Ind.<br/>(Infer.)''
| id="inferPerfect" | Raboriya dûdar<br>Dema boriya dûdar
| ''Perfect'' || ez [[ketime]] || || {{ş|ku-raboriya-dûdar}}
|-
| id="inferPluperfect" | Çîrokiya boriya dûdar
| ''Non-witnessed pluperfect'' || ez [[ketibûme]] || || {{ş|ku-çîrokiya-boriya-dûdar}}
|-
| rowspan="4" style="background-color:#FFF6CC" | ''Subj.''
| Dema nihaya xwestekî<br>Nihaya bilaniyê || ''Present subjunctive'' || (bila) ez [[bikevim]] || A ||
|-
| id="subjPreterite" | Dema boriya xwestekî
| ''Preterite subjunctive'' || (bila) ez [[ketibim]] || B ||
|-
| id="subjImperfect" | Raboriya bilaniyê
| ''Imperfect subjunctive'' || (bila) ez [[biketama]] || C ||
|-
| id="subjPluperfect" | Raboriya dûr a bilaniyê
| ''Pluperfect subjunctive'' || (bila) ez [[ketibûma]] || D ||
|-
| rowspan="2" style="background-color:#FFF9E0" | ''Cond.''
| id="condPresent" | Çîrokiya dema nihaya mercî
| ''Present conditional'' || ez ê [[biketama]] || C || {{ş|ku-merciya-borî-I}}
|-
| id="condPreterite" | Dema boriya mercî
| ''Preterite conditional'' || ez ê [[ketibûma]] || D || {{ş|ku-merciya-borî-II}}
|-
| colspan="6" style="font-size:small; background-color:#f2f2f2;" |
{| style="background-color:transparent;"
|-
| valign="top" |
* '''''Imp.''' (Imperative)'': Raweya fermanî
* '''''Ind.''' (Indicative)'': Raweya pêşkerî (daxuyanî)
* '''''Infer.''' ({{w|inferential mood|ziman=en}})'': Moda/raweya neşahidî
| valign="top" |
* '''''Subj.''' (Subjunctive)'': Raweya xwestekî (bilanî, daxwazî)
* '''''Cond.''' (Conditional)'': Raweya mercî (hekînî)
|-
| colspan="6" |
* '''<big>≅</big>''' Ev form tenê bi lêzêdekirina [[pirtik]]an (ê, dê, bila) ji hev cuda dibin. Tewandinên lêkeran wekhev in.
|}
|}<noinclude>
{{belgekirin}}
</noinclude>
j7phuqvbz7yhasjp1vgr0807jokwkjh
Modul:ku-tewandin/tabloErgatîv
828
1357312
6237719
6237318
2026-06-15T02:26:14Z
Ghybu
1393
6237719
Scribunto
text/plain
-- [[Wîkîferheng:ceribandin]]
-- [[Template:ku-tewandin/ceribandin]]
-- [[Template:ku-tewandin/ceribandin/style.css]]
local conj = require('Modul:ku-tewandin')
local export = {}
function export.tablo(frame)
local args = frame:getParent().args
local baseOpts = {
isTransitive = false,
isCompoundVerb = args['valahî'] or false,
preSimpleVerb = args['pêşgir'] or '',
postSimpleVerb = args['paşgir'] or '',
overrideBi = args['bi'] or nil,
overrideDi = args['di'] or nil,
overrideNa = args['na'] or nil,
overrideNe = args['ne'] or nil,
impNegForm = nil,
addPreverbParticles = 'na' -- Remove preverb particles (ê/dê)
}
local presentStems = {args['niha'], args['niha2'], args['niha3']}
local pastStems = {args['borî'], args['borî2'], args['borî3']}
local transitivity = args['form']
if (transitivity ~= 'gerguhêz' and transitivity ~= 'negerguhêz') then
return '<span style="color:red">form = gerghuhêz / negerguhêz</span>'
end
if (baseOpts.isCompoundVerb == 'erê') then
baseOpts.isCompoundVerb = true
else
baseOpts.isCompoundVerb = false
end
-- Conjugation table in all tenses
local concatPrs = false
local conjTab = conj.conjugateAllTenses(baseOpts, presentStems, pastStems, 'positive', concatPrs)
-- Negatives conjugations table
local negConjTab = conj.conjugateAllTenses(baseOpts, presentStems, pastStems, 'negative', concatPrs)
-- Construction of conjugation table whose dimensions change depending on
-- whether it is a transitive verb or not; and whether there is a preverbParticle (yes or no).
-- First, we create the table header, then the body (content).
local function tenseTableHeader(tense)
local tabHeader = function(col)
local header = '\n! id="' .. conjTab[tense].name .. '"'
.. 'class="' .. conjTab[tense].stem .. '-stem tense-table-title" colspan="'.. col .. '" |'
.. conjTab[tense].nameKu
.. '- <small><i>-{'.. conjTab[tense].nameEn ..'}-</i></small>'
.. '\n|-'
return header
end
local preverbParticle = ''
local tabH = tabHeader(4)
if conjTab[tense].preverbParticle == "ê" then
tabH = tabHeader(5)
preverbParticle = '\n! class="agent-title" | '
end
local tenseHeader = tabHeader(2)
.. '\n! class="negative" | Erênî'
..'\n! class="positive" | Neyînî'
.. '\n|-'
if (conjTab[tense].stem == "past" and transitivity == "gerguhêz") then
tenseHeader = tabH
.. '\n! class="agent-title" | Biker <span class="toggle-width">zêde <span class="arrow">›</span></span>'
.. preverbParticle
.. '\n! class="object-title" | Berkar'
.. '\n! class="negative" | Erênî'
.. '\n! class="positive" | Neyînî'
.. '\n|-'
end
return tenseHeader
end
local function tenseTableBody(tense, pers)
local preverbParticles = conj.getPreverbParticles(conjTab[tense].preverbParticle,
conjTab[tense].stem, false)
local bila = ''
if conjTab[tense].mode == "subjunctive" then
bila = '<span style="color:gray">(bila) </span>'
end
local preverbParticle = ''
if conjTab[tense].preverbParticle == "ê" then
preverbParticle = '\n| class="particle" | (y)ê/dê'
end
local body = '\n|' .. bila .. conj.pronouns[pers] .. ' ' .. preverbParticles[pers] .. ' ' .. conjTab[tense].conj[pers]
.. '\n|' .. bila .. conj.pronouns[pers] .. ' ' .. preverbParticles[pers] .. ' ' .. negConjTab[tense].conj[pers]
.. '\n|-'
if (conjTab[tense].stem == "past" and transitivity == "gerguhêz") then
body = '\n| class="agent" |' .. bila .. conj.agents[pers]
.. preverbParticle
.. '\n| class="object" |' .. conj.pronouns[pers]
.. '\n|' .. conjTab[tense].conj[pers]
.. '\n|' .. negConjTab[tense].conj[pers]
.. '\n|-'
end
return body
end
-- Construction of the conjugation table for a given tense: the header
-- and the body are combined.
local function conjugateTable(tense)
local tenseBody = ''
local tenseHeader = tenseTableHeader(tense)
for _, pers in ipairs(conj.order) do
tenseBody = tenseBody .. tenseTableBody(tense, pers)
end
local tab = '\n{| cellpadding="2" class="tense-table"'
.. '\n|-'
.. tenseHeader
.. tenseBody
.. '\n|}'
return tab
end
--Retrieving some parameters for creating the main table header
local verb = args[1]
local preSimpleVerb = args['pêşgir'] or ''
local postSimpleVerb = args['paşgir'] or ''
-- Cureyê lêkerê
local verbStruc = conj.verbStruct(baseOpts.isCompoundVerb, baseOpts.preSimpleVerb)
if (verbStruc == 'preverbVerb') then
verbStruc = 'pêkhatî'
elseif (verbStruc == 'compoundVerb') then
verbStruc = 'hevedudanî'
else
verbStruc = 'xwerû'
end
local prsStemsFormat = {}
for _, stem in ipairs(presentStems) do
if stem then prsStemsFormat[#prsStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local pstStemsFormat = {}
for _, stem in ipairs(pastStems) do
if stem then pstStemsFormat[#pstStemsFormat+1] = preSimpleVerb .. '-' .. stem ..'-' end
end
local prsStems = table.concat(prsStemsFormat, ' / ') .. postSimpleVerb
local pstStems = table.concat(pstStemsFormat, ' / ') .. postSimpleVerb
return
'{| align="center" class="conj-table"'
.. '\n|-'
.. '\n| colspan="8" class="title" | Tewandina lêkera [[' .. verb .. ']]<br><span style="font-weight:normal;">(' .. verbStruc .. ', ' .. transitivity .. ')</span>'
.. '\n|-'
.. '\n! colspan="2" class="present-stem" | Rehê dema niha'
.. '\n! colspan="6" style="font-weight:normal; text-align:center; border-bottom:dotted 1px grey;" | ' .. prsStems
.. '\n|-'
.. '\n! colspan="2" class="past-stem" | Rehê dema borî'
.. '\n! colspan="6" style="font-weight:normal; text-align:center;" | ' .. pstStems
.. '\n|-'
.. '\n|'
.. '\n|-'
.. '\n| colspan="8" id="imp" class="mood" | Raweya fermanî - <small><i>Imperative</i></small>'
.. '\n|-'
.. '\n| colspan="8" valign="top" | '
.. '\n{| cellpadding="2" class="tense-table"'
.. '\n|-'
.. '\n! class="negative" | Erênî'
.. '\n! class="positive" | Neyînî'
.. '\n|-'
.. '\n| <span style="color:gray">(tû)</span> ' .. conjTab.impPresent.conj.s2
.. '\n| <span style="color:gray">(tû)</span> ' .. negConjTab.impPresent.conj.s2
.. '\n|-'
.. '\n| <span style="color:gray">(hûn)</span> ' .. conjTab.impPresent.conj.p2
.. '\n| <span style="color:gray">(hûn)</span> ' .. negConjTab.impPresent.conj.p2
..'\n|}'
.. '\n|-'
.. '\n| colspan="8" id="ind" class="mood" | Raweya pêşkerî - <small><i>Indicative</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPreterite')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indImperfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPluperfect')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indFuture')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indFuturePerfect')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indPerfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('indNwPluperfect')
.. '\n|-'
.. '\n| colspan="8" id="subj" class="mood" | Raweya xwestekî - <small><i>Subjunctive</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPreterite')
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjImperfect')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('subjPluperfect')
.. '\n|-'
.. '\n| colspan="8" id="cond" class="mood" | Raweya mercî - <small><i>Conditional</i></small>'
.. '\n|-'
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('condPresent')
.. '\n| colspan="4" valign="top" | ' .. conjugateTable('condPreterite')
.. '\n|}'
end
return export
e0386ho5slna6xxtlb00g0aul5sozjk