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=&#91;[[Şablon:ku-dem-lîste|biguhêre]]&#93;}}</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