Wîkîferheng
kuwiktionary
https://ku.wiktionary.org/wiki/Destp%C3%AAk
MediaWiki 1.47.0-wmf.14
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
kurdî
0
3096
6329033
6324401
2026-08-11T11:52:56Z
Balyozbot
7867
sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329033
wikitext
text/x-wiki
{{bnr-h|kurdi|kürdi|Kurdi|Kurdî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|k(h)urdî}}
* {{deng|ku|LL-Q36163_(kmr)-Key Mîrza-kurdî.wav|dever=Wan}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Map of Kurds demography.png|thumb|250px|Deverên ku '''kurdî''' lê zimanê serekî ye.]]
{{wp}}
{{navdêr|ku|z=m}}
# {{f|ku|ziman}} [[ziman|Zimanek]] [[hindo-ewropî]] yê ji babika [[zimanên îranî]]. [[ziman|Zimanê]] [[kurd]]an, [[ziman]]ê [[kurd]] pê diaxivin.
#* {{jêder-pirtûk|ku|jêgirtin=Hatiye gotin ku serrista fermanrewayên soran mirovekî bi "Kelos" navdar bûye. Kelos di '''kurdiyê''' de tê wateya kesê ku diranên wî yên pêşîn tunene.|nivîskar=بابا مردوخ روحانى|wergêr=M. Reşît Irgat, M. İsmet Kılıçaslan|sernav=Dîroka Navdarên Kurd (Mîrek û Xanedan)|Weşanxane=Nûbihar|sal=2020|rûpel=442|isbn=9786059413923, 6059413927}}
#* {{jêder|ku|jêgirtin=Belê Gulavêjê gotiye: "bi zimanî kurdî Botan". Gelo ji gotina "kurdiya Botan" mexsed çi ye? Bê şik mexsed '''kurdiya''' ko di cihê Botan de pê tête axaftin e.|Kovara ''{{w|Ronahî (kovar)|Ronahî}}'', 1942}}
#* {{jêder-kovar|ku|jêgirtin=Min xwest gotara xwe bi '''kurdî''' û bi zaravê ya ku ez bi rojane bikartînim pêşkeş bikim. Heman demî gelek hizrên min yên wekê ku yên '''kurdî''' nizanin biaxivin an jî bi '''kurdiyekê''' bi bandor û piştgiriya tirkî ve diaxivin hebûn.|kovar={{w|Bîrnebûn}}|hejmar=72|sal=2018|nivîskar=Haci Akman|sernav=Kurdên Anatoliya Navîn: Parastina nasnameya kurd û asimîlasyona wê|url=https://birnebun.eu/kurden-anatoliya-navin-parastina-nasnameya-kurd-u-asimilasyona-we/}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کوردی}}
==== Jê ====
{{kol3|ku|cure=Jê
|kurdî kirin<q:lêker>
|kurdîkirin<q:navdêr>
|kurdîkirî<q:rengdêr>
|kurdîaxêv
|kurdîaxêvî
|kurdîaxiv
|kurdîaxivî
|kurdîpeyiv
|kurdîpeyivî
|kurdîzar
|kurdîzarî
|kurdîziman
|kurdayetî
|kurddost
|kurddostî
|kurdewar
|kurdewarî
|Kurdistan
|kurdistanî
|kurdînî
|kurdîtî
|kurdperwer
|kurdperwerî
}}
==== Etîmolojî ====
Ji {{paş|ku|kurd|-î}}.
==== Binêre herwiha ====
{{kol3|ku
| kurmancî
| soranî
| zazakî
| hewramî
| {{g|ku|feylî}}, {{g|ku|kelhurî}}
| lekî
| lûrî
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{g|ckb|کوردی|tr=kurdî}}
* {{Z|zza}}: {{g|zza|Kurdkî}}, {{g|zza|Kirdaskî}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kurdisch|nt}}
* {{Z|am}}: {{W-|am|ኩርድኛ}}
* {{Z|ast}}: {{W+|ast|curdu|n}}
* {{Z|az}}:
*: Kirîlî: {{W-|az|күрдҹә}}
*: {{Z|az}}: {{W-|az|کوردجه}}
*: Latînî: {{W+|az|kürdcə}}
* {{Z|eu}}: {{W+|eu|kurduera}}
* {{Z|be}}: {{W-|be|ку́рдская|m}}
* {{Z|bg}}: {{W-|bg|кю́рдски}}
* {{Z|cs}}: {{W-|cs|kurdština|m}}
* {{Z|chr}}: {{W-|chr|ᎫᎸᏗ}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|庫爾德語|tr=kù'ěrdéyǔ}}
* {{Z|da}}: {{W-|da|kurdisk|g}}
* {{Z|id}}: {{W-|id|Kurdi}}
* {{Z|ar}}: {{W+|ar|كُرْدِيَّة|m}}
* {{Z|hy}}: {{W+|hy|քրդերեն}}
* {{Z|et}}: {{W-|et|Kurdi}}
* {{Z|fa}}: {{W+|fa|کردی|tr=kordi}}
* {{Z|fi}}: {{W+|fi|kurdi}}, {{W-|fi|[[kurdin]] [[kieli]]}}
* {{Z|fr}}: {{W+|fr|kurde|n}}
* Gagauz:
*: Kirîlî: {{W-|gag|кӱрдче}}
*: Latînî: {{W-|gag|kürdçe}}
* {{Z|fy}}: {{W-|fy|Koerdysk}}
* {{Z|ka}}: {{W-|ka|ქურთული}}
* {{Z|hi}}: {{W-|hi|कुर्दी|m}}
* {{Z|nl}}: {{W+|nl|Koerdisch|nt}}
* {{Z|he}}: {{W-|he|כורדית|m|tr=kurdít}}
* {{Z|en}}: {{W+|en|Kurdish}}
* {{Z|ga}}: {{W-|ga|Coirdis|m}}
* {{Z|it}}: {{W+|it|curdo|n}}
* {{Z|is}}: {{W+|is|kúrdíska|m}}
* {{Z|ja}}: {{W+|ja|クルド語|tr=クルドご, kurudogo}}
* {{Z|kl}}: {{W-|kl|kurdiskisut}}
* {{Z|ca}}: {{W+|ca|kurd|n}}
* {{Z|ky}}: {{W-|ky|курд}}
* {{Z|ko}}: {{W+|ko|쿠르드어}}
* {{Z|lv}}: {{W-|lv|kurdu valoda|m}}
* {{Z|lt}}: {{W-|lt|kurdiškai}}
* {{Z|mk}}: {{W-|mk|курдски|n}}
* {{Z|mr}}: {{W-|mr|कुर्दी|m}}
* {{Z|hu}}: {{W+|hu|kurd}}
* {{Z|mdf}}: {{W-|mdf|курдонь}}
* {{Z|mn}}:
*: Kirîlî: {{W-|mn|[[курд]] [[хэл]]}}
* {{Z|nv}}: {{W-|nv|Kʼóódii bizaad}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|kurdisk|n}}
*: {{Z|nn}}: {{W-|nn|kurdisk|n}}
* {{Z|os}}: {{W-|os|курдаг}}
* {{Z|ug}}: {{W-|ug|كۇردچە}}
* Uzbek:
*: Kirîlî: {{W-|uz|курдча}}
*: Latînî: {{W-|uz|kurdcha}}
* {{Z|pl}}: {{W+|pl|kurdyjski}}
* {{Z|pt}}: {{W+|pt|curdo|n}}
* {{Z|kk}}: {{W-|kk|күрд тілі}}, {{W-|kk|күрдше}}
* {{Z|ro}}: {{W+|ro|kurdă|m}}
* {{Z|ru}}: {{W+|ru|ку́рдский|n}}, {{W+|ru|ку́рдский язы́к}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|ку̏рдскӣ|n}}
*: Latînî: {{W+|sh|kȕrdskī|n}}
* {{Z|sk}}: {{W+|sk|kurdčina|m}}
* {{Z|sl}}: {{W+|sl|kurdščina|m}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|kurdšćina|m}}
*: {{Z|hsb}}: {{W-|hsb|kurdšćina|m}}
* {{Z|es}}: {{W+|es|kurdo|n}}, {{W+|es|curdo|n}}
* {{Z|sv}}: {{W+|sv|kurdiska}}
* {{Z|tg}}: {{W+|tg|курдӣ}}
* {{Z|tr}}: {{W+|tr|Kürtçe}}
* Turkmen:
*: Kirîlî: {{W-|tk|күртче}}
*: Latînî: {{W-|tk|kürtçe}}
* {{Z|ur}}: {{W-|ur|کردی|m|tr=kurdī}}
* {{Z|uk}}: {{W+|uk|ку́рдська|m}}
* {{Z|vi}}: {{W-|vi|tiếng Kurd}}
* {{Z|wa}}: {{W-|wa|Kurdi}}
* {{Z|yi}}: {{W-|yi|קורדיש|nt}}
* {{Z|el}}: {{W+|el|κουρδικά}}
{{werger-bin}}
:{{werger çavkanî|en|Kurdish|beş=Ev qismê Wergerê|oldid=75152879}}
=== Rengdêr ===
{{ku-tewîn-rd|kurdî}}
{{rengdêr|ku}}
# Tiştên bi [[ziman]]ê [[kurd]]an.
#: {{mk|ku|Stranên '''kurdî''', rojnameyên '''kurdî'''.}}
#* {{jêder-websîte|ku|jêgirtin=Xezeteyên '''Kurdî''' yên li Stenbolê derdiketin bên îstisnakirin, xezeteyekî millî û wetenî yê ku yekemîn car li Kurdistanê hatîye neşirkirin, ew jî xezeteya Zarê Kirmancî ye, ku min xwendîye.|nivîskar=Seîd Veroj|sernav=Mesûd Fanî (Dr. Mesûd Fanî Bîlgîlî)|websîte=Rûpela nû|url=https://www.rupelanu.com/seid-veroj-mesud-fani-dr-mesud-fani-bilgili-17258h.htm|tarîx=2021-05-04}}
#* {{jêder-kovar|ku|jêgirtin=Lê mixabin li Qefqasya, Rûsya û Asya Navîn rewşa xwendin û nivîsandina zimanê '''Kurdî''' pir kêm e. Di vî warî de rola saziya Berbangê, kovara Nûbarê û rojnameya Jiyana Kurd gelekî girîng e. Lê diyar e ev xebat têrê nake.|sal=2021|nivîskar=Salihê Kevirbirî|url=http://books.google.com.tr/books?id=qFw3EAAAQBAJ&pg=PA50&hl=&cd=6&source=gbs_api|sernav=Hosteykî Edebiyata Kurdî: Eliyê Evdirehmanê Momîn|kovar=Nûbihar|hejmar=150|rûpel=50}}
# Tiştên [[kurd]]an.
#: {{mk|ku|Aliyê '''kurdî''' di danûstandinan de.}}
#* {{jêder-pirtûk|ku|jêgirtin=Şexsiyetên tarîxî yên '''kurdî''', bi xêra edebiyata devkî, ji dewr û dewranên xwe yên jibîrbûyî derdikevin û tên roja me û silav li civata nûjen dikin û ders, tecrube, bûyer û şîretên tarîxî vediguhêzînin civata '''kurdî''' ya îro.|nivîskar={{w|Mehmed Uzun}}|sernav={{w|Destpêka edebiyata kurdî}}|sal=1992}}
# Mîna kurdan.
#* {{bêmînak|ku}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Safî şemirand vexwar-i durdî</br>Manendê derê lisanê '''kurdî'''</br>Înaye nizam û intizamê}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kurdisch|nt}}, {{W+|de|kurdische Sprache|guman=erê}}
* {{Z|eu}}: {{W+|eu|kurduera}}
* {{Z|be}}: {{W-|be|Курдзкая|tr=Kurdzkaǎ}}
* {{Z|bg}}: {{W-|bg|Кюрдски|tr=Kǔrdski}}
* {{Z|cs}}: {{W-|cs|Kurdský}}
* {{Z|id}}: {{W-|id|Kurdi}}
* {{Z|ar}}: {{W+|ar|كردية|cuda=كُرْدِيَّة|m}}, {{W-|ar|كردي|cuda=كُرْدِيّ|n}}
* {{Z|et}}: {{W-|et|kurdi keel}}
* {{Z|fa}}: {{W+|fa|کردی|tr=kordî}}, {{W+|fa|زبان کردی}}
* {{Z|fi}}: {{W+|fi|kurdi}}, {{W-|fi|kurdin kieli}}
* {{Z|fr}}: {{W+|fr|kurde}}
* {{Z|fy}}: {{W-|fy|Koerdysk}}
* {{Z|ka}}: {{W-|fa|ქურთული|tr=kurduli}}
* {{Z|hi}}: {{W+|hi|कुर्दिश}}
* {{Z|he}}: {{W-|he|כורדית|tr=ḵurḏīṯ}}
* {{Z|en}}: {{W+|en|Kurdish}}, {{W+|en|Kurd}}
* {{Z|ga}}: {{W-|ga|Coirdis}}
* {{Z|it}}: {{W+|it|curdo}}
* {{Z|is}}: {{W-|is|Kúrdíska}}
* {{Z|ja}}: {{W-|ja|クルド|tr=Kurudo}}
* {{Z|ca}}: {{W-|ca|Kurd}}
* {{Z|ky}}: {{W-|ky|Курд|tr=Qurd}}
* {{Z|ko}}: {{W+|ko|쿠르드어|tr=Kuleudeueo}}
* {{Z|lv}}: {{W-|lv|Kurdu}}
* {{Z|lt}}: {{W-|lt|Kurdiškai}}
* {{Z|hu}}: {{W+|hu|Kurd}}
* {{Z|mdf}}: {{W-|mdf|Курдонь|tr=Kurdonʹ}}
* {{Z|no}}: {{W-|no|Kurdisk}}
* {{Z|pl}}: {{W+|pl|kurdyjski}}
* {{Z|pt}}: {{W+|pt|curdo}}
* {{Z|ro}}: {{W-|ro|Curdă}}
* {{Z|ru}}: {{W+|ru|Курдский|tr=Kurdskiĭ}}
* {{Z|sh}}: {{W+|sh|kurdski}}
* {{Z|sh}}: {{W+|sh|kurdski}}
* {{Z|sh}}: {{W+|sh|kurdski}}
* {{Z|es}}: {{W+|es|kurdo}}
* {{Z|sv}}: {{W+|sv|kurdiska}}
* {{Z|tr}}: {{W+|tr|Kürtçe}}
* {{Z|uk}}: {{W-|uk|Курдський}} (Kurdʹskiĭ)
* {{Z|wa}}: {{W-|wa|Kurdi}}
* {{Z|el}}: {{W-|el|Κουρδικά|tr=Kourdiká}}
* {{Z|zza}}: {{W-|zza|kurdkî}}, {{W-|zza|kirdaskî}},
{{werger-bin}}
avp8k6beq8rbn1i6bhajsurh6wvpbnj
kurmancî
0
3101
6329036
6310778
2026-08-11T11:53:05Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329036
wikitext
text/x-wiki
{{bnr-h|kurmanci|Kurmanci|Kurmancî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|kurmancî}}, {{IPAchar|/kʷɘɾmɑːnˈd͡ʒiː/}}
* {{deng|ku|LL-Q36368 (kur)-Mihemed Qers-kurmancî.wav|dever=Qers}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kurmancî.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Kurdish languages map.svg|thumb|280px|{{legend2|#ef6662}} '''Kurmancî''' (1) an '''kurmanciya''' jorê (2).<br>{{legend2|#c63143}} Soranî an '''kurmanciya''' jêrê (2).]]
{{wp}}
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|ziman}} [[zarava|Zaravaya]] [[kurdî]] ya serekî ku li [[Bakurê Kurdistanê]], [[Rojavayê Kurdistanê]], bakurê [[Başûrê Kurdistanê]], bakurê [[Rojhilata Kurdistanê]], li [[Xorasan]]ê û li herêmine Sovyetistana berê tê axivîn.
#: {{hevmane|ku|kurmanciya jorê|kurdiya bakur| kurdiya jorîn| behdinanî| here-were| were-here}}
#* {{jêder-pirtûk|ku|jêgirtin=Teqbîḥ nekin evan ṭifalan<br/>Ev meywe eger ne abdar e<br/>'''Kirmancî''' ye, ew qeder li kar e|nivîskar={{w|Ehmedê Xanî}}|sernav={{w|Mem û Zîn}}|sal={{w|1692}}}}
#* {{jêder-pirtûk|ku|jêgirtin=Silîvî: Awayê '''kurmanciya''' herêma Silîvan e, ku li nîvroyê rojhelat ji '''kurmanciya''' Botan-Hekar-Behdînan û li nîvro û rojava jî ji ya Beriya Mêrdînê û rojavayê Qeredaxê bi hin awayan vediqete.|nivîskar=Rojen Barnas|sernav=Sîlvan/ Silîvan / FARQÎN|sal=2013|weşandxane=Nûbihar|rûpel=189|isbn= 9786055402884, 6055402882}}
#* {{jêder-malper|ku|jêgirtin=Wî berhemên Pûşkîn, Lêrmantov, Tolstoy, Nêksarov, Şêvçenko, Gorkî, Mayakovskî û şoreşger-helbestvanê bi eslê xwe kurd Fêrîk Polatbêkov ji rûsî wergerandine '''kurmanciyê'''.|malper=www.nuhev.com|nivîskar= Şêxmûs Ozpolat|sernav=Romaneke Nîvcomayî: Min Çi Dît|dîrok=|url=https://www.nuhev.com/romaneke-nivcomayi-min-ci-dit}}
#* {{jêder-malper|ku|jêgirtin=Ergatîvî mohra '''kurmanciyê''' ye.|malper=www.nefel.com|nivîskar={{w|Newzad Hirorî}}|sernav=bêjing|dîrok=10.6.2005|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=10&RubricNr=24&ArticleNr=202}}
# {{f|ku|ziman}} [[kurdî|Kurdî]]; hemî zaravayên kurdî, bi taybetî kurmancî (1) û [[soranî]].
#* {{jêder-pirtûk|ku|jêgirtin=Van weşanên bi kurdî û osmanî, bi awayekî fireh, cih dan ziman, çand û berhemên edebiyata kurdî. Wan herdu zaravayên mezintirîn, '''kurmanciya''' jorê û '''kurmanciya''' jêrê esas girtin. Di nav van weşanan de, ya girîng, bêguman, Jîn e.|nivîskar={{w|Mehmed Uzun}}|sernav={{w|Destpêka edebiyata kurdî}}|sal=1992}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورمانجی}}
==== Formên alternatîv ====
* {{hw|ku|kirmancî}}
==== Jê ====
{{kol2|ku
| kurmancîaxiv
| kurmancîziman
| kurmanciya rojhilatî
| kurmanciya navendî
| kurmanciya rojavayî
}}
==== Etîmolojî ====
Ji {{paş|ku|kurmanc|-î}}.
==== Bide ber ====
{{kol2|ku
| soranî
| hewramî
| zazakî
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|کورمانجی}}, {{W-|ckb|کوردیی باکووری}}
* {{Z|zza}}: {{W-|zza|kurmanckî}}, {{W-|zza|kurmancî}}, {{W-|zza|kirdaskî}}, {{W-|zza|kirdasî}}, {{W-|zza|kurmancîya corêne}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kurmandschi|nt}}
* {{Z|br}}: {{W-|br|kurmandjeg}}
* {{Z|zh}}: {{W-|zh|北库尔德语}}
* {{Z|ar}}: {{W-|ar|الكِرْمانْجِيّة|m}}
* {{Z|fa}}: {{W-|fa|کرمانجی}}, {{W+|fa|کردی کرمانجی}}
* {{Z|fi}}: {{W+|fi|kurmandži}}
* {{Z|fr}}: {{W+|fr|kurmandji|n}}, {{W-|fr|kurde septentrional|n}}, {{W+|fr|kurde du Nord|n}}
* {{Z|en}}: {{W+|en|Kurmanji}}
* {{Z|ga}}: {{W-|ga|Curmainsis}}
* {{Z|it}}: {{W-|it|kurmanji}}
* {{Z|ja}}: {{W-|ja|クルマンジー}}
* {{Z|pt}}: {{W+|pt|curmânji}}
* {{Z|ru}}: {{W+|ru|курманджи}}
* {{Z|es}}: {{W-|es|kurmanyi}}
* {{Z|tr}}: {{W+|tr|Kurmanci}}, {{W-|tr|Kurmancça}}, {{W+|tr|Kurmançça}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|kurmancî}}
{{rengdêr|ku}}
# Her tiştê bi kurmancî.
#: {{mk|ku|Stranên '''kurmancî'''; çîrokên '''kurmancî'''.}}
#: {{mk|ku|Di alfabeya '''kurmancî''' ya latînî de 31 herf hene.}}
#* {{jêder|ku|jêgirtin=Binêrin li şi‘ran heçî zaniye<br>Çi terkîbekî serfê '''kurmancî''' ye|[[w:Evdirehmanê Axtepî|Evdirehmanê Axtepî]]}}
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W+|fr|kurmandji}}
{{werger-bin}}
5fankpd0r8ouda23gsuulvcdo1wconu
kû
0
3574
6329039
6310993
2026-08-11T11:53:11Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329039
wikitext
text/x-wiki
{{bnr-h|ku|kü|Ku}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/kʰuː/}}
** (''[[rojhilatî]]'') {{IPA|ku|/kʰʉː/}}
=== Hoker ===
[[Wêne:Sin_mapa.svg|thumb|250px|''kû'' anku çi [[der]]/[[cih]]]]
{{hoker|ku}}
# [[çi]] [[cih]]î, [[çi]] [[der]]ê, [[kîj]] [[cih]]î, [[kîjan]] [[der]]ê
#: ''Mala te li '''kû''' ye?
#: ''Tu diçî '''kû'''?''
#: ''Ew ji '''kû''' tê''?
#: ''Hûn ji '''kû''' ne?''
#:: Hûn xelkê kû derê ne?
#: ''Ew çû '''kû'''?''
#: ''Hûn ji '''kû''' hatin?''
#: ''Tu li '''kû''' yî?''
==== Bi alfabeyên din ====
* {{ku-ar|کوو}}
* {{ku-kr|ку}}
==== Formên alternatîv ====
* [[ku]] (3), [[kû derê]], [[kûva]], [[kûve]], [[kûde]], [[kî derê]], [[kîrê]], [[kêrê]], [[kîve]], [[kwîve]], [[kû ve]], [[kû derê]], [[kû de]], [[kî derê]], [[kur]], [[kuva]]
==== Jê ====
* [[di kû de]]
* [[di kû re]]
* [[ji kû]]
* [[li kû]]
==== Etîmolojî ====
[[hevreh|Hevreha]] soranî {{g|ckb|کوێ|tr=-}} (kwê), farisî {{g|fa|کجا}} (ko-[[cih|ca]]) û forma kevnar {{g|fa|کو}} (kû), avestayî [[𐬐𐬎𐬛𐬁]] (kudā) sanskrîtî [[कुह]] (kúha) û [[कुत्र]] (kútra), hindî [[किधर]] (kidhar), rusî [[куда́]] (kudá), sirbokroatî [[ку̀да]] / ''[[kùda]]'', ukraynî [[куди́]] (kudý), çekî ''[[kudy]]'', albanî ''[[ku]]'', latviyayî û lîtwanî ''[[kur]]'', latînî ''[[quō]]'', norwecî ''[[kvar]], [[kor]]'', danmarkî ''[[hvor]]'', swêdî ''[[var]]'', îngilîzî ''[[where]]'', almanî ''[[wo]]'' ... hemû ji {{ji|ine-pro|ku|-}} *''[[kʷu-]], *[[kʷo-]]'' (kû, li kû, çi cih?), têkilî ''[[kʷís]]'' ([[çi]]; [[kî]]).
==== Bide ber ====
* [[ku]]
* [[ko]]
==== Bi zaravayên din ====
* {{Z|ckb}}: {{g|ckb|کوێ}}
* {{Z|zza}}: [[kamca]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|waar}}
* {{Z|sq}}: {{W+|sq|ku}}
* {{Z|de}}: {{W+|de|wo}}
* {{Z|am}}: {{W-|am|የት|tr=yet}}
* {{Z|bm}}: {{W--|bm|min}}
* {{Z|bi}}: {{W--|bi|we}}
* {{Z|br}}: {{W-|br|pelecʼh}}
* {{Z|zh}}: {{W+|zh|哪儿|tr=nǎr}}, {{W+|zh|哪里|tr=nǎli}}
* {{Z|dmr}}: {{W--|dmr|ˈladanmaiˈje}}
* {{Z|da}}: {{W+|da|hvor}}
* {{Z|id}}: {{W+|id|mana}}
* {{Z|arz}}: {{W--|arz|فين|tr=fên}}
* {{Z|ar}}: {{W|ar|أين}} (eyne)
* {{Z|eo}}: {{W+|eo|kie}}
* {{Z|fa}}: {{W|fa|کجا|tr=koca}}
* {{Z|fo}}: {{W-|fo|hvar}}
* {{Z|fi}}: {{W|fi|missä}} (li kû), {{W|fi|mistä}} (ji kû), {{W|fi|mihin}} (kû), {{W|fi|minne}} (kû)
* {{Z|fr}}: {{W|fr|où}}
* {{Z|got}}: {{W--|got|𐍈𐌰𐍂|tr=ƕar}}
* {{Z|ka}}: {{W-|ka|სად|tr=sad}}
* {{Z|hi}}: {{W+|hi|कहाँ|tr=kahā̃}}
* {{Z|nl}}: {{W+|nl|waar}}
* {{Z|he}}: {{W+|he|אי}}
* {{Z|idi}}: {{W--|idi|anyo}}
* {{Z|io}}: {{W+|io|ube}}
* {{Z|en}}: {{W+|en|where}}
* {{Z|iu}}: {{W-|iu|ᓇᐅᒃ|tr=[[nauk]]}}, {{W-|iu|ᓇᒥ|tr=[[nami]]}}, {{W-|iu|ᓇᓂ|tr=[[nani]]}}
* {{Z|it}}: {{W+|it|dove}}, {{W+|it|ove}}
* {{Z|is}}: {{W+|is|hvar}}, {{W+|is|hvert}}
* {{Z|ja}}: {{W+|ja|どこ|tr=doko}}
* {{Z|ca}}: {{W+|ca|on}}
* {{Z|wni}}: {{W--|wni|hapvi}}
* {{Z|swb}}: {{W--|swb|hav̄i|tr=havi}}
* {{Z|ko}}: {{W+|ko|어디|tr=eodi}}
* {{Z|co}}: {{W+|co|duve}}, {{W+|co|induva}}
* {{Z|rcf}}: {{W--|rcf|ousa}}, {{W--|rcf|kel-koté}}
* {{Z|lkt}}: {{W--|lkt|tokiya}}
* {{Z|la}}: {{W+|la|ubi}}
* {{Z|lv}}: {{W|lv|kur}}
* {{Z|ln}}: {{W-|ln|wápi}}
* {{Z|li}}: {{W-|li|woe}}
* {{Z|lt}}: {{W|lt|kur}}
* {{Z|lb}}: {{W+|lb|wou}}
* {{Z|mt}}: {{W+|mt|fejn}}
* {{Z|moh}}: {{W--|moh|ka' nón:we}}
* {{Z|ngh}}: {{W--|ngh|kidyaxe}}
* {{Z|nb}}: {{W+|nb|hvor}}
* {{Z|nn}}: {{W+|no|kvar}}
* {{Z|oc}}: {{W+|oc|ont}}
* {{Z|oia}}: {{W--|oia|te}}, {{W--|oia|tenai}}
* {{Z|pis}}: {{W--|pis|we}}
* {{Z|pcd}}: {{W--|pcd|d’us}}, {{W--|pcd|d’us qu’}}, {{W--|pcd|adus}}, {{W--|pcd|ù}}
* {{Z|pih}}: {{W--|pih|webaut}}
* {{Z|pl}}: {{W+|pl|gdzie}}
* {{Z|pt}}: {{W+|pt|onde}}
* {{Z|kk}}: {{W+|kk|қайда|tr=qayda}}
* {{Z|ru}}: {{W+|ru|где|tr=gde}}, {{W+|ru|куда|tr=kuda}}
* {{Z|se}}: {{W--|se|gos}}
* {{Z|sh}}: {{W+|sh|gdje}}
* {{Z|so}}: {{W-|so|halka}}
* {{Z|es}}: {{W+|es|dónde}}
* {{Z|sv}}: {{W+|sv|var}}
* {{Z|shy}}: {{W--|shy|mani}}
* {{Z|zdj}}: {{W--|zdj|nɗahu}}, {{W--|zdj|nɗa}}, {{W--|zdj|nɗahupvi}}, {{W--|zdj|nɗapvi}}
* {{Z|cjs}}: {{W--|cjs|қайда}}
* {{Z|tl}}: {{W-|tl|saán}}, {{W-|tl|násaán}}
* {{Z|th}}: {{W+|th|สถานที่|tr=S̄t̄hān thī̀}}
* {{Z|crh}}: {{W--|crh|qayerde}}, {{W--|crh|qayda}}
* {{Z|tr}}: {{W|tr|nerede}} (li kû), {{W|tr|nereye}} (kû), {{W|tr|nereden}} (ji kû)
* {{Z|tpi}}: {{W|tpi|we}}
* [[valensî]]: [[aón]]
* {{Z|wa}}: {{W|wa|wiss}}
* {{Z|kjh}}: {{W--|kjh|хайда}}
* {{Z|el}}: {{W+|el|πού|tr=pú}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[gav|Gava]] [[pez]] û [[bi taybetî]] [[mih]] [[ser]]ê [[xwe]] dikine [[ber]] [[hev]] û [[li hev]] [[kom bûn|kom dibin]].
#* {{jêder-malper|ku|jêgirtin=Li germê pez ê serê xwe di ber hev ke, bi rê nare. Ew ketina '''kûyê'''.|nivîskar=Mem Xelîkan|url=http://www.mifikan.com/Cand-huner/mem-xelikan.htm|sernav=Germîya Arê Şivanan|malper=mifikan.com|sal=2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
jzeht1ct4k5kcaedqs64z62qosq5qly
hay
0
3803
6328974
6325903
2026-08-11T11:50:45Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328974
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-hay.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[aga]], [[zanîn]], [[xeber]], [[ageh]], [[agah]], [[enformasyon]]
#: {{mk|ku|'''Hay''' ji xwe hebin.|Li xwe hişyar bin. / Li xwe miqate bin.|rêz=1}}
#: {{mk|ku|'''Haya''' min jê nîne.|Ez qet nizanim. / Min qet nebihîstiye.|rêz=1}}
#* {{jêder-malper|ku|jêgirtin=Baş guh bidin min, li van der û doran gurekî pir fenek û zalim heye. Dibê '''haya''' we baş ji we hebe, rojekê neyê we nexapîne.|nivîskar={{w|Zinarê Xamo}}|sernav=Şengê û Pengê (çîrok)|url=https://zinarexamo.blogspot.com/2011/03/senge-u-penge.html|malper=zinarexamo.blogspot.com|sal=2011}}
#* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Gava ko ewan bihîstî mizgîn</br>'''Hay''' dan bi tebayî xelq û xwazgîn</br>Hindek 'ulema û hin di 'adil}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|های}}
==== Formên alternatîv ====
{{kol3|ku
| {{hw|ku|haj||Dêrsim}}
| ha
}}
==== Jê ====
{{kol3|ku|cure=Jê
|hay hebûn<q:lêker>
|hay dan<q:lêker>
|haydan<q:navdêr>
|bêhay
|bihay
|haydar
|haydarî
|lêhaybûn
}}
==== Etîmolojî ====
Bi ya Cheung, ji {{q|ku|agahî}}, lê eva jî ne yeqîn e.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Bescheid}} {{n}}, {{W|de|Information}} {{mê}}, {{W|de|Kenntnis}} {{mê}}
* {{Z|fa}}: {{W|fa|توجه}}, {{W|fa|آگاهی}}, {{W|fa|باخبری}}
* {{Z|en}}: {{W|en|aviso}}, {{W|en|attention}}
* {{Z|tr}}: {{W|tr|bal}}, {{W|tr|bilgi}}, {{W|tr|enformasyon}}, {{W|tr|malumat}}, {{W|tr|haber}}, {{W|tr|bili}}
{{werger-bin}}
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-us-hay.ogg|dever=DYA}}
=== Navdêr ===
{{navdêr|en}}
# [[ka]], [[giya]]yê [[hişk]]
#* {{bêmînak|en}}
# [[borxî]] yê [[miselis]]
#* {{bêmînak|en}}
== {{ziman|tr}} ==
==== Mane ====
# [[hey]]
== {{ziman|vi}} ==
=== Girêdek ===
{{girêdek|vi}}
# [[yan#ku|yan]], [[an#ku|an]]
#* {{bêmînak|vi}}
mts3z7sy8swggc27p5el40114ojj6i9
ajokar
0
3866
6328772
5842984
2026-08-11T00:25:04Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328772
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{bnr|ajovan}}
#* {{jêder-malper|ku|jêgirtin=Hevalê '''ajokar''' li korona moronayê ho venade û zilêm li tomofîlê (otomobîl) siwar dike.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
==== Etîmolojî ====
Ji {{qertaf|ku|ajo|-kar}}.
4j3a2t5j86lnw93icdnd3ftpoesxe9u
hebûn
0
3876
6328975
6327641
2026-08-11T11:50:47Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328975
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-hebûn.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk-tablo|form=ngh|borî=he-bû-
|niha.1y=heme |niha.2y=heyî |niha.3y=heye|niha.p=hene
|borî.1y=hebûm|borî.2y=hebûyî|borî.3y=hebû|borî.p=hebûn
|imp.y=hebe|imp.p=hebin
}}
{{lêker|ku|c=p-ngh}}
# [[xwedî|Xwediya/ê]] tiştekî bûn, [[xudan]]a/ê tiştekî bûn.
#: {{mk|ku|Wî çend bira '''hebûn'''?}}
#: {{mk|ku|Min gelek kitêb '''hene'''.}}
#* {{bêmînak|ku}}
# [[peyda|Peyda]] bûn, li [[der]]ekê [[bûn]].
#: {{mk|ku|Sê kes li wir '''hebûn'''.}}
#* {{jêder-pirtûk|ku|jêgirtin=Û şev diherike. Lê tevî şevê, tevî tariya şevê, tevî girseya ewran ku xwe dilivînin, stêr '''hene''', heyv '''heye''', ronahiya wan '''heye'''.|nivîskar={{w|Mehmet Uzun}}|sernav=Ronî mîna evînê, tarî mîna mirinê|sal=2005|rûpel=134}}
#* {{jêder-malper|ku|jêgirtin=Bikir '''hebe''' bazara kurdî ewê geştir bibe. Dibê em bikirên kurdî zêde bikin.|malper=zinarexamo.blogspot.com|nivîskar=Zinarê Xamo|sernav= Bikir hebe bazara kurdî ewê geştir bibe|sal=2023|url=https://zinarexamo.blogspot.com/2023/05/bikir-hebe-bazara-kurdi-ewe-gestir-bibe.html}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Ma bi bala hilkişêtin 'aqibet çî bit selab<br>Ehremin te'lîm-i da bû Ebyedî dest tê '''hebû'''<br>Pir bi vê te'lîm û rayê hatibû çûbû xitab}}
==== Bi alfabeyên din ====
* {{ku-ar|ههبوون}}
==== Formên alternatîv ====
* {{hw|ku|hebîn}} {{i|[[Behdînan]], bo nimûne Zaxo}}
* {{hw|ku|hebün}} / {{hw|ku|hebwîn}} {{i|Behdînan, bo nimûne Barzan û Zêbar}}
* {{hw|ku|heyîn}}
* {{hw|ku|hevûn}} {{i|bi taybetî devokên rojavayî û serhedî}}
* {{hw|ku|hewûn}} {{i|bi taybetî devokên rojavayî û serhedî}}
==== Dijmane ====
* {{g|ku|nebûn}}
* {{g|ku|tine bûn}}, {{g|ku|tune bûn}}
* {{g|ku|nîn bûn}}
==== Jê ====
{{kol2|ku
| hebûnî
| heyber
| heyberî
}}
==== Etîmolojî ====
Ji {{pêş|ku|he-|bûn}}. [[hevreh|Hevreha]] {{hv|ckb|هەبوون}}, {{hv|zza|estene}}, belûçî {{hv|fa|استن|esten}} û {{hv|fa|هستن|hesten}}, beramberî [[e]] (wek "ew e") + [[bûn]]. Lê ne hevreha almanî {{q|de|haben}} yan îngilîzî {{q|en|have}} e.
==== Werger ====
{{werger-ser|peyda bûn, mewcûd bûn, berdest bûn, sax bûn, jîndar bûn}}
* {{Z|af}}: {{W+|af|bestaan}}
* {{Z|sq}}: {{W+|sq|ekzistoj}}
* {{Z|de}}: {{W+|de|bestehen}}, {{W+|de|existieren}}
* {{Z|ast}}: {{W-|ast|esistir}}, {{W-|ast|existir}}
* {{Z|az}}: {{W-|az|var olmaq}}, {{W-|az|mövcüd olmaq}}
* {{Z|be}}: {{W-|be|існава́ць}}
* {{Z|bg}}: {{W+|bg|съществувам}}
* {{Z|cs}}: {{W+|cs|být}}, {{W+|cs|existovat}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|存在|tr=cyun4 zoi6}}
*: {{Z|cmn}}: {{W+|cmn|存在|tr=cúnzài}}
*: {{Z|nan}}: {{W+|nan|存在|tr=chûn-chāi / chûn-chǎi}}
* {{Z|da}}: {{W+|da|eksistere}}, {{W+|da|bestå}}
* {{Z|ar}}: {{W-|ar|وُجِدَ}}
* {{Z|hy}}: {{W-|hy|գոյություն ունենալ}}, {{W+|hy|լինել}}
* {{Z|eo}}: {{W+|eo|ekzisti}}
* {{Z|et}}: {{W-|et|eksisteerima}}, {{W-|et|olemas olema}}, {{W-|et|olelema}}
* {{Z|fa}}: {{W+|fa|زیستن|tr=zistan}}, {{W+|fa|وجود داشتن|tr=vojud dâštan}}, {{W+|fa|هستادن}}
* {{Z|fo}}: {{W+|fo|vera}}, {{W-|fo|vera til}}, {{W-|fo|finnast}}
* {{Z|fi}}: {{W+|fi|olla}}, {{W-|fi|olla olemassa}}
* {{Z|fr}}: {{W+|fr|exister}}
* {{Z|gl}}: {{W+|gl|existir}}
* {{Z|ka}}: {{W-|ka|არსებობა}}
* {{Z|hi}}: {{W-|hi|ज़िन्दा होना}}
* {{Z|nl}}: {{W+|nl|bestaan}}
* {{Z|io}}: {{W+|io|existar}}
* {{Z|ang}}: {{W+|ang|wesan}}, {{W-|ang|bēon}}
* {{Z|en}}: {{W+|en|exist}}, {{W-|en|there be}}
* {{Z|ia}}: {{W-|ia|exister}}
* {{Z|ga}}: {{W-|ga|bí ann}}
* {{Z|it}}: {{W+|it|esistere}}
* {{Z|ja}}: {{W-|ja|存在する|tr=そんざいする, sonzai suru}}
* {{Z|ca}}: {{W+|ca|existir}}
* {{Z|qu}}: {{W+|qu|kay}}
* {{Z|ky}}: {{W-|ky|бар болуу}}
* {{Z|ko}}: {{W+|ko|존재하다}}
* {{Z|lad}}: {{W-|lad|egzistir}}
* {{Z|la}}: {{W+|la|existō}}, {{W+|la|exsistō}}, {{W+|la|sum}}, {{W+|la|exsto}}, {{W+|la|consto}}, {{W-|la|exto}}, {{W-|la|compareo}}
* {{Z|lv}}: {{W-|lv|eksistēt}}, {{W-|lv|pastāvēt}}
* {{Z|mk}}: {{W-|mk|егзисти́ра|impf|pf}}, {{W-|mk|постои|impf}}
* {{Z|ms}}: {{W+|ms|wujud}}
* {{Z|mt}}: {{W-|mt|eżista}}
* {{Z|mi}}: {{W-|mi|tiari}}, {{W-|mi|tiari}}
* {{Z|hu}}: {{W+|hu|van}}, {{W+|hu|létezik}}, {{W+|hu|él}}
* {{Z|egy}}: {{W-|egy|wnn}}
* {{Z|nci}}: {{W-|nci|oncah}}, {{W-|nci|cah}}
* {{Z|no}}: {{W+|no|eksistere}}, {{W+|no|bestå}}
* {{Z|oc}}: {{W+|oc|existir}}
* {{Z|uz}}: {{W-|uz|mavjud boʻlmoq}}, {{W-|uz|bor boʻlmoq}}
* {{Z|pl}}: {{W+|pl|istnieć}}, {{W+|pl|egzystować}}
* {{Z|pt}}: {{W+|pt|existir}}
* {{Z|kk}}: {{W-|kk|бар болу}}
* {{Z|ro}}: {{W+|ro|exista}}
* {{Z|ru}}: {{W-|ru|существова́ть}}
* {{Z|sh}}: {{W+|sh|póstojati}}, {{W+|sh|egzistírati}}, {{W+|sh|òpstojati}}, {{W+|sh|bȉvstvovati}}
* {{Z|sco}}: {{W-|sco|exeest}}
* {{Z|sk}}: {{W-|sk|jestvovať}}, {{W-|sk|existovať}}
* {{Z|sl}}: {{W+|sl|obstajati|impf}}
* {{Z|es}}: {{W+|es|existir}}
* {{Z|sv}}: {{W+|sv|existera}}, {{W+|sv|bestå}}
* {{Z|tg}}: {{W+|tg|зистан}}, {{W-|tg|вуҷуд доштан}}
* {{Z|th}}: {{W-|th|มีอยู่}}
* {{Z|tr}}: {{W+|tr|var olmak}}
* {{Z|uk}}: {{W-|uk|існува́ти}}
* {{Z|vi}}: {{W+|vi|tồn tại}}
* {{Z|vo}}: {{W+|vo|dabinön}}
* {{Z|cy}}: {{W+|cy|bodoli}}
* {{Z|km}}: {{W+|km|មាន|tr=mien|sc=Khmr}}
* {{Z|yi}}: {{W-|yi|עקסיסטירן}}
* {{Z|el}}: {{W+|el|υπάρχω}}, {{W+|el|υφίσταμαι}}
*: Kevn: {{W-|grc|ὑπάρχω}}
{{werger-bin}}
:{{werger çavkanî|en|exist|beş=Ev beşa Wergerê|oldid=74220055}}
{{werger-ser|xwedî bûn, di dest de bûn}}
* {{Z|sq}}: {{W+|sq|kam}}
* {{Z|pdc}}: {{W-|pdc|hawwe}}
* {{Z|de}}: {{W+|de|haben}}, {{W+|de|besitzen}}
*: {{Z|gsw}}: {{W-|gsw|haa}}
* {{Z|alt}}: {{W-|alt|бар}}
* {{Z|abs}}: {{W-|abs|pung}}
* {{Z|an}}: {{W+|an|tener}}, {{W+|an|haber}}
* {{Z|rup}}: {{W-|rup|am}}
* {{Z|ast}}: {{W+|ast|tener}}
* {{Z|eu}}: {{W-|eu|eduki}}
* {{Z|be}}: {{W+|be|мець|impf}}, {{q|be|у}}
* {{Z|br}}: {{W+|br|kaout}}, {{W-|br|endevout}}
* {{Z|bg}}: {{W-|bg|и́мам|impf}}
* Burmese: {{W+|my|မှာ}} {{W+|my|ရှိ}};
* {{Z|roa-brg}}: {{W-|roa-brg|aivoi}}
* {{Z|cs}}: {{W+|cs|mít|impf}}
* {{Z|chr}}: {{W-|chr|ᎤᎭ}}, {{W-|chr|ᎤᏁᎭ}}, {{W-|chr|ᎤᏩᎧᎭ}}, {{W-|chr|ᎤᎾᎠ}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|有|tr=jau5}}
*: {{Z|dng}}: {{W-|dng|ю}}
*: {{Z|gan}}: {{W-|gan|有|tr=iu3}}
*: {{Z|hak}}: {{W-|hak|有|tr=yû}}
*: {{Z|cjy}}: {{W-|cjy|有|tr=iou2}}
*: {{Z|cmn}}: {{W+|cmn|有|tr=yǒu}}, {{W-|cmn|擁有|tr=yōngyǒu}}
*: {{Z|cdo}}: {{W-|cdo|有|tr=ô, īu}}
*: {{Z|wuu}}: {{W-|wuu|有}}
*: {{Z|hsn}}: {{W-|hsn|有|tr=iou3}}
* {{Z|ckt}}: {{W-|ckt|рытык|tr=rytyk}}
* {{Z|dlm}}: {{W-|dlm|avar}}
* {{Z|da}}: {{W+|da|have}}
* {{Z|egl}}: {{W-|egl|avêreg}}
* {{Z|id}}: {{W+|id|punya}}
* {{Z|ar}}: {{W+|ar|مَلَكَ}}, {{W-|ar|اِمْتَلَكَ}}, {{W-|ar|تَمَلَّكَ}}
* {{Z|hy}}: {{W+|hy|ունենալ}}
* {{Z|eo}}: {{W+|eo|havi}}
* {{Z|ext}}: {{W-|ext|tenel}}
* {{Z|fa}}: {{W+|fa|داشتن|tr=dâštan}}
* {{Z|fo}}: {{W+|fo|hava}}
* {{Z|fi}}: {{W+|fi| olla}}, {{W+|fi|omistaa}}, {{W+|fi|omata}}
* {{Z|roa-fcm}}: {{W-|roa-fcm|aivoi}}
* {{Z|frp}}: {{W-|frp|avêr}}
* {{Z|fro}}: {{W-|fro|avoir}}, {{W-|fro|aveir}}
* {{Z|fr}}: {{W+|fr|avoir}}
* {{Z|fur}}: {{W-|fur|vê}}
* {{Z|frr}}:
*: {{Z|frr}}: {{W-|frr|haa}}
*: {{Z|frr}}: {{W-|frr|heewe}}
*: {{Z|frr}}: {{W-|frr|hoa}}
* {{Z|fy}}: {{W-|fy|hawwe}}
* {{Z|gl}}: {{W+|gl|ter}}
* {{Z|roa-gal}}: {{W-|roa-gal|avair}}
* {{Z|kld}}: {{W-|kld|-baraay}}
* {{Z|got}}: {{W-|got|𐌷𐌰𐌱𐌰𐌽}}
* {{Z|ka}}: {{W-|ka|ფლობს}}, {{W-|ka|აქვს}}, {{W-|ka|ჰყავს}}
* {{Z|hi}}: {{W+|hi|रखना}}, {{W+|hi|पास|cuda=...के पास}}, {{W+|hi|के|cuda=...के}}
* {{Z|nl}}: {{W+|nl|hebben}}
* {{Z|hrx}}: {{W-|hrx|hon}}
* {{Z|ang}}: {{W-|ang|habban}}
* {{Z|en}}: {{W+|en|have}}
* {{Z|ia}}: {{W+|ia|haber}}
* Îrlandî: {{W-|ga|bí}} {{W-|ga|ag}}
*: {{Z|sga}}: {{W-|sga|at·tá}}, {{W-|sga|techtaid}}
* {{Z|ist}}: {{W-|ist|avì}}
* {{Z|it}}: {{W+|it|avere}}, {{W+|it|tenere}}
* {{Z|ium}}: {{W-|ium|maaih}}
* {{Z|is}}: {{W+|is|eiga}}, {{W+|is|vera með}}
* {{Z|ja}}: {{W+|ja|持つ|tr=もつ, motsu}}; {{W+|ja|ある|tr=aru}}, {{W+|ja|いる|tr=iru}}
* {{Z|kab}}: {{W-|kab|sɛu}}, {{W-|kab|ɣur}}
* {{Z|kl}}: {{W-|kl|qar}}
* {{Z|csb}}: {{W-|csb|miec}}
* {{Z|ca}}: {{W+|ca|tenir}}
* {{Z|ky}}: {{W+|ky|бар}}, {{W+|ky|болуу}}
* {{Z|ko}}: {{W+|ko|있다}}, {{W+|ko|가지다}}, {{W+|ko|갖다}}
* {{Z|la}}: {{W+|la|habeō}}, {{W+|la|teneo}}, {{W-|la|possideo}}, {{W+|la|sum}}
* {{Z|lv}}: {{W+|lv|būt}} with dative, {{W-|lv|piederēt}} with dative
* {{Z|lo}}: {{W-|lo|ມີ}}
* {{Z|li}}: {{W+|li|höbbe}}, {{W-|li|han}}
* {{Z|lt}}: {{W+|lt|turėti}}
* {{Z|lmo}}: {{W-|lmo|avè}}
* {{Z|roa-lor}}: {{W-|roa-lor|ahoir}}
* {{Z|khb}}: {{W-|khb|ᦙᦲ}}
* {{Z|mhn}}: {{W-|mhn|hom}}
* {{Z|mk}}: {{W-|mk|има|impf}}
* {{Z|ms}}: {{W+|ms|ada}}, {{W-|ms|punya}}, {{W-|ms|mempunyai}}
* Maltese: ''use'' [[preposition]] {{W-|mt|għand}} + [[pronominal]] [[suffix]], e.g. {{W-|mt|għandi|tr=I have}}, {{W-|mt|għandek|tr=you have}}, {{W-|mt|għandu|tr=he has}}, etc.
* {{Z|mi}}: {{W-|mi|whai}}
* {{Z|hu}}: {{W+|hu|van}}, {{W+|hu|bír}}, {{W+|hu|birtokol}}
* {{Z|mn}}: {{W+|mn|байх}}
* {{Z|nah}}: {{W-|nah|quipi}}
* {{Z|nap}}: {{W-|nap|avé}}, {{W-|nap|tené}}
* {{Z|nv}}: {{W-|nv|bee hólǫ́}}
* {{Z|nds}}: {{W+|nds|hebben}}
* {{Z|ne}}: {{W-|ne|...[[सँग]] [[हुनु]]}}, {{ne-l|राख्नु}}
* {{Z|nrf}}: {{W-|nrf|aver}}, {{W-|nrf|aveir}}, {{W-|nrf|avaer}}
* {{Z|no}}: {{W+|no|ha}}
* {{Z|oj}}: {{W-|oj|ayaan}}, {{W-|oj|ayaaw}}
* {{Z|pro}}: {{W-|pro|aver}}
* {{Z|oc}}: {{W+|oc|aver}}
* {{Z|pms}}: {{W-|pms|avèj}}
* {{Z|pcd}}: {{W-|pcd|avoèr}}
* {{Z|pl}}: {{W+|pl|mieć|impf}}
* {{Z|roa-opt}}: {{W-|roa-opt|tẽer}}
* {{Z|pt}}: {{W+|pt|ter}}
* {{Z|rm}}: {{W-|rm|avair}}, {{W-|rm|aver}}, {{W-|rm|haver}}, {{W-|rm|aveir}}
* {{Z|ro}}: {{W+|ro|avea}}
* {{Z|ru}}: {{W-|ru|име́ть}}
* {{Z|osx}}: {{W-|osx|hebbian}}
* {{Z|sc}}: {{W-|sc|àere}}, {{W-|sc|ai}}, {{W-|sc|àiri}}, {{W-|sc|jùcchere}}, {{W-|sc|giùghere}}, {{W-|sc|tènnere}}, {{W-|sc|tènniri}}
* {{Z|scn}}: {{W+|scn|aviri}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|имати|impf}}
*: Latînî: {{W+|sh|imati|impf}}
* {{Z|sco}}: {{W-|sco|hae}}
* {{Z|cu}}: {{W-|cu|имѣти}}
* {{Z|sk}}: {{W+|sk|mať|impf}}
* {{Z|sl}}: {{W+|sl|imeti|impf}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|měś}}
*: {{Z|hsb}}: {{W+|hsb|měć}}
* {{Z|es}}: {{W+|es|tener}}
* {{Z|sv}}: {{W+|sv|äga}}, {{W+|sv|ha}}
* {{Z|roa-cha}}: {{W-|roa-cha|aouâr}}
* {{Z|shn}}: {{W-|shn|မီး}}
* {{Z|tg}}: {{W+|tg|доштан}}
* {{Z|tl}}: {{W-|tl|magkaroón}}
* {{Z|sou}}: {{W-|sou|ยัง}}
* {{Z|nod}}: {{W-|nod|ᨾᩦ|tr=mi}}
* {{Z|th}}: {{W+|th|มี}}
* {{Z|tzm}}: {{W-|tzm|ⴻⵍ}}
* {{Z|tr}}: {{W+|tr|sahip olmak}}
* {{Z|bo}}: {{W-|bo|ལ་དོན}}
* {{Z|ur}}: {{W-|ur|پاس|tr=... ke pās|cuda=... کے پاس}}
* {{Z|uk}}: {{W-|uk|ма́ти|impf}}
* {{Z|vi}}: {{W+|vi|có}}
* {{Z|vo}}: {{W+|vo|labön}}
* {{Z|wym}}: {{W-|wym|hon}}
* {{Z|km}}: {{W+|km|មាន}}
* {{Z|yai}}: {{W-|yai|дорак}}
* {{Z|yi}}: {{W-|yi|האָבן}}
* {{Z|el}}: {{W+|el|έχω}}
*: {{Z|grc}}: {{W-|grc|ἔχω}}, {{W-|grc|κέκτημαι}}
* {{Z|zea}}: {{W-|zea|è}}
* {{Z|za}}: {{W-|za|miz}}
* {{Z|zu}}: {{W-|zu|na-}}
{{werger-bin}}
:{{werger çavkanî|en|have|beş=Ev beşa Wergerê|oldid=75666156}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[bûnewerî]], di [[jiyan]]ê de bûn, [[jîndarî]], [[wicûd]], [[heyîn]], [[peydabûn]]
#: {{mk|ku|'''Hebûna''' kurdan li Ewropayê.}}
# [[mal|Mal]], [[milk]], [[zengînî]], [[dewlemendî]], [[dewlet]], tiştên mirovî hene
#: {{mk|ku|'''Hebûna''' mal û milk.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Dijmane ====
* {{g|ku|nebûn}}
* {{g|ku|tinebûn}}
* {{g|ku|tinetî}}
==== Werger ====
{{werger-ser|xwedîbûn, xwedîtî, milkiyet, mal}}
* {{Z|bg}}: {{W+|bg|притежание|nt}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|佔有|tr=zhànyǒu}}
* {{Z|ar}}: {{W-|ar|مُلْكِيّة|m}}, {{W-|ar|حَوْزَة}}, {{W-|ar|عُهْدَة|m}}
* {{Z|fi}}: {{W+|fi|omistajuus}}
* {{Z|fr}}: {{W+|fr|possession|m}}, {{W+|fr|propriété|m}}
* {{Z|gd}}: {{W-|gd|sealbhachadh|n}}
* {{Z|nl}}: {{W+|nl|bezit|nt}}, {{W+|nl|bezittingen|p}}
* {{Z|ang}}: {{W-|ang|ǣht|m}}
* {{Z|enm}}: {{W-|enm|warisoun}}
* {{Z|en}}: {{W+|en|possession}}
* {{Z|ga}}: {{W-|ga|seilbh|m}}
* {{Z|it}}: {{W+|it|possesso|n}}
* {{Z|ja}}: {{W+|ja|保持|tr=hoji|sc=Jpan}}, {{W+|ja|保有|tr=hoyū|sc=Jpan}}, {{W+|ja|所持|tr=shoji|sc=Jpan}}, {{W+|ja|所有|tr=shoyū|sc=Jpan}}
* {{Z|ca}}: {{W+|ca|propietat|m}}, {{W+|ca|possessió|m}}
* {{Z|hu}}: {{W+|hu|birtoklás}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|eierskap|nt}}
* {{Z|pl}}: {{W+|pl|posiadanie|nt}}
* {{Z|pt}}: {{W+|pt|possessão|m}}, {{W+|pt|posse}}
* {{Z|ro}}: {{W+|ro|posesiune|m}}, {{W+|ro|proprietate}}, {{W+|ro|stăpânire|m}}
* {{Z|ru}}: {{W-|ru|облада́ние|nt}}, {{W-|ru|владе́ние|nt}}
* {{Z|es}}: {{W-|es|tenencia|m}}, {{W-|es|posesión civil|m}}
* {{Z|sv}}: {{W+|sv|innehav|nt}}
* {{Z|el}}: {{W+|el|κατοχή|m|sc=Grek}}, {{W+|el|ιδιοκτησία|m|sc=Grek}}, {{W+|el|κυριότητα|m|sc=Grek}}
*: Kevn: {{W-|grc|κτῆσις|m}}, {{W-|grc|κατοχή|m}}
{{werger-bin}}
:{{werger çavkanî|en|possession|beş=Ev beşa Wergerê|oldid=75424291}}
{{werger-ser|peydabûn, wucûd}}
* {{Z|sq}}: {{W+|sq|qenie|m}}, {{W+|sq|ekzistencë|m}}
* {{Z|de}}: {{W+|de|Existenz|m}}, {{W+|de|Dasein|nt}}, {{W+|de|Sein|nt}}
* {{Z|ast}}: {{W-|ast|esistencia|m}}
* {{Z|az}}: {{W+|az|varlıq}}, {{W-|az|mövcudluq}}
* {{Z|be}}: {{W-|be|існава́нне|nt|sc=Cyrl}}, {{W-|be|быццё|nt|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|অস্তিত্ব}}, {{W+|bn|ওজুদ}}
* {{Z|bg}}: {{W-|bg|съществу́ване|nt}}, {{W+|bg|битие|nt}}
* {{Z|my}}: {{W+|my|ဇာတ်}}
* {{Z|cs}}: {{W+|cs|existence|m}}, {{W+|cs|bytí|nt}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|存在|tr=cyun4 zoi6}}
*: {{Z|cmn}}: {{W+|cmn|存在|tr=cúnzài}}
* {{Z|da}}: {{W-|da|eksistens}}, {{W-|da|tilværelse}}
* {{Z|id}}: {{W+|id|eksistensi}}, [[ada]]nya, [[ada|keberadaan]]
* {{Z|ar}}: {{W+|ar|وُجُود|n}}
*: {{Z|arz}}: {{W-|arz|وجود|n|tr=wugūd}}
* {{Z|hy}}: {{W+|hy|գոյություն}}
* {{Z|eo}}: {{W-|eo|ekzistado}}, {{W-|eo|ekzisto}}
* {{Z|et}}: {{W-|et|olemasolu}}
* {{Z|fax}}: {{W-|fax|ixistencia|m}}, {{W-|fax|existencia|m}}
* {{Z|fa}}: {{W+|fa|هستی|tr=hasti}}, {{W+|fa|بوش|tr=boveš}}
* {{Z|fi}}: {{W+|fi|olemassaolo}}
* {{Z|fr}}: {{W+|fr|existence|m}}
* {{Z|gl}}: {{W+|gl|existencia|m}}
* {{Z|gu}}: {{W-|gu|અસ્તિત્વ}}
* {{Z|ka}}: {{W-|ka|არსებობა|sc=Geor}}
* {{Z|hi}}: {{W+|hi|अस्तित्व|n}}, {{W+|hi|भाव|n}}
* {{Z|nl}}: {{W+|nl|bestaan|nt}}, {{W+|nl|voorkomen|nt}}
* {{Z|he}}: {{W-|he|קִיּוּם|n|tr=kiyúm}}
* {{Z|en}}: {{W+|en|existence}}
* {{Z|ia}}: {{W-|ia|existentia}}
* {{Z|it}}: {{W+|it|esistenza|m}}
* {{Z|is}}: {{W+|is|tilvera|m}}
* {{Z|ja}}: {{W+|ja|存在|tr=そんざい, sonzaí}}
* {{Z|ca}}: {{W+|ca|existència|m}}
* {{Z|ky}}: {{W+|ky|жашоо}}
* {{Z|ko}}: {{W+|ko|존재}}
* {{Z|la}}: {{W-|la|exsistentia|m}}
* {{Z|lv}}: {{W-|lv|eksistence|m}}, {{W-|lv|pastāvēšana|m}}, {{W+|lv|esamība|m}}
* {{Z|lo}}: {{W-|lo|ຊີບ}}, {{W-|lo|ຊີວະ}}, {{W-|lo|ຊີວັງ}}, {{W-|lo|ຊີວາລັຍ}}, {{W+|lo|ຊີວິດ}}, {{W-|lo|ພະວາພົບ}}, {{W-|lo|ພາວະ}}
* {{Z|lt}}: {{W-|lt|egzistavimas}}, ''syn'': [[buvimas]], {{W-|lt|egzistencija|m}}
* {{Z|mk}}: {{W-|mk|постоење|nt|sc=Cyrl}}, {{W-|mk|битие|nt|sc=Cyrl}}
* {{Z|mt}}: {{W-|mt|eżistenza|m}}
* {{Z|mi}}: {{W-|mi|tauoranga}}, {{W-|mi|kaiaotanga}}
* {{Z|hu}}: {{W+|hu|lét}}, {{W+|hu|létezés}}
* {{Z|nrf}}: {{W-|nrf|beays|n}}
* {{Z|no}}: {{W-|no|eksistens|n}}, {{W+|no|tilværelse|n}}
* {{Z|oc}}: {{W+|oc|existéncia|m}}
* {{Z|pl}}: {{W+|pl|egzystencja|m}}, {{W+|pl|istnienie|nt}}
* {{Z|pt}}: {{W+|pt|existência|m}}
* {{Z|kk}}: {{W-|kk|тіршілік}}, {{W-|kk|болмыс}}
* {{Z|ro}}: {{W+|ro|existență|m}}
* {{Z|ru}}: {{W-|ru|существова́ние|nt}}, {{W-|ru|бытие́|nt}}, {{W-|ru|экзисте́нция|m|tr=ekzistɛ́ncija}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|постојање|nt}}, {{W-|sh|битисање|nt}}, {{W-|sh|егзистенција|m}}
*: Latînî: {{W+|sh|postojanje|nt}}, {{W-|sh|bitisanje|nt}}, {{W+|sh|egzistencija|m}}
* {{Z|sk}}: {{W-|sk|existencia|m}}, {{W+|sk|bytie|nt}}
* {{Z|sl}}: {{W-|sl|obstoj|n}}, {{W+|sl|bitje|nt}}
* {{Z|es}}: {{W+|es|existencia|m}}
* {{Z|sv}}: {{W+|sv|existens|g}}, {{W+|sv|tillvaro|g}}
* {{Z|tg}}: {{W+|tg|ҳастӣ}}
* {{Z|tl}}: {{W-|tl|kamayhan}}, {{W-|tl|kamayrunan}}
* {{Z|th}}: {{W-|th|การดำรงอยู่}}, {{W+|th|ชีพ}}, {{W+|th|ชีวะ}}, {{W-|th|ชีวา}}, {{W+|th|ชีวิต}}
* {{Z|tr}}: {{W+|tr|varlık}}, {{W+|tr|varoluş}}, {{W+|tr|egzistans}}
* {{Z|uk}}: {{W-|uk|існува́ння|nt|sc=Cyrl}}, {{W-|uk|буття́|nt|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|tồn tại}}
* {{Z|yi}}: {{W-|yi|עקסיסטענץ|m}}
* {{Z|el}}: {{W+|el|ύπαρξη}}
{{werger-bin}}
:{{werger çavkanî|en|existence|beş=Ev beşa Wergerê|oldid=73500005}}
98nrknr9pt0esfmvpxv9ku3b7y3zefe
karîn
0
3979
6328744
6309680
2026-08-10T22:54:20Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328744
wikitext
text/x-wiki
{{bnr-h|Karîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-karîn.wav|dever=Amed}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|karîn|form=gerguhêz|niha=kar|borî=karî}}
[[Wêne:Olympic-style weight lifting training.JPG|thumb|Ev kes '''dikarin''' tiştên [[giran]] [[hilgirtin|hilgirin]].]]
{{lêker|ku|c=x-gh}}, {{k-ya nerm}}
# [[hêz|Hêz]] / [[taqet]] yan [[hinêr]] yan [[derfet]] / [[delîv]] yan [[zanîn]] hebûn bo kirina tiştekî.
#: {{hevmane|ku|şiyan}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Tu narê firqetê zanî</br>'''Dikarim''' ez tehemmul kim</br>Diyarê kohê Qendîl im}}
# [[qezenc kirin]], [[jê birin]], [[bi ser ketin]]:
#: {{mk|ku|Di avjenîyê de min '''karî''' te.}}
==== Notên bikaranînê ====
{{veşêre-ser|Notên bikaranînê}}
Lêkerên "karîn/kanîn" (anku "şiyan", "hêz hebûn") û "zanîn" bi hin awayan ji lêkerên din yên kurmancî cuda ditewin. Bo nimûne di dema niha de di hin devokan de pêşqertafa "di-" nakeve pêşiya wan. Loma "ez di-kim, tu di-bêjî, ew di-xwe" lê "ez karim, tu zanî, ew kane" (li cihê "ez dikarim, tu dizanî, ew dikane").
Herwiha neyînîkirina wan ne bi "na-" ya giştî lê bi "ni-" ye: Loma "ez na-kim, tu na-çî, ew na-bêje" lê "ez ni-zanim, tu ni-karî, ew nikane".
Herwiha di rewşên din de jî hin cudahî hene. Ji hemû lêkerên din re di raweya şertî de (kondîsyonal yan subjunktîv) bi giştî lêker bi formûlaya "bi- + rehê dema niha + qertafa kesandinê ne": "ez bi-ç-im, tu bi-k-î, ew bi-bêj-e". Ev qaydeya giştî di hin devokan de dîsa li gel lêkerên "karîn/kanîn" û "zanîn" jî li kar e: "ez bi-zan-im, tu bi-kar-î, ew bi-kan-e". Lê di hin devokan de jî ew bi formûlaya "rehê dema niha + -i- + -b- + qertafa kesandinê" tê çêkirin: "ez kar-i-b-im, tu zan-i-bî, ew kan-i-b-e". Di hin devokan de jî îcar ev herdu qayde di heman demê de tên bikaranîn: "ez bi-zan-i-b-im, tu bi-kar-i-bî".
Lê ji van awarteyiyan tenê "ni-" ya neyînîkirinê di kurmancî de di hemû devokan de awrte ye. Lê awarteyiyên din tenê di hin devokan de hene. Devokên din qeydeyên giştî bi kar tînin. Loma divê em di mesela "di-" de li gor qaydeya giştî biçin: "ez dikarim" ne "ez karim". Herwiha ji ber ku "ez bi-zan-im, tu bi-kar-î, ew bi-kan-e" li gor qaydeya giştî ne û formên wek "ez zan-i-bim, tu kar-i-bî, ew kan-i-be" yan jî "ez bi-zan-i-bim, tu bi-kar-i-bî, ew bi-kar-i-be" awarte ne, divê em wek "bizanim, bikarî, bikane" tercih bikin.
Herwiha ev ''karibû'' bi teşeya raboriya dûr ''karîbû'' hemanî nayê lêvandin.
{{veşêre-bin}}
==== Bi alfabeyên din ====
* {{ku-ar|کارین}}
* {{ku-kr|карин}}
==== Formên alternatîv ====
* [[kanîn]]
* [[kaynîn]] (kurmanciya Xorasanê)
==== Jê ====
* [[kara]]
==== Etîmolojî ====
Ji {{ji|hy|ku|-}}{{çp}}, bi ermeniya rojava {{g|hy|կարնալ|tr=arenal/garenal}}, ermeniya rojhilat {{g|hy|կարողանալ|tr=karoġanal}}, têkilî ermeniya kevn {{g|xcl|կարող|tr=karoł|w=[[xurt]], [[bihêz]]}} ji {{g|xcl|կար|tr=kar|w=[[hêz]], [[îmkan]]}}. Di lêkera ermenî de di nava peyvê de hem "r" û hem jî "n" heye loma di hin devokên kurmancî de "karîn" û di hinan de jî "kanîn" e. Di devokên kurmancî yên dûrî ermenî de û di zaravayên din yên kurdî û di zimanên din yên îranî de peyda nabe loma ihtimala ku ji ermenî be gelekî mezin e. Bi hin devokên kurmancî [[şiyan]] e ku [[hevreh]]a [[şiyan]] ([[mimkin]] bûn) ya soranî, [[şayed]] ya ji farisî û [[şikayene, eşkayene, şayene]] ya zazakî ye. Di soranî de [[tiwanîn]] (rehê dema niha "-tiwan-") e ku hevreha {{g|fa|توانستن|tr=tevanesten}} ya farisî ye ku rehê wê yê dema niha "-tevan-" e. Ne têkilî [[can]] (bixwîne: ken yan kan) ya îngilîzî û hevrehên wê yên zimanên cermenî ye ji ber ku eger ew hevreh bûna, "k" ya proto-hindûewropî divê di kurdî de bûbûya "s" û di zimanên cermenî de jî "h". Idiaya [[Şablon:Beghyani|Beghyani]], ku dibêje ji [[kirin]] e, bi ti [[belge]]yan nehatiye [[peyitandin]]. [[Şablon:Hesendost|Hesendost]] bi xeletî li ber peyva "tevanisten" ya farisî nivîsiye: "kirmaşanî: twanîn, karîn, û: karîn, kan, kanî". Di rastiyê de li ber "karîn, -kan-, kanî" diviyabû ku "kurmancî" hatibûya nivîsîn. Bi Kirmaşanî û lekî [[tüenîn]] / [[tüenisin]] e.
Peyva ermenî jî ji zimanekî gurcî-zanî wergirtiye<ref>Ačaṙean, Hračʿeay (1973), “կռիւ”, in Hayerēn armatakan baṙaran [Armenian Etymological Dictionary] (in Armenian), volume II, 2nd edition, a reprint of the original 1926–1935 seven-volume edition, Yerevan: University Press, rûpel 671b http://www.nayiri.com/imagedDictionaryBrowser.jsp?dictionaryId=7&printPage=671&volume=2</ref>, ji proto-gurcî-zanî {{q|ccs-gzn-pro|*ḳar-|w=[[bestin]]}}, ji proto-kartvelî ''[[*ḳar-]]'' ku bûye [[lazî]] {{g|lzz|ო-კორ-უ|tr=o-ǩor-u|w=bestin}}, mingrelî {{g|xmf|კჷრ-უ-ა|w=bestin}}, gurcî {{g|ka|კრვა|tr=ḳrva}}<ref>Klimov, G. A. (1998) Etymological Dictionary of the Kartvelian Languages (Trends in linguistics. Documentation; 16), New York, Berlin: Mouton de Gruyter, rûpel 86 https://archive.org/details/KlimovEtymological/Klimov?view=theater#page/n102/mode/1up</ref><ref>Fähnrich, Heinz (2007) Kartwelisches Etymologisches Wörterbuch [Kartvelian Etymological Dictionary] (Handbuch der Orientalistik; VIII.18) (in German), Leiden, Boston: Brill, rûpel 222 https://archive.org/details/Fahnrich_2007/page/n221/mode/1up?view=theater</ref>... Ev dikare bê maneya ku ew peyveke substrat a hevpar e ku ketiye ermenî û hin zaravayên kurdî ji zimanên [[Qefqaz]]î, lê ew ne[[vebirî]] ye.
Herwiha bi zimanê [[partî]] hatiye qeydkirin ku lêkera {{q|ku|kirin}} bo diyarkirina [[pêkanî|pêkaniya]] tiştek jî li kar bûye.<ref>Dictionary Of Manichean Middle Persian & Parthian by Durkin-Meisterernst, Desmond, rûpel 206, '''kr-, qr- Pa lkar-1 vtr. "to do, make'. Used as an auxiliary verb following a pp. in the 'potentialis', to indicate a possibility, eg MKG(726i fr'm](r)g kyrd kr'n "if- I could make (her) forgetful"''', https://archive.org/details/DictionaryOfMMP/page/n236/mode/1up?q=could</ref>mînak: "''framereg kird keran''" = (ku min wê) bikariya [[bîroke]] bikim (framereg: [[bîroke]] - ji reha fremûşten/ji bîr kirin / kird: kir - dema bihûrî a sade / keran: bikim - kesê yekjimar ê 1. dema niha a bilanî). Di soranî de jî rrewşa pasîf a lêkera "{{g|ckb|کردن}}" wek hevwateya {{g|ckb|شیان|w=mimkin bûn}} tê bikaranîn (wek "dekirêt rû bidat" = "tê kirin ku rû de" anku [[pêkan]] e ku rû de) an jî "deyekat" = ew wî dike/ew dikare... lê ne wek hevmaneya {{g|ckb|tiwanîn|sc=Latn|w=karîn}}. Anku ne ku di zimanên îranî ên din de peyda nabe, [[nexasma]] di zimanên kurdî de.
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W-|sq|mund}}, {{W+|sq|mundem}}
* {{Z|de}}: {{W+|de|können}}
*: {{Z|gsw}}: {{W-|gsw|chöne}}
* {{Z|an}}: {{W-|an|poder}}
* {{Z|rup}}: {{W-|rup|pot}}
* Assamese:
*: {{Z|as}}: {{W-|as|পাৰা}}
*: {{Z|as}}: {{W-|as|পৰা}}
* {{Z|ast}}: {{W+|ast|poder}}
* {{Z|az}}: {{W+|az|bilmək}}, {{W+|az|bacarmaq}}
* {{Z|eu}}: {{W-|eu|ahal izan}}
* {{Z|be}}: {{W-|be|магчы́|impf}}, {{W-|be|змагчы́|pf}}; {{W-|be|уме́ць|impf}}, {{W-|be|ўмець|impf}}, {{W-|be|суме́ць|pf}}
* {{Z|br}}: {{W-|br|gallout}}
* {{Z|bg}}: {{W-|bg|мо́га|impf}}, {{W-|bg|уме́я|impf}}
* {{Z|my}}: {{W+|my|နိုင်|sc=Mymr}}
* {{Z|cs}}: {{W-|cs|moci}}, {{W-|cs|umět}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|識得|tr=sik1 dak1}}
*: {{Z|cmn}}: {{W+|cmn|會|tr=huì}}, {{W+|cmn|能|tr=néng}}, /{{W+|cmn|不了|tr=-buliǎo}}}}, {{W+|cmn|能夠|tr=nénggòu}}
*: {{Z|nan}}: {{W+|nan|會得|tr=ē-tit}}, {{W+|nan|會當|tr=ē-tàng}}, {{W-|nan|會凍|tr=ē-tàng}}
* {{Z|dlm}}: {{W-|dlm|potar}}
* {{Z|da}}: {{W-|da|kunne}}
* {{Z|id}}: {{W+|id|boleh}}, {{W+|id|bisa}}
* {{Z|ar}}: {{W-|ar|قَدَرَ}}, {{W-|ar|اِسْتَطَاعَ}}, {{W-|ar|أَمْكَنَ}}
*: {{Z|arz}}: {{W-|arz|قدر|tr=ʾadar|sc=Arab}}
* {{Z|hy}}: {{W+|hy|կարողանալ}}, {{W+|hy|կրնալ}}
* {{Z|eo}}: {{W+|eo|povi}}
* {{Z|et}}: {{W-|et|osata}}, {{W-|et|võima}}
* {{Z|fa}}: {{W-|fa|توانستن|tr=tavânestan}}, {{W-|fa|قادر بودن}}
* {{Z|fo}}: {{W+|fo|kunna}}
* {{Z|fi}}: {{W+|fi|osata}}, {{W+|fi|voida}}, {{W+|fi|pystyä}}
* {{Z|frp}}: {{W-|frp|povêr}}, {{W-|frp|possêr}}
* {{Z|fr}}: {{W+|fr|pouvoir}}
* {{Z|fur}}: {{W-|fur|podê}}
* {{Z|frr}}: {{W-|frr|koone}}, {{W-|frr|kön}}, {{W-|frr|kan}}
* {{Z|ofs}}: {{W-|ofs|kunna}}
* {{Z|stq}}: {{W-|stq|konne}}
* {{Z|gd}}: {{W-|gd|'s urrainn do}}, {{W-|gd|faod}}
* {{Z|gl}}: {{W+|gl|poder}}
* {{Z|roa-gal}}: {{W-|roa-gal|póeir}}
* {{Z|got}}: {{W-|got|𐌼𐌰𐌲𐌰𐌽}}, {{W-|got|𐌺𐌿𐌽𐌽𐌰𐌽}}
* {{Z|ka}}: {{W-|ka|შეუძლია}}
* {{Z|ht}}: {{W-|ht|ka}}, {{W-|ht|kapab}}, {{W-|ht|kab}}
* {{Z|hi}}: {{W-|hi|सकना}}, {{W-|hi|समर्थ होना}}
* {{Z|nl}}: {{W+|nl|kunnen}}, {{W+|nl|vermogen}}
* {{Z|he}}: {{W+|he|יכול|n|tr=yakhól|cuda=יכול / יָכֹל}}, {{W-|he|מסוגל|n|tr=m'sugál|cuda=מסוגל / מְסֻגָּל}}
* {{Z|ang}}: {{W-|ang|magan}}, {{W-|ang|cunnan}}
* {{Z|ga}}: {{W-|ga|is féidir le}}, {{W-|ga|tig le}}, {{W-|ga|féad}}, {{W-|ga|bí}} {{W-|ga|in ann}}
*: {{Z|sga}}: {{W-|sga|con·icc}}
* {{Z|it}}: {{W+|it|potere}}, {{W+|it|riuscire}}, {{W+|it|sapere}}
* {{Z|is}}: {{W+|is|geta}}
* {{Z|ja}}: {{W+|ja|できる|tr=dekiru|sc=Jpan}}, {{W+|ja|れる|cuda=-れる|tr=-reru|sc=Jpan}}, {{W+|ja|られる|cuda=-られる|tr=-rareru|sc=Jpan}}
* {{Z|kn}}: {{W+|kn|ಬಹುದು}}
* {{Z|ca}}: {{W-|ca|poder}}, {{W-|ca|poguer}}
* {{Z|qu}}: {{W+|qu|atiy}}
* {{Z|gil}}: {{W-|gil|kona}}
* {{Z|ko}}: {{W-|ko|수|cuda=...을/ᄅ 수 있다|tr=...-l su itda}}, {{W+|ko|eu}}
* {{Z|kw}}: {{W-|kw|gallos}}
* {{Z|la}}: {{W+|la|possum}}, {{W-|la|queo}}, {{W+|la|scio}}
* {{Z|lv}}: {{W+|lv|prast}}, {{W+|lv|spēt}}, {{W+|lv|varēt}}
* {{Z|lo}}: {{W-|lo|ໄດ້}}
* {{Z|lt}}: {{W+|lt|galėti}}
* {{Z|liv}}: {{W-|liv|mȯistõ}}, {{W-|liv|võidõ}}
* {{Z|khb}}: {{W-|khb|ᦺᦡᧉ}}
* {{Z|lb}}: {{W+|lb|kënnen}}
* {{Z|mk}}: {{W-|mk|може}}
* {{Z|ml}}: {{W-|ml|കഴിയും}}
* {{Z|ms}}: {{W-|ms|dapat}}, {{W-|ms|boleh}}, {{W+|ms|bisa}}
* {{Z|mt}}: {{W-|mt|seta'}}
* {{Z|gv}}: {{W-|gv|jarg}}
* {{Z|hu}}: {{W+|hu|tud}}, {{W+|hu|képes}}
* {{Z|mn}}: {{W+|mn|чадах}}, {{W-|mn|ᠴᠢᠳᠠᠬᠤ}}
* {{Z|nah}}: {{W-|nah|huelīti}}
* {{Z|nap}}: {{W-|nap|putè}}
* {{Z|nds}}: {{W-|nds|könen}}
* {{Z|no}}: {{W+|no|kunne}}
* {{Z|oc}}: {{W-|oc|pòder}}, {{W-|oc|podre}}
* {{Z|ppl}}: {{W-|ppl|weli}}, {{W-|ppl|hueli}}
* {{Z|pl}}: {{W+|pl|móc}}, {{W+|pl|umieć}}, {{W+|pl|potrafić}}
* {{Z|pt}}: {{W+|pt|conseguir}}, {{W+|pt|saber}}
* {{Z|rm}}: {{W-|rm|pudair}}, {{W-|rm|puder}}, {{W-|rm|pudeir}}
* {{Z|ro}}: {{W+|ro|putea}}
* {{Z|ru}}: {{W+|ru|мочь|impf}}, {{W+|ru|смочь|pf}}, {{W-|ru|уме́ть|impf}}, {{W-|ru|быть в состоя́нии}}
* {{Z|osx}}: {{W-|osx|kunnan}}
* {{Z|sc}}: {{W-|sc|podere}}, {{W-|sc|podi}}, {{W-|sc|podiri}}, {{W-|sc|pori}}, {{W-|sc|porrere}}, {{W-|sc|potere}}
* {{Z|scn}}: {{W+|scn|putiri}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|моћи}}, {{W-|sh|умети}}, {{W-|sh|умјети}}
*: Latînî: {{W+|sh|moći}}, {{W+|sh|umeti}}, {{W+|sh|umjeti}}
* {{Z|syl}}: {{W-|syl|ꠙꠣꠞꠣ}}
* {{Z|sk}}: {{W-|sk|môcť}}
* {{Z|sl}}: {{W+|sl|moči}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|móc}}
* {{Z|es}}: {{W+|es|poder}}, {{W+|es|saber}}
* {{Z|sv}}: {{W+|sv|kunna}}
* {{Z|zdj}}: {{W-|zdj|djua|cuda=udjua}}
* {{Z|ta}}: {{W-|ta|செய்யக்கூடிய}}
* {{Z|th}}: {{W+|th|ได้}}, {{W+|th|ย่อม}}, {{W+|th|สามารถ}}
* {{Z|otk}}: {{W-|otk|𐰆|ts=u-}}
* {{Z|tr}}: {{W+|tr|-ebilmek}}, {{W+|tr|-abilmek}} {{W+|tr|yenmek}}
* {{Z|txb}}: {{W-|txb|yāt-}}
* {{Z|ur}}: {{W-|ur|سکنا|tr=saknā|sc=ur-Arab}}
* {{Z|uk}}: {{W-|uk|могти́|impf}}, {{W-|uk|змогти́|pf}}; {{W-|uk|вмі́ти|impf}}, {{W-|uk|умі́ти|impf}}, {{W-|uk|зумі́ти|pf}}
* {{Z|vec}}: {{W-|vec|poder}}
* {{Z|vi}}: {{W+|vi|có thể}}, {{W+|vi|được}}
* {{Z|wa}}: {{W+|wa|poleur}}, {{W+|wa|saveur}}, {{W+|wa|sawè}}
* {{Z|cy}}: {{W+|cy|gallu}}, {{W+|cy|medru}}
* {{Z|km}}: {{W+|km|បាន|tr=baan}}
* {{Z|yi}}: {{W-|yi|קענען}}
* {{Z|esu}}: {{W-|esu|-yugnga}}
* {{Z|el}}: {{W+|el|μπορώ}}, {{W+|el|δύναμαι}}
*: Kevn: {{W-|grc|δύναμαι}}
* {{Z|za}}: {{W-|za|maenz}}
* {{Z|ase}}: {{W-|ase|S@Sternumhigh-PalmDown-S@Sternumhigh-PalmDown S@Chesthigh-PalmDown-S@Chesthigh-PalmDown}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[şiyan]], [[taqet]], [[hêz]], [[qudret]]
#* {{mk|ku|Bi serketinê wî '''karîna''' xwe nîşan da.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W|tr|edebilme}}, {{W|tr|yapabilme}}, {{W|tr|güç}}, {{W|tr|kudret}}, {{W|tr|erk}}, {{W|tr|yapabilme}}, {{W|tr|nüfuz}}
{{werger-bin}}
{{bend}}
=== Lêker 2 ===
{{lêker|ku|c=x-ngh}}
# [[girîn]]
#: {{mk|ku|Çêla zer ji birsan '''karî'''.}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|cry}}
* {{Z|tr}}: {{W|tr|ağlamak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
sclcjxrjlhfj2g02fxrv5ids6fxqo96
6328745
6328744
2026-08-10T22:54:44Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328745
wikitext
text/x-wiki
{{bnr-h|Karîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-karîn.wav|dever=Amed}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|karîn|form=gerguhêz|niha=kar|borî=karî}}
[[Wêne:Olympic-style weight lifting training.JPG|thumb|Ev kes '''dikarin''' tiştên [[giran]] [[hilgirtin|hilgirin]].]]
{{lêker|ku|c=x-gh}}, {{k-ya nerm}}
# [[hêz|Hêz]] / [[taqet]] yan [[hinêr]] yan [[derfet]] / [[delîv]] yan [[zanîn]] hebûn bo kirina tiştekî.
#: {{hevmane|ku|şiyan}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Tu narê firqetê zanî</br>'''Dikarim''' ez tehemmul kim</br>Diyarê kohê Qendîl im}}
# [[qezenc kirin]], [[jê birin]], [[bi ser ketin]]:
#: {{mk|ku|Di avjenîyê de min '''karî''' te.}}
==== Notên bikaranînê ====
{{veşêre-ser|Notên bikaranînê}}
Lêkerên "karîn/kanîn" (anku "şiyan", "hêz hebûn") û "zanîn" bi hin awayan ji lêkerên din yên kurmancî cuda ditewin. Bo nimûne di dema niha de di hin devokan de pêşqertafa "di-" nakeve pêşiya wan. Loma "ez di-kim, tu di-bêjî, ew di-xwe" lê "ez karim, tu zanî, ew kane" (li cihê "ez dikarim, tu dizanî, ew dikane").
Herwiha neyînîkirina wan ne bi "na-" ya giştî lê bi "ni-" ye: Loma "ez na-kim, tu na-çî, ew na-bêje" lê "ez ni-zanim, tu ni-karî, ew nikane".
Herwiha di rewşên din de jî hin cudahî hene. Ji hemû lêkerên din re di raweya şertî de (kondîsyonal yan subjunktîv) bi giştî lêker bi formûlaya "bi- + rehê dema niha + qertafa kesandinê ne": "ez bi-ç-im, tu bi-k-î, ew bi-bêj-e". Ev qaydeya giştî di hin devokan de dîsa li gel lêkerên "karîn/kanîn" û "zanîn" jî li kar e: "ez bi-zan-im, tu bi-kar-î, ew bi-kan-e". Lê di hin devokan de jî ew bi formûlaya "rehê dema niha + -i- + -b- + qertafa kesandinê" tê çêkirin: "ez kar-i-b-im, tu zan-i-bî, ew kan-i-b-e". Di hin devokan de jî îcar ev herdu qayde di heman demê de tên bikaranîn: "ez bi-zan-i-b-im, tu bi-kar-i-bî".
Lê ji van awarteyiyan tenê "ni-" ya neyînîkirinê di kurmancî de di hemû devokan de awrte ye. Lê awarteyiyên din tenê di hin devokan de hene. Devokên din qeydeyên giştî bi kar tînin. Loma divê em di mesela "di-" de li gor qaydeya giştî biçin: "ez dikarim" ne "ez karim". Herwiha ji ber ku "ez bi-zan-im, tu bi-kar-î, ew bi-kan-e" li gor qaydeya giştî ne û formên wek "ez zan-i-bim, tu kar-i-bî, ew kan-i-be" yan jî "ez bi-zan-i-bim, tu bi-kar-i-bî, ew bi-kar-i-be" awarte ne, divê em wek "bizanim, bikarî, bikane" tercih bikin.
Herwiha ev ''karibû'' bi teşeya raboriya dûr ''karîbû'' hemanî nayê lêvandin.
{{veşêre-bin}}
==== Bi alfabeyên din ====
* {{ku-ar|کارین}}
* {{ku-kr|карин}}
==== Formên alternatîv ====
* [[kanîn]]
* {{hw|ku|kaynîn||kurmanciya Xorasanê}}
==== Jê ====
* [[kara]]
==== Etîmolojî ====
Ji {{ji|hy|ku|-}}{{çp}}, bi ermeniya rojava {{g|hy|կարնալ|tr=arenal/garenal}}, ermeniya rojhilat {{g|hy|կարողանալ|tr=karoġanal}}, têkilî ermeniya kevn {{g|xcl|կարող|tr=karoł|w=[[xurt]], [[bihêz]]}} ji {{g|xcl|կար|tr=kar|w=[[hêz]], [[îmkan]]}}. Di lêkera ermenî de di nava peyvê de hem "r" û hem jî "n" heye loma di hin devokên kurmancî de "karîn" û di hinan de jî "kanîn" e. Di devokên kurmancî yên dûrî ermenî de û di zaravayên din yên kurdî û di zimanên din yên îranî de peyda nabe loma ihtimala ku ji ermenî be gelekî mezin e. Bi hin devokên kurmancî [[şiyan]] e ku [[hevreh]]a [[şiyan]] ([[mimkin]] bûn) ya soranî, [[şayed]] ya ji farisî û [[şikayene, eşkayene, şayene]] ya zazakî ye. Di soranî de [[tiwanîn]] (rehê dema niha "-tiwan-") e ku hevreha {{g|fa|توانستن|tr=tevanesten}} ya farisî ye ku rehê wê yê dema niha "-tevan-" e. Ne têkilî [[can]] (bixwîne: ken yan kan) ya îngilîzî û hevrehên wê yên zimanên cermenî ye ji ber ku eger ew hevreh bûna, "k" ya proto-hindûewropî divê di kurdî de bûbûya "s" û di zimanên cermenî de jî "h". Idiaya [[Şablon:Beghyani|Beghyani]], ku dibêje ji [[kirin]] e, bi ti [[belge]]yan nehatiye [[peyitandin]]. [[Şablon:Hesendost|Hesendost]] bi xeletî li ber peyva "tevanisten" ya farisî nivîsiye: "kirmaşanî: twanîn, karîn, û: karîn, kan, kanî". Di rastiyê de li ber "karîn, -kan-, kanî" diviyabû ku "kurmancî" hatibûya nivîsîn. Bi Kirmaşanî û lekî [[tüenîn]] / [[tüenisin]] e.
Peyva ermenî jî ji zimanekî gurcî-zanî wergirtiye<ref>Ačaṙean, Hračʿeay (1973), “կռիւ”, in Hayerēn armatakan baṙaran [Armenian Etymological Dictionary] (in Armenian), volume II, 2nd edition, a reprint of the original 1926–1935 seven-volume edition, Yerevan: University Press, rûpel 671b http://www.nayiri.com/imagedDictionaryBrowser.jsp?dictionaryId=7&printPage=671&volume=2</ref>, ji proto-gurcî-zanî {{q|ccs-gzn-pro|*ḳar-|w=[[bestin]]}}, ji proto-kartvelî ''[[*ḳar-]]'' ku bûye [[lazî]] {{g|lzz|ო-კორ-უ|tr=o-ǩor-u|w=bestin}}, mingrelî {{g|xmf|კჷრ-უ-ა|w=bestin}}, gurcî {{g|ka|კრვა|tr=ḳrva}}<ref>Klimov, G. A. (1998) Etymological Dictionary of the Kartvelian Languages (Trends in linguistics. Documentation; 16), New York, Berlin: Mouton de Gruyter, rûpel 86 https://archive.org/details/KlimovEtymological/Klimov?view=theater#page/n102/mode/1up</ref><ref>Fähnrich, Heinz (2007) Kartwelisches Etymologisches Wörterbuch [Kartvelian Etymological Dictionary] (Handbuch der Orientalistik; VIII.18) (in German), Leiden, Boston: Brill, rûpel 222 https://archive.org/details/Fahnrich_2007/page/n221/mode/1up?view=theater</ref>... Ev dikare bê maneya ku ew peyveke substrat a hevpar e ku ketiye ermenî û hin zaravayên kurdî ji zimanên [[Qefqaz]]î, lê ew ne[[vebirî]] ye.
Herwiha bi zimanê [[partî]] hatiye qeydkirin ku lêkera {{q|ku|kirin}} bo diyarkirina [[pêkanî|pêkaniya]] tiştek jî li kar bûye.<ref>Dictionary Of Manichean Middle Persian & Parthian by Durkin-Meisterernst, Desmond, rûpel 206, '''kr-, qr- Pa lkar-1 vtr. "to do, make'. Used as an auxiliary verb following a pp. in the 'potentialis', to indicate a possibility, eg MKG(726i fr'm](r)g kyrd kr'n "if- I could make (her) forgetful"''', https://archive.org/details/DictionaryOfMMP/page/n236/mode/1up?q=could</ref>mînak: "''framereg kird keran''" = (ku min wê) bikariya [[bîroke]] bikim (framereg: [[bîroke]] - ji reha fremûşten/ji bîr kirin / kird: kir - dema bihûrî a sade / keran: bikim - kesê yekjimar ê 1. dema niha a bilanî). Di soranî de jî rrewşa pasîf a lêkera "{{g|ckb|کردن}}" wek hevwateya {{g|ckb|شیان|w=mimkin bûn}} tê bikaranîn (wek "dekirêt rû bidat" = "tê kirin ku rû de" anku [[pêkan]] e ku rû de) an jî "deyekat" = ew wî dike/ew dikare... lê ne wek hevmaneya {{g|ckb|tiwanîn|sc=Latn|w=karîn}}. Anku ne ku di zimanên îranî ên din de peyda nabe, [[nexasma]] di zimanên kurdî de.
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W-|sq|mund}}, {{W+|sq|mundem}}
* {{Z|de}}: {{W+|de|können}}
*: {{Z|gsw}}: {{W-|gsw|chöne}}
* {{Z|an}}: {{W-|an|poder}}
* {{Z|rup}}: {{W-|rup|pot}}
* Assamese:
*: {{Z|as}}: {{W-|as|পাৰা}}
*: {{Z|as}}: {{W-|as|পৰা}}
* {{Z|ast}}: {{W+|ast|poder}}
* {{Z|az}}: {{W+|az|bilmək}}, {{W+|az|bacarmaq}}
* {{Z|eu}}: {{W-|eu|ahal izan}}
* {{Z|be}}: {{W-|be|магчы́|impf}}, {{W-|be|змагчы́|pf}}; {{W-|be|уме́ць|impf}}, {{W-|be|ўмець|impf}}, {{W-|be|суме́ць|pf}}
* {{Z|br}}: {{W-|br|gallout}}
* {{Z|bg}}: {{W-|bg|мо́га|impf}}, {{W-|bg|уме́я|impf}}
* {{Z|my}}: {{W+|my|နိုင်|sc=Mymr}}
* {{Z|cs}}: {{W-|cs|moci}}, {{W-|cs|umět}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|識得|tr=sik1 dak1}}
*: {{Z|cmn}}: {{W+|cmn|會|tr=huì}}, {{W+|cmn|能|tr=néng}}, /{{W+|cmn|不了|tr=-buliǎo}}}}, {{W+|cmn|能夠|tr=nénggòu}}
*: {{Z|nan}}: {{W+|nan|會得|tr=ē-tit}}, {{W+|nan|會當|tr=ē-tàng}}, {{W-|nan|會凍|tr=ē-tàng}}
* {{Z|dlm}}: {{W-|dlm|potar}}
* {{Z|da}}: {{W-|da|kunne}}
* {{Z|id}}: {{W+|id|boleh}}, {{W+|id|bisa}}
* {{Z|ar}}: {{W-|ar|قَدَرَ}}, {{W-|ar|اِسْتَطَاعَ}}, {{W-|ar|أَمْكَنَ}}
*: {{Z|arz}}: {{W-|arz|قدر|tr=ʾadar|sc=Arab}}
* {{Z|hy}}: {{W+|hy|կարողանալ}}, {{W+|hy|կրնալ}}
* {{Z|eo}}: {{W+|eo|povi}}
* {{Z|et}}: {{W-|et|osata}}, {{W-|et|võima}}
* {{Z|fa}}: {{W-|fa|توانستن|tr=tavânestan}}, {{W-|fa|قادر بودن}}
* {{Z|fo}}: {{W+|fo|kunna}}
* {{Z|fi}}: {{W+|fi|osata}}, {{W+|fi|voida}}, {{W+|fi|pystyä}}
* {{Z|frp}}: {{W-|frp|povêr}}, {{W-|frp|possêr}}
* {{Z|fr}}: {{W+|fr|pouvoir}}
* {{Z|fur}}: {{W-|fur|podê}}
* {{Z|frr}}: {{W-|frr|koone}}, {{W-|frr|kön}}, {{W-|frr|kan}}
* {{Z|ofs}}: {{W-|ofs|kunna}}
* {{Z|stq}}: {{W-|stq|konne}}
* {{Z|gd}}: {{W-|gd|'s urrainn do}}, {{W-|gd|faod}}
* {{Z|gl}}: {{W+|gl|poder}}
* {{Z|roa-gal}}: {{W-|roa-gal|póeir}}
* {{Z|got}}: {{W-|got|𐌼𐌰𐌲𐌰𐌽}}, {{W-|got|𐌺𐌿𐌽𐌽𐌰𐌽}}
* {{Z|ka}}: {{W-|ka|შეუძლია}}
* {{Z|ht}}: {{W-|ht|ka}}, {{W-|ht|kapab}}, {{W-|ht|kab}}
* {{Z|hi}}: {{W-|hi|सकना}}, {{W-|hi|समर्थ होना}}
* {{Z|nl}}: {{W+|nl|kunnen}}, {{W+|nl|vermogen}}
* {{Z|he}}: {{W+|he|יכול|n|tr=yakhól|cuda=יכול / יָכֹל}}, {{W-|he|מסוגל|n|tr=m'sugál|cuda=מסוגל / מְסֻגָּל}}
* {{Z|ang}}: {{W-|ang|magan}}, {{W-|ang|cunnan}}
* {{Z|ga}}: {{W-|ga|is féidir le}}, {{W-|ga|tig le}}, {{W-|ga|féad}}, {{W-|ga|bí}} {{W-|ga|in ann}}
*: {{Z|sga}}: {{W-|sga|con·icc}}
* {{Z|it}}: {{W+|it|potere}}, {{W+|it|riuscire}}, {{W+|it|sapere}}
* {{Z|is}}: {{W+|is|geta}}
* {{Z|ja}}: {{W+|ja|できる|tr=dekiru|sc=Jpan}}, {{W+|ja|れる|cuda=-れる|tr=-reru|sc=Jpan}}, {{W+|ja|られる|cuda=-られる|tr=-rareru|sc=Jpan}}
* {{Z|kn}}: {{W+|kn|ಬಹುದು}}
* {{Z|ca}}: {{W-|ca|poder}}, {{W-|ca|poguer}}
* {{Z|qu}}: {{W+|qu|atiy}}
* {{Z|gil}}: {{W-|gil|kona}}
* {{Z|ko}}: {{W-|ko|수|cuda=...을/ᄅ 수 있다|tr=...-l su itda}}, {{W+|ko|eu}}
* {{Z|kw}}: {{W-|kw|gallos}}
* {{Z|la}}: {{W+|la|possum}}, {{W-|la|queo}}, {{W+|la|scio}}
* {{Z|lv}}: {{W+|lv|prast}}, {{W+|lv|spēt}}, {{W+|lv|varēt}}
* {{Z|lo}}: {{W-|lo|ໄດ້}}
* {{Z|lt}}: {{W+|lt|galėti}}
* {{Z|liv}}: {{W-|liv|mȯistõ}}, {{W-|liv|võidõ}}
* {{Z|khb}}: {{W-|khb|ᦺᦡᧉ}}
* {{Z|lb}}: {{W+|lb|kënnen}}
* {{Z|mk}}: {{W-|mk|може}}
* {{Z|ml}}: {{W-|ml|കഴിയും}}
* {{Z|ms}}: {{W-|ms|dapat}}, {{W-|ms|boleh}}, {{W+|ms|bisa}}
* {{Z|mt}}: {{W-|mt|seta'}}
* {{Z|gv}}: {{W-|gv|jarg}}
* {{Z|hu}}: {{W+|hu|tud}}, {{W+|hu|képes}}
* {{Z|mn}}: {{W+|mn|чадах}}, {{W-|mn|ᠴᠢᠳᠠᠬᠤ}}
* {{Z|nah}}: {{W-|nah|huelīti}}
* {{Z|nap}}: {{W-|nap|putè}}
* {{Z|nds}}: {{W-|nds|könen}}
* {{Z|no}}: {{W+|no|kunne}}
* {{Z|oc}}: {{W-|oc|pòder}}, {{W-|oc|podre}}
* {{Z|ppl}}: {{W-|ppl|weli}}, {{W-|ppl|hueli}}
* {{Z|pl}}: {{W+|pl|móc}}, {{W+|pl|umieć}}, {{W+|pl|potrafić}}
* {{Z|pt}}: {{W+|pt|conseguir}}, {{W+|pt|saber}}
* {{Z|rm}}: {{W-|rm|pudair}}, {{W-|rm|puder}}, {{W-|rm|pudeir}}
* {{Z|ro}}: {{W+|ro|putea}}
* {{Z|ru}}: {{W+|ru|мочь|impf}}, {{W+|ru|смочь|pf}}, {{W-|ru|уме́ть|impf}}, {{W-|ru|быть в состоя́нии}}
* {{Z|osx}}: {{W-|osx|kunnan}}
* {{Z|sc}}: {{W-|sc|podere}}, {{W-|sc|podi}}, {{W-|sc|podiri}}, {{W-|sc|pori}}, {{W-|sc|porrere}}, {{W-|sc|potere}}
* {{Z|scn}}: {{W+|scn|putiri}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|моћи}}, {{W-|sh|умети}}, {{W-|sh|умјети}}
*: Latînî: {{W+|sh|moći}}, {{W+|sh|umeti}}, {{W+|sh|umjeti}}
* {{Z|syl}}: {{W-|syl|ꠙꠣꠞꠣ}}
* {{Z|sk}}: {{W-|sk|môcť}}
* {{Z|sl}}: {{W+|sl|moči}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|móc}}
* {{Z|es}}: {{W+|es|poder}}, {{W+|es|saber}}
* {{Z|sv}}: {{W+|sv|kunna}}
* {{Z|zdj}}: {{W-|zdj|djua|cuda=udjua}}
* {{Z|ta}}: {{W-|ta|செய்யக்கூடிய}}
* {{Z|th}}: {{W+|th|ได้}}, {{W+|th|ย่อม}}, {{W+|th|สามารถ}}
* {{Z|otk}}: {{W-|otk|𐰆|ts=u-}}
* {{Z|tr}}: {{W+|tr|-ebilmek}}, {{W+|tr|-abilmek}} {{W+|tr|yenmek}}
* {{Z|txb}}: {{W-|txb|yāt-}}
* {{Z|ur}}: {{W-|ur|سکنا|tr=saknā|sc=ur-Arab}}
* {{Z|uk}}: {{W-|uk|могти́|impf}}, {{W-|uk|змогти́|pf}}; {{W-|uk|вмі́ти|impf}}, {{W-|uk|умі́ти|impf}}, {{W-|uk|зумі́ти|pf}}
* {{Z|vec}}: {{W-|vec|poder}}
* {{Z|vi}}: {{W+|vi|có thể}}, {{W+|vi|được}}
* {{Z|wa}}: {{W+|wa|poleur}}, {{W+|wa|saveur}}, {{W+|wa|sawè}}
* {{Z|cy}}: {{W+|cy|gallu}}, {{W+|cy|medru}}
* {{Z|km}}: {{W+|km|បាន|tr=baan}}
* {{Z|yi}}: {{W-|yi|קענען}}
* {{Z|esu}}: {{W-|esu|-yugnga}}
* {{Z|el}}: {{W+|el|μπορώ}}, {{W+|el|δύναμαι}}
*: Kevn: {{W-|grc|δύναμαι}}
* {{Z|za}}: {{W-|za|maenz}}
* {{Z|ase}}: {{W-|ase|S@Sternumhigh-PalmDown-S@Sternumhigh-PalmDown S@Chesthigh-PalmDown-S@Chesthigh-PalmDown}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[şiyan]], [[taqet]], [[hêz]], [[qudret]]
#* {{mk|ku|Bi serketinê wî '''karîna''' xwe nîşan da.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W|tr|edebilme}}, {{W|tr|yapabilme}}, {{W|tr|güç}}, {{W|tr|kudret}}, {{W|tr|erk}}, {{W|tr|yapabilme}}, {{W|tr|nüfuz}}
{{werger-bin}}
{{bend}}
=== Lêker 2 ===
{{lêker|ku|c=x-ngh}}
# [[girîn]]
#: {{mk|ku|Çêla zer ji birsan '''karî'''.}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|cry}}
* {{Z|tr}}: {{W|tr|ağlamak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
ahdbmg1tt0iwi9kwi5wl55o5dhgb90f
6328746
6328745
2026-08-10T22:55:36Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328746
wikitext
text/x-wiki
{{bnr-h|Karîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-karîn.wav|dever=Amed}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|karîn|form=gerguhêz|niha=kar|borî=karî}}
[[Wêne:Olympic-style weight lifting training.JPG|thumb|Ev kes '''dikarin''' tiştên [[giran]] [[hilgirtin|hilgirin]].]]
{{lêker|ku|c=x-gh}}, {{k-ya nerm}}
# [[hêz|Hêz]] / [[taqet]] yan [[hinêr]] yan [[derfet]] / [[delîv]] yan [[zanîn]] hebûn bo kirina tiştekî.
#: {{hevmane|ku|şiyan}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Tu narê firqetê zanî</br>'''Dikarim''' ez tehemmul kim</br>Diyarê kohê Qendîl im}}
# [[qezenc kirin]], [[jê birin]], [[bi ser ketin]]:
#: {{mk|ku|Di avjenîyê de min '''karî''' te.}}
==== Notên bikaranînê ====
{{veşêre-ser|Notên bikaranînê}}
Lêkerên "karîn/kanîn" (anku "şiyan", "hêz hebûn") û "zanîn" bi hin awayan ji lêkerên din yên kurmancî cuda ditewin. Bo nimûne di dema niha de di hin devokan de pêşqertafa "di-" nakeve pêşiya wan. Loma "ez di-kim, tu di-bêjî, ew di-xwe" lê "ez karim, tu zanî, ew kane" (li cihê "ez dikarim, tu dizanî, ew dikane").
Herwiha neyînîkirina wan ne bi "na-" ya giştî lê bi "ni-" ye: Loma "ez na-kim, tu na-çî, ew na-bêje" lê "ez ni-zanim, tu ni-karî, ew nikane".
Herwiha di rewşên din de jî hin cudahî hene. Ji hemû lêkerên din re di raweya şertî de (kondîsyonal yan subjunktîv) bi giştî lêker bi formûlaya "bi- + rehê dema niha + qertafa kesandinê ne": "ez bi-ç-im, tu bi-k-î, ew bi-bêj-e". Ev qaydeya giştî di hin devokan de dîsa li gel lêkerên "karîn/kanîn" û "zanîn" jî li kar e: "ez bi-zan-im, tu bi-kar-î, ew bi-kan-e". Lê di hin devokan de jî ew bi formûlaya "rehê dema niha + -i- + -b- + qertafa kesandinê" tê çêkirin: "ez kar-i-b-im, tu zan-i-bî, ew kan-i-b-e". Di hin devokan de jî îcar ev herdu qayde di heman demê de tên bikaranîn: "ez bi-zan-i-b-im, tu bi-kar-i-bî".
Lê ji van awarteyiyan tenê "ni-" ya neyînîkirinê di kurmancî de di hemû devokan de awrte ye. Lê awarteyiyên din tenê di hin devokan de hene. Devokên din qeydeyên giştî bi kar tînin. Loma divê em di mesela "di-" de li gor qaydeya giştî biçin: "ez dikarim" ne "ez karim". Herwiha ji ber ku "ez bi-zan-im, tu bi-kar-î, ew bi-kan-e" li gor qaydeya giştî ne û formên wek "ez zan-i-bim, tu kar-i-bî, ew kan-i-be" yan jî "ez bi-zan-i-bim, tu bi-kar-i-bî, ew bi-kar-i-be" awarte ne, divê em wek "bizanim, bikarî, bikane" tercih bikin.
Herwiha ev ''karibû'' bi teşeya raboriya dûr ''karîbû'' hemanî nayê lêvandin.
{{veşêre-bin}}
==== Bi alfabeyên din ====
* {{ku-ar|کارین}}
* {{ku-kr|карин}}
==== Formên alternatîv ====
* [[kanîn]]
* {{hw|ku|kaynîn||kurmanciya Xorasanê}}
==== Jê ====
* [[kara]]
==== Etîmolojî ====
Ji {{ji|hy|ku|-}}{{çp}}, bi ermeniya rojava {{g|hy|կարնալ|tr=arenal/garenal}}, ermeniya rojhilat {{g|hy|կարողանալ|tr=karoġanal}}, têkilî ermeniya kevn {{g|xcl|կարող|tr=karoł|w=[[xurt]], [[bihêz]]}} ji {{g|xcl|կար|tr=kar|w=[[hêz]], [[îmkan]]}}.
{{veşêre-ser}}
Di lêkera ermenî de di nava peyvê de hem "r" û hem jî "n" heye loma di hin devokên kurmancî de "karîn" û di hinan de jî "kanîn" e. Di devokên kurmancî yên dûrî ermenî de û di zaravayên din yên kurdî û di zimanên din yên îranî de peyda nabe loma ihtimala ku ji ermenî be gelekî mezin e. Bi hin devokên kurmancî [[şiyan]] e ku [[hevreh]]a [[şiyan]] ([[mimkin]] bûn) ya soranî, [[şayed]] ya ji farisî û [[şikayene, eşkayene, şayene]] ya zazakî ye. Di soranî de [[tiwanîn]] (rehê dema niha "-tiwan-") e ku hevreha {{g|fa|توانستن|tr=tevanesten}} ya farisî ye ku rehê wê yê dema niha "-tevan-" e. Ne têkilî [[can]] (bixwîne: ken yan kan) ya îngilîzî û hevrehên wê yên zimanên cermenî ye ji ber ku eger ew hevreh bûna, "k" ya proto-hindûewropî divê di kurdî de bûbûya "s" û di zimanên cermenî de jî "h". Idiaya [[Şablon:Beghyani|Beghyani]], ku dibêje ji [[kirin]] e, bi ti [[belge]]yan nehatiye [[peyitandin]]. [[Şablon:Hesendost|Hesendost]] bi xeletî li ber peyva "tevanisten" ya farisî nivîsiye: "kirmaşanî: twanîn, karîn, û: karîn, kan, kanî". Di rastiyê de li ber "karîn, -kan-, kanî" diviyabû ku "kurmancî" hatibûya nivîsîn. Bi Kirmaşanî û lekî [[tüenîn]] / [[tüenisin]] e.
Peyva ermenî jî ji zimanekî gurcî-zanî wergirtiye<ref>Ačaṙean, Hračʿeay (1973), “կռիւ”, in Hayerēn armatakan baṙaran [Armenian Etymological Dictionary] (in Armenian), volume II, 2nd edition, a reprint of the original 1926–1935 seven-volume edition, Yerevan: University Press, rûpel 671b http://www.nayiri.com/imagedDictionaryBrowser.jsp?dictionaryId=7&printPage=671&volume=2</ref>, ji proto-gurcî-zanî {{q|ccs-gzn-pro|*ḳar-|w=[[bestin]]}}, ji proto-kartvelî ''[[*ḳar-]]'' ku bûye [[lazî]] {{g|lzz|ო-კორ-უ|tr=o-ǩor-u|w=bestin}}, mingrelî {{g|xmf|კჷრ-უ-ა|w=bestin}}, gurcî {{g|ka|კრვა|tr=ḳrva}}<ref>Klimov, G. A. (1998) Etymological Dictionary of the Kartvelian Languages (Trends in linguistics. Documentation; 16), New York, Berlin: Mouton de Gruyter, rûpel 86 https://archive.org/details/KlimovEtymological/Klimov?view=theater#page/n102/mode/1up</ref><ref>Fähnrich, Heinz (2007) Kartwelisches Etymologisches Wörterbuch [Kartvelian Etymological Dictionary] (Handbuch der Orientalistik; VIII.18) (in German), Leiden, Boston: Brill, rûpel 222 https://archive.org/details/Fahnrich_2007/page/n221/mode/1up?view=theater</ref>... Ev dikare bê maneya ku ew peyveke substrat a hevpar e ku ketiye ermenî û hin zaravayên kurdî ji zimanên [[Qefqaz]]î, lê ew ne[[vebirî]] ye.
Herwiha bi zimanê [[partî]] hatiye qeydkirin ku lêkera {{q|ku|kirin}} bo diyarkirina [[pêkanî|pêkaniya]] tiştek jî li kar bûye.<ref>Dictionary Of Manichean Middle Persian & Parthian by Durkin-Meisterernst, Desmond, rûpel 206, '''kr-, qr- Pa lkar-1 vtr. "to do, make'. Used as an auxiliary verb following a pp. in the 'potentialis', to indicate a possibility, eg MKG(726i fr'm](r)g kyrd kr'n "if- I could make (her) forgetful"''', https://archive.org/details/DictionaryOfMMP/page/n236/mode/1up?q=could</ref>mînak: "''framereg kird keran''" = (ku min wê) bikariya [[bîroke]] bikim (framereg: [[bîroke]] - ji reha fremûşten/ji bîr kirin / kird: kir - dema bihûrî a sade / keran: bikim - kesê yekjimar ê 1. dema niha a bilanî). Di soranî de jî rrewşa pasîf a lêkera "{{g|ckb|کردن}}" wek hevwateya {{g|ckb|شیان|w=mimkin bûn}} tê bikaranîn (wek "dekirêt rû bidat" = "tê kirin ku rû de" anku [[pêkan]] e ku rû de) an jî "deyekat" = ew wî dike/ew dikare... lê ne wek hevmaneya {{g|ckb|tiwanîn|sc=Latn|w=karîn}}. Anku ne ku di zimanên îranî ên din de peyda nabe, [[nexasma]] di zimanên kurdî de.
{{veşêre-bin}}
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W-|sq|mund}}, {{W+|sq|mundem}}
* {{Z|de}}: {{W+|de|können}}
*: {{Z|gsw}}: {{W-|gsw|chöne}}
* {{Z|an}}: {{W-|an|poder}}
* {{Z|rup}}: {{W-|rup|pot}}
* Assamese:
*: {{Z|as}}: {{W-|as|পাৰা}}
*: {{Z|as}}: {{W-|as|পৰা}}
* {{Z|ast}}: {{W+|ast|poder}}
* {{Z|az}}: {{W+|az|bilmək}}, {{W+|az|bacarmaq}}
* {{Z|eu}}: {{W-|eu|ahal izan}}
* {{Z|be}}: {{W-|be|магчы́|impf}}, {{W-|be|змагчы́|pf}}; {{W-|be|уме́ць|impf}}, {{W-|be|ўмець|impf}}, {{W-|be|суме́ць|pf}}
* {{Z|br}}: {{W-|br|gallout}}
* {{Z|bg}}: {{W-|bg|мо́га|impf}}, {{W-|bg|уме́я|impf}}
* {{Z|my}}: {{W+|my|နိုင်|sc=Mymr}}
* {{Z|cs}}: {{W-|cs|moci}}, {{W-|cs|umět}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|識得|tr=sik1 dak1}}
*: {{Z|cmn}}: {{W+|cmn|會|tr=huì}}, {{W+|cmn|能|tr=néng}}, /{{W+|cmn|不了|tr=-buliǎo}}}}, {{W+|cmn|能夠|tr=nénggòu}}
*: {{Z|nan}}: {{W+|nan|會得|tr=ē-tit}}, {{W+|nan|會當|tr=ē-tàng}}, {{W-|nan|會凍|tr=ē-tàng}}
* {{Z|dlm}}: {{W-|dlm|potar}}
* {{Z|da}}: {{W-|da|kunne}}
* {{Z|id}}: {{W+|id|boleh}}, {{W+|id|bisa}}
* {{Z|ar}}: {{W-|ar|قَدَرَ}}, {{W-|ar|اِسْتَطَاعَ}}, {{W-|ar|أَمْكَنَ}}
*: {{Z|arz}}: {{W-|arz|قدر|tr=ʾadar|sc=Arab}}
* {{Z|hy}}: {{W+|hy|կարողանալ}}, {{W+|hy|կրնալ}}
* {{Z|eo}}: {{W+|eo|povi}}
* {{Z|et}}: {{W-|et|osata}}, {{W-|et|võima}}
* {{Z|fa}}: {{W-|fa|توانستن|tr=tavânestan}}, {{W-|fa|قادر بودن}}
* {{Z|fo}}: {{W+|fo|kunna}}
* {{Z|fi}}: {{W+|fi|osata}}, {{W+|fi|voida}}, {{W+|fi|pystyä}}
* {{Z|frp}}: {{W-|frp|povêr}}, {{W-|frp|possêr}}
* {{Z|fr}}: {{W+|fr|pouvoir}}
* {{Z|fur}}: {{W-|fur|podê}}
* {{Z|frr}}: {{W-|frr|koone}}, {{W-|frr|kön}}, {{W-|frr|kan}}
* {{Z|ofs}}: {{W-|ofs|kunna}}
* {{Z|stq}}: {{W-|stq|konne}}
* {{Z|gd}}: {{W-|gd|'s urrainn do}}, {{W-|gd|faod}}
* {{Z|gl}}: {{W+|gl|poder}}
* {{Z|roa-gal}}: {{W-|roa-gal|póeir}}
* {{Z|got}}: {{W-|got|𐌼𐌰𐌲𐌰𐌽}}, {{W-|got|𐌺𐌿𐌽𐌽𐌰𐌽}}
* {{Z|ka}}: {{W-|ka|შეუძლია}}
* {{Z|ht}}: {{W-|ht|ka}}, {{W-|ht|kapab}}, {{W-|ht|kab}}
* {{Z|hi}}: {{W-|hi|सकना}}, {{W-|hi|समर्थ होना}}
* {{Z|nl}}: {{W+|nl|kunnen}}, {{W+|nl|vermogen}}
* {{Z|he}}: {{W+|he|יכול|n|tr=yakhól|cuda=יכול / יָכֹל}}, {{W-|he|מסוגל|n|tr=m'sugál|cuda=מסוגל / מְסֻגָּל}}
* {{Z|ang}}: {{W-|ang|magan}}, {{W-|ang|cunnan}}
* {{Z|ga}}: {{W-|ga|is féidir le}}, {{W-|ga|tig le}}, {{W-|ga|féad}}, {{W-|ga|bí}} {{W-|ga|in ann}}
*: {{Z|sga}}: {{W-|sga|con·icc}}
* {{Z|it}}: {{W+|it|potere}}, {{W+|it|riuscire}}, {{W+|it|sapere}}
* {{Z|is}}: {{W+|is|geta}}
* {{Z|ja}}: {{W+|ja|できる|tr=dekiru|sc=Jpan}}, {{W+|ja|れる|cuda=-れる|tr=-reru|sc=Jpan}}, {{W+|ja|られる|cuda=-られる|tr=-rareru|sc=Jpan}}
* {{Z|kn}}: {{W+|kn|ಬಹುದು}}
* {{Z|ca}}: {{W-|ca|poder}}, {{W-|ca|poguer}}
* {{Z|qu}}: {{W+|qu|atiy}}
* {{Z|gil}}: {{W-|gil|kona}}
* {{Z|ko}}: {{W-|ko|수|cuda=...을/ᄅ 수 있다|tr=...-l su itda}}, {{W+|ko|eu}}
* {{Z|kw}}: {{W-|kw|gallos}}
* {{Z|la}}: {{W+|la|possum}}, {{W-|la|queo}}, {{W+|la|scio}}
* {{Z|lv}}: {{W+|lv|prast}}, {{W+|lv|spēt}}, {{W+|lv|varēt}}
* {{Z|lo}}: {{W-|lo|ໄດ້}}
* {{Z|lt}}: {{W+|lt|galėti}}
* {{Z|liv}}: {{W-|liv|mȯistõ}}, {{W-|liv|võidõ}}
* {{Z|khb}}: {{W-|khb|ᦺᦡᧉ}}
* {{Z|lb}}: {{W+|lb|kënnen}}
* {{Z|mk}}: {{W-|mk|може}}
* {{Z|ml}}: {{W-|ml|കഴിയും}}
* {{Z|ms}}: {{W-|ms|dapat}}, {{W-|ms|boleh}}, {{W+|ms|bisa}}
* {{Z|mt}}: {{W-|mt|seta'}}
* {{Z|gv}}: {{W-|gv|jarg}}
* {{Z|hu}}: {{W+|hu|tud}}, {{W+|hu|képes}}
* {{Z|mn}}: {{W+|mn|чадах}}, {{W-|mn|ᠴᠢᠳᠠᠬᠤ}}
* {{Z|nah}}: {{W-|nah|huelīti}}
* {{Z|nap}}: {{W-|nap|putè}}
* {{Z|nds}}: {{W-|nds|könen}}
* {{Z|no}}: {{W+|no|kunne}}
* {{Z|oc}}: {{W-|oc|pòder}}, {{W-|oc|podre}}
* {{Z|ppl}}: {{W-|ppl|weli}}, {{W-|ppl|hueli}}
* {{Z|pl}}: {{W+|pl|móc}}, {{W+|pl|umieć}}, {{W+|pl|potrafić}}
* {{Z|pt}}: {{W+|pt|conseguir}}, {{W+|pt|saber}}
* {{Z|rm}}: {{W-|rm|pudair}}, {{W-|rm|puder}}, {{W-|rm|pudeir}}
* {{Z|ro}}: {{W+|ro|putea}}
* {{Z|ru}}: {{W+|ru|мочь|impf}}, {{W+|ru|смочь|pf}}, {{W-|ru|уме́ть|impf}}, {{W-|ru|быть в состоя́нии}}
* {{Z|osx}}: {{W-|osx|kunnan}}
* {{Z|sc}}: {{W-|sc|podere}}, {{W-|sc|podi}}, {{W-|sc|podiri}}, {{W-|sc|pori}}, {{W-|sc|porrere}}, {{W-|sc|potere}}
* {{Z|scn}}: {{W+|scn|putiri}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|моћи}}, {{W-|sh|умети}}, {{W-|sh|умјети}}
*: Latînî: {{W+|sh|moći}}, {{W+|sh|umeti}}, {{W+|sh|umjeti}}
* {{Z|syl}}: {{W-|syl|ꠙꠣꠞꠣ}}
* {{Z|sk}}: {{W-|sk|môcť}}
* {{Z|sl}}: {{W+|sl|moči}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|móc}}
* {{Z|es}}: {{W+|es|poder}}, {{W+|es|saber}}
* {{Z|sv}}: {{W+|sv|kunna}}
* {{Z|zdj}}: {{W-|zdj|djua|cuda=udjua}}
* {{Z|ta}}: {{W-|ta|செய்யக்கூடிய}}
* {{Z|th}}: {{W+|th|ได้}}, {{W+|th|ย่อม}}, {{W+|th|สามารถ}}
* {{Z|otk}}: {{W-|otk|𐰆|ts=u-}}
* {{Z|tr}}: {{W+|tr|-ebilmek}}, {{W+|tr|-abilmek}} {{W+|tr|yenmek}}
* {{Z|txb}}: {{W-|txb|yāt-}}
* {{Z|ur}}: {{W-|ur|سکنا|tr=saknā|sc=ur-Arab}}
* {{Z|uk}}: {{W-|uk|могти́|impf}}, {{W-|uk|змогти́|pf}}; {{W-|uk|вмі́ти|impf}}, {{W-|uk|умі́ти|impf}}, {{W-|uk|зумі́ти|pf}}
* {{Z|vec}}: {{W-|vec|poder}}
* {{Z|vi}}: {{W+|vi|có thể}}, {{W+|vi|được}}
* {{Z|wa}}: {{W+|wa|poleur}}, {{W+|wa|saveur}}, {{W+|wa|sawè}}
* {{Z|cy}}: {{W+|cy|gallu}}, {{W+|cy|medru}}
* {{Z|km}}: {{W+|km|បាន|tr=baan}}
* {{Z|yi}}: {{W-|yi|קענען}}
* {{Z|esu}}: {{W-|esu|-yugnga}}
* {{Z|el}}: {{W+|el|μπορώ}}, {{W+|el|δύναμαι}}
*: Kevn: {{W-|grc|δύναμαι}}
* {{Z|za}}: {{W-|za|maenz}}
* {{Z|ase}}: {{W-|ase|S@Sternumhigh-PalmDown-S@Sternumhigh-PalmDown S@Chesthigh-PalmDown-S@Chesthigh-PalmDown}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[şiyan]], [[taqet]], [[hêz]], [[qudret]]
#* {{mk|ku|Bi serketinê wî '''karîna''' xwe nîşan da.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W|tr|edebilme}}, {{W|tr|yapabilme}}, {{W|tr|güç}}, {{W|tr|kudret}}, {{W|tr|erk}}, {{W|tr|yapabilme}}, {{W|tr|nüfuz}}
{{werger-bin}}
{{bend}}
=== Lêker 2 ===
{{lêker|ku|c=x-ngh}}
# [[girîn]]
#: {{mk|ku|Çêla zer ji birsan '''karî'''.}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|cry}}
* {{Z|tr}}: {{W|tr|ağlamak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
aieqqxr64wsjes1spom7wmdqo9jam8p
evd
0
4048
6328758
6292912
2026-08-10T23:55:46Z
M Ali Kara
10150
/* Navdêr */
6328758
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* [[']]evd
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-evd.wav|dever=Wan}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# [[benî]], [[kole]], kesa/ê [[neçar]] e hemî jiyana xwe [[belaş]] bo kesek din [[xebitîn|dixebite]] ango [[kar]] dike
#* {{bêmînak|ku}}
# kesa/ê ku [[maf]] nîne bi xwe [[biryar]]an li ser karên xwe bide
#* {{bêmînak|ku}}
# kesa/ê [[binemrî]] [[xweda|Xwedê]] yan [[xweda]]yan
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|عهڤد}}
==== Formên alternatîv ====
{{kol3|ku
|'abd
|ebd
|'ebd
|'evd
}}
==== Dijmane ====
{{kol3|ku
|azad
|serbest
}}
==== Bide ber ====
{{kol3|ku
|[[xulam]], [[noker]], [[bindest]], [[benî]], [[girtî]], [[dîl]], [[zindanî]]
|[[rizgar]], [[serbest]], [[serbixwe]], [[xweser]], [[berdayî]]
}}
==== Jê ====
{{kol3|ku|cure=Jê
|kirin evd<q:lêker>
|evdbûn<q:navdêr>
|Evdal
|Evdile
|evdî
|evdîtî
}}
==== Etîmolojî ====
Ji {{ji|ar|ku|عبد}} ('ebd), [[hevreh]]a aramî [[ܥܒܕܐ]] / [[עבדא]] ('ebda), erebiya başûrî ya kevirî [[𐩲𐩨𐩵]] ('bd), îbrî [[עבד]] (êved). Ji heman rehî: [[abid]], [[abide]], [[ibadet]], [[ibadetullah]], [[me'bûd]], [[me'bed]], [[ubûdiyet]]...
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Diener}} {{n}}
* {{Z|fa}}: {{W|fa|عبد}}, {{W|fa|بنده}}, {{W|fa|غلام بنده}}
* {{Z|en}}: {{W|en|slave}}
* {{Z|tr}}: {{W|tr|kul}}
{{werger-bin}}
lgvhfmr54kgz9ir9wp5mrzrs5ipi5b3
6328763
6328758
2026-08-11T00:12:40Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6328763
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{g|ku|'}}evd
* {{ku-IPA|'evd}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-evd.wav|dever=Wan}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# Kesê [[neçar]] e [[hemî|hemî]] [[jiyan|jiyana]] xwe [[belaş]] bo kesek din [[xebitîn|dixebite]].
#: {{hevmane|ku|benî|kole}}
#* {{bêmînak|ku}}
# Kesê ku [[maf]] nîne bi xwe [[biryar]]an li ser karên xwe bide.
#* {{bêmînak|ku}}
# Kesê [[binemrî]] [[xweda|Xwedê]] yan [[xweda]]yan.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|عهڤد}}
==== Formên alternatîv ====
{{kol3|ku
|'abd
|ebd
|'ebd
|'evd
}}
==== Dijmane ====
{{kol3|ku
|azad
|serbest
}}
==== Bide ber ====
{{kol3|ku
|[[xulam]], [[noker]], [[bindest]], [[benî]], [[girtî]], [[dîl]], [[zindanî]]
|[[rizgar]], [[serbest]], [[serbixwe]], [[xweser]], [[berdayî]]
}}
==== Jê ====
{{kol3|ku|cure=Jê
|kirin evd<q:lêker>
|evdbûn<q:navdêr>
|Evdal
|Evdile
|evdî
|evdîtî
}}
==== Etîmolojî ====
Ji {{ji|ar|ku|عبد}} ('ebd), hevreha {{hv|arc|ܥܒܕܐ}} / [[עבדא]] ('ebda), erebiya başûrî ya kevirî [[𐩲𐩨𐩵]] ('bd), {{hv|he|עבד}} (êved). Ji heman rehî: [[abid]], [[abide]], [[ibadet]], [[ibadetullah]], [[me'bûd]], [[me'bed]], [[ubûdiyet]]...
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Diener}} {{n}}
* {{Z|fa}}: {{W|fa|عبد}}, {{W|fa|بنده}}, {{W|fa|غلام بنده}}
* {{Z|en}}: {{W|en|slave}}
* {{Z|tr}}: {{W|tr|kul}}
{{werger-bin}}
rwuarxzrgj279xoasijj893wtvc4vwg
6328843
6328763
2026-08-11T00:41:29Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328843
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{g|ku|'}}evd
* {{ku-IPA|'evd}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-evd.wav|dever=Wan}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# Kesê [[neçar]] e [[hemî|hemî]] [[jiyan|jiyana]] xwe [[belaş]] bo kesek din [[xebitîn|dixebite]].
#: {{hevmane|ku|benî|kole}}
#* {{bêmînak|ku}}
# Kesê ku [[maf]] nîne bi xwe [[biryar]]an li ser karên xwe bide.
#* {{bêmînak|ku}}
# Kesê [[binemrî]] [[xweda|Xwedê]] yan [[xweda]]yan.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|عهڤد}}
==== Formên alternatîv ====
{{kol3|ku
|'abd
|ebd
|'ebd
|'evd
}}
==== Dijmane ====
{{kol3|ku
|azad
|serbest
}}
==== Jê ====
{{kol3|ku|cure=Jê
|kirin evd<q:lêker>
|evdbûn<q:navdêr>
|Evdal
|Evdile
|evdî
|evdîtî
}}
==== Etîmolojî ====
Ji {{ji|ar|ku|عبد}} ('ebd), hevreha {{hv|arc|ܥܒܕܐ}} / [[עבדא]] ('ebda), erebiya başûrî ya kevirî [[𐩲𐩨𐩵]] ('bd), {{hv|he|עבד}} (êved). Ji heman rehî: [[abid]], [[abide]], [[ibadet]], [[ibadetullah]], [[me'bûd]], [[me'bed]], [[ubûdiyet]]...
==== Bide ber ====
{{kol3|ku
|[[xulam]], [[noker]], [[bindest]], [[benî]], [[girtî]], [[dîl]], [[zindanî]]
|[[rizgar]], [[serbest]], [[serbixwe]], [[xweser]], [[berdayî]]
}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Diener}} {{n}}
* {{Z|fa}}: {{W|fa|عبد}}, {{W|fa|بنده}}, {{W|fa|غلام بنده}}
* {{Z|en}}: {{W|en|slave}}
* {{Z|tr}}: {{W|tr|kul}}
{{werger-bin}}
ai2nurq6nrsjn081tpuwtvpxgwje73h
6328856
6328843
2026-08-11T01:12:10Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6328856
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{g|ku|'}}evd
* {{ku-IPA|'evd}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-evd.wav|dever=Wan}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# Kesê [[neçar]] e [[hemî]] [[jiyan]]a xwe [[belaş]] bo kesek din [[xebitîn|dixebite]].
#: {{hevmane|ku|benî|kole}}
#* {{bêmînak|ku}}
# Kesê ku [[maf]] nîne bi xwe [[biryar]]an li ser karên xwe bide.
#* {{bêmînak|ku}}
# Kesê [[binemrî]] [[xweda|Xwedê]] yan [[xweda]]yan.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|عهڤد}}
==== Formên alternatîv ====
{{kol3|ku
|'abd
|ebd
|'ebd
|'evd
}}
==== Dijmane ====
{{kol3|ku
|azad
|serbest
}}
==== Jê ====
{{kol3|ku|cure=Jê
|kirin evd<q:lêker>
|evdbûn<q:navdêr>
|Evdal
|Evdile
|evdî
|evdîtî
}}
==== Etîmolojî ====
Ji {{ji|ar|ku|عبد}} ('ebd), hevreha {{hv|arc|ܥܒܕܐ}} / [[עבדא]] ('ebda), erebiya başûrî ya kevirî [[𐩲𐩨𐩵]] ('bd), {{hv|he|עבד}} (êved). Ji heman rehî: [[abid]], [[abide]], [[ibadet]], [[ibadetullah]], [[me'bûd]], [[me'bed]], [[ubûdiyet]]...
==== Bide ber ====
{{kol3|ku
|[[xulam]], [[noker]], [[bindest]], [[benî]], [[girtî]], [[dîl]], [[zindanî]]
|[[rizgar]], [[serbest]], [[serbixwe]], [[xweser]], [[berdayî]]
}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Diener}} {{n}}
* {{Z|fa}}: {{W|fa|عبد}}, {{W|fa|بنده}}, {{W|fa|غلام بنده}}
* {{Z|en}}: {{W|en|slave}}
* {{Z|tr}}: {{W|tr|kul}}
{{werger-bin}}
ak8wufol79n3abb2mgidp5ntsk5kwae
bizin
0
5362
6328821
6301948
2026-08-11T00:29:12Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328821
wikitext
text/x-wiki
{{bnr-h|bizîn|bîzin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/bɪ'zɪn/}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-bizin.wav|dever=Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-bizin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Domestic goat kid in capeweed.jpg|thumb|300px|Bizinek]]
{{navdêr|ku|z=m}}
# {{f|ku|guhandar}} [[heywan|Heywan]]eke [[kedî]] ya [[guhandar]] û [[têr-mû]] ye.
#* {{jêder-malper|ku|jêgirtin=Di nav kerîyê pez de '''bizineke''' nebixêr, nesitirî, ziyankar û çilek hebû, wexta kerî nêzî zevîyekî biçûya '''bizina''' ziyankar Kolê berê xwe dida zeviyê zerar didayê.|sernav=Remo û Bizina çilek|sal=2012|url=https://demacirok.wordpress.com/2012/11/08/remo-u-bizina-cilek/|malper=demacirok.wordpress.com}}
#* {{jêder-kovar|ku|jêgirtin='''Bizina''' pîrê çu çolê<br>Lê da berf û bagerê<br>Piriq derket ji malê<br>He! he!...|kovar=Hawar |sernav=Bizina Pîrê |nivîskar= Herekol Azîzan |weşanxane=Nûdem|hejmar=8|sal=1932-1933|rûpel=3|cîld=1}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|بزن}}
* {{ku-kr|бьзьн}}
==== Formên alternatîv ====
* [[bizn]]
==== Navê zanistî ====
* ''[[Capra hircus]]''
==== Jê ====
* [[bizinkûvî]]
* [[bizinmişk]]
==== Têkildar ====
{{stûn|
* [[nêrî]]
* [[karik]]
* [[gîsk]]
* [[kerî]]
* [[kewal]]
* [[sewal]]
* [[terş]]
* [[tewal]]
* [[tiştîr]] / [[tiştûr]]
}}
==== Etîmolojî ====
Hevreh soranî {{g|ckb|بزن|tr=bizin, bizn}}, kurdiya başûrî {{q|sdh|bizin|sc=Latn}}, lekî {{q|lki|bizin|sc=Latn}} û {{q|lki|biz|sc=Latn}}, zazakî {{q|zza|bize}}, hewramî {{q|hac|بزه|tr=bize}}, belûçî {{g|bal|بز|tr=buz}}, farisî {{g|fa|بز}} (berê "buz", niha "boz"), tacikî {{g|tg|буз|tr=buz}}, pertî ''wiz'', pêştûyî {{g|pa|وز|tr=wiz}}, pehlewî {{g|pal||tr=bûz}}, avestayî {{g|ae|𐬠𐬏𐬰𐬀|tr=būze|w=[[beran]], ?[[nêrî]]}}, ermenî {{g|hy|բուծ|tr=bûç|w=[[karik]]}}, sanskrîtî {{g|sa|बुक्क|tr=bukke|w=[[nêrî]]}}, îngilîziya kevn {{q|agn|buc}} / {{q|ang|bucca|w=[[nêrî]]}}, îngilîziya nû {{q|en|buck|w=heywanê nêr}}, almanî {{q|de|Bock|w=[[nêrî]], heywanê nêr}}, holendî {{q|nl|bok|w=[[nêrî]]}}, swêdî {{q|sv|bock|w=[[nêrî]]}}, danmarkî {{q|da|buk}}, norwecî {{q|no|bukk}}... hemû ji {{ji|ine-pro|ku|*bʰuǵ-}}.
Peyva îranî wek {{g|xcl|բզաք|tr=bzakʿ}} ketibû ermeniya kevn.
{{q|ku|-in}} ya dawiya peyva ''bizin'' [[paşgir]]eke kevnar e ku peyvan dike [[mê]] û belkî [[hevreh]]a paşgira çalak ya almanî {{q|ku|-in}} û ya ne-çalak ya îngilîzî {{q|en|-en}} be. Binêre {{q|ku|nogin}} û dibe ku herwiha {{q|ku|kîr kujin}}.
;{{biçûk|Çavkanî:
* {{Rastorgujeva|r=191-192}}
* {{Horn|r=49}}
* {{Watkins|r=13}}
* {{Etymonline}}
* {{Pokorny|r=161}}
}}
==== Bide ber ====
* [[mih]], [[mî]]
==== Zayend ====
{{agadarî}} ''Bizin'' bi maneya heywana kedî ya mê peyvek zayendmê ye: ''bizina me, bizineke spî''... Lê ew herwiha wek peyvek zayendnêr jî tê bikaranîn: ''Biz(i)nê me li çolê diçere.'' Li vê derê ew bi maneya [[terş]] e anku hem bizin û hem jî [[nêrî]].
==== Cûnên bizin û mihan ====
* [[hoş]], [[poş]]: bizna têkde reş û guhboz.
* [[hemis]], [[himbis]]: bizna reşa navçav û alekên wê gîxên spî yan sorekî vekirî pêde hatîn û binzik û dehmen spî yan sor.
* [[hemdanî]]: cûnekî pezî ye: cûnê pezekî guhdirêj û guhpan û hirîkurt û dûngşor e.
* [[çûr]], [[çûr]]: cûne bizneka hûr û têrşîr û mûxelek e, mûyê wê merez e, şel û şepik jê diêne çêkirin.
* [[çal]]: bizna hemû leşê wê reş, tenê enîya wê pinîyeka spî lê..
* [[kerîs]], [[kurrîs]]: miha guhên wê qut û kurtik.
* [[kewîs]], [[kewîsar]], [[kewîser]]: miha leşê wê spî û navçav zîwanî pinîyên reş yan sor lê û guhên wê boz. Gelek cûn jê hene
* [[riser]]: miha rengê navçavan di navbera reş û qehweyî de yan bi ser reşekî xwelîkî ve..
* [[tebeş]]: Miha navçav û ser û guh pêk ve reng xwelîkî.
;{{biçûk|Çavkanî:
* Îsmaîl Şahîn di {{kzk}} de, 12/2012
}}
==== Gotinên pêşiyan ====
{{stûn|
* Berû da bizinê, dest avête qarçikê
* Bizin bizin e, pêşî cihê xwe pêkol dike, dû re mexel tê
* Bizin firot bi hefta, bezê wê kirî bi heyşta
* Bizin ketiye derdê serê xwe, şivan ketiye derdê bezê bizinê
* Bizin mir, girr damirî
* Bizina kol elimiye [[danok]]an
* Bizina kol hîn bûye [[danî|daniyên]] sor
* Bizina kulek û şivanê [[bezek]] (sivik) tev digehên ber derî
* Bizina nehletî, dev lêketî
* Bizina reş e, her roj nexweş e
* Bizina gurî, ber dêwir tiqurrî
* Bizinê ji mihê ra got; min ewa te dît
* Bizinê kulek tim ê çilek e
* Bi vî devî bi vê qûnê, here diziya bizinê
* Dinê li dinê, çavê gur li bizinê
* Ecela bizinê ku tê, nanê şivanî dixwe
* Ga guherande bizinê, bizin jî guherande mirîşkê
* Here diziya bizinê
* Kara li şûnê, bizinê li mexelê
* Meha adarê, av firî serê darê, bizin kalî ser karê, nîşanên biharê
* Mî bi piyê xwe, bizin bi piyê xwe
* Mî bi nigên xwe, bizin bi nigên xwe
* Pişta bizinê xurî, hat nanê şivên bixwe
* Şêwra jinan, beriya bizinan
* Şorê mîna tira Bizina ye
* Wek berxa ber bizinê
* Wek bizina ku ji ber ecela xwe bireve
}}
==== Werger ====
{{werger-ser}}
* {{Z|ab}}: {{W-|ab|аџьма|sc=Cyrl}}, {{W-|ab|аџьмаб|sc=Cyrl}}
* {{Z|ace}}: {{W-|ace|kamèng}}
* {{Z|ady}}: {{W-|ady|пчэны}}
* {{Z|af}}: {{W+|af|bok}}
* {{Z|xag}}: {{W-|xag|𐕛𐔴𐔾}}
* {{Z|akk}}: {{W-|akk|𒍚|tr=enzu|sc=Xsux}}
* {{Z|ak}}: {{W-|ak|abirekyie}}
* {{Z|sq}}: {{W+|sq|dhi|m}}, {{W+|sq|berk|n}}
* {{Z|de}}: {{W+|de|Ziege|m}}, {{W+|de|Geiß|m}}, {{W+|de|Bock|n}}
*: {{Z|gsw}}: {{W-|gsw|Geiss|m}}
*: {{Z|bar}}: {{W-|bar|Goaß|m}}
*: {{Z|gmh}}: {{W-|gmh|geiz|m}}, {{W-|gmh|zige|m}}
*: {{Z|goh}}: {{W-|goh|geiz|m}}, {{W-|goh|ziga|m}}
* {{Z|am}}: {{W+|am|ፍየል|sc=Ethi}}
* {{Z|amu}}: {{W-|amu|kínch'ió}}
* {{Z|an}}: {{W+|an|craba|m}}, {{W+|an|crapa|m}}
* {{Z|aii}}: {{W-|aii|ܥܸܙܵܐ|tr=ʿizza|n}}
* {{Z|arw}}: {{W-|arw|kabaritu}}
* {{Z|rup}}: {{W-|rup|caprã|m}}
* {{Z|as}}: {{W-|as|ছাগলী}}, {{W-|as|ছাগল|n}}
* {{Z|ast}}: {{W+|ast|cabra|m}}
* {{Z|tay}}: {{W-|tay|mit qnahi}}
* {{Z|av}}: {{W-|av|цӏцӏе|sc=Cyrl}}, {{W-|av|дегӏен|sc=Cyrl}}
* {{Z|az}}: {{W+|az|keçi}}, {{W-|az|təkə|n}}
* {{Z|eu}}: {{W-|eu|ahuntz|m}}, {{W-|eu|aker|n}}
* {{Z|ba}}: {{W-|ba|кәзә|sc=Cyrl}}
* {{Z|bbl}}: {{W-|bbl|გაზაჼ}}
* {{Z|be}}: {{W-|be|каза́|m}}, {{W-|be|казёл|n}}
* {{Z|blm}}: {{W-|blm|binya}} {{W-|blm|kpitɔ binya|n}}
* {{Z|bn}}: {{W+|bn|ছাগল}}, {{W-|bn|বকরা}}
* {{Z|bqi}}: {{W-|bqi|بز|tr=boz|sc=fa-Arab}}
* {{Z|bcl}}: {{W-|bcl|kanding}}
* {{Z|br}}: {{W+|br|gavr|m}}
* {{Z|bug}}: {{W-|bug|bembe}}
* {{Z|bg}}: {{W+|bg|коза́|m}}, {{W+|bg|козе́л|n}}
* {{Z|my}}: {{W+|my|ဆိတ်|sc=Mymr}}
* {{Z|bua}}: {{W-|bua|ямаан}}
* {{Z|kac}}: {{W-|kac|bainam}}
* {{Z|cja}}: {{W-|cja|ڤبي}}
* {{Z|ce}}: {{W-|ce|газа}}, {{W-|ce|бож}}
* {{Z|cs}}: {{W+|cs|koza|m}}, {{W+|cs|kozel|n}}
* {{Z|chr}}: {{W-|chr|ᎤᎦᏐᏣᏁᏛ}}
* {{Z|chy}}: {{W-|chy|mé'hahtsékósa}}
* {{Z|ny}}: {{W-|ny|mbuzi}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|山羊|tr=saan1 joeng4}}
*: {{Z|hak}}: {{W-|hak|山羊|tr=sân-yòng}}
*: {{Z|cmn}}: {{W+|cmn|羊|tr=yáng}}, {{W+|cmn|山羊|tr=shānyáng}}
*: {{Z|nan}}: {{W+|nan|山羊|tr=soaⁿ-iûⁿ}}
* {{Z|cv}}: {{W-|cv|качака|sc=Cyrl}}
* {{Z|da}}: {{W+|da|ged|g}}
* {{Z|dta}}: {{W-|dta|ima}}
* {{Z|dtp}}: {{W-|dtp|kambing}}
* {{Z|ovd}}: {{W-|ovd|djiet|g}}
* {{Z|avd}}: {{W-|avd|بیز|tr=biz}}
* {{Z|egl}}: {{W-|egl|chèvra|m}}
* {{Z|id}}: {{W+|id|kambing}}
* {{Z|ar}}: {{W-|ar|مَاعِز|n}}, {{W-|ar|عَنْزَة|m}}
*: {{Z|arz}}: {{W-|arz|معز|n|tr=maʕz}}, {{W-|arz|معزة|m|tr=maʕza}}
*: {{Z|arz}}: {{W-|arz|سخل|m|tr=saχel|sc=Arab}}
*: {{Z|arz}}: {{W-|arz|عنزة|m|tr=ʿanze|sc=Arab}}
*: {{Z|arz}}: {{W-|arz|عتروس|m|tr=ʿatrous|sc=Arab}}
* {{Z|hy}}: {{W+|hy|այծ}}, {{W+|hy|նոխազ}}, {{W+|hy|քոշ}}, {{W+|hy|քաղ}}
*: {{Z|xcl}}: {{W-|xcl|այծ|sc=Armn}}, {{W-|xcl|նոխազ|sc=Armn}}, {{W-|xcl|քօշ|sc=Armn}}, {{W-|xcl|քաղ|sc=Armn}}
* {{Z|myv}}: {{W-|myv|сея}}
* {{Z|eo}}: {{W-|eo|kapro}}
* {{Z|et}}: {{W+|et|kits}}
* {{Z|evn}}: {{W-|evn|каир}}
* {{Z|ee}}: {{W-|ee|gbɔ̃|nt}}
* {{Z|gur}}: {{W-|gur|bʋa}}
* {{Z|fa}}: {{W+|fa|بز|tr=boz}}
* {{Z|fo}}: {{W-|fo|geit|m}}
* {{Z|fi}}: {{W+|fi|vuohi}}
* {{Z|frp}}: {{W-|frp|cabra|m}}, {{W-|frp|chèvra|m}}
* {{Z|fr}}: {{W+|fr|chèvre|m}}, {{W+|fr|bouc|n}}, {{W+|fr|bique|m}}
* {{Z|fur}}: {{W-|fur|cjavre|m}}, {{W-|fur|čhavre|m}}
* {{Z|stq}}: {{W-|stq|Sääge|m}}
* {{Z|fy}}: {{W-|fy|geit|m}}
* {{Z|gd}}: {{W+|gd|gobhar|n|m}}
* {{Z|gl}}: {{W+|gl|cabra|m}}, {{W-|gl|godalla|m}}, {{W-|gl|xena|m}}, {{W-|gl|cabuxa|m}}, {{W-|gl|neixente|n}}, {{W-|gl|bodeseixo|n}}, {{W+|gl|barbada|m}}, {{W-|gl|guenepa|m}}
* {{Z|got}}: {{W-|got|𐌲𐌰𐌹𐍄𐍃}}
* {{Z|gu}}: {{W+|gu|બકરી|m}}
* {{Z|ka}}: {{W-|ka|თხა|sc=Geor}}, {{W-|ka|ქოშიკი|sc=Geor}}
* {{Z|gn}}: {{W-|gn|kavara}}
* {{Z|ht}}: {{W-|ht|kabrit}}
* {{Z|ha}}: {{W-|ha|bunsuru}}
* {{Z|hi}}: {{W+|hi|बकरी|m}}
* {{Z|nl}}: {{W+|nl|geit|m}}, {{W+|nl|bok|n}}
* {{Z|he}}: {{W+|he|עֵז|m|tr=ez}}
* {{Z|io}}: {{W+|io|kapro}}
* {{Z|ang}}: {{W-|ang|gāt|m}}
* {{Z|enm}}: {{W-|enm|goot}}
* {{Z|en}}: {{W+|en|goat}}
* {{Z|izh}}: {{W-|izh|voohi}}
* {{Z|inh}}: {{W-|inh|газа}}
* {{Z|ia}}: {{W-|ia|capra}}
* {{Z|ga}}: {{W+|ga|gabhar|n}}
*: {{Z|sga}}: {{W-|sga|gabor|n|id=goat}}
* {{Z|ist}}: {{W-|ist|càvara|m}}
* {{Z|it}}: {{W+|it|capra|m}}
* {{Z|ivv}}: {{W-|ivv|kaddin}}
* {{Z|is}}: {{W+|is|geit|m}}
* {{Z|ja}}: {{W+|ja|ヤギ|tr=yagi|sc=Jpan}}, {{W+|ja|山羊|tr=やぎ, yagi|sc=Jpan}}
* {{Z|kaw}}: {{W-|kaw|kambiṅ}}, {{W-|kaw|wĕḍus}}, {{W-|kaw|wiwi}}
* {{Z|jv}}: {{W+|jv|wedhus}}
* {{Z|kbd}}: {{W-|kbd|бжэн}}
* {{Z|kl}}: {{W-|kl|savaasaq}}
* {{Z|xal}}: {{W-|xal|яман}}
* {{Z|kn}}: {{W+|kn|ಮೇಕೆ|sc=Knda}}
* {{Z|pam}}: {{W-|pam|kambing}}
* {{Z|krl}}: {{W-|krl|čiba}}
* {{Z|csb}}: {{W-|csb|kòza|m}}
* {{Z|ca}}: {{W+|ca|cabra|m}}
* {{Z|qu}}: {{W-|qu|kawra}}
* {{Z|ks}}: {{W+|ks|ژھاوُل|n}}, {{W+|ks|ژھاوٕج|m}}
* {{Z|klj}}: {{W-|klj|göčü}}
* {{Z|ky}}: {{W+|ky|эчки}}
* {{Z|kg}}: {{W-|kg|nkombo}}
* {{Z|ki}}: {{W-|ki|mbũri}}, {{W-|ki|harika}}
* {{Z|si}}: {{W-|si|ළුළුවා|sc=Sinh}}
* {{Z|rw}}: {{W-|rw|ihene|c9|c10}}, {{W-|rw|impene}}
* {{Z|koi}}: {{W-|koi|кӧза}}
* {{Z|ko}}: {{W+|ko|염소}}, {{W-|ko|산양}}
* {{Z|kw}}: {{W-|kw|gaver|m}}
* {{Z|co}}: {{W+|co|capra|m}}
* {{Z|mfe}}: {{W-|mfe|kabri}}
* {{Z|crs}}: {{W-|crs|kabri}}
* {{Z|kum}}: {{W-|kum|эчки}}
* {{Z|lld}}: {{W-|lld|cioura}}, {{W-|lld|cëura|m}}
* {{Z|lbe}}: {{W-|lbe|цӏуку}}, {{W-|lbe|кьяца}}
* {{Z|ltg}}: {{W-|ltg|koza|m}}, {{W-|ltg|uozs|n}}
* {{Z|la}}: {{W+|la|caper|n}}, {{W-|la|capra|m}}, {{W-|la|hircus|n}}
* {{Z|lv}}: {{W+|lv|kaza|m}}, {{W+|lv|āzis|n}}
* {{Z|lo}}: {{W-|lo|ແບ້}}
* {{Z|lzz}}: {{W-|lzz|ქოშატი}}
* Ledo Kaili: {{tt-check|lew|tovau}}
* {{Z|lez}}: {{W-|lez|цӏегь}}
* {{Z|ln}}: {{W-|ln|ntaba|c9|c10}}
* {{Z|li}}: {{W+|li|geit|n|m}}
* {{Z|lt}}: {{W+|lt|ožka|m}}, {{W+|lt|ožys|n}}
* {{Z|lmo}}: {{W-|lmo|cavra|m}}
* {{Z|khb}}: {{W-|khb|ᦶᦢᧉ|sc=Talu}}
* {{Z|lg}}: {{W-|lg|embuzi}}
* {{Z|lb}}: {{W+|lb|Geess|m}}
* {{Z|mhn}}: {{W-|mhn|goas|m}}
* {{Z|mk}}: {{W-|mk|коза|m}}, {{W-|mk|јарец|n}}
* {{Z|mg}}: {{W+|mg|osy}}
* {{Z|ml}}: {{W+|ml|ആട്|sc=Mlym}}
* {{Z|ms}}: {{W+|ms|kambing}}
* {{Z|mt}}: {{W-|mt|mogħża|m}}
* {{Z|mnc}}: {{W-|mnc|ᠨᡳᠮᠠᠨ}}
* {{Z|gv}}: {{W+|gv|goayr|m}}
* {{Z|mi}}: {{W-|mi|nanenane}}, {{W-|mi|koati}}
* {{Z|mr}}: {{W-|mr|बकरी|m|sc=Deva}}, {{W-|mr|शेळी}}
* {{Z|mzn}}: {{W-|mzn|بز|tr=bez}}
* {{Z|hu}}: {{W+|hu|kecske}}
* {{Z|mel}}: {{W-|mel|kabieng}}
* {{Z|mic}}: {{W-|mic|te'plj|an}}, {{W-|mic|te'pulj|an}}
* {{Z|mdf}}: {{W-|mdf|сява}}
* {{Z|mn}}: {{W+|mn|ямаа|sc=Cyrl}}
* {{Z|mnw}}: {{W-|mnw|ဗ္ၜေံ}}
* {{Z|mos}}: {{W-|mos|bʋʋga}}
* {{Z|wmw}}: {{W-|wmw|mbuzi}}
* {{Z|gld}}: {{W-|gld|иман}}
* {{Z|nap}}: {{W-|nap|crapa|m}}
* {{Z|nv}}: {{W-|nv|tłʼízí}}
* {{Z|na}}: {{W-|na|ekaun}}
* {{Z|nds}}: {{W-|nds|Zeeg|m}}, {{W-|nds|Zääg|m}}, {{W-|nds|Seeg|m}}, {{W-|nds|Sääg|m}}
*: {{Z|nds-nl}}: {{W-|nds-nl|sik|m}}
* {{Z|new}}: {{W-|new|दुगु}}
* {{Z|nrf}}: {{W-|nrf|biche|m}}, {{W-|nrf|bich|m}}
* {{Z|non}}: {{W-|non|geit|m}}
* {{Z|no}}:
*: {{Z|no}}: {{W+|no|geit|m|n}}
*: {{Z|nn}}: {{W-|nn|geit|m}}
* {{Z|oj}}: {{W-|oj|maanadik}}
* {{Z|ryu}}: {{W-|ryu|ひーじゃー|tr=hiijaa}}
* {{Z|oc}}: {{W+|oc|cabra|m}}, {{W+|oc|chabra|m}}, {{W+|oc|craba|m}}
* {{Z|or}}: {{W+|or|ଛେଳି}}
* {{Z|om}}: {{W-|om|re'ee}}
* {{Z|os}}: {{W-|os|цӕу}}, {{W-|os|сӕгъ}}
* {{Z|ota}}: {{W-|ota|كچی|tr=keçi|sc=ota-Arab}}, {{W-|ota|بز|tr=büz|sc=ota-Arab}}
* {{Z|ug}}: {{W-|ug|ئۆچكە|sc=ug-Arab}}
* {{Z|uz}}: {{W+|uz|echki}}
* {{Z|pi}}: {{W-|pi|aja|n}}
* {{Z|pap}}: {{W-|pap|kabritu}}
* {{Z|ps}}: {{W-|ps|وزه|m|tr=wozzah|sc=ps-Arab}}
* {{Z|pms}}: {{W-|pms|crava|m}}
* {{Z|pdt}}: {{W-|pdt|Bock|n}}
* {{Z|roa-poi}}: {{W-|roa-poi|chebre}}
* {{Z|pox}}: {{W-|pox|ťözâ|m}}
* {{Z|pl}}: {{W+|pl|koza|m}}, {{W+|pl|kozioł|n}}
* {{Z|pt}}: {{W+|pt|bode|n}}, {{W+|pt|cabra|m}}
* {{Z|pa}}: {{W-|pa|ਬੱਕਰੀ|m}}
* {{Z|kk}}: {{W-|kk|ешкі}}, {{W-|kk|теке}}
* {{Z|rm}}: {{W-|rm|chaura|m}}, {{W-|rm|caura|m}}, {{W-|rm|tgora|m}}, {{W-|rm|chevra|m}}, {{W-|rm|chavra|m}}
* {{Z|rom}}: {{W-|rom|buzno|n}}, {{W-|rom|buzni|m}}
* {{Z|ro}}: {{W+|ro|capră|m}}, {{W+|ro|țap|n}}
* {{Z|ru}}: {{W+|ru|коза́|m}}, {{W+|ru|козёл|n}}
* {{Z|str}}: {{W-|str|NÁNI}}
* {{Z|se}}: {{W-|se|gáica}}
* {{Z|sm}}: {{W-|sm|o'ti}}
* {{Z|sgs}}: {{W-|sgs|uožka|m}}
* {{Z|sa}}: {{W+|sa|अजा|m}}, {{W+|sa|अज|n}}, {{W+|sa|छाग|n}}
* {{Z|sat}}: {{W-|sat|ᱢᱮᱨᱳᱢ}}
* {{Z|sc}}: {{W-|sc|craba}}, {{W-|sc|becca}}
* {{Z|ceb}}: {{W-|ceb|kanding}}
* {{Z|scn}}: {{W+|scn|beccu|n}}, {{W+|scn|crapa|m}}
* {{Z|sid}}: {{W-|sid|meʼe}}
* {{Z|szl}}: {{W-|szl|koza|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|ко̀за|sc=Cyrl}}, {{W-|sh|ја̏рац|n}}
*: Latînî: {{W+|sh|kòza}}, {{W+|sh|jȁrac|n}}
* {{Z|syl}}: {{W-|syl|ꠍꠣꠉꠟ}}
* {{Z|sco}}: {{W-|sco|gait}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|коза|m}}, {{W-|cu|козьлъ|n}}
*: Glagolîtîk: {{W-|cu|ⰽⱁⰸⰰ|m|sc=Glag}}
* {{Z|sk}}: {{W+|sk|koza|m}}, {{W-|sk|kozel|n}}, {{W+|sk|cap|n}}
* {{Z|sl}}: {{W+|sl|koza|m}}, {{W+|sl|kozel|n}}
* {{Z|so}}: {{W-|so|ri'}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|kóza|m}}, {{W-|dsb|kózoł|n}}
*: {{Z|hsb}}: {{W-|hsb|koza|m}}, {{W-|hsb|kоzоł|n}}
* {{Z|nso}}: {{W-|nso|pudi}}
* {{Z|st}}: {{W+|st|podi}}
* {{Z|es}}: {{W+|es|cabra|m}}, {{W+|es|chivo|n}}
* {{Z|su}}: {{W-|su|êmbé}}
* {{Z|sux}}: {{W-|sux|𒍚|tr=ÙZ|sc=Xsux}}
* {{Z|sva}}: {{W-|sva|დაჴჷლ}}
* {{Z|sw}}: {{W+|sw|mbuzi|c9|c10}}
* {{Z|sv}}: {{W+|sv|get|g}}
* {{Z|shn}}: {{W-|shn|ပႄႉ}}
* {{Z|sn}}: {{W-|sn|mbudzi}}
* {{Z|tg}}: {{W+|tg|буз|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|kambing}}
* {{Z|tly}}: {{W-|tly|بز|tr=bəz|sc=fa-Arab}}
* {{Z|ta}}: {{W+|ta|வெள்ளாடு|sc=Taml}}, {{W+|ta|ஆடு|sc=Taml}}
* {{Z|th}}: {{W+|th|แพะ}}
* {{Z|ctd}}: {{W-|ctd|keel}}
* {{Z|te}}: {{W+|te|మేక|sc=Telu}}
* {{Z|crh}}: {{W-|crh|eçki}}, {{W-|crh|teke}}
* {{Z|tt}}: {{W+|tt|кәҗә|sc=Cyrl}}
* {{Z|ti}}: {{W+|ti|ጤል}}
* {{Z|tr}}: {{W+|tr|keçi}}
* {{Z|tk}}: {{W-|tk|geçi}}
* {{Z|bo}}: {{W-|bo|ར|sc=Tibt}}
* {{Z|tn}}: {{W-|tn|podi|c9|c10}}
* {{Z|tum}}: {{W-|tum|mbuzi}}
* {{Z|tyv}}: {{W-|tyv|өшкү}}
* {{Z|udi}}: {{W-|udi|вел}}
* {{Z|udm}}: {{W-|udm|кеч}}
* {{Z|ur}}: {{W-|ur|بکری|m|tr=bakrī|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|коза́|m}}, {{W+|uk|козе́л|n}}, {{W+|uk|цап|n}}
* {{Z|vec}}: {{W+|vec|cavra|m}}, {{W+|vec|càvara|m}}, {{W+|vec|càora|m}}
* {{Z|vi}}: {{W+|vi|dê}}, {{W-|vi|con dê}}
* {{Z|vo}}: {{W+|vo|kapar}}
* {{Z|wa}}: {{W+|wa|gade|m}}, {{W+|wa|tchive|m}}
* {{Z|war}}: {{W-|war|kanding}}
* {{Z|cy}}: {{W+|cy|gafr|m}}
* {{Z|wym}}: {{W-|wym|cejg|m}}
* {{Z|wo}}: {{W+|wo|bëy|cuda=bëy wi}}
* {{Z|km}}: {{W+|km|ពពែ}}, {{W-|km|សត្វពពែ}}
* {{Z|xh}}: {{W-|xh|ibhokhwe|c9|c10}}
* {{Z|sah}}: {{W-|sah|ньамаан|n}}
* {{Z|yi}}: {{W-|yi|ציג|m}}, {{W-|yi|באָק|n}}, {{W-|yi|צאַפּ|n}}
* {{Z|yo}}: {{W-|yo|ewúrẹ́}}
* {{Z|el}}: {{W+|el|κατσίκα|m}}, {{W+|el|γίδα|m}}, {{W+|el|γίδι|nt}}
*: Kevn: {{W-|grc|τράγος|n}}, {{W-|grc|αἴξ|n|m}}
* {{Z|za}}: {{W-|za|yiengz}}, {{W-|za|mbej}}
* {{Z|zom}}: {{W-|zom|kel}}
* {{Z|zu}}: {{W+|zu|imbuzi|c9|c10}}
* {{Z|nmn}}: {{W-|nmn|páli}}
{{werger-bin}}
:{{werger çavkanî|en|goat|beş=Ev qismê Wergerê|oldid=75571308}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|بزن|w=bizin}}
#* {{bêmînak|ckb}}
jb3rzs8xrn8h6zjuwm6kf4hge9d5vre
6328866
6328821
2026-08-11T02:12:12Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6328866
wikitext
text/x-wiki
{{bnr-h|bizîn|bîzin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/bɪ'zɪn/}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-bizin.wav|dever=Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-bizin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Domestic goat kid in capeweed.jpg|thumb|300px|Bizinek]]
{{navdêr|ku|z=m}}
# {{f|ku|guhandar}} [[heywan|Heywaneke]] [[kedî]] ya [[guhandar]] û [[têr-mû]] ye.
#* {{jêder-malper|ku|jêgirtin=Di nav kerîyê pez de '''bizineke''' nebixêr, nesitirî, ziyankar û çilek hebû, wexta kerî nêzî zevîyekî biçûya '''bizina''' ziyankar Kolê berê xwe dida zeviyê zerar didayê.|sernav=Remo û Bizina çilek|sal=2012|url=https://demacirok.wordpress.com/2012/11/08/remo-u-bizina-cilek/|malper=demacirok.wordpress.com}}
#* {{jêder-kovar|ku|jêgirtin='''Bizina''' pîrê çu çolê<br>Lê da berf û bagerê<br>Piriq derket ji malê<br>He! he!...|kovar=Hawar |sernav=Bizina Pîrê |nivîskar= Herekol Azîzan |weşanxane=Nûdem|hejmar=8|sal=1932-1933|rûpel=3|cîld=1}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|بزن}}
* {{ku-kr|бьзьн}}
==== Formên alternatîv ====
* [[bizn]]
==== Navê zanistî ====
* ''[[Capra hircus]]''
==== Jê ====
* [[bizinkûvî]]
* [[bizinmişk]]
==== Têkildar ====
{{stûn|
* [[nêrî]]
* [[karik]]
* [[gîsk]]
* [[kerî]]
* [[kewal]]
* [[sewal]]
* [[terş]]
* [[tewal]]
* [[tiştîr]] / [[tiştûr]]
}}
==== Etîmolojî ====
Hevreh soranî {{g|ckb|بزن|tr=bizin, bizn}}, kurdiya başûrî {{q|sdh|bizin|sc=Latn}}, lekî {{q|lki|bizin|sc=Latn}} û {{q|lki|biz|sc=Latn}}, zazakî {{q|zza|bize}}, hewramî {{q|hac|بزه|tr=bize}}, belûçî {{g|bal|بز|tr=buz}}, farisî {{g|fa|بز}} (berê "buz", niha "boz"), tacikî {{g|tg|буз|tr=buz}}, pertî ''wiz'', pêştûyî {{g|pa|وز|tr=wiz}}, pehlewî {{g|pal||tr=bûz}}, avestayî {{g|ae|𐬠𐬏𐬰𐬀|tr=būze|w=[[beran]], ?[[nêrî]]}}, ermenî {{g|hy|բուծ|tr=bûç|w=[[karik]]}}, sanskrîtî {{g|sa|बुक्क|tr=bukke|w=[[nêrî]]}}, îngilîziya kevn {{q|agn|buc}} / {{q|ang|bucca|w=[[nêrî]]}}, îngilîziya nû {{q|en|buck|w=heywanê nêr}}, almanî {{q|de|Bock|w=[[nêrî]], heywanê nêr}}, holendî {{q|nl|bok|w=[[nêrî]]}}, swêdî {{q|sv|bock|w=[[nêrî]]}}, danmarkî {{q|da|buk}}, norwecî {{q|no|bukk}}... hemû ji {{ji|ine-pro|ku|*bʰuǵ-}}.
Peyva îranî wek {{g|xcl|բզաք|tr=bzakʿ}} ketibû ermeniya kevn.
{{q|ku|-in}} ya dawiya peyva ''bizin'' [[paşgir]]eke kevnar e ku peyvan dike [[mê]] û belkî [[hevreh]]a paşgira çalak ya almanî {{q|ku|-in}} û ya ne-çalak ya îngilîzî {{q|en|-en}} be. Binêre {{q|ku|nogin}} û dibe ku herwiha {{q|ku|kîr kujin}}.
;{{biçûk|Çavkanî:
* {{Rastorgujeva|r=191-192}}
* {{Horn|r=49}}
* {{Watkins|r=13}}
* {{Etymonline}}
* {{Pokorny|r=161}}
}}
==== Bide ber ====
* [[mih]], [[mî]]
==== Zayend ====
{{agadarî}} ''Bizin'' bi maneya heywana kedî ya mê peyvek zayendmê ye: ''bizina me, bizineke spî''... Lê ew herwiha wek peyvek zayendnêr jî tê bikaranîn: ''Biz(i)nê me li çolê diçere.'' Li vê derê ew bi maneya [[terş]] e anku hem bizin û hem jî [[nêrî]].
==== Cûnên bizin û mihan ====
* [[hoş]], [[poş]]: bizna têkde reş û guhboz.
* [[hemis]], [[himbis]]: bizna reşa navçav û alekên wê gîxên spî yan sorekî vekirî pêde hatîn û binzik û dehmen spî yan sor.
* [[hemdanî]]: cûnekî pezî ye: cûnê pezekî guhdirêj û guhpan û hirîkurt û dûngşor e.
* [[çûr]], [[çûr]]: cûne bizneka hûr û têrşîr û mûxelek e, mûyê wê merez e, şel û şepik jê diêne çêkirin.
* [[çal]]: bizna hemû leşê wê reş, tenê enîya wê pinîyeka spî lê..
* [[kerîs]], [[kurrîs]]: miha guhên wê qut û kurtik.
* [[kewîs]], [[kewîsar]], [[kewîser]]: miha leşê wê spî û navçav zîwanî pinîyên reş yan sor lê û guhên wê boz. Gelek cûn jê hene
* [[riser]]: miha rengê navçavan di navbera reş û qehweyî de yan bi ser reşekî xwelîkî ve..
* [[tebeş]]: Miha navçav û ser û guh pêk ve reng xwelîkî.
;{{biçûk|Çavkanî:
* Îsmaîl Şahîn di {{kzk}} de, 12/2012
}}
==== Gotinên pêşiyan ====
{{stûn|
* Berû da bizinê, dest avête qarçikê
* Bizin bizin e, pêşî cihê xwe pêkol dike, dû re mexel tê
* Bizin firot bi hefta, bezê wê kirî bi heyşta
* Bizin ketiye derdê serê xwe, şivan ketiye derdê bezê bizinê
* Bizin mir, girr damirî
* Bizina kol elimiye [[danok]]an
* Bizina kol hîn bûye [[danî|daniyên]] sor
* Bizina kulek û şivanê [[bezek]] (sivik) tev digehên ber derî
* Bizina nehletî, dev lêketî
* Bizina reş e, her roj nexweş e
* Bizina gurî, ber dêwir tiqurrî
* Bizinê ji mihê ra got; min ewa te dît
* Bizinê kulek tim ê çilek e
* Bi vî devî bi vê qûnê, here diziya bizinê
* Dinê li dinê, çavê gur li bizinê
* Ecela bizinê ku tê, nanê şivanî dixwe
* Ga guherande bizinê, bizin jî guherande mirîşkê
* Here diziya bizinê
* Kara li şûnê, bizinê li mexelê
* Meha adarê, av firî serê darê, bizin kalî ser karê, nîşanên biharê
* Mî bi piyê xwe, bizin bi piyê xwe
* Mî bi nigên xwe, bizin bi nigên xwe
* Pişta bizinê xurî, hat nanê şivên bixwe
* Şêwra jinan, beriya bizinan
* Şorê mîna tira Bizina ye
* Wek berxa ber bizinê
* Wek bizina ku ji ber ecela xwe bireve
}}
==== Werger ====
{{werger-ser}}
* {{Z|ab}}: {{W-|ab|аџьма|sc=Cyrl}}, {{W-|ab|аџьмаб|sc=Cyrl}}
* {{Z|ace}}: {{W-|ace|kamèng}}
* {{Z|ady}}: {{W-|ady|пчэны}}
* {{Z|af}}: {{W+|af|bok}}
* {{Z|xag}}: {{W-|xag|𐕛𐔴𐔾}}
* {{Z|akk}}: {{W-|akk|𒍚|tr=enzu|sc=Xsux}}
* {{Z|ak}}: {{W-|ak|abirekyie}}
* {{Z|sq}}: {{W+|sq|dhi|m}}, {{W+|sq|berk|n}}
* {{Z|de}}: {{W+|de|Ziege|m}}, {{W+|de|Geiß|m}}, {{W+|de|Bock|n}}
*: {{Z|gsw}}: {{W-|gsw|Geiss|m}}
*: {{Z|bar}}: {{W-|bar|Goaß|m}}
*: {{Z|gmh}}: {{W-|gmh|geiz|m}}, {{W-|gmh|zige|m}}
*: {{Z|goh}}: {{W-|goh|geiz|m}}, {{W-|goh|ziga|m}}
* {{Z|am}}: {{W+|am|ፍየል|sc=Ethi}}
* {{Z|amu}}: {{W-|amu|kínch'ió}}
* {{Z|an}}: {{W+|an|craba|m}}, {{W+|an|crapa|m}}
* {{Z|aii}}: {{W-|aii|ܥܸܙܵܐ|tr=ʿizza|n}}
* {{Z|arw}}: {{W-|arw|kabaritu}}
* {{Z|rup}}: {{W-|rup|caprã|m}}
* {{Z|as}}: {{W-|as|ছাগলী}}, {{W-|as|ছাগল|n}}
* {{Z|ast}}: {{W+|ast|cabra|m}}
* {{Z|tay}}: {{W-|tay|mit qnahi}}
* {{Z|av}}: {{W-|av|цӏцӏе|sc=Cyrl}}, {{W-|av|дегӏен|sc=Cyrl}}
* {{Z|az}}: {{W+|az|keçi}}, {{W-|az|təkə|n}}
* {{Z|eu}}: {{W-|eu|ahuntz|m}}, {{W-|eu|aker|n}}
* {{Z|ba}}: {{W-|ba|кәзә|sc=Cyrl}}
* {{Z|bbl}}: {{W-|bbl|გაზაჼ}}
* {{Z|be}}: {{W-|be|каза́|m}}, {{W-|be|казёл|n}}
* {{Z|blm}}: {{W-|blm|binya}} {{W-|blm|kpitɔ binya|n}}
* {{Z|bn}}: {{W+|bn|ছাগল}}, {{W-|bn|বকরা}}
* {{Z|bqi}}: {{W-|bqi|بز|tr=boz|sc=fa-Arab}}
* {{Z|bcl}}: {{W-|bcl|kanding}}
* {{Z|br}}: {{W+|br|gavr|m}}
* {{Z|bug}}: {{W-|bug|bembe}}
* {{Z|bg}}: {{W+|bg|коза́|m}}, {{W+|bg|козе́л|n}}
* {{Z|my}}: {{W+|my|ဆိတ်|sc=Mymr}}
* {{Z|bua}}: {{W-|bua|ямаан}}
* {{Z|kac}}: {{W-|kac|bainam}}
* {{Z|cja}}: {{W-|cja|ڤبي}}
* {{Z|ce}}: {{W-|ce|газа}}, {{W-|ce|бож}}
* {{Z|cs}}: {{W+|cs|koza|m}}, {{W+|cs|kozel|n}}
* {{Z|chr}}: {{W-|chr|ᎤᎦᏐᏣᏁᏛ}}
* {{Z|chy}}: {{W-|chy|mé'hahtsékósa}}
* {{Z|ny}}: {{W-|ny|mbuzi}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|山羊|tr=saan1 joeng4}}
*: {{Z|hak}}: {{W-|hak|山羊|tr=sân-yòng}}
*: {{Z|cmn}}: {{W+|cmn|羊|tr=yáng}}, {{W+|cmn|山羊|tr=shānyáng}}
*: {{Z|nan}}: {{W+|nan|山羊|tr=soaⁿ-iûⁿ}}
* {{Z|cv}}: {{W-|cv|качака|sc=Cyrl}}
* {{Z|da}}: {{W+|da|ged|g}}
* {{Z|dta}}: {{W-|dta|ima}}
* {{Z|dtp}}: {{W-|dtp|kambing}}
* {{Z|ovd}}: {{W-|ovd|djiet|g}}
* {{Z|avd}}: {{W-|avd|بیز|tr=biz}}
* {{Z|egl}}: {{W-|egl|chèvra|m}}
* {{Z|id}}: {{W+|id|kambing}}
* {{Z|ar}}: {{W-|ar|مَاعِز|n}}, {{W-|ar|عَنْزَة|m}}
*: {{Z|arz}}: {{W-|arz|معز|n|tr=maʕz}}, {{W-|arz|معزة|m|tr=maʕza}}
*: {{Z|arz}}: {{W-|arz|سخل|m|tr=saχel|sc=Arab}}
*: {{Z|arz}}: {{W-|arz|عنزة|m|tr=ʿanze|sc=Arab}}
*: {{Z|arz}}: {{W-|arz|عتروس|m|tr=ʿatrous|sc=Arab}}
* {{Z|hy}}: {{W+|hy|այծ}}, {{W+|hy|նոխազ}}, {{W+|hy|քոշ}}, {{W+|hy|քաղ}}
*: {{Z|xcl}}: {{W-|xcl|այծ|sc=Armn}}, {{W-|xcl|նոխազ|sc=Armn}}, {{W-|xcl|քօշ|sc=Armn}}, {{W-|xcl|քաղ|sc=Armn}}
* {{Z|myv}}: {{W-|myv|сея}}
* {{Z|eo}}: {{W-|eo|kapro}}
* {{Z|et}}: {{W+|et|kits}}
* {{Z|evn}}: {{W-|evn|каир}}
* {{Z|ee}}: {{W-|ee|gbɔ̃|nt}}
* {{Z|gur}}: {{W-|gur|bʋa}}
* {{Z|fa}}: {{W+|fa|بز|tr=boz}}
* {{Z|fo}}: {{W-|fo|geit|m}}
* {{Z|fi}}: {{W+|fi|vuohi}}
* {{Z|frp}}: {{W-|frp|cabra|m}}, {{W-|frp|chèvra|m}}
* {{Z|fr}}: {{W+|fr|chèvre|m}}, {{W+|fr|bouc|n}}, {{W+|fr|bique|m}}
* {{Z|fur}}: {{W-|fur|cjavre|m}}, {{W-|fur|čhavre|m}}
* {{Z|stq}}: {{W-|stq|Sääge|m}}
* {{Z|fy}}: {{W-|fy|geit|m}}
* {{Z|gd}}: {{W+|gd|gobhar|n|m}}
* {{Z|gl}}: {{W+|gl|cabra|m}}, {{W-|gl|godalla|m}}, {{W-|gl|xena|m}}, {{W-|gl|cabuxa|m}}, {{W-|gl|neixente|n}}, {{W-|gl|bodeseixo|n}}, {{W+|gl|barbada|m}}, {{W-|gl|guenepa|m}}
* {{Z|got}}: {{W-|got|𐌲𐌰𐌹𐍄𐍃}}
* {{Z|gu}}: {{W+|gu|બકરી|m}}
* {{Z|ka}}: {{W-|ka|თხა|sc=Geor}}, {{W-|ka|ქოშიკი|sc=Geor}}
* {{Z|gn}}: {{W-|gn|kavara}}
* {{Z|ht}}: {{W-|ht|kabrit}}
* {{Z|ha}}: {{W-|ha|bunsuru}}
* {{Z|hi}}: {{W+|hi|बकरी|m}}
* {{Z|nl}}: {{W+|nl|geit|m}}, {{W+|nl|bok|n}}
* {{Z|he}}: {{W+|he|עֵז|m|tr=ez}}
* {{Z|io}}: {{W+|io|kapro}}
* {{Z|ang}}: {{W-|ang|gāt|m}}
* {{Z|enm}}: {{W-|enm|goot}}
* {{Z|en}}: {{W+|en|goat}}
* {{Z|izh}}: {{W-|izh|voohi}}
* {{Z|inh}}: {{W-|inh|газа}}
* {{Z|ia}}: {{W-|ia|capra}}
* {{Z|ga}}: {{W+|ga|gabhar|n}}
*: {{Z|sga}}: {{W-|sga|gabor|n|id=goat}}
* {{Z|ist}}: {{W-|ist|càvara|m}}
* {{Z|it}}: {{W+|it|capra|m}}
* {{Z|ivv}}: {{W-|ivv|kaddin}}
* {{Z|is}}: {{W+|is|geit|m}}
* {{Z|ja}}: {{W+|ja|ヤギ|tr=yagi|sc=Jpan}}, {{W+|ja|山羊|tr=やぎ, yagi|sc=Jpan}}
* {{Z|kaw}}: {{W-|kaw|kambiṅ}}, {{W-|kaw|wĕḍus}}, {{W-|kaw|wiwi}}
* {{Z|jv}}: {{W+|jv|wedhus}}
* {{Z|kbd}}: {{W-|kbd|бжэн}}
* {{Z|kl}}: {{W-|kl|savaasaq}}
* {{Z|xal}}: {{W-|xal|яман}}
* {{Z|kn}}: {{W+|kn|ಮೇಕೆ|sc=Knda}}
* {{Z|pam}}: {{W-|pam|kambing}}
* {{Z|krl}}: {{W-|krl|čiba}}
* {{Z|csb}}: {{W-|csb|kòza|m}}
* {{Z|ca}}: {{W+|ca|cabra|m}}
* {{Z|qu}}: {{W-|qu|kawra}}
* {{Z|ks}}: {{W+|ks|ژھاوُل|n}}, {{W+|ks|ژھاوٕج|m}}
* {{Z|klj}}: {{W-|klj|göčü}}
* {{Z|ky}}: {{W+|ky|эчки}}
* {{Z|kg}}: {{W-|kg|nkombo}}
* {{Z|ki}}: {{W-|ki|mbũri}}, {{W-|ki|harika}}
* {{Z|si}}: {{W-|si|ළුළුවා|sc=Sinh}}
* {{Z|rw}}: {{W-|rw|ihene|c9|c10}}, {{W-|rw|impene}}
* {{Z|koi}}: {{W-|koi|кӧза}}
* {{Z|ko}}: {{W+|ko|염소}}, {{W-|ko|산양}}
* {{Z|kw}}: {{W-|kw|gaver|m}}
* {{Z|co}}: {{W+|co|capra|m}}
* {{Z|mfe}}: {{W-|mfe|kabri}}
* {{Z|crs}}: {{W-|crs|kabri}}
* {{Z|kum}}: {{W-|kum|эчки}}
* {{Z|lld}}: {{W-|lld|cioura}}, {{W-|lld|cëura|m}}
* {{Z|lbe}}: {{W-|lbe|цӏуку}}, {{W-|lbe|кьяца}}
* {{Z|ltg}}: {{W-|ltg|koza|m}}, {{W-|ltg|uozs|n}}
* {{Z|la}}: {{W+|la|caper|n}}, {{W-|la|capra|m}}, {{W-|la|hircus|n}}
* {{Z|lv}}: {{W+|lv|kaza|m}}, {{W+|lv|āzis|n}}
* {{Z|lo}}: {{W-|lo|ແບ້}}
* {{Z|lzz}}: {{W-|lzz|ქოშატი}}
* Ledo Kaili: {{tt-check|lew|tovau}}
* {{Z|lez}}: {{W-|lez|цӏегь}}
* {{Z|ln}}: {{W-|ln|ntaba|c9|c10}}
* {{Z|li}}: {{W+|li|geit|n|m}}
* {{Z|lt}}: {{W+|lt|ožka|m}}, {{W+|lt|ožys|n}}
* {{Z|lmo}}: {{W-|lmo|cavra|m}}
* {{Z|khb}}: {{W-|khb|ᦶᦢᧉ|sc=Talu}}
* {{Z|lg}}: {{W-|lg|embuzi}}
* {{Z|lb}}: {{W+|lb|Geess|m}}
* {{Z|mhn}}: {{W-|mhn|goas|m}}
* {{Z|mk}}: {{W-|mk|коза|m}}, {{W-|mk|јарец|n}}
* {{Z|mg}}: {{W+|mg|osy}}
* {{Z|ml}}: {{W+|ml|ആട്|sc=Mlym}}
* {{Z|ms}}: {{W+|ms|kambing}}
* {{Z|mt}}: {{W-|mt|mogħża|m}}
* {{Z|mnc}}: {{W-|mnc|ᠨᡳᠮᠠᠨ}}
* {{Z|gv}}: {{W+|gv|goayr|m}}
* {{Z|mi}}: {{W-|mi|nanenane}}, {{W-|mi|koati}}
* {{Z|mr}}: {{W-|mr|बकरी|m|sc=Deva}}, {{W-|mr|शेळी}}
* {{Z|mzn}}: {{W-|mzn|بز|tr=bez}}
* {{Z|hu}}: {{W+|hu|kecske}}
* {{Z|mel}}: {{W-|mel|kabieng}}
* {{Z|mic}}: {{W-|mic|te'plj|an}}, {{W-|mic|te'pulj|an}}
* {{Z|mdf}}: {{W-|mdf|сява}}
* {{Z|mn}}: {{W+|mn|ямаа|sc=Cyrl}}
* {{Z|mnw}}: {{W-|mnw|ဗ္ၜေံ}}
* {{Z|mos}}: {{W-|mos|bʋʋga}}
* {{Z|wmw}}: {{W-|wmw|mbuzi}}
* {{Z|gld}}: {{W-|gld|иман}}
* {{Z|nap}}: {{W-|nap|crapa|m}}
* {{Z|nv}}: {{W-|nv|tłʼízí}}
* {{Z|na}}: {{W-|na|ekaun}}
* {{Z|nds}}: {{W-|nds|Zeeg|m}}, {{W-|nds|Zääg|m}}, {{W-|nds|Seeg|m}}, {{W-|nds|Sääg|m}}
*: {{Z|nds-nl}}: {{W-|nds-nl|sik|m}}
* {{Z|new}}: {{W-|new|दुगु}}
* {{Z|nrf}}: {{W-|nrf|biche|m}}, {{W-|nrf|bich|m}}
* {{Z|non}}: {{W-|non|geit|m}}
* {{Z|no}}:
*: {{Z|no}}: {{W+|no|geit|m|n}}
*: {{Z|nn}}: {{W-|nn|geit|m}}
* {{Z|oj}}: {{W-|oj|maanadik}}
* {{Z|ryu}}: {{W-|ryu|ひーじゃー|tr=hiijaa}}
* {{Z|oc}}: {{W+|oc|cabra|m}}, {{W+|oc|chabra|m}}, {{W+|oc|craba|m}}
* {{Z|or}}: {{W+|or|ଛେଳି}}
* {{Z|om}}: {{W-|om|re'ee}}
* {{Z|os}}: {{W-|os|цӕу}}, {{W-|os|сӕгъ}}
* {{Z|ota}}: {{W-|ota|كچی|tr=keçi|sc=ota-Arab}}, {{W-|ota|بز|tr=büz|sc=ota-Arab}}
* {{Z|ug}}: {{W-|ug|ئۆچكە|sc=ug-Arab}}
* {{Z|uz}}: {{W+|uz|echki}}
* {{Z|pi}}: {{W-|pi|aja|n}}
* {{Z|pap}}: {{W-|pap|kabritu}}
* {{Z|ps}}: {{W-|ps|وزه|m|tr=wozzah|sc=ps-Arab}}
* {{Z|pms}}: {{W-|pms|crava|m}}
* {{Z|pdt}}: {{W-|pdt|Bock|n}}
* {{Z|roa-poi}}: {{W-|roa-poi|chebre}}
* {{Z|pox}}: {{W-|pox|ťözâ|m}}
* {{Z|pl}}: {{W+|pl|koza|m}}, {{W+|pl|kozioł|n}}
* {{Z|pt}}: {{W+|pt|bode|n}}, {{W+|pt|cabra|m}}
* {{Z|pa}}: {{W-|pa|ਬੱਕਰੀ|m}}
* {{Z|kk}}: {{W-|kk|ешкі}}, {{W-|kk|теке}}
* {{Z|rm}}: {{W-|rm|chaura|m}}, {{W-|rm|caura|m}}, {{W-|rm|tgora|m}}, {{W-|rm|chevra|m}}, {{W-|rm|chavra|m}}
* {{Z|rom}}: {{W-|rom|buzno|n}}, {{W-|rom|buzni|m}}
* {{Z|ro}}: {{W+|ro|capră|m}}, {{W+|ro|țap|n}}
* {{Z|ru}}: {{W+|ru|коза́|m}}, {{W+|ru|козёл|n}}
* {{Z|str}}: {{W-|str|NÁNI}}
* {{Z|se}}: {{W-|se|gáica}}
* {{Z|sm}}: {{W-|sm|o'ti}}
* {{Z|sgs}}: {{W-|sgs|uožka|m}}
* {{Z|sa}}: {{W+|sa|अजा|m}}, {{W+|sa|अज|n}}, {{W+|sa|छाग|n}}
* {{Z|sat}}: {{W-|sat|ᱢᱮᱨᱳᱢ}}
* {{Z|sc}}: {{W-|sc|craba}}, {{W-|sc|becca}}
* {{Z|ceb}}: {{W-|ceb|kanding}}
* {{Z|scn}}: {{W+|scn|beccu|n}}, {{W+|scn|crapa|m}}
* {{Z|sid}}: {{W-|sid|meʼe}}
* {{Z|szl}}: {{W-|szl|koza|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|ко̀за|sc=Cyrl}}, {{W-|sh|ја̏рац|n}}
*: Latînî: {{W+|sh|kòza}}, {{W+|sh|jȁrac|n}}
* {{Z|syl}}: {{W-|syl|ꠍꠣꠉꠟ}}
* {{Z|sco}}: {{W-|sco|gait}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|коза|m}}, {{W-|cu|козьлъ|n}}
*: Glagolîtîk: {{W-|cu|ⰽⱁⰸⰰ|m|sc=Glag}}
* {{Z|sk}}: {{W+|sk|koza|m}}, {{W-|sk|kozel|n}}, {{W+|sk|cap|n}}
* {{Z|sl}}: {{W+|sl|koza|m}}, {{W+|sl|kozel|n}}
* {{Z|so}}: {{W-|so|ri'}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|kóza|m}}, {{W-|dsb|kózoł|n}}
*: {{Z|hsb}}: {{W-|hsb|koza|m}}, {{W-|hsb|kоzоł|n}}
* {{Z|nso}}: {{W-|nso|pudi}}
* {{Z|st}}: {{W+|st|podi}}
* {{Z|es}}: {{W+|es|cabra|m}}, {{W+|es|chivo|n}}
* {{Z|su}}: {{W-|su|êmbé}}
* {{Z|sux}}: {{W-|sux|𒍚|tr=ÙZ|sc=Xsux}}
* {{Z|sva}}: {{W-|sva|დაჴჷლ}}
* {{Z|sw}}: {{W+|sw|mbuzi|c9|c10}}
* {{Z|sv}}: {{W+|sv|get|g}}
* {{Z|shn}}: {{W-|shn|ပႄႉ}}
* {{Z|sn}}: {{W-|sn|mbudzi}}
* {{Z|tg}}: {{W+|tg|буз|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|kambing}}
* {{Z|tly}}: {{W-|tly|بز|tr=bəz|sc=fa-Arab}}
* {{Z|ta}}: {{W+|ta|வெள்ளாடு|sc=Taml}}, {{W+|ta|ஆடு|sc=Taml}}
* {{Z|th}}: {{W+|th|แพะ}}
* {{Z|ctd}}: {{W-|ctd|keel}}
* {{Z|te}}: {{W+|te|మేక|sc=Telu}}
* {{Z|crh}}: {{W-|crh|eçki}}, {{W-|crh|teke}}
* {{Z|tt}}: {{W+|tt|кәҗә|sc=Cyrl}}
* {{Z|ti}}: {{W+|ti|ጤል}}
* {{Z|tr}}: {{W+|tr|keçi}}
* {{Z|tk}}: {{W-|tk|geçi}}
* {{Z|bo}}: {{W-|bo|ར|sc=Tibt}}
* {{Z|tn}}: {{W-|tn|podi|c9|c10}}
* {{Z|tum}}: {{W-|tum|mbuzi}}
* {{Z|tyv}}: {{W-|tyv|өшкү}}
* {{Z|udi}}: {{W-|udi|вел}}
* {{Z|udm}}: {{W-|udm|кеч}}
* {{Z|ur}}: {{W-|ur|بکری|m|tr=bakrī|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|коза́|m}}, {{W+|uk|козе́л|n}}, {{W+|uk|цап|n}}
* {{Z|vec}}: {{W+|vec|cavra|m}}, {{W+|vec|càvara|m}}, {{W+|vec|càora|m}}
* {{Z|vi}}: {{W+|vi|dê}}, {{W-|vi|con dê}}
* {{Z|vo}}: {{W+|vo|kapar}}
* {{Z|wa}}: {{W+|wa|gade|m}}, {{W+|wa|tchive|m}}
* {{Z|war}}: {{W-|war|kanding}}
* {{Z|cy}}: {{W+|cy|gafr|m}}
* {{Z|wym}}: {{W-|wym|cejg|m}}
* {{Z|wo}}: {{W+|wo|bëy|cuda=bëy wi}}
* {{Z|km}}: {{W+|km|ពពែ}}, {{W-|km|សត្វពពែ}}
* {{Z|xh}}: {{W-|xh|ibhokhwe|c9|c10}}
* {{Z|sah}}: {{W-|sah|ньамаан|n}}
* {{Z|yi}}: {{W-|yi|ציג|m}}, {{W-|yi|באָק|n}}, {{W-|yi|צאַפּ|n}}
* {{Z|yo}}: {{W-|yo|ewúrẹ́}}
* {{Z|el}}: {{W+|el|κατσίκα|m}}, {{W+|el|γίδα|m}}, {{W+|el|γίδι|nt}}
*: Kevn: {{W-|grc|τράγος|n}}, {{W-|grc|αἴξ|n|m}}
* {{Z|za}}: {{W-|za|yiengz}}, {{W-|za|mbej}}
* {{Z|zom}}: {{W-|zom|kel}}
* {{Z|zu}}: {{W+|zu|imbuzi|c9|c10}}
* {{Z|nmn}}: {{W-|nmn|páli}}
{{werger-bin}}
:{{werger çavkanî|en|goat|beş=Ev qismê Wergerê|oldid=75571308}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|بزن|w=bizin}}
#* {{bêmînak|ckb}}
3z0nkhvxir9kjhyg58sqaomvx92sbtd
gur
0
5384
6328972
6328092
2026-08-11T11:50:36Z
Balyozbot
7867
/* Navdêr 1 */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328972
wikitext
text/x-wiki
{{bnr-h|gurr|gûr|gür}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{beş|Navdêr}} {{deng|ku|LL-Q36368 (kur)-Dildadil-gur.wav|Deng|dever=Amed}}
* {{beş|Navdêr}} {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-gur (ajal).wav|dever=Bidlîs}}
* {{beş|Rengdêr}} {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-gur.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr 1 ===
[[Wêne:210207 MIddle Fork wolf odfw 3.5x2.5 (52014798322).jpg|thumb|Gurek (1).]]
{{wp}}
{{navdêr|ku|z=n+}}
# {{f|ku|guhandar}} [[heywan|Heywanek]] e [[şibîn|dişibe]] [[se]]yan anku [[kûçik]]an lê [[kûvî]] ye (bi taybetî êrişî [[sewal]]an dike û ji wan dixwe).
#* {{jêder-malper|ku|jêgirtin=Baş guh bidin min, li van der û doran '''gurekî''' pir fenek û zalim heye. Dibê haya we baş ji we hebe, rojekê neyê we nexapîne.|nivîskar={{w|Zinarê Xamo}}|sernav=Şengê û Pengê (çîrok)|url=https://zinarexamo.blogspot.com/2011/03/senge-u-penge.html|malper=zinarexamo.blogspot.com|sal=2011}}
# {{f|ku|mecazî}} Kesê dixwaze [[ziyan]]ê bigihîne kesek din.
#* {{jêder-pirtûk|ku|jêgirtin=Hevrê û rêberê min ê evîn û evîndariyê Ovidius li derekî jî weha gotibû; "Meriv '''gurên''' hev in..." Di wan rojên tarî yên nêçîra Ruhistîn de, ez gelek caran li vê gotinê fikirîm. Meriv, bi rastî, '''gurên''' hev bûn, mîna guran diketin gewriya hev û cîh li hev dikirin gola xwînê. Hê hingî, ez li Pera'yê, cîhê '''gurên''' mezin difikirîm. Hem ji bo qesta felekê hem ji bo fahmkirina çerxa dinê û şerê '''guran'''.|nivîskar={{w|Mehmed Uzun}}|sernav={{w|Bîra Qederê}}|weşanxane=|cih=|sal=1995|rûpel=|isbn=}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Min dî bi wext ew nêk bi xet îro li text fexfûr-i bû</br>Fexfûrsur e sîmadur e heybetpur e pir dil '''gur''' e</br>Ew hate miş min çûne hiş dil min di 'iş -qê fûr-i bû}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|گور}}
==== Formên alternatîv ====
{{kol3|ku
|gurg
|gwir
|gwirg
}}
==== Navê zanistî ====
* ''[[Canis lupus]]''
==== Jê ====
{{kol3|ku
|gurane
|guremirov
|gurîtî
}}
==== Têkildar ====
{{kol3|ku
| kûçik
| [[se]], [[seg]]
| tajî
}}
==== Etîmolojî ====
Ji {{mîr|ira-pro|ku|*wŕ̥kah|w=gur}}, ji {{mîr|iir-pro|ku|*wŕ̥kas|w=gur}}, ji {{mîr|ine-pro|ku|*wĺ̥kʷos|w=gur}}. Hevreha soranî {{q|ckb|گورگ}} û {{q|ckb|ورگ}}, [[kurdiya başûrî]] {{q|sdh|sc=Latn|gurg}}, lekî ''[[gurg]]'', farisî {{q|fa|گرگ|tr=gorg, gurg}}, tacikî [[гург]] (gurg), belûçî {{q|bal|گرک|tr=gurk}}, partî [[𐫃𐫇𐫡𐫃]] (gurg), pehlewî [[𐭢𐭥𐭫𐭢]] / [[𐬔𐬎𐬭𐬔]] (gurg), tatî ''wurg'', hewramî ''[[werg]]'', sogdî [[ܘܝܪܩ]] (wyrg), mazenderanî {{g|mzn|ورگ|tr=wurg, virg}}, zazakî ''[[verg]]'', gîlekî {{g|fa|ورگ|tr=verg}}, hexamenişî [[𐎺𐎼𐎣]] (varka, /verke/), avestayî [[𐬬𐬆𐬵𐬭𐬐𐬀]] (vəhrka, /vihrke/), sanskrîtî [[वृक]] (vṛ́ka), hindî [[वृक]] (vŕk), bulgarî [[вълк]] (vǎlk), rûsî [[волк]] (volk), çekî/slovakî ''[[vlk]]'', polonî ''[[wilk]]'', lîtwanî ''[[vil̃kas]]'', latviyayî ''[[vìlks]]'', hîtîtî [[𒉿𒀠𒆪𒉿𒀸]] (wa-al-ku-wa-aš: tiştê [[xirab]]), inglîziya kevn ''[[wulf]]'', inglîziya niha û holandî ''[[wolf]]'', almanî ''[[Wolf]]'', danmarkî/norwecî/swêdî ''[[ulv]]'' û herwiha bi [[metatez]]ê yûnanî [[λύκος]] (lýkos) û latînî ''[[lupus]]''.
Forma bi G li dawiyê (gurg) di [[kurmanciya rojhilatî]] de hatiye parastin lê di [[kurmanciya navendî]] û [[kurmanciya rojavayî]] de G jê ketiye û bûye ''gur''.
Tevî nêzîkiya dengî jî li gel [[hevwate]]ya xwe ya tirkî ''[[kurt]]'', ji aliyê etîmolojî ve ew ne ji eynî rehî ne û ''kurt'' ya tirkî jî [[hevreh]]ê xwe di zimanên din yên [[tirkîkî]] de hene û ne ji zimanekî îranî hatiye wergirtin, bo nimûne: azerî ''[[qurd]]'', qazaxî [[құрт]] (qurt), oyxurî {{g|ug|قۇرت}} (qurt)...
;{{biçûk|Çavkanî:
* {{Chyet}}
* {{Horn}}
* {{MacKenzie}}
* {{Tsabolov}}
* {{Turner}}
* {{Watkins}}
* {{Etymonline}}
* {{The Tower of Babel}}
}}
==== Bide ber ====
* {{g|ku|gurî}}
==== Pîrepend ====
{{kol3|ku
|ku ti ne gur bî wê gur te bixwe
|ma gurê kuderê nêwiye
|ma te gur kuştiye ma min nehilîştiye
|te gur kuştiyê min nîştiyê
}}
==== Biwêj====
* [[gurê devbixwîn]]
* [[gurê manco]]
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|گورگ|tr=[[gurg]]}}, {{W-|ckb|wirg|sc=Latn}}, {{W-|ckb|giru|sc=Latn}}
* {{Z|sdh}}: {{W-|sdh|wirg|sc=Latn}}, {{W-|sdh|gurg|sc=Latn}}
** Şêxbizinî: [[wirg]] ''(wirg, wiyr)''
*:: [[gurg]] ''(gurg, guyr)''
* {{Z|hac}}: {{W-|hac|werg|sc=Latn}}
* {{Z|zza}}: {{W-|zza|verg}}
==== Werger ====
{{werger-ser}}
* {{Z|abq}}: {{W-|abq|квыджьма}}
* {{Z|abe}}: {{W-|abe|môlsem}}
* {{Z|ab}}: {{W-|ab|абгаду}}, {{W-|ab|ақәыџьма}}
* {{Z|ady}}: {{W-|ady|тыгъужъ}}
* {{Z|af}}: {{W+|af|wolf}}
* {{Z|xag}}: {{W-|xag|𐕒𐕡𐔾}}
* {{Z|akk}}: {{W-|akk|𒌨𒁇𒊏|n|tr=barbaru [UR.BAR.RA]}}
* {{Z|sq}}: {{W+|sq|ujk|n}}
* {{Z|ale}}: {{W-|ale|aliĝngix̂}}
* {{Z|alq}}: {{W-|alq|mahìgan}}, {{W-|alq|mokquishim}}
* {{Z|de}}: {{W+|de|Wolf|n}}, {{W-|de|Meister Graubein|n}}
* {{Z|alt}}: {{W-|alt|бӧрӱ}}
* {{Z|am}}: {{W-|am|ተኩላ}}
* {{Z|ani}}: {{W-|ani|боцӏо}}
* {{Z|apk}}: {{W-|apk|ba’}}
* {{Z|apw}}: {{W-|apw|ma’choh}}, {{W-|apw|ba’choh}}, {{W-|apw|ba'cho}}, {{W-|apw|mbaaʼtsu}}
* {{Z|arc}}:
*: {{Z|syc}}: {{W-|syc|ܕܐܒܐ|n|tr=dēḇā}}, {{W-|syc|ܕܐܒܬܐ|m|tr=dēḇtā}}
*: {{Z|tmr}}: {{W-|arc|דֵּיבָא|n|tr=dêḇā|sc=Hebr}}
* {{Z|rup}}: {{W-|rup|lupu|n}}
* {{Z|ast}}: {{W+|ast|llobu|n}}
* {{Z|atj}}: {{W-|atj|mahikan}}
* {{Z|av}}: {{W-|av|бацӏ}}
* {{Z|ain}}: {{W-|ain|ホㇿケゥ|tr=horkew}}, {{W-|ain|ウォセカムィ|tr=wose-kamuy}}
* {{Z|az}}: {{W+|az|canavar}}, {{W+|az|qurd}}
* {{Z|bft}}: {{W-|bft|شانكو|tr=shanko}}
* {{Z|eu}}: {{W+|eu|otso}}
* {{Z|ba}}: {{W-|ba|бүре|sc=Cyrl}}
* {{Z|bbl}}: {{W-|bbl|ბჵორწ}}
* {{Z|bar}}: {{W-|bar|Woif}}
* {{Z|be}}: {{W+|be|воўк|n}}, {{W-|be|ваўчы́ца|m}}, {{W-|be|ваўчы́ха|m}}
* {{Z|bal}}: {{W-|bal|گرک|tr=gurk}}
* {{Z|bn}}: {{W+|bn|নেকড়ে}}
* {{Z|bla}}: {{W-|bla|omahkapi'si}}
* {{Z|br}}: {{W+|br|bleiz|n}}
* {{Z|bg}}: {{W+|bg|вълк|n}}
* {{Z|my}}: {{W+|my|ဝံပုလွေ}}
* {{Z|bua}}: {{W-|bua|шоно|sc=Cyrl}}
* {{Z|ccp}}: {{W-|ccp|𑄤𑄇𑄴|tr=wāk|sc=Cakm}}
* {{Z|cjm}}: {{W-|cjm|ꨔꨪꩂ|tr=thing}}, {{W-|cjm|ꨀꨧꨭꩃ ꨔꨪꩂ|tr=asơu thing}}
* {{Z|chg}}: {{W-|chg|بورى|tr=böri|sc=fa-Arab}}
* {{Z|ce}}: {{W-|ce|борз}}
* {{Z|cs}}: {{W+|cs|vlk|n}}
* {{Z|chr}}: {{W-|chr|ᏩᏯ}}
* {{Z|chy}}: {{W-|chy|hó'nehe}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|狼|tr=long4}}
*: {{Z|dng}}: {{W-|dng|лон}}, {{W-|dng|мулон}}, {{W-|dng|лонвазы}}
*: {{Z|hak}}: {{W-|hak|狼|tr=lòng}}
*: {{Z|cmn}}: {{W+|cmn|狼|tr=láng}}
*: {{Z|cdo}}: {{W-|cdo|狼|tr=lòng}}
*: {{Z|nan}}: {{W+|nan|狼|tr=lông}}
*: {{Z|wuu}}: {{W-|wuu|狼}}
* {{Z|ckt}}: {{W-|ckt|иʼны|tr=iʼny}}, {{W-|ckt|ээʼгычгын|tr=ėėʼgyčgyn}}
* {{Z|cv}}: {{W-|cv|кашкӑр}}
* {{Z|da}}: {{W+|da|ulv|g}}
* {{Z|dgr}}: {{W-|dgr|dìga}}
* {{Z|dlg}}: {{W-|dlg|бөрө|tr=börö|sc=Cyrl}}
* {{Z|ovd}}: {{W-|ovd|warg|n}}
* {{Z|egl}}: {{W-|egl|låuv|n}}
* {{Z|id}}: {{W+|id|serigala}}
* {{Z|ar}}: {{W+|ar|ذِئْب|n}}
*: {{Z|arz}}: {{W-|arz|ديب|n|tr=dīb}}
*: {{Z|afb}}: {{W-|afb|ذيب|tr=ḏīb}}
*: {{Z|acw}}: {{W-|acw|ذيب|n|tr=ḏīb, dīb}}
*: {{Z|ary}}: {{W-|ary|ديب|n|tr=dīb}}
* {{Z|hy}}: {{W+|hy|գայլ}}
*: {{Z|xcl}}: {{W-|xcl|գայլ}}
* {{Z|myv}}: {{W-|myv|верьгиз}}
* {{Z|eo}}: {{W+|eo|lupo}}
* {{Z|et}}: {{W+|et|susi}}, {{W+|et|hunt}}
* {{Z|evn}}: {{W-|evn|иргичи}}
* {{Z|ee}}: {{W-|ee|amegãxi}}
* {{Z|fa}}: {{W+|fa|گرگ|tr=gorg}}
* {{Z|fo}}: {{W-|fo|úlvur|n}}
* {{Z|fi}}: {{W+|fi|susi}}, {{W+|fi|hukka}}, {{W-|fi|susihukka}}
* {{Z|frp}}: {{W-|frp|lop|n}}, {{W-|frp|luef|n}}
* {{Z|fr}}: {{W+|fr|loup|n}}
* {{Z|fur}}: {{W-|fur|lôf|n}}, {{W-|fur|lôv|n}}
* {{Z|frr}}: {{W-|frr|ulf}}, {{W-|frr|Ulv|n}}
* {{Z|stq}}: {{W-|stq|Wulf|n}}
* {{Z|fy}}: {{W-|fy|wolf|g}}
* {{Z|xgf}}: {{W-|xgf|'iisawut}}
* {{Z|gd}}: {{W-|gd|faol|n}}, {{W-|gd|madadh-allaidh|n}}
* {{Z|gl}}: {{W+|gl|lobo|n}}
* {{Z|cel-gau}}: {{W-|cel-gau|drucocu}}
* {{Z|glk}}: {{W-|glk|ورگ|tr=varg}}
* {{Z|gon}}: {{W-|gon|तोडेल्ली|tr=tōḍēllī}}
* {{Z|got}}: {{W-|got|𐍅𐌿𐌻𐍆𐍃|n}}
* {{Z|gu}}: {{W-|gu|ભેડીયો}}
* {{Z|ka}}: {{W-|ka|მგელი}}
* {{Z|gn}}: {{W-|gn|jaguaru}}
* {{Z|hai}}: {{W-|hai|g̱úuj}}
* {{Z|ht}}: {{W-|ht|lou}}
* {{Z|haw}}: {{W-|haw|ʻīlio hae}}
* {{Z|hi}}: {{W+|hi|भेड़िया|n}}, {{W+|hi|वृक|n}}, {{W+|hi|गुर्ग|n}}
* {{Z|nl}}: {{W+|nl|wolf|n}}
* {{Z|hoi}}: {{W-|hoi|nikʼighun}}
* {{Z|hop}}: {{W-|hop|kwewu}}
* {{Z|hrx}}: {{W-|hrx|Wollef|n}}
* {{Z|he}}: {{W-|he|זְאֵב|n|tr=z'év}}
* {{Z|io}}: {{W+|io|volfo}}
* {{Z|ang}}: {{W-|ang|wulf|n}}
* {{Z|en}}: {{W+|en|wolf}}
* {{Z|izh}}: {{W-|izh|suzi}}
* {{Z|inh}}: {{W-|inh|борз|sc=Cyrl}}
* {{Z|ia}}: {{W+|ia|lupo}}
* {{Z|iu}}: {{W+|iu|ᐊᒪᕈᖅ|sc=Cans}}
* {{Z|ik}}: {{W-|ik|amaġuq}}
* {{Z|ga}}: {{W-|ga|faolchú|n}}, {{W-|ga|mac tíre|n}}, {{W-|ga|madra alla|n}}, {{W-|ga|madra allta|n}}
*: {{Z|mga}}: {{W-|mga|fáel}}, {{W-|mga|fáelchú}}, {{W-|mga|sídach}}
*: {{Z|sga}}: {{W-|sga|cú}}, {{W-|sga|cú allaid}}, {{W-|sga|macc tíre}}, {{W-|sga|fáel|n}}
* {{Z|ruo}}: {{W-|ruo|lup|n}}
* {{Z|it}}: {{W+|it|lupo|n}}
* {{Z|itl}}: {{W-|itl|ӽығнэ}}
* {{Z|is}}: {{W+|is|úlfur|n}}
* {{Z|ja}}: {{W+|ja|狼|tr=おおかみ, ōkami|sc=Jpan}}, {{W+|ja|オオカミ|tr=ōkami|sc=Jpan}}, {{W-|ja|ウルフ|tr=urufu|sc=Jpan}}
* {{Z|jv}}: {{W+|jv|mbaung}}
* {{Z|kbd}}: {{W-|kbd|дыгъужь}}
* {{Z|tbd}}: {{W-|tbd|weldok}}
* {{Z|kl}}: {{W+|kl|amaroq}}
* {{Z|kls}}: {{W-|kls|grast}}
* {{Z|xal}}: {{W-|xal|чон}}
* {{Z|kn}}: {{W+|kn|ತೋಳ}}
* {{Z|krc}}: {{W-|krc|бёрю|sc=Cyrl}}
* {{Z|kaa}}: {{W-|kaa|bo'ri}}, {{W-|kaa|qasqır|sc=Cyrl}}
* {{Z|krl}}: {{W-|krl|hukka}}
* {{Z|csb}}: {{W-|csb|wilk|n}}
* {{Z|ca}}: {{W+|ca|llop|n}}
* {{Z|qu}}: {{W-|qu|atawka}}
* {{Z|ks}}: {{W+|ks|رامہٕ ہوٗن}}
* {{Z|ket}}: {{W-|ket|ӄыт|tr=qyt|sc=Cyrl}}
* {{Z|khv}}: {{W-|khv|боцӏа}}
* {{Z|ky}}: {{W+|ky|бөрү}}, {{W-|ky|карышкыр}}
* {{Z|si}}: {{W-|si|වෘකයා}}
* {{Z|kpv}}: {{W-|kpv|кӧин|sc=Cyrl}}
* {{Z|ko}}: {{W+|ko|늑대}}, {{W+|ko|이리}}
* {{Z|kw}}: {{W-|kw|bleydh|n}}
* {{Z|co}}: {{W+|co|lupu|n}}
* {{Z|kpy}}: {{W-|kpy|гʼэгылӈын|tr=ʕeɣəlŋən|sc=Cyrl}}
* {{Z|cr}}: {{W-|cr|mahihkan}}
* {{Z|kum}}: {{W-|kum|бёрю|sc=Cyrl}}
* {{Z|lld}}: {{W-|lld|bolp|m}}
* {{Z|lbe}}: {{W-|lbe|барцӏ}}
* {{Z|lkt}}: {{W-|lkt|šuŋgmánitu}} {{W-|lkt|tȟáŋka}}
* {{Z|ltg}}: {{W-|ltg|vylks}}
* {{Z|la}}: {{W+|la|lupus|n}}
* {{Z|lv}}: {{W+|lv|vilks|n}}
* Lenape:
*: {{Z|unm}}: {{W-|unm|tëme}}
* {{Z|lo}}: {{W+|lo|ໝາປ່າ}}, {{W+|lo|ໝາໄນ}}, {{W-|lo|ສິຄາລະ}}
* {{Z|lez}}: {{W-|lez|жанавур}}
* {{Z|olo}}: {{W-|olo|hukku}}
* {{Z|lij}}: {{W-|lij|lô|n}}
* {{Z|lt}}: {{W+|lt|vilkas|n}}
* {{Z|ycl}}: {{W-|ycl|veimar}}
* {{Z|lmo}}: {{W-|lmo|lóff}}
* {{Z|lb}}: {{W+|lb|Wollef|n}}
* {{Z|mhn}}: {{W-|mhn|bolf|n}}
* {{Z|mk}}: {{W-|mk|волк|n}}
* {{Z|mg}}: {{W+|mg|amboadia}}
* Malay:
*: {{Z|ms}}: {{W-|ms|سريݢالا|sc=Arab}}, {{W-|ms|ذيب|sc=Arab}}
*: Rûmî: {{W+|ms|serigala}}, {{W-|ms|zib}}
* {{Z|ml}}: {{W+|ml|ചെന്നായ്}}
* {{Z|mt}}: {{W-|mt|dib|n}}, {{W-|mt|lupu|n}}
* {{Z|mnc}}: {{W-|mnc|ᠨᡳᠣᡥᡝ}}
* {{Z|gv}}: {{W-|gv|filliu|n}}, {{W-|gv|moddey oaldey|n}}
* {{Z|mi}}: {{W+|mi|wuruhi}}, {{W-|mi|wuruwhi}}
* {{Z|mr}}: {{W-|mr|लांडगा|n}}, {{W-|mr|वृक|n}}
* Marî:
*: {{Z|mhr}}: {{W-|mhr|пире|sc=Cyrl}}
*: {{Z|mrj}}: {{W-|mrj|пирӹ}}
* {{Z|mzn}}: {{W-|mzn|ورگ|tr=vërg|sc=ps-Arab}}
* {{Z|gun}}: {{W-|gun|aguara-jagua}}
* {{Z|hu}}: {{W+|hu|farkas}}
* {{Z|xmf}}: {{W-|xmf|გერი}}
* {{Z|iro-min}}: {{W-|iro-min|utháyôni}}
* {{Z|mic}}: {{W-|mic|paqt'sm|an}}, {{W-|mic|paqtesm|an}}, {{W-|mic|paqte'smug|an}}
* {{Z|mwl}}: {{W-|mwl|lhobo|n}}
* {{Z|mdf}}: {{W-|mdf|врьгаз}}
* {{Z|mn}}: {{W+|mn|чоно}}
* {{Z|moe}}: {{W-|moe|maikan}}
* {{Z|mtq}}: {{W-|mtq|khỏl}}
* {{Z|nah}}: {{W+|nah|cuetlāchtli}}
* {{Z|gld}}: {{W-|gld|енгур}}
* {{Z|nv}}: {{W-|nv|mąʼiitsoh}}
* {{Z|nxq}}: {{W-|nxq|paqkee}}, {{W-|nxq|xulkee}}
* {{Z|nds}}: {{W+|nds|Wulf|n}}
* {{Z|yrk}}: {{W-|yrk|ӈылека}}, {{W-|yrk|сармик}}
* {{Z|ne}}: {{W-|ne|ब्वाँसो}}
* {{Z|nio}}: {{W-|nio|ӈӱлиаӡә|sc=Cyrl}}
* {{Z|niv}}: {{W-|niv|лиғс|sc=Cyrl}}
* {{Z|nog}}: {{W-|nog|боьри}}
* {{Z|nuk}}: {{W-|nuk|qʷayac̕iik}}
* {{Z|non}}: {{W-|non|úlfr|n}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|ulv|n}}, {{W-|nb|varg|n}}, {{W-|nb|gråbein|n}}
*: {{Z|nn}}: {{W+|nn|ulv|n}}, {{W-|nn|varg|n}}, {{W-|nn|gråbein|n}}
* {{Z|oj}}: {{W-|oj|ma'iingan}}
* {{Z|oc}}: {{W+|oc|lop|n}}
* {{Z|om}}: {{W-|om|yeeyyii}}
* {{Z|orh}}: {{W-|orh|guykə}}
* {{Z|os}}: {{W-|os|бирӕгъ}}
* {{Z|ug}}: {{W-|ug|قۇرت|sc=ug-Arab}}, {{W+|ug|بۆرە}}, {{W-|ug|قاراشقاۇ}}, {{W-|ug|قارىشقۇ}}
* {{Z|uz}}: {{W+|uz|boʻri}}, {{W+|uz|qashqir}}
* {{Z|paw}}: {{W-|paw|ckírihki}}
* {{Z|ps}}: {{W+|ps|لېوه|n|tr=lewë}}, {{W+|ps|شرمښ|n|tr=šërmëẍ}}
* {{Z|pms}}: {{W-|pms|luv|n}}
* {{Z|pdt}}: {{W-|pdt|Wulf|n}}
* {{Z|pox}}: {{W-|pox|våuk|n}}
* {{Z|pl}}: {{W+|pl|wilk|m-an}}, {{W+|pl|basior|m-an}}, {{W+|pl|wadera|m}}
* {{Z|pt}}: {{W+|pt|lobo|n}}
* Punjabi:
*: Gurmuxî: {{W+|pa|ਬਘਿਆੜ|n}}
*: Şahmuxî: {{W-|pa|بَگِھیاڑ|n}}
* {{Z|kk}}: {{W-|kk|бөрі|sc=Cyrl}}, {{W-|kk|қасқыр|sc=Cyrl}}
* {{Z|cop}}: {{W-|cop|ⲟⲩⲱⲛϣ}}
* {{Z|rm}}: {{W-|rm|luf|n}}, {{W-|rm|louf|n}}
* {{Z|rom}}: {{W-|rom|ruv|n}}
* {{Z|ro}}: {{W+|ro|lup|n}}
* {{Z|ru}}: {{W+|ru|волк|n}}, {{W-|ru|волчи́ца|m}}
* {{Z|rue}}: {{W-|rue|вовк|n}}
* {{Z|sbv}}: {{W-|sbv|hirpus}}
* {{Z|slr}}: {{W-|slr|bori}}
* {{Z|se}}: {{W-|se|gumpe}}
* {{Z|sjd}}: {{W-|sjd|пальтэсь}}, {{W-|sjd|скуммьп}}
* {{Z|sms}}: {{W-|sms|čõrmm}}
* {{Z|sgs}}: {{W-|sgs|vėlks|n}}
* {{Z|sa}}: {{W+|sa|वृक|n}}, {{W+|sa|श्वक|n}}
* {{Z|sei}}: {{W-|sei|xeecoj}}, {{W-|sei|ziix yaacö caaixaj}}
* {{Z|scn}}: {{W+|scn|lupu|n}}
* {{Z|csm}}: {{W-|csm|húŋ·u-}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|вук|n|sc=Cyrl}}
*: Latînî: {{W+|sh|vuk|n}}
* {{Z|sco}}: {{W-|sco|wouf}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|влькъ|n}}, {{W-|cu|вльчица|m}}
*: Glagolîtîk: {{W-|cu|ⰲⰾⱐⰽⱏ|n}}
* {{Z|orv}}: {{W-|orv|вълкъ|n}}
* {{Z|sk}}: {{W+|sk|vlk|n}}
* {{Z|sl}}: {{W+|sl|volk|n}}
* {{Z|so}}: {{W-|so|yey}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|wjelk|n}}
*: {{Z|hsb}}: {{W-|hsb|wjelk|n}}
* {{Z|ses}}: {{W-|ses|ganjihanŝi}}
* {{Z|es}}: {{W+|es|lobo|n}}
* {{Z|sux}}: {{W-|sux|𒌨𒁇𒊏|tr=urbarra}}
* {{Z|sva}}: {{W-|sva|თხე̄რე}}
* {{Z|sw}}: {{W-|sw|mbwa mwitu|c9|c10}}
* {{Z|sv}}: {{W+|sv|varg|g}}, {{W+|sv|ulv|g}}
* {{Z|xsr}}: {{W-|xsr|སྤྱང་ཀུ|tr=changku}}
* {{Z|zdj}}: {{W-|zdj|dhiiɓu}}
* {{Z|cjs}}: {{W-|cjs|пӧрӱ|tr=pörü|sc=Cyrl}}
* {{Z|tct}}: {{W-|tct|laput}}
* {{Z|tab}}: {{W-|tab|жанавар}}
* {{Z|tg}}: {{W+|tg|гург|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|lobo}}
* {{Z|tht}}: {{W-|tht|ch’iyōne}}
* {{Z|ta}}: {{W+|ta|ஓநாய்}}
* {{Z|twf}}: {{W-|twf|kòléna}}
* {{Z|rif}}: {{W-|rif|uššen|n}}
* {{Z|th}}: {{W+|th|หมาป่า}}, {{W-|th|สุนัขป่า}}
* {{Z|te}}: {{W+|te|తోడేలు}}
* {{Z|tzm}}: {{W-|tzm|ⵓⵛⵛⵏ}}
* {{Z|crh}}: {{W-|crh|börü}}
* {{Z|tt}}: {{W+|tt|бүре|sc=Cyrl}}
* {{Z|ti}}: {{W-|ti|ተዅላ}}
* {{Z|tr}}: {{W+|tr|kurt}}, {{W+|tr|börü}}
* {{Z|tk}}: {{W+|tk|böri}}, {{W-|tk|gurt}}, {{W+|tk|möjek}}
* {{Z|bo}}: {{W-|bo|སྦྱང་ཀུ}}, {{W-|bo|སྤྱང་ཀི}}
* {{Z|tli}}: {{W-|tli|g̱ooch}}
* {{Z|tpi}}: {{W-|tpi|weldok}}
* {{Z|txb}}: {{W-|txb|walkwe}}
* {{Z|tyv}}: {{W-|tyv|бөрү|sc=Cyrl}}
* {{Z|udi}}: {{W-|udi|ул}}
* {{Z|udm}}: {{W-|udm|кион|sc=Cyrl}}
* {{Z|urk}}: {{W-|urk|อาซู ฮูตัด|sc=Thai|tr=asu hutat}}
* {{Z|ur}}: {{W-|ur|بھیڑیا|n|tr=bheṛiyā}}
* {{Z|uk}}: {{W-|uk|вовк|n}}, {{W-|uk|вовчи́ця|m}}, {{W-|uk|вовчи́ха|m}}
* {{Z|uum}}: {{W-|uum|джанавар}}
* {{Z|vec}}: {{W-|vec|łovo|n}}, {{W-|vec|lóvo|n}}
* {{Z|vep}}: {{W-|vep|händikaz}}
* {{Z|vi}}: {{W+|vi|sói}}, {{W+|vi|chó sói}}
* {{Z|vo}}: {{W+|vo|lup}}, {{W-|vo|ludog}}
* {{Z|vro}}: {{W-|vro|susi}}
* {{Z|vot}}: {{W-|vot|susi}}
* {{Z|wa}}: {{W+|wa|leu|n}}
* {{Z|cy}}: {{W+|cy|blaidd|n}}
* {{Z|wym}}: {{W-|wym|wūf|n}}
* {{Z|win}}: {{W-|win|šųųkjąk}}
* {{Z|kjh}}: {{W-|kjh|пӱӱр}}
* {{Z|km}}: {{W+|km|ចចក}}
* {{Z|apj}}: {{W-|apj|ba’iitso}}
* {{Z|yai}}: {{W-|yai|урк}}
* {{Z|sah}}: {{W-|sah|бөрө|sc=Cyrl}}
* {{Z|yi}}: {{W-|yi|וואָלף|n}}
* Yokutî:
*: {{Z|yok-svy}}: {{W-|yok-svy|yawlicʼ}}
* {{Z|ii}}: {{W-|ii|ꆿꍫ}}, {{W-|ii|ꆿꆚ}}
* {{Z|esu}}: {{W-|esu|kegluneq}}
* {{Z|el}}: {{W+|el|λύκος|n}}
*: Kevn: {{W-|grc|λύκος|n}}
* {{Z|za}}: {{W-|za|manaez}}
* {{Z|zu}}: {{W-|zu|inja yasendle|c9|c10}}
* {{Z|zun}}: {{W-|zun|yuna:wik'o}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{f|ku|bijîşkî}} [[xur]], [[nexweşî|nexweşiyek]] e ku mirov û [[heywan]]an [[xurandin|dixurîne]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|hy}}: {{W|hy|գայլ|tr=gayl}}
{{werger-bin}}
{{bend}}
=== Navdêr 3 ===
{{navdêr|ku|z=m}}
# [[girê]], [[girêk]], [[girê]]dan (bi taybetî ji [[terik]]ên daran yan jî bi [[qor]] û [[qamîş]]î)
#* {{bêmînak|ku}}
==== Jê ====
{{kol3|ku
|gur dan<q:lêker>
|gurdan<q:navdêr>
|gurdayî<q:rengdêr>
|gurî
|gurkî
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|gur}}
{{rengdêr|ku}}, {{r-ya req}}
# [[xurt]], [[bihêz]], [[qewî]], [[geş]].
#* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Xwînbarî dikir bi herdu çavan<br />Seyla cegerê wesa li '''gur''' hat<br />Goya ko bi ser Erez ve gur hat}}
#* {{jêder-pirtûk|ku|jêgirtin=...agirê '''gur'''...|nivîskar={{w|J.R.R. Tolkien}}|sernav=Hobbit|wergêr=Samî Hêzil|cîh=Enqere|weşanxane={{w|Weşanên Cervantes|Cervantes}}|sal=2023|çap=1|rûpel=72|isbn=9786257724838}}
==== Formên alternatîv ====
* {{g|ku|gurr}} {{mj|2}}
==== Jê ====
{{kol3|ku|cure=Jê
|gurî
|gur bûn<q:lêker>
|gur kirin<q:lêker>
|gurbûn<q:navdêr>
|gurkirin<q:navdêr>
|gurbûyî<q:rengdêr>
|gurkirî<q:rengdêr>
}}
==== Etîmolojî ====
Hevreh bi {{hv|ckb|گوڕ|w=têhn; hêz}}, {{hv|sa|घृण}}, ji {{jinûvesazî|gurn}}, {{mîr|ira-pro|ku|*gr̥náh}}, {{mîr|iir-pro|ku|*gʰr̥nás}}, {{mîr|ine-pro|ku|*gʷʰer-||germ, kel}}, hevreh bi {{q|ku|germ}} û {{q|ku|kel}}. Guherra ramanê a mecazî ji ''têhn, germî'' va di zimanên din da jî peyda ye. Bêtêkilî {{hv|tr|gür}} û {{q|tr|güç}}.
Ramanên din ên wek "dengê brûskan" [[onomatopoetîk]] in.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|dicht}}, {{W|de|üppig|guman=erê}}
* {{Z|ar}}: {{W|ar|قوي}}, {{W|ar|متين}}
* {{Z|fa}}: {{W|fa|شدید}}
* {{Z|en}}: {{W+|en|powerful}}, {{W+|en|mighty}},{{W+|en|strong}}, {{W|en|vehement|guman=erê}}
{{werger-bin}}
== {{ziman|sq}} ==
=== Navdêr ===
{{navdêr|sq}}
# [[kevir]]
#* {{bêmînak|sq}}
{{PH-nîşan|17/2011}}
95nj7y9rfapkqdc2fm85zwsqc4uyh02
ewê
0
5752
6328952
6232765
2026-08-11T11:49:37Z
Balyozbot
7867
/* Cînav */ sererastkirin
6328952
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Cînav ===
{{cînav|ku}}
# {{guherto|wê}}
#: ''Forma nêr: [[ewî]].''
#* {{jêder-malper|ku|jêgirtin=Dîsan ew qizîka ku te qala '''ewê''' kir, zanîngeh xwendiye, [...]|nivîskar=Rehmî Kurdziman|sernav=Ez ji xwe ra nabêjim nivîskar, karê min nivîskarî nîne|malper=inanolo.blogspot.com|url=https://inanolo.blogspot.com/2018/10/rehmi-kurdziman-ez-ji-xwe-ra-nabejim.html|sal=2018}}
#* {{bêmînak|ku}}
# [[ê]], [[yê]], [[ew]] yê ku
#: {{mk|ku|'''Ewê''' bizane, divê bêje.|Ew ê bizane.|rêz=1}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=''Qani' bi tesewwura cemalê</br>Fanî bikitin '''ewê''' wucûdê</br>Baqî bibitin bi vê şuhûdê«}}
==== Etîmolojî ====
Ji {{paş|ku|ew|-ê}}.
jep3y3lkw2u94w0hjmcj0zim2uf39c6
ajotin
0
5779
6328757
6296351
2026-08-10T23:39:22Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328757
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-ajotin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|ajotin|form=gerguhêz|niha=ajo|borî=ajot}}
[[Wêne:Rush Rush Rush.jpg|thumb|Kesek tirimpêlê '''diajo'''.]]
{{lêker|ku|c=x-gh}}
# [[tirimpêl|Tirimpêl]]ek yan [[dewar]]ek [[meşandin]] ango anîn yan [[birin]].
#: {{mk|ku|Te çima [[terş]]ê xwe '''ajotiye''' nav [[bûstan]]ê me?!}}
# [[vêkişandin|Vêkişandin]], [[dirêj bûn]].
#: {{mk|ku|Civîna wan seetekê '''ajot'''.|ango civîna wan seetekê dirêj bû|birêz=1}}
# [[kêlan|Kêlan]], [[cot]] kirin.
#: {{mk|ku|Ew hê jî zeviyên xwe bi [[ga]]yan '''diajon''' (an jî '''[[dojin]]''').}}
# [[teqîb|Teqîb]] kirin, mînak [[şop]] ajotin.
#* {{bêmînak|ku}}
# [[zixtkirin|Zixtkirin]], [[handan]].
#* {{bêmînak|ku}}
# [[sirgûn kirin]]
#* {{jêder-pirtûk|ku|jêgirtin=Walah eve xebera derew biderdikeve ez dê te tālān bikim û kep û guhêd te jî ji boy sosret jê kim û te ji nêva êlê biderînim û '''bajom (biajom)'''! Êdî tu dizanî!|nivîskar=Mele Mehmûdê Bazîdî|edîtor= Mîkaîl Bilbil; Mistafa Oztirk |sernav= Tûhfetu'l-Xîlan Fî Zimanê Kurdan |weşanxane= Weqfa Mezopotamyayê |sal=2019|çap=1|rûpel=161|isbn=978-605-80975-1-3}}
==== Bi alfabeyên din ====
* {{ku-ar|ئاژۆتن}}
* {{ku-kr|ажотьн}}
==== Jê ====
{{kol3|ku
| ajokar
| ajokarî
| ajoname
| ajonamedar
| ajonamedarî
| ajovan
| ajovanî
| ajozan
| ajozanî
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*h₂eǵ-}}, {{ji|ira-pro|ku|*aza-}}, [[hevreh]]a {{g|ae|𐬀𐬰𐬀𐬌𐬙𐬌}} ya avestayî, sanskrîtî {{g|sa|अजति}}, ermeniya kevn {{g|xcl|ածեմ|tr=acem}}, yûnaniya kevn {{g|grc|ἄγω|tr=ago}}, latînî {{q|la|agō}}, swêdî {{q|sv|åka}}... Heman peyv ihtimal e ku serekaniya {{q|zza|hêga|tr=[[zevî]]}} ya zazakî ye jî. {{q|fi|ajaa}} ja fînî û {{q|et|ajama}} ya estonî bi ihtimaleke mezin ji {{ji|ine-pro|ku|-}}, bi taybetî ji {{ji|ira-pro|ku|-}} hatine deynkirin.
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|sc=Latn|lê xurrîn}} (1), {{W-|ckb|sc=Latn|xayandin}} (3)
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|bestuur}}, {{W+|af|lei}}
* {{Z|de}}: {{W+|de|dauern}}, {{W+|de|fahren}}, {{W+|de|lenken}}, {{W+|de|führen}}, {{W+|de|leiten}}, {{W+|de|einfahren}}, {{W+|de|einlenken}}, {{W+|de|Einfahrt|m}}, {{W+|de|abführen}}, {{W+|de|schieben}}, {{W+|de|steuern}}, {{W+|de|treiben|guman=erê}}
* {{Z|cs}}: {{W+|cs|doprovodit}}, {{W-|cs|dovézt}}, {{W+|cs|dovést}}, {{W+|cs|předvést}}, {{W+|cs|převézt}}, {{W+|cs|přinést}}, {{W+|cs|přivézt}}, {{W-|cs|přivážet}}, {{W+|cs|řídit}}, {{W+|cs|vést}}, {{W+|cs|vodit}}, {{W+|cs|vozit}}
* {{Z|da}}: {{W-|da|styrre}}, {{W-|da|føre}}
* {{Z|ar}}: {{W-|ar|السیاقة}}, {{W-|ar|القود}}, {{W-|ar|القیادة}}, {{W-|ar|حرث|guman=erê}}, {{W-|ar|مساق|guman=erê}}, {{W-|ar|القیاد|guman=erê}}
* {{Z|eo}}: {{W+|eo|stiri}}, {{W-|eo|konduki}}
* {{Z|fa}}: {{W+|fa|رانندگی}}, {{W+|fa|راندن}}, {{W+|fa|رانندگی کردن}}, {{W+|fa|هدایت کردن}}, {{W+|fa|فریاد زدن|guman=erê}}
* {{Z|fo}}: {{W-|fo|leiða}}, {{W-|fo|føra}}
* {{Z|fi}}: {{W+|fi|ajaa}}
* {{Z|fr}}: {{W+|fr|conduire}}
* {{Z|fy}}: {{W-|fy|liede}}
* {{Z|nl}}: {{W+|nl|besturen}}, {{W+|nl|sturen}}, {{W+|nl|brengen}}, {{W+|nl|leiden}}, {{W+|nl|geleiden}}, {{W+|nl|voeren}}
* {{Z|he}}: {{W+|he|נחה|n}}, {{W+|he|נהג|n}}, {{W+|he|גרש|cuda=גּרשׁ}}
* {{Z|io}}: {{W+|io|duktar}}
* {{Z|en}}: {{W+|en|drive}}, {{W+|en|steer}}, {{W+|en|fly}}, {{W+|en|conduct}}, {{W+|en|guide}}, {{W+|en|lead}}, {{W+|en|channel}}, {{W+|en|wage}}, {{W+|en|bring}}, {{W+|en|drag on}}, {{W+|en|driving}}, {{W+|en|cruise}}, {{W+|en|prodding}}, {{W+|en|going away|guman=erê}}, {{W+|en|conducting|guman=erê}}, {{W+|en|conn|guman=erê}}, {{W+|en|cox|guman=erê}}, {{W+|en|cruising|guman=erê}}, {{W+|en|foment|guman=erê}}, {{W+|en|fomentation|guman=erê}}, {{W+|en|fomenting|guman=erê}}, {{W+|en|hortation|guman=erê}}, {{W+|en|instigation|guman=erê}}, {{W+|en|leading|guman=erê}}, {{W+|en|navigating|guman=erê}}, {{W+|en|spurring|guman=erê}}, {{W+|en|steerage|guman=erê}}, {{W+|en|tarring|guman=erê}}, {{W+|en|urging|guman=erê}}, {{W+|en|whish|guman=erê}}, {{W+|en|till}}
* {{Z|it}}: {{W+|it|condurre}}, {{W+|it|guidare}}
* {{Z|ca}}: {{W+|ca|conduir}}, {{W+|ca|menar}}
* {{Z|la}}: {{W+|la|ducere}}
* {{Z|ms}}: {{W+|ms|pimpin}}
* {{Z|pl}}: {{W+|pl|prowadzić}}
* {{Z|pt}}: {{W+|pt|conduzir}}, {{W+|pt|dirigir}}, {{W+|pt|guiar}}, {{W+|pt|levar}}
* {{Z|ro}}: {{W+|ro|conduce}}
* {{Z|ru}}: {{W+|ru|вести}}
* {{Z|se}}: {{W-|se|doalvut}} (1-3)
* {{Z|ses}}: {{W-|ses|zurandi}}
* {{Z|es}}: {{W+|es|conducir}}
* {{Z|sv}}: {{W+|sv|köra}}, {{W+|sv|åka}}, {{W+|sv|föra}}
* {{Z|tr}}: {{W+|tr|sürmek}}, {{W+|tr|çift sürmek}}, {{W+|tr|gütmek}}, {{W+|tr|tutmak}}, {{W+|tr|yürütmek}}, {{W+|tr|çekmek|guman=erê}}, {{W-|tr|çığlık atmak|guman=erê}}, {{W+|tr|sürüklenmek|guman=erê}}, {{W+|tr|uzamak|guman=erê}}, {{W+|tr|yağdırmak|guman=erê}}
* {{Z|el}}: {{W+|el|οδηγώ|R=odhigó}}
* {{Z|fsl}}: [http://lsf.wiksign.org/wiki/conduire conduire]
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[meşandin|Meşandin]] ango anîn yan [[birin]]a [[tirimpêl|tirimpêl]]ek yan [[dewar]]ek.
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürme}}, {{W+|tr|gütme}}, {{W+|tr|hamle}}, {{W+|tr|sürüklenme}}, {{W+|tr|yürütme}}, {{W+|tr|uzama|guman=erê}}, {{W+|tr|yaşatma|guman=erê}}
{{werger-bin}}
mvqavp6hedqqmq6gnnu0th1of1qj441
6328759
6328757
2026-08-10T23:58:57Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328759
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-ajotin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|ajotin|form=gerguhêz|niha=ajo|borî=ajot}}
[[Wêne:Rush Rush Rush.jpg|thumb|Kesek tirimpêlê '''diajo'''.]]
{{lêker|ku|c=x-gh}}
# [[tirimpêl|Tirimpêl]]ek yan [[dewar]]ek [[meşandin]] ango anîn yan [[birin]].
#: {{mk|ku|Te çima [[terş]]ê xwe '''ajotiye''' nav [[bûstan]]ê me?!}}
# [[vêkişandin|Vêkişandin]], [[dirêj bûn]].
#: {{mk|ku|Civîna wan seetekê '''ajot'''.|ango civîna wan seetekê dirêj bû|birêz=1}}
# [[kêlan|Kêlan]], [[cot]] kirin.
#: {{mk|ku|Ew hê jî zeviyên xwe bi [[ga]]yan '''diajon''' (an jî '''[[dojin]]''').}}
# [[teqîb|Teqîb]] kirin, mînak [[şop]] ajotin.
#* {{bêmînak|ku}}
# [[zixtkirin|Zixtkirin]], [[handan]].
#* {{bêmînak|ku}}
# [[sirgûn kirin]]
#* {{jêder-pirtûk|ku|jêgirtin=Walah eve xebera derew biderdikeve ez dê te tālān bikim û kep û guhêd te jî ji boy sosret jê kim û te ji nêva êlê biderînim û '''bajom (biajom)'''! Êdî tu dizanî!|nivîskar=Mele Mehmûdê Bazîdî|edîtor= Mîkaîl Bilbil; Mistafa Oztirk |sernav= Tûhfetu'l-Xîlan Fî Zimanê Kurdan lînka-sernav=Tuhfetu'l-xullan fî zimanê kurdan|weşanxane= Weqfa Mezopotamyayê |sal=1866|sala-weşandinê=2019|çap=1|rûpel=161|isbn=978-605-80975-1-3}}
==== Bi alfabeyên din ====
* {{ku-ar|ئاژۆتن}}
* {{ku-kr|ажотьн}}
==== Jê ====
{{kol3|ku
| ajokar
| ajokarî
| ajoname
| ajonamedar
| ajonamedarî
| ajovan
| ajovanî
| ajozan
| ajozanî
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*h₂eǵ-}}, {{ji|ira-pro|ku|*aza-}}, [[hevreh]]a {{g|ae|𐬀𐬰𐬀𐬌𐬙𐬌}} ya avestayî, sanskrîtî {{g|sa|अजति}}, ermeniya kevn {{g|xcl|ածեմ|tr=acem}}, yûnaniya kevn {{g|grc|ἄγω|tr=ago}}, latînî {{q|la|agō}}, swêdî {{q|sv|åka}}... Heman peyv ihtimal e ku serekaniya {{q|zza|hêga|tr=[[zevî]]}} ya zazakî ye jî. {{q|fi|ajaa}} ja fînî û {{q|et|ajama}} ya estonî bi ihtimaleke mezin ji {{ji|ine-pro|ku|-}}, bi taybetî ji {{ji|ira-pro|ku|-}} hatine deynkirin.
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|sc=Latn|lê xurrîn}} (1), {{W-|ckb|sc=Latn|xayandin}} (3)
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|bestuur}}, {{W+|af|lei}}
* {{Z|de}}: {{W+|de|dauern}}, {{W+|de|fahren}}, {{W+|de|lenken}}, {{W+|de|führen}}, {{W+|de|leiten}}, {{W+|de|einfahren}}, {{W+|de|einlenken}}, {{W+|de|Einfahrt|m}}, {{W+|de|abführen}}, {{W+|de|schieben}}, {{W+|de|steuern}}, {{W+|de|treiben|guman=erê}}
* {{Z|cs}}: {{W+|cs|doprovodit}}, {{W-|cs|dovézt}}, {{W+|cs|dovést}}, {{W+|cs|předvést}}, {{W+|cs|převézt}}, {{W+|cs|přinést}}, {{W+|cs|přivézt}}, {{W-|cs|přivážet}}, {{W+|cs|řídit}}, {{W+|cs|vést}}, {{W+|cs|vodit}}, {{W+|cs|vozit}}
* {{Z|da}}: {{W-|da|styrre}}, {{W-|da|føre}}
* {{Z|ar}}: {{W-|ar|السیاقة}}, {{W-|ar|القود}}, {{W-|ar|القیادة}}, {{W-|ar|حرث|guman=erê}}, {{W-|ar|مساق|guman=erê}}, {{W-|ar|القیاد|guman=erê}}
* {{Z|eo}}: {{W+|eo|stiri}}, {{W-|eo|konduki}}
* {{Z|fa}}: {{W+|fa|رانندگی}}, {{W+|fa|راندن}}, {{W+|fa|رانندگی کردن}}, {{W+|fa|هدایت کردن}}, {{W+|fa|فریاد زدن|guman=erê}}
* {{Z|fo}}: {{W-|fo|leiða}}, {{W-|fo|føra}}
* {{Z|fi}}: {{W+|fi|ajaa}}
* {{Z|fr}}: {{W+|fr|conduire}}
* {{Z|fy}}: {{W-|fy|liede}}
* {{Z|nl}}: {{W+|nl|besturen}}, {{W+|nl|sturen}}, {{W+|nl|brengen}}, {{W+|nl|leiden}}, {{W+|nl|geleiden}}, {{W+|nl|voeren}}
* {{Z|he}}: {{W+|he|נחה|n}}, {{W+|he|נהג|n}}, {{W+|he|גרש|cuda=גּרשׁ}}
* {{Z|io}}: {{W+|io|duktar}}
* {{Z|en}}: {{W+|en|drive}}, {{W+|en|steer}}, {{W+|en|fly}}, {{W+|en|conduct}}, {{W+|en|guide}}, {{W+|en|lead}}, {{W+|en|channel}}, {{W+|en|wage}}, {{W+|en|bring}}, {{W+|en|drag on}}, {{W+|en|driving}}, {{W+|en|cruise}}, {{W+|en|prodding}}, {{W+|en|going away|guman=erê}}, {{W+|en|conducting|guman=erê}}, {{W+|en|conn|guman=erê}}, {{W+|en|cox|guman=erê}}, {{W+|en|cruising|guman=erê}}, {{W+|en|foment|guman=erê}}, {{W+|en|fomentation|guman=erê}}, {{W+|en|fomenting|guman=erê}}, {{W+|en|hortation|guman=erê}}, {{W+|en|instigation|guman=erê}}, {{W+|en|leading|guman=erê}}, {{W+|en|navigating|guman=erê}}, {{W+|en|spurring|guman=erê}}, {{W+|en|steerage|guman=erê}}, {{W+|en|tarring|guman=erê}}, {{W+|en|urging|guman=erê}}, {{W+|en|whish|guman=erê}}, {{W+|en|till}}
* {{Z|it}}: {{W+|it|condurre}}, {{W+|it|guidare}}
* {{Z|ca}}: {{W+|ca|conduir}}, {{W+|ca|menar}}
* {{Z|la}}: {{W+|la|ducere}}
* {{Z|ms}}: {{W+|ms|pimpin}}
* {{Z|pl}}: {{W+|pl|prowadzić}}
* {{Z|pt}}: {{W+|pt|conduzir}}, {{W+|pt|dirigir}}, {{W+|pt|guiar}}, {{W+|pt|levar}}
* {{Z|ro}}: {{W+|ro|conduce}}
* {{Z|ru}}: {{W+|ru|вести}}
* {{Z|se}}: {{W-|se|doalvut}} (1-3)
* {{Z|ses}}: {{W-|ses|zurandi}}
* {{Z|es}}: {{W+|es|conducir}}
* {{Z|sv}}: {{W+|sv|köra}}, {{W+|sv|åka}}, {{W+|sv|föra}}
* {{Z|tr}}: {{W+|tr|sürmek}}, {{W+|tr|çift sürmek}}, {{W+|tr|gütmek}}, {{W+|tr|tutmak}}, {{W+|tr|yürütmek}}, {{W+|tr|çekmek|guman=erê}}, {{W-|tr|çığlık atmak|guman=erê}}, {{W+|tr|sürüklenmek|guman=erê}}, {{W+|tr|uzamak|guman=erê}}, {{W+|tr|yağdırmak|guman=erê}}
* {{Z|el}}: {{W+|el|οδηγώ|R=odhigó}}
* {{Z|fsl}}: [http://lsf.wiksign.org/wiki/conduire conduire]
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[meşandin|Meşandin]] ango anîn yan [[birin]]a [[tirimpêl|tirimpêl]]ek yan [[dewar]]ek.
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürme}}, {{W+|tr|gütme}}, {{W+|tr|hamle}}, {{W+|tr|sürüklenme}}, {{W+|tr|yürütme}}, {{W+|tr|uzama|guman=erê}}, {{W+|tr|yaşatma|guman=erê}}
{{werger-bin}}
3dfziejvangzbanbxeer2ftgvdggo0u
6328760
6328759
2026-08-11T00:02:27Z
Wikihez
7344
/* Lêker */
6328760
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-ajotin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|ajotin|form=gerguhêz|niha=ajo|borî=ajot}}
[[Wêne:Rush Rush Rush.jpg|thumb|Kesek tirimpêlê '''diajo'''.]]
{{lêker|ku|c=x-gh}}
# [[tirimpêl|Tirimpêl]]ek yan [[dewar]]ek [[meşandin]] ango anîn yan [[birin]].
#: {{mk|ku|Te çima [[terş]]ê xwe '''ajotiye''' nav [[bûstan]]ê me?!}}
# [[vêkişandin|Vêkişandin]], [[dirêj bûn]].
#: {{mk|ku|Civîna wan seetekê '''ajot'''.|ango civîna wan seetekê dirêj bû|birêz=1}}
# [[kêlan|Kêlan]], [[cot]] kirin.
#: {{mk|ku|Ew hê jî zeviyên xwe bi [[ga]]yan '''diajon''' (an jî '''[[dojin]]''').}}
# [[teqîb|Teqîb]] kirin, mînak [[şop]] ajotin.
#* {{bêmînak|ku}}
# [[zixtkirin|Zixtkirin]], [[handan]].
#* {{bêmînak|ku}}
# [[sirgûn kirin]]
#* {{jêder-pirtûk|ku|jêgirtin=Walah eve xebera derew biderdikeve ez dê te tālān bikim û kep û guhêd te jî ji boy sosret jê kim û te ji nêva êlê biderînim û '''bajom (biajom)'''! Êdî tu dizanî!|nivîskar=w:Mele Mehmûdê Bazîdî|edîtor= Mîkaîl Bilbil; Mistafa Oztirk |sernav= w:Tûhfetu'l-Xîlan Fî Zimanê Kurdan|weşanxane= Weqfa Mezopotamyayê |sal=1866|sala-weşandinê=2019|çap=1|rûpel=161|isbn=978-605-80975-1-3}}
==== Bi alfabeyên din ====
* {{ku-ar|ئاژۆتن}}
* {{ku-kr|ажотьн}}
==== Jê ====
{{kol3|ku
| ajokar
| ajokarî
| ajoname
| ajonamedar
| ajonamedarî
| ajovan
| ajovanî
| ajozan
| ajozanî
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*h₂eǵ-}}, {{ji|ira-pro|ku|*aza-}}, [[hevreh]]a {{g|ae|𐬀𐬰𐬀𐬌𐬙𐬌}} ya avestayî, sanskrîtî {{g|sa|अजति}}, ermeniya kevn {{g|xcl|ածեմ|tr=acem}}, yûnaniya kevn {{g|grc|ἄγω|tr=ago}}, latînî {{q|la|agō}}, swêdî {{q|sv|åka}}... Heman peyv ihtimal e ku serekaniya {{q|zza|hêga|tr=[[zevî]]}} ya zazakî ye jî. {{q|fi|ajaa}} ja fînî û {{q|et|ajama}} ya estonî bi ihtimaleke mezin ji {{ji|ine-pro|ku|-}}, bi taybetî ji {{ji|ira-pro|ku|-}} hatine deynkirin.
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|sc=Latn|lê xurrîn}} (1), {{W-|ckb|sc=Latn|xayandin}} (3)
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|bestuur}}, {{W+|af|lei}}
* {{Z|de}}: {{W+|de|dauern}}, {{W+|de|fahren}}, {{W+|de|lenken}}, {{W+|de|führen}}, {{W+|de|leiten}}, {{W+|de|einfahren}}, {{W+|de|einlenken}}, {{W+|de|Einfahrt|m}}, {{W+|de|abführen}}, {{W+|de|schieben}}, {{W+|de|steuern}}, {{W+|de|treiben|guman=erê}}
* {{Z|cs}}: {{W+|cs|doprovodit}}, {{W-|cs|dovézt}}, {{W+|cs|dovést}}, {{W+|cs|předvést}}, {{W+|cs|převézt}}, {{W+|cs|přinést}}, {{W+|cs|přivézt}}, {{W-|cs|přivážet}}, {{W+|cs|řídit}}, {{W+|cs|vést}}, {{W+|cs|vodit}}, {{W+|cs|vozit}}
* {{Z|da}}: {{W-|da|styrre}}, {{W-|da|føre}}
* {{Z|ar}}: {{W-|ar|السیاقة}}, {{W-|ar|القود}}, {{W-|ar|القیادة}}, {{W-|ar|حرث|guman=erê}}, {{W-|ar|مساق|guman=erê}}, {{W-|ar|القیاد|guman=erê}}
* {{Z|eo}}: {{W+|eo|stiri}}, {{W-|eo|konduki}}
* {{Z|fa}}: {{W+|fa|رانندگی}}, {{W+|fa|راندن}}, {{W+|fa|رانندگی کردن}}, {{W+|fa|هدایت کردن}}, {{W+|fa|فریاد زدن|guman=erê}}
* {{Z|fo}}: {{W-|fo|leiða}}, {{W-|fo|føra}}
* {{Z|fi}}: {{W+|fi|ajaa}}
* {{Z|fr}}: {{W+|fr|conduire}}
* {{Z|fy}}: {{W-|fy|liede}}
* {{Z|nl}}: {{W+|nl|besturen}}, {{W+|nl|sturen}}, {{W+|nl|brengen}}, {{W+|nl|leiden}}, {{W+|nl|geleiden}}, {{W+|nl|voeren}}
* {{Z|he}}: {{W+|he|נחה|n}}, {{W+|he|נהג|n}}, {{W+|he|גרש|cuda=גּרשׁ}}
* {{Z|io}}: {{W+|io|duktar}}
* {{Z|en}}: {{W+|en|drive}}, {{W+|en|steer}}, {{W+|en|fly}}, {{W+|en|conduct}}, {{W+|en|guide}}, {{W+|en|lead}}, {{W+|en|channel}}, {{W+|en|wage}}, {{W+|en|bring}}, {{W+|en|drag on}}, {{W+|en|driving}}, {{W+|en|cruise}}, {{W+|en|prodding}}, {{W+|en|going away|guman=erê}}, {{W+|en|conducting|guman=erê}}, {{W+|en|conn|guman=erê}}, {{W+|en|cox|guman=erê}}, {{W+|en|cruising|guman=erê}}, {{W+|en|foment|guman=erê}}, {{W+|en|fomentation|guman=erê}}, {{W+|en|fomenting|guman=erê}}, {{W+|en|hortation|guman=erê}}, {{W+|en|instigation|guman=erê}}, {{W+|en|leading|guman=erê}}, {{W+|en|navigating|guman=erê}}, {{W+|en|spurring|guman=erê}}, {{W+|en|steerage|guman=erê}}, {{W+|en|tarring|guman=erê}}, {{W+|en|urging|guman=erê}}, {{W+|en|whish|guman=erê}}, {{W+|en|till}}
* {{Z|it}}: {{W+|it|condurre}}, {{W+|it|guidare}}
* {{Z|ca}}: {{W+|ca|conduir}}, {{W+|ca|menar}}
* {{Z|la}}: {{W+|la|ducere}}
* {{Z|ms}}: {{W+|ms|pimpin}}
* {{Z|pl}}: {{W+|pl|prowadzić}}
* {{Z|pt}}: {{W+|pt|conduzir}}, {{W+|pt|dirigir}}, {{W+|pt|guiar}}, {{W+|pt|levar}}
* {{Z|ro}}: {{W+|ro|conduce}}
* {{Z|ru}}: {{W+|ru|вести}}
* {{Z|se}}: {{W-|se|doalvut}} (1-3)
* {{Z|ses}}: {{W-|ses|zurandi}}
* {{Z|es}}: {{W+|es|conducir}}
* {{Z|sv}}: {{W+|sv|köra}}, {{W+|sv|åka}}, {{W+|sv|föra}}
* {{Z|tr}}: {{W+|tr|sürmek}}, {{W+|tr|çift sürmek}}, {{W+|tr|gütmek}}, {{W+|tr|tutmak}}, {{W+|tr|yürütmek}}, {{W+|tr|çekmek|guman=erê}}, {{W-|tr|çığlık atmak|guman=erê}}, {{W+|tr|sürüklenmek|guman=erê}}, {{W+|tr|uzamak|guman=erê}}, {{W+|tr|yağdırmak|guman=erê}}
* {{Z|el}}: {{W+|el|οδηγώ|R=odhigó}}
* {{Z|fsl}}: [http://lsf.wiksign.org/wiki/conduire conduire]
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[meşandin|Meşandin]] ango anîn yan [[birin]]a [[tirimpêl|tirimpêl]]ek yan [[dewar]]ek.
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürme}}, {{W+|tr|gütme}}, {{W+|tr|hamle}}, {{W+|tr|sürüklenme}}, {{W+|tr|yürütme}}, {{W+|tr|uzama|guman=erê}}, {{W+|tr|yaşatma|guman=erê}}
{{werger-bin}}
74y5w4co82vmij3e0ipj71liiw79jii
6328855
6328760
2026-08-11T01:12:07Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir, --Valahiyên nehewce.)
6328855
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-ajotin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|ajotin|form=gerguhêz|niha=ajo|borî=ajot}}
[[Wêne:Rush Rush Rush.jpg|thumb|Kesek tirimpêlê '''diajo'''.]]
{{lêker|ku|c=x-gh}}
# [[tirimpêl|Tirimpêlek]] yan [[dewar]]ek [[meşandin]] ango anîn yan [[birin]].
#: {{mk|ku|Te çima [[terş]]ê xwe '''ajotiye''' nav [[bûstan]]ê me?!}}
# [[vêkişandin|Vêkişandin]], [[dirêj bûn]].
#: {{mk|ku|Civîna wan seetekê '''ajot'''.|ango civîna wan seetekê dirêj bû|birêz=1}}
# [[kêlan|Kêlan]], [[cot]] kirin.
#: {{mk|ku|Ew hê jî zeviyên xwe bi [[ga]]yan '''diajon''' (an jî '''[[dojin]]''').}}
# [[teqîb|Teqîb]] kirin, mînak [[şop]] ajotin.
#* {{bêmînak|ku}}
# [[zixtkirin|Zixtkirin]], [[handan]].
#* {{bêmînak|ku}}
# [[sirgûn kirin]]
#* {{jêder-pirtûk|ku|jêgirtin=Walah eve xebera derew biderdikeve ez dê te tālān bikim û kep û guhêd te jî ji boy sosret jê kim û te ji nêva êlê biderînim û '''bajom (biajom)'''! Êdî tu dizanî!|nivîskar=w:Mele Mehmûdê Bazîdî|edîtor= Mîkaîl Bilbil; Mistafa Oztirk |sernav= w:Tûhfetu'l-Xîlan Fî Zimanê Kurdan|weşanxane= Weqfa Mezopotamyayê |sal=1866|sala-weşandinê=2019|çap=1|rûpel=161|isbn=978-605-80975-1-3}}
==== Bi alfabeyên din ====
* {{ku-ar|ئاژۆتن}}
* {{ku-kr|ажотьн}}
==== Jê ====
{{kol3|ku
| ajokar
| ajokarî
| ajoname
| ajonamedar
| ajonamedarî
| ajovan
| ajovanî
| ajozan
| ajozanî
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*h₂eǵ-}}, {{ji|ira-pro|ku|*aza-}}, [[hevreh]]a {{g|ae|𐬀𐬰𐬀𐬌𐬙𐬌}} ya avestayî, sanskrîtî {{g|sa|अजति}}, ermeniya kevn {{g|xcl|ածեմ|tr=acem}}, yûnaniya kevn {{g|grc|ἄγω|tr=ago}}, latînî {{q|la|agō}}, swêdî {{q|sv|åka}}... Heman peyv ihtimal e ku serekaniya {{q|zza|hêga|tr=[[zevî]]}} ya zazakî ye jî. {{q|fi|ajaa}} ja fînî û {{q|et|ajama}} ya estonî bi ihtimaleke mezin ji {{ji|ine-pro|ku|-}}, bi taybetî ji {{ji|ira-pro|ku|-}} hatine deynkirin.
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|sc=Latn|lê xurrîn}} (1), {{W-|ckb|sc=Latn|xayandin}} (3)
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|bestuur}}, {{W+|af|lei}}
* {{Z|de}}: {{W+|de|dauern}}, {{W+|de|fahren}}, {{W+|de|lenken}}, {{W+|de|führen}}, {{W+|de|leiten}}, {{W+|de|einfahren}}, {{W+|de|einlenken}}, {{W+|de|Einfahrt|m}}, {{W+|de|abführen}}, {{W+|de|schieben}}, {{W+|de|steuern}}, {{W+|de|treiben|guman=erê}}
* {{Z|cs}}: {{W+|cs|doprovodit}}, {{W-|cs|dovézt}}, {{W+|cs|dovést}}, {{W+|cs|předvést}}, {{W+|cs|převézt}}, {{W+|cs|přinést}}, {{W+|cs|přivézt}}, {{W-|cs|přivážet}}, {{W+|cs|řídit}}, {{W+|cs|vést}}, {{W+|cs|vodit}}, {{W+|cs|vozit}}
* {{Z|da}}: {{W-|da|styrre}}, {{W-|da|føre}}
* {{Z|ar}}: {{W-|ar|السیاقة}}, {{W-|ar|القود}}, {{W-|ar|القیادة}}, {{W-|ar|حرث|guman=erê}}, {{W-|ar|مساق|guman=erê}}, {{W-|ar|القیاد|guman=erê}}
* {{Z|eo}}: {{W+|eo|stiri}}, {{W-|eo|konduki}}
* {{Z|fa}}: {{W+|fa|رانندگی}}, {{W+|fa|راندن}}, {{W+|fa|رانندگی کردن}}, {{W+|fa|هدایت کردن}}, {{W+|fa|فریاد زدن|guman=erê}}
* {{Z|fo}}: {{W-|fo|leiða}}, {{W-|fo|føra}}
* {{Z|fi}}: {{W+|fi|ajaa}}
* {{Z|fr}}: {{W+|fr|conduire}}
* {{Z|fy}}: {{W-|fy|liede}}
* {{Z|nl}}: {{W+|nl|besturen}}, {{W+|nl|sturen}}, {{W+|nl|brengen}}, {{W+|nl|leiden}}, {{W+|nl|geleiden}}, {{W+|nl|voeren}}
* {{Z|he}}: {{W+|he|נחה|n}}, {{W+|he|נהג|n}}, {{W+|he|גרש|cuda=גּרשׁ}}
* {{Z|io}}: {{W+|io|duktar}}
* {{Z|en}}: {{W+|en|drive}}, {{W+|en|steer}}, {{W+|en|fly}}, {{W+|en|conduct}}, {{W+|en|guide}}, {{W+|en|lead}}, {{W+|en|channel}}, {{W+|en|wage}}, {{W+|en|bring}}, {{W+|en|drag on}}, {{W+|en|driving}}, {{W+|en|cruise}}, {{W+|en|prodding}}, {{W+|en|going away|guman=erê}}, {{W+|en|conducting|guman=erê}}, {{W+|en|conn|guman=erê}}, {{W+|en|cox|guman=erê}}, {{W+|en|cruising|guman=erê}}, {{W+|en|foment|guman=erê}}, {{W+|en|fomentation|guman=erê}}, {{W+|en|fomenting|guman=erê}}, {{W+|en|hortation|guman=erê}}, {{W+|en|instigation|guman=erê}}, {{W+|en|leading|guman=erê}}, {{W+|en|navigating|guman=erê}}, {{W+|en|spurring|guman=erê}}, {{W+|en|steerage|guman=erê}}, {{W+|en|tarring|guman=erê}}, {{W+|en|urging|guman=erê}}, {{W+|en|whish|guman=erê}}, {{W+|en|till}}
* {{Z|it}}: {{W+|it|condurre}}, {{W+|it|guidare}}
* {{Z|ca}}: {{W+|ca|conduir}}, {{W+|ca|menar}}
* {{Z|la}}: {{W+|la|ducere}}
* {{Z|ms}}: {{W+|ms|pimpin}}
* {{Z|pl}}: {{W+|pl|prowadzić}}
* {{Z|pt}}: {{W+|pt|conduzir}}, {{W+|pt|dirigir}}, {{W+|pt|guiar}}, {{W+|pt|levar}}
* {{Z|ro}}: {{W+|ro|conduce}}
* {{Z|ru}}: {{W+|ru|вести}}
* {{Z|se}}: {{W-|se|doalvut}} (1-3)
* {{Z|ses}}: {{W-|ses|zurandi}}
* {{Z|es}}: {{W+|es|conducir}}
* {{Z|sv}}: {{W+|sv|köra}}, {{W+|sv|åka}}, {{W+|sv|föra}}
* {{Z|tr}}: {{W+|tr|sürmek}}, {{W+|tr|çift sürmek}}, {{W+|tr|gütmek}}, {{W+|tr|tutmak}}, {{W+|tr|yürütmek}}, {{W+|tr|çekmek|guman=erê}}, {{W-|tr|çığlık atmak|guman=erê}}, {{W+|tr|sürüklenmek|guman=erê}}, {{W+|tr|uzamak|guman=erê}}, {{W+|tr|yağdırmak|guman=erê}}
* {{Z|el}}: {{W+|el|οδηγώ|R=odhigó}}
* {{Z|fsl}}: [http://lsf.wiksign.org/wiki/conduire conduire]
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[meşandin|Meşandin]] ango anîn yan [[birin]]a [[tirimpêl]]ek yan [[dewar]]ek.
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürme}}, {{W+|tr|gütme}}, {{W+|tr|hamle}}, {{W+|tr|sürüklenme}}, {{W+|tr|yürütme}}, {{W+|tr|uzama|guman=erê}}, {{W+|tr|yaşatma|guman=erê}}
{{werger-bin}}
3nlgbygocwnmcg67ufxmgh8l9kn68v6
guhartin
0
6298
6328970
6307669
2026-08-11T11:50:29Z
Balyozbot
7867
sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328970
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|guhartin|form=gerguhêz|niha=guhêr|borî=guhart}}
{{lêker|ku|c=x-gh}}, {{r-ya req}}, {{t-ya nerm}}
# [[ferqî]] [[anku]] [[cudahî]] [[xistin]] tiştekî, <br />tiştek wek wê bi xwe nehêlan, <br />tiştek wek [[berê]] [[hêlan|nehêlan]]
#: ''Qet wek berê nemaye, ta ta navê xwe jî '''guhartiye'''.''
#* {{jêder-malper|ku|jêgirtin=Di sersalê de hin gotinên her tên gotin hene wek 'serê malê binê malê xwedê kurekî bide vê malê.' Me jî ew '''guhart''' û got sere salê bine malê xwedê aştiyê bide vê malê.|sernav=Sersala Kurdî li Diyarbekirê hat pîrozkirin|malper=Kurdistan24|sal=2020|url=https://www.kurdistan24.net/ku/magazin/bd661661-f68d-4f4f-8faa-96e4ed7113b2}}
#* {{jêder-pirtûk|ku|jêgirtin=Di tîrêjên tavê de hemû rengên keskesorê xuya ne: sor, porteqalî, zer, kesk, şîn û mor... Û rêza rengan hertim weke xwe ye û nayê '''guhartin'''.|nivîskar=Komxebat|nekat=1|sernav=Ansîklopediya Zarokan|cîh=Denmark|weşanxane={{w|Weşanên APECl|APEC}}|sal=2004|rûpel=|isbn=91-89675-32-0}}
#* {{jêder-pirtûk|ku|jêgirtin=Piştî demekurtekê ew şaşî û matmayîna wan xwe '''guharte''' se xweşî û şadiyê.|nivîskar=Zeynelabîdin Zinar|sernav=Kadîna Mişkan|weşanxane={{w|Pencînar Weşanxanya Çanda Kurdî}}}}
#* {{jêder-pirtûk|ku|jêgirtin=Di vî şerrî da ewçend Turk hatine kuştin ku, çemê Kuskêt rengê xwe '''guhart''', tev bû sorxwîn. Nemaze di vî şerrê panzde rojan da, şerrkerên Kurdan hinde bi camêrî dest biribûn xwe ku, serleşkerê Turk li ber vê mêraniyê mat mabû.|nivîskar=Osman Sebrî|sernav=Şerên Sasonê|cîh=Dîlaver Zengî}}
#* {{jêder-kovar|ku|jêgirtin=Ez paşê jî bi elfabêya xwe mijûl dibûm. Lê hetanî qo tirq elfabeya xwe belav qirin ya me weqe xwè dima û têde me tişteqi bingehî ne '''diguhart'''. Min her tiştên xwe pê dinivîsandin û nasên xwe re dida zanîn. Weqè tirq elfabêya xwe belav qirin me dît qo di dengên hin herfan de elfabêyên me ne mîna hevin.|kovar=Hawar |sernav=Pêşgotinek|nivîskar= Celadet Bedîrxan|weşanxane=Nûdem|hejmar=13|sal=1932-1933|rûpel=791|cîld=1}}
# Xistina tiştekî şûna tiştekî
#: '' Ampûl şewitîye. Divê were '''guhartin''.
# cil [[li xwe kirin]], cil [[lê kirin]]
#: ''Heta cilê xwe ne '''guhart''', neçubû derve.''
#: ''Îro binê zarok min '''guhart''', sibe dora te ye''.
# transferbûna wasiteyek din(tren, otobus, hwd)
#: ''Heta stenbolê min sê otobus '''guhart'''''.
==== Bi alfabeyên din ====
* {{ku-ar|گوهارتن}}
==== Formên alternatîv ====
* {{hw|ku|guhertin}}
* {{hw|ku|guhêrtin}}
* {{hw|ku|guhurtin}}
* {{hw|ku|gortin||Elbistan}}
* {{hw|ku|gorandin}}
==== Hevmane ====
* {{g|ku|bedl kirin}}
* {{g|ku|guherandin}}
==== Nêzîk ====
* {{g|ku|guhastin}}
* {{g|ku|raguhastin}}
* {{g|ku|veguhastin}}
==== Jê ====
{{stûn|
* {{g|ku|guhartî}}
* {{g|ku|guharto}}
* {{g|ku|guhartinxwaz}}
* {{g|ku|guhartok}}
* {{g|ku|guhartokî}}
* {{g|ku|guherde}}
* {{g|ku|guherende}}
* {{g|ku|guherînende}}
* {{g|ku|guhêr}}
* {{g|ku|guherbar}}
* {{g|ku|guherkar}}
* {{g|ku|guherbaz}}
* {{g|ku|guhersaz}}
* {{g|ku|guherger}}
* {{g|ku|guhergîn}}
* {{g|ku|reng guhartin}}
* {{g|ku|veguhartin}}
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Gotinên pêşiyan ====
* {{g|ku|ma te mêr guhart, tê bextî xwe jî biguhêre}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|giwartin|sc=Latn}}, {{W-|ckb|guwartin|sc=Latn}}
* {{Z|zza}}: {{W-|zza|vurnayene}}
==== Werger ====
{{werger-ser|[[ferqî]] [[anku]] [[cudahî]] [[xistin]] tiştekî}}
* {{Z|nds-de}}: {{W-|nds-de|verännern}}, {{W|nds-de|ännern}}
* {{Z|de}}: {{W|de|ändern}}, {{W|de|verändern}}, {{W|de|verwandeln}}
* {{Z|rup}}: {{W-|rup|alãxescu}}
* {{Z|as}}: {{W-|as|সলনি কৰ}}, {{W-|as|সলোৱা}}, {{W-|as|বদলোৱা}}
* {{Z|ast}}: {{W-|ast|cambiar}}
* {{Z|eu}}: {{W|eu|aldatu}}
* {{Z|be}}: {{W-|be|змяня́ць|sc=Cyrl}}, {{W-|be|змяні́ць|sc=Cyrl}}
* {{Z|bg}}: {{W|bg|изменям|sc=Cyrl}}, {{W|bg|променям|sc=Cyrl}}
* {{Z|cs}}: {{W|cs|změnit}}, {{W|cs|proměnit}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|改|tr=goi2|sc=Hani}}, {{W-|yue|轉|tr=zyun2|sc=Hani}}
*: {{Z|cmn}}: {{W|cmn|改變|sc=Hani}}, {{W|cmn|改变|tr=gǎibiàn|sc=Hani}}, {{W|cmn|轉變|sc=Hani}}, {{W|cmn|改变|tr=zhuǎnbiàn|sc=Hani}}
* {{Z|da}}: {{W|da|ændre}}, {{W|da|forandre}}
* {{Z|ar}}: {{W|ar|غَيَّرَ}}
*: {{Z|ary}}: {{W-|ary|غير|tr=ḡiyyar}}, {{W-|ary|بدل|tr=baddal}}
*: {{Z|arz}}: {{W-|arz|غير|tr=ḡayyar}}
* {{Z|eo}}: {{W-|eo|ŝanĝi}}, {{W-|eo|aliformi}}, {{W-|eo|aliformigi}}, {{W-|eo|transformi}}, {{W-|eo|aliigi}}
* {{Z|et}}: {{W-|et|muutma}}
* {{Z|gur}}: {{W-|gur|teem}}
* {{Z|fa}}: {{W-|fa|دگرگون کردن|tr=degargun kardan}}
* {{Z|fi}}: {{W|fi|muuttaa}}
* {{Z|fr}}: {{W|fr|changer}}, {{W|fr|transformer}}
* {{Z|fur}}: {{W-|fur|mudâ}}, {{W-|fur|gambiâ}}
* {{Z|gd}}: {{W-|gd|mùth}}, {{W-|gd|atharraich}}
* {{Z|gl}}: {{W|gl|cambiar}}, {{W-|gl|mudar}}, {{W|gl|virar}}, {{W-|gl|demudar}}
* {{Z|ka}}: {{W-|ka|იცვლება}}, {{W-|ka|გარდაიქნება}}
* {{Z|ht}}: {{W-|ht|chanje}}
* {{Z|nl}}: {{W|nl|veranderen}}, {{W|nl|aanpassen}}
* {{Z|he}}: {{W|he|שינה|tr=shiná|sc=Hebr}}
* {{Z|io}}: {{W|io|chanjar}}
* {{Z|ang}}: {{W-|ang|wendan}}
* {{Z|en}}: {{W|en|change}}, {{W|en|alter}}
* {{Z|ia}}: {{W-|ia|cambiar}}
* {{Z|it}}: {{W|it|cambiare}}
* {{Z|is}}: {{W|is|breyta}}
* {{Z|ja}}: {{W|ja|変える|tr=kaeru}}
* {{Z|ca}}: {{W|ca|canviar}}, {{W|ca|modificar}}
* {{Z|koi}}: {{W-|koi|вежны}}
* {{Z|swb}}: {{W-|swb|gaudza|cuda=ugaudza}}
* {{Z|ko}}: {{W|ko|바꾸다}}
* {{Z|lld}}: {{W-|lld|muder}}
* {{Z|la}}: {{W|la|mūtō}}
* {{Z|lv}}: {{W-|lv|mainīt}}
* {{Z|mhx}}: {{W-|mhx|thud}}
* {{Z|lij}}: {{W-|lij|cangiâ}}
* {{Z|lt}}: {{W|lt|keisti}}
* {{Z|khb}}: {{W-|khb|ᦏᦲᦏᦸ}}
* {{Z|lb}}: {{W-|lb|änneren}}, {{W-|lb|veränneren}}
* {{Z|ms}}: {{W|ms|tukar}}
* {{Z|mi}}: {{W-|mi|whakarerekē}}, {{W-|mi|kihirua}}, {{W-|mi|whakaumu}}
* {{Z|hu}}: {{W|hu|változtat}}, {{W|hu|megváltoztat}}
* {{Z|mn}}: {{W|mn|өөрчлөх|sc=Cyrl}}
* {{Z|mos}}: {{W-|mos|toeeme}}
* {{Z|nrf}}: {{W-|nrf|changi}} {{W-|nrf|changier}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|gjøre om}}, {{W|nb|endre}}
*: {{Z|nn}}: {{W-|nn|gjere om}}, {{W-|nn|gjøre om}}, {{W-|nn|endre}}
* {{Z|ps}}: {{W|ps|اړول|tr=aṛawəl|sc=ps-Arab}}, {{W|ps|بدلول|tr=badlawəl|sc=ps-Arab}}
* {{Z|pl}}: {{W|pl|zmieniać}}, {{W|pl|zmienić}}
* {{Z|pt}}: {{W|pt|alterar}}, {{W|pt|mudar}}
* {{Z|ro}}: {{W|ro|schimba}}, {{W|ro|modifica}}
* {{Z|ru}}: {{W|ru|изменя́ть}}, {{W|ru|меня́ть}}, {{W|ru|измени́ть}}
* {{Z|sh}}:
*: Latînî: {{W|sh|promeniti}}
* {{Z|sk}}: {{W-|sk|meniť}}, {{W-|sk|zmeniť}}
* {{Z|sl}}: {{W|sl|spremeniti}}
* {{Z|es}}: {{W|es|cambiar}}, {{W|es|demudar}}, {{W|es|modificar}}, {{W|es|mudar}}
* {{Z|sw}}: {{W-|sw|kubadili}}
* {{Z|sv}}: {{W|sv|ändra}}, {{W|sv|förändra}}
* {{Z|tl}}: {{W-|tl|ibago}}, {{W-|tl|bayluhin}}, {{W-|tl|bayluhan}}, {{W-|tl|bumaylo}}
* {{Z|th}}: {{W|th|แปลง}}
* {{Z|te}}: {{W|te|మార్చు|sc=Telu}}
* {{Z|crh}}: {{W-|crh|deñiştirmek}}, {{W-|crh|trampa etmek}}
* {{Z|tr}}: {{W|tr|değiştirmek}}
* {{Z|tpi}}: {{W-|tpi|senisim}}
* {{Z|udm}}: {{W-|udm|воштыны}}
* {{Z|uk}}: {{W-|uk|змі́нювати|sc=Cyrl}}, {{W-|uk|міня́ти|sc=Cyrl}}, {{W-|uk|зміни́ти|sc=Cyrl}}
* {{Z|cy}}: {{W|cy|newid}}
* {{Z|yi}}: {{W-|yi|משנה זײַן|tr=meshane zayn|sc=Hebr}}
* {{Z|grc}}: {{W-|grc|ἀλλάσσω}}, {{W-|grc|μεταβάλλω}}
* {{Z|el}}: {{W|el|αλλάζω|sc=Grek}}, {{W|el|μεταβάλλω|sc=Grek}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[peydakirin|Peydakirina]] [[ferqî|ferqiyekê]] [[anku]] [[cudahî|cudahiyekê]] li tiştek; [[hêlan|nehêlana]] yek yan [[hin]] yan [[ti]] [[taybetmendî|taybetmendiyên]] tiştekî.
#: {{mk|ku|Bi '''guhartina''' navê xwe ew dixwaze xwe eşkere neke ka kî ye.}}
#* {{jêder-malper|ku|jêgirtin=Li ser rewşa herêmên Efrîn, Girêsipî û Serêkaniyê yên ji aliyê Tirkiyê ve hatine dagîrkirin, Fesla Yûsif got: Konsolxaneya Brîtanya nîşan da ku ew li dijî '''guhartina''' demografî û koçberbûna xelkê ji ser cih û warên xwe ye heger li kîjan devera cîhanê be.|sernav=Fesla Yûsif: Brîtanya li dijî guhartina demografiyê ye|malper=basnews.com|sal=2020|url=https://www.basnews.com/kr/babat/582445}}
#* {{jêder-malper|ku|jêgirtin=Berdevka Wezareta Derve ya Dewletên Yekbûyî yên Amerîkayê (DYA) Jen Psakî got, di helwesta DYAyê ya derheqê li Sûriyê pêkanîna herêmek ji bo balafiran qedexe de tu '''guhartin''' nîne.|sernav=Psakî: Di helwesta me de tu guhartin nîne|malper=rudaw.net||sal=2014|url=https://www.rudaw.net/kurmanci/world/281020142}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Veränderung|m}}
* {{Z|tr}}: {{W+|tr|değiştirme}}
{{werger-bin}}
9rxia3nhe2kbxiee5c1a01kcijw438z
binas
0
6361
6328814
6300756
2026-08-11T00:28:56Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328814
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# Tişta ji ber wê tiştek bûye yan [[qewimîn|qewimiye]] (bi taybetî tiştek [[xirab]]).
#* {{jêder-pirtûk|ku|jêgirtin=bû '''binasê''' polemîkên mezin ên sîyasî û civakî|nivîskar={{w|Ergin Öpengin}}|sernav=Rewşa kurdî ya sosyolenguîstîk li Tirkiyeyê|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2011|çap=1|rûpel=19|isbn=978-605-5585-71-6}}
#: ''Ev şer '''binasên''' kê ne?'' (Kî ye wa kiriye ku ev şerr peyda bibe?)
#* {{jêder-malper|ku|jêgirtin=Qencî û xirabî di siriştê mirovî de ne, <br>bextiyarî û bextreşî di destê felekê de ne.<br>Wan neke '''binasên''' Xwedê: hiş dibêje ku<br>Xwedê hezarcarî ji te bêçaretir e.|nivîskar=Omer Xeyam|wergêr=Husein Muhammed|sernav=Perdeya şermê rake|malper=Kurdigeh.com|sal=11/2011}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|بناس}}
==== Hevmane ====
* [[eger]]
* [[sebeb]]
* [[sedem]]
==== Nêzîk ====
* [[tawan]]
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|-}} *[[binek-]] ([[mirin]], [[merg]], [[wefat]]; [[ji dest dan|jidestdan]], [[winda]]kirin), {{ji|ira-pro||-}} *''nas-'' (winda bûn; [[ruxîn]]) > *''wi-nas-'' (pûç bûn, xirab bûn), [[hevreh]]a avestayî ''vi-nas-'', farisiya kevn ''vi-ney'' ([[ziyan]], [[zerer]]), farisî {{g|fa|گناه}} (gunah > [[guneh]]), latînî [[nex]], [[necis]] (mirin, merg), noceo ([[ziyan]]), nocere ([[ziyan]] lê kirin), yûnanî [[νεκρός]] (nékros: [[cenaze]], [[term]], [[kelex]]). ''vnas'' ya ermenî ji kurdî yan zimanekî din yê îranî hatiye deynkirin.
==== Bide ber ====
* [[bihane]]
* [[hêcet]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Schuld|m}}
* {{Z|ar}}: {{W-|ar|خطأ|tr=xeṭa}}, {{W-|ar|سبب|guman=erê}}
* {{Z|fa}}: {{W+|fa|تقصیر}}, {{W+|fa|گناه}}, {{W+|fa|سبب|guman=erê}}, {{W-|fa|تقسیر|guman=erê}}
* {{Z|fi}}: (jonkun) [[vika]]
* {{Z|fr}}: {{W+|fr|faute}}
* {{Z|en}}: {{W+|en|fault}}
* {{Z|pt}}: {{W+|pt|culpa}}
* {{Z|es}}: {{W+|es|culpa}}, {{W+|es|falla}}, {{W+|es|falta}}
* {{Z|tr}}: {{W+|tr|hata}}, {{W-|tr|müsebib}}, {{W+|tr|suç}}, {{W+|tr|tanıdık}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# (ji "nasîn") ''Binere'': '''[[binase]]'''
97qg3fjifmuc5js1i4u20bjrpygncee
bendav
0
6453
6328799
6298649
2026-08-11T00:28:00Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328799
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|bɛnˈdɑːv}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Barrage de Monteynard p1390473.jpg|thumb|Bendavek.]]
{{navdêr|ku|z=m}}
# Bendeke tê [[avakirin]] ji bo avê ragire û [[rade]]ya wê [[bilind]] bike, ku [[pendav]]ekê çê dike ji bo [[peydakirin]]a [[kehreb]]ê û [[raber]]kirina avê.
#: {{hevmaneyên peyvê|ku|sike|baraj}}
#* {{jêder-malper|ku|jêgirtin=Em li ber serê pira Nîssîbiyê disekinin û çavê xwe li keştiyên tûrê yên di geliyan di navbera pira Nîssîbî û Gergerê de diçin û tên digerînim. Lê malbateke Sêwregî ya li seyrangehê ji me re dibêje: “Ji ber nexweşiya koronayê, tûrên keştiyên li ser '''bendavê''' hatine rawestandin.”|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|بەنداڤ}}
==== Jê ====
* {{g|ku|bendavî}}
==== Têkildar ====
* {{g|ku|pendav}}
* {{g|ku|pengav}}
==== Etîmolojî ====
Ji {{pêk|ku|bend|av}}.
==== Bide ber ====
* {{g|ku|derbend}}
* {{g|ku|girav}}
* {{g|ku|kendav}}
* {{g|ku|tengav}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|بەنداو|tr=[[bendaw]]}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|dam}}
* {{Z|sq}}: {{W+|sq|pendë|m}}, {{W+|sq|digë|m}}
* {{Z|de}}: {{W+|de|Talsperre|n}}, {{W+|de|Damm|n}}, {{W+|de|Staudamm|n}}
* {{Z|am}}: {{W-|am|ግድብ}}
* {{Z|az}}: {{W+|az|bənd}}, {{W-|az|sədd}}, {{W-|az|damba}}
* {{Z|ba}}: {{W-|ba|быуа}}
* {{Z|be}}: {{W+|be|плаці́на|m}}, {{W-|be|да́мба|m}}
* {{Z|bn}}: {{W+|bn|বাঁধ}}
* {{Z|bg}}: {{W+|bg|бент|n}}
* {{Z|my}}: {{W+|my|ရေကာတာ}}
* {{Z|pcc}}: {{W-|pcc|waail}}
* {{Z|ccp}}: {{W-|ccp|𑄉𑄧𑄙|tr=gadhā}}
* {{Z|cs}}: {{W+|cs|hráz|m}}, {{W+|cs|přehrada|m}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|壩}}, {{W-|yue|水壩}}, {{W-|yue|大壩}}
*: {{Z|dng}}: {{W-|dng|бэ}}, {{W-|dng|фибэ}}
*: {{Z|cmn}}: {{W+|cmn|壩}}, {{W+|cmn|水壩}}, {{W+|cmn|大壩}}
*: {{Z|nan}}: {{W-|nan|水壩|tr=chúi-pà}}
* {{Z|cv}}: {{W-|cv|пӗвӗ}}
* {{Z|da}}: {{W+|da|dæmning|g}}
* {{Z|id}}: {{W+|id|bendungan}}, {{W+|id|empang}}
* {{Z|ar}}: {{W-|ar|سَدّ|n}}
*: {{Z|arz}}: {{W-|arz|سد|n|tr=sadd}}
* {{Z|hy}}: {{W+|hy|ամբարտակ}}, {{W+|hy|պատնեշ}}
* {{Z|myv}}: {{W-|myv|каваз}}
* {{Z|eo}}: {{W-|eo|akvobaraĵo}}
* {{Z|et}}: {{W-|et|pais}}
* {{Z|gur}}: {{W-|gur|mõgrɛ}}
* {{Z|fa}}: {{W+|fa|سَدّ|tr=sadd}}, {{W-|fa|آببَند|tr=âb-band}}, {{W+|fa|بَند|tr=band}}
* {{Z|fi}}: {{W+|fi|pato}}
* {{Z|fr}}: {{W+|fr|barrage|n}}
* {{Z|gl}}: {{W+|gl|presa|m}}, {{W+|gl|encoro|n}}, {{W-|gl|touta|m}}, {{W-|gl|tarula|m}}
* {{Z|ka}}: {{W-|ka|კაშხალი}}, {{W-|ka|ჯებირი}}, {{W-|ka|დამბა}}
* {{Z|hi}}: {{W+|hi|बाँध|n}}
* {{Z|nl}}: {{W+|nl|dam|n}}
* {{Z|hrx}}: {{W-|hrx|Damm|n}}
* {{Z|he}}: {{W+|he|סֶכֶר|n|tr=sékher}}
* {{Z|io}}: {{W+|io|aquobarilo}}
* {{Z|enm}}: {{W-|enm|dam}}
* {{Z|en}}: {{W+|en|dam}}
* {{Z|it}}: {{W+|it|argine|n}}, {{W+|it|diga|m}}
* {{Z|is}}: {{W-|is|stífla|m}}
* {{Z|ja}}: {{W+|ja|ダム|tr=damu}}, {{W+|ja|堰堤|tr=えんてい, entei}}
* {{Z|kn}}: {{W+|kn|ಕಟ್ಟೆ}}
* {{Z|ca}}: {{W+|ca|presa|m}}
* {{Z|qu}}: {{W-|qu|hark'a}}
* {{Z|ky}}: {{W+|ky|бөгөт}}, {{W+|ky|дамба}}, {{W-|ky|плотина}}
* {{Z|ko}}: {{W+|ko|댐}}, {{W+|ko|언제}}
* {{Z|kw}}: {{W-|kw|arge|n}}
* {{Z|lv}}: {{W+|lv|dambis|n}}, {{W+|lv|aizsprosts|n}}
* {{Z|lo}}: {{W-|lo|ຝາຍ}}, {{W+|lo|ເຂື່ອນ}}
* {{Z|lt}}: {{W-|lt|užtvanka|m}}, {{W-|lt|damba|m}}
* {{Z|khb}}: {{W-|khb|ᦚᦻ}}
* {{Z|mk}}: {{W-|mk|брана|m}}, {{W-|mk|насип|n}}
* {{Z|ml}}: {{W+|ml|അണ}}, {{W+|ml|അണക്കെട്ട്}}, {{W+|ml|ചിറ}}
* {{Z|ms}}: {{W-|ms|empang}}, {{W+|ms|empangan}}, {{W-|ms|pengempang}}, {{W-|ms|ampang}}, {{W-|ms|bendung}}, {{W-|ms|bendungan}}, {{W-|ms|pembendung}}, {{W-|ms|tebat}}, {{W+|ms|tambak}}, {{W-|ms|tandup}}, {{W+|ms|alahan}}
* {{Z|mt}}: {{W-|mt|diga}}
* {{Z|mnc}}: {{W-|mnc|ᡩᠠᠯᠠᠨ}}, {{W-|mnc|ᡩᠠᠯᠠᠩᡤᠠ}}
* {{Z|mi}}: {{W-|mi|matatara}}, {{W-|mi|pāwai}}
* {{Z|hu}}: {{W+|hu|gát}}
* {{Z|egy}}: {{W-egy|dnjt|h=d:n-i-t:V11-N23-Z1}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|далан}}, {{W+|mn|боомт}}
* {{Z|nv}}: {{W-|nv|dáʼdeestłʼin}}, {{W-|nv|tó beʼekʼid}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|demning|n|m}}, {{W+|nb|dam|n}}
*: {{Z|nn}}: {{W-|nn|demning|n|m}}, {{W+|nb|dam|n}}
* {{Z|ug}}: {{W-|ug|دامبا}}, {{W-|ug|توغان}}
* {{Z|uz}}: {{W+|uz|toʻgʻon}}, {{W+|uz|damba}}
* {{Z|ps}}: {{W+|ps|ډم|n|tr=ḍǝm}}, {{W+|ps|بند|n|tr=band}}
* {{Z|pdt}}: {{W-|pdt|Daum|n}}
* {{Z|pl}}: {{W+|pl|tama|m}}, {{W+|pl|zapora|m}}
* {{Z|pt}}: {{W+|pt|barragem|m}}, {{W+|pt|represa|m}}, {{W+|pt|açude|n}}
* {{Z|kk}}: {{W-|kk|бөгет}}, {{W-|kk|дамба}}
* {{Z|ro}}: {{W+|ro|baraj|nt}}
* {{Z|ru}}: {{W+|ru|плоти́на|m}}, {{W+|ru|да́мба|m}}, {{W+|ru|гать|m}}, {{W+|ru|на́сыпь|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|на́сип|n}}, {{W-|sh|бра́на|m}}, {{W-|sh|га̏т|n}}
*: Latînî: {{W+|sh|násip|n}}, {{W+|sh|brána|m}}, {{W+|sh|gȁt|n}}
* {{Z|sk}}: {{W-|sk|priehrada|m}}, {{W-|sk|hrádza|m}}
* {{Z|sl}}: {{W+|sl|jez|n}}
* {{Z|es}}: {{W+|es|presa|m}}
* {{Z|sv}}: {{W+|sv|damm|nt}}
* {{Z|shn}}: {{W-|shn|ၽၢႆ}}
* {{Z|tg}}: {{W+|tg|сарбанд}}, {{W+|tg|дамба}}, {{W-|tg|дарғот}}, {{W-|tg|оббанд}}
* {{Z|tl}}: {{W-|tl|tarundon}}, {{W-|tl|saplad}}, {{W-|tl|prinsa}}
* {{Z|ta}}: {{W+|ta|அணை}}
* {{Z|th}}: {{W+|th|เขื่อน}}
* {{Z|te}}: {{W+|te|ఆనకట్ట}}
* {{Z|crh}}: {{W-|crh|bent}}
* {{Z|tt}}: {{W+|tt|буа}}
* {{Z|ti}}: {{W-|ti|ግድብ}}
* {{Z|tr}}: {{W+|tr|baraj}}, {{W+|tr|set}}
* {{Z|tk}}: {{W+|tk|bent}}, {{W-|tk|damba}}
* {{Z|bo}}: {{W-|bo|ཆུ་རག}}
* {{Z|ur}}: {{W-|ur|بَنْد|n|tr=band}}
* {{Z|uk}}: {{W-|uk|гре́бля|m}}, {{W-|uk|да́мба|m}}
* {{Z|vi}}: {{W+|vi|đập}}
* {{Z|cy}}: {{W+|cy|argae|n}}
* {{Z|km}}: {{W+|km|ទំនប់}}
* {{Z|yi}}: {{W-|yi|דאַם|n}}
* {{Z|el}}: {{W+|el|φράγμα|nt}}
*: Kevn: {{W-|grc|ἄνδηρον|nt}}
* {{Z|za}}: {{W-|za|fai}}
{{werger-bin}}
:{{werger çavkanî|en|dam|beş=Ev qismê Wergerê|oldid=76330953}}
gzmbvqilra0jzl0r870cy5v3vkyp1rl
aya
0
6466
6328847
6239612
2026-08-11T00:55:21Z
Wikihez
7344
/* Hoker */
6328847
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}
# [[peyv]]ek e [[hevok]]ên [[pirs]]î pê tên çêkirin:
#: '''''Aya''' ew çend salî ye?'' (Dixwazim bizanim ka ew çend salî ye.)
#: '''''Aya''' ew dê çi bikin?''
#* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Kirmanc di dewleta dinê da<br />'''Aya''' bi çi wechî mane mehrûm<br />Bi l-cumle ji bo çi bûne mehkûm}}
#* {{jêder-pirtûk|ku|jêgirtin='''Aya''' Înşallah edî di vê pirsê de şibhe nîn in.|nivîskar=w:Mele Mehmûdê Bazîdî|edîtor= w:Mîkaîl Bilbil; Mistafa Oztirk |sernav=w:Tûhfetu'l-Xîlan Fî Zimanê Kurdan |weşanxane= Weqfa Mezopotamyayê |sal=1866|sala-weşandinê=2019|çap=1|rûpel=160|isbn=978-605-80975-1-3}}
==== Hevmane ====
* [[aye]]
==== Hevmane ====
* [[gelo]]
* [[ecebe]]
==== Bide ber ====
* [[ma]]
==== Binêre herwiha ====
* [[gelî]] (2)
==== Etîmolojî ====
Hevreha {{hv|fa|ku|آیا|tr=aya}}. Bi îhtimal deynkirinek(a ji farisî) e, ji ber ku di xeberdanên [[devkî]] yan [[rojane]] da hema hema qet nayê bikar anîn.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: ob wohl
* {{Z|ar}}: {{W-|ar|هل|guman=erê}}
* {{Z|fa}}: {{W+|fa|آیا}}, {{W+|fa|آیا}}
* {{Z|en}}: {{W-|en|doubt whether}} I wonder, {{W+|en|exclamation mark|guman=erê}}
* {{Z|tr}}: {{W+|tr|acaba}}, {{W+|tr|acep}}, {{W+|tr|mı|guman=erê}}
{{werger-bin}}
== {{ziman|zza}} ==
=== Hoker ===
{{hoker|zza}}
# [[gelo]], [[acaba]]<ref>http://www.kovarabir.com/wp-content/uploads/Ferheng%C3%AA-Dimil%C3%AE-Zazak%C3%AE-%C3%BB-Kurmanc%C3%AE-A-a.pdf</ref>
#* {{bêmînak|zza}}
=== Çavkanî ===
{{çavkanî}}
== {{ziman|az}} ==
=== Navdêr ===
{{navdêr|az}}
# {{g|ku|lep}}, {{g|ku|kef}} (kefa destî)
#* {{bêmînak|az}}
=== Çavkanî ===
{{rûpela wergerê|az|kef}}
== {{ziman|cic}} ==
=== Lêker ===
{{lêker|cic}}
# {{g|ku|rîtin}}, {{g|ku|gû kirin}}
#* {{bêmînak|cic}}
=== Çavkanî ===
{{rûpela wergerê|cic|rîtin}}
== {{ziman|ee}} ==
=== Navdêr ===
{{navdêr|ee}}
# {{f|ee|hewa}} [[ba#ku|ba]]
#* {{bêmînak|ee}}
== {{ziman|qu}} ==
=== Navdêr ===
{{navdêr|qu}}
# {{g|ku|can}}, {{g|ku|giyan}}, {{g|ku|ruh}}
#* {{bêmînak|qu}}
=== Çavkanî ===
{{rûpela wergerê|qu|can}}
== {{ziman|ayz}} ==
=== Navdêr ===
{{navdêr|ayz}}
# {{mijar|ayz|vexwarin}} {{g|ku|av}}
#* {{bêmînak|ayz}}
=== Çavkanî ===
{{rûpela wergerê|ayz|av/Werger2}}
== {{ziman|pi}} ==
=== Navdêr ===
{{navdêr|pi}}
# [[asin]]
#* {{bêmînak|pi}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-ToprakM-aya.wav|Deng|dever=Îzmîr, Tirkiye}}
=== Navdêr ===
{{navdêr|tr}}
# [[mist]], [[kef]], [[gemş]], [[hevês]]
#* {{bêmînak|tr}}
# {{f|tr|botanîk}} beşa pelan a dûz û birqonek
#* {{bêmînak|tr}}
== {{ziman|yo}} ==
=== Navdêr ===
{{navdêr|yo}}
# {{f|yo|malbat}} {{g|ku|jin}} (hevser, hevjîn)
#* {{bêmînak|yo}}
95ithql7sr6794l25b9chok0mh9otgd
herîn
0
6884
6328979
6308283
2026-08-11T11:50:57Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328979
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-herîn.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|herîn|form=negerguhêz|niha=her-er-r|niha2=her|borî=herî}}
{{lêker|ku|c=x-ngh}}, {{r-ya req}}
# [[çûn]], [[bi rê ketin]], [[dûr ketin]]
#: {{hevmane|ku|rewtin}}
#: {{mk|ku|Zû '''herin'''!}}
#: {{mk|ku|Ger em niha '''herin''', ew dê negihin me.}}
#: {{mk|ku|Divê em sibê zû '''herin'''.}}
#: {{mk|ku|Ew kengî '''d(ih)ere'''?}}
#: {{mk|ku|Ez '''terim'''.}}
# {{f|ku|devokî}} [[birin]]
#: {{mk|ku|Hemin ku tu diçî, viya jî '''bihere''' bi xwe re.|Viya jî bibe bi xwe re|rêz=1}}
==== Tewandin ====
* [-her-]
* [-er-]
==== Formên alternatîv ====
* {{g|ku|herrîn}}
==== Etîmolojî ====
Ji pêş-hindû-ewropî [[*h₁er-]] (1. erd, 2. livîn, çûyîn, herrîn) pêş-îranî [[*Her-]] (herrîn, çûn)<ref>(Cheung, Johnny (2007) Etymological Dictionary of the Iranian Verb (Leiden Indo-European Etymological Dictionary Series; Leiden, Boston: Brill, pages 163-5)</ref>, bi [[metatez|metatezê]] hevrreha farisî {{g|fa|رسیدن}}(resîden) û dibe ku kurmancî [[rizîn|rrizîn]] jî, hevrreha [[zazakî]] {{g|zza|herr|w=erd}}.
Lê tenê di [[kurmancî|kurmanciya jorîn/badînî]] de heye û zimanên din ên kurdîkî de peyda nabe (heta [[mijar]]a [[henek]]ê ye jî, binêre [[here-were]]) lewma bide ber ermeniya kevn [[հեռ-]] • (heṙ-: [[dûr]]), ermeniya niha [[հեռու]] (heṙu: [[dûr]]). Heke ji vê rehê bibe; hevreha ingilîzî [[earth]], elmanî [[Erd]], holendî [[aarde]], norwêcî, swêdî, danmarkî [[jord]]. Bi devokî carinan bi wateya ''birin'' bi kar tê, dibe ku wateya resen ew bibe û paşê guherîbe.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|gehen}}
* {{Z|ar}}: {{W|ar|تأمم|guman=erê}}
* {{Z|fa}}: {{W|fa|رفتن}}
* {{Z|fr}}: {{W|fr|partir}}, {{W|fr|aller}}, {{W|fr|s’en aller}}
* {{Z|en}}: {{W|en|go}}
* {{Z|tr}}: {{W|tr|gitmek}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[çûn|Çûn]], [[birêketin]], [[dûrketin]].
#* {{jêder-malper|ku|jêgirtin=Ev kûrahiya ji ber helîna cemedê û '''herîna''' avê bêhtir eleqeya min biribû ser xwe.|nivîskar=Eric Guth|sernav=Gereke Nûwaze Bo Çiyayên Sîpan ên Alaskayê|url=http://www.parzemin.com/gereke-nuwaze-bo-ciyayen-sipan-en-alaskaye/|urlya-arşîvê=https://web.archive.org/web/20230331093629/http://www.parzemin.com/gereke-nuwaze-bo-ciyayen-sipan-en-alaskaye/|dîrok=2015-10-16}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|go}}, ([[act]] [[of]]) {{W+|en|going}}
* {{Z|tr}}: {{W+|tr|gitme}}
{{werger-bin}}
{{clr}}
=== Rengdêr ===
{{rengdêr|ku}}
# Ji heriyê; binêre {{g|ku|herî}} (1)
=== Çavkanî ===
{{çavkanî}}
bzl3265mze21756kz6cpgi3tyjpjc1a
na
0
7034
6328694
6328693
2026-08-10T12:03:06Z
Wikihez
7344
/* Binêrin herwiha */
6328694
wikitext
text/x-wiki
{{bnr-h|Na|na-}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-na.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Hoker 1 ===
[[Wêne:Exclamation_mark_red.png|thumb|250px|Na!]]
{{hoker|ku}}
# [[nexêr]], [[ne]], [[no]], [[bersiv]]a [[red]]ker, <br>[[bersiv]]a [[neyînî]] bo [[pirs]]eke [[erênî]], <br>[[peyvik]]ek e ku [[wate]]ya [[dij]]î [[gotin]]ekê [[dan|didiyê]]:
#: {{mk|ku|– Gelo ew kurd e?<br>– '''Na'''.|Ew ne kurd e.|birêz=1}}
#: {{mk|ku|– Tu dê îro biçî?<br>– '''Na'''.|Ez naçim.|birêz=1}}
# [[erê]]kirina [[pirs]]eke [[neyînî]], [[qebûl]]kirina [[pirs]]eke [[negatîv]]
#: {{mk|ku|Gelo ew ne kurd e? – '''Na'''.|Ew ne kurd e.|birêz=1}}
#: {{mk|ku|Tu îro nayê? – '''Na'''.|Ez nayêm.|birêz=1}}
# [[peyv]]eke [[qedexe]]kirinê yan [[haydar]]kirinê:
#: {{mk|ku|'''Na''', wisa nekin!}}
==== Bi alfabeyên din ====
* {{ku-ar|نا}}
* {{ku-kr|на}}
==== Hevmane ====
* [[ne]] (1)
* [[nexêr]] (1)
* [[no]] (1)
==== Dijmane ====
{{stûn|
* [[belê]]
* [[erê]]
* [[a]]
* [[e]]
* [[lebê]]
}}
==== Jê ====
* [[na-]]
==== Têkildar ====
{{stûn|
* [[ma-]]
* [[na-]]
* [[me-]]
}}
==== Etîmolojî ====
Herwiha ''[[ne]]'' û ''[[no]]'', [[hevreh]]ên soranî {{g|ckb|نا}} û {{g|ckb|نه}}, goranî/hewramî ''[[ne]]'', zazakî ''[[nê]]'', farisî {{g|fa|نا|tr=na}} û {{g|fa|نه|tr=ne, nê}} û {{g|fa|نی|tr=nê}}, tacikî [[на]] (na) û [[не]] (ne), pehlewî [[𐭫𐭠]] (nê), avestayî [[𐬥𐬀]] (na, /ne/), osetî [[нæ]] (næ), hexamenişî ''nai'' (/ney/), sanskrîtî [[न]] (ná), hindî [[न]] (na) û [[ना]] (nā), ûrdûyî {{g|ur|نہ|tr=na, ne}}, latviyayî ''[[ne]]'', lîtwanî ''[[nè]]'', rusî [[не]] (nʸê, nʸi), bulgarî [[не]] (nê), çekî ''[[ne]]'', polonî û slovakî ''[[nie]]'', bretonî ''[[ne]]'', îrlendî ''[[ní]]'', latînî ''[[nē]]'' û ''[[nōn]]'', fransî ''[[ne]] û [[non]]'', îtalî ''[[no]]'' û ''[[non]]'', spanî ''[[no]]'', portugalî ''[[não]]'', romanî ''[[nu]]'', îngilîzî ''[[no]]'' û ''[[not]]'', almanî ''[[nein]]'', danmarkî û swêdî ''[[nej]]'' (/ney, nêy/), norwecî ''[[nei]]''... hemû ji {{ji|ine-pro|ku|-}} *''[[ne]]''.
Peyv wek ''[[ne ... ne]]'' ji zimanên îranî ketiye tirkî jî.
Peyva kurdî ''[[nexêr]]'' û ya farisî {{g|fa|نخیر|tr=nexêyr}} awayekî [[rêzgirtin]] û [[ihtiram]]ê yê gotina ''na, ne'' ye û ji ''ne'' ya îranî û {{g|ar|خیر|tr=xeyr}} ([[xêr]], [[xweşî]], [[bereket]]) ya erebî hatiye çêkirin wek heçku mirov bibêje "bixêr be lê na" yan "na lê bixêr be".
Peyva tirkî ''[[hayır]]'' (na, ne, nexêr) jî dîsa ji erebî {{g|ar|خیر|tr=xeyr}} ([[xêr]], [[xweşî]], [[bereket]]) e û wê di tirkî de bergeha bikaranînê li ''[[yok]]'' ya xwemalî teng kiriye. Di zimanên din yên [[tirkîkî]] de bi piranî [[hevreh]]ên peyva ''[[yok]]'' hem li cihê ''[[yok]]'' û hem jî cihê ''[[hayır]]'' tên bikaranîn.
;{{biçûk|Çavkanî:
* {{Chyet}}
* {{Horn}}
* {{Lubotsky}}
* {{Nişanyan|hayır}}
* {{Pokorny}}
* {{Tsabolov}}
* {{Watkins}}
* {{Etymonline}}
* {{The Tower of Babel}}
}}
==== Bide ber ====
* [[an]]
==== Binêrin herwiha ====
{{kol3|ku
|ba
|ca
|ça
|da
|ga
|ha
|ka
|la
|ma
|pa
|ra
|sa
|şa
|ta
|va
|wa
|ya
|za
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|نا|tr=na}}, {{W-|ckb|نه|tr=ne}}, {{W-|ckb|sc=Latn|nexêr}}
* {{Z|sdh}}: {{W-|sdh|sc=Latn|na}}, {{W-|sdh|sc=Latn|ne}}, {{W-|sdh|sc=Latn|nexêr}}
* {{Z|hac}}: {{W-|hac|sc=Latn|ne}}
* {{Z|zza}}: {{W-|zza|nê}}, {{W-|zza|ney}}, {{W-|zza|nêxêr}}
==== Werger ====
{{werger-ser}}
* {{Z|ab}}: {{W-|ab|мап}}
* {{Z|af}}: {{W+|af|nee}}
* {{Z|sq}}: {{W+|sq|jo}}, {{W+|sq|nuk}}
* {{Z|de}}: {{W+|de|nein}} ; {{W+|de|nee}}, {{W+|de|nö}} {{a|colloquial|chiefly northern and central Germany}}
* {{Z|ems}}: {{W-|ems|qang'a}}
* {{Z|arc}}:
*: Îbranî: {{W-|arc|לא|tr=lā’}}
*: Siryanî: {{W-|arc|ܠܐ|tr=lā’}}
* {{Z|rup}}: {{W-|rup|nu}}
* {{Z|as}}: {{W-|as|নাই}}, {{W-|as|নহয়}}, {{W-|as|না}}
* {{Z|ast}}: {{W+|ast|nun}}
* {{Z|az}}: {{W+|az|yox}}, {{W+|az|xeyr}}
* {{Z|eu}}: {{W+|eu|ez}}
* {{Z|ba}}: {{W-|ba|юҡ}}
* {{Z|be}}: {{W+|be|не}}
* {{Z|bn}}: {{W+|bn|না}}, {{W-|bn|জি না}}, {{W+|bn|জ্বী না|tr=jī na}}
* {{Z|bcl}}: {{W-|bcl|dai}}, {{W-|bcl|bako}}
* {{Z|br}}: {{W+|br|nann}}
* {{Z|bg}}: {{W+|bg|не}}
* Burmese:, {{W-|my|[[မ]][[ဟုတ်]][[ပါ]][[ဘူး]]}}, {{W+|my|ဟင့်အင်း}}
* {{Z|ccc}}: {{W-|ccc|kala}}
* {{Z|ce}}: {{W-|ce|хӏан-хӏа}}
* {{Z|cs}}: {{W+|cs|ne}}
* {{Z|chr}}: {{W-|chr|ᏝᏃ}}, {{W+|chr|Ꮭ}}
* {{Z|ny}}: {{W-|ny|iyayi}}
* {{Z|cic}}: {{W-|cic|ki'yo}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|不|tr=bat1}}
*: {{Z|dng}}: {{W-|dng|бу}}
*: {{Z|cmn}}: {{W+|cmn|不|tr=bù}}, {{W+|cmn|否|tr=fǒu}}, {{W+|cmn|沒|tr=méi}}, {{W+|cmn|沒有|tr=méiyǒu}}
* {{Z|cho}}: {{W-|cho|kíyo}}
* {{Z|da}}: {{W+|da|nej}}
* {{Z|id}}: {{W+|id|tidak}}
* {{Z|ar}}: {{W+|ar|لَا}}
*: {{Z|arz}}: {{W-|arz|لَأ|tr=laʔ}}, {{W-|arz|لَا|tr=lā}}
*: {{Z|acw}}: {{W-|acw|لَأ|tr=laʔ}}, {{W-|acw|لَا|tr=lā}}
*: {{Z|ary}}: {{W-|ary|لَا|tr=lā}}
*: {{Z|ajp}}: {{W-|ajp|لَأ|tr=laʔ}}
* {{Z|hy}}: {{W+|hy|ոչ}}, {{W+|hy|չէ}}
* {{Z|eo}}: {{W+|eo|ne}}
* {{Z|et}}: {{W+|et|ei}}
* {{Z|fa}}: {{W+|fa|نه|tr=na}}, {{W+|fa|نخیر|tr=naxeyr}}, {{W+|fa|خیر|tr=xeyr}}
* {{Z|fo}}: {{W+|fo|nei}}
* {{Z|fj}}: {{W+|fj|sega}}
* {{Z|fi}}: {{W+|fi|ei}}
* {{Z|fro}}: {{W-|fro|non}}
* {{Z|fr}}: {{W+|fr|non}}
* {{Z|fur}}: {{W-|fur|no}}
* {{Z|fy}}: {{W+|fy|nee}}
* {{Z|gl}}: {{W+|gl|non}}
* {{Z|cab}}: {{W-|cab|inó}}, {{W-|cab|uá}}
* {{Z|gaa}}: {{W-|gaa|daabi}}, {{W-|gaa|dabida}}
* {{Z|got}}: {{W-|got|𐌽𐌴}}
* {{Z|gug}}: {{W-|gug|nahániri}}
* {{Z|gu}}: {{W-|gu|ના}}
* {{Z|ka}}: {{W-|ka|არ}}, {{W-|ka|არა}}
* {{Z|gn}}: {{W+|gn|nahániri}}
* {{Z|hur}}: {{W-|hur|éwe}}
* {{Z|haw}}: {{W-|haw|ʻaʻole}}
* {{Z|hi}}: {{W+|hi|नहीं}}, {{W-|hi|जी नहीं}}
* {{Z|hil}}: {{W-|hil|indi}}, {{W-|hil|dili}}
* {{Z|nl}}: {{W+|nl|nee}}, {{W+|nl|neen}}
* {{Z|ibg}}: {{W-|ibg|ari}}
* {{Z|he}}: {{W+|he|לֹא|tr=lo}}
* {{Z|io}}: {{W+|io|no}}
* {{Z|ang}}: {{W-|ang|nese}}
* {{Z|en}}: {{W+|en|no}}
* {{Z|ia}}: {{W-|ia|no}}
* {{Z|iu}}: {{W-|iu|ᐋᒃᑲ}}
* {{Z|ga}}: {{W-|ga|ní hea}}.
* {{Z|it}}: {{W+|it|no}}
* {{Z|is}}: {{W+|is|nei}}
* {{Z|ja}}: {{W+|ja|いいえ|tr=iie}}, {{W+|ja|いえ|tr=ie}}, {{W+|ja|ううん|tr=u'un}}, {{W+|ja|違う|tr=ちがう, chigau}}, {{W+|ja|いや|tr=iya}}
* {{Z|jv}}: {{W+|jv|ora}}
* {{Z|kn}}: {{W+|kn|ಇಲ್ಲ}}
* {{Z|pam}}: {{W-|pam|ali}}, {{W-|pam|e}}
* {{Z|krl}}: {{W-|krl|ei}}
* {{Z|ca}}: {{W+|ca|no}}
* {{Z|qu}}: {{W-|qu|mánan}}
* {{Z|krj}}: {{W-|krj|indi}}
* {{Z|ky}}: {{W+|ky|жок}}
* {{Z|si}}: {{W-|si|නැ}}
* {{Z|com}}: {{W-|com|kee}}
* {{Z|ko}}: {{W+|ko|아니요}}, {{W+|ko|아뇨}}, {{W+|ko|아니}}
* {{Z|ltg}}: {{W-|ltg|nā}}
* {{Z|la}}: {{W+|la|minime}}, {{W+|la|non}}, {{W+|la|ne}}
* {{Z|lv}}: {{W+|lv|nē}}
* {{Z|lo}}: {{W-|lo|ບໍ່}}
* {{Z|li}}: {{W+|li|nae}}
* {{Z|lt}}: {{W+|lt|ne}}
* {{Z|lb}}: {{W-|lb|nee}}, {{W+|lb|neen}}
* {{Z|mk}}: {{W-|mk|не}}
* {{Z|ml}}: {{W+|ml|അല്ല}}, {{W+|ml|ഇല്ല}}
* {{Z|ms}}: {{W+|ms|tidak}}, {{W+|ms|tak}}
* {{Z|mt}}: {{W+|mt|le}}
* {{Z|mnk}}: {{W-|mnk|hani}}
* {{Z|gv}}: {{W-|gv|cha nee}}
* {{Z|mi}}: {{W-|mi|kāo}}
* {{Z|mr}}: {{W-|mr|नाही}}
* {{Z|hu}}: {{W+|hu|nem}}
* {{Z|miq}}: {{W-|miq|apia}}
* {{Z|egy}}: {{W-egy|m-bjꜣt|h=m-b-i-A-t*W10:bH-A2}}
* {{Z|mn}}: {{W+|mn|үгүй}}
* {{Z|nap}}: {{W-|nap|none}}
* {{Z|nv}}: {{W-|nv|dooda}}, {{W-|nv|ndagaʼ}}
* {{Z|ne}}: {{W-|ne|नाई}}, {{W-|ne|हुन्न}}, {{W+|ne|अहँ}}
* {{Z|nuk}}: {{W-|nuk|wik}}
* {{Z|non}}: {{W-|non|nei}}
* {{Z|no}}: {{W+|no|nei}}
*: {{Z|nn}}: {{W+|nn|nei}}
* {{Z|cst}}: {{W-|cst|'ák̄we}}
* {{Z|oj}}: {{W-|oj|gaawiin}}
* {{Z|oc}}: {{W+|oc|non}}
* {{Z|os}}: {{W-|os|нӕ}}, {{W-|os|нӕй}}
* {{Z|ota}}: {{W-|ota|یوق|tr=yok}}
* {{Z|ug}}: {{W-|ug|ياق}}
* {{Z|uz}}: {{W+|uz|yoʻq}}
* {{Z|pau}}: {{W-|pau|ng diak}}
* {{Z|pag}}: {{W-|pag|andi}}
* {{Z|pap}}: {{W-|pap|nò}}
* {{Z|ps}}: {{W+|ps|نه|tr=na}}
* {{Z|ppl}}: {{W-|ppl|inte}}, {{W-|ppl|te}}, {{W-|ppl|tesu}}
* {{Z|pdt}}: {{W-|pdt|nä}}
* {{Z|pl}}: {{W+|pl|nie}}
* {{Z|pt}}: {{W+|pt|não}}
* {{Z|pa}}: {{W-|pa|ਨਹੀਂ}}, {{W-|pa|نہیں}}
* {{Z|kk}}: {{W+|kk|жоқ}}
* {{Z|cop}}: {{W-|cop|ⲙⲙⲟⲛ}}
'' ''
* {{Z|rm}}: {{W-|rm|na}}
* {{Z|rom}}: {{W-|rom|na}}
* {{Z|ro}}: {{W+|ro|nu}}
* {{Z|ru}}: {{W+|ru|нет}}
* {{Z|rue}}: {{W-|rue|нїт}}
* {{Z|se}}: {{W-|se|a-a}}
* {{Z|sm}}: {{W-|sm|leai}}
* {{Z|sa}}: {{W+|sa|नहि}}
* {{Z|sc}}: {{W-|sc|no}}, {{W-|sc|non}}, {{W-|sc|nu}}
* {{Z|ceb}}: {{W-|ceb|dili}}
* {{Z|scn}}: {{W+|scn|no}}
* {{Z|szl}}: {{W-|szl|ńy}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|не}}
*: Latînî: {{W+|sh|ne}}
* {{Z|sco}}: {{W-|sco|naw}}
* {{Z|cu}}: {{W-|cu|ⱀⰻ}}
* {{Z|sk}}: {{W+|sk|nie}}
* {{Z|sl}}: {{W+|sl|nè}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|ně}}
* {{Z|es}}: {{W+|es|no}}
* {{Z|sw}}: {{W+|sw|hapana}}, {{W-|sw|sivyo}}
* {{Z|sv}}: {{W+|sv|nej}}
* {{Z|tg}}: {{W+|tg|на}}, {{W+|tg|не}}
* {{Z|tl}}: {{W+|tl|hindi}}
* {{Z|ta}}: {{W+|ta|இல்லை}}
* {{Z|th}}: {{W+|th|ไฮ้}}, {{W+|th|ไม่}}, {{W+|th|เปล่า}}
* {{Z|te}}: {{W+|te|కాదు}}, {{W+|te|లేదు}}
* {{Z|tzm}}: {{W-|tzm|ⵓⵀⵓ}}
* {{Z|tt}}: {{W-|tt|юк}}
* {{Z|tr}}: {{W+|tr|yok}}, {{W+|tr|hayır}}
* {{Z|tk}}: {{W-|tk|ýok}}, {{W-|tk|ýook}}
* {{Z|ur}}: {{W-|ur|نہیں|tr=nahī̃}}, {{W-|ur|جی نہیں|tr=jī nahī̃}}
* {{Z|uk}}: {{W+|uk|ні}}
* {{Z|vi}}: {{W+|vi|không}}
* {{Z|vo}}: {{W+|vo|no}}
* {{Z|war}}: {{W-|war|diri}}
* {{Z|cy}}: {{W-|cy|na}}
* {{Z|wrh}}: {{W-|wrh|wiray}}
* {{Z|win}}: {{W-|win|kaʼo}}
* {{Z|wo}}: {{W-|wo|déedéet}}
* {{Z|km}}: {{W+|km|ទេ|tr=tei}}, {{W-|km|អត់ទេ}}, {{W-|km|បាទទេ}}
* {{Z|yi}}: {{W-|yi|ניין}}
* {{Z|yo}}: {{W-|yo|kò}}, {{W-|yo|kọ}}
* {{Z|el}}: {{W+|el|όχι}}
*: Kevn: {{W-|grc|οὐχί}}, {{W-|grc|οὔ}}
* {{Z|ase}}: {{W-|ase|H^o@Side-PalmForward Flatten}}
* {{Z|zu}}: {{W+|zu|cha}}, {{W-|zu|qha}}
* {{Z|nmn}}: {{W-|nmn|ʻĩĩ}}
{{werger-bin}}
:{{werger çavkanî|en|no|beş=Ev qismê Wergerê|oldid=76521855}}
===Hoker 2===
{{hoker|ku}}
# (vê demê, vî zemanî): {{guherto|niha}}
#* {{bêmînak|ku}}
=== Daçek ===
{{daçek|ku}}
# ([[navber]], [[nav]]) {{guherto|nav}} (2)
#* {{bêmînak|ku}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# {{ku-raboriya-sade|nan|sêyem|yekjimar}}
== {{ziman|ckb}} ==
=== Hoker ===
{{hoker|ckb}}
# [[na#Kurmancî|na]], [[ne]], [[nexêr]]
#* {{bêmînak|ckb}}
== {{ziman|zza}} ==
=== Cînav ===
{{cînav|zza}}
# [[vê]], [[ev]] (bo mêzayendan)
#* {{bêmînak|zza}}
==== Etîmolojî ====
bi [[metatez]]ê [[hevreh]]a farisî ''an'', belûçî ''ã'', kurmancî [[hin-]] (wê/wî: [[hingê]] = wê demê) ji {{ji|ira}}
== {{ziman|duu}} ==
=== Cînav ===
{{cînav|duu}}
# [[tu#ku|tu]] (wek [[biker]])
#* {{bêmînak|duu}}
== {{ziman|lkt}} ==
=== Girêdek ===
{{girêdek|lkt}}
# [[û#ku|û]] ([[herwiha#ku|herwiha]], [[hem#ku|hem]])
#* {{bêmînak|lkt}}
== {{ziman|cs}} ==
=== Daçek ===
{{daçek|cs}}
# {{g|ku|li ser}}
#* {{bêmînak|cs}}
=== Çavkanî ===
{{rûpela wergerê|cs|li ser}}
== {{ziman|gd}} ==
=== Daçek ===
{{daçek|gd}}
# {{g|ku|ji}} (bo berhevdanê)
#* {{bêmînak|gd}}
=== Çavkanî ===
{{rûpela wergerê|gd|ji}}
== {{ziman|nl}} ==
=== Daçek ===
{{daçek|nl}}
# [[piştî#ku|piştî]], [[li pey]], [[li dûv]]
#* {{bêmînak|nl}}
== {{ziman|lg}} ==
=== Girêdek ===
{{girêdek|lg}}
# [[û#ku|û]] ([[herwiha#ku|herwiha]], [[hem#ku|hem]])
#* {{bêmînak|lg}}
== {{ziman|mg}} ==
=== Girêdek ===
{{girêdek|mg}}
# [[yan#ku|yan]], [[an#ku|an]]
#* {{bêmînak|mg}}
== {{ziman|tum}} ==
=== Girêdek ===
{{girêdek|tum}}
# [[û#ku|û]] ([[herwiha#ku|herwiha]], [[hem#ku|hem]])
#* {{bêmînak|tum}}
== {{ziman|tpi}} ==
=== Girêdek ===
{{girêdek|tpi}}
# [[û#ku|û]] ([[herwiha#ku|herwiha]], [[hem#ku|hem]])
#* {{bêmînak|tpi}}
== {{ziman|nan}} ==
=== Navdêr ===
{{navdêr|nan}}
# {{f|nan|element}} {{g|ku|sodyûm}}
#* {{bêmînak|nan}}
=== Çavkanî ===
{{rûpela wergerê|nan|sodyûm}}
== {{ziman|pl}} ==
=== Daçek ===
{{daçek|pl}}
# {{g|ku|li ser}}
#* {{bêmînak|pl}}
=== Çavkanî ===
{{rûpela wergerê|pl|li ser}}
== {{ziman|pt}} ==
=== Bilêvkirin ===
* {{deng|pt|LL-Q5146 (por)-JnpoJuwan-na.wav|Deng|dever=São Paulo, Brezîl}}
=== Daçek ===
{{daçek|pt}}
# {{g|ku|li ser}}
#* {{bêmînak|pt}}
=== Çavkanî ===
{{rûpela wergerê|pt|li ser}}
== {{ziman|sh}} ==
=== Daçek ===
{{daçek|sh}}
# {{g|ku|li ser}}
#* {{bêmînak|sh}}
=== Çavkanî ===
{{rûpela wergerê|sh|li ser}}
== {{ziman|sk}} ==
=== Daçek ===
{{daçek|sk}}
# {{g|ku|li ser}}
#* {{bêmînak|sk}}
=== Çavkanî ===
{{rûpela wergerê|sk|li ser}}
== {{ziman|sl}} ==
=== Daçek ===
{{daçek|sl}}
# {{g|ku|li ser}}
#* {{bêmînak|sl}}
=== Çavkanî ===
{{rûpela wergerê|sl|li ser}}
== {{ziman|dsb}} ==
=== Daçek ===
{{daçek|dsb}}
# {{g|ku|li ser}}
#* {{bêmînak|dsb}}
=== Çavkanî ===
{{rûpela wergerê|dsb|li ser}}
== {{ziman|sw}} ==
=== Girêdek ===
{{girêdek|sw}}
# [[û#ku|û]] ([[herwiha#ku|herwiha]], [[hem#ku|hem]])
#* {{bêmînak|sw}}
== {{ziman|zdj}} ==
=== Daçek ===
{{daçek|zdj}}
# {{g|ku|ji}} (bo berhevdanê)
#* {{bêmînak|zdj}}
=== Çavkanî ===
{{rûpela wergerê|zdj|ji}}
== {{ziman|tl}} ==
=== Navdêr ===
{{navdêr|tl}}
# {{f|tl|malbat}} [[kur#ku|kur]] (zarokê nêr yê kesekî)
#* {{bêmînak|tl}}
== {{ziman|tzo}} ==
=== Navdêr ===
{{navdêr|tzo}}
# {{f|tzo|avahî}} {{g|ku|xanî}}, {{g|ku|avahî}}, {{g|ku|bîna}}
#* {{bêmînak|tzo}}
=== Çavkanî ===
{{rûpela wergerê|tzo|xanî}}
== {{ziman|cy}} ==
=== Daçek ===
{{daçek|cy}}
# {{g|ku|ji}} (bo berhevdanê)
#* {{bêmînak|cy}}
=== Çavkanî ===
{{rûpela wergerê|cy|ji}}
0syik89xp8mkdow7ba7petz9z65r8cc
şewk
0
8349
6329012
5893108
2026-08-11T11:52:15Z
Dûrzan
875
6329012
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr 1 ===
{{navdêr|ku|z=}}
# (alavê girtina masiyê) {{bnr|şok}}
#* {{bêmînak|ku}}
# Jinan bi zîv çêdikirin didane ber serê xwe. Kofî didane serê xwe, şewk jî didane ber.
#* {{bêmînak|ku}}
* Me berê çeperişî dida ber kofiyê, paşê şewk dida ser
# {{dever|Kerboran}} [[kevir]]ê [[hestem]]
=== Navdêr 2 ===
[[Wêne:assorted forks.jpg|thumb|çend [[cûn]]ên şewkan]]
{{navdêr|ku|z=}}
# [[cure]]yekî [[çetel]]iye ku du [[ser]] an [[tilî]] hene ji bo [[girtin]]a [[xwarin]]ê tê bikaranîn
#* {{bêmînak|ku}}
==== Hevmane ====
* [[çengal]]
==== Bide ber ====
* [[çetel]]
==== Etîmolojî ====
Ji {{deyn|ar|ku|شوكة}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|olta}}, {{W+|tr|çakmaktaşı}}
{{werger-bin}}
ivg67pe4ld2fv4y4igk6evb7ynwdpho
mêbaz
0
8355
6329059
6129902
2026-08-11T11:53:53Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329059
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesê ku bi namûsa jinan re dilîze,<ref name= "destî">{{Ferhenga Destî|r=246}}</ref> mêrê têkiliyên ne berdewam li gel jinan hene<ref>{{malper|nivîskar=Husein Muhammed|sernav=Ferheng: soranî - kurmancî|url=http://www.geocities.ws/kovaramehname/50/ziman1.html|malper=kovaramehname|sal=2004|ziman=ku}}</ref>
#* {{jêder-malper|ku|jêgirtin=Le qisey saxî min xelel degirin<br>Wahîmey şêxekan le dill degirin<br><br>Ewî muhtacî nan û pîwaz e<br>Ba hetîwbaz e yane '''mêbaz''' e|nivîskar=Hacî Qadirê Koyî|sernav=Udeba Çak e|url=https://www.helbestakurdi.com/helbest/haci-qadire-koyi--udeba-cak-e.html|malper=helbestakurdi.com}}
#* {{jêder-malper|ku|jêgirtin=Kesên birçî dikin qaçax ji bo nan û pîvaz<br>Tu bi xwe dikî jiyana gengaz<br>Li ser mêza te hingiv û goştê qaz<br>Li Enqerê dikî laqirdî û tolaz<br>Li ser vî gelê '''mêbaz'''|nivîskar=F yakoub|sernav=Ey şeytanê dil bi naz|url=http://sawtalkurd1.blogspot.com/2011/12/ey-seytane-dil-bi-naz-f-yakoub.html|malper=sawtalkurd1.blogspot.com|sal=2011}}
# [[jin|Jin]]a [[têkiliyên cinsî]] li gel [[jin]]ekê yan hin [[jin]]an hene.
#* {{jêder-malper|ku|jêgirtin=lgbt kinkirina navên lezbîyen('''mêbaz'''), gey(nêrbaz), bîseksuel, trans û înterseksuel e. Vê beşa zayendî her ji yek berpêbûniyek e. ne tercîh e.|nivîskar=XEBROŞKBÊJ|sernav=LGBTÎ û Homofobî|url=https://xebroskbej.wordpress.com/2014/01/14/lgbti-u-homofobi/|malper=xebroskbej.wordpress.com|sal=2014}}
#* {{jêder-malper|ku|jêgirtin=Rêxistinên mafên mirovan ên îranî dibêjin, ku ji dema destpêka Şoreşa Islamî di sala 1979ê de, dora 4000 '''mêbaz''' û nêrabz hatine daliqandin.|sernav=Rêjîma Îranê du ciwanên nêrbaz daliqandin|url=http://lgbtnuce.blogspot.com/2005/07/rejima-irane-du-ciwanen-nerbaz.html|malper=lgbtnuce.blogspot.com|sal=2005}}
==== Hevmane ====
* ''(kesa bi namûsa jinan dilîze)'' [[keçxapînok]]<ref name= "destî" />, [[tolaz]], [[jinbaz]]
* ''(Jina têkiliyên cinsî li gel jineke din heye)'' [[lezbiyen]]
==== Bide ber ====
* [[nêrbaz]]
==== Jê ====
* [[mêbazî]]
==== Etîmolojî ====
Ji {{qertaf|ku|mê|-baz}}.
==== Werger ====
{{werger-ser|keçxapînok|1}}
* {{Z|en}}: {{W+|en|womanizer}}
* {{Z|tr}}: {{W|tr|zampara}}<ref>{{Musa Anter|r=84}}</ref>, {{W|tr|kadın avcısı}}
{{werger-bin}}
{{werger-ser|lezbiyen|2}}
* {{Z|en}}: {{W+|en|lesbian}}
* {{Z|tr}}: {{W|tr|lezbiyen}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
5kjyvioo3hruk1gyjkww83hvopbio7h
lezbiyen
0
8356
6329043
6244569
2026-08-11T11:53:20Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329043
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[jin]]a [[homoseksûel]], <br>[[jin]]a ku [[têkiliyên cinsî]] li gel [[jin]]ekê yan hin [[jin]]an hene
#* {{jêder-malper|ku|jêgirtin= Ez bi vê nûçeya rindik pir kêfxweş bûm. Ez bixwe jî '''lezbîyen''' im. Guh nedin nêrînên ku zemên sed sal şunde dişopînin.|nivîskar=Zozan Dêrsimî|malper=Netkurd.com|sal=11/2007}}
==== Formên alternatîv ====
* [[lesbiyen]]
* [[lesbo]]
* [[lezbo]]
==== Hevmane ====
* [[mêbaz]]
==== Bide ber ====
* [[homoseksuel]]
* [[homo]]
* [[nêrbaz]]
==== Etîmolojî ====
Bi rêya {{ji|fr|ku|lesbienne}} yan îngilîzî [[lesbian]] ji yûnaniya kevn.{{etym}}
==== Jê ====
* [[lezbiyenî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|lesbe}} {{W|de|lesberin}}, {{W|de|Lesbe|f}}
* {{Z|eo}}: {{W+|eo|lesbo}}
* {{Z|fi}}: {{W+|fi|lesbo}}
* {{Z|fr}}: {{W+|fr|lesbienne}}
* {{Z|en}}: {{W+|en|lesbian}}
* {{Z|it}}: {{W+|it|lesbical}}
* {{Z|la}}: {{W+|la|tribas}}
* {{Z|hu}}: {{W+|hu|leszbikus}}
* {{Z|pl}}: {{W+|pl|lesbijka}}
* {{Z|pt}}: {{W+|pt|lésbica}}
* {{Z|sl}}: {{W+|sl|lezbijka}}
* {{Z|sv}}: {{W+|sv|flata}}
* {{Z|tr}}: {{W+|tr|lezbiyen}}, {{W+|tr|sevici}}
{{werger-bin}}
21rgoxnjhm3zvmqw9232e787x0nw6d1
hefsî
0
8641
6328977
6327144
2026-08-11T11:50:52Z
Balyozbot
7867
/* Navdêr 1 */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328977
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
[[Wêne:Prision del Condado de Mantras.JPG|thumb|250px|zindaniyek]]
{{navdêr|ku|z=mn}}
# Kesê di [[hefs]]ê de [[girtî]].
#* {{jêder-malper|ku|jêgirtin=Ne îşê henekan e! Ev serê sê mehan e, ez jî wekî herkesî li malê '''hefsî''' me. Loma jî, hubir di qelema min de gewimî ye. Edetî bûye nola terşeke nedotî û li ser guhanan; aha wanî guhan lê zerpitiye.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
==== Formên alternatîv ====
{{kol3|ku
|hebisî
|hebsî
|hefisî
|hepisî
|hepsî
|hevisî
|hevsî
|ḧebisî
|ḧebsî
|ḧefisî
|ḧefsî
|ḧepisî
|ḧepsî
|ḧevisî
|ḧevsî
}}
==== Hevmane ====
{{kol3|ku
|esîr
|dîl
|girtî
|sicinî
|zeftkirî
|zindanî
}}
==== Jê ====
{{kol3|ku|cure=Jê
|hefsî bûn<pos:lêker>
|hefsî kirin<pos:lêker>
|hefsîbûn<pos:navdêr>
|hefsîkirin<pos:navdêr>
|hefsîbûyî<pos:rengdêr>
|hefsîkirî<pos:rengdêr>
|hefsîtî
}}
==== Têkildar ====
{{kol3|ku
|dîlgeh
|esîrgeh
|girtîgeh
|hefs
|şkence
|tazîb
}}
==== Etîmolojî ====
Ji {{paş|ku|hefs|-î}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Gefangener}} {{n}}
* {{Z|cs}}: {{W|cs|vězeň}} {{nt}}
* {{Z|eo}}: {{W|eo|malliberulo}}, {{W|eo|kaptito}}, {{W|eo|prizonulo}}
* {{Z|fi}}: {{W|fi|vanki}}
* {{Z|fr}}: {{W|fr|prisonnier}} {{nt}}
* {{Z|nl}}: {{W|nl|gevangene}} {{n}}
* {{Z|en}}: {{W|en|prisoner}}, {{W|en|detainee}}, {{W|en|captured}}, {{W|en|termer|guman=erê}}
* {{Z|ja}}: {{W|ja|囚人|tr=shūjin}}; {{W|ja|捕虜|tr=horyo}}
* {{Z|ca}}: {{W|ca|zatvorenik}} {{n}}, {{W|ca|zatvorenica}} {{mê}}
* {{Z|pl}}: {{W|pl|więzień}} {{nt}}
* {{Z|pt}}: {{W|pt|prisioneiro}} {{nt}}
* {{Z|ru}}: [[заключенный]] (zakl'učónnyj)
* {{Z|sh}}: {{W|sh|zatvorenik}} {{nt}}, {{W|sh|kažnjenik}} {{nt}}, {{W|sh|zarobljenik}} {{nt}}
* {{Z|sl}}: {{W|sl|zapornik}} {{n}}, [[zapornica]]; [[jetnik]], {{W|sl|jetnica}} {{mê}}
* {{Z|es}}: {{W|es|prisionero}} {{nt}}
* {{Z|sw}}: {{W|sw|mabusu|xs=Swahili}}
* {{Z|sv}}: {{W|sv|fånge}}
* {{Z|tr}}: {{W|tr|esir}}, {{W|tr|dil}}, {{W|tr|munkabız}}, {{W|tr|peklik}}, {{W|tr|mahpus}}, {{W|tr|mapus}}, {{W|tr|kabız}}
* {{Z|el}}: {{W|el|κρατούμενος}} {{n}}, {{W|el|φυλακισμένος}} {{n}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=mn}}
# {{guharto|ku|hevsî|w=cîran, kesên malên wan nêzî hev}}
7dwzrmkdlwi2fafa8f1ldu0mysq7m2r
dims
0
9995
6328920
6305378
2026-08-11T11:38:53Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328920
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Dims Dêrika Çiyayê Mazî 2010.JPG|thumb|Dimsê tiriyê]]
{{navdêr|ku|z=m}}
# {{f|ku|xwarin}} [[şerbet|Şerbet]]a [[tirî]] ya [[kelandin|kelandî]].
#: {{hevmane|ku|dob|doşav|mot|şirûb|dobe|aqit|bekmez}}
#* {{jêder-malper|ku|jêgirtin=Lê çi heyf ku kes qedrê '''dimsa''' tûyan nizane. Halbû li gundan wek xwarina super tê zanîn.|nivîskar=Zinarê Xamo|sernav=Bîrîkirina dimsê|url=https://zinarexamo.blogspot.com/2020/12/birikirina-dimse.html|urlya-arşîvê=https://web.archive.org/web/20240406083206/https://zinarexamo.blogspot.com/2020/12/birikirina-dimse.html|malper=https://zinarexamo.blogspot.com/|dîrok=2020-12-22}}
#* {{jêder-malper|ku|jêgirtin=Ev '''dimsa''' ku em ê çêbikin hinek difiroşin û hinek jî didin cîranên xwe û yê mayî jî ji xwe re hiltînin.|sernav=Li quntara Çiyayê Gabarê dema çêkirina dimsê ye|url=https://bianet.org/haber/li-quntara-ciyaye-gabare-dema-cekirina-dimse-ye-249307|malper=bianet.org|dîrok=2021-08-21}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|دمس}}
==== Formên alternatîv ====
* {{g|ku|dibs}}
* {{g|ku|difs}}
* {{g|ku|divs}}
==== Jê ====
* {{g|ku|dimsane}}
* {{g|ku|dimsî}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|دِبْس}}, hevreha {{hv|he|דבש|tr=dibeş, diveş|w=[[hingivîn]]}}, {{hv|arc|ܕܒܫܐ|tr=deḇşa, devşa|w=[[hingivîn]]}} û {{hv|akk|𒁲𒅖𒁍𒌝|ts=di-iš-pu-um|tr=dišpum}}.
==== Bide ber ====
* {{g|ku|xoşav}}
==== Bi zaravayên din ====
* {{Z|zza}}: {{W-|zza|rîb}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|melasse}}
* {{Z|de}}: {{W|de|Melasse|f}}, {{W|de|Sirup|m}}
* {{eo}}o: [[melaso]]
* {{Z|ast}}: {{W|ast|melaza|f}}
* {{Z|br}}: {{W|br|triakl|m}}
* {{Z|ar}}: {{W|ar|دبس|guman=erê}}
* {{Z|fa}}: {{W-|fa|شیره}}
* {{Z|fi}}: {{W+|fi|melassi}}
* {{Z|fr}}: {{W|fr|mélasse|f}}
* {{Z|gl}}: {{W|gl|melaza|f}}
* {{Z|nl}}: {{W|nl|melasse|f}}
* {{Z|he}}: {{W-|he|דבשה|tr=divsha}}
* {{Z|en}}: {{W+|en|molasses}}
* {{Z|it}}: {{W|it|melassa|f}}
* {{Z|ja}}: {{W|ja|糖蜜|tr=[[とうみつ]], tōmitsu}}
* {{Z|qu}}: {{W|qu|q'ita|xs=Quechua}}
* {{Z|ko}}: {{W|ko|당밀|tr=dangmil}}
* {{Z|gv}}: {{W+|gv|soo shugyr}}
* {{Z|hu}}: {{W+|hu|melasz}}
* {{Z|pl}}: {{W|pl|melasa|f}}
* {{Z|pt}}: {{W|pt|melaço|m}}
* {{Z|ru}}: {{W|ru|меласса|tr=melássa|f}}
* {{Z|srn}}: {{W+|srn|malasi}}
* {{Z|es}}: {{W|es|melaza|f}}
* {{Z|sv}}: {{W|sv|melass|c}}
* {{Z|tr}}: {{W+|tr|pekmez}}
* {{Z|vo}}: {{W-|vo|melat|xs=Volapük}}
{{werger-bin}}
fdhr67dthlqbz3vmxt8hjox2b5myhd4
di ... da
0
10366
6328912
6232762
2026-08-11T11:27:58Z
Balyozbot
7867
/* Bazinedaçek */ sererastkirin
6328912
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bazinedaçek ===
{{bazinedaçek|ku|[[di]] ... [[da]]}}
# {{f|ku|Dihok}} {{bnr|di ... de}}
#* {{jêder-malper|ku|jêgirtin=Heke ez '''di''' derheqê tiştekî '''da''', kesekî da an jî bûyerekî da ji xwe bawer bim ez ewê çaxê xwe gelek rehet hîs dikim.|nivîskar=Rehmî Kurdziman|sernav=Ez ji xwe ra nabêjim nivîskar, karê min nivîskarî nîne|malper=inanolo.blogspot.com|url=https://inanolo.blogspot.com/2018/10/rehmi-kurdziman-ez-ji-xwe-ra-nabejim.html|sal=2018}}
9d8jmo2suy2469lp9j6d0ssfroi5cnl
cire
0
11171
6328831
6304291
2026-08-11T00:32:11Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328831
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/d͡ʒɪˈrɛ/}} {{r-ya req}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dubendî]], [[lihevnekirin]], [[arîşe]], [[kêşe]], [[pirsgirêk]], [[problem]], [[nakokî]]
#* {{jêder-malper|ku|jêgirtin=Berî sefera Celal Talebanî jî '''cire''' di navbera herduyan [Talebanî û serokwezîrê Iraqê Îbrahîm Ceferî] de li ser sefera Emerîkayê çêbû...|sernav=Brahîm Ceferî diçe şerê Celal Talebanî|malper=Nefel.com|sal=9/2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Formên alternatîv ====
* [[cirre]]
==== Jê ====
{{stûn|
* [[cirxweş]]
* [[cirnexweş]]
* [[bêcire]]
* [[bêciretî]]
* [[bêcireyî]]
* [[bicire]]
* [[biciretî]]
* [[bicireyî]]
* [[ciredar]]
* [[bêciredarî]]
* [[cirekir]]
* [[cirekirî]]
}}
==== Etîmolojî ====
Ji {{qertaf|ku|cir|-e}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|جروبحث}}
* {{Z|en}}: {{W+|en|strife}}, {{W+|en|arguing}}
{{werger-bin}}
ki570x8h40b5pmzjsy63vox0bml7lli
banehî
0
11255
6328793
6297908
2026-08-11T00:27:13Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328793
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[man]]a [[dem]]ek [[kurt]] li [[der]]ekê, xasme li [[çol]]ê
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[baneyî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|banehî}}
{{rengdêr|ku}}
# [[ne berdewam]], [[ne herdemî]], ne [[hertimî]]
#* {{jêder-malper|ku|jêgirtin=Qet nedihat gund û nehyeyê her di odeyeka wî xaniyê '''banehî''' yê ji kevr û axê yê birayê xwe de dima...|nivîskar=Mihemed Evdila|sernav=Mijara nivîsandinê|malper=Nefel.com|sal=9/2005}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
qwfmxpw6fp98n31s148gv0hlh25bbvi
hostes
0
11272
6328988
6308841
2026-08-11T11:51:19Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328988
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[jin]]a [[mazûmvan]], [[jin]]a mirov lê bûne [[mêvan]], [[kabanî]], [[bermalî]], [[xwedî|xwediya]] malê
#* {{bêmînak|ku}}
# [[jin]]ên [[xizmetkar]] di [[firoke]]yên [[nefer]]î de
#* {{jêder-malper|ku|jêgirtin=Di wê gavê de hûn ê bibînin ku teyareya we gihaye ber perê ezmên û '''hostesên''' karxezalî bi lotik dibezin vî serî û wî serî.|nivîskar=Enwer Karahan|sernav=Rêwîtiyeke kin|malper=Netkurd.com|sal=9/2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[ostes]]
==== Jê ====
* [[hostesî]]
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|hostess}} ji {{ji|enm|ku|hostesse}}, ji {{ji|frm|ku|hostesse}}, ji {{ji|fro|en|ostesce}}, ji {{g|fro|oste|w=[[mazûvan]]}} + {{g|fro|-esce|w=paşgira [[mê]]}}.
==== Bide ber ====
* [[host]]
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W|tr|hostes}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# hostes
#* {{bêmînak|tr}}
# [[mêvandar]], [[mihmandar]]
#* {{bêmînak|tr}}
tkf9q3sk8sa8a0jeeq9yxptbjtdr7d5
dahênan
0
11407
6328898
6304518
2026-08-11T11:25:25Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328898
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
[[Wêne:SteamEngine_Boulton&Watt_1784.png|thumb|250px|Makîneya [[vapor]]an ku sedsala 18an hatiye dahênan.]]
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[îcad]], [[keşf]], [[îcadkirin]], [[keşfkirin]]
#* {{jêder-malper|ku|jêgirtin=Dr. Azad Necar ku ji navçeya Zaxo ya Başûrê Kurdistanê ye, di warê tibê de '''dahênaneke''' mezin kiriye û dilekî çêkirî pêk aniye.|malper=https://www.kurdistan24.net/kmr/|sal=2/2021|sernav=Bijîşkê Kurd ku bi dahênana xwe serdemeke nû vedike: Dr. Azad Necar|url=https://www.kurdistan24.net/kmr/story/51134-Bij%C3%AE%C5%9Fk%C3%AA-Kurd-ku-bi-dah%C3%AAnana-xwe-serdemeke-n%C3%BB-vedike:-Dr.-Azad-Necar}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|داهێنان}}
==== Formên alternatîv ====
* [[dahînan]]
==== Etîmolojî ====
Ji {{deyn|ckb|ku|داهێنان}}, binêre: [[da-]] + [[hênan]].
==== Bide ber ====
* [[rahênan]]
==== Têkildarî ====
*[[dahêner]]
*[[dahênerî]]
*[[dahênayî]]
*[[dahênanî]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|uitvinding}}
* {{Z|sq}}: {{W+|sq|shpikje|m}}
* {{Z|de}}: {{W+|de|Erfindung|m}}
* {{Z|ast}}: {{W-|ast|invención|m}}, {{W-|ast|inventu|n}}
* {{Z|az}}: {{W+|az|ixtira}}
* {{Z|be}}: {{W-|be|вынахо́дства|nt}}
* {{Z|bn}}: {{W+|bn|আবিষ্কার}}
* {{Z|bg}}: {{W+|bg|изобрете́ние|nt}}, {{W+|bg|откритие|nt}}
* {{Z|my}}: {{W-|my|တီထွင်မှု}}
* {{Z|cs}}: {{W+|cs|vynález|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|發明|tr=fāmíng}}
* {{Z|da}}: {{W-|da|opfindelse}}
* {{Z|id}}: {{W+|id|temuan}}
* {{Z|ar}}: {{W-|ar|اِخْتِرَاع|n}}
* {{Z|hy}}: {{W+|hy|գյուտ|sc=Armn}}
* {{Z|eo}}: {{W+|eo|invento}}
* {{Z|et}}: {{W-|et|leiutis}}
* {{Z|fa}}: {{W+|fa|اختراع|tr=exterâ'}}
* {{Z|fi}}: {{W+|fi|keksintö}}
* {{Z|fr}}: {{W+|fr|invention|m}}
* {{Z|gl}}: {{W+|gl|invención|m}}, {{W-|gl|invento|n}}
* {{Z|ka}}: {{W-|ka|გამოგონებისა|sc=Geor}}
* {{Z|hi}}: {{W+|hi|आविष्कार}}
* {{Z|nl}}: {{W+|nl|uitvinding|m}}
* {{Z|he}}: {{W-|he|הַמְצָאָה|tr=hamtsa'á|m}}
* {{Z|io}}: {{W+|io|inventuro}}
* {{Z|ang}}: {{W-|ang|orþanc|n}}
* {{Z|en}}: {{W+|en|invention}}
* {{Z|ga}}: {{W-|ga|aireagán|n}}
* {{Z|it}}: {{W+|it|invenzione|m}}
* {{Z|is}}: {{W-|is|uppfinning|m}}
* {{Z|ja}}: {{W+|ja|発明|tr=はつめい, hatsumei}}
* {{Z|ca}}: {{W+|ca|invenció|m}}, {{W+|ca|invent|n}}
* {{Z|ko}}: {{W-|ko|발명(發明)}}
* {{Z|lv}}: {{W-|lv|izgudrojums|n}}
* {{Z|lt}}: {{W-|lt|išradimas|n}}
* {{Z|lb}}: {{W-|lb|Erfindung|m}}
* {{Z|mk}}: {{W-|mk|пронајдок|n}}, {{W-|mk|изум|n}}
* {{Z|mt}}: {{W-|mt|invenzjoni|m}}
* {{Z|hu}}: {{W+|hu|találmány}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|oppfinnelse}}
* {{Z|ug}}: {{W-|ug|كەشپ}}, {{W-|ug|كەشپىيات}}
* {{Z|uz}}: {{W+|uz|ixtiro}}
* {{Z|pl}}: {{W+|pl|wynalazek|n}}
* {{Z|pt}}: {{W+|pt|invenção|m}}
* {{Z|ro}}: {{W+|ro|invenție|m}}
* {{Z|ru}}: {{W+|ru|изобрете́ние|nt}}
* {{Z|sh}}:
*: Kirîlî {{W-|sh|изум|n}}
*: Latînî {{W+|sh|izum|n}}
* {{Z|sk}}: {{W-|sk|vynález|n}}
* {{Z|sl}}: {{W+|sl|izum|n}}
* {{Z|es}}: {{W+|es|invención|m}}, {{W+|es|invento|n}}
* {{Z|sv}}: {{W+|sv|uppfinning|g}}
* {{Z|tg}}: {{W-|tg|ихтироъ}}
* {{Z|tl}}: {{W-|tl|imbensiyon}}
* {{Z|th}}: {{W-|th|สิ่งประดิษฐ์}}
* {{Z|te}}: {{W+|te|కల్పన}}
* {{Z|tr}}: {{W+|tr|buluş}}, {{W+|tr|icat}}
* {{Z|bo}}: {{W-|bo|གསར་བཟོ}}
* {{Z|ur}}: {{W-|ur|اِیجاد|tr=ījād}}, {{W-|ur|اِیجادات|tr=ījādāt}}
* {{Z|uk}}: {{W-|uk|ви́нахід|n}}
* {{Z|vi}}: {{W+|vi|phát minh}} ({{W-|vi|發明|sc=Hani}})
* {{Z|vo}}: {{W+|vo|datuvot}}
* {{Z|cy}}: {{W+|cy|dyfais|m}}
* {{Z|km}}: {{W-|km|ប្រឌិត|tr=prɑdɨt|sc=Khmr}}, {{W-|km|ការប្រឌិត|tr=kaa prɑdɨt|sc=Khmr}}, {{W+|km|តក្កកម្ម}}
* {{Z|el}}: {{W+|el|εφεύρεση|m}}
*: {{Z|grc}}: {{W-|grc|εὕρημα|nt}}
{{werger-bin}}
hgst6oglrk09wyusw223492v5p8rhor
6328925
6328898
2026-08-11T11:41:18Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328925
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
[[Wêne:SteamEngine_Boulton&Watt_1784.png|thumb|250px|Makîneya [[vapor]]an ku sedsala 18an hatiye dahênan.]]
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[îcad]], [[keşf]], [[îcadkirin]], [[keşfkirin]]
#* {{jêder-malper|ku|jêgirtin=Dr. Azad Necar ku ji navçeya Zaxo ya Başûrê Kurdistanê ye, di warê tibê de '''dahênaneke''' mezin kiriye û dilekî çêkirî pêk aniye.|malper=https://www.kurdistan24.net/kmr/|sal=2/2021|sernav=Bijîşkê Kurd ku bi dahênana xwe serdemeke nû vedike: Dr. Azad Necar|url=https://www.kurdistan24.net/kmr/story/51134-Bij%C3%AE%C5%9Fk%C3%AA-Kurd-ku-bi-dah%C3%AAnana-xwe-serdemeke-n%C3%BB-vedike:-Dr.-Azad-Necar}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|داهێنان}}
==== Formên alternatîv ====
* [[dahînan]]
==== Têkildar ====
*[[dahêner]]
*[[dahênerî]]
*[[dahênayî]]
*[[dahênanî]]
==== Etîmolojî ====
Ji {{deyn|ckb|ku|داهێنان}}, binêre: [[da-]] + [[hênan]].
==== Bide ber ====
* [[rahênan]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|uitvinding}}
* {{Z|sq}}: {{W+|sq|shpikje|m}}
* {{Z|de}}: {{W+|de|Erfindung|m}}
* {{Z|ast}}: {{W-|ast|invención|m}}, {{W-|ast|inventu|n}}
* {{Z|az}}: {{W+|az|ixtira}}
* {{Z|be}}: {{W-|be|вынахо́дства|nt}}
* {{Z|bn}}: {{W+|bn|আবিষ্কার}}
* {{Z|bg}}: {{W+|bg|изобрете́ние|nt}}, {{W+|bg|откритие|nt}}
* {{Z|my}}: {{W-|my|တီထွင်မှု}}
* {{Z|cs}}: {{W+|cs|vynález|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|發明|tr=fāmíng}}
* {{Z|da}}: {{W-|da|opfindelse}}
* {{Z|id}}: {{W+|id|temuan}}
* {{Z|ar}}: {{W-|ar|اِخْتِرَاع|n}}
* {{Z|hy}}: {{W+|hy|գյուտ|sc=Armn}}
* {{Z|eo}}: {{W+|eo|invento}}
* {{Z|et}}: {{W-|et|leiutis}}
* {{Z|fa}}: {{W+|fa|اختراع|tr=exterâ'}}
* {{Z|fi}}: {{W+|fi|keksintö}}
* {{Z|fr}}: {{W+|fr|invention|m}}
* {{Z|gl}}: {{W+|gl|invención|m}}, {{W-|gl|invento|n}}
* {{Z|ka}}: {{W-|ka|გამოგონებისა|sc=Geor}}
* {{Z|hi}}: {{W+|hi|आविष्कार}}
* {{Z|nl}}: {{W+|nl|uitvinding|m}}
* {{Z|he}}: {{W-|he|הַמְצָאָה|tr=hamtsa'á|m}}
* {{Z|io}}: {{W+|io|inventuro}}
* {{Z|ang}}: {{W-|ang|orþanc|n}}
* {{Z|en}}: {{W+|en|invention}}
* {{Z|ga}}: {{W-|ga|aireagán|n}}
* {{Z|it}}: {{W+|it|invenzione|m}}
* {{Z|is}}: {{W-|is|uppfinning|m}}
* {{Z|ja}}: {{W+|ja|発明|tr=はつめい, hatsumei}}
* {{Z|ca}}: {{W+|ca|invenció|m}}, {{W+|ca|invent|n}}
* {{Z|ko}}: {{W-|ko|발명(發明)}}
* {{Z|lv}}: {{W-|lv|izgudrojums|n}}
* {{Z|lt}}: {{W-|lt|išradimas|n}}
* {{Z|lb}}: {{W-|lb|Erfindung|m}}
* {{Z|mk}}: {{W-|mk|пронајдок|n}}, {{W-|mk|изум|n}}
* {{Z|mt}}: {{W-|mt|invenzjoni|m}}
* {{Z|hu}}: {{W+|hu|találmány}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|oppfinnelse}}
* {{Z|ug}}: {{W-|ug|كەشپ}}, {{W-|ug|كەشپىيات}}
* {{Z|uz}}: {{W+|uz|ixtiro}}
* {{Z|pl}}: {{W+|pl|wynalazek|n}}
* {{Z|pt}}: {{W+|pt|invenção|m}}
* {{Z|ro}}: {{W+|ro|invenție|m}}
* {{Z|ru}}: {{W+|ru|изобрете́ние|nt}}
* {{Z|sh}}:
*: Kirîlî {{W-|sh|изум|n}}
*: Latînî {{W+|sh|izum|n}}
* {{Z|sk}}: {{W-|sk|vynález|n}}
* {{Z|sl}}: {{W+|sl|izum|n}}
* {{Z|es}}: {{W+|es|invención|m}}, {{W+|es|invento|n}}
* {{Z|sv}}: {{W+|sv|uppfinning|g}}
* {{Z|tg}}: {{W-|tg|ихтироъ}}
* {{Z|tl}}: {{W-|tl|imbensiyon}}
* {{Z|th}}: {{W-|th|สิ่งประดิษฐ์}}
* {{Z|te}}: {{W+|te|కల్పన}}
* {{Z|tr}}: {{W+|tr|buluş}}, {{W+|tr|icat}}
* {{Z|bo}}: {{W-|bo|གསར་བཟོ}}
* {{Z|ur}}: {{W-|ur|اِیجاد|tr=ījād}}, {{W-|ur|اِیجادات|tr=ījādāt}}
* {{Z|uk}}: {{W-|uk|ви́нахід|n}}
* {{Z|vi}}: {{W+|vi|phát minh}} ({{W-|vi|發明|sc=Hani}})
* {{Z|vo}}: {{W+|vo|datuvot}}
* {{Z|cy}}: {{W+|cy|dyfais|m}}
* {{Z|km}}: {{W-|km|ប្រឌិត|tr=prɑdɨt|sc=Khmr}}, {{W-|km|ការប្រឌិត|tr=kaa prɑdɨt|sc=Khmr}}, {{W+|km|តក្កកម្ម}}
* {{Z|el}}: {{W+|el|εφεύρεση|m}}
*: {{Z|grc}}: {{W-|grc|εὕρημα|nt}}
{{werger-bin}}
dtsozplks7be2sfdjnrdv1wmjq2wf7q
irase
0
11918
6328991
6309198
2026-08-11T11:51:25Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328991
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Cihê tişt lê tên [[kirîn]] û [[firotin]].
#: {{hevmaneyên peyvê|ku|bazar|sûk|çarşû|firoşgeh}}
#* {{jêder-malper|ku|jêgirtin='''Irase''' sibê zû vedibû. Piştî nimêja sibê tim dikandarî dihatin irasê.|nivîskar=Kazım Özdemir|sernav=Newala Qesaba|malper=Navkurd.de|sal=2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Formên alternatîv ====
* {{g|ku|eras}}
* {{g|ku|erase}}
* {{g|ku|iras}}
* {{g|ku|îras}}
* {{g|ku|îrase}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W|tr|hâl}}
{{werger-bin}}
hvyidweiv9xioe9jzu0fk08hl6hzfte
naşî
0
12213
6329072
6130377
2026-08-11T11:54:19Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329072
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[xişîm]], [[cahil]], [[nefam]], [[negihiştî]], [[netêgihiştî]], [[nezan]], [[kawik]]
#* {{bêmînak|ku}}
# [[saf]], [[xav]], [[dilsaf]], [[dilpak]], [[dilpaqij]]
#* {{jêder-kovar|ku|jêgirtin=Ev sewtê sotî, janeke teze, '''naşî''' û saf, ji nav cîgereke paqij derdiket û li çiyan belav dibû.|kovar=MEHNAME|sernav=Huzna|nivîskar=Roşan Lezgîn|hejmar=35|sal=2002}}
#* {{jêder-pirtûk|ku|jêgirtin=Sibetirê kinc û cilê xwe; pênûş lenûskê xwe û hinek amûrê xwarin û vexwarinê hilda, ji sukê jî hinek pêwistiyên din standin, derê mala xwe dada, bi coşeke '''naşî''', min berê xwe da rawestgehê.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=80|isbn=978-605-5585-41-9}}
# [[neşet]][[girtî]], [[peydabûyî]]
#* {{bêmînak|ku}}
==== Etîmolojî ====
Ji {{ji|ar|ku|ناشي|tr=naşî}}.
==== Jê ====
* [[naşîtî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|naiv}}, {{W+|de|ungebildet}}
* {{Z|da}}: {{W+|da|naiv}}
* {{Z|ar}}: {{W|ar|بسيط|guman=erê}}
* {{Z|eo}}: {{W+|eo|naiva}}
* {{Z|fa}}: {{W+|fa|ناشی}}, {{W+|fa|بی تجربه}}
* {{Z|fo}}: {{W+|fo|góðvarin}}
* {{Z|fi}}: {{W+|fi|lapsellinen}}, {{W+|fi|naiivi}}
* {{Z|fr}}: {{W|fr|naïf|m}}, {{W|fr|naïve|f}}, {{W+|fr|candide}}
* {{Z|nl}}: {{W+|nl|argeloos}}, {{W+|nl|naïef}}, {{W+|nl|ongekunsteld}}, {{W+|nl|onnozel}}
* {{Z|en}}: {{W+|en|naive}}, {{W+|en|naïf}}, {{W+|en|naïve}}, {{W+|en|ingenuous}}, {{W+|en|innocent}}, {{W+|en|simple}}, {{W+|en|candide}}, {{W+|en|childish}}, {{W+|en|inadvertent|guman=erê}}, {{W+|en|mindless|guman=erê}}, {{W|en|greenhorn|guman=erê}}
* {{Z|ca}}: {{W+|ca|càndid}}, {{W+|ca|candorós}}, {{W+|ca|ingenu}}
* {{Z|pt}}: {{W+|pt|cândido}}, {{W+|pt|ingênuo}}
* {{Z|es}}: {{W+|es|ingenuo}}, {{W+|es|cándido}}
* {{Z|sv}}: {{W+|sv|naiv}}
* {{Z|tr}}: {{W+|tr|budala}}, {{W+|tr|saf}}, {{W+|tr|avanak}}, {{W+|tr|bön}}, {{W+|tr|acemi}}, {{W+|tr|cahil}}, {{W+|tr|tecrübesiz}}, {{W+|tr|toy}}, {{W+|tr|çaylak}}, {{W+|tr|tor}}, {{W|tr|acemi çaylak|guman=erê}}, {{W|tr|götü boklu|guman=erê}}, {{W|tr|tecrübesiz genç|guman=erê}}
* {{Z|el}}: {{W+|el|αγαθός}}
{{werger-bin}}
hskhnmk4zpfq0fcyijfwp464fv7ifkt
bilîn
0
13185
6328813
6300591
2026-08-11T00:28:54Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328813
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|bilîn|form=negerguhêz|niha=bil|borî=bilî|borî2=biliya}}
{{lêker|ku|c=x-ngh}}
# Li ser [[kar]]ekî [[sekinîn]] û wî karî kirin.
#: {{hevmaneyên peyvê|ku|mijûl bûn|pê rabûn|konsentre bûn|pê daketin|lê xebitîn}}
#* {{jêder|ku|jêgirtin=Dîlan çentê xwe ji pişta xwe kir, li bin darê rûnişt û bi cebirandina ling û baskê kevokê '''biliya'''.|{{Jêgirtin/Firat Cewerî/Girtî}}}}
#* {{jêder-malper|ku|jêgirtin=Bi vê firsendê me xwest ku em ji bo we xwendevanan havpeyivînekê pê re bikin, hîn bibin bê ka ew nuha çi dike bi çi '''dibile'''.|nivîskar=Sîdar Yigit|sernav=Hevpeyivîn bi Xero Abbas re|url=https://www.kurdishmagazin.com/km/hevpeyivin-bi-xero-abbas-re.html|malper=kurdishmagazin.com|sal=2006}}
#* {{jêder-kovar|ku|jêgirtin=Her mijûliyên ku insan jê hez dikin û '''dibilin''' divê ji kar bên hesabkirin.|kovar=Nûbihar|sernav=CIVAKA IT Û PIRSA KURDÎ (2)|url=http://bnk.institutkurde.org/images/pdf/BX65EZS2W4.pdf|nivîskar=Mûrad Ciwan|hejmar=26|sal=1998|rûpel=23}}
# {{f|ku|bi taybetî [[deng]]}} [[qut bûn]], [[vebirîn]], [[mit bûn]], [[birîn]]
#* {{jêder|ku|jêgirtin=Hem ji ber pêdaketina hevalan hem jî ji ber vexwarina ji esir ve, Ferda pir dilzîz bûbû û bi wê dilzîziyê dest bi axaftineke kurt kir. Deng ji her kesî '''biliya'''.|{{Jêgirtin/Firat Cewerî/Payiza Dereng|weşanxane={{w|Avesta}}|sal=2014|r=19}}}}
#* {{jêder-malper|ku|jêgirtin=Ji ber çavê min windabû û<br>Deng jî ji dor min '''biliya'''<br>Ez bûm wek rêwiyekî<br>Kerr û gêj û lal.|nivîskar=Konê Reş|sernav=Spehiyê!|url=https://www.helbestakurdi.com/helbest/kone-res--spehiye-.html|malper=helbestakurdi.com}}
#* {{jêder-kovar|ku|jêgirtin=Wê sibehê em gihştin dibistanê, Emar ji xwe rabibû, me siloganên partiya bass bi dengê bilind gotin, deng ji şaxên daran, ji civîk û tilûran '''biliya''', her hinek ji wan bi deverekê ve çûn.|kovar=Kurdistan|sernav=Terora mamosteyê me|nivîskar=Idrîs Hiso|hejmar=174|rûpel=3|sal=2020|url=https://issuu.com/pdksp/docs/kurdi-174}}
#* {{jêder|ku|jêgirtin=Destê sibehê dinya hebekî hênik bû deng ji kermêşan bilîya, ez cardin rabûm çûm ketim nava nivînên xwe, ji xwe ra raketim.|{{Jêgirtin/Sadiq Ûskan/Şampaz}}}}
==== Bi alfabeyên din ====
* {{ku-ar|بلین}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|bilan
|bilhan
|bilhîn
|bilihan
|bilihîn
|biliyan
|bilîyan
|bilyan
}}
==== Nêzîk ====
* {{g|ku|birîn}}
* {{g|ku|birîn}}
* {{g|ku|biriyan}}
==== Jê ====
* {{g|ku|bilî}}
* {{g|ku|biliyayî}}
==== Têkildar ====
* {{g|ku|bilandin}}
==== Etîmolojî ====
Ji berê ''{{jinûvesazî|[[werj-]]}}'', (rz/rj/rd [[gelek caran]] dibin /l/ - /w/ [[gelek caran]] dibin /b/) ji [[proto-îranî|pêş-îranîkî]] {{g|ku|ira-pro|*warj|tr=werc-|[[kar]], [[xebat]]}}, ji [[pêş]]-[[hind]][[û]][[îranî]]kî {{g|ku|iir-pro|*warȷ́-}} ji [[proto-hindûewropî|pêş-hindû-ewropî]] {{g|ku|ine-pro|*werǵ-|w=[[kirin]]}}. [[hevreh|Hevreha]] [[farisî]] {{g|fa|ورزیدن|tr=werzîden}} (>kurdî ''[[werziş]]''), [[partî|pehlewî]] {{g|xpr|𐫇𐫡𐫝|tr=werj|sc=Mani|w=[[hêz]]a [[mucîzewî]]; [[micîze]], [[derhoze]]}}, [[talişî]] {{g|tly|varzîniye|w=[[hevîr kirin]], [[strandin]], [[sist kirin]]}}, [[pehlewî|farisiya navîn]]{{g|pal|tr=wlc|ts=werz|w=[[xebat]], [[çandin]], [[cotyarî]]; [[hêz]]a [[mucîzewî]]; [[micîze]]}} (>kurdî ''[[werz]]''), [[avestayî|evistayî]] {{g|ae|𐬬𐬆𐬭𐬆𐬰|tr=weriz-|w=kirin, kar}} ingilîzî {{g|en|work}} û {{g|en|wrought}}, elmanî {{g|de|wirken}}, yewnanî {{g|el|ku|ἔργον|tr=êrgon|w=kar}} (>kurdî ''[[erk]]'').
==== Werger ====
{{werger-ser|bi tiştekî mijûl bûn|stûn=1}}
* {{Z|en}}: {{W+|en|engage}} (in sth)
* {{Z|tr}}: {{W+|tr|iştigal etmek}}, {{W+|tr|uğraşmak}}
{{werger-bin}}
{{werger-ser|deng qut bûn|stûn=1}}
* {{Z|en}}: {{W-|en|go silent}}
* {{Z|tr}}: {{W+|tr|kesilmek}}
{{werger-bin}}
{{werger-ser|Wergerên ku divê bên kontrolkirin|stûn=1}}
* {{Z|fa}}: {{W+|fa|مشغول شدن}}, {{W-|fa|سرگرم شدن}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mane?|ku}}
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|uğraşma}}, {{W+|tr|uğraşı}}, {{W+|tr|iştigal}}
{{werger-bin}}
aaj6ieb6p4vk6j0ibuqf8vf7gleo5uw
çik bûn
0
13199
6328888
5895345
2026-08-11T11:24:46Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328888
wikitext
text/x-wiki
{{bnr-n|çikbûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çik bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=çik|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# [[bêhnteng|Bêhnteng]] bûn, [[baş]] ne[[hatin]] û [[çûn]], [[nebaş]] bûn, [[henase]] bi [[zehmet]] kêşan.
#* {{bêmînak|ku}}
# (Av an robar) Hişk bûn, [[ziwa bûn]].
#: {{hevmane|ku|çikîn|miçiqîn}}
#* {{jêder-malper|ku|jêgirtin=Yek ji van cîhên xweş Avrêja Kanîspî ye. Taybetmendîya wê ya balkêş ew e ku ava Kanîspîyê di demsala buharê de der dibe û demsala Payîzê de jî '''çik dibe'''.|nivîskar=Arif Aslan|sernav=Kanîspî ya li Şaxa Wanê Û Taybetmendîyên Wê|url=https://www.dengeamerika.com/a/kan%C3%AEsp%C3%AE-wan%C3%AA/6647278.html|urlya-arşîvê=https://web.archive.org/web/20230328014927/https://www.dengeamerika.com/a/kan%C3%AEsp%C3%AE-wan%C3%AA/6647278.html|dîrok=2022-07-06}}
# Bi jor ve, bi awayekî [[rast]] û [[çik]] sekinîn.
#* {{jêder-malper|ku|jêgirtin=Carcaran di nav herîyê da '''çik dibe''', carcaran jî bi kokekî bîyanî va dizeliqe û diliqî dibe…|nivîskar=Ikram Oguz|sernav=Xewn û Xeyalên Barzanî…|url=https://ikram-oguz.niviskar.org/xewn-u-xeyalen-barzani.html|urlya-arşîvê=https://web.archive.org/web/20230328022959/https://ikram-oguz.niviskar.org/xewn-u-xeyalen-barzani.html|dîrok=2017-09-21}}
==== Bi alfabeyên din ====
* {{ku-ar|چک بوون}}
==== Etîmolojî ====
Ji {{heve|ku|çik|bûn}}.
==== Werger ====
{{werger-ser|bêhnteng bûn}}
* {{Z|ar}}: {{W-|ar|لهث}}
* {{Z|en}}: {{W-|en|breath with difficulty}}, {{W-|en|be out of breath}}
* {{Z|tr}}: {{W-|tr|nefesi kesilmek}}
{{werger-bin}}
{{werger-ser|hişk bûn, ziwa bûn}}
* {{Z|en}}: [[to]] {{W+|en|dry up}}, [[to]] [[become]] {{W+|en|dry}}
* {{Z|tr}}: {{W+|tr|kurumak}}
{{werger-bin}}
{{werger-ser|bi awayekî rast sekinîn}}
* {{Z|en}}: [[to]] [[stand]] {{W+|en|upright}}
* {{Z|tr}}: {{W+|tr|dikelmek}}, {{W+|tr|dikilmek}}
{{werger-bin}}
dv4cb601ffga0uy6zm440i3dejova0c
îdea
0
13683
6328992
6322333
2026-08-11T11:51:27Z
Balyozbot
7867
/* Navdêr 1 */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328992
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# [[raman]], [[fikir]], [[hizir]], [[pûnij]]
#* {{jêder-malper|ku|jêgirtin=Hema piştî sazbûna xwe komîtêya “Xoybûn“ destbi karê hevgirtina kurdan li dor '''îdêya''' Kurdistana serbixwe kir.|nivîskar=Têmûrê Xelîl|sernav=Peywendiyên Xoybûnê û Daşnaksûtyûnê|malper=Nefel.com|sal=9/2010}}
#* {{jêder-kovar|ku|jêgirtin=Pêvajoya leşkerî û siyayî a tevgera "Reconquîsta" ku wekî "'''îdeaya''' megalî" ya Spaniyan dihat dîtinû li ser ji nû ve bidestxistina Endilusê hatibû avakirin çû serî.|kovar=Mukaddime|sernav=Bişaftina Misilmanên Endilusê Piştî Dagirtina Girnatayê|url=https://dergipark.org.tr/en/download/article-file/184121|nivîskar=Feridun BİLGİN|hejmar=2|sal=2010|rûpel=54}}
#* {{jêder-malper|ku|jêgirtin=Di felsefeya ehlaqê ya Platon de navê '''îdeaya''' başiyê ye, ku wekî îdeaya herî raser û nirxbilind e. Meriv dikare bibêje ku di felsefeya Platon de Îdeaya başiyê, mîna sebebê hebûna hemû heyînan hatiye bikaranîn.|nivîskar=Ali Gurdilî|sernav=Agathon|url=https://feylesofphilosophia.blogspot.com/2019/01/agathon.html|malper=feylesofphilosophia.blogspot.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin='''Îdeaya''' Wê, Wê Bibe Biryarbun Û Hişmendiya Tekoşîna Me.|sernav=Îdeaya Wê, Wê Bibe Biryarbun Û Hişmendiya Tekoşîna Me.|url=http://hezenparastin.info/ku/index.php?option=com_content&view=article&id=3097%3Aideaya-we-we-bibe-biryarbun-u-himendiya-tekoina-me&catid=43&Itemid=254|malper=hezenparastin.info|sal=2013}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[îde]]
* [[îdê]]
* [[îdêa]]
==== Jê ====
{{stûn|
* [[îdeal]]
* [[îdealî]]
* [[îdealîst]]
* [[îdealîstî]]
* [[îdealîzm]]
* [[îdeolog]]
* [[îdeologîst]]
* [[îdeologîstî]]
* [[îdeolojî]]
* [[îdeolojîst]]
* [[îdeolojîzm]]
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[îdia]]
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|ایده}}
* {{Z|en}}: {{W+|en|idea}}
* {{Z|tr}}: {{W+|tr|fikir}}, {{W+|tr|ide}}, {{W+|tr|düşün}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{guherto|îdia}}
diwoj5l0t2jrlru9qkc9eedbwa5mt7x
hutik
0
13864
6328989
6308900
2026-08-11T11:51:21Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328989
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kulm]], [[mist]], [[gurmiç]], [[boks]], [[dest]] (bi taybetî bo [[lêdan]]ê)
#: {{nm|ku|'''Hutikek''' lê da, xwîn di dev û difinê re hat.}}
#* {{jêder|ku|jêgirtin=Ev hevalê ku me cara pêşî bi hev re lingên xwe li topê xist, ê ku me di eynî demê de porê xwe şeh kir û ji keçikan re fîkand, ê ku me demekêbi hev re li ser dîwaran slagon nivîsandin, ê ku me bi hev re '''hutikên''' xwe li ba kirinû li dijî zilmê qîriyan, ê ku me bi hev re kitêb ne ku xwendin, lê daqurtandin û ê ku em ji ber bela kitêban li vî kujê cîhanê bi cih bûn, ew niha li ser riya vegera welêt e.|{{Jêgirtin/Firat Cewerî/Payiza Dereng|weşanxane={{w|Avesta}}|sal=2014|r=13}}}}
#* {{jêder-malper|ku|jêgirtin=Ji bo çi min evqas behsa desthilatdarîyê kir, çimkî romana Mihemed Mukrî a bi navê ‘Segwer’ (Reyîn) '''hutika''' xwe ya bindestîyê li maseya serdestîyê xistiye û mase hejandiye.|nivîskar=Çorê Arda|sernav=Desthilatdarî nêr e|url=https://xwebun.org/desthilatdari-ner-e/|malper=xwebun.org|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|himik
|himk
|humik
|humuk
|hitik
|hitk
|hutk
|ḧimik
|ḧimk
|ḧumik
|ḧumuk
|ḧitik
|ḧitk
|ḧutik
|ḧutk
}}
==== Jê ====
* hutik [[lê dan]]
* hutik pê ketin
* hutik [[xwarin]]: hutik pê ketin
==== Têkildar ====
* {{g|ku|huçik}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* {{g|ku|hetik}}
* {{g|ku|kuçik}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|کتک}}, {{W+|fa|مشت}}
* {{Z|en}}: {{W+|en|box}}, {{W|en|punchin|guman=erê}}
* {{Z|tr}}: {{W+|tr|kötek}}, {{W+|tr|patak}}, {{W+|tr|yumruk}}
{{werger-bin}}
lrat6u7wm742t4nd2mmf7zaszai259g
bir
0
13916
6328817
6301189
2026-08-11T00:29:02Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328817
wikitext
text/x-wiki
{{bnr-h|bir|bîr|-bir|-bir-}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}} {{r-ya req}}
* {{beş|Navdêr}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-bir.wav|dever=Bidlîs}}
* {{beş|Formeke lêkerê}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-bir (Formeke lêkerê).wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]], [[grûp]], [[kerî]], [[celeb]], [[ref]], [[revde]]<br>[[çendîn]] kes yan tişt bi hev re, [[gelek]] kes yan tişt li gel hev
#* {{jêder-malper|ku|jêgirtin=Di van dused salên dawî de rêya gelek ewropiyan ji welatê me -bi gotina wan welatê bejî- derbas bû. '''Birek''' rojhilatnas, zimanzan, mîsyoner, sîxur, tucar û koleksîyoneran dewsa piyên xwe li ser axa me jî çêkirin.|nivîskar=Samî Hêzil|sernav=Karah Kaplan|url=https://xwebun.org/karah-kaplan/|malper=xwebun.org|sal=2020}}
#* {{jêder-pirtûk|ku|jêgirtin=Romana wî ya yekemin Şivanê Kurd ku li Rewanê çap bû, 1935, '''birek''' ji jiyana wî taswîr dike.|nivîskar=Mehmed Uzun|sernav=Destpêka edebiyata Kurdî|weşanxane=Ithaki Publishing|sal=2007|rûpel=65|isbn=9789752733695}}
# [[cûn]], [[core]], [[çeşîd]], [[teşîd]], [[texlîd]]
# [[klip]]
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|بڕ}}
==== Formên alternatîv ====
* [[birr]] (1)
==== Nêzîk ====
* [[wevde]]
==== Jê ====
* [[birî]]
==== Etîmolojî ====
{{nyz|ku}} lê dikare ji zimanekî [[samî]] be, bo nimûne ji {{ji|arc|ku|ܡܪܥܝܬܐ}} (mer'iθa: [[bir]], [[celeb]], [[kerî]]) yan ji {{ji|ar|ku|مرعى}} (mer'a), [[hevreh]]a îbrî [[מרעה]] (mir'ê), hemû ji rehê r-'- ([[çerîn]]). Bo guherîna M bi B bide ber [[bizmar]], [[busirman]], [[bexdenos]] ji "mismar, [[misilman|musilman]], [[mexdenos]]".
==== Bide ber ====
* [[revend]]
==== Werger ====
{{werger-ser|?}}
* {{Z|ar}}: {{W-|ar|سك|guman=erê}}, {{W-|ar|نعث|guman=erê}}
* {{Z|en}}: {{W+|en|flock}}, {{W+|en|herd}}, {{W+|en|group}}, {{W+|en|cutter|guman=erê}}, {{W+|en|horde|guman=erê}}, {{W+|en|host|guman=erê}}, {{W+|en|passel|guman=erê}}, {{W+|en|posse|guman=erê}}, {{W+|en|edgy|guman=erê}}, {{W+|en|intercurrent|guman=erê}}, {{W+|en|carnassial|guman=erê}}
{{werger-bin}}
{{werger-ser|?}}
* {{Z|de}}: {{W+|de|Abschnitt|m}}
* {{Z|fa}}: {{W+|fa|فصل}}, {{W+|fa|تکه}}, {{W+|fa|قسم}}
* {{Z|en}}: {{W+|en|segment}}
* {{Z|tr}}: {{W+|tr|aksam}}, {{W+|tr|bölüm}}, {{W+|tr|grup}}, {{W+|tr|sürü}}, {{W+|tr|şube}}, {{W-|tr|koyun ve keçi sürüsü}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# {{ku-raboriya-sade|birin|yekem|yekjimar}}
# {{ku-raboriya-sade|birin|duyem|yekjimar}}
# {{ku-raboriya-sade|birin|sêyem|yekjimar}}
# {{ku-raboriya-sade|birin|yekem|pirrjimar}}
# {{ku-raboriya-sade|birin|duyem|pirrjimar}}
# {{ku-raboriya-sade|birin|sêyem|pirrjimar}}
== {{ziman|az}} ==
=== Bilêvkirin ===
* bîr
* {{deng|az|LL-Q9292 (aze)-Azerbaijani audiorecordings-bir.wav|Deng|dever=}}
* {{deng|az|LL-Q9292 (aze)-Zardabi Bakuvi-bir.wav|Deng|dever=Bakû, Azerbaycan}}
=== Hejmar ===
{{hejmar|az}}
# [[yek]], [[1]], [[I]]
==== Binêre herwiha ====
{{lîste:hejmar/az}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Basak-bir.wav|Deng|dever=Tirkiye}}
* {{deng|tr|LL-Q256 (tur)-ToprakM-bir.wav|Deng|dever=}}
* {{deng|tr|LL-Q256 (tur)-Veravi95-bir.wav|Deng|dever=}}
=== Hejmar ===
{{hejmar|tr}}
# [[yek]], [[êk]], [[1]], [[I]]
==== Jê ====
* [[biri]]<nowiki/>(si)
* [[biricik]]
* [[birleşim]]
* [[birleşme]]
* [[birlik]]
==== Binêre herwiha ====
{{lîste:hejmar/tr}}
== {{ziman|uz}} ==
=== Hejmar ===
{{hejmar|uz}}
# [[yek]], [[êk]], [[1]], [[I]]
av1s8cal3shqrtzc859yoi81gq2bymm
6328837
6328817
2026-08-11T00:41:11Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328837
wikitext
text/x-wiki
{{bnr-h|bir|bîr|-bir|-bir-}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}} {{r-ya req}}
* {{beş|Navdêr}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-bir.wav|dever=Bidlîs}}
* {{beş|Formeke lêkerê}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-bir (Formeke lêkerê).wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]], [[grûp]], [[kerî]], [[celeb]], [[ref]], [[revde]]<br>[[çendîn]] kes yan tişt bi hev re, [[gelek]] kes yan tişt li gel hev
#* {{jêder-malper|ku|jêgirtin=Di van dused salên dawî de rêya gelek ewropiyan ji welatê me -bi gotina wan welatê bejî- derbas bû. '''Birek''' rojhilatnas, zimanzan, mîsyoner, sîxur, tucar û koleksîyoneran dewsa piyên xwe li ser axa me jî çêkirin.|nivîskar=Samî Hêzil|sernav=Karah Kaplan|url=https://xwebun.org/karah-kaplan/|malper=xwebun.org|sal=2020}}
#* {{jêder-pirtûk|ku|jêgirtin=Romana wî ya yekemin Şivanê Kurd ku li Rewanê çap bû, 1935, '''birek''' ji jiyana wî taswîr dike.|nivîskar=Mehmed Uzun|sernav=Destpêka edebiyata Kurdî|weşanxane=Ithaki Publishing|sal=2007|rûpel=65|isbn=9789752733695}}
# [[cûn]], [[core]], [[çeşîd]], [[teşîd]], [[texlîd]]
# [[klip]]
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|بڕ}}
==== Formên alternatîv ====
* [[birr]] (1)
==== Nêzîk ====
* [[wevde]]
==== Jê ====
* [[birî]]
==== Etîmolojî ====
{{nyz|ku}} lê dikare ji zimanekî [[samî]] be, bo nimûne ji {{ji|arc|ku|ܡܪܥܝܬܐ}} (mer'iθa: [[bir]], [[celeb]], [[kerî]]) yan ji {{ji|ar|ku|مرعى}} (mer'a), [[hevreh]]a îbrî [[מרעה]] (mir'ê), hemû ji rehê r-'- ([[çerîn]]). Bo guherîna M bi B bide ber [[bizmar]], [[busirman]], [[bexdenos]] ji "mismar, [[misilman|musilman]], [[mexdenos]]".
==== Bide ber ====
* [[revend]]
==== Werger ====
{{werger-ser|?}}
* {{Z|ar}}: {{W-|ar|سك|guman=erê}}, {{W-|ar|نعث|guman=erê}}
* {{Z|en}}: {{W+|en|flock}}, {{W+|en|herd}}, {{W+|en|group}}, {{W+|en|cutter|guman=erê}}, {{W+|en|horde|guman=erê}}, {{W+|en|host|guman=erê}}, {{W+|en|passel|guman=erê}}, {{W+|en|posse|guman=erê}}, {{W+|en|edgy|guman=erê}}, {{W+|en|intercurrent|guman=erê}}, {{W+|en|carnassial|guman=erê}}
{{werger-bin}}
{{werger-ser|?}}
* {{Z|de}}: {{W+|de|Abschnitt|m}}
* {{Z|fa}}: {{W+|fa|فصل}}, {{W+|fa|تکه}}, {{W+|fa|قسم}}
* {{Z|en}}: {{W+|en|segment}}
* {{Z|tr}}: {{W+|tr|aksam}}, {{W+|tr|bölüm}}, {{W+|tr|grup}}, {{W+|tr|sürü}}, {{W+|tr|şube}}, {{W-|tr|koyun ve keçi sürüsü}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# {{ku-raboriya-sade|birin|yekem|yekjimar}}
# {{ku-raboriya-sade|birin|duyem|yekjimar}}
# {{ku-raboriya-sade|birin|sêyem|yekjimar}}
# {{ku-raboriya-sade|birin|yekem|pirrjimar}}
# {{ku-raboriya-sade|birin|duyem|pirrjimar}}
# {{ku-raboriya-sade|birin|sêyem|pirrjimar}}
== {{ziman|az}} ==
=== Bilêvkirin ===
* bîr
* {{deng|az|LL-Q9292 (aze)-Azerbaijani audiorecordings-bir.wav|Deng|dever=}}
* {{deng|az|LL-Q9292 (aze)-Zardabi Bakuvi-bir.wav|Deng|dever=Bakû, Azerbaycan}}
=== Hejmar ===
{{hejmar|az}}
# [[yek]], [[1]], [[I]]
==== Herwiha binêre ====
{{lîste:hejmar/az}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Basak-bir.wav|Deng|dever=Tirkiye}}
* {{deng|tr|LL-Q256 (tur)-ToprakM-bir.wav|Deng|dever=}}
* {{deng|tr|LL-Q256 (tur)-Veravi95-bir.wav|Deng|dever=}}
=== Hejmar ===
{{hejmar|tr}}
# [[yek]], [[êk]], [[1]], [[I]]
==== Jê ====
* [[biri]]<nowiki/>(si)
* [[biricik]]
* [[birleşim]]
* [[birleşme]]
* [[birlik]]
==== Herwiha binêre ====
{{lîste:hejmar/tr}}
== {{ziman|uz}} ==
=== Hejmar ===
{{hejmar|uz}}
# [[yek]], [[êk]], [[1]], [[I]]
lumg49l8mrzm5hwimfl0myojegahe41
awêne
0
14086
6328786
6297373
2026-08-11T00:26:29Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328786
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Mirror.jpg|thumb|Awênek]]
{{navdêr|ku|z=m}}
# [[cam|Cam]]a ku mirov xwe tê re [[dîtin|dibîne]].
#: {{hevmane|ku|eyne|mirêk|qotîk|xodîk}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji ser qenepê rabûm, derbasî lavaboyê bûm, dest û serçavên xwe şuştin. Serê xwe bilind kir, min li '''awêneyê''' nihêrî. |nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=79|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Dema tu dihatî ser hemdê xwe, awêne dihat bîra te, te dixwest rûyê xwe bibînî. Wê xerîbê, wê nasê! Lê tu wisa bêmecal bûy ku te nekarî bêjî ka '''awêneyek''' bidin ber rûyê min lê tu karibûyayî jî te yê ji şerman negota, tu wek miriyan bûy û te awêne dixwest, meraqa çav û birûyan, lêv û pozî dikir.|nivîskar=Mizgîn Ronak|sernav=Xerîbiya awêneyê|url=https://xwebun.org/xeribiya-aweneye/|malper=xwebun.org|sal=2020}}
#* {{jêder-pirtûk|ku|jêgirtin=Çûm ber awêneyê, min li rûyê xwe nihêrî, lê min sûretê di '''awêneyê''' de nasnekir; tiştekî ecêb î xofdar bû.|nivîskar=Sadiq Hidayet|sernav=Bûmê Kor|weşanxane=Na Yayınları|sal=2014|rûpel=80|isbn=9786056392658}}
# {{f|ku|mecazî}} [[rewş|Rewş]]a ku li ber çavên hemû kesan [[diqewime]].
#: {{hevmane|ku|eşkere|elenî|numa|pas}}
#* {{jêder-malper|ku|jêgirtin=Windayên me '''awêneya''' pergalê ne. Her çiqas nexwazin vê awêneyê bibînin jî lê em li vir in. Duh salvegera qetilkirina bavê min bû. Me bavê min di salvegera 26’emîn de bi bîr neanî. Çimkî em vê mirinê qebûl nakin.|sernav=‘Windayên me awêneya pergalê ye’|url=https://e-rojname.com/bs-nuce/73934/|malper=e-rojname.com|dîrok=07.12.2019}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Bi alfabeyên din ====
* {{ku-ar|ئاوێنە}}
* {{ku-kr|аԝенә}}
==== Formên alternatîv ====
* {{g|ku|awîne}}
==== Jê ====
* {{g|ku|awêneyî}}
==== Etîmolojî ====
Hevreha din ya kurmancî {{q|ku|eyne}}, {{hv|ckb|ئاوێنه|tr=awêne}}, {{hv|fa|آیینه|tr=ayîne/ayînê}}, {{hv|pal||*adênek|sc=Latn}}, {{hv|ae||evi-deyenek|sc=Latn}} ji ''evi-'' ([[pê]], [[bi]]) + ''dey-, dî-'' ([[dîtin]]), hemû ji {{ji|ira}}. Wek {{q|tr|ayna}} ketiye tirkî. Ji eynî rehî: {{q|ku|wêne}}.
==== Bide ber ====
* {{g|ku|wêne}}
==== Werger ====
{{werger-ser|Cama ku mirov xwe tê re dibîne.|1}}
* {{Z|de}}: {{W+|de|klar}}, {{W+|de|Spiegel|m}}, {{W-|de|Speigel}}
* {{Z|cs}}: {{W+|cs|zrcadlo}}
* {{Z|zh}}: {{W-|zh|镜子|tr=jìngzi}}
* {{Z|da}}: {{W+|da|spejl}}
* {{Z|ar}}: {{W+|ar|مرآة|tr=mirae}}
* {{Z|eo}}: {{W+|eo|spegulo}}
* {{Z|fa}}: {{W+|fa|آينه|tr=ayne}}, {{W-|fa|ایینه}}, {{W+|fa|آیینه}}, {{W+|fa|آئینه}}, {{W+|fa|آینه}}
* {{Z|fo}}: {{W-|fo|spegil}}
* {{Z|fi}}: {{W+|fi|peili}}, {{W+|fi|kuvastin}}
* {{Z|fr}}: {{W+|fr|miroir}}, {{W+|fr|glace}}
* {{Z|fy}}: {{W-|fy|spegel}}
* {{Z|hi}}: {{W+|hi|दर्पण|tr=darpaṇa}}, [[शीषा]] (śisā)
* {{Z|nl}}: {{W-|nl|speigel}}, {{W+|nl|spiegel}}
* {{Z|en}}: {{W+|en|mirror}}, {{W+|en|looking-glass}}, {{W+|en|reflector}}, {{W+|en|looking glass|guman=erê}}
* {{Z|it}}: {{W+|it|specchio}}
* {{Z|is}}: {{W+|is|spegill}}
* {{Z|ja}}: {{W+|ja|鏡|tr=[[かがみ]], {{W-|ja|kagami}}, {{W-|ja|kyoko}}}}
* {{Z|ca}}: {{W+|ca|mirall}}, {{W+|ca|espill}}
* {{Z|ko}}: {{W+|ko|거울|tr=geoul}}
* {{Z|yua}}: {{W-|yua|neen}}
* {{Z|no}}: {{W+|no|speil}}
* {{Z|pap}}: {{W-|pap|spil}}
* {{Z|pt}}: {{W+|pt|espelho}}
* {{Z|ru}}: {{W+|ru|зеркало|tr=zérkalo}}
* {{Z|sa}}: {{W+|sa|दर्पण}}
* {{Z|es}}: {{W+|es|espejo}}
* {{Z|sw}}: {{W+|sw|kioo}}
* {{Z|sv}}: {{W+|sv|spegel}}
* {{Z|tr}}: {{W+|tr|ayna}}
{{werger-bin}}
{{werger-ser|Rewşa ku li ber çavên hemû kesan diqewime.|2}}
{{werger-bin}}
a3lpbn9wbpaheo0thgd22dg55azewpo
6328867
6328786
2026-08-11T02:12:16Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6328867
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Mirror.jpg|thumb|Awênek]]
{{navdêr|ku|z=m}}
# [[cam|Cama]] ku mirov xwe tê re [[dîtin|dibîne]].
#: {{hevmane|ku|eyne|mirêk|qotîk|xodîk}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji ser qenepê rabûm, derbasî lavaboyê bûm, dest û serçavên xwe şuştin. Serê xwe bilind kir, min li '''awêneyê''' nihêrî. |nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=79|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Dema tu dihatî ser hemdê xwe, awêne dihat bîra te, te dixwest rûyê xwe bibînî. Wê xerîbê, wê nasê! Lê tu wisa bêmecal bûy ku te nekarî bêjî ka '''awêneyek''' bidin ber rûyê min lê tu karibûyayî jî te yê ji şerman negota, tu wek miriyan bûy û te awêne dixwest, meraqa çav û birûyan, lêv û pozî dikir.|nivîskar=Mizgîn Ronak|sernav=Xerîbiya awêneyê|url=https://xwebun.org/xeribiya-aweneye/|malper=xwebun.org|sal=2020}}
#* {{jêder-pirtûk|ku|jêgirtin=Çûm ber awêneyê, min li rûyê xwe nihêrî, lê min sûretê di '''awêneyê''' de nasnekir; tiştekî ecêb î xofdar bû.|nivîskar=Sadiq Hidayet|sernav=Bûmê Kor|weşanxane=Na Yayınları|sal=2014|rûpel=80|isbn=9786056392658}}
# {{f|ku|mecazî}} [[rewş|Rewşa]] ku li ber çavên hemû kesan [[diqewime]].
#: {{hevmane|ku|eşkere|elenî|numa|pas}}
#* {{jêder-malper|ku|jêgirtin=Windayên me '''awêneya''' pergalê ne. Her çiqas nexwazin vê awêneyê bibînin jî lê em li vir in. Duh salvegera qetilkirina bavê min bû. Me bavê min di salvegera 26’emîn de bi bîr neanî. Çimkî em vê mirinê qebûl nakin.|sernav=‘Windayên me awêneya pergalê ye’|url=https://e-rojname.com/bs-nuce/73934/|malper=e-rojname.com|dîrok=07.12.2019}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Bi alfabeyên din ====
* {{ku-ar|ئاوێنە}}
* {{ku-kr|аԝенә}}
==== Formên alternatîv ====
* {{g|ku|awîne}}
==== Jê ====
* {{g|ku|awêneyî}}
==== Etîmolojî ====
Hevreha din ya kurmancî {{q|ku|eyne}}, {{hv|ckb|ئاوێنه|tr=awêne}}, {{hv|fa|آیینه|tr=ayîne/ayînê}}, {{hv|pal||*adênek|sc=Latn}}, {{hv|ae||evi-deyenek|sc=Latn}} ji ''evi-'' ([[pê]], [[bi]]) + ''dey-, dî-'' ([[dîtin]]), hemû ji {{ji|ira}}. Wek {{q|tr|ayna}} ketiye tirkî. Ji eynî rehî: {{q|ku|wêne}}.
==== Bide ber ====
* {{g|ku|wêne}}
==== Werger ====
{{werger-ser|Cama ku mirov xwe tê re dibîne.|1}}
* {{Z|de}}: {{W+|de|klar}}, {{W+|de|Spiegel|m}}, {{W-|de|Speigel}}
* {{Z|cs}}: {{W+|cs|zrcadlo}}
* {{Z|zh}}: {{W-|zh|镜子|tr=jìngzi}}
* {{Z|da}}: {{W+|da|spejl}}
* {{Z|ar}}: {{W+|ar|مرآة|tr=mirae}}
* {{Z|eo}}: {{W+|eo|spegulo}}
* {{Z|fa}}: {{W+|fa|آينه|tr=ayne}}, {{W-|fa|ایینه}}, {{W+|fa|آیینه}}, {{W+|fa|آئینه}}, {{W+|fa|آینه}}
* {{Z|fo}}: {{W-|fo|spegil}}
* {{Z|fi}}: {{W+|fi|peili}}, {{W+|fi|kuvastin}}
* {{Z|fr}}: {{W+|fr|miroir}}, {{W+|fr|glace}}
* {{Z|fy}}: {{W-|fy|spegel}}
* {{Z|hi}}: {{W+|hi|दर्पण|tr=darpaṇa}}, [[शीषा]] (śisā)
* {{Z|nl}}: {{W-|nl|speigel}}, {{W+|nl|spiegel}}
* {{Z|en}}: {{W+|en|mirror}}, {{W+|en|looking-glass}}, {{W+|en|reflector}}, {{W+|en|looking glass|guman=erê}}
* {{Z|it}}: {{W+|it|specchio}}
* {{Z|is}}: {{W+|is|spegill}}
* {{Z|ja}}: {{W+|ja|鏡|tr=[[かがみ]], {{W-|ja|kagami}}, {{W-|ja|kyoko}}}}
* {{Z|ca}}: {{W+|ca|mirall}}, {{W+|ca|espill}}
* {{Z|ko}}: {{W+|ko|거울|tr=geoul}}
* {{Z|yua}}: {{W-|yua|neen}}
* {{Z|no}}: {{W+|no|speil}}
* {{Z|pap}}: {{W-|pap|spil}}
* {{Z|pt}}: {{W+|pt|espelho}}
* {{Z|ru}}: {{W+|ru|зеркало|tr=zérkalo}}
* {{Z|sa}}: {{W+|sa|दर्पण}}
* {{Z|es}}: {{W+|es|espejo}}
* {{Z|sw}}: {{W+|sw|kioo}}
* {{Z|sv}}: {{W+|sv|spegel}}
* {{Z|tr}}: {{W+|tr|ayna}}
{{werger-bin}}
{{werger-ser|Rewşa ku li ber çavên hemû kesan diqewime.|2}}
{{werger-bin}}
s966bsvihzdh9nw4s3sclyhymgsyrmg
didu
0
14510
6328914
6305227
2026-08-11T11:28:30Z
Balyozbot
7867
sererastkirin
6328914
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-didu.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Hejmar ===
{{hejmar|ku}}
# {{guherto|ku|du}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{guherto|ku|du}}
#* {{jêder-pirtûk|ku|jêgirtin=Dêmena tabloyê ya '''diduyan''', li ser xanîyekî ser qeraxê Dîclê ye ku pencereke gelek mezin di qismê wî yê pêşî de ye.|nivîskar=Abdûlreqîb Yûsuf|sernav=Hunerê Tabloyên Şerefnamê|sal=1991|weşanxane=Weşanên Jîna Nû|rûpel=55}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
7emytuxh93exyz64g0m10zstpmc2pte
derpê
0
15146
6328906
6304987
2026-08-11T11:26:26Z
Balyozbot
7867
sererastkirin
6328906
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-derpê.wav|Deng|dever=Amed}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{guherto|ku|derpî}}
#* {{jêder-pirtûk|ku|jêgirtin=Herwiha kirasekî kin û '''derpêyekî''' spî (pembeyê xetxetî. n. J. N.) li xwe kirîye.|nivîskar=Abdûlreqîb Yûsuf|sernav=Hunerê Tabloyên Şerefnamê|sal=1991|weşanxane=Weşanên Jîna Nû|rûpel=55}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
3paixzeovny7p69hey3o1t29sfc0ewe
ade
0
15610
6328755
6296106
2026-08-10T23:37:20Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328755
wikitext
text/x-wiki
{{bnr-h|adê}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# [[riwek|Riwekên]] [[ziyandar]] yên li nav [[riwek]]ên [[çandî]] [[peyda]] bûne.
#: {{hevmane|ku|alax||zîwan|dimor}}
#: {{jêder-pirtûk|ku|jêgirtin='''Adeya''' giyayê şîn û rind<br>Ser avê sema kir!!<br>Xwe hejand<br>Her davê awazên<br>Şengiya xo cema kir!!|sernav=Helbesta Hevçerx ya kurdî (Xelîl Duhokî)|sal=1992|cîh=Siwêd|nivîskar=Ehmed Qerenî|r=257|isbn=91-971515-2-1}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Jê ====
{{kol3|ku|cure=Jê
|ade kirin<q:lêker><w:zevî ji [[riwek]]ên nehêvîkirî paqij kirin>
|adekirin<q:navdêr>
|adekirî<q:rengdêr>
|adekar
|adekarî
|adeker
|adekerî
}}
==== Têkildar ====
* {{g|ku|miyandar}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
{{kol3|ku
|adî
|eda
}}
==== Werger ====
{{werger-ser|giyayên ziyandar}}
* {{Z|de}}: {{W+|de|Unkraut}} {{nt}}, {{W+|de|Unkraut|nt}}
* {{Z|fa}}: {{W+|fa|علف هرز}}
* {{Z|fi}}: {{W+|fi|rikkaruoho}}
* {{Z|fr}}: {{W+|fr|mauvaise herbe|m}}
* {{Z|io}}: {{W-|io|mala herbo}}
* {{Z|en}}: {{W+|en|weed}} ([[unwanted]] [[vegetation]])
* {{Z|it}}: {{W+|it|erbaccia|m}}
* {{Z|pl}}: {{W+|pl|chwast|n}}
* {{Z|sv}}: {{W+|sv|ogräs}}
* {{Z|te}}: {{W+|te|కలుపు|tr=kalupu}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{f|ku|erdnîgarî}} Cihê hemî [[derdor]]ên wê [[av]] in.
#: {{hevmane|ku|girav|dûrge|cizîre}}
#* {{bêmînak|ku}}
==== Formên alternatîv ====
* {{g|ku|ada}}
==== Jê ====
{{kol3|ku
|adeyî
|nîv-ade
|nîv-adeyî
}}
==== Etîmolojî ====
Ji {{deyn|tr|ku|ada}}.
==== Werger ====
{{werger-bnr|girav}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}}
# {{guharto|ku|adet|w=ketina cilan a jinan}}
#* {{bêmînak|ku}}
== {{ziman|gnc}} ==
=== Navdêr ===
{{navdêr|gnc}}
# {{mijar|gnc|vexwarin}} {{g|ku|av}}
#* {{bêmînak|gnc}}
=== Çavkanî ===
{{rûpela wergerê|gnc|av/Werger1}}
== {{ziman|hac}} ==
=== Cînav ===
{{cînav|hac}}
# [[ew|Ew]] (mê, yekjimar).
#* {{bêmînak|hac}}
==== Formên alternatîv ====
* {{g|hac|ale}}
==== Nêr ====
{{kol3|hac
|ad
|al
}}
{{PH-nîşan|18/2011}}
== {{ziman|yo}} ==
=== Navdêr ===
{{navdêr|gnc}}
# {{g|ku|tac}}
#* {{bêmînak|yo}}
=== Çavkanî ===
{{rûpela wergerê|yo|tac}}
epsrwmqu08ht0a2ev8tpn90hpwe8egf
6328756
6328755
2026-08-10T23:37:58Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328756
wikitext
text/x-wiki
{{bnr-h|adê}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# [[riwek|Riwekên]] [[ziyandar]] yên li nav [[riwek]]ên [[çandî]] [[peyda]] bûne.
#: {{hevmane|ku|alax||zîwan|dimor}}
#* {{jêder-pirtûk|ku|jêgirtin='''Adeya''' giyayê şîn û rind<br>Ser avê sema kir!!<br>Xwe hejand<br>Her davê awazên<br>Şengiya xo cema kir!!|sernav=Helbesta Hevçerx ya kurdî (Xelîl Duhokî)|sal=1992|cîh=Siwêd|nivîskar=Ehmed Qerenî|r=257|isbn=91-971515-2-1}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Jê ====
{{kol3|ku|cure=Jê
|ade kirin<q:lêker><w:zevî ji [[riwek]]ên nehêvîkirî paqij kirin>
|adekirin<q:navdêr>
|adekirî<q:rengdêr>
|adekar
|adekarî
|adeker
|adekerî
}}
==== Têkildar ====
* {{g|ku|miyandar}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
{{kol3|ku
|adî
|eda
}}
==== Werger ====
{{werger-ser|giyayên ziyandar}}
* {{Z|de}}: {{W+|de|Unkraut}} {{nt}}, {{W+|de|Unkraut|nt}}
* {{Z|fa}}: {{W+|fa|علف هرز}}
* {{Z|fi}}: {{W+|fi|rikkaruoho}}
* {{Z|fr}}: {{W+|fr|mauvaise herbe|m}}
* {{Z|io}}: {{W-|io|mala herbo}}
* {{Z|en}}: {{W+|en|weed}} ([[unwanted]] [[vegetation]])
* {{Z|it}}: {{W+|it|erbaccia|m}}
* {{Z|pl}}: {{W+|pl|chwast|n}}
* {{Z|sv}}: {{W+|sv|ogräs}}
* {{Z|te}}: {{W+|te|కలుపు|tr=kalupu}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{f|ku|erdnîgarî}} Cihê hemî [[derdor]]ên wê [[av]] in.
#: {{hevmane|ku|girav|dûrge|cizîre}}
#* {{bêmînak|ku}}
==== Formên alternatîv ====
* {{g|ku|ada}}
==== Jê ====
{{kol3|ku
|adeyî
|nîv-ade
|nîv-adeyî
}}
==== Etîmolojî ====
Ji {{deyn|tr|ku|ada}}.
==== Werger ====
{{werger-bnr|girav}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}}
# {{guharto|ku|adet|w=ketina cilan a jinan}}
#* {{bêmînak|ku}}
== {{ziman|gnc}} ==
=== Navdêr ===
{{navdêr|gnc}}
# {{mijar|gnc|vexwarin}} {{g|ku|av}}
#* {{bêmînak|gnc}}
=== Çavkanî ===
{{rûpela wergerê|gnc|av/Werger1}}
== {{ziman|hac}} ==
=== Cînav ===
{{cînav|hac}}
# [[ew|Ew]] (mê, yekjimar).
#* {{bêmînak|hac}}
==== Formên alternatîv ====
* {{g|hac|ale}}
==== Nêr ====
{{kol3|hac
|ad
|al
}}
{{PH-nîşan|18/2011}}
== {{ziman|yo}} ==
=== Navdêr ===
{{navdêr|gnc}}
# {{g|ku|tac}}
#* {{bêmînak|yo}}
=== Çavkanî ===
{{rûpela wergerê|yo|tac}}
by58fco9btaeargke46hey5aip6r2g6
çelak
0
19909
6328887
6279343
2026-08-11T11:24:34Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328887
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[darik]]ek [[dirêj]] e <br>(bi taybetî bo [[daweşandin]]a [[fêkî]] yan [[berû]] û [[mazî|maziyan]] têt [[bikaranîn]])
#* {{jêder-malper|ku|jêgirtin=Dema xortên gundî ji serê sibê de diçûn çinîna maziyan, her yekî çantik û '''çelakên''' xwe di destên xwe de digirtin û qesta çol û dol û çiyan dikirin da ku pawanên xwe yên maziyan biçinin.|nivîskar=Selwa Gulî|sernav=Çima bi kurdî dinivîsî|malper=Amidakurd.com|sal=3/2007}}
==== Bide ber ====
{{kol3|ku
|çalak
|doqişk
|kaşok
}}
==== Jê ====
{{kol3|ku|cure=Jê
|çelak kirin<pos:lêker>
|çelakkirin<pos:navdêr>
|çelakkirî<pos:rengdêr>
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Stab|m}}
* {{Z|fi}}: {{W+|fi|seiväs}}, {{W+|fi|vapa}}
* {{Z|fr}}: {{W+|fr|perche|f}}
* {{Z|en}}: {{W+|en|pole}}, {{W+|en|stake}}, {{W+|en|hooked}}
* {{Z|ml}}: {{W-|ml|galah}}
* {{Z|es}}: {{W+|es|palo|m}}, {{W+|es|garrocha|f}}
* {{Z|sv}}: {{W+|sv|stav}}
* {{Z|te}}: [[గడ కర్ర]] (gaDa karra)
* {{Z|tr}}: {{W+|tr|rot}}, {{W+|tr|sırık}}, {{W+|tr|gaf|guman=erê}}, {{W-|tr|ucu çengelli değnek|guman=erê}}
{{werger-bin}}
2w8k8ikqjw7ghdrtkzev1zdg5gcnna9
6328928
6328887
2026-08-11T11:41:27Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328928
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[darik]]ek [[dirêj]] e <br>(bi taybetî bo [[daweşandin]]a [[fêkî]] yan [[berû]] û [[mazî|maziyan]] têt [[bikaranîn]])
#* {{jêder-malper|ku|jêgirtin=Dema xortên gundî ji serê sibê de diçûn çinîna maziyan, her yekî çantik û '''çelakên''' xwe di destên xwe de digirtin û qesta çol û dol û çiyan dikirin da ku pawanên xwe yên maziyan biçinin.|nivîskar=Selwa Gulî|sernav=Çima bi kurdî dinivîsî|malper=Amidakurd.com|sal=3/2007}}
==== Jê ====
{{kol3|ku|cure=Jê
|çelak kirin<pos:lêker>
|çelakkirin<pos:navdêr>
|çelakkirî<pos:rengdêr>
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
{{kol3|ku
|çalak
|doqişk
|kaşok
}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Stab|m}}
* {{Z|fi}}: {{W+|fi|seiväs}}, {{W+|fi|vapa}}
* {{Z|fr}}: {{W+|fr|perche|f}}
* {{Z|en}}: {{W+|en|pole}}, {{W+|en|stake}}, {{W+|en|hooked}}
* {{Z|ml}}: {{W-|ml|galah}}
* {{Z|es}}: {{W+|es|palo|m}}, {{W+|es|garrocha|f}}
* {{Z|sv}}: {{W+|sv|stav}}
* {{Z|te}}: [[గడ కర్ర]] (gaDa karra)
* {{Z|tr}}: {{W+|tr|rot}}, {{W+|tr|sırık}}, {{W+|tr|gaf|guman=erê}}, {{W-|tr|ucu çengelli değnek|guman=erê}}
{{werger-bin}}
6c7yqemm4h51n5z5x04ufq3nkewgbou
grev
0
21104
6328969
6307652
2026-08-11T11:50:27Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328969
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/ɡɾɛv/}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[sekinandin|Sekinandin]]a [[kar]]ê xwe bo [[dem]]ekê ji ber [[nerazî]]bûnê.
#: {{nm|ku|Karkeran dest bi '''grevê''' kir ji ber ku karderan daxwaza wan ya zêdekirina meaşî nepejirand.}}
#: {{nm|ku|'''Greva''' birçîbûnê.|nexwarin ji ber nerazîbûnê|rêz=1}}
#* {{jêder-malper|ku|jêgirtin=Penaberên ji bêxemiya civaka navnetewî bêzar in, dest bi '''grêva''' birçîbûnê kirin.|sernav=Penaberên ji Rojhilata Kurdistanê di grêva birçîbûnê de ne.|malper=Roj.tv|sal=6/2006}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|girev}}
* {{g|ku|girêv}}
* {{g|ku|grêv}}
==== Jê ====
{{kol3|ku|cure=Jê
|grêvî
|grêvgir
|grêvgirî
|grêvker
|grev kirin<pos:lêker>
|grevkirin<pos:navdêr>
|grevgirtin<pos:navdêr>
|grevkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{deyn|tr|ku|grev}} ji {{ji|fr|ku|grève}} ji navê [[meydan]]a {{zim|fr|''Place de Grève''}} (bi navê xwe yê niha {{zim|fr|''Place de l'Hôtel de Ville''}}) ku [[karker]]ên karê xwe rawestandî lê dicivîn û doza mafên xwe dikir.
==== Bide ber ====
* {{g|ku|girêk}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Streik|m}}, {{W|de|Ausstand|m}}, {{W|de|Arbeitsniederlegung|f|guman=erê}}
* {{Z|zh}}: {{W+|zh|罷工}}, [[罢工]] (bàgōng)
* {{Z|ar}}: {{W-|ar|اضراب|tr=etrab}}
* {{Z|fa}}: {{W+|fa|اعتصاب}}
* {{Z|fi}}: {{W+|fi|lakko}}
* {{Z|fr}}: {{W|fr|grève|f}}
* {{Z|nl}}: {{W+|nl|staking}}
* {{Z|en}}: {{W-|en|strike|tr=work stoppage}}, {{W+|en|skrike}}
* {{Z|it}}: {{W+|it|sciopero}}
* {{Z|ja}}: {{W-|ja|ストライキ|tr=sutoraiki}}
* {{Z|ko}}: {{W-|ko|파업|tr=pa-eop}}
* {{Z|hu}}: {{W+|hu|sztrájk}}
* {{Z|pt}}: {{W|pt|greve|f}}
* {{Z|ru}}: {{W-|ru|забастовка|tr=zabastóvka}}
* {{Z|es}}: {{W|es|huelga|f}}
* {{Z|sv}}: {{W+|sv|strejk}}
* {{Z|te}}: {{W-|te|సమ్మె|tr=samme}}
* {{Z|tr}}: {{W+|tr|grev}}, {{W+|tr|iş bırakımı}}
{{werger-bin}}
== {{ziman|rm}} ==
=== Rengdêr ===
{{rengdêr|rm}}
# [[giran#ku|giran]] (ne sivik)
#* {{bêmînak|rm}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[grev#Kurdî|grev]], [[karberdan]], [[şixulhiştin]]<br>[[sekinandin]]a [[kar]]ê xwe bo [[dem]]ekê ji ber [[nerazî]]bûnê
#* {{bêmînak|tr}}
==== Bide ber ====
* {{g|tr|görev}}
6q3utigxm9akdboxoxx5euhd5qq7xxj
ebad
0
21114
6328723
6305850
2026-08-10T18:59:24Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6328723
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dirêjî|Dirêjî]] û [[panî]] û [[bilindahî|bilindahiya]] tiştekî.
#: {{nimûne|ku|Ebada vê qutiyê 5 x 20 x 15 cm e.}}
#* {{jêder|ku|jêgirtin=Berhem di serê sala 2006’an de ji nav weşanên Enstîtuya Kurdî ya Stenbolê derket. Pirtûk 112 rûpel û '''ebada''' wê jî 13, 5x19, 5 [cm] e.|''"Rastiyên destana 'Memê Alan'" derket'', Enstituyakurdi.org, heyama weşanê ne diyar e}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|ebat}}
==== Jê ====
* {{g|ku|ebadî}}
==== Têkildar ====
* {{g|ku|bûut}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|أَبْعَاد}} forma pirjimar a {{q|ar|بُعد|tr=buʿd|t=dûrî, bûut, rehend}} e.
==== Bide ber ====
* {{g|ku|ebed}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Volumen|n}}
* {{Z|bg}}: {{W|bg|обем|m}}
* {{Z|fi}}: {{W+|fi|tilavuus}}
* {{Z|fr}}: {{W+|fr|volume}}
* {{Z|nl}}: {{W+|nl|volume}}, {{W+|nl|inhoud}}
* {{Z|en}}: {{W-|en|volume}}
* {{Z|it}}: {{W+|it|volume}}
* {{Z|pl}}: {{W|pl|objętość|f}}
* {{Z|pt}}: {{W+|pt|volume}}
* {{Z|ro}}: {{W+|ro|volum}}
* {{Z|sk}}: {{W|sk|objem|m}}
* {{Z|sl}}: {{W|sl|prostornina|f}}
* {{Z|es}}: {{W+|es|volumen}}
* {{Z|tr}}: {{W+|tr|ebat}}
{{werger-bin}}
ch8jm6qfr16g0yqobbsukkdz9rzp85m
hevriş
0
21699
6328981
6131657
2026-08-11T11:51:02Z
Balyozbot
7867
/* Hoker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328981
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[tûşî]], [[pêrgî]], [[rast]]î
#* {{jêder-malper|ku|jêgirtin=Bajarekî Îsraîlê '''hevrişî''' moşekên Libnanê dibe.|malper=Peyamner.com|sal=7/2006}}
==== Bide ber ====
* [[hevris]]
==== Etîmolojî ====
[[hev-]] + [[riş]] (= [[rû]] / [[rîş]]?)
==== Jê ====
* [[hevrişî]]
==== Dijmane ====
* [[verişî]]
* [[veriş]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
021ljhnoz8sufmntg651dbu4mpk954p
dorhêl
0
21748
6328936
6305542
2026-08-11T11:45:57Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328936
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-dorhêl.wav|Deng|dever=Amed}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[derdor]], [[dewrûber]], [[derûdor]], [[dorber]], [[hawirdor]], [[dormale]]
#* {{jêder-malper|ku|jêgirtin=Di salên 1960’an de em zarok bûn. Dema em ji gundan dihatin bajêr, em şaş û metel diman. Bajar qada tirkî û gund jî qada kurdî bûn. Em ji '''dorhêl'''eke kurdîaxêv bi carekê diketin '''dorhêl'''eke tirkîaxêv. Tirkîaxêviyeke şkestî û sosret. Lê [[qure]], [[zewar]] û biteqayî... Dikandar û esnafên bajêr henekê xwe bi dayîk û bavên me dikirin...|nivîskar=Jîr Dilovan|sernav=Pirsgirêk piçûkdîtina kurdî ye|malper=Diyarname.com|sal=7/2006}}
# {{kontrol|rêz=erê|[[hawir]], [[havêrke]], [[jîngeh]]}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|دۆرهێل}}
==== Jê ====
* [[dorhêlî]]
==== Etîmolojî ====
Ji {{qertaf|ku|dor|hêl}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|omgewing}}
* {{Z|de}}: {{W|de|Umwelt|f}}, {{W|de|Milieu|n}}, {{W|de|Umgebung|f}}, {{W|de|Zirkel|m}}, {{W|de|um herum}}, {{W|de|Umgegend}}, {{W|de|rings|guman=erê}}
* {{Z|an}}: {{W|an|meyo ambién}}
* {{Z|bn}}: {{W|bn|পরিবেশ}}
* {{Z|br}}: {{W|br|endro}}
* {{Z|cs}}: {{W|cs|životní prostředí}}
* {{Z|zh}}: {{W|zh|环境}}
* {{Z|da}}: {{W|da|miljø}}
* {{Z|id}}: {{W|id|lingkungan}}
* {{Z|ar}}: {{W|ar|بيئه}}, {{W|ar|الواقع|guman=erê}}, {{W|ar|الوسط|guman=erê}}
* {{Z|eo}}: {{W|eo|medio}}
* {{Z|fa}}: {{W|fa|محیط}}, {{W|fa|محیط}}, {{W|fa|اطراف}}
* {{Z|fo}}: {{W|fo|umhvørvi}}
* {{Z|fi}}: {{W|fi|ympäristö}}, {{W|fi|piiri}}, {{W|fi|alue}}
* {{Z|fr}}: {{W|fr|environnement}}, {{W|fr|milieu}}
* {{Z|fy}}: {{W|fy|omwrâld}}; {{W|fy|fermidden}}; {{W|fy|sfear}}
* {{Z|ht}}: {{W|ht|anviwènman}}
* {{Z|nl}}: {{W|nl|milieu}}, {{W|nl|omgeving}}, {{W|nl|medium}}
* {{Z|en}}: {{W|en|surroundings}}, {{W|en|around}}, (2) {{W|en|environment}}, {{W|en|milieu}}, {{W|en|ambit}}
* {{Z|it}}: {{W|it|ambiente}}
* {{Z|ja}}: {{W|ja|環境}}
* {{Z|ca}}: {{W|ca|medi}}
* {{Z|qu}}: {{W|qu|allpa}} {{W|qu|kawsay}}; {{W|qu|pacha}} {{W|qu|kawsay}}
* {{Z|ko}}: {{W|ko|환경}} (hwan.gyŏŋ)
* {{Z|li}}: {{W|li|miljeu}}
* {{Z|lb}}: {{W|lb|Ëmwelt|f}}
* {{Z|hu}}: {{W|hu|környezet}}
* {{Z|mn}}: {{W|mn|хүрцээлэн}} {{W|mn|буй}} {{W|mn|орчин}} (hürcêêlên buĭ orčin)
* {{Z|no}}: {{W|no|miljø}}
* {{Z|oc}}: {{W|oc|environament}}
* {{Z|pl}}: {{W|pl|środowisko}}
* {{Z|pt}}: {{W|pt|ambiente}}, {{W|pt|meio}}
* {{Z|ro}}: {{W|ro|preajmă}} {{fp}}
* {{Z|ru}}: {{W|ru|окружающая}} {{W|ru|среда}} (okružaǔṧaǎ srěda)
* {{Z|sk}}: {{W|sk|životné prostredie}}
* {{Z|es}}: {{W|es|medio ambiente|m}}
* {{Z|sv}}: {{W|sv|miljö}}
* {{Z|tl}}: {{W|tl|kaligirán}}
* {{Z|tt}}: {{W|tt|äylänä-tirä}}; {{W|tt|tabiği}} {{W|tt|möhit}}
* {{Z|tr}}: {{W|tr|çevre}}; {{W|tr|muhit}}, {{W|tr|âlem}}, {{W|tr|civar}}, {{W|tr|dolay}}, {{W|tr|dolayı}}, {{W|tr|etraf}}, {{W|tr|ortam}}, {{W|tr|kıran}}, {{W|tr|mıntıka|guman=erê}}, {{W|tr|ortalık|guman=erê}}
* {{Z|vi}}: {{W|vi|môi}} {{W|vi|trường}}
* {{Z|yi}}: {{W|yi|סװיװע}} (svive)
* {{Z|el}}: {{W|el|περιβάλλον}} (peribállon)
{{werger-bin}}
cvqfc0ukptxeqfwvgdu3kilo5sehvfs
hilgir
0
23288
6328984
6308658
2026-08-11T11:51:09Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328984
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# kesa/ê ku tiştekî [[hilgirtin|hildigire]]
#* {{bêmînak|ku}}
# kesa/ê ku tiştekî ji [[der]]ekê [[birin|dibe]] derek [[din]]
#* {{bêmînak|ku}}
# [[hemal]], kesa/ê ku [[kar]]ê wî [[hilgirtin]]a tiştan e<br>(bi taybetî kesa/ê ku tiştên xelkê bi [[pare]] ji [[der]]ekê dibe derek din)
#* {{bêmînak|ku}}
# kesa/ê yan [[heywan]]a ku bi xwe [[sax]] e lê [[êş]]ek tê de heye ku [[karîn|dikare]] bigihe kesek din <br>(bi taybetî [[zarok]]ên kesa/ê ku ew êş tê de heye)
#* {{bêmînak|ku}}
# [[nesax]]a/ê / [[nexweş]]a/ê [[êş]]ekê
#* {{jêder-malper|ku|jêgirtin=Li gor amara Rêxistina Tendirustî ya Cîhanî WHO hejmara '''hilgirên''' virusa HIV li cîhanê gihiştiye zêdeyî 33 milyon kesan.|sernav=|url=|malper=Rûdaw|sal=7/2011}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Formên alternatîv ====
* [[helgir]]
==== Hevmane ====
* [[kolber]]
==== Jê ====
* [[hilgirî]]
* [[hilgirîtî]]
==== Etîmolojî ====
{{paşvesazî|ku|hilgirtin}}.
==== Bide ber ====
* [[bergir]]
* [[dagir]]
* [[ragir]]
* [[vegir]]
* [[wergir]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Träger|m}}, {{W|de|Empfänger|m}}, {{W|de|Adressat|m|guman=erê}}
* {{Z|fi}}: {{W+|fi|kantaja}}
* {{Z|fr}}: {{W|fr|porteur|n}}
* {{Z|en}}: {{W+|en|carrier}}, {{W+|en|porter}}, {{W+|en|trestle}}, {{W+|en|cadger}}, {{W|en|heaver|guman=erê}}, {{W|en|lifter|guman=erê}}
* {{Z|tr}}: {{W+|tr|portör}}, {{W+|tr|taşıyıcı}}, {{W+|tr|nâkil}}
{{werger-bin}}
e1uee9zolkfj54px9wldz6gm6zrwxo6
kêran
0
23309
6329019
6310923
2026-08-11T11:52:26Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329019
wikitext
text/x-wiki
{{bnr-h|keran}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/kʰeːˈɾɑːn/}}
* {{kîte|ku|kê|ran}}
=== Navdêr ===
[[Wêne:Castle beam01.jpg|thumb|kêran]]
{{navdêr|ku|z=n}}
# [[dar|Dar]]ê yan [[asin]]ê [[dirêj]] û [[qayîm]] ([[bi taybetî]] yê ku [[ban]] xwe li ser [[ragirtin|radigire]]).
#* {{jêder-malper|ku|jêgirtin=STUN: Ev peyva kurdî di nava trikî de bi awayê rojane tê bikaranîn, xasma jî di çapemeniyê de… Dema Kurd xanî ava dikin, ew '''kêranê''' ku jê re “pir” tê gotin, di nava xênî de didin binî da zexm be û banê xanî li ser xwe ragire.|nivîskar=Zeynelabidin Zinar|sernav=Peyv û Termên Kurdî Di Tirkî De...|url=http://occomahabad.blogspot.com/2019/06/peyv-u-termen-kurdi-di-tirki.html|malper=occomahabad.blogspot.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Divê em bi destên xwe pêşeroja xwe tarî nekin û zarokên xwe bi xwebûna wan ango bi çanda wan mezin bikin. Ji bîr nekin çand '''kêranê''' civakê ye, ziman jî stûna çandê ye.|nivîskar=Mehmet Esen|sernav=Çand kêranê civakê ye, ziman jî stûna çandê ye|url=https://e-rojname.com/bs-nerin/31382/|malper=e-rojname.com|dîrok=19.02.2019}}
#* {{jêder-pirtûk|ku|jêgirtin=Ev sê sal bû ez ji van deran dûr bûm. Apê min û jina wî çiqas pîr bûbûn. Kes li gund nemabû. Min çavên xwe kuta '''kêranan''', leyistokên min û xwişka min hatin bîra min, bi şev di nav cî de me kêran dijmartin, ew li ber çavên xwe dikirin, gur, hirç, zîha, perî.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=82|isbn=978-605-5585-41-9}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|کێران}}
==== Hevmane ====
{{stûn|
* [[karîte]]
* [[max]]
* [[beşt]]
* [[nîre]]
* [[ribanek]]
* [[girş]]
* [[şeqle]]
* [[gelender]]
* [[onî]]
* [[mertek]]
* [[mirdiyaq]]
* [[garîte]]
}}
==== Jê ====
* [[kêranî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[kêlan]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|balk}}
* {{Z|de}}: {{W|de|Balken|m}}
* {{Z|da}}: {{W|da|bjælke}}
* {{Z|eo}}: {{W|eo|trabo}}
* {{Z|fo}}: {{W|fo|bjálki}}
* {{Z|fi}}: {{W|fi|poikkipuu}}
* {{Z|fy}}: {{W|fy|balke}}
* {{Z|nl}}: {{W|nl|balk}}, {{W|nl|onderlegger}}, {{W|nl|ribbe}}
* {{Z|en}}: (thick wooden) [[beam]] (used in ceiling), {{W|en|beam}}, {{W|en|bowstring|guman=erê}}
* {{Z|it}}: {{W|it|trave}}
* {{Z|pap}}: {{W|pap|balki}}, {{W|pap|biga}}
* {{Z|pt}}: {{W|pt|barrote}}, {{W|pt|biga}}, {{W|pt|trave}}
* {{Z|ru}}: {{W|ru|балка}}, {{W|ru|бревно}}, {{W|ru|брус}}
* {{Z|es}}: {{W|es|viga}}, {{W|es|trabe}}, {{W|es|traviesa}}
* {{Z|sv}}: {{W|sv|balk}}, {{W|sv|bjälke}}
* {{Z|tr}}: {{W|tr|mertek}}, {{W|tr|düver}}, {{W|tr|kiriş|guman=erê}}, {{W|tr|pala|guman=erê}}
{{werger-bin}}
=== Formeke navdêrê 1 ===
{{ku-tew-nav|kêr|mê|çemandî|binavkirî}}
{{navdêr|ku|z=m|form=erê}}
# ''Rewşa [[çemandî]] ya pirjimara a binavkirî ya'' '''{{g|ku|kêr}}'''.
{{bend}}
=== Formeke navdêrê 2 ===
{{ku-tew-nav|kêr|nêr|çemandî|binavkirî}}
{{navdêr|ku|z=n|form=erê}}
# ''Rewşa [[çemandî]] ya pirjimar a binavkirî ya'' '''{{g|ku|kêr}}'''.
ns3ketgnd3rtlfrnqjf5namqfcb0ko7
beşer
0
23689
6328806
6299387
2026-08-11T00:28:32Z
Balyozbot
7867
/* Navdêr 1 */ sererastkirin
6328806
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# [[mahd]], [[rû]], [[serçav]], [[moral]], [[kêf]], [[coş]]
#: {{nm|ku|Kesekî '''beşer''' vekirî ye.}}
#* {{jêder|ku|jêgirtin=Lê çendek bû '''beşera''' bavê min qet xweş nedibû, pirr melûl û xemgîn bû.|{{Jêgirtin/Frîda Hecî Cewarî/Bîranînên Min|r=40}}}}
#* {{jêder-malper|ku|jêgirtin=Weke 2 sal pêşda, Peter ji min re xeber da. Di nava ew qas salan de, ew tenê niha bi rastî bextewar bibû. Hela hê '''beşera''' wî jî xweş bû.|nivîskar=Kovara Birca Çavdêriyê, r. 15|sernav=Tenê Li Rûyê Mirovan Nenêre|url=https://www.jw.org/kmr-x-rd/kitebxane/kovar/birca-cavderiye-capa-lekoline-heziran-2017/tene-li-ruye-mirovan-nenere/|malper=jw.org|sal=2017}}
#* {{jêder|ku|jêgirtin=Gava qala Eyûbîyan, Merwanîyan, Medan û Kardoxîyan dikira, '''beşera''' wî vedibû û gula wî dipişkivîya.|Şakir EPOZDEMÎR: ''Pêşengekî Şareza û Nemir: FEHMÎ BÎLAL'', Kovara Bîr, Hj. 6, 2007, r.241}}
# [[bînahî]], [[ronahî|ronahiya]] [[çav]]an, [[hinêr]]a [[dîtin]]ê
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser|kêf û coş|1}}
* {{Z|en}}: {{W+|en|mood}}, {{W+|en|humor}}
* {{Z|tr}}: {{W+|tr|moral}},{{W+|tr|neşe}}
{{werger-bin}}
{{werger-ser|bînahî|2}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=mn}}
# [[mirov]], [[meriv]], [[insan]], [[ademîzad]], [[benîadem]], <br>[[jin]] û [[zelam]] û [[keç]] û [[kurr]] û bûnewerên din yên bi du piyan dimeşin û dikarin biramin û biaxivin
#* {{jêder|ku|jêgirtin=Edî çar pênc kamyon tijî leşker, hezar helîkopter û balafir jî bihatana hew ew '''beşer''' didîtin.|{{Jêgirtin/Firat Cewerî/Girtî}}}}
#* {{jêder|ku|jêgirtin=Pirr kesan dîtin [[keramet]] û [[eser]]<br>J' xwendina Mewlûda Sultanê '''beşer'''.|Mewlûda Mela Hisênê Bateyî}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Hevmane ====
{{kol3|ku
|benderuh
|insan
|însan
|kes
|merdim
|mere
|meriv
|merov
|miro
|mirov
}}
==== Jê ====
{{kol3|ku|cure=Jê
|beşerî
|beşerîtî
|beşertî
|beşer kirin<pos:lêker>
|beşerkirin<pos:navdêr>
|beşerkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|بشر|tr=beşer}}, [[hevreh]]a îbrî [[בשר]] (beşer), aramî [[ܒܣܪܐ]] (bişra), ugarîtî [[𐎁𐎒𐎗]] (bsr), akadî ''bişru''... ji [[proto-samî]].
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Mensch}} {{n}}
* {{Z|ar}}: {{W+|ar|انسان|guman=erê}}, {{W+|ar|بشر|guman=erê}}
* {{Z|fa}}: {{W+|fa|بشر|guman=erê}}
* {{Z|en}}: {{W+|en|human}}, {{W+|en|human being}}
* {{Z|tr}}: {{W+|tr|beşer}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-ToprakM-beşer.wav|Deng|dever=Îzmîr, Tirkiye}}
=== Navdêr ===
{{navdêr|tr}}
# [[mirov]]
#* {{bênimûne|tr}}
# [[ademîzad]]
#* {{bênimûne|tr}}
# pêncepênc, pênco pênco
#: {{mk|tr|Elmaları onlara '''beşer beşer''' ver.|Sêvan pêncepênc bide wan.|rêz=1}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza|z=}}
# beşer, [[însan]], [[merdim]]<ref>http://www.kovarabir.com/wp-content/uploads/Ferheng%C3%AA-Dimil%C3%AE-%C3%BB-Kurmanc%C3%AE-B-b.pdf</ref>
#* {{bênimûne|zza}}
=== Çavkanî ===
{{çavkanî}}
7tdw23h50c7of4hqjdf2ja43nsqq1bh
azirandin
0
24112
6328789
6297526
2026-08-11T00:26:46Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328789
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-azirandin.wav|dever=Amed}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|azirandin|form=gerguhêz|niha=azirîn|borî=azirand}}
{{lêker|ku|c=x-gh}}
# [[arandin|Arandin]], [[esebî]] kirin, [[cixirandin]], [[şarandin]], [[sîqilandin]], [[halan]], [[tehrîk]] kirin, [[lê sor kirin]], [[teşwîq]] kirin, [[engizandin]], [[belişandin]], <br />[[pîj]] kirin, [[ajawe]] kirin, [[provoke]] kirin, [[han dan]], [[fît]] kirin, [[xiroşme]] kirin, [[cilixandin]], [[lê gur kirin]], [[qehirandin]].
#* {{bêmînak|ku}}
# [[êşandin|Êşandin]].
#* {{bêmînak|ku}}
# [[xeyidandin|Xeyidandin]], [[sil]] kirin, [[qehirandin]], [[zilqitandin]], [[aciz]] kirin.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|ئازراندن}}
==== Formên alternatîv ====
* {{g|ku|azrandin}}
==== Jê ====
* {{g|ku|azirandî}}
* {{g|ku|azirîner}}
==== Têkildar ====
* {{g|ku|azirîn}}
==== Etîmolojî ====
[[azir]] (têkildarî [[agir]]) + {{paş|ku|-andin}}.
==== Werger ====
{{werger-ser|teşwîq kirin}}
* {{Z|de}}: {{W+|de|anspornen}}, {{W+|de|antreiben}}, {{W+|de|aufhetzen}}, {{W+|de|herausfordern}}, {{W+|de|Rüge|m}}, {{W+|de|Schimpf}}, {{W+|de|ausschimpfen}}, {{W+|de|keifen}}, {{W+|de|rügen}}, {{W+|de|schimpfen}}, {{W-|de|auszanken|guman=erê}}, {{W+|de|brummen|guman=erê}}, {{W+|de|anschnauzen|guman=erê}}
* {{Z|ar}}: {{W-|ar|اثار}}, {{W-|ar|عنف|guman=erê}}
* {{Z|eo}}: {{W-|eo|sproni}}, {{W-|eo|instigi}}
* {{Z|fa}}: {{W+|fa|آزردن}}, {{W+|fa|تحریک کردن}}
* {{Z|fo}}: {{W-|fo|elva}}, {{W-|fo|eggja til}}
* {{Z|fi}}: {{W+|fi|yllyttää}}
* {{Z|fy}}: {{W-|fy|oanfiterje}}, {{W-|fy|oanfjurje}}, {{W-|fy|oanhysje}}, {{W-|fy|oantrune}}, {{W-|fy|oantrúnje}}, {{W-|fy|oanwakkerje}}
* {{Z|nl}}: {{W-|nl|de sporen geven}}, {{W+|nl|prikkelen}}, {{W+|nl|aansporen}}, {{W+|nl|aanvuren}}, {{W+|nl|aanwakkeren}}, {{W+|nl|opwekken}}, {{W+|nl|zwepen}}
* {{Z|en}}: to {{W+|en|incite}}, to {{W+|en|provocate}}, to {{W+|en|spur}}, to {{W+|en|stimulate}}, to {{W+|en|stir up}}, to {{W+|en|trigger}}, to {{W+|en|encourage}}, to {{W+|en|impel}}, to {{W+|en|instigate}}, to {{W+|en|spur on}}, to {{W+|en|urge}}, to {{W+|en|prod}}, to {{W+|en|prompt}}, to {{W+|en|abet}}, to {{W+|en|stir}}, {{W+|en|disserve}}, {{W+|en|objurgate}}, {{W+|en|objurgation}}, {{W+|en|rag}}, {{W+|en|read the riot act}}, {{W+|en|rebuff}}, {{W+|en|remonstrate}}, {{W+|en|reprove}}, {{W+|en|dressing}}, {{W+|en|earful}}
* {{Z|ca}}: {{W+|ca|instigar}}
* {{Z|pt}}: {{W+|pt|esporar}}, {{W+|pt|esporear}}, {{W+|pt|impelir}}, {{W+|pt|incitar}}, {{W+|pt|instigar}}
* {{Z|ro}}: {{W+|ro|instiga}}, {{W+|ro|aţîţa}}, {{W+|ro|provoca}}
* {{Z|es}}: {{W+|es|espolear}}, {{W+|es|instigar}}
* {{Z|tr}}: {{W+|tr|acıtma}}, {{W+|tr|acıtmak}}, {{W+|tr|azarlama}}, {{W+|tr|azarlamak}}, {{W+|tr|fırçalama}}, {{W+|tr|fırçalamak}}, {{W+|tr|paylama}}, {{W+|tr|paylamak}}, {{W+|tr|sızlatma}}, {{W+|tr|sızlatmak}}, {{W+|tr|incitmek}}, {{W+|tr|incitme|guman=erê}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[arandin|Arandin]], [[esebî]]kirin, [[cixirandin]]
#* {{jêder-malper|ku|jêgirtin=Ez dibêjim di sîstemekê demokrat de, bi taybetî j heke hikûmet ji aliyê miletî ve hilbijartî be, hemî rêkên demokratî bo rawestandina biryarekê yan dana biryarekê rewa ne. Komkirina îmzeyan, xwenîşandan, duristkirina raya giştî, '''azirandina''' vî babetî di navgînên ragihandinê de, hemî rêkên demokratî ne û ev bo du tiştan bi kar dihên: yan bo rawestandina pêşniyara biryarekê ku tirsek heye ew bibe biryar, yan jî bo dana biryarekê ku daxwaza xelkekî ye.|nivîskar=Mueyed Teyib|sernav=Mueyed Teyib: Heke biryara nehêlana kurmanciyê derket, xelkê me mafê xwenîşandan û manggirtinê heye|url=http://www.nefel.com/articles/article_detail.asp?RubricNr=7&ArticleNr=1447|malper=nefel.com|sal=2006}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
qcjybd9zwaij0r141hc8bherrdf0t8e
gere
0
24390
6328964
6132101
2026-08-11T11:50:14Z
Balyozbot
7867
/* Hoker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328964
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[divê]], [[pêdivî]] ye ku, [[gerek]] e ku, [[lazim]] e ku, [[hewce]] ye ku
#: '''''Gere''' tu me ji bîr nekî.''
#: ''Gere kurd ji bilî serxwebûnê bi ti tiştek din razî nebin.''
#* {{jêder-malper|ku|jêgirtin=Kurdên Iraqê ji bo damezrandina dewleta xwe Tirkiyê wek asteng dibînin. '''Gere''' Tirkiye vê bêbawerîyê ji holê rake ku kurdên iraqê Tirkîyeyê ji xwe re nêzîk bibînin.|nivîskar=[[w:Aram Gernas|Aram Gernas]]|sernav=Tirk ji bo Kurdistana serbixwe xwe dihewisînin|malper=Netkurd.com|sal=9/2006}}
==== Jê ====
* {{mj|Navdêr}} [[gerekirin]]
==== Etîmolojî ====
[[gerek]] - [[-ek]] + [[e]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|need}} (to), {{W|en|have to}}
* {{Z|tr}}: {{W|tr|gerek}}, {{W|tr|gerekli}}, {{W|tr|lazım}}, {{W|tr|elzem}}
{{werger-bin}}
t4fnh9pkc4tvmtltl6bgxa14kwvjoua
ewî
0
24498
6328953
6232764
2026-08-11T11:49:48Z
Balyozbot
7867
/* Cînav */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328953
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Cînav ===
{{cînav|ku}}
# {{guherto|wî}}
#* {{jêder-malper|ku|jêgirtin=Heyatek wisa heye yan tune ye, ez '''ewî''' nizanim.|nivîskar=Rehmî Kurdziman|sernav=Ez ji xwe ra nabêjim nivîskar, karê min nivîskarî nîne|malper=inanolo.blogspot.com|url=https://inanolo.blogspot.com/2018/10/rehmi-kurdziman-ez-ji-xwe-ra-nabejim.html|sal=2018}}
==== Binêre ====
* {{g|ku|ewê}} ''(forma mê)''
qnn6qwltnk81xwx0m1hylqdwef8hxov
gulav
0
24876
6328971
6307712
2026-08-11T11:50:33Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328971
wikitext
text/x-wiki
{{bnr-h|Gulav}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[av|Av]]a [[bêhn]][[xweş]] ya ji [[gul]]an ya ku mirov li [[leş]]ê xwe dike.
#: {{hevmane|ku|parfûm|qolanî|lewente}}
#* {{jêder-malper|ku|jêgirtin=Ji bin perdê were derê <br>Bêje erê <br>Pirç '''gulav'''ê <br>[[dêm|Dêm]] [[fener]]ê <br>Peyva erê<br> ji sîngê xwe bîne derê <br>Bêje erê|nivîskar=Şemal Doskî|sernav=Na!|malper=Kurdworld.com|sal=2002}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|گولاڤ}}
==== Formên alternatîv ====
* {{g|ku|gulab}}
==== Jê ====
* {{g|ku|gulavane}}
* {{g|ku|gulavî}}
==== Etîmolojî ====
Ji {{pêk|ku|gul|av}} [[hevreh|Hevreh]]a {{hv|ckb|گوڵاو|tr=[[guław]]}}, {{hv|fa|گلاب|tr=golab}}. Wek navê vexwarineke ji [[pûng]]î / [[nane]]yê bi rêya erebî ketiye {{hv|la|julapium}} û jê derbazî {{hv|fr|julep}} û îngilîzî [[julep]] bûye.
==== Bide ber ====
* {{g|ku|sorav}}
* {{g|ku|spiyav}}
* {{g|ku|rejav}}
* {{g|ku|derav}}
* {{g|ku|berav}}
* {{g|ku|perrav}}
==== Bi zaravayên din ====
{{werger-ser}}
* {{Z|ckb}}: {{W|ckb|گوڵاو}}
{{werger-bin}}
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|parfum|n}}
* {{Z|de}}: {{W+|de|Parfüm|nt}}, {{W+|de|Duftstoff|n}}, {{W+|de|Parfum|nt}}
* {{Z|aii}}: {{W-|aii|ܪܹܝܚܵܐ ܗܲܢܝܼܐܵܐ|n}}, {{W-|aii|ܗܹܪܘܿܡܵܐ|n}}, {{W-|aii|ܥܸܛܪܵܐ|n}}
* {{Z|az}}: {{W+|az|ətir}}
* {{Z|be}}: {{W-|be|духі́|nt-p}}, {{W-|be|парфу́ма|m}}
* {{Z|bn}}: {{W-|bn|সুগন্ধি}}
* {{Z|bcl}}: {{W-|bcl|pahamot}}
* {{Z|bg}}: {{W+|bg|парфю́м|n}}
* {{Z|cs}}: {{W+|cs|parfém|n}}, {{W-|cs|voňavka|m}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|香水|tr=hoeng1 seoi2}}
*: {{Z|hak}}: {{W-|hak|香水|tr=hiông-súi}}
*: {{Z|cmn}}: {{W+|cmn|香水|tr=xiāngshuǐ}}
*: {{Z|cdo}}: {{W-|cdo|香水|tr=hiông-súi}}
*: {{Z|nan}}: {{W+|nan|芳水|tr=phang-chúi}}
*: {{Z|wuu}}: {{W-|wuu|香水}}
* {{Z|da}}: {{W-|da|perfume|g}}
* {{Z|id}}: {{W+|id|parfum}}, {{W+|id|minyak wangi}}
* {{Z|ar}}: {{W-|ar|أَرِيج|n}}, {{W-|ar|شَذًا|n}}, {{W-|ar|عِطْر|n}}
*: {{Z|arz}}: {{W-|arz|برفان|n|tr=barfān}}, {{W-|arz|برفانات|m-p|tr=barfānāt}}
* {{Z|hy}}: {{W+|hy|օծանելիք}}
* {{Z|eo}}: {{W-|eo|parfumo}}
* {{Z|et}}: {{W-|et|parfüüm}}, {{W+|et|lõhnaõli}}
* {{Z|fa}}: {{W+|fa|عطر|tr='atr}}
* {{Z|fi}}: {{W+|fi|hajuste}}, {{W+|fi|hajuvesi}}, {{W+|fi|parfyymi}}
* {{Z|fr}}: {{W+|fr|parfum|n}}
* {{Z|gl}}: {{W+|gl|perfume|n}}
* {{Z|ka}}: {{W-|ka|სურნელება}}
* {{Z|hi}}: {{W-|hi|ख़ुशबू|m}}
* {{Z|nl}}: {{W+|nl|parfum|nt}}
* {{Z|he}}: {{W+|he|בושם|n|tr=bósem|cuda=בושם / בֹּשֶׂם}}
* {{Z|ang}}: {{W-|ang|wyrtġemang|nt}}
* {{Z|en}}: {{W+|en|perfume}}
* {{Z|ga}}: {{W+|ga|cumhrán|n}}
* {{Z|it}}: {{W+|it|profumo|n}}
* {{Z|is}}: {{W+|is|ilmvatn|nt}}
* {{Z|ja}}: {{W+|ja|香水|tr=こうすい, kōsui}}
* {{Z|jra}}: {{W-|jra|ia kluñ}}
* {{Z|ca}}: {{W+|ca|perfum|n}}
* {{Z|ky}}: {{W+|ky|атыр}}, {{W-|ky|духи}}
* {{Z|ko}}: {{W+|ko|향수}}
* {{Z|la}}: {{W-|la|unguentum|nt}}, {{W-|la|costum|nt}}, {{W-|la|hēdycrum|nt}}
* {{Z|lv}}: {{W-|lv|parfīms|n}}
* {{Z|lo}}: {{W-|lo|ນ້ຳອົບ}}
* {{Z|lt}}: {{W-|lt|kvepalai|p}}
* {{Z|lb}}: {{W-|lb|Parfum|n}}
* {{Z|mdh}}: {{W-|mdh|mamut}}
* {{Z|mk}}: {{W-|mk|парфе́м|n}}, {{W-|mk|мирис|n}}
* {{Z|ms}}: {{W-|ms|minyak wangi}}, {{W-|ms|minyak attar}}
* {{Z|mi}}: {{W-|mi|hinu kakara}}
* {{Z|mrw}}: {{W-|mrw|randag}}
* {{Z|hu}}: {{W+|hu|parfüm}}, {{W+|hu|illatszer}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|сүрчиг}}
* {{Z|nv}}: {{W-|nv|tó łikání halchiní}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|parfyme|n}}
*: {{Z|nn}}: {{W-|nn|parfyme|n}}
* {{Z|ug}}: {{W-|ug|ئەتىر}}
* {{Z|uz}}: {{W+|uz|atir}}, {{W-|uz|duxi}}
* {{Z|ps}}: {{W+|ps|عطر|n|tr='atәr}}
* {{Z|pl}}: {{W+|pl|perfumy|p}}
* {{Z|pt}}: {{W+|pt|perfume|n}}
* {{Z|kk}}: {{W+|kk|әтір}}
* {{Z|cop}}: {{W-|cop|ϣⲟⲟⲩ}}
* {{Z|ro}}: {{W+|ro|parfum|nt}}
* {{Z|ru}}: {{W+|ru|духи́|n-p}}, {{W+|ru|парфю́м|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|па̀рфе̄м|n}}
*: Latînî: {{W+|sh|pàrfēm|n}}
* {{Z|sk}}: {{W-|sk|vôňa|m}}, {{W-|sk|voňavka|m}}
* {{Z|sl}}: {{W+|sl|parfum|n}}
* {{Z|es}}: {{W+|es|perfume|n}}
* {{Z|sw}}: {{W+|sw|marashi}}
* {{Z|sv}}: {{W+|sv|parfym|g}}
* {{Z|zdj}}: {{W-|zdj|marashi|c6}}
* {{Z|tg}}: {{W-|tg|атр}}
* {{Z|tl}}: {{W-|tl|pabango}}
* {{Z|th}}: {{W+|th|น้ำหอม}}
* {{Z|tr}}: {{W+|tr|burcu}}, {{W+|tr|parfüm}}
* {{Z|tk}}: {{W+|tk|atyr}}
* {{Z|tpi}}: {{W-|tpi|sanda}}
* {{Z|ur}}: {{W-|ur|خوشبو|tr=xuśbū}}
* {{Z|uk}}: {{W-|uk|духи́|nt-p}}, {{W-|uk|парфу́м|n}}
* {{Z|vi}}: {{W-|vi|nước thơm}}, {{W+|vi|nước hoa}}
* {{Z|cy}}: {{W-|cy|peraroglau|n}}
* {{Z|km}}: {{W-|km|គន្ធរស}}, {{W-|km|ទឹកអប់}}
* {{Z|el}}: {{W+|el|άρωμα|nt}}
*: Kevn: {{W-|grc|μύρον|nt}}
* {{Z|za}}: {{W-|za|raemxhom}}
{{werger-bin}}
:{{werger çavkanî|en|perfume|beş=Ev qismê Wergerê|oldid=75875699}}
fmomy4lzs4gr7zkf0gze8y7dzcp0a1u
mehî
0
25027
6329052
6311857
2026-08-11T11:53:39Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329052
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[muçe]], [[miz]], [[meaş]], <br>[[dirav]]ê ku [[karker]] her [[meh]]ê [[car]]ekê [[wergirtin|werdigirin]]
#* {{jêder-malper|ku|jêgirtin=Bo zanîn, General Şêx Elo qesreke mezin li bajarê Stanbûlê heye, ew qesir wî bi sed û pêncî hizar dolaran kirriye û her sal dema ew diçe Europa, ew [[xêzan]]a xwe di wê qesrê de dihêle ta dema vegeryana wî. Li wê qesrê [[zêrevan]]ek heye û ew zêrevan '''mehiya''' xwe ji Fermandeya Behdînan ya Leşkirê Kurdistanê digire, ango ew zêrevan weke pêşmerge li [[fermande]]yê qeyd kiriye û ew bi xwe li bajarê Stanbûlê dimîne.|nivîskar=Binav Sindî|sernav=Generalên me dixwazin Tirkiyê dagîr bikin!|malper=Lotikxane.com|sal=9/2006}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|مههی}}
==== Jê ====
* [[mehîtî]]
==== Etîmolojî ====
Ji {{paş|ku|meh|-î}}
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W|ar|تجلط|guman=erê}}, {{W|ar|خاثر|guman=erê}}, {{W|ar|خثر|guman=erê}}, {{W|ar|صئك|guman=erê}}, {{W|ar|طثر|guman=erê}}
* {{Z|tr}}: {{W|tr|aylık}}
{{werger-bin}}
=== Rengdêr ===
{{rengdêr|ku}}
# her [[meh]], [[mehane]]
#* {{bêmînak|ku}}
# li [[gor]] [[meh]]an
#* {{bêmînak|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
gtbrsg7cf3byc53bdz9karefcxrxcfv
kezîzer
0
25656
6329016
6310087
2026-08-11T11:52:20Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329016
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[keç|Keç]] û [[jin]]ê ku [[por]]ê wan [[zer]] e.
#* {{jêder-malper|ku|jêgirtin=Xwe ji aliyekî ve kenand, ji aliyên din ve xwe vezîland, bi kul û keser jî riha sipî hejand. Ji kerba dilberan, ji eşqa '''kezîzeran''', welat li bîra wî hat.|nivîskar=Welîd Murad|sernav=Xewsê Nûranî|malper=Rojavanet.com|sal=5/2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[kezîzerî]]
* [[kezîzerîtî]]
* [[kezîzertî]]
==== Etîmolojî ====
Ji {{pêk|ku|kezî|zer}}.
==== Bide ber ====
* [[kej]]
* [[por-reş]]
==== Werger ====
{{werger-ser}}
* {{Z|fi}}: {{W+|fi|vaaleaverikkö}}, {{W+|fi|blondi}}
* {{Z|fr}}: [[blonde]] (femme)
* {{Z|en}}: {{W+|en|blond}}, [[blonde]] (only women)
{{werger-bin}}
mrd2ny53fyqjk39od25b0st9pzx7bun
korsan
0
25827
6329027
6263060
2026-08-11T11:52:43Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329027
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku}}
# [[rêbir]], [[keleş]], [[rêgir]], [[eşqiya]], [[heydûd]], [[nijdevan]], [[cerdevan]], [[çete]], [[talanker]], [[revîner]], <br>kesa/ê ku bi [[darê zorê]] tiştekî ji [[xwedan]]ên wê [[standin|distîne]] û [[revandin|direvîne]] <br>(bi taybetî [[keştî|keştiyan]] yan [[firoke]]yan)
#* {{jêder-malper|ku|jêgirtin='''Korsanê''' firoka tirk fîrarekî eskerîyê derket|malper=Netkurd.com|sal=10/2006}}
==== Formên alternatîv ====
* [[qorsan]]
==== Jê ====
* [[korsanî]]
* [[korsanîtî]]
* [[korsantî]]
* [[korsanwarî]]
* [[bi korsanî]]
==== Etîmolojî ====
ji Îtalyanî, 'corsaro' mane; [[talan]], [[şelandin]], [[rê birîn]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Freibeuter|m}}, {{W|de|Räuber|m|guman=erê}}
* {{Z|fi}}: {{W+|fi|kaappaaja}}
* {{Z|en}}: {{W+|en|pirate}}, {{W+|en|hijacker}}, {{W+|en|rapparee}}, {{W+|en|rover}}
* {{Z|tr}}: {{W+|tr|haydut}}, {{W+|tr|korsan}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-ToprakM-korsan.wav|Deng|dever=Îzmîr, Tirkiye}}
=== Navdêr ===
{{navdêr|tr}}
# [[cerde]], [[keleş]]
#* {{bêmînak|tr}}
# [[cerdevan]], korsan
#* {{bêmînak|tr}}
# [[rêbir]]
#* {{bêmînak|tr}}
5ol53f9476il3i1850xjusj6k769htc
мочь
0
26910
6328743
5900674
2026-08-10T22:53:36Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328743
wikitext
text/x-wiki
== {{ziman|ru}} ==
=== Lêker ===
{{lêker|ru}}
# [[karîn]], [[şiyan]], [[kanîn]]
#* {{bêmînak|ru}}
ekqiek3vjauo0wuw3yf531d734f50jq
berr
0
28610
6328802
6294425
2026-08-11T00:28:18Z
Balyozbot
7867
/* Navdêr 1 */ sererastkirin
6328802
wikitext
text/x-wiki
{{bnr-h|ber|berr|bêr|-ber}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-berr.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=?}}
# ''(deşt)'' {{rastnivîs|ber|beş=Navdêr 5}}
#* {{jêder-malper|ku|jêgirtin=Wê bigêrre der zemîn û asîman<br>Behr û '''berr''' û şerq û xerbê 'alemê|nivîskar=Mele Hisênê Bateyî|wergêr=HUSEIN MUHAMMED|sernav=Mewlûda Pêxemberî|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=33&RubricNr=&ArticleNr=4996|malper=nefel.com|sal=2010}},
==== Etîmolojî ====
Ji bingeha erebî {{ar-root|ب ر ر}}, ji navdêrê erebî {{ji|ar|ku|بَرّ}}. <ref> "Etymology 1" https://en.wiktionary.org/wiki/%D8%A8%D8%B1#Arabic</ref>, <ref>https://www.almaany.com/en/dict/ar-en/%D8%A8%D8%B1/ </ref>
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# ''(xawlî, xalîçe, kilîm)'' {{rastnivîs|ber|beş=Navdêr 6}}
== {{ziman|non}} ==
=== Rengdêr ===
{{rengdêr|non}}
# {{g|ku|tazî}}, {{g|ku|rût}}, {{g|ku|rûs}}, {{g|ku|bêcil}}
#* {{bêmînak|non}}
=== Çavkanî ===
{{rûpela wergerê|non|tazî}}
k3rh7hggrr7nv4co5dydlyadqa8gbt9
eyar
0
29007
6328954
6327558
2026-08-11T11:49:50Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328954
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{beş|Rengdêr}}
** {{deng|ku|LL-Q36368 (kur)-Mihemed Qers-eyar.wav|dever=Qers}}
* {{beş|Navdêr}}
** {{deng|ku|LL-Q36368 (kur)-Mihemed Qers-eyar(post).wav|dever=Qers}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[înyan]], [[dirist]], [[saz]], [[rast]], li [[gor]] [[pêwîstî|pêwîstiyê]]
#: {{mk|ku|Saet '''eyar''' kirin}}
==== Formên alternatîv ====
* {{g|ku|ayar}} (2)
* {{g|ku|'ayar}}
* {{g|ku|'eyar}}
* {{g|ku|yar}}
==== Jê ====
{{kol3|ku|cure=Jê
|eyar bûn<q:lêker>
|eyar kirin<q:lêker>
|eyarbûn<q:navdêr>
|eyarkirin<q:navdêr>
|eyarbûyî<q:rengdêr>
|eyarkirî<q:rengdêr>
|eyarî
|eyarker
|eyarkî
}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|عيار|tr='iyar}} ji {{ji|arc|ku||tr='-y-r|w=[[çavdêrî]] lê kirinעיר}}.
==== Werger ====
{{werger-ser|1}}
* {{Z|de}}: {{W|de|Verstellung}}
* {{Z|fa}}: {{W|fa|عیار}}
* {{Z|tr}}: {{W|tr|ayar}}
{{werger-bin}}
{{werger-ser|?}}
* {{Z|fa}}: {{W|fa|کیسه پوستی|guman=erê}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[post|Postê]] pez va tê çêkirin [[toraq]] têdixin hundirê wê.
#: {{hevmane|ku|çerm|pîst}}
#* ''Salewextê heqê bavê min du bar genim, '''eyarek toraq''', [[danzdeh]] girvankê (204.75 gr) rûn, destek kinc û du cot çarix bûn''<ref>1931, ''Hakob Qezeryan-Lazo'', ''Serhatiya Casim'', guhastin:Haciyê Cindî-Emînê Evdal </ref>
#* {{jêder-malper|ku|jêgirtin=Nazê li bin sêpîkê xweş hildike<br> Nermê bi desta dike dew kil dike <br>Meşka Nazê nermik e şeşçermik e<br>'''Eyarê''' wê xavik e wek textik e<br>Çavê Nazê şînik e çavwerdek e.|nivîskar=Arşevîn|sernav=Nazya reben nazike|url=http://www.lotikxane.com/arsiv/arsiv%2077.html|malper=Lotikxane.com|sal=11/2007}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Leder}} {{n}}, {{W|de|Pelz}} {{n}}, {{W|de|Regelung}} {{mê}}, {{W|de|Schlauch|m|guman=erê}}, {{W|de|Fell}} {{n}}
* {{Z|en}}: {{W|en|pelt}}
* {{Z|tr}}: {{W|tr|post}}, {{W|tr|pösteki|guman=erê}}, {{W|tr|tulum|guman=erê}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
79lkqwgcbxssdd0tit39yjj8u38if3v
kepaze
0
29538
6329006
6283411
2026-08-11T11:51:59Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329006
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|kepaze}}
{{rengdêr|ku}}
# [[riswa]], [[rezîl]], [[şerpeze]], [[perîşan]], [[belengaz]], [[jar]]
#* {{jêder-malper|ku|jêgirtin=Îsraîlê serokwezîrê filistîniyan Îsmaîl Haniye '''kepaze''' kir|malper=Nefel.com|sal=12/2006}}
# [[bedniyet]], [[niyetxirab]], [[xêrnexwaz]], [[xirabîxwaz]], [[belakir]]
#* {{bênimûne|ku}}
==== Jê ====
{{kol3|ku
|kepaze bûn<pos:lêker>
|kepaze kirin<pos:lêker>
|kepazebûn<pos:navdêr>
|kepazekirin<pos:navdêr>
|kepazebûyî<pos:navdêr>
|kepazekirî<pos:navdêr>
|kepazehî
|kepazetî
|kepazeyî
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|lächerlich}}, {{W+|de|schamlos}}, {{W+|de|verächtlich}}, {{W+|de|schändlich}}
* {{Z|fa}}: {{W+|fa|رسوا}}, {{W+|fa|آبرو ریخته}}
* {{Z|en}}: {{W+|en|vile}}, {{W+|en|infamous}}, {{W+|en|scandalous}}, {{W+|en|shameful}}, {{W+|en|ridiculous}}, {{W+|en|contemptible}}
* {{Z|tr}}: {{W+|tr|utanmaz}}, {{W+|tr|rezil}}, {{W+|tr|gülünç}}, {{W+|tr|değersiz}}, {{W+|tr|kepaze}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Rengdêr ===
{{rengdêr|tr}}
# kepaze
#* {{bênimûne|tr}}
# [[rezîl]]
#* {{bênimûne|tr}}
# [[berbat]]
#* {{bênimûne|tr}}
# [[pêşkenî]], [[komîk]]
#* {{bênimûne|tr}}
# di wexta meşqkirinê de sistbûna jiya kevan
#* {{bênimûne|tr}}
fxm1bkt4pv2xkyks4aiuybcx2p7ryw3
çarçav
0
29591
6328877
5902506
2026-08-11T10:52:53Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328877
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesên ku [[berçavk]] datînin ber çavên xwe.
#: {{jêder-malper|ku|jêgirtin=Xanima min jî di dawiya emrê xwe da ewêpîreke bi berçavk, ewê jî wek min bibe '''çarçav'''...|nivîskar=Zinarê Xamo|sernav=Çîroka berçavka min|url=https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|urlya-arşîvê=https://web.archive.org/web/20230101233133/https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|malper=Hindik Rindik - zinarexamo.blogspot.com|dîrok=02-23-2021}}
# Kesê ku bi [[hişyarî]] an bi [[baldarî]] hereket dike.
#: {{jêder-malper|ku|jêgirtin=Şivan tim li ber pez e û her daîm şiyar e, bi çav, goh û hestên xwe tim bi '''çarçav''' e. Pez bi ro û şev tim di talûkê de ye, talûke; diz, keftar, gur û dijmin e.|nivîskar=Paşa Amedî|sernav=Jiyan û rewşa şivanê Kurda|url=https://candname.com/jiyan-u-rewsa-sivane-kurda/|urlya-arşîvê=https://web.archive.org/web/20230101233450/https://candname.com/jiyan-u-rewsa-sivane-kurda/|malper=Çandname|dîrok=04-07-2017}}
# Kesên meraqdarê tiştekî ne, hêvîdariya meraqdariyê.
#: {{jêder-kovar|ku|jêgirtin=Çaxê ku her sê bira vegerîyan, '''çarçav''' bûn, je hev pirsîn te mal temîz kirîye her sîyan got na gotin minê kê temîz kirîye?|kovar=Fritillaria Kurdica - Bulletin of Kurdish Studies|sernav=Denenara qêza kêlik|url=https://www.kurdishstudies.pl/files/Fritillaria_Kurdica_2017_16[1].pdf|nivîskar=Abdollah Hajiyan|nivîskar2=Umîd Demîrhan|hejmar=16|dîrok=01-03-2017|rûpel=105}}
==== Etîmolojî ====
Ji {{pêk|ku|çav|çav}}. Maneya yekem bi tesîra zimanê tirkî ketiye kurdî.
==== Werger ====
{{werger-ser|Kesên biberçavk}}
{{werger-bin}}
{{werger-ser|Kesê ku bi baldarî hereket dike}}
{{werger-bin}}
{{werger-ser|Kesên meraqdarê tiştekî}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mj|Rûyê lihêfê, rûyê serdoşekê}} {{guherto|ku|çarçef}}
ahmz8zl5f284hybswj8j3c3j96xmtls
6328878
6328877
2026-08-11T10:53:32Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328878
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesên ku [[berçavk]] datînin ber çavên xwe.
#: {{jêder-malper|ku|jêgirtin=Xanima min jî di dawiya emrê xwe da ewêpîreke bi berçavk, ewê jî wek min bibe '''çarçav'''...|nivîskar=Zinarê Xamo|sernav=Çîroka berçavka min|url=https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|urlya-arşîvê=https://web.archive.org/web/20230101233133/https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|malper=Hindik Rindik - zinarexamo.blogspot.com|dîrok=2021-02-23}}
# Kesê ku bi [[hişyarî]] an bi [[baldarî]] hereket dike.
#: {{jêder-malper|ku|jêgirtin=Şivan tim li ber pez e û her daîm şiyar e, bi çav, goh û hestên xwe tim bi '''çarçav''' e. Pez bi ro û şev tim di talûkê de ye, talûke; diz, keftar, gur û dijmin e.|nivîskar=Paşa Amedî|sernav=Jiyan û rewşa şivanê Kurda|url=https://candname.com/jiyan-u-rewsa-sivane-kurda/|urlya-arşîvê=https://web.archive.org/web/20230101233450/https://candname.com/jiyan-u-rewsa-sivane-kurda/|malper=Çandname|dîrok=04-07-2017}}
# Kesên meraqdarê tiştekî ne, hêvîdariya meraqdariyê.
#: {{jêder-kovar|ku|jêgirtin=Çaxê ku her sê bira vegerîyan, '''çarçav''' bûn, je hev pirsîn te mal temîz kirîye her sîyan got na gotin minê kê temîz kirîye?|kovar=Fritillaria Kurdica - Bulletin of Kurdish Studies|sernav=Denenara qêza kêlik|url=https://www.kurdishstudies.pl/files/Fritillaria_Kurdica_2017_16[1].pdf|nivîskar=Abdollah Hajiyan|nivîskar2=Umîd Demîrhan|hejmar=16|dîrok=01-03-2017|rûpel=105}}
==== Etîmolojî ====
Ji {{pêk|ku|çav|çav}}. Maneya yekem bi tesîra zimanê tirkî ketiye kurdî.
==== Werger ====
{{werger-ser|Kesên biberçavk}}
{{werger-bin}}
{{werger-ser|Kesê ku bi baldarî hereket dike}}
{{werger-bin}}
{{werger-ser|Kesên meraqdarê tiştekî}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mj|Rûyê lihêfê, rûyê serdoşekê}} {{guherto|ku|çarçef}}
l8696jct9czhychnz0rafeq60datcqv
6328879
6328878
2026-08-11T10:54:05Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328879
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesên ku [[berçavk]] datînin ber çavên xwe.
#* {{jêder-malper|ku|jêgirtin=Xanima min jî di dawiya emrê xwe da ewêpîreke bi berçavk, ewê jî wek min bibe '''çarçav'''...|nivîskar=Zinarê Xamo|sernav=Çîroka berçavka min|url=https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|urlya-arşîvê=https://web.archive.org/web/20230101233133/https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|malper=Hindik Rindik - zinarexamo.blogspot.com|dîrok=2021-02-23}}
# Kesê ku bi [[hişyarî]] an bi [[baldarî]] hereket dike.
#* {{jêder-malper|ku|jêgirtin=Şivan tim li ber pez e û her daîm şiyar e, bi çav, goh û hestên xwe tim bi '''çarçav''' e. Pez bi ro û şev tim di talûkê de ye, talûke; diz, keftar, gur û dijmin e.|nivîskar=Paşa Amedî|sernav=Jiyan û rewşa şivanê Kurda|url=https://candname.com/jiyan-u-rewsa-sivane-kurda/|urlya-arşîvê=https://web.archive.org/web/20230101233450/https://candname.com/jiyan-u-rewsa-sivane-kurda/|malper=Çandname|dîrok=04-07-2017}}
# Kesên meraqdarê tiştekî ne, hêvîdariya meraqdariyê.
#* {{jêder-kovar|ku|jêgirtin=Çaxê ku her sê bira vegerîyan, '''çarçav''' bûn, je hev pirsîn te mal temîz kirîye her sîyan got na gotin minê kê temîz kirîye?|kovar=Fritillaria Kurdica - Bulletin of Kurdish Studies|sernav=Denenara qêza kêlik|url=https://www.kurdishstudies.pl/files/Fritillaria_Kurdica_2017_16[1].pdf|nivîskar=Abdollah Hajiyan|nivîskar2=Umîd Demîrhan|hejmar=16|dîrok=01-03-2017|rûpel=105}}
==== Etîmolojî ====
Ji {{pêk|ku|çav|çav}}. Maneya yekem bi tesîra zimanê tirkî ketiye kurdî.
==== Werger ====
{{werger-ser|Kesên biberçavk}}
{{werger-bin}}
{{werger-ser|Kesê ku bi baldarî hereket dike}}
{{werger-bin}}
{{werger-ser|Kesên meraqdarê tiştekî}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mj|Rûyê lihêfê, rûyê serdoşekê}} {{guherto|ku|çarçef}}
m7uw3tjml8dc8rom0lcbrpcsrih3xd0
6328880
6328879
2026-08-11T10:54:25Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328880
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesên ku [[berçavk]] datînin ber çavên xwe.
#* {{jêder-malper|ku|jêgirtin=Xanima min jî di dawiya emrê xwe da ewêpîreke bi berçavk, ewê jî wek min bibe '''çarçav'''...|nivîskar=Zinarê Xamo|sernav=Çîroka berçavka min|url=https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|urlya-arşîvê=https://web.archive.org/web/20230101233133/https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|malper=Hindik Rindik - zinarexamo.blogspot.com|dîrok=2021-02-23}}
# Kesê ku bi [[hişyarî]] an bi [[baldarî]] hereket dike.
#* {{jêder-malper|ku|jêgirtin=Şivan tim li ber pez e û her daîm şiyar e, bi çav, goh û hestên xwe tim bi '''çarçav''' e. Pez bi ro û şev tim di talûkê de ye, talûke; diz, keftar, gur û dijmin e.|nivîskar=Paşa Amedî|sernav=Jiyan û rewşa şivanê Kurda|url=https://candname.com/jiyan-u-rewsa-sivane-kurda/|urlya-arşîvê=https://web.archive.org/web/20230101233450/https://candname.com/jiyan-u-rewsa-sivane-kurda/|malper=Çandname|dîrok=04-07-2017}}
# Kesên meraqdarê tiştekî ne, hêvîdariya meraqdariyê.
#* {{jêder-kovar|ku|jêgirtin=Çaxê ku her sê bira vegerîyan, '''çarçav''' bûn, je hev pirsîn te mal temîz kirîye her sîyan got na gotin minê kê temîz kirîye?|kovar=Fritillaria Kurdica - Bulletin of Kurdish Studies|sernav=Denenara qêza kêlik|url=https://www.kurdishstudies.pl/files/Fritillaria_Kurdica_2017_16[1].pdf|nivîskar=Abdollah Hajiyan|nivîskar2=Umîd Demîrhan|hejmar=16|dîrok=01-03-2017|rûpel=105}}
==== Etîmolojî ====
Ji {{pêk|ku|çav|çav}}.
==== Werger ====
{{werger-ser|Kesên biberçavk}}
{{werger-bin}}
{{werger-ser|Kesê ku bi baldarî hereket dike}}
{{werger-bin}}
{{werger-ser|Kesên meraqdarê tiştekî}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mj|Rûyê lihêfê, rûyê serdoşekê}} {{guherto|ku|çarçef}}
lsjluy14qong2oa4la3orfz9twjpqre
6328881
6328880
2026-08-11T11:17:54Z
Wikihez
7344
([[m:Special:MyLanguage/User:Jon Harald Søby/diffedit|diffedit]])
6328881
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesên ku [[berçavk]] datînin ber çavên xwe.
#* {{jêder-malper|ku|jêgirtin=Xanima min jî di dawiya emrê xwe da ewêpîreke bi berçavk, ewê jî wek min bibe '''çarçav'''...|nivîskar=Zinarê Xamo|sernav=Çîroka berçavka min|url=https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|urlya-arşîvê=https://web.archive.org/web/20230101233133/https://zinarexamo.blogspot.com/2021/02/ciroka-bercavka-min.html|malper=Hindik Rindik - zinarexamo.blogspot.com|dîrok=2021-02-23}}
# Kesê ku bi [[hişyarî]] an bi [[baldarî]] hereket dike.
#* {{jêder-malper|ku|jêgirtin=Şivan tim li ber pez e û her daîm şiyar e, bi çav, goh û hestên xwe tim bi '''çarçav''' e. Pez bi ro û şev tim di talûkê de ye, talûke; diz, keftar, gur û dijmin e.|nivîskar=Paşa Amedî|sernav=Jiyan û rewşa şivanê Kurda|url=https://candname.com/jiyan-u-rewsa-sivane-kurda/|urlya-arşîvê=https://web.archive.org/web/20230101233450/https://candname.com/jiyan-u-rewsa-sivane-kurda/|malper=Çandname|dîrok=04-07-2017}}
# Kesên meraqdarê tiştekî ne, hêvîdariya meraqdariyê.
#* {{jêder-kovar|ku|jêgirtin=Çaxê ku her sê bira vegerîyan, '''çarçav''' bûn, je hev pirsîn te mal temîz kirîye her sîyan got na gotin minê kê temîz kirîye?|kovar=Fritillaria Kurdica - Bulletin of Kurdish Studies|sernav=Denenara qêza kêlik|url=https://www.kurdishstudies.pl/files/Fritillaria_Kurdica_2017_16[1].pdf|nivîskar=Abdollah Hajiyan|nivîskar2=Umîd Demîrhan|hejmar=16|dîrok=01-03-2017|rûpel=105}}
==== Etîmolojî ====
Ji {{pêk|ku|çar|çav}}.
==== Werger ====
{{werger-ser|Kesên biberçavk}}
{{werger-bin}}
{{werger-ser|Kesê ku bi baldarî hereket dike}}
{{werger-bin}}
{{werger-ser|Kesên meraqdarê tiştekî}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mj|Rûyê lihêfê, rûyê serdoşekê}} {{guherto|ku|çarçef}}
gz2afqjtba97ootvpmyz7q4u8gfdfhu
luks
0
31330
6329046
6311352
2026-08-11T11:53:25Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329046
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[wurşedar]], [[mirêsdar]], [[cih]]ê yan tiştê [[pirr]] [[xweş]] û [[bihagiran]]
#* {{jêder-malper|ku|jêgirtin=li gor hinek ji çapemenîya Îtalî û mikurhatina hinek kesên Kurd û Îtalî, kurê Celal Talabanî Qubad Talabanî daweta zewaca xwe li Îtalya, di ciyekî pir '''luks''' de çêkiriye û 10 milyon dolar lê serf kiriye.|malper=Lotikxane.com|sal=2/2007}}
==== Formên alternatîv ====
* [[lûks]]
==== Jê ====
* [[luksî]]
==== Etîmolojî ====
Bi rêya {{ji|fr|ku|luxe}} ji latînî ''[[luxus]]'' (bi[[bereket]]).
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|üppig|guman=erê}}
* {{Z|fi}}: {{W+|fi|loisto-}}
* {{Z|fr}}: {{W+|fr|luxe}}
* {{Z|en}}: {{W+|en|luxurious}}, {{W+|en|luxe}}, {{W+|en|luxury}}, {{W|en|lux|guman=erê}}
* {{Z|tr}}: {{W+|tr|lüks}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[lampe]], [[gulop]], [[ronahî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
bul1zfzq10qook82sxdrfqtp3tupdcf
aranje
0
32945
6328778
6133564
2026-08-11T00:25:27Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328778
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|aranje}}
{{rengdêr|ku}}
# [[amade]], [[hazir]]
#* {{jêder-malper|ku|jêgirtin=Hemû stranên wî jî ji aliyê Merdên ve hatine '''aranje'''kirin. Lê belê pirsgirêka vê albumê jî bêtir di nava van stranan re diyar dibin ku ew jî nêviyê albumê ye, ji ber ku di albumê de duwazdeh stran hene.|nivîskar=Ibrahîm Seydo Aydogan|sernav=Çar Newa û laboratuara wê|url=http://www.amude.net/Kultur_Kurdi_deep.php?newsLanguage=Kurdi&newsId=5799|malper=Amude.de|sal=2/2007}}
==== Jê ====
{{kol3|ku|cure=Jê
|aranje bûn<q:lêker>
|aranje kirin<q:lêker>
|aranjebûn<q:navdêr>
|aranjekirin<q:navdêr>
|aranjebûyî<q:rengdêr>
|aranjekirî<q:rengdêr>
|aranjer
|aranjeker
}}
==== Etîmolojî ====
Ji {{deyn|fr|ku|arrangé}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|düzenleme}}
{{werger-bin}}
3iq6s6giezbe06tnmob1bqcp8n71mdj
cumbuş
0
32948
6328876
6245416
2026-08-11T10:52:33Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328876
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:cumbus.jpg|thumb|cumbuşek]]
{{navdêr|ku|z=m}}
# {{f|ku|muzîk}} [[amûr]]ek [[muzîk]]ê ya mîna [[od]]ê yan [[saz]]ê ye
#* {{jêder-malper|ku|jêgirtin=Muzîka kurdî ya klasîk bi tembûrê tê naskirin. [[Ribab]] û '''cumbuş''' û [[bisk]] jî di vî warî de tembûrê temam dikin.|nivîskar=Ibrahîm Seydo Aydogan|sernav=Çar Newa û laboratuara wê|url=http://www.amude.net/Kultur_Kurdi_deep.php?newsLanguage=Kurdi&newsId=5799|malper=Amude.de|sal=2/2007}}
==== Formên alternatîv ====
* {{g|ku|cimbiş}}
* {{g|ku|cimbûş}}
* {{g|ku|cumbiş}}
* {{g|ku|cumbûş}}
* {{g|ku|cûmbûş}}
==== Jê ====
* {{g|ku|cumbuşjen}}
* {{g|ku|cumbuşjenî}}
* {{g|ku|cumbuşvan}}
* {{g|ku|cumbuşvanî}}
==== Etîmolojî ====
Ji {{deyn|tr|ku|cümbüş}} ji Zeynel Abidin Cümbüş, [[daner]]ê cumbuş.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|jamboree}}
* {{Z|tr}}: {{W+|tr|cümbüş}}
{{werger-bin}}
qswny2ftb5upmj731ffkul6mcn6kpzs
dîlema
0
33856
6328933
6305708
2026-08-11T11:43:23Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328933
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Rewşa dijwar ku tê de du [[vebijêrk]]ên her du jî ne[[gengaz]] in hene.
#: {{hevmaneyên peyvê|ku|erê-na}}
#* {{jêder-malper|ku|jêgirtin='''Dîlemaya''' ji bo çînîyan ew e ka ew dê destê xwe biavêjin hêza sîyasî tevî ku ew jixwe xwedîyê hêza aborî ne, yan jî ew dê xwe li prensîpa parvekirinê bigirin, ya ku ji vî welatî tiştê ku îro heye çêkir.|nivîskar=Charles Dannaud|wergêr=Luqman Guldivê|sernav=LI MALEZYAYÊ HIKÛMET Û CIVAT BER BI HEVBERDANÊ VE DIÇIN|url=https://diplo-kurdi.com/ku/li-malezyaye-hikumet-u-civat-ber-bi-hevberdane-ve-dicin|malper=diplo-kurdi.com|sal=2013}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* {{g|ku|dîlemayî}}
==== Etîmolojî ====
Ji {{deyn|en|ku|dilemma}}, ji {{ji|LL.|ku|dilemma}}, ji {{ji|grc|ku|δίλημμα||teklîfa nezelal}}, ji {{qal|grc|δι-||ya/yê bi du tiştan}} + {{qal|grc|λῆμμα||teklîf}}.
==== Bide ber ====
* {{g|ku|çare}}
* {{g|ku|çareserî}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|dilemma}}
* {{Z|tr}}: {{W+|tr|dilema}}, {{W+|tr|ikilem}}
{{werger-bin}}
atlw2mgsdv5kpprbqwos3j1x9gzds00
absûrd
0
34187
6328762
6244277
2026-08-11T00:04:27Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328762
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|absûrd}}
{{rengdêr|ku}}
# [[batil]], [[dûrî aqil]], [[gewc]], tişta/ê ku [[dij]]î [[eqil]]î ye, <br>tişta/ê [[aqilê selîm]] ni[[karîn|kare]] [[pejirandin|bipejirîne]]
#* {{jêder-malper|ku|jêgirtin=Lê tişta herî xweş, komîk, ecêb an jî ez çi bibêjim absûrd ev e ku di navberê de wekî çequlatên eyda bimbarek çend gotinokên kurdî jî dixwînin û rihê me gişan mest û serxweş dikin.|nivîskar=Evdile Koçer|sernav=Deriyê wêjeyê û deriyê sloganan|malper=Diyarname.com|sal=3/2007}}
==== Formên alternatîv ====
* [[absurd]]
==== Jê ====
* [[absûrdî]]
* [[absûrdîtî]]
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|absurd}} ji {{ji|frm|ku|absurde}}, ji {{ji|la|ku|absurdus}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|sinneloos}}, {{W-|af|absurd}}
* {{Z|sq}}: {{W+|sq|absurd}}
* {{Z|de}}: {{W+|de|widersinnig}}, {{W+|de|absurd}}, {{W-|de|ungereimt}}, {{W+|de|unsinnig}}, {{W+|de|albern}}
* {{Z|da}}: {{W-|da|absurd}}
* {{Z|eo}}: {{W-|eo|sensenca}}, {{W+|eo|absurda}}
* {{Z|fi}}: {{W+|fi|absurdi}}, {{W+|fi|järjetön}}
* {{Z|fr}}: {{W+|fr|absurde}}
* {{Z|fy}}: {{W-|fy|absurd}}, {{W-|fy|healwiis}}
* {{Z|nl}}: {{W+|nl|onzinnig}}, {{W+|nl|zinledig}}, {{W+|nl|zinloos}}, {{W+|nl|absurd}}, {{W+|nl|dwaas}}, {{W+|nl|ongerijmd}}, {{W+|nl|zinneloos}}, {{W+|nl|zot}}
* {{Z|io}}: {{W+|io|absurda}}
* {{Z|en}}: {{W+|en|absurd}}, {{W+|en|foolish}}, {{W+|en|nonsense}}, {{W+|en|nonsensical}}, {{W+|en|senseless}}, {{W+|en|silly}}
* {{Z|it}}: {{W+|it|assurdo}}
* {{Z|is}}: {{W+|is|fáránlegur}}
* {{Z|ca}}: {{W+|ca|absurd}}
* {{Z|la}}: {{W+|la|absurdus}}
* {{Z|hu}}: {{W+|hu|abszurd}}, {{W+|hu|képtelen}}
* {{Z|pap}}: {{W-|pap|apsurdo}}
* {{Z|pt}}: {{W+|pt|absurdo}}, {{W+|pt|disparatado}}
* {{Z|es}}: {{W+|es|absurdo}}
* {{Z|tr}}: {{W+|tr|absürd}}, {{W+|tr|saçma}}, {{W+|tr|batıl}}
{{werger-bin}}
1btwkrwanjp3rqxrdaei4d8bno9x763
dagerîn
0
36476
6328897
6304500
2026-08-11T11:25:21Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328897
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|dagerîn|form=negerguhêz|niha=ger|borî=geriya|pêşgir=da}}
{{lêker|ku|c=p-ngh}}, {{r-ya req}}
# [[peya bûn]]
#* {{bênimûne|ku}}
# [[qulipîn]], [[wergerîn]], [[serûbin]] bûn yan ketin ser [[tenişt]]ê, [[hatin xwarê]]
#* {{bênimûne|ku}}
# [[lê vegerîn]]
#* {{jêder-malper|ku|jêgirtin=Li ser vê yekê em arasteyî pirê dibin û cara duyem em di ser pira Nîssîbiyê ya li ser çemê Ferêt re derbas dibe û daxilê erda Komageneyê dibin. Em pirê derbas dikin nakin, em li ser milê xwe yê rastê '''dadigerin''' û ber û berê geliyê di navbera pira Nîssîbî û Gergerê de pêş ve diçin.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
#* {{jêder|ku|jêgirtin=Ji bo kêfa jina min lê neşikê û wê tempoya xwe dewam bike, bêyî ku kes bibîne min li mitfaxê lêvên wê maçî kir, tepek li kulîmeka wê ya rastê xist, bi çend gotinan pesnê wê da, pê rê bişirîm, paşê '''dageriyam''' odeya rûniştinê û min mêvan keremî xwarinê kirin.|{{Jêgirtin/Firat Cewerî/Payiza Dereng|weşanxane={{w|Avesta}}|sal=2014|r=16}}}}
==== Bi alfabeyên din ====
* {{ku-ar|داگهرین}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|dagerran
|dagerrhan
|dagerrihan
|dagerriyan
|dagerryan
|dagerrîn
|dageran
|dagerhan
|dagerihan
|dageriyan
|dageryan
}}
==== Jê ====
* {{g|ku|dageriyayî}}
* {{g|ku|dagerî}}
* {{g|ku|dagerok}}
==== Têkildar ====
* {{g|ku|dagerandin}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* {{g|ku|vegerîn}}
* {{g|ku|wergerîn}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anlaufen}}
* {{Z|ar}}: {{W-|ar|نزول}}, {{W+|ar|وطأ}}, {{W-|ar|رجوع}}
* {{Z|en}}: {{W+|en|diverge}}, {{W+|en|oblique}}, {{W+|en|set foot}}, {{W+|en|go down}}
* {{Z|tr}}: {{W+|tr|ağmak}}, {{W+|tr|avdet etmek}}, {{W+|tr|dönüşmek}}, {{W-|tr|inkilap etmek}}, {{W+|tr|inmek}}, {{W+|tr|tagayyür etmek}}, {{W+|tr|tahavvül etmek}}, {{W-|tr|kartlaşmak|guman=erê}}, {{W+|tr|sapmak|guman=erê}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[peyabûn]]
#* {{bênimûne|ku}}
# [[qulipîn]], [[wergerîn]], [[serûbin]] bûn yan ketin ser [[tenişt]]ê, [[hatin xwarê]]
#* {{bênimûne|ku}}
# [[lêvegerîn]]
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|Anlaufen}}
* {{Z|ar}}: {{W-|ar|نزول}}, {{W+|ar|وطأ}}, {{W-|ar|رجوع}}
* {{Z|en}}: {{W+|en|diverge}}, {{W+|en|oblique}}, {{W+|en|set foot}}, {{W+|en|go down}}
* {{Z|tr}}: {{W+|tr|inkilap}}, {{W+|tr|ağma}}, {{W+|tr|dönüşme}}, {{W+|tr|kartlaşma}}, {{W+|tr|tagayyür}}, {{W+|tr|tahavvül}}, {{W+|tr|transformasyon}},
{{werger-bin}}
kqxzo6gv1b1l7h0kqgw7poaikm3itob
klîk
0
36520
6329023
6310316
2026-08-11T11:52:35Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329023
wikitext
text/x-wiki
{{bnr-h|klik}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]], [[grûp]], [[koz]], [[ref]]
#* {{jêder|ku|jêgirtin=Abdullah Öcalan li ser pirsa jahrdadayîkirina xwe rawestiya û got ku ew bawer nake dewleta tirk ew ji xwe re kiribe hedef, lê di nav dewletê de kare '''klîkek''' (grûpek) hebe ku bixwaze berê xwe bidiyê. Wî got şilayiya ku li gewriya wî peyda bûye, hîn berdewam e û çêjeka metalîk tim di devê wî de heye. Wî got ew nizane ku ew ji xwarin û vexwarinê tê ya ji avûhewaya dora giravê ye, sedem divê bê tesbîtkirin. Ew dixwaze ku heyeteka serbixwe ji bo kontrolkirina tendurustuya wî biçe giravê. Wî got ev ji bo dewletê jî baş e. Çimkî dewlet jî ê ji tuhmetan rizgar bibe.|Netkurd.com, 4/2007}}
#* {{jêder-malper|ku|jêgirtin=Piştî wê, tevgera herî xedar a dîrokê DAIŞ hat peydakirin û dîsa pêşeng û îdeolgên wê, '''klîka''' serdest a tirk bû.|nivîskar=Mem Avba|sernav=Sêgoşeya stratejîk|url=https://xwebun.org/segoseya-stratejik/|malper=xwebun.org|dîrok=2020-04-26}}
#* {{jêder-malper|ku|jêgirtin=Bi taybetî piştî ku siyaseta kurdî ket bin bandora aktorên siyasî '''klîka''' ku ji xwandegehên fermî yên dewletê derçûne û medreseyên kurdî berêvka îtibar û bandora xwe ya di nav xwandayên kurd de winda kir, ev vatiş hîn zaltir bû.|nivîskar=FEXRIYA ADSAY|sernav=Di navbera bîranîn û bîr‘ne’anînê de - “Desteyek Ji Çîroka Jiyana Min”|url=https://www.basnews.com/kr/babat/325518|malper=basnews.com|sal=2017}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|kilîk}}
==== Jê ====
* {{g|ku|klîkî}}
==== Etîmolojî ====
Ji {{deyn|fr|ku|clique}}.
==== Bide ber ====
* {{g|ku|kilîl}}
* {{g|ku|kilît}}
* {{g|ku|klîp}}
==== Werger ====
{{werger-ser|kom, grûp}}
* {{Z|de}}: {{W|de|Clique|m}}
* {{Z|tr}}: {{W+|tr|bölük}}, {{W+|tr|hizip}}
{{werger-bin}}
omhoidemcli2jdcnhnthmw7vhbjxgeh
elît
0
36593
6328943
6326898
2026-08-11T11:47:28Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328943
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# [[bijare]], [[cilewdar]], [[serkêş]], [[pêşewa]], [[pêşeng]], <br>kesên ji hemûyan [[zîrek]]tir yan [[dewlemend]]tir
#* {{jêder-malper|ku|jêgirtin=Ew xwe ji jinên kurd ko bi kurdî diaxifin û li ber firotina satilîn mêst rûdinin, li pey barên hejikan in û li ber deriyên mizgeftan destên xwe vedigire bi ferqtir dibîne. Ji hêla şertên ko vê gavê ew tê de ye, pir normal e; lê ew bi xwe jî diyar û îtiraf dike bê ew çi qasî “bêjiya” civata kurd e. Ji ber ew weha bawer dike ko ew daxilî nav '''elîta''' kurd bûye, lê elîteke bi tu awayên xwe wek kurdan tev nagere. Elîteke ko bi kurdî nizane, elîteke ko bi tayinê hatiye ser serê kurdan û ne diyar e bê ew ê kengî bi [[tekme]]yê biçin.|nivîskar=[[w:Enwer Karahan|Enwer Karahan]]|sernav=Aysel Tugluk nefretê ji mêran dike|url=|malper=Nefel.com|sal=8/2007}}
==== Formên alternatîv ====
* [[êlît]]
==== Jê ====
* [[elîtî]]
* [[elîtîst]]
* [[elîtîzm]]
==== Etîmolojî ====
Ji {{ji|fr|ku|élite}} ji [[élire]].
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Elite|f|guman=erê}}
* {{Z|ar}}: {{W|ar|نخبة}} {{mê}}
* {{Z|fi}}: {{W|fi|eliitti}}, {{W|fi|parhaimmisto}}
* {{Z|fr}}: {{W|fr|élite}} {{mê}}
* {{Z|nl}}: {{W|nl|elite}} {{mê}}
* {{Z|he}}: [[עילית]] (‘ilít), [[אליטה]] (elíta)
* {{Z|en}}: {{W|en|elite}}
* {{Z|ca}}: {{W|ca|élite}} {{mê}}
* {{Z|ru}}: [[элита]] (elíta)
* {{Z|es}}: {{W|es|élite}} {{mê}}
* {{Z|tr}}: {{W|tr|elit}}, {{W|tr|seçkinler}}
{{werger-bin}}
pa9qgrkj0tbxrlj0mpjryxaihu015ab
dilniya
0
36660
6328917
6133954
2026-08-11T11:31:17Z
Balyozbot
7867
sererastkirin
6328917
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|dilniya}}
{{rengdêr|ku}}
# [[piştrast]], [[eseh]], [[bêguman]], [[misoger]], [[ekîd]], [[musir]]
#* {{jêder-malper|ku|jêgirtin=Divê hûn '''dilniya''' bin ku çarseriyeka eskerî ji bo vê meselê tu feyde nade.|malper=Netkurd.com|sernav=Nêçîrvan Barzanî di hevpeyivînekê de li gel CNNTurk|sal=4/2007}}
#* {{jêder|ku|jêgirtin=Tevî ku ez '''dilniya''' me ku tu ê xwe ji vê daxwazê re sersar nekî jî|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=67}}}}
==== Etîmolojî ====
Ji {{qertaf|ku|dil|niya}}.
==== Jê ====
* [[dilniyayî]]
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|مطمئن}}, {{W+|fa|راحت خیال}}
* {{Z|en}}: {{W+|en|good-tempered}}, {{W|en|contender|guman=erê}}, {{W|en|complacent|guman=erê}}, {{W|en|ingratiating|guman=erê}}, {{W|en|well-contented|guman=erê}}, {{W|en|pleased}}, {{W|en|satisfied}}
* {{Z|tr}}: {{W+|tr|hoşnut}}
{{werger-bin}}
bf5nt1kz10bnuguu2i0nx65j0lnj8mw
6328921
6328917
2026-08-11T11:41:06Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328921
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|dilniya}}
{{rengdêr|ku}}
# [[piştrast]], [[eseh]], [[bêguman]], [[misoger]], [[ekîd]], [[musir]]
#* {{jêder-malper|ku|jêgirtin=Divê hûn '''dilniya''' bin ku çarseriyeka eskerî ji bo vê meselê tu feyde nade.|malper=Netkurd.com|sernav=Nêçîrvan Barzanî di hevpeyivînekê de li gel CNNTurk|sal=4/2007}}
#* {{jêder|ku|jêgirtin=Tevî ku ez '''dilniya''' me ku tu ê xwe ji vê daxwazê re sersar nekî jî|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=67}}}}
==== Jê ====
* [[dilniyayî]]
==== Etîmolojî ====
Ji {{qertaf|ku|dil|niya}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|مطمئن}}, {{W+|fa|راحت خیال}}
* {{Z|en}}: {{W+|en|good-tempered}}, {{W|en|contender|guman=erê}}, {{W|en|complacent|guman=erê}}, {{W|en|ingratiating|guman=erê}}, {{W|en|well-contented|guman=erê}}, {{W|en|pleased}}, {{W|en|satisfied}}
* {{Z|tr}}: {{W+|tr|hoşnut}}
{{werger-bin}}
0giorb4b7lf4bx1p2rnum4a3gbgxscp
direfş
0
40249
6328930
6305408
2026-08-11T11:41:51Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328930
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[ala]], [[perçem]], [[beyreq]]
#* {{jêder-malper|ku|jêgirtin=Li kû bifire bila bifire, qertel hêlîna xwe di xiramê herî asê de, li zinarên herî li jor çê dike! Dênê xwe bidinê li Rojhilata Navîn ji roja roj de; remzên li ser hîm û hêtan, yên li ser al û '''drefşên''' şahristaniyên çûyî windabûyî, û ên welatên niha li ser piya mayî, sembola hêzdarî û desthelatdariya wan an şêr e, an qertel e, an jî baz e.|nivîskar=Arjen Arî|sernav=Ji nav 56 çivîkan qertelek...|malper=Diyarname.com|sal=6/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[direvş]]
* [[direwş]]
* [[drefş]]
* [[drevş]]
* [[drewş]]
==== Etîmolojî ====
Ji {{ji|ira}}. Bide ber {{hv|fa|درفش|tr=derafş|w=[[ala]]}}<ref>{{malper|nivîskar=francis joseph steingass|url=http://dsalsrv02.uchicago.edu/cgi-bin/philologic/getobject.pl?c.2:1:6172.steingass|sernav=درفش dirafsh|malper=uchicago.edu}}</ref>, {{hv|xcl|դրօշ|tr=drōš|w=ala}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Banner|m|guman=erê}}, {{W|de|Fahne|f|guman=erê}}, {{W|de|Fähnrich|m|guman=erê}}, {{W|de|Flagge|f|guman=erê}}
* {{Z|ar}}: {{W-|ar|عَلَم}}
* {{Z|fa}}: {{W+|fa|پرچم}}, {{W+|fa|نشان}}
* {{Z|en}}: {{W+|en|sanjak}}, {{W+|en|banner|guman=erê}}, {{W+|en|fane|guman=erê}}, {{W+|en|flag|guman=erê}}, {{W+|en|pennon|guman=erê}}, {{W+|en|vexillum|guman=erê}}
* {{Z|tr}}: {{W+|tr|flâma}}, {{W+|tr|ongun}}, {{W+|tr|sancak}}, {{W+|tr|sembol}}, {{W+|tr|flama}}, {{W+|tr|alem|guman=erê}}, {{W+|tr|bayrak|guman=erê}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
pwew3ddrws8o5mmbhmv9u3nt88xugsi
arif
0
40582
6328780
6245080
2026-08-11T00:25:39Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328780
wikitext
text/x-wiki
{{bnr-h|Arif}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=?}}
# [[fehma]], [[têgihiştî]], [[zana]], [[hişmend]], [[şareza]], [[pispor]], [[xwedî]]-[[irfan]]
#* {{jêder-malper|ku|jêgirtin='''Arif''' û fîlosof herduk jî li dû peydakirina heqîqet û rastiyê de ne, herduk li heqîqetê digerin. Lê cudahiya wan li çawaniya belgevehênan û şîweyta peydakirina rastiyê de ye. Fîlosof dixwaze bi rêka hiş û jîrbûna xwe û belgevehênana mentiqî rastiyê peyda bike, lê arif dixwaze li rêka evîn û evîndariyê rastiyê peydabike û bigihîje heqîqetê?|nivîskar=Perwîz Cîhanî|sernav=Irfan di Mem û Zîna Ehmedê Xanî de|url=http://www.xoybun.com/modules/Content/print.php?pid=980|malper=xoybun.com|sal=2007}}
==== Formên alternatîv ====
* [['arif]]
* [[arîf]]
* [['arîf]]
==== Jê ====
* [[arifî]]
* [[arifîtî]]
* [[ariftî]]
==== Etîmolojî ====
Ji {{ji|ar|ku|عريف|cuda=عَرِيف|w=zana, pispor, têgihiştî}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|arif}}
{{rengdêr|ku}}
# [[fehma]], [[têgihiştî]], [[zana]], [[hişmend]], [[şareza]], [[pispor]], [[xwedî]]-[[irfan]]
#* {{bêmînak|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[têgiştî]], [[fehmber]], [[fehma]], [[zana]]
#* {{bêmînak|tr}}
rg2vm2c3upcq7di8azroma9bcmmjdk2
mihrevan
0
40686
6329062
6100722
2026-08-11T11:53:59Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329062
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr ===
{{rengdêr|ku}}
# {{guharto|ku|mihrîvan}}
#* {{jêder-malper|ku|jêgirtin=Min bangkir, slav û '''mihrevan''' û bereketa Xwedê li te be biraderê Israfîl. Got: “Slav û mihrevan û bereketa Xwedê li te be jî dilyarê Xwedê”.|nivîskar=IBIN EBBAS|wergêr=Salih Bozan|sernav=Îsra û Mîhrac|url=http://avestakurd.net/blog/2014/12/30/isra-u-mihrac/|malper=avestakurd.net|sal=2014}}
#* {{jêder-pirtûk|ku|jêgirtin=Reberekî dilovan<br>Şervanekî '''mihrevan'''|nivîskar=Qedrîcan Rûgeş|sernav=Şerê Azadî|url=http://tirsik.net/danegeh/pirtuk/qedrican/%C5%9Eer%C3%AA%20azad%C3%AE-Qedr%C3%AEcan%20%20R%C3%BBge%C5%9F%20%20%C3%87%C3%AErokniv%C3%AEs.pdf|rûpel=41}}
#* {{jêder-pirtûk|ku|jêgirtin=wek Qezafî<br> weke Babayê mihrevan<br> bû dozeyar bû lavekar<br> bo me kurdan|nivîskar=Abbas ISM'ÎL|sernav=Xelata Mandêla|url=http://bnk.institutkurde.org/images/pdf/NKSTY36R9U.pdf|sal=1999|rûpel=19}}
hhkcrddqgvpcranzrtg57gposcuxwag
avangard
0
40778
6328783
6247212
2026-08-11T00:26:16Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328783
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|avangard}}
{{rengdêr|ku}}
# Kesên ku [[şêwaz]] û [[teknîk]]ên [[nûjen]] [[peyda]] dikin, <br>[[hunermend]]ên yan [[berhem]]ên [[herî]] [[nûjen]] û [[progresîv]] yên [[serdem]]a xwe.
#* {{jêder-malper|ku|jêgirtin=Di jiyana hunerî ya civakekê de heger avangardîzm (pêşengtî) tune be, hunera wê civakê ji alî pêşveçûnê ve xesandî û mirarî ye. Hunereke ku ji avangardîzmê mahrûm be, bêşoreş û pêşeroj e. Her weha ji ber ku her berhema hunerî ya '''avangard''', ji bo dema xwe avangard, û ji bo dema pêş klasîk e, hunera bêavangard, bêklasîk e jî. Tiştê ku empresyonîzm an jî sembolîzm kiriye klasîk, di dema wan de avangardiya wan e.|nivîskar=Rênas Jiyan|sernav=Avangardîzm û dem|malper=Azadiyawelat.com|sal=6/2007}}
==== Formên alternatîv ====
* {{hw|ku|avantgard}}
==== Hevmane ====
* {{g|ku|pêşeng}}
* {{g|ku|pêşrew}}
* {{g|ku|piyoner}}
* {{g|ku|progresîv}}
==== Etîmolojî ====
Ji {{ji|fr|ku|avant-garde}}.
==== Jê ====
* {{g|ku|avangardî}}
* {{g|ku|avangardîst}}
* {{g|ku|avangardîzm}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Avantgarde|f}}
* {{Z|da}}: {{W+|da|avantgarde}}
* {{Z|fr}}: {{W+|fr|avant-garde}}
* {{Z|he}}: {{W+|he|:he:אוונגרדי}}
* {{Z|en}}: {{W+|en|avant-garde}}, {{W+|en|avantgarde}}
* {{Z|tr}}: {{W+|tr|avangart}}
{{werger-bin}}
q3k6b9ekbiww448tfoiezvxv6ovkku5
6328842
6328783
2026-08-11T00:41:26Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328842
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|avangard}}
{{rengdêr|ku}}
# Kesên ku [[şêwaz]] û [[teknîk]]ên [[nûjen]] [[peyda]] dikin, <br>[[hunermend]]ên yan [[berhem]]ên [[herî]] [[nûjen]] û [[progresîv]] yên [[serdem]]a xwe.
#* {{jêder-malper|ku|jêgirtin=Di jiyana hunerî ya civakekê de heger avangardîzm (pêşengtî) tune be, hunera wê civakê ji alî pêşveçûnê ve xesandî û mirarî ye. Hunereke ku ji avangardîzmê mahrûm be, bêşoreş û pêşeroj e. Her weha ji ber ku her berhema hunerî ya '''avangard''', ji bo dema xwe avangard, û ji bo dema pêş klasîk e, hunera bêavangard, bêklasîk e jî. Tiştê ku empresyonîzm an jî sembolîzm kiriye klasîk, di dema wan de avangardiya wan e.|nivîskar=Rênas Jiyan|sernav=Avangardîzm û dem|malper=Azadiyawelat.com|sal=6/2007}}
==== Formên alternatîv ====
* {{hw|ku|avantgard}}
==== Hevmane ====
* {{g|ku|pêşeng}}
* {{g|ku|pêşrew}}
* {{g|ku|piyoner}}
* {{g|ku|progresîv}}
==== Jê ====
* {{g|ku|avangardî}}
* {{g|ku|avangardîst}}
* {{g|ku|avangardîzm}}
==== Etîmolojî ====
Ji {{ji|fr|ku|avant-garde}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Avantgarde|f}}
* {{Z|da}}: {{W+|da|avantgarde}}
* {{Z|fr}}: {{W+|fr|avant-garde}}
* {{Z|he}}: {{W+|he|:he:אוונגרדי}}
* {{Z|en}}: {{W+|en|avant-garde}}, {{W+|en|avantgarde}}
* {{Z|tr}}: {{W+|tr|avangart}}
{{werger-bin}}
butnfakvx80b7d85ladxalt53w0h6qv
avir
0
42406
6328785
5930409
2026-08-11T00:26:24Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328785
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{guherto|awir}}
#* {{jêder-malper|ku|jêgirtin=Ne destê te digihe sêvekê da tu jê bikî û bi gezan biçiyê, ne tu dikarî '''avirên''' xwe ji ser wan dagerinî...|nivîskar=Arjen Arî|sernav=Hewldan û nivîs|url=https://diyarname.com/article.php?Idx=157|malper=Diyarname.com|sal=7/2007}}
== {{ziman|gl}} ==
=== Lêker ===
{{lêker|gl}}
# {{g|ku|qewimîn}}, {{g|ku|rû dan}}
#* {{bêmînak|gl}}
=== Çavkanî ===
{{rûpela wergerê|gl|qewimîn}}
tr12xyybjq0794c4g6ts0ximm5bkosq
egzoz
0
42442
6328940
6305940
2026-08-11T11:47:12Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328940
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Tubo Escape.jpg|thumb|gizûz]]
{{navdêr|ku|z=m}}
# [[dûkêl]]ê ku ji [[motor]]an [[derketin|derdikeve]]
#* {{jêder-kovar|ku|jêgirtin="Di roja me de motorên 4 demî gellek popûler e, di van motoran de pijiqandina sotemeniyê û valakirina '''egzozê''' bi derbên cuda ên pîstonê vê pêk tê.|kovar=Zanko|sernav=Otomotîv|url=https://books.google.com.tr/books?id=9cZ-DwAAQBAJ&pg=PA76&lpg=PA76&dq=%22egzoz%C3%AA%22&source=bl&ots=M5FMKvIgtv&sig=ACfU3U0MBqCTxYe6VkFLT4dwlgGJc6GKDA&hl=tr&sa=X&ved=2ahUKEwiM17TdpfLrAhU_UhUIHdHRA5s4FBDoATAEegQIARAB#v=onepage&q=%22egzoz%C3%AA%22&f=false|hejmar=4|sal=2015|rûpel=76}}
# [[borî|boriya]] ku ew [[dûkêl]] tê re [[derketin|derdikeve]]
#* {{jêder-malper|ku|jêgirtin=Di trafîkê de muayeneya nêzî 2 milyon erebeyan tune ye. Wezareta Bajarvanî û Hawirdorê, kesên ku kontrola wesayîda xwe nekirine hişyar dike. heke muayeneya '''egzozê''' neyê kirin wê hezar û 546 lîre ceza li wan bê birîn.|sernav=Ji bo kontrola egsozê roja dawî ye|url=https://www.trtnuce.com/turkiye/ji-bo-kontrola-egsoz-roja-daw-ye-h46502.html|malper=trtnuce.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Dema hemû karên wan li ser Hîvê xelas bû rêwîtiya ji bo Erdê dest pêkir. Gorî ragihandina Algrin “hejîna alayê ji ber '''egzozê''' bû ji ber vê yekê ala ji cihê xwe firrya bû”. Birastî ew lêkolînên ku piştî wan astronotan hatine kirin nîşan didin ew ala Apollo 11 danîbû ser Hîvê, ne li cihê xwe ye.|sernav=Ew ala ku Amerîka li ser Hîvê danîbû çi lê hat?|url=https://www.rudaw.net/kurmanci/world/240620143|malper=rudaw.net/|sal=2014}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[egsoz]]
* {{hw|ku|gizûz||Dihok}}
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|exhaust}}.
{{bend}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Auspuff|m}}, {{W|de|Abgas|m|guman=erê}}
* {{Z|fi}}: {{W+|fi|pakokaasu}}
* {{Z|fr}}: {{W+|fr|échappement}}, {{W+|fr|gaz d'échappement}}
* {{Z|nl}}: {{W|nl|uitlaat|m}}
* {{Z|en}}: {{W+|en|exhaust}}, {{W+|en|emmission}}, {{W|en|exhaust pipe}}
* {{Z|es}}: [[tubo]] de [[escape]]
* {{Z|tr}}: {{W+|tr|egzoz}}, {{W+|tr|susturucu}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[egsoz]]
#* {{bêmînak|tr}}
# [[dengbir]]
#* {{bêmînak|tr}}
9q4r3nc08p6g9o4d63gpr7urn9qf16u
jêneger
0
43281
6328997
6326872
2026-08-11T11:51:38Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328997
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|jêneger}}
{{rengdêr|ku}}, {{r-ya req}}
# [[pir]] [[giring]], [[bingehîn]], [[esasî]], [[bivê-nevê]], [[lazim]], [[pêwîst]], [[pêdivî]], <BR>tişta/ê ku tiştek [[qet]] bêyî wê nabe
#* {{jêder-malper|ku|jêgirtin=Bêguman em ji nirxên xwe hez dikin, em ji nasname û zimanê xwe hez dikin, ev sedemên me yên jêneger ên jiyanî ne, ger em ji van nirxan hez nekin, em nikarin jiyanê watedar bikin, ma qey li gor we jiyan bi çi nirxan xwedî nirx e?|nivîskar=Nusret Kurt|sernav=Ma zimanhezî nijadperestî ye|malper=Pen-kurd.org|sal=7/2007}}
# {{kontrol|rêz=erê|[[hewce]], [[gerek]]}}
==== Formên alternatîv ====
* [[jênegerr]]
==== Jê ====
* [[jênegerî]]
==== Etîmolojî ====
[[jê]] + [[ne-]] + [[gerîn|ger]]
==== Werger ====
{{werger-ser}}
* {{Z|zh}}: {{W+|zh|無可避免}}, [[必然的]],[[不可避免的]]
* {{Z|et}}: {{W+|et|vältimatu}}, {{W+|et|paratamatu}}
* {{Z|fi}}: {{W+|fi|välttämätön}}, {{W+|fi|väistämätön}}, {{W+|fi|vääjäämätön}}
* {{Z|fr}}: {{W+|fr|inévitable}}, {{W+|fr|inéluctable}}, {{W+|fr|absolu}}
* {{Z|en}}: {{W+|en|inalienable}}, {{W+|en|indispensable}}, {{W+|en|inevitable}}, {{W+|en|necessary}}
* {{Z|it}}: [[inevitabile]] {{mê}}
* {{Z|ko}}: {{W+|ko|피할 수 없는}}
* {{Z|hu}}: {{W+|hu|elkerülhetetlen}}
* {{Z|sk}}: {{W+|sk|neodvratný}}
* {{Z|sv}}: {{W+|sv|oundviklig}}
* {{Z|tr}}: {{W+|tr|vazgeçilmez}}, {{W+|tr|mübrem}}
{{werger-bin}}
oywyexi63feozmiv44juj3cx2dn3in7
endîrek
0
43447
6328947
6255554
2026-08-11T11:48:21Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328947
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# ne [[rastûr]], [[ne yekser]], ne [[dîrek]], ne [[rasterê]], ne [[rasterast]], ne [[rikerast]]
# [[tekirme]] Tekirma davê min!
#* {{jêder-malper|ku|jêgirtin=Tê zanîn ku beriya vê 5 salan, Tirkiyeyê ji bona ku bi YE-yê re bibe endam û hevbeş, qanunên lihevkirinê amade kirin. Di van qanûnên lihevkirinê de her çiqas kurdî vekirî nebe jî, '''endîrek''' hatiye pejirandin.|nivîskar=Îbrahîm Guçlu|sernav=Di civînên partiyên siyasî de jî bi kurdî qise kirin mafê min û mafê her kurdekî yê xwezayî û neteweyî û demokratîk e|url=https://www.welateme.info/kurdi/modules.php?name=News&file=article&sid=606|malper=welateme.info|sal=2007}}
==== Formên alternatîv ====
* [[endîrekt]]
* [[indîrek]]
* [[indîrekt]]
* [[îndîrek]]
* [[îndîrek]]
==== Etîmolojî ====
Ji {{ji|fr|ku|indirect}} ji [[in-]] + [[direct]]
==== Jê ====
* [[endîrekî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|indirekt}}, {{W|de|mittelbar|guman=erê}}
* {{Z|zh}}: {{W|zh|间接的}}
* {{Z|fa}}: {{W|fa|غیر مستقیم}}
* {{Z|fi}}: {{W|fi|epäsuora}}, {{W|fi|välillinen}}
* {{Z|fr}}: {{W|fr|indirect}}
* {{Z|nl}}: {{W|nl|indirect}}
* {{Z|en}}: {{W|en|indirect}}
* {{Z|it}}: {{W|it|indiretto}}, {{W|it|mediato}}
* {{Z|hu}}: {{W|hu|közvetett}}
* {{Z|es}}: {{W|es|indirecto}}
* {{Z|tr}}: {{W|tr|endirek}}
{{werger-bin}}
hx987kmu6dp7t0vzit7ijcnikklmh1g
aktîvîst
0
44697
6328774
6296401
2026-08-11T00:25:10Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328774
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# Kesê ku [[çalakî|çalakiyên]] [[sivîl]] dike.
#: {{hevmaneyên peyvê|ku|çalakvan|bizavkar|faîl}}
#* {{jêder-malper|ku|jêgirtin=Di rastiyê da hukumê Xoybûnê di nav '''aktîvîstên''' tevgera kurdan da ne zêde pir bû.|malper|nivîskar=Têmûrê Xelîl|sernav=Peywendiyên Xoybûnê û Daşnaksûtyûnê|malper=Nefel.com|sal=9/2010}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Formên alternatîv ====
* {{g|ku|aktivist}}
==== Jê ====
* {{g|ku|aktîvîstane}}
* {{g|ku|aktîvîstî}}
==== Têkildar ====
* {{g|ku|aktîvîzm}}
==== Etîmolojî ====
Ji {{deyn|en|ku|activist}}; wekheva {{paş|ku|aktîv|-îst}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Aktivist|n}}, {{W+|de|Aktivistin|m}}
* {{Z|be}}: {{W-|be|актыві́ст|n}}, {{W-|be|актыві́стка|m}}
* {{Z|bg}}: {{W+|bg|активи́ст|n}}, {{W+|bg|активи́стка|m}}
* {{Z|ce}}: {{W-|ce|жигархо}}
* {{Z|cs}}: {{W+|cs|aktivista|n}}, {{W+|cs|aktivistka|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W-|cmn|活躍分子|tr=huóyuè fènzǐ}}, {{W-|cmn|活動分子|tr=huódòng fènzǐ}}, {{W-|cmn|活動家|tr=huódòngjiā}}, {{W-|cmn|積極分子|tr=jījí fènzǐ}}
* {{Z|da}}: {{W+|da|aktivist|g}}
* {{Z|ar}}: {{W-|ar|نَاشِط|n}}, {{W-|ar|نَاشِطَة|m}}
* {{Z|hy}}: {{W+|hy|ակտիվիստ}}
* {{Z|eo}}: {{W-|eo|aktivulo}}
* {{Z|et}}: {{W-|et|aktivist}}
* {{Z|fa}}: {{W+|fa|فعال|tr=fa'âl}}
* {{Z|fi}}: {{W+|fi|aktivisti}}
* {{Z|fr}}: {{W+|fr|militant|n}}, {{W+|fr|militante|m}}
* {{Z|gl}}: {{W+|gl|activista|n|m}}
* {{Z|ka}}: {{W-|ka|აქტივისტი}}
* {{Z|nl}}: {{W+|nl|activist|n}}, {{W+|nl|activiste|m}}
* {{Z|he}}: {{W+|he|פָּעִיל|n|tr=pa'íl}}, {{W-|he|פְּעִילָה|m|tr=pe'ilá}}
* {{Z|io}}: {{W-|io|aktivisto}}
* {{Z|en}}: {{W+|en|activist}}
* {{Z|it}}: {{W+|it|attivista|n|m}}
* {{Z|is}}: {{W-|is|aðgerðasinni|n}}
* {{Z|ja}}: {{W-|ja|活動家|tr=かつどうか, katsudōka}}
* {{Z|ca}}: {{W-|ca|activista|n|m}}
* {{Z|ko}}: {{W+|ko|활동가}}
* {{Z|mk}}: {{W-|mk|активи́ст|n}}, {{W-|mk|активи́стка|m}}
* {{Z|mi}}: {{W-|mi|kaiwhakatūtū}}
* {{Z|mr}}: {{W-|mr|कार्यकर्ता|n}}
* {{Z|hu}}: {{W+|hu|aktivista}}
* {{Z|nrf}}: {{W-|nrf|activiste|n|m}}
* {{Z|oc}}: {{W-|oc|activista|n|m}}
* {{Z|pl}}: {{W+|pl|aktywista|n}}, {{W+|pl|aktywistka|m}}, {{W+|pl|działacz|n}}, {{W+|pl|działaczka|m}}
* {{Z|pt}}: {{W+|pt|ativista|n|m}}
* {{Z|kk}}: {{W+|kk|белсенді}}
* {{Z|ro}}: {{W+|ro|activist|n}}, {{W+|ro|activistă|m}}
* {{Z|ru}}: {{W+|ru|активи́ст|n}}, {{W+|ru|активи́стка|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|актѝвист|n}}, {{W-|sh|активиста}}, {{W-|sh|актѝвистица|m}}
*: Latînî: {{W+|sh|aktìvist|n}}, {{W+|sh|aktivista|n}}, {{W+|sh|aktìvistica|m}}
* {{Z|sk}}: {{W-|sk|aktivista|n}}, {{W-|sk|aktivistka|m}}
* {{Z|sl}}: {{W-|sl|aktivist|n}}, {{W-|sl|aktivistka|m}}
* {{Z|es}}: {{W+|es|activista|n|m}}
* {{Z|sw}}: {{W-|sw|mwanaharakati}}
* {{Z|sv}}: {{W+|sv|aktivist|g}}
* {{Z|th}}: {{W-|th|นักประท้วง}}
* {{Z|tr}}: {{W+|tr|eylemci}}, {{W+|tr|etkinci}}, {{W+|tr|aktivist}}
* {{Z|uk}}: {{W+|uk|активі́ст|n}}, {{W+|uk|активі́стка|m}}
* {{Z|vi}}: {{W-|vi|phần tử tích cực}}
* {{Z|cy}}: {{W-|cy|ymgyrchydd|n|m}}, {{W-|cy|ymgyrchwraig|m}}, {{W-|cy|ymgyrchwr|n|m}}
* {{Z|yi}}: {{W-|yi|אַקטיוויסט|n}}, {{W-|yi|אַקטיוויסטין|m}}
* {{Z|el}}: {{W+|el|ακτιβιστής|n}}
{{werger-bin}}
:{{werger çavkanî|en|activist|beş=Ev beşa Wergerê|oldid=75500301}}
isymc1saybocdc27zdqimhf8rupv37j
6328844
6328774
2026-08-11T00:41:46Z
Wikihez
7344
/* Navdêr */
6328844
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# Kesê ku [[çalakî|çalakiyên]] [[sivîl]] dike.
#: {{hevmaneyên peyvê|ku|çalakvan|bizavkar|faîl}}
#* {{jêder-malper|ku|jêgirtin=Di rastiyê da hukumê Xoybûnê di nav '''aktîvîstên''' tevgera kurdan da ne zêde pir bû.|nivîskar=Têmûrê Xelîl|sernav=Peywendiyên Xoybûnê û Daşnaksûtyûnê|malper=Nefel.com|sal=9/2010}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Formên alternatîv ====
* {{g|ku|aktivist}}
==== Jê ====
* {{g|ku|aktîvîstane}}
* {{g|ku|aktîvîstî}}
==== Têkildar ====
* {{g|ku|aktîvîzm}}
==== Etîmolojî ====
Ji {{deyn|en|ku|activist}}; wekheva {{paş|ku|aktîv|-îst}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Aktivist|n}}, {{W+|de|Aktivistin|m}}
* {{Z|be}}: {{W-|be|актыві́ст|n}}, {{W-|be|актыві́стка|m}}
* {{Z|bg}}: {{W+|bg|активи́ст|n}}, {{W+|bg|активи́стка|m}}
* {{Z|ce}}: {{W-|ce|жигархо}}
* {{Z|cs}}: {{W+|cs|aktivista|n}}, {{W+|cs|aktivistka|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W-|cmn|活躍分子|tr=huóyuè fènzǐ}}, {{W-|cmn|活動分子|tr=huódòng fènzǐ}}, {{W-|cmn|活動家|tr=huódòngjiā}}, {{W-|cmn|積極分子|tr=jījí fènzǐ}}
* {{Z|da}}: {{W+|da|aktivist|g}}
* {{Z|ar}}: {{W-|ar|نَاشِط|n}}, {{W-|ar|نَاشِطَة|m}}
* {{Z|hy}}: {{W+|hy|ակտիվիստ}}
* {{Z|eo}}: {{W-|eo|aktivulo}}
* {{Z|et}}: {{W-|et|aktivist}}
* {{Z|fa}}: {{W+|fa|فعال|tr=fa'âl}}
* {{Z|fi}}: {{W+|fi|aktivisti}}
* {{Z|fr}}: {{W+|fr|militant|n}}, {{W+|fr|militante|m}}
* {{Z|gl}}: {{W+|gl|activista|n|m}}
* {{Z|ka}}: {{W-|ka|აქტივისტი}}
* {{Z|nl}}: {{W+|nl|activist|n}}, {{W+|nl|activiste|m}}
* {{Z|he}}: {{W+|he|פָּעִיל|n|tr=pa'íl}}, {{W-|he|פְּעִילָה|m|tr=pe'ilá}}
* {{Z|io}}: {{W-|io|aktivisto}}
* {{Z|en}}: {{W+|en|activist}}
* {{Z|it}}: {{W+|it|attivista|n|m}}
* {{Z|is}}: {{W-|is|aðgerðasinni|n}}
* {{Z|ja}}: {{W-|ja|活動家|tr=かつどうか, katsudōka}}
* {{Z|ca}}: {{W-|ca|activista|n|m}}
* {{Z|ko}}: {{W+|ko|활동가}}
* {{Z|mk}}: {{W-|mk|активи́ст|n}}, {{W-|mk|активи́стка|m}}
* {{Z|mi}}: {{W-|mi|kaiwhakatūtū}}
* {{Z|mr}}: {{W-|mr|कार्यकर्ता|n}}
* {{Z|hu}}: {{W+|hu|aktivista}}
* {{Z|nrf}}: {{W-|nrf|activiste|n|m}}
* {{Z|oc}}: {{W-|oc|activista|n|m}}
* {{Z|pl}}: {{W+|pl|aktywista|n}}, {{W+|pl|aktywistka|m}}, {{W+|pl|działacz|n}}, {{W+|pl|działaczka|m}}
* {{Z|pt}}: {{W+|pt|ativista|n|m}}
* {{Z|kk}}: {{W+|kk|белсенді}}
* {{Z|ro}}: {{W+|ro|activist|n}}, {{W+|ro|activistă|m}}
* {{Z|ru}}: {{W+|ru|активи́ст|n}}, {{W+|ru|активи́стка|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|актѝвист|n}}, {{W-|sh|активиста}}, {{W-|sh|актѝвистица|m}}
*: Latînî: {{W+|sh|aktìvist|n}}, {{W+|sh|aktivista|n}}, {{W+|sh|aktìvistica|m}}
* {{Z|sk}}: {{W-|sk|aktivista|n}}, {{W-|sk|aktivistka|m}}
* {{Z|sl}}: {{W-|sl|aktivist|n}}, {{W-|sl|aktivistka|m}}
* {{Z|es}}: {{W+|es|activista|n|m}}
* {{Z|sw}}: {{W-|sw|mwanaharakati}}
* {{Z|sv}}: {{W+|sv|aktivist|g}}
* {{Z|th}}: {{W-|th|นักประท้วง}}
* {{Z|tr}}: {{W+|tr|eylemci}}, {{W+|tr|etkinci}}, {{W+|tr|aktivist}}
* {{Z|uk}}: {{W+|uk|активі́ст|n}}, {{W+|uk|активі́стка|m}}
* {{Z|vi}}: {{W-|vi|phần tử tích cực}}
* {{Z|cy}}: {{W-|cy|ymgyrchydd|n|m}}, {{W-|cy|ymgyrchwraig|m}}, {{W-|cy|ymgyrchwr|n|m}}
* {{Z|yi}}: {{W-|yi|אַקטיוויסט|n}}, {{W-|yi|אַקטיוויסטין|m}}
* {{Z|el}}: {{W+|el|ακτιβιστής|n}}
{{werger-bin}}
:{{werger çavkanî|en|activist|beş=Ev beşa Wergerê|oldid=75500301}}
rj405nfkts70anbngngkaapyakysjjp
kurator
0
45254
6329032
6135402
2026-08-11T11:52:53Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329032
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[serperişt]]ê/a [[pêşangeh]]ekê, [[birêveber]]ê/a [[galerî|galeriyekê]], [[çavdêr]]ê/a [[cejn]]eke [[hunerî]].
#* {{jêder-malper|ku|jêgirtin=Kuratorê pêşengehê, akademîsyen Engîn Sustam têkildarê mijarê bi Rûdawê re axivî: "Ji ber projeya me projeyeke cuda ye û ji ber ku ez pêşengiya projeyeke wisa dikin, kêfxweş im."|malper=Rudaw.net/kurmanci|sal=9/2023|sernav=‘Bê welat’ li benda alîkariyê ye|url=https://www.rudaw.net/kurmanci/culture/23092023}}
==== Etîmolojî ====
Bi riya {{ji|fr|ku|curateur}} yan îngilîzî {{ji|en|ku|curator}} ji latînî {{ji|la|ku|curatus}}
==== Jê ====
* [[kuratorî]]
* [[kuratorîtî]]
* [[kuratortî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kurator|n}}, {{W+|de|Kuratorin|m}}, {{W-|de|Museumskurator|n}}, {{W-|de|Museumskuratorin|m}}
* {{Z|bg}}: {{W+|bg|куратор|n}}
* {{Z|cs}}: {{W+|cs|kurátor|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|館長|tr=guǎnzhǎng}}, {{W-|cmn|策展人|tr=cèzhǎnrén}}
* {{Z|ar}}: {{W-|ar|منظم معارض}}
* {{Z|eo}}: {{W-|eo|kuratoro}}, {{W-|eo|kuratorino}}
* {{Z|fi}}: {{W+|fi|kuraattori}}
* {{Z|fr}}: {{W+|fr|conservateur|n}}, {{W+|fr|conservatrice|m}}
* {{Z|ka}}: {{W-|ka|კურატორი|sc=Geor}}
* {{Z|nl}}: {{W+|nl|conservator|n}}, {{W+|nl|conservatrice|m}}
* {{Z|he}}: {{W+|he|אוצר|n|tr=otsér|cuda=אוצר \ אוֹצֵר}}, {{W-|he|אוצרת|m|tr=otséret|cuda=אוצרת \ אוֹצֶרֶת}}
* {{Z|en}}: {{W+|en|curator}}
* {{Z|ga}}: {{W-|ga|coimeádaí|n}}
* {{Z|ja}}: {{W-|ja|学芸員|tr=gakugeiin}}
* {{Z|ko}}: {{W+|ko|큐레이터}}
* {{Z|mk}}: {{W-|mk|кустос|n}}
* {{Z|hu}}: {{W+|hu|kurátor}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|kurator|n}}
*: {{Z|nn}}: {{W-|nn|kurator|n}}
* {{Z|oc}}: {{W+|oc|conservator|n}}, {{W+|oc|conservador|n}}, {{W-|oc|curator|n}}, {{W-|oc|comisari|n}}
* {{Z|pl}}: {{W+|pl|kurator|n}}, {{W+|pl|kuratorka|m}}
* {{Z|pt}}: {{W+|pt|curador|n}}, {{W-|pt|curadora|m}}
* {{Z|pa}}: {{W-|pa|ਪਰਬੰਧਕ}}, {{W-|pa|ਵਿਵਸਥਾ ਕਰਨ ਵਾਲਾ}}, {{W-|pa|ਵਿਵਸਥਾਪਕ|n}}
* {{Z|ro}}: {{W+|ro|conservator|n}}, {{W+|ro|conservatoare|m}}, {{W+|ro|intendentă|m}}, {{W+|ro|intendentă|m}}
* {{Z|ru}}: {{W+|ru|кура́тор|n}}
* {{Z|sh}}: {{W-|sh|управитељ|n|sc=Cyrl}}
* {{Z|es}}: {{W+|es|curador|n}}, {{W+|es|curadora|m}}, {{W+|es|comisario|n}}, {{W+|es|conservador|n}}
* {{Z|tl}}: {{W-|tl|agsinop}}
* {{Z|th}}: {{W+|th|ภัณฑารักษ์}}
* {{Z|crh}}: {{W-|crh|kurator}}
* {{Z|tr}}: {{W+|tr|küratör}}
{{werger-bin}}
:{{werger çavkanî|en|curator|beş=Ev qismê Wergerê|oldid=75886137}}
== {{ziman|nb}} ==
=== Navdêr ===
{{navdêr|nb|z=n}}
# {{mijar|nb|pîşe}} {{g|ku|kurator}}
#* {{bêmînak|nb}}
=== Çavkanî ===
{{rûpela wergerê|nb|kurator}}
== {{ziman|nn}} ==
=== Navdêr ===
{{navdêr|nn|z=n}}
# {{mijar|nn|pîşe}} {{g|ku|kurator}}
#* {{bêmînak|nn}}
=== Çavkanî ===
{{rûpela wergerê|nn|kurator}}
== {{ziman|pl}} ==
=== Navdêr ===
{{navdêr|pl|z=n}}
# {{mijar|pl|pîşe}} {{g|ku|kurator}}
#* {{bêmînak|pl}}
=== Çavkanî ===
{{rûpela wergerê|pl|kurator}}
== {{ziman|crh}} ==
=== Navdêr ===
{{navdêr|crh}}
# {{mijar|crh|pîşe}} {{g|ku|kurator}}
#* {{bêmînak|crh}}
=== Çavkanî ===
{{rûpela wergerê|crh|kurator}}
c66a8sbbmr0ka8q8a8yyvwl8eibz3id
sewda
0
45349
6328714
6317628
2026-08-10T18:14:29Z
Bibliophile
1215
nimûneya Fêrik di behsa aqil de be gerek, ya din şaş e.
6328714
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[evîn]], [[dildarî]], [[dilketin]], [[eşq]], [[viyan]], [[hez]]kirina [[zêde]]
# [[aqil]], [[fêm û feraset]]
#* {{jêder|ku|jêgirtin=Got: – Beytûyo, por û guliyên min qumaş in, yêngên mîna te bê '''sewda''' û bê hiş in:<br
/>sîng û berê min zozan e, ez çavreş im, ne ya te me, para lawikê xwe yê keleş im.<br
/>got berzeqê û bi awir li min nihêrî, awirên wê li min bûn mîna kêr û dirrî.<br
/>cotê guliyan bûn cotek mar û li min venîn, saza min ket, tilî û pêçiyên min lerizîn.<br
/>mêrg û geliyên Elegezê girtin dûman, niza’m ji çi re gelo bihar bû zivistan|''Gozel'', Fêrîkê Ûsiv}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[sewdaser]]
* [[sewdaserî]]
* [[sewdaserîtî]]
* [[sewdasertî]]
* [[sewdayî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|سودا}}, {{W+|fa|عشق}}
* {{Z|en}}: {{W+|en|passionate}}
* {{Z|tr}}: {{W+|tr|sevda}}
{{werger-bin}}
fcexxak675p9pdfjnciave01zcxmh8s
6328715
6328714
2026-08-10T18:14:53Z
Bibliophile
1215
/* Navdêr */
6328715
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[evîn]], [[dildarî]], [[dilketin]], [[eşq]], [[viyan]], [[hez]]kirina [[zêde]]
# [[aqil]], [[hiş]], [[fêm û feraset]]
#* {{jêder|ku|jêgirtin=Got: – Beytûyo, por û guliyên min qumaş in, yêngên mîna te bê '''sewda''' û bê hiş in:<br
/>sîng û berê min zozan e, ez çavreş im, ne ya te me, para lawikê xwe yê keleş im.<br
/>got berzeqê û bi awir li min nihêrî, awirên wê li min bûn mîna kêr û dirrî.<br
/>cotê guliyan bûn cotek mar û li min venîn, saza min ket, tilî û pêçiyên min lerizîn.<br
/>mêrg û geliyên Elegezê girtin dûman, niza’m ji çi re gelo bihar bû zivistan|''Gozel'', Fêrîkê Ûsiv}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[sewdaser]]
* [[sewdaserî]]
* [[sewdaserîtî]]
* [[sewdasertî]]
* [[sewdayî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|سودا}}, {{W+|fa|عشق}}
* {{Z|en}}: {{W+|en|passionate}}
* {{Z|tr}}: {{W+|tr|sevda}}
{{werger-bin}}
czfj98ce2c0l224rbcfok54uuo69z3k
albatros
0
45353
6328735
6261744
2026-08-10T22:35:59Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328735
wikitext
text/x-wiki
{{h-bnr|Albatros}}
== {{ziman|ku}} ==
=== Navdêr ===
[[Wêne:Diomedea_exulans_in_flight_-_SE_Tasmania.jpg|thumb|250px|albatrosek]]
{{navdêr|ku|z=?}}
# {{f|ku|balinde}} Hin [[cûn]] [[teyr]]ên [[spî]] yên [[deryayî]] yên [[gir]] û [[bask]][[pehn]] in.
#* {{jêder-malper|ku|jêgirtin=Hemdemê Seyda Cegerxwîn helbestkarê Amerika-Latînî, "'''albatrosê'''" helbesta Şîlî Nerûda ne di destpêkê de; piştî demeke dûdirêj navê Pablo Nerûda li binê helbesta xwe bi cih dike.|malper=Diyarname.com|dîrok=9/2007|nivîskar={{w|Arjen Arî}}|sernav=Sê nav: Hesarî, Seyda, Cegerxwîn}}
==== Bi alfabeyên din ====
* {{ku-ar|ئالباترۆس}}
==== Formên alternatîv ====
* [[elbetros]]
* [[elbatros]]
==== Etîmolojî ====
Hevreha tirkî ''albatros'', farisî {{g|fa|آلباتروس}} (albatros) {{ji|en|ku|albatross}} ji {{ji|pt}} [[albatroz]] (albatros) ji guherandina [[alcatraz]] ([[qetres]]) {{ji|ar|ku|القطرس|tr=el-qetres}} di bin tesîra [[albus]] ([[spî]]) ya latînî de.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|albatros}}
* {{Z|de}}: {{W+|de|Albatros|m}}
* {{Z|br}}: {{W-|br|albatros}}
* {{Z|da}}: {{W-|da|albatros|c}}
* {{Z|ar}}: {{W-|ar|بطروس}}, {{W+|ar|قطرس}}
* {{Z|eo}}: {{W-|eo|albatroso}}
* {{Z|fi}}: {{W+|fi|albatrossi}}
* {{Z|fr}}: {{W+|fr|albatros}}
* {{Z|nl}}: {{W+|nl|albatros}}
* {{Z|en}}: {{W+|en|albatross}}, {{W+|en|gannet|guman=erê}}
* {{Z|it}}: {{W+|it|albatro}}
* {{Z|is}}: {{W-|is|albatrosi}}
* {{Z|hu}}: {{W+|hu|albatrosz}}; {{W+|hu|viharmadár}}
* {{Z|sv}}: {{W+|sv|albatross}}
* {{Z|tr}}: {{W+|tr|albatros}}
{{werger-bin}}
== {{ziman|fr}} ==
=== Bilêvkirin ===
* {{IPA|fr|/al.ba.tros/}}
* {{deng|fr|Fr-albatros.ogg|Deng (Parîs)}} "un albatros"
=== Navdêr ===
{{navdêr|fr|z=n|p=albatros}}
# {{f|fr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|fr}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Veravi95-albatros.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|tr}}
nkr7jqi1gyw17gfb1yj18ol6ft28laf
6328736
6328735
2026-08-10T22:38:11Z
Wikihez
7344
/* Etîmolojî */
6328736
wikitext
text/x-wiki
{{h-bnr|Albatros}}
== {{ziman|ku}} ==
=== Navdêr ===
[[Wêne:Diomedea_exulans_in_flight_-_SE_Tasmania.jpg|thumb|250px|albatrosek]]
{{navdêr|ku|z=?}}
# {{f|ku|balinde}} Hin [[cûn]] [[teyr]]ên [[spî]] yên [[deryayî]] yên [[gir]] û [[bask]][[pehn]] in.
#* {{jêder-malper|ku|jêgirtin=Hemdemê Seyda Cegerxwîn helbestkarê Amerika-Latînî, "'''albatrosê'''" helbesta Şîlî Nerûda ne di destpêkê de; piştî demeke dûdirêj navê Pablo Nerûda li binê helbesta xwe bi cih dike.|malper=Diyarname.com|dîrok=9/2007|nivîskar={{w|Arjen Arî}}|sernav=Sê nav: Hesarî, Seyda, Cegerxwîn}}
==== Bi alfabeyên din ====
* {{ku-ar|ئالباترۆس}}
==== Formên alternatîv ====
* [[elbetros]]
* [[elbatros]]
==== Etîmolojî ====
{{navmiletî|ku}}. Taliyê ji {{ji|en|ku|albatross}} ji {{ji|pt|ku|albatroz|t=albatros}} ji guherandina {{q|pt|alcatraz|t=[[qetres]]}} ji {{ji|ar|ku|القطرس|tr=el-qetres}} di bin tesîra {{q|la|albus|t=[[spî]]}} ya latînî de. Hevreha {{hv|fa|آلباتروس|tr=albatros}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|albatros}}
* {{Z|de}}: {{W+|de|Albatros|m}}
* {{Z|br}}: {{W-|br|albatros}}
* {{Z|da}}: {{W-|da|albatros|c}}
* {{Z|ar}}: {{W-|ar|بطروس}}, {{W+|ar|قطرس}}
* {{Z|eo}}: {{W-|eo|albatroso}}
* {{Z|fi}}: {{W+|fi|albatrossi}}
* {{Z|fr}}: {{W+|fr|albatros}}
* {{Z|nl}}: {{W+|nl|albatros}}
* {{Z|en}}: {{W+|en|albatross}}, {{W+|en|gannet|guman=erê}}
* {{Z|it}}: {{W+|it|albatro}}
* {{Z|is}}: {{W-|is|albatrosi}}
* {{Z|hu}}: {{W+|hu|albatrosz}}; {{W+|hu|viharmadár}}
* {{Z|sv}}: {{W+|sv|albatross}}
* {{Z|tr}}: {{W+|tr|albatros}}
{{werger-bin}}
== {{ziman|fr}} ==
=== Bilêvkirin ===
* {{IPA|fr|/al.ba.tros/}}
* {{deng|fr|Fr-albatros.ogg|Deng (Parîs)}} "un albatros"
=== Navdêr ===
{{navdêr|fr|z=n|p=albatros}}
# {{f|fr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|fr}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Veravi95-albatros.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|tr}}
srkl3bfrj3p2jd361gmt617hyu5oyok
6328737
6328736
2026-08-10T22:38:34Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328737
wikitext
text/x-wiki
{{h-bnr|Albatros}}
== {{ziman|ku}} ==
=== Navdêr ===
[[Wêne:Diomedea_exulans_in_flight_-_SE_Tasmania.jpg|thumb|250px|albatrosek]]
{{navdêr|ku|z=?}}
# {{f|ku|balinde}} Hin [[cûn]] [[teyr]]ên [[spî]] yên [[deryayî]] yên [[gir]] û [[bask]][[pehn]] in.
#* {{jêder-malper|ku|jêgirtin=Hemdemê Seyda Cegerxwîn helbestkarê Amerika-Latînî, "'''albatrosê'''" helbesta Şîlî Nerûda ne di destpêkê de; piştî demeke dûdirêj navê Pablo Nerûda li binê helbesta xwe bi cih dike.|malper=Diyarname.com|dîrok=9/2007|nivîskar={{w|Arjen Arî}}|sernav=Sê nav: Hesarî, Seyda, Cegerxwîn}}
==== Bi alfabeyên din ====
* {{ku-ar|ئالباترۆس}}
==== Formên alternatîv ====
* [[elbetros]]
* [[elbatros]]
==== Etîmolojî ====
{{navmiletî|ku}}. Taliyê ji {{ji|en|ku|albatross}} ji {{ji|pt|ku|albatroz|t=albatros}} ji guherandina {{q|pt|alcatraz|t=[[qetres]]}} ji {{ji|ar|ku|القطرس|tr=el-qetres}} di bin tesîra {{q|la|albus|t=[[spî]]}} ya latînî de. Hevreha {{hv|fa|آلباتروس|tr=albatros}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|albatros}}
* {{Z|de}}: {{W+|de|Albatros|m}}
* {{Z|br}}: {{W-|br|albatros}}
* {{Z|da}}: {{W-|da|albatros|c}}
* {{Z|ar}}: {{W-|ar|بطروس}}, {{W+|ar|قطرس}}
* {{Z|eo}}: {{W-|eo|albatroso}}
* {{Z|fi}}: {{W+|fi|albatrossi}}
* {{Z|fr}}: {{W+|fr|albatros}}
* {{Z|nl}}: {{W+|nl|albatros}}
* {{Z|en}}: {{W+|en|albatross}}, {{W+|en|gannet|guman=erê}}
* {{Z|it}}: {{W+|it|albatro}}
* {{Z|is}}: {{W-|is|albatrosi}}
* {{Z|hu}}: {{W+|hu|albatrosz}}; {{W+|hu|viharmadár}}
* {{Z|sv}}: {{W+|sv|albatross}}
* {{Z|tr}}: {{W+|tr|albatros}}
{{werger-bin}}
== {{ziman|fr}} ==
=== Bilêvkirin ===
* {{IPA|fr|/al.ba.tros/}}
* {{deng|fr|Fr-albatros.ogg|nivîs=un albatros|dever=Parîs}}
=== Navdêr ===
{{navdêr|fr|z=n|p=albatros}}
# {{f|fr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|fr}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Veravi95-albatros.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|tr}}
0e7hxxu0hwge9455txcgznhc42i75ip
6328738
6328737
2026-08-10T22:38:55Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328738
wikitext
text/x-wiki
{{h-bnr|Albatros}}
== {{ziman|ku}} ==
=== Navdêr ===
[[Wêne:Diomedea_exulans_in_flight_-_SE_Tasmania.jpg|thumb|250px|albatrosek]]
{{navdêr|ku|z=?}}
# {{f|ku|balinde}} Hin [[cûn]] [[teyr]]ên [[spî]] yên [[deryayî]] yên [[gir]] û [[bask]][[pehn]] in.
#* {{jêder-malper|ku|jêgirtin=Hemdemê Seyda Cegerxwîn helbestkarê Amerika-Latînî, "'''albatrosê'''" helbesta Şîlî Nerûda ne di destpêkê de; piştî demeke dûdirêj navê Pablo Nerûda li binê helbesta xwe bi cih dike.|malper=Diyarname.com|dîrok=9/2007|nivîskar={{w|Arjen Arî}}|sernav=Sê nav: Hesarî, Seyda, Cegerxwîn}}
==== Bi alfabeyên din ====
* {{ku-ar|ئالباترۆس}}
==== Formên alternatîv ====
* [[elbetros]]
* [[elbatros]]
==== Etîmolojî ====
{{navmiletî|ku}}. Taliyê ji {{ji|en|ku|albatross}} ji {{ji|pt|ku|albatroz|t=albatros}} ji guherandina {{q|pt|alcatraz|t=[[qetres]]}} ji {{ji|ar|ku|القطرس|tr=el-qetres}} di bin tesîra {{q|la|albus|t=[[spî]]}} ya latînî de. Hevreha {{hv|fa|آلباتروس|tr=albatros}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|albatros}}
* {{Z|de}}: {{W+|de|Albatros|m}}
* {{Z|br}}: {{W-|br|albatros}}
* {{Z|da}}: {{W-|da|albatros|c}}
* {{Z|ar}}: {{W-|ar|بطروس}}, {{W+|ar|قطرس}}
* {{Z|eo}}: {{W-|eo|albatroso}}
* {{Z|fi}}: {{W+|fi|albatrossi}}
* {{Z|fr}}: {{W+|fr|albatros}}
* {{Z|nl}}: {{W+|nl|albatros}}
* {{Z|en}}: {{W+|en|albatross}}, {{W+|en|gannet|guman=erê}}
* {{Z|it}}: {{W+|it|albatro}}
* {{Z|is}}: {{W-|is|albatrosi}}
* {{Z|hu}}: {{W+|hu|albatrosz}}; {{W+|hu|viharmadár}}
* {{Z|sv}}: {{W+|sv|albatross}}
* {{Z|tr}}: {{W+|tr|albatros}}
{{werger-bin}}
== {{ziman|fr}} ==
=== Bilêvkirin ===
* {{IPA|fr|/al.ba.tros/}}
* {{deng|fr|Fr-albatros.ogg|nivîs=un albatros|dever=Parîs}}
=== Navdêr ===
{{navdêr|fr|z=n|p=albatros}}
# {{f|fr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|fr}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Veravi95-albatros.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|tr}}
edzzcobvi155eo6egecktlnou13l1nr
6328775
6328738
2026-08-11T00:25:12Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328775
wikitext
text/x-wiki
{{h-bnr|Albatros}}
== {{ziman|ku}} ==
=== Navdêr ===
[[Wêne:Diomedea_exulans_in_flight_-_SE_Tasmania.jpg|thumb|250px|albatrosek]]
{{navdêr|ku|z=?}}
# {{f|ku|balinde}} Hin [[cûn]] [[teyr]]ên [[spî]] yên [[deryayî]] yên [[gir]] û [[bask]][[pehn]] in.
#* {{jêder-malper|ku|jêgirtin=Hemdemê Seyda Cegerxwîn helbestkarê Amerika-Latînî, "'''albatrosê'''" helbesta Şîlî Nerûda ne di destpêkê de; piştî demeke dûdirêj navê Pablo Nerûda li binê helbesta xwe bi cih dike.|malper=Diyarname.com|sal=9/2007|nivîskar={{w|Arjen Arî}}|sernav=Sê nav: Hesarî, Seyda, Cegerxwîn}}
==== Bi alfabeyên din ====
* {{ku-ar|ئالباترۆس}}
==== Formên alternatîv ====
* [[elbetros]]
* [[elbatros]]
==== Etîmolojî ====
{{navmiletî|ku}}. Taliyê ji {{ji|en|ku|albatross}} ji {{ji|pt|ku|albatroz|t=albatros}} ji guherandina {{q|pt|alcatraz|t=[[qetres]]}} ji {{ji|ar|ku|القطرس|tr=el-qetres}} di bin tesîra {{q|la|albus|t=[[spî]]}} ya latînî de. Hevreha {{hv|fa|آلباتروس|tr=albatros}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|albatros}}
* {{Z|de}}: {{W+|de|Albatros|m}}
* {{Z|br}}: {{W-|br|albatros}}
* {{Z|da}}: {{W-|da|albatros|c}}
* {{Z|ar}}: {{W-|ar|بطروس}}, {{W+|ar|قطرس}}
* {{Z|eo}}: {{W-|eo|albatroso}}
* {{Z|fi}}: {{W+|fi|albatrossi}}
* {{Z|fr}}: {{W+|fr|albatros}}
* {{Z|nl}}: {{W+|nl|albatros}}
* {{Z|en}}: {{W+|en|albatross}}, {{W+|en|gannet|guman=erê}}
* {{Z|it}}: {{W+|it|albatro}}
* {{Z|is}}: {{W-|is|albatrosi}}
* {{Z|hu}}: {{W+|hu|albatrosz}}; {{W+|hu|viharmadár}}
* {{Z|sv}}: {{W+|sv|albatross}}
* {{Z|tr}}: {{W+|tr|albatros}}
{{werger-bin}}
== {{ziman|fr}} ==
=== Bilêvkirin ===
* {{IPA|fr|/al.ba.tros/}}
* {{deng|fr|Fr-albatros.ogg|nivîs=un albatros|dever=Parîs}}
=== Navdêr ===
{{navdêr|fr|z=n|p=albatros}}
# {{f|fr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|fr}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-Veravi95-albatros.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|balinde}} {{g|ku|albatros}}
#* {{bêmînak|tr}}
3qe7ryi0hqrcpcl9syq9aahexreekfv
dilbij
0
45403
6328916
6305262
2026-08-11T11:30:40Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328916
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|dil|bij}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[evîndar]], [[hezker]], [[aşiq]], [[sewdayî]]
#* {{jêder|ku|jêgirtin=Hemî kes '''dilbijê''' wê bejn û bala wek neya avî<br>Tenê ê ko perîşan û ceger xwîn maye Seyda ye|{{w|Cegerxwîn}}}}
#* {{jêder-pirtûk|ku|jêgirtin=tu şêrgelê xwe nadî bi kehramin<br>'''dilbijê''' bejn û bala wî me ez îro?|nivîskar={{w|Alan Pîrê}}|sernav=Kum Soro|weşanxane=Na Yayınları|sal=2018|rûpel=29|isbn=9786059017787}}
#* {{jêder-malper|ku|jêgirtin=Dibe ku em '''dilbijê''' bûka şiîrê bin û bixwazin zûbizû bi dîdara çavê me ronî bibe.|nivîskar={{w|Hemeseîd Hesen}}|sernav=Çexov karakterekî nemir afirandiye|url=https://www.rudaw.net/kurmanci/culture/10052016|malper=rudaw.net|dîrok=10.05.2016}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Jê ====
* [[dilbijî]]
* [[dilbijîtî]]
==== Etîmolojî ====
[[dil]] + [[bijîn]] - [[-în]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|dilbij}}
{{rengdêr|ku}}
# [[evîndar]], [[hezker]], [[aşiq]], [[sewdayî]]
#* {{jêder|ku|jêgirtin=Bayê dilistana min î '''dilbij''' şa dike gul û çîçekên gulîstana dilistana min...|M. Tunçyuzlu: ''Dibistana dîlgirtî'', {{w|Azadiya Welat}}, Hj. 1586, 16.09.2011, r. 10}}
#* {{jêder-malper|ku|jêgirtin=Çiqas meyê hêvî daba nifşê nûhatî , nifşê '''dilbij''' û dilşewat ji çand , tore û zimanê kurdî re!|nivîskar=Ciwan Dêrikî|sernav=Zarokên kurd û pişaftin|url=http://www.welateme.net/kurdi/modules.php?name=News&file=article&sid=2667|malper=welateme.net|dîrok=2011-9-22}}
#* {{jêder-malper|ku|jêgirtin=Dil diguve, dil diguve... kurmekî bêdev e; mîrato çi jî '''dilbij''' e, dimije xwînê!|nivîskar=yeqîn h.|sernav=Êvareke reş û spî|url=http://diyarname.com/article.php?Idx=582|malper=diyarname.com|dîrok=20.05.2009}}
# [[arezûmend]], [[meyildar]], [[mereqdar]]
#* {{bêmînak|ku}}
==== Jê ====
* [[dilbijî]]
* [[dilbijîtî]]
==== Etîmolojî ====
[[dil]] + [[bijîn]] - [[-în]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
je9vn93d9g9cjpbfp6a7pykgh4elc5b
bestel
0
45518
6328804
6299229
2026-08-11T00:28:28Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328804
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[tabû]], tişta/ê ku [[şerm]] e yan [[qedexe]] ye ku têê [[bas]]kirin
#* {{jêder-malper|ku|jêgirtin=Carê meseley nîştimanî û neteweyî le lay ew hizbe awête bûwe (têkelbûn) legell ayîn da, înca her le seretay hatine ser hukmîyanewe le dewrî pêşûyan da, '''bestellekî''' (tabû) nawhênanî Kurdistan û çareserkirdinî meseley kurdîyan şikand.|nivîskar=Erselan Bayîz|sernav=Siyasetî DTP û serincêk|malper=Nefel.com|sal=9/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[bestell]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|eo}}: {{W+|eo|tabuo}}
* {{Z|fo}}: {{W-|fo|halgidómur}}
* {{Z|fi}}: {{W+|fi|tabu}}
* {{Z|fr}}: {{W+|fr|tabou}}
* {{Z|nl}}: {{W+|nl|taboe}}
* {{Z|en}}: {{W+|en|taboo}}
* {{Z|hu}}: {{W+|hu|tabu}}
* {{Z|pt}}: {{W+|pt|tabu}}
* {{Z|srn}}: {{W-|srn|trefu}}
* {{Z|es}}: {{W+|es|tabú}}
* {{Z|tr}}: {{W+|tr|tabu}}
{{werger-bin}}
oey5pingavk0pizmc79us2l7aadx6lg
hişîn
0
45774
6328985
6309357
2026-08-11T11:51:12Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328985
wikitext
text/x-wiki
{{bnr-h|hisin|hîsîn|hîşîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/hɘˈʃiːn/}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-hişîn.wav|dever=Wan}}
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|hişîn}}
[[Wêne:Ship atrium small white sail.JPG|thumb|Esman û derya di rengên '''hişîn''' ên curbicur de. (1)]]
[[Wêne:The green color.jpg|thumb|Guliyeke '''hişîn'''. (2)]]
{{rengdêr|ku}}
# {{f|ku|reng}} [[şîn|Şîn]]; [[reng]]ê wek rengê [[esman]]î yan wek yê [[derya]]yê. {{reng|#0000FF}}
#* {{jêder|ku|jêgirtin=بحرا رجز بو چه خوش مرفل<br>اخضر چه کسکه احمر خو صوره<br>ازرق '''هشینه''' جورب چه گوره|tr=Beḥra recez bo çi xweş mureffel?<br>Exḍer çi? Kesk e; eḥmer xwe ṣor e<br>Ezreq '''hişîn''' e. Cewreb çi? Gore|nivîskar={{w|Ehmedê Xanî}}|''{{w|Nûbihara biçûkan}}'', 1683|sc=Arab}}
# {{f|ku|reng}} [[kesk|Kesk]]; ji bo tiştên [[xweza]]yî wek: [[belg]], [[pîvaz]] û [[sêv]]. {{reng|#00C853}}
#* {{bênimûne|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|هشین}}
==== Formên alternatîv ====
* {{g|ku|hêşîn}}
==== Jê ====
{{kol3|ku
| reşûhişîn
| hişînî
| hişînîtî
| hişîntî
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser|şîn}}
* {{Z|de}}: {{W+|de|blau}}
* {{Z|ar}}: {{W|ar|أَزْرَق}}
* {{Z|fa}}: {{W+|fa|آبی|tr=âbi}}
* {{Z|fr}}: {{W+|fr|bleu}}
* {{Z|en}}: {{W+|en|blue}}
* {{Z|tr}}: {{W+|tr|mavi}}
{{werger-bin}}
{{werger-ser|kesk, rengê riwek/giyayan}}
* {{Z|de}}: {{W+|de|grün}}
* {{Z|fa}}: {{W+|fa|سرسبز|tr=sarsabz}}
* {{Z|fr}}: {{W+|fr|vert}}
* {{Z|en}}: {{W+|en|green}}
* {{Z|tr}}: {{i|özellikle ot, yaprak ve bitkiler için}} {{W+|tr|yeşil}}
{{werger-bin}}
{{werger-ser|[[teze]]}}
* {{Z|tr}}: {{W+|tr|taze}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# Rengê [[şîn]].
#* {{bênimûne|ku}}
# Rengê [[kesk]].
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Werger ====
{{werger-ser|şîn}}
* {{Z|fr}}: {{W+|fr|bleu|n}}
* {{Z|en}}: {{W+|en|blue}}
{{werger-bin}}
{{werger-ser|kesk}}
* {{Z|fr}}: {{W+|fr|vert|n}}
* {{Z|en}}: {{W+|en|green}}
{{werger-bin}}
{{bend}}
=== Lêker ===
{{ku-tewîn-lk|form=gerguhêz|niha=hiş|borî=hişî}}
{{lêker|ku|c=x-gh}}
# [[ramîn]], [[fikirîn]], [[hizirîn]], [[pûnijîn]]
#* {{jêder-malper|ku|jêgirtin=Zimanek bi tena serê xwe... hişmend pê '''nehişin''', roşenbîr pê roniyê nedêrin, siyasetmedar wî wekî heyîna xwe nebînin... ew ziman dê çawakî karibe li ber zimanê duyemîn yanî zimanê serdestan; tirkî, farisî, erebî... raweste, bijî?!|nivîskar=Arjen Arî|sernav=Kurdî dê çawa karibe li ber zimanê duyem bijî|malper=Diyarname.com|sal=9/2007}}
# [[hiş]] bûn, [[bêdeng]] bûn, [[mitîn]], [[mit]] bûn
#* {{bênimûne|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|هشین}}
==== Jê ====
{{stûn|
* {{mj|lêker}} {{g|ku|hişîn bûn}}
* {{mj|lêker}} {{g|ku|hişîn kirin}}
* {{mj|navdêr}} {{g|ku|hişînbûn}}
* {{mj|navdêr}} {{g|ku|hişînkirin}}
* {{mj|rengdêr}} {{g|ku|hişînbûyî}}
* {{mj|rengdêr}} {{g|ku|hişînkirî}}
}}
==== Têkildar ====
* {{g|ku|hişandin}}
==== Etîmolojî ====
Ji {{paş|ku|hiş|-în}}.
==== Bide ber ====
* {{g|ku|hisîn}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
iunmmn6k4zr83sq5m5t9iww0uelh6fx
firnik
0
46014
6328961
6306731
2026-08-11T11:50:07Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328961
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-firnik.wav|Deng|dever=Amed}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}, {{bilêv|r|req}}, {{bilêv|k|nerm}}
# [[herdu]] [[kun]]ên [[difin]], [[cot]]e-[[qul]]ên [[poz]]ê, [[difnik]], [[difink]]
#* {{jêder-malper|ku|jêgirtin=Ew kûçik û tajiyên ko me bi zimanên wan “siyaset” dikir, îroj jahr û quzilqurt ji devên wan diherikin, di pêxîla zar û zêçên me de dibin bombe û teqîn, di beroş û sîtilên me de dibin DDT û [[TNT]]; di çavên dayikên me de dibin du dulop hêsirên qerisî, di '''firnikên''' bav û bapîrên me de dibin keservedanên nefretê û li sikakên îxanetê dibin qêrîneke bêsûc û bêguneh.|nivîskar=Enwer Karahan|sernav=Di siyasetê de xelitînekirin quretî ye û qebûlnekirina xelitiyan jî serkorî û minafiqî ye|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=28&RubricNr=&ArticleNr=2281|malper=Nefel.com|sal=7/2007}}
#* {{jêder|ku|jêgirtin=Mûyên canê wî lê gij bûbûn, çavên wî fireh dibûn û '''firnikên''' pozê wî radibûn û dadiketin.|{{Jêgirtin/Firat Cewerî/Girtî}}}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[firrnik]]
* [[firnîk]]
* [[firrnîk]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[firin]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Nasenloch|n}}
* {{Z|cs}}: {{W|cs|nozdra|f}}
* {{Z|zh}}: {{W+|zh|鼻孔}}
* {{Z|ar}}: {{W+|ar|منخر}}
* {{Z|eo}}: {{W+|eo|naztruo}}
* {{Z|fa}}: {{W+|fa|سوراخ بینی}}, {{W+|fa|سوراخ بینی}}
* {{Z|fi}}: {{W+|fi|sierain}}
* {{Z|fr}}: {{W+|fr|narine}}
* {{Z|nl}}: {{W|nl|neusgat|n}}
* {{Z|he}}: {{W|he|אף|cuda=אַף}}
* {{Z|ang}}: {{W-|ang|nosþyrl|n}}
* {{Z|en}}: {{W+|en|nostril}}, {{W|en|bogey}}, {{W+|en|nostril}}
* {{Z|it}}: {{W|it|narice|f}}
* {{Z|ca}}: {{W|ca|nariu|m}}
* {{Z|la}}: {{W|la|naris|f}}
* {{Z|hu}}: {{W+|hu|orrlyuk}}
* {{Z|pl}}: {{W|pl|nozdrze|n}}, [[nozdrza]] {{pl}}
* {{Z|ru}}: {{W|ru|ноздря|f}}
* {{Z|es}}: {{W|es|narina|f}}
* {{Z|sv}}: {{W+|sv|näsborre}}
* {{Z|tr}}: {{W+|tr|burun deliği}}
* {{Z|uk}}: {{W+|uk|ніздря}}
* {{Z|vi}}: {{W+|vi|lỗ mũi}}
* {{Z|el}}: {{W+|el|ρουθούνι}}
{{werger-bin}}
olqsgevigcdax8md7j45y8s70are60p
grek
0
46240
6328968
6246476
2026-08-11T11:50:25Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328968
wikitext
text/x-wiki
{{bnr-h|Grek}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# [[yûnanî]], [[milet]]ê [[Yewnanistan]]ê anku [[Grekistan]]ê
#* {{jêder-malper|ku|jêgirtin=Dema em xwe bera çaxa antîka '''Grekan''' dide û dinerin bê zanyar û feylezofên mezin, hîna wê demê bi çi girîngiyê ziman vegotiye, mirov matmayiyê nêzîkatiya mirovên roja me li hember ziman, dimîne.|nivîskar=Siyamend Sîpan Ugurlu|sernav=Bêzarbûyîna Ziman|malper=Xelkedondurma.com|sal=9/2007}}
==== Formên alternatîv ====
* [[girek]]
==== Bide ber ====
* [[grêk]]
==== Jê ====
* [[Grekistan]]
* [[grekistanî]]
* [[grekî]]
* [[grekîtî]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
s1d5744vehj323113gswhufx9yrbcmp
kurrîn
0
46506
6329037
5017608
2026-08-11T11:53:07Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329037
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr ===
{{rengdêr|ku}}
# {{rastnivîs|kurîn}}
#* {{jêder-malper|ku|jêgirtin=Bi hatina islamiyetê re devên jinan hatin klît û morkirin. Pê re çav jî li jinan hatin morkirin!.. Û jin di nav sedsalan de çavtirsî bûn. Mêran zor û pêkutiyê mîna şûrê Demokles li ser serê jinan girt. Mêr bû “axa” yê “harem”ê. Tu mafekî jinê tune bû ku bikaribe li dijî, an li ber “mêr” biaxive û nêrînên xwe, daxwaz û armancên xwe bêje. Ji xwe nedikarî armanceka “jinê” hebe jî. Ji bo jiyanê yek sedemeke jinê bi tenê hebû ku ew jî koletî û xizmeta “mêr” bû. Erka jinê ew bû ku zarokên '''kurrîn''' ji mêran re bînin û xizmeteke baş bidine wan. Ev êş, zor û zilm li ser jinê bi hezaran salan waha berdevam kir û hîn jî bi temamî neşikestiye. Cî bi cî, bi giranî jî didome.|nivîskar=Bîrgul Özbariş ARDA|sernav=Bersiva [bo] Eskerê Boyîk: Dema Hareman derbas bû!|malper=Amidakurd.com|sal=11/2007}}
hr2i729air41222bgikheoyoj7rp9dv
patetîk
0
46747
6328727
6135872
2026-08-10T21:37:08Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6328727
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|patetîk}}
{{rengdêr|ku}}
# Kesa/ê yan tiştê ku [[dil pê şewitîn|dilê mirovî pê dişewite]].
#: {{hevmane|ku|dilsoj|rezîl|riswa|xemgîr|xemder|emosyonal}}
#* {{bêmînak|ku}}
==== Jê ====
* {{g|ku|patetîkî}}
==== Etîmolojî ====
Ji {{deyn|fr}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|bemittleidenswert}}
* {{Z|cs}}: {{W+|cs|dojemný|m}}
* {{Z|et}}: {{W-|et|liigutav}}
* {{Z|fi}}: {{W+|fi|säälittävä}}
* {{Z|fr}}: {{W+|fr|pathétique}}
* {{Z|he}}: {{W+|he|קורע לב|m}}
* {{Z|en}}: {{W+|en|pathetic}}
* {{Z|hu}}: {{W+|hu|szánalmas}}
* {{Z|pt}}: {{W+|pt|patético}}
* {{Z|ro}}: {{W+|ro|patetic}}, {{W-|ro|emoţionant}}
* {{Z|sl}}: {{W+|sl|ganljiv}}
* {{Z|tr}}: {{W+|tr|patetik}}, {{W+|tr|acınacak}}, {{W+|tr|acıklı}}
{{werger-bin}}
nhuclqr6o8mei5a4icmiwp69ok0ap9d
6328728
6328727
2026-08-10T21:38:13Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328728
wikitext
text/x-wiki
{{h-bnr|patetik}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|patetîk}}
{{rengdêr|ku}}
# Kesa/ê yan tiştê ku [[dil pê şewitîn|dilê mirovî pê dişewite]].
#: {{hevmane|ku|dilsoj|rezîl|riswa|xemgîr|xemder|emosyonal}}
#* {{bêmînak|ku}}
==== Jê ====
* {{g|ku|patetîkî}}
==== Etîmolojî ====
Ji {{deyn|fr}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|bemittleidenswert}}
* {{Z|cs}}: {{W+|cs|dojemný|m}}
* {{Z|et}}: {{W-|et|liigutav}}
* {{Z|fi}}: {{W+|fi|säälittävä}}
* {{Z|fr}}: {{W+|fr|pathétique}}
* {{Z|he}}: {{W+|he|קורע לב|m}}
* {{Z|en}}: {{W+|en|pathetic}}
* {{Z|hu}}: {{W+|hu|szánalmas}}
* {{Z|pt}}: {{W+|pt|patético}}
* {{Z|ro}}: {{W+|ro|patetic}}, {{W-|ro|emoţionant}}
* {{Z|sl}}: {{W+|sl|ganljiv}}
* {{Z|tr}}: {{W+|tr|patetik}}, {{W+|tr|acınacak}}, {{W+|tr|acıklı}}
{{werger-bin}}
0f479dugkycqxn1og6rfls3albwhvdb
ebedilebed
0
46776
6328939
6135887
2026-08-11T11:46:57Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328939
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[ebedî]], [[ebeden]], [[hetahetayî]], [[herherî]], [[bêdawî]], [[herheyî]], [[miebed]], <br>tişta/ê ku [[bi dawî hatin|bi dawî nayê]], <br>tişta/ê ku [[qedîn|naqede]], ta ebed, <br>tişta/ê ku [[xilas]] nabe, <br>tişta/ê ku [[mirin|namire]]
#* {{jêder-malper|ku|jêgirtin=Sovyeta berê hilweşiya, dîwarê Berlînê hilweşiya, şerê sar nema, Sedam Hisên û Iraqa berê nema û tirk hê jî dibêjin qey Tirkiye û bakurê Kurdistanê heta '''ebedilebed''' dê ji tirkan tenê re bimîne û 25 milyon kurd dê ne xudanê welatê xwe bakurê Kurdistanê û şirîkê Tirkiyeyê jî bin.|nivîskar=Arif Zêrevan|sernav=Tirk tiştên jixwezêdetir dixwazin|malper=Nefel.com|sal=11/2007}}
==== Etîmolojî ====
Ji {{ar|ku}}: [[ebed]] + [[-el-]] + [[ebed]]
==== Jê ====
* [[ebedilebedî]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|ewig}}
* {{Z|de}}: {{W|de|ewig}}, {{W|de|immer während}}
* {{Z|eo}}: {{W|eo|eterna}}
* {{Z|fi}}: {{W|fi|ikuinen}}, {{W|fi|loputon}}, {{W|fi|iankaikkinen}}, {{W|fi|päättymätön}}
* {{Z|fr}}: {{W|fr|éternel}}, {{W|fr|permanent}}, {{W|fr|perpétuel}}
* {{Z|nl}}: {{W|nl|eeuwig}}
* {{Z|en}}: {{W|en|eternal}}, {{W|en|everlasting}}, {{W|en|perpetual}}, {{W|en|never-ending}}
* {{Z|it}}: {{W|it|eterno}}
* {{Z|is}}: {{W|is|æfinlegur}}
* {{Z|la}}: {{W|la|aeternalis}}, {{W|la|aeternus}}
* {{Z|ms}}: {{W|ms|abadi}}
* {{Z|pt}}: {{W|pt|eterno}}, {{W|pt|imperecível}}, {{W|pt|perene}}, {{W|pt|perpétuo}}
* {{Z|ru}}: {{W|ru|вечный}}
* {{Z|srn}}: {{W|srn|teygo}}
* {{Z|es}}: {{W|es|eterno}}
* {{Z|sv}}: {{W|sv|evig}}
* {{Z|tr}}: {{W|tr|ebedi}}, {{W|tr|sonsuz}}, {{W|tr|ölümsüz}}
* {{Z|el}}: {{W|el|αιώνιος}}
{{werger-bin}}
tshr0t9hnh88du325aqirl9g0fva1d6
îrrasyonel
0
46781
6328994
6246301
2026-08-11T11:51:31Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328994
wikitext
text/x-wiki
{{ds|îrrasyonel|îrrasyonal}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|îrrasyonel}}
{{rengdêr|ku}}
# [[dûrî aqil]], ne [[rasyonel]], ne [[beraqil]], ne [[lojîk]], ne [[mantiqî]], ne li gor [[aqil]]î, [[bêhiş]], [[bêaqil]]
#* {{jêder-malper|ku|jêgirtin=Em behsa daxwazên îrrasyonel yên tirkan û dewleta wan bikin.|nivîskar=Arif Zêrevan|sernav=Tirk tiştên jixwezêdetir dixwazin|malper=Nefel.com|sal=11/2007}}
==== Formên alternatîv ====
* [[îrasyonel]]
* [[îrasyonal]]
* [[îrrasyonal]]
==== Etîmolojî ====
Bi rêya fransî [[irrationnel]] ji yewnanî
==== Jê ====
* [[îrrasyonelane]]
* [[îrrasyonelî]]
* [[îrrasyonelîtî]]
* [[îrrasyoneltî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|irrational#German}}
* {{Z|fi}}: {{W+|fi|epälooginen}}, {{W+|fi|irrationaalinen}}
* {{Z|fr}}: {{W+|fr|irrationnel}}
* {{Z|nl}}: {{W+|nl|irrationeel}}, {{W+|nl|irrationele}}, {{W+|nl|onzinnig}}, {{W+|nl|onzinnige}}, {{W+|nl|onredelijk}}, {{W+|nl|onredelijke}}
* {{Z|en}}: {{W+|en|irrational}}
* {{Z|ja}}: [[不合理]] (fugōri)
* {{Z|pl}}: {{W+|pl|nieracjonalny}}, {{W|pl|irracjonalny|m}}
* {{Z|sv}}: {{W+|sv|irrationell}}
* {{Z|te}}: [[అసంబద్ధము]] (asaMbaddhamu)
* {{Z|tr}}: {{W+|tr|irrasyonel}}
{{werger-bin}}
j8hz1ieoi0hn2vx9328rcpn3sglxu4v
behayî
0
46825
6328798
6298463
2026-08-11T00:27:34Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328798
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dîn]]ek anku [[ol]]ek e ku li [[sedsal]]a 9ê (1800ê) li [[Îran]]ê [[ava]] bûye<br> û [[bawer]] dike ku Behaullah anku Mîrza Huseyn Elî [[pêxember]]ê Xwedê yê [[dawîn]] e
#* {{jêder-malper|ku|jêgirtin=Serokwezîr Recep Tayyip Erdogan dibêje: "Ji min dipirsim ku ez çawa ji kurdan re dibêjim birayê min. Bêşik ezê bibêjim. Ma ew ne hemwelatiyên Komara Tirkiyeyê ne? Ew bira oldarê min, birayê min in. Ne tenê kurd, boşnak, çerkez jî birayê min in." Lê yên ku ne birayê oldar in?.. Ermen, rum, suryanî, '''bahaî''', [[ataîst]], [[budîst]] û yên din Recep Tayyip beg? Lê ew?|nivîskar=Hincal Uluc|wergêr=Diyarname.com|sernav=Ji welatê min dîmenên siyasetê... ji rojnameya tirkî Sabah|malper=Diyarname.com|sal=11/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[bahaî]]
* [[bahayî]]
* [[behaî]]
==== Hevmane ====
* [[nivîskî]]
* [[standard]]
==== Jê ====
* [[behayîtî]]
==== Etîmolojî ====
Behaullah - [[-ul-]] - [[Elah]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: [[Bahai]] (religion and its followers)
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# kesa/ê ku ji wî [[dîn]]î [[bawer]] dike
#* {{bêmînak|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|behayî}}
{{rengdêr|ku}}
# tişt û [[taybetmendî|taybetmendiyên]] wî [[dîn]]î
#* {{bêmînak|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
gbvkm0l2msv1b16fxytfx8o3al5ji5s
esfelisafilîn
0
46951
6328950
6306210
2026-08-11T11:49:28Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328950
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[bin]]ê [[dûjeh]]
#* {{jêder-malper|ku|jêgirtin=Sedam Hisênî xwest barzaniyan rêke cehenemê û ew bi xwe çû '''esfelusafilînê'''|malper=Nefel.com|sal=11/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[esfelusafilîn]]
==== Etîmolojî ====
Ji {{ji|ar|ku}} (ji Qur'anê 95:5).
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[nizmtirîn]]
#* {{bêmînak|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
nwofcvgn1uthxpu80640l14pqd4dck1
mişext
0
46986
6329064
6326670
2026-08-11T11:54:03Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329064
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[aware]], [[derbider]], [[koçber]], [[penaber]], [[xerîb]], [[sirgûnkirî]], [[biyanî]]
#* {{jêder-malper|ku|jêgirtin=Kurdistanek heye ji min wê de, her bihosta axa wê ji bo min pîroz, lê ez li ser sînga wê '''mişext''', ez li ser dilê wê derbider, navê min tê de kirine ‘terorîst’, kirine ‘[[şaqî]]’, kirine ‘eşqiya’...|nivîskar=Omer Dilsoz|sernav=Kurdistanek heye ji min wê de!|malper=Amidakurd.com|sal=11/2007}}
# {{kontrol|rêz=erê|[[revok]], [[firar]]}}
==== Jê ====
{{kol3|ku|cure=Jê
|mişextî
|mişext kirin<pos:lêker>
|mişext bûn<pos:lêker>
|mişextkirin<pos:navdêr>
|mişextbûn<pos:navdêr>
|mişextkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji peyva mişeqtî, meşeqet ya {{ji|ar}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Exil}} {{nt}}, {{W|de|Ausreißer}} {{n}}, {{W|de|Verbannung}} {{mê}}, {{W|de|Zuwanderer|m|guman=erê}}
* {{Z|ar}}: {{W|ar|الجالي}}, {{W|ar|مهاجر}}
* {{Z|en}}: {{W|en|relegation}}, {{W|en|emigrant}}, {{W|en|expatiation}}, {{W|en|emigre|guman=erê}}, {{W|en|immigrant|guman=erê}}, {{W|en|straggler|guman=erê}},
* {{Z|tr}}: {{W|tr|hapishane kaçkını}}, {{W|tr|kaçak}}, {{W|tr|sürgün}}, {{W|tr|firarî}}
{{werger-bin}}
aybza742r7hqh2n6f6kwqzir84drmv1
namlî
0
47209
6329070
6312935
2026-08-11T11:54:15Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329070
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[navdar]], [[binavûdeng]], [[nasyar]], [[nas]]kirî, [[bernas]], [[niyas]], [[meşhûr]]
#* {{jêder-malper|ku|jêgirtin=Divê kultureke pereyên hewante û rişwetê çênebe û mirovên kurd berhemdar bin, beşdarî bipêşdebirina pêşeroja neteweyê xwe bibin; hewante li kuçe û qahwexaneyan negerin û ji welatên Asya û Afrîkayê ji xwe re xulam û '''namliyan''' negirin.|nivîskar=Enwer Karahan|sernav=Du dîmen ji başûrê Kurdistanê û zarokên li ser sergoyên Diyarbekirê|malper=Nefel.com|sal=12/2007}}
# [[berdestk]], [[xizmetkar]], [[xulam]], [[noker]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[namlîtî]]
==== Etîmolojî ====
Ji {{ji|tr|ku|namlı}} ji ''nam'' ([[nav]]) + [[-lı]] ([[bi-]], [[-dar]])
==== Werger ====
{{werger-ser}}
{{werger-bin}}
eysywz2rocsktgfsww1khf1u9nujovo
kêmûkurî
0
47495
6329018
6310919
2026-08-11T11:52:24Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329018
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}, {{r-ya req}}
# [[kêmasî]], [[êb]], [[qisûr]]
#* {{jêder-malper|ku|jêgirtin=Bila mikur bêm ko min nekariye tiştekî binivîsim! Qanûneke baş e an xirab e, nizanim! Çi '''kêmûkuriyên''' wê hene nizanim! Ez ji ba xwe ve hest dikim ko dillerzêneka ne pêwist ketiye nav rojnamevanan û bê sebeb ew qanûn ji wan re bûye xem, çima? Ezê hewl bidim li xwarê şiroveya vê bikim.|nivîskar=Bedran Ehmed|sernav=Qanûna rojnamevaniyê derkeve çi ye û dernekeve çi ye|malper=Nefel.com|sal=12/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[kêmûkurrî]]
==== Etîmolojî ====
Ji {{qertaf|ku|kêm|-û-|kurî}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
g4wxsud55fayfv91f3teqj9geprbj73
kulîn
0
48117
6328742
6310702
2026-08-10T22:51:44Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328742
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|kulîn|form=negerguhêz|niha=kul|borî=kulî}}
{{lêker|ku|c=x-ngh}}, {{k-ya nerm}}
# wek [[kulek]] [[meşîn]], [[mîna]] [[seqet]]an [[bi rê ve çûn]] (ji ber ku [[pî]] [[êşîn|diêşe]])
#* {{bênimûne|ku}}
==== Tewandin ====
''Lêker'':
:-kul-
==== Bi alfabeyên din ====
* {{ku-ar|کولین}}
==== Jê ====
* [[kulek]]
==== Etîmolojî ====
Ji {{qertaf|ku|kul|-în}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|hinken}}, {{W|de|Hinken|guman=erê}}, {{W|de|lahmen|guman=erê}}, {{W|de|verkrüppeln|guman=erê}}
* {{Z|fa}}: {{W|fa|لنگیدن}}, {{W|fa|انبار لبنیات|guman=erê}}, {{W|fa|سکته داشتن|guman=erê}}, {{W|fa|لنگیدن|guman=erê}}
* {{Z|en}}: {{W|en|limp}}, {{W|en|dodder}}, {{W|en|hitch}}, {{W|en|hobble}}, {{W|en|cripple}}
* {{Z|tr}}: {{W|tr|aksamak}}, {{W|tr|silip süpürmek}}, {{W|tr|topallamak}}, {{W|tr|topallayış}}, {{W|tr|silo|guman=erê}}
{{werger-bin}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# [[meşîn]]a wek [[kulek]]î, [[birêveçûn]]a [[mîna]] [[seqet]]an (ji ber ku [[pî]] [[êşîn|diêşe]]
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{qertaf|ku|kul|-în}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|limping}}
* {{Z|tr}}: {{W|tr|aksama}}, {{W|tr|topallama}}, {{W|tr|topallayış}}
{{werger-bin}}
{{clr}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# [[mitbex]],[[aşxane]],<br> [[ode]]ya ku [[xwarin]] tê ve tê [[parastin]] û [[çêkirin]] (û [[xwarin]])
#* {{jêder|ku|jêgirtin=Her der pê ve di nava gildînê de '''kulîna''' ku tu paqijî tê de tunebû, niha wê çawa pêşwazî bikirana li wê mêvana delal.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=65}}}}
# hemû [[cûn]] û [[çeşît]]ên [[xwarin]]ên [[welat]]ekî yan [[dever]]ekê
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
bi rêya zimanekî nenas ji {{ji|la|ku|culīna}} (metbex) ku herwiha serekaniya [[kiln]] ya îngilîzî, [[kölna]] ya swêdî û [[kølle]] ya danmarkî ye jî. Yan jî [[hevreh]]a farisî {{g|fa|کلبه}} (kulbê: [[ode]]ya [[biçûk]], [[hucre]], [[çavî]]), hemû ji {{ji|el|ku|καλύβη}} (kalubê: (kulîn, odeya biçûk) ji [[καλύπτō]] (kalupto: [[niximandin]], [[nixamtin]]) ji {{ji|ine-pro|ku|-}} *[[kel-upio]] ([[niximandin]]) ji *[[kel-]] ([[parastin]]) ku herwiha serekaniya peyva "[[kîler]]" e. Ji heman rehê yûnanî herwiha: "[[gildik]], "[[kilîm]]".
==== Werger ====
{{werger-ser|''mitbex''}}
* {{Z|en}}: {{W|en|kitchen}},
* {{Z|tr}}: {{W|tr|mutfak}}, {{W|tr|kiler}}
{{werger-bin}}
=== Navdêr 3 ===
{{navdêr|ku|z=m}}
# kuneke li [[hindav]] [[koçik]]î li [[ban]]î tê vekirin daku [[dûkêl]] tê re derbikeve <br> [[pencer]]eka an jî [[kun]]eka [[biçûk]] e û [[bilind]] e bo [[gemî|gemiyê]]
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|window}}, {{W|en|fenestra}}, {{W|en|smoke hole}},{{W|en|flue}}, {{W|en|louvre}}{{W|en|outlet}}, {{W|en|smoke hole}}, {{W|en|smokestack}}
* {{Z|tr}}: {{W|tr|aş damı}}, {{W|tr|ocaklık}}
{{werger-bin}}
q63gts6aws0p03cpphfbn4bm0ovlg08
mexlûb
0
48530
6329057
6244581
2026-08-11T11:53:49Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329057
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mexlûb}}
{{rengdêr|ku}}
# [[sexer]], [[têkçûyî]], [[binketî]], [[zorbirî]], [[xusirî]], [[xusaretbûyî]]
#* {{jêder-malper|ku|jêgirtin=Benjamin dibêje mafên yên ko di dîrokê de '''mexlûp''' bûne li ser me heye.|nivîskar=Mihemed Evdila|sernav=Sal duhezar û x|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=3&RubricNr=&ArticleNr=2896|malper=Nefel.com|sal=1/2008}}
==== Formên alternatîv ====
* {{g|ku|maxlûb}}
==== Jê ====
{{kol2|ku|cure=Jê
|mexlûb bûn<q:Lêker>
|mexlûb kirin<q:Lêker>
|mexlûbbûn<q:Navdêr>
|mexlûbkirin<q:Navdêr>
|mexlûbbûyî<q:Rengdêr>
|mexlûbkirî<q:Rengdêr>
|mexlûbî
|mexlûbîtî
|mexlûbtî
}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|مغلوب|tr=meẍlûb|w=[[têkçûyî]]}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|besiegt}}
* {{Z|az}}: {{W-|az|məğlub}}
* {{Z|cs}}: {{W-|cs|poražený}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|落敗|tr=luòbài}}
* {{Z|ar}}: {{W-|ar|مَغْلُوب}}
* {{Z|fi}}: {{W+|fi|lyöty}}, {{W+|fi|voitettu}}, {{W+|fi|hävinnyt}}
* {{Z|fr}}: {{W+|fr|vaincu}}
* {{Z|gl}}: {{W-|gl|vencido}}, {{W-|gl|derrotado}}
* {{Z|enm}}: {{W-|enm|cravant}}, {{W-|enm|creaunt}}, {{W-|enm|recreaunt}}
* {{Z|en}}: {{W+|en|defeated}}
* {{Z|it}}: {{W+|it|sconfitto}}
* {{Z|ca}}: {{W+|ca|vençut}}, {{W+|ca|derrotat}}
* {{Z|ml}}: {{W-|ml|പരാജയപ്പെട്ട}}, {{W-|ml|തോറ്റ}}
* {{Z|pl}}: {{W-|pl|pokonany|n}}
* {{Z|pt}}: {{W+|pt|derrotado}}
* {{Z|es}}: {{W+|es|vencido}}, {{W+|es|derrotado}}
* {{Z|tr}}: {{W+|tr|mağlup}}, {{W+|tr|yenik}}
{{werger-bin}}
:{{werger çavkanî|en|defeated|oldid=75298987|beş=Ev qismê Wergerê}}
ibiexyft0627fr9syqfh4vhg9l6uvs2
hedîse
0
48817
6328976
6308051
2026-08-11T11:50:50Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328976
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Tiştê [[qewimîn|qewimiye]] yan [[qewimîn|diqewime]], tişt [[rû dan|rû daye]] yan rû dide, tiştê bûye yan dibe.
#: {{hevmane|ku|waqe|qewam|hewadîs|bûyer|bûniş|rûdan|qewimîn}}
#* {{jêder-malper|ku|jêgirtin=Ji bo ku ez minaqeşeya absurd a ji rastî û zanistiyê dûr a li ser zimanê yekgirtî bidim, ji bilî vê îdîaya Dilşad Ebdurrehman (a ku bikaranîna kurmancî ê neteweyê kurd perçe bike) ez ê '''hedîseyekê''' biguhêzim, di serê min re derbas bûye.|nivîskar=Mûrad Ciwan|sernav=Israra "zimanê yekgirtî" stalînîzm e|malper=Netkurd.com|sal=2/2008}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|hadîse}}
==== Etîmolojî ====
{{etymon|ku|id=hedîse, waqe|bor|ar>حَادِثَة>hedîse|text=++|tree=1}}
==== Bide ber ====
* {{g|ku|hedîs}}
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|ngjarje|m}}
* {{Z|de}}: {{W+|de|Ereignis|nt}}, {{W+|de|Geschehnis|nt}}, {{W+|de|Vorgang|n}}
* {{Z|az}}: {{W+|az|hadisə}}, {{W+|az|olay}}
* {{Z|ba}}: {{W-|ba|ваҡиға}}, {{W-|ba|хәл}}, {{W-|ba|осраҡ}}
* {{Z|be}}: {{W+|be|падзе́я|m}}
* {{Z|bn}}: {{W+|bn|ঘটনা}}
* {{Z|bg}}: {{W+|bg|съби́тие|nt}}
* {{Z|my}}: {{W+|my|စဉ်းဝါး}}, {{W+|my|အခြင်း}}, {{W+|my|အဖြစ်အပျက်}}
* {{Z|cs}}: {{W+|cs|událost|m}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|事件|tr=si6 gin6-2}}, {{W-|yue|活動|tr=wut6 dung6}}
*: {{Z|dng}}: {{W-|dng|сыҗян}}
*: {{Z|hak}}: {{W-|hak|事件|tr=sṳ-khien}}, {{W-|hak|活動|tr=fa̍t-thung}}
*: {{Z|cmn}}: {{W+|cmn|事件|tr=shìjiàn}}, {{W+|cmn|活動|tr=huódòng}}
*: {{Z|nan}}: {{W+|nan|事件|tr=sū-kiāⁿ}}, {{W-|nan|活動|tr=oa̍h-tāng}}
* {{Z|da}}: {{W+|da|begivenhed|g}}, {{W+|da|hændelse|g}}
* {{Z|id}}: {{W+|id|kejadian}}
* {{Z|ar}}: {{W-|ar|وَاقِعَة|m}}, {{W-|ar|حَادِثَة|m}}
* {{Z|hy}}: {{W+|hy|դեպք}}, {{W+|hy|պատահար}}, {{W+|hy|դիպված}}, {{W+|hy|իրադարձություն}}
* {{Z|eo}}: {{W-|eo|okazaĵo}}
* {{Z|et}}: {{W-|et|sündmus}}, {{W-|et|seik}}
* {{Z|fa}}: {{W+|fa|رویداد|tr=ruydâd}}, {{W+|fa|حادثه|tr=hâdese}}, {{W+|fa|رخداد|tr=roxdâd}}
* {{Z|fi}}: {{W+|fi|tapahtuma}}, {{W+|fi|tapaus}}
* {{Z|fr}}: {{W+|fr|événement|n}}, {{W+|fr|évènement|n}}
* {{Z|gd}}: {{W-|gd|tuiteamas|n}}
* {{Z|gl}}: {{W+|gl|evento|n}}, {{W+|gl|acontecemento|n}}, {{W+|gl|suceso|n}}
* {{Z|ka}}: {{W-|ka|მოვლენა}}, {{W-|ka|შემთხვევა}}
* {{Z|ht}}: {{W-|ht|evènman}}
* {{Z|hi}}: {{W+|hi|घटना|m}}, {{W-|hi|वाक़या|n}}, {{W+|hi|हादिसा|n}}
* {{Z|nl}}: {{W+|nl|gebeurtenis|m}}, {{W+|nl|evenement|nt}}
* {{Z|he}}: {{W+|he|אירוע|n|tr=erúa|cuda=אירוע \ אֵרוּעַ}}
* {{Z|io}}: {{W+|io|evento}}, {{W+|io|eventajo}}
* {{Z|ang}}: {{W-|ang|ġelimp|nt}}
* {{Z|en}}: {{W+|en|event}}
* {{Z|it}}: {{W+|it|evento|n}}, {{W+|it|fatto|n}}, {{W+|it|accadimento|n}}
* {{Z|is}}: {{W+|is|atburður|n}}, {{W+|is|atvik|nt}}
* {{Z|ja}}: {{W+|ja|イベント|tr=ibento}}, {{W+|ja|出来事|tr=できごと, dekigoto}}, {{W+|ja|事件|tr=じけん, jiken}}
* {{Z|ca}}: {{W+|ca|esdeveniment|n}}
* {{Z|ky}}: {{W+|ky|окуя}}
* {{Z|ko}}: {{W+|ko|행사}}, {{W+|ko|이벤트}}, {{W+|ko|사건}}
* {{Z|lad}}: {{W-|lad|evenimiento}}
* {{Z|la}}: {{W-|la|ēventum|nt}}, {{W-|la|fors|m}}
* {{Z|lv}}: {{W-|lv|notikums|n}}, {{W-|lv|gadījums|n}}
* {{Z|lo}}: {{W+|lo|ເຫດການ|tr=hēt kān}}
* {{Z|lt}}: {{W+|lt|įvykis|n}}, {{W-|lt|atsitikimas|n}}, {{W-|lt|renginys|n}}, {{W-|lt|atvejis|n}}
* {{Z|khb}}: {{W-|khb|ᦃᦸᧉᦂᦱᧃ}}
* {{Z|mk}}: {{W-|mk|настан|n}}, {{W-|mk|збиднување|nt}}
* {{Z|ms}}: {{W+|ms|peristiwa}}
* {{Z|gv}}: {{W-|gv|cruinnaght|m}}
* {{Z|mi}}: {{W-|mi|taiopenga}}, {{W-|mi|pureitanga}}, {{W-|mi|takunetanga}}
* {{Z|hu}}: {{W+|hu|esemény}}, {{W+|hu|történés}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|явдал}}, {{W-|mn|үйл явдал}}
* {{Z|no}}: {{W-|no|programpost|n}}
*: {{Z|nb}}: {{W+|nb|hendelse|n}}, {{W+|nb|begivenhet|n|m}}
* {{Z|oc}}: {{W+|oc|eveniment|n}}
* {{Z|ug}}: {{W-|ug|ۋەقە}}, {{W-|ug|ھادىسە}}
* {{Z|uz}}: {{W+|uz|voqea}}, {{W+|uz|hodisa}}
* {{Z|ps}}: {{W-|ps|رویداد|m|tr=roydā́d}}, {{W-|ps|واقعه|n|tr=wāqe'á}}, {{W+|ps|حادثه|m|tr=hādesá}}
* {{Z|pl}}: {{W+|pl|wydarzenie|nt}}, {{W+|pl|impreza|m}}, {{W+|pl|przypadek|n}}, {{W+|pl|zdarzenie|nt}}
* {{Z|pt}}: {{W+|pt|evento}}
* {{Z|kk}}: {{W-|kk|оқиға}}
* {{Z|ro}}: {{W+|ro|eveniment|nt}}
* {{Z|ru}}: {{W+|ru|собы́тие|nt}}, {{W+|ru|происше́ствие|n}}, {{W+|ru|слу́чай|n}}
* {{Z|sa}}: {{W+|sa|घटना|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|зби́ва̄ње|nt}}, {{W-|sh|до̏гађа̄ј|n}}, {{W-|sh|дешавање|nt}}
*: Latînî: {{W+|sh|zbívānje|nt}}, {{W+|sh|dȍgađāj|n}}, {{W-|sh|dešavanje|nt}}
* {{Z|sk}}: {{W-|sk|udalosť|m}}
* {{Z|sl}}: {{W+|sl|dogodek|n}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|tšojenje|nt}}
* {{Z|es}}: {{W+|es|evento|n}}, {{W+|es|suceso|n}}, {{W+|es|acontecimiento|n}}
* {{Z|sw}}: {{W+|sw|kisa}}, {{W+|sw|tukio}}
* {{Z|sv}}: {{W+|sv|händelse|g}}, {{W+|sv|evenemang|nt}}
* {{Z|tg}}: {{W-|tg|рӯйдод}}, {{W+|tg|воқеа}}, {{W+|tg|ҳодиса}}
* {{Z|tl}}: {{W-|tl|pangyayari}}, {{W-|tl|balagha}}, {{W-|tl|yari}}
* {{Z|th}}: {{W+|th|เหตุการณ์}}
* {{Z|tt}}: {{W+|tt|очрак|sc=Cyrl}}, {{W+|tt|вакыйга}}
* {{Z|tr}}: {{W+|tr|olay}}, {{W+|tr|hadise}}
* {{Z|tk}}: {{W-|tk|waka}}, {{W-|tk|hadysa}}
* {{Z|txb}}: {{W-|txb|wäntare}}
* {{Z|ur}}: {{W-|ur|گھٹنا|m|tr=ghaṭnā}}, {{W-|ur|واقعہ|n|tr=vāqi'a}}, {{W+|ur|حادثہ|n|tr=hādisa}}
* {{Z|uk}}: {{W-|uk|поді́я|m}}, {{W+|uk|за́хід|m}}
* {{Z|vi}}: {{W+|vi|sự kiện}}, {{W+|vi|sự việc}}
* {{Z|cy}}: {{W+|cy|digwyddiad|n}}
* {{Z|km}}: {{W-|km|ព្រឹត្តិការណ៍}}, {{W-|km|ហេតុការណ៍}}
* {{Z|yi}}: {{W-|yi|געשעעניש|nt}}
* {{Z|el}}: {{W+|el|γεγονός|nt}}, {{W-|el|συμβαν|nt}}
{{werger-bin}}
:{{werger çavkanî|en|event|beş=Ev qismê Wergerê|oldid=75769160}}
dry8xb2aq5fx05o3uyi00cxf5qfydu0
mestir
0
48893
6329055
6252981
2026-08-11T11:53:45Z
Balyozbot
7867
/* Formeke rengdêrê */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329055
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Formeke rengdêrê ===
{{rengdêr|ku}}
# {{f|ku|devkî}} {{guherto|mezintir}}
#* {{jêder-malper|ku|jêgirtin=Elmasxan yek ji kurdên bakurê Kurdistanê, ji binecîhên bajarê Cizîra Botanê ye. Ew keça Mihemed û Asya xanimê ye ko di sala 1894an de li gundê Xargulê hatiye dinyayê. Elmasxan dotmama dengbêja navdar Meryemxanê ye û ew deh salan ji Meryemxanê '''mestir''' bûye.|nivîskar=Enwer Karahan|sernav=Elmasxan|malper=Nefel.com|sal=2/2008}}
==== Formên alternatîv ====
* [[meztir]]
==== Etîmolojî ====
Têkilî [[mezin]] + [[-tir]], [[hevreh]]a farisî {{g|fa|مهتر}} (mehter), pehlewî ''mih/mêh'' ([[mezin]]), ji {{ji|ine-pro|ku|-}}, binere [[mezin]].
obf95xklomizmc144pazp1ssgqt7whu
cemawer
0
48910
6328826
6244883
2026-08-11T00:31:46Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328826
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[girse]], [[kitle]], [[girse]]ya [[gel]], <br>[[kom]]a mirovan (bi taybetî koma [[guhdar]]ên yan [[temaşevan]]ên [[bername]]yekê)
#* {{jêder-malper|ku|jêgirtin=Di dawiyê de jî [Kemal] Kerkûkî ji bo dîtina çareseriya arîşeya heyî û rawestandina problemên ordiya tirkan, herweha şandina nameyekê bo serokê Emerîkayê ko rasterast bê nav meseleyê, hewlên dîplomatik yên serokê Kurdistanê bilind nirxand û spasî wezareta pêşmerge û navxwe ya hikûmeta Kurdistanê kir û destxweşî li '''cemawerê''' deverên Behdînan kir bo hevkarîkrina hêzên pêşmerge.|malper=Pukmedia.com|sal=2/2008}}
==== Bi alfabeyên din ====
* {{ku-ar|جهماوهر}}
==== Formên alternatîv ====
* [[cemaher]]
* [[cemahir]]
* [[cemawir]]
==== Etîmolojî ====
Ji {{ji|ar}}, têkildarî [[cimhûr]]
==== Jê ====
* [[cemawerî]]
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|حشد|guman=erê}}, {{W-|ar|الجماهیر|guman=erê}}
* {{Z|fa}}: {{W+|fa|اهالی}}, {{W+|fa|جمعیت}}, {{W+|fa|مردم}}
* {{Z|fi}}: {{W+|fi|yleisö}}
* {{Z|en}}: {{W+|en|audience}}, [[public]] (a group of people), {{W-|en|crowd}}
* {{Z|tr}}: {{W+|tr|halk}}, {{W+|tr|yığın}}, {{W+|tr|kitle}}, {{W+|tr|sel}}, {{W+|tr|ahali}}, {{W+|tr|kütle}}
{{werger-bin}}
361ppj6nfkh832mzfv7xt22e6rewhce
6328836
6328826
2026-08-11T00:41:08Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328836
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[girse]], [[kitle]], [[girse]]ya [[gel]], <br>[[kom]]a mirovan (bi taybetî koma [[guhdar]]ên yan [[temaşevan]]ên [[bername]]yekê)
#* {{jêder-malper|ku|jêgirtin=Di dawiyê de jî [Kemal] Kerkûkî ji bo dîtina çareseriya arîşeya heyî û rawestandina problemên ordiya tirkan, herweha şandina nameyekê bo serokê Emerîkayê ko rasterast bê nav meseleyê, hewlên dîplomatik yên serokê Kurdistanê bilind nirxand û spasî wezareta pêşmerge û navxwe ya hikûmeta Kurdistanê kir û destxweşî li '''cemawerê''' deverên Behdînan kir bo hevkarîkrina hêzên pêşmerge.|malper=Pukmedia.com|sal=2/2008}}
==== Bi alfabeyên din ====
* {{ku-ar|جهماوهر}}
==== Formên alternatîv ====
* [[cemaher]]
* [[cemahir]]
* [[cemawir]]
==== Jê ====
* [[cemawerî]]
==== Etîmolojî ====
Ji {{ji|ar}}, têkildarî [[cimhûr]]
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|حشد|guman=erê}}, {{W-|ar|الجماهیر|guman=erê}}
* {{Z|fa}}: {{W+|fa|اهالی}}, {{W+|fa|جمعیت}}, {{W+|fa|مردم}}
* {{Z|fi}}: {{W+|fi|yleisö}}
* {{Z|en}}: {{W+|en|audience}}, [[public]] (a group of people), {{W-|en|crowd}}
* {{Z|tr}}: {{W+|tr|halk}}, {{W+|tr|yığın}}, {{W+|tr|kitle}}, {{W+|tr|sel}}, {{W+|tr|ahali}}, {{W+|tr|kütle}}
{{werger-bin}}
jdw4eif3moyypc6ifk8tk2qlqjym1qe
hiyeroglîf
0
48949
6328987
6308780
2026-08-11T11:51:16Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328987
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Egypt Hieroglyphe4.jpg|thumb|250px|hiyeroglîfek ji Misra berê]]
{{navdêr|ku|z=m}}
# [[nivîsîn]]a bi [[wêne]]yan<br> (ku berê dihat bikaranîn û her wêneyek bi [[wate]]ya [[peyv]]ekê yan jî [[deng]]ekî bû)
#* {{jêder-malper|ku|jêgirtin=Dîroka nivîsê ango ya alfabeyê xwe dispêre berî 5000 sal, ji hêla sûmeriyan ve peydakirina alfabe û nivîsa bizmarî. Piştî alfabeya sûmerî/bizmarî, misriyan alfabeya '''hiyeroglîf''' peyda kiribe jî şaristaniyên kone yên niştecihên [[Mezra Botan]] û li derdora; [[akadî|aqadiyan]], [[hurrî|hurriyan]], [[babîlî]] û [[hitît]]iyan bi vê alfabeyê zimanê xwe veguheztine ser [[qahfik]]ên [[kîl]]î, berdên reş, qeteçerm, [[papîrûs]] û kaxizê...|nivîskar=Arjen Arî|sernav=Kurdî: Zimanê herî qedîm, lê belê bêalfabe|malper=Netkurd.com|sal=3/2008}}
# her [[wêne]]yê yan [[deng]]ê wê [[pergal]]a [[nivîsîn]]ê
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Bi rêya fransî [[hiéroglyphique]] yan îngilîzî [[hieroglyphic]] ji latînî [[hieroglyphicus]] ji yûnaniya kevn ]]ἱερογλυφικός}} (hieroglufîkos) ji [[ἱερογλυφέω]] ji [[ἱερός]] (hiyeros) anku [[pîroz]] + [[γλύφω]] (glufō) [[nikirandin]], [[kolandin]]
==== Etîmolojî ====
* [[hiyeroglîfî]]
* [[hiyeroglîfîk]]
* [[hiyeroglîfnas]]
* [[hiyeroglîfnasî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Hieroglyphe|f}}
* {{Z|fi}}: {{W|fi|hieroglyfi}}
* {{Z|en}}: {{W|en|hieroglyph}}
* {{Z|ru}}: {{W|ru|иероглиф}} (ieroglif)
* {{Z|tr}}: {{W|tr|hiyeroglif}}, {{W|tr|resim yazı}}
{{werger-bin}}
sxti02vr96hg9h6gp77gzn5pyfq8a6d
Mezra Botan
0
48950
6329058
6136354
2026-08-11T11:53:51Z
Balyozbot
7867
/* Serenav */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329058
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Serenav ===
{{serenav|ku|z=m}}
# [[Mezopotamya]], <br>[[dever]]ên [[navber]]a [[çem]]ê [[Dîcle]] û yê [[Firat]]
#* {{jêder-malper|ku|jêgirtin=Dîroka nivîsê ango ya alfabeyê xwe dispêre berî 5000 sal, ji hêla sûmeriyan ve peydakirina alfabe û nivîsa bizmarî. Piştî alfabeya sûmerî/bizmarî, misriyan alfabeya hiyeroglîf peyda kiribe jî şaristaniyên kone yên niştecihên '''Mezra Botan''' û li derdora; aqadiyan, hurriyan, babîlî û hitîtiyan bi vê alfabeyê zimanê xwe veguheztine ser qahfikên kîlî, berdên reş, qeteçerm, papîrûs û kaxizê..|nivîskar=Arjen Arî|sernav=Kurdî: Zimanê herî qedîm, lê belê bêalfabe|malper=Netkurd.com|sal=3/2008}}
9vj676oaw9kvv6d0ya3czd3v5naibiy
şelaf
0
49282
6328703
6287869
2026-08-10T14:28:08Z
IbrahimKocher Duhok
4280
Werger: +îngilîzî : [[sycophant; toady; bootlicker flatterer]] (bi alîkarî)
6328703
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|şelaf}}
{{rengdêr|ku}}
# [[çaplûs]], [[şalûs]], [[seypesan]], [[şatir]], [[kone]], [[gelac]], [[lêbok]], [[hîlebaz]]
#* {{bênimûne|ku}}
==== Jê ====
* [[şelafane]]
* [[şelafî]]
* [[şelafîtî]]
* [[şelaftî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W-|en|oleaginou}}, {{W+|en|apple-polisher|guman=erê}}, {{W-|en|sycophant; toady; bootlicker flatterer}}
* {{Z|tr}}: {{W+|tr|yağcı}}, {{W+|tr|yalaka}}, {{W+|tr|dalkavuk}}
{{werger-bin}}
druj90u45j43lcblva5yyj7iev84zlx
6328704
6328703
2026-08-10T14:29:23Z
IbrahimKocher Duhok
4280
/* Werger */
6328704
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|şelaf}}
{{rengdêr|ku}}
# [[çaplûs]], [[şalûs]], [[seypesan]], [[şatir]], [[kone]], [[gelac]], [[lêbok]], [[hîlebaz]]
#* {{bênimûne|ku}}
==== Jê ====
* [[şelafane]]
* [[şelafî]]
* [[şelafîtî]]
* [[şelaftî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W-|en|sycophant}}, {{W-|en|flatterer}}, {{W-|en|bootlicker}}, {{W-|en|; toady}}, {{W-|en|oleaginou}}, {{W+|en|apple-polisher|guman=erê}}
* {{Z|tr}}: {{W+|tr|yağcı}}, {{W+|tr|yalaka}}, {{W+|tr|dalkavuk}}
{{werger-bin}}
lor2hw9n04isanrrw8fe4vph68fsf2g
bêçine
0
50267
6328858
6136630
2026-08-11T01:13:53Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328858
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|bêçine}}
{{rengdêr|ku}}
# Yê [[bi kêr hatin|bi kêr nayê]].
#: {{hevmane|ku|bêkêr|bêfeyde|badîhewa|bêmifa|bêwec|vala|pûç|hewante|deya}}
#* {{jêder-malper|ku|jêgirtin=Caran ev wekî stratejiyeke '''bêçine''' tê bo min, diwestim.|nivîskar=Yehya Omerî|sernav=Xwendin û Nivîsandinên Guhertî, Instahelbest û Kurd|url=https://botantimes.com/xwendin-u-nivisandinen-guherti-instahelbest-u-kurdi/|malper=Botan Times|dîrok=07/03/2024}}
#* {{jêder-malper|ku|jêgirtin=xwe diedilînim navika pirsine bêçine, alazine bêdestpêk û bêdawî...|nivîskar=Kawa Nemir|sernav=Katjimêrên Banû B’yê|url=https://www.helbestakurdi.com/berhem/kawa-nemir--katjimeren-banu-bye|malper=helbestakurdi.com|sal=2007}}
#* {{jêder-kovar|ku|jêgirtin=tîrojk û biriqtav '''bêçine''' ji bo her du tovan|kovar=Antolojîya Wêjeya Kurdî ê Nûjen|sernav=Tekamûla Rojê|nivîskar=Yaqob Tilermenî|url=https://www.calameo.com/read/0060784096272c2e48db6|hejmar=56|sal=2023|rûpel=192}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
==== Çavkanî ====
* Têmûrê Xelîl: ''Gotinên kurdî ko di nav kurdên Ermenistanê da mane'', Nefel.com, 7/2008
fzjv2pjwm6xmzx8m7f5ug7c6ou51ex4
6328859
6328858
2026-08-11T01:14:29Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328859
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|bêçine}}
{{rengdêr|ku}}
# Yê [[bi kêr hatin|bi kêr nayê]].
#: {{hevmane|ku|bêkêr|bêfeyde|badîhewa|bêmifa|bêwec|vala|pûç|hewante|deya}}
#* {{jêder-malper|ku|jêgirtin=Caran ev wekî stratejiyeke '''bêçine''' tê bo min, diwestim.|nivîskar=Yehya Omerî|sernav=Xwendin û Nivîsandinên Guhertî, Instahelbest û Kurd|url=https://botantimes.com/xwendin-u-nivisandinen-guherti-instahelbest-u-kurdi/|malper=Botan Times|dîrok=2024-03-07}}
#* {{jêder-malper|ku|jêgirtin=xwe diedilînim navika pirsine bêçine, alazine bêdestpêk û bêdawî...|nivîskar=Kawa Nemir|sernav=Katjimêrên Banû B’yê|url=https://www.helbestakurdi.com/berhem/kawa-nemir--katjimeren-banu-bye|malper=helbestakurdi.com|sal=2007}}
#* {{jêder-kovar|ku|jêgirtin=tîrojk û biriqtav '''bêçine''' ji bo her du tovan|kovar=Antolojîya Wêjeya Kurdî ê Nûjen|sernav=Tekamûla Rojê|nivîskar=Yaqob Tilermenî|url=https://www.calameo.com/read/0060784096272c2e48db6|hejmar=56|sal=2023|rûpel=192}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
==== Çavkanî ====
* Têmûrê Xelîl: ''Gotinên kurdî ko di nav kurdên Ermenistanê da mane'', Nefel.com, 7/2008
g0y255rfwavlcu6fzi3ez7pv1mpuji6
eleyhî
0
50357
6328942
6248659
2026-08-11T11:47:24Z
Balyozbot
7867
/* Daçek */ sererastkirin
6328942
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Daçek ===
{{daçek|ku}}
# [[li dijî|Li dijî]] kesekî an tiştekî.
#* {{jêder|ku|jêgirtin=Dijminê gelê Kurd yê sitratejîk Tirkiye ye. Tirkiye bi kampanyaya dijî terorîzmê û ya dijî Ocalan û PKKê tevgera Kurd ya neteweyî li hemû ji cîhanê îzole kir û reş kir. Divê tevgera Kurd ya neteweyî vê kampanya Tirkiyê bizivirîne '''aleyhê''' Tirkiye.|Netkurd.com, 7/2008}}
#* {{jêder-malper|ku|jêgirtin=Di dengdana kongreyê de 51 kes di lehê de û 58 kes '''di eleyhiya''' derketina wî ya derve '''de''' dengê xwe dan.|sernav=Nehiştin serokê Perûyê Castillo ji Perûyê here derveyê welat|url=https://www.peyamakurd.info/kurmanci/C%C3%AEhan/nehistin-seroke-peruye-castillo-ji-peruye-here-derveye-welat|urlya-arşîvê=https://web.archive.org/web/20230709174551/https://www.peyamakurd.info/kurmanci/C%C3%AEhan/nehistin-seroke-peruye-castillo-ji-peruye-here-derveye-welat|malper=PeyamaKurd|dîrok=2022-11-19}}
# Li [[ser]], di [[derbare]]yê ... de.
#* {{bêmînak|ku}}
==== Formên alternatîv ====
* [[aleyhî]]
==== Etîmolojî ====
Ji {{deyn|ar|ku}} "li ser wî".
==== Werger ====
{{bnr-werger|aleyh}}
j4tehy09wghxmlh60hr04zr9gmvi0ev
agirbest
0
50379
6328766
6296224
2026-08-11T00:23:32Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328766
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[rawestandin|Rawestina]] [[şer]]î bo [[dem]]ek [[miweqet]] (bi taybetî daku [[danûstandin]]ên li ser [[aştî|aştiyê]] bên kirin)
#* {{jêder-malper|ku|jêgirtin=PKK '''agirbesta''' yekalî ragihand.|malper=Hawardengubas.com|sal=10/2006}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[agirbes]]
==== Hevmane ====
* [[mitareke]]
* [[agirbir]]
==== Jê ====
* [[agirbestî]]
==== Etîmolojî ====
Ji {{pêk|ku|agir|best|w2=bestin}}
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|armëpushim}}
* {{Z|de}}: {{W+|de|Waffenstillstand|n}}, {{W+|de|Feuerpause|m}}, {{W+|de|Waffenruhe|f|guman=erê}}
* {{Z|id}}: [[gencatan]] [[senjata]]
* {{Z|ar}}: {{W-|ar|هدنة}}
* {{Z|eo}}: {{W-|eo|militpaŭzo|xs=Esperanto}}
* {{Z|fa}}: {{W+|fa|آتش بس}}, {{W+|fa|آتش نشانی}}, {{W-|fa|آتشبس}}
* {{Z|fi}}: {{W+|fi|tulitauko}}
* {{Z|fr}}: {{W+|fr|cessez-le-feu|n}}, {{W+|fr|trêve|m}}
* {{Z|nl}}: {{W+|nl|staakt-het-vuren|n}}
* {{Z|he}}: [[הפסקת-אש]] (hafsaqat-esh)
* {{Z|en}}: {{W+|en|ceasefire}}, {{W+|en|armistice|guman=erê}}, {{W+|en|truce|guman=erê}}
* {{Z|it}}: {{W+|it|cessate il fuoco|n}}, {{W+|it|armistizio|n}}
* {{Z|ko}}: [[정전]](停戰)
* {{Z|hu}}: {{W+|hu|tűzszünet}}
* {{Z|no}}: {{W+|no|våpenhvile}}
* {{Z|pl}}: [[zawieszenie]] [[broni]]
* {{Z|pt}}: {{W-|pt|cessar-fogo|n}}, {{W+|pt|armistício|n}}, {{W+|pt|trégua|m}}
* {{Z|es}}: {{W-|es|alto el fuego|n}}, {{W+|es|armisticio|n}}, {{W+|es|tregua|m}}
* {{Z|sv}}: {{W+|sv|eldupphör|nt}}
* {{Z|tr}}: {{W+|tr|ateşkes}}, {{W+|tr|bırakışma}}, {{W+|tr|mütareke}}
* {{Z|el}}: [[εκεχειρία]] (ekexeiría)
{{werger-bin}}
9jzuiakb45uz9owe6ergvsirabucrv0
cengel
0
50654
6328827
6304165
2026-08-11T00:31:49Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328827
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[daristan]], [[dehl]], [[rêl]], [[devî]], [[dehlûdir]], [[dehlistan]], [[daristan]]ên [[boş]] û [[asê]]
#* {{jêder-malper|ku|jêgirtin=Dibêjin rojekê darbirrek tevşo û tevirdas û birrek û werîsê xwe hildide û wekî hercar diçe li nav '''cengelê''' ku daran bibirre.|nivîskar=Perwîz Cîhanî|sernav=Axiriya qenciyê dibe xerabî|malper=Avestakurd.net|sal=8/2008}}
# {{kontrol|rêz=erê|[[bîşî]]}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[cengil]]
==== Jê ====
* [[cengelistan]]
* [[cengelî]]
* [[cengelnas]]
* [[cengelnasî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[çengel]]
* [[çengil]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Dschungel|m}}, {{W+|de|Urwald|m}}
* {{Z|ay}}: {{W-|ay|yunca}}
* {{Z|br}}: {{W-|br|janglenn|f}}
* {{Z|cs}}: {{W+|cs|džungle}}
* {{Z|zh}}: {{W-|zh|叢林}}
* {{Z|da}}: {{W+|da|jungle}}
* {{Z|id}}: {{W+|id|hutan}}, {{W+|id|belantara}}
* {{Z|eo}}: {{W+|eo|ĝangalo}}
* {{Z|fa}}: {{W+|fa|جنگل}}
* {{Z|fo}}: {{W-|fo|villskógur}}
* {{Z|fi}}: {{W+|fi|viidakko}}
* {{Z|fr}}: {{W+|fr|jungle}}
* {{Z|fy}}: {{W-|fy|oerwâld|n}}
* {{Z|hi}}: {{W+|hi|जंगल}}
* {{Z|nl}}: {{W+|nl|rimboe}}, {{W+|nl|oerwoud}}
* {{Z|he}}: {{W+|he|ג'ונגל}}
* {{Z|io}}: {{W+|io|junglo}}
* {{Z|en}}: {{W+|en|jungle}}, {{W+|en|primeval forest}}
* {{Z|ca}}: {{W+|ca|jungla}}
* {{Z|qu}}: {{W-|qu|sachʼaqa}}, {{W-|qu|sacha}}
* {{Z|hu}}: {{W+|hu|dzsungel}}
* {{Z|ug}}: {{W-|ug|جاڭگلا}}
* {{Z|pl}}: {{W+|pl|dżungla|f}}
* {{Z|pt}}: {{W+|pt|selva|f}}
* {{Z|rm}}: {{W-|rm|tschungla}}, {{W-|rm|guad}} {{W-|rm|selvadi}}
* {{Z|ru}}: {{W+|ru|джунгли}} {{fpl}}
* {{Z|srn}}: {{W-|srn|busi}}
* {{Z|sh}}: {{W+|sh|džungla}}
* {{Z|sh}}: {{W-|sh|džungla}}
* {{Z|so}}: {{W+|so|duur}}, {{W-|so|howd}}
* {{Z|es}}: {{W+|es|jungla|f}}, {{W+|es|selva|f}}
* {{Z|sv}}: {{W+|sv|djungel}}
* {{Z|tl}}: {{W+|tl|gúbat}}
* {{Z|tr}}: {{W+|tr|cengel}}
* {{Z|tr}}: {{W+|tr|orman}}
* {{Z|tpi}}: {{W-|tpi|bikbus}}
* {{Z|uk}}: {{W-|uk|джунглі}}
* {{Z|vi}}: {{W+|vi|rừng}}
{{werger-bin}}
gx5a21rd0jrebwz5kp99vgyzvsqwa6a
babetî
0
50872
6328791
6297663
2026-08-11T00:27:01Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328791
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Kesê babetî tevdigere, Kesê ne di bin bandorên hestên şexsî, şîroveyan yande ye jî bê pêşdarazî tevdigere û kar dike
#* {{jêder-malper|ku|jêgirtin=Divêt dîroknivîs berî her tiştî '''babetî''' (objektîv) be û serhefsarê karê xwe nexe di nav destê hestan de. Çi guman di kurdistaniyeta Kerkûkê de nîne, lê ew bûye tewqê negbetê û ketiye gerdena kurdan û ev di warê Kerkûkê de nefta wê ye, min gelek caran ev gotiye û dibêjim.|malper=nefel.com|sal=11/2008}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[babet]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|objective}}, {{W+|en|unbiased}}, {{W+|en|thematical|guman=erê}}
* {{Z|tr}}: {{W+|tr|objektif}}, {{W+|tr|nesnel}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|babetî}}
{{rengdêr|ku}}
# Ne di bin [[bandor]]a hestên şexsî, şîroveyan yan jî [[pêşdarazî]]ya. Li ser bingeha rastiyan
#* {{bênimûne|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|objective}}, {{W+|en|unbiased}}, {{W+|en|thematical|guman=erê}}
* {{Z|tr}}: {{W+|tr|objektif}}, {{W+|tr|nesnel}}
{{werger-bin}}
m4gd5o0tnm8y3xb3tqa9x0wfagbdj8d
haj
0
51326
6328973
6307930
2026-08-11T11:50:43Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328973
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
* {{ku-IPA}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|Dêrsim}} [[aga]], [[zanîn]], [[xeber]], [[ageh]], [[agah]], [[enformasyon]]
#: {{mk|ku|'''Haj''' ji xwe hebin.|Li xwe hişyar bin. / Li xwe miqate bin.|rêz=1}}
#: {{mk|ku|'''Haja''' min jê nîne.|Ez qet nizanim. / Min qet nebihîstiye.|rêz=1}}
#* {{jêder-malper|ku|jêgirtin='''Haja''' min ji evî nivîsa Celadet Bedirxan tune bû, heke min xwendibe jî ewê çaxê min baş dêna xwe nedayê miheqeq. |nivîskar=Rehmî Kurdziman|sernav=Ez ji xwe ra nabêjim nivîskar, karê min nivîskarî nîne|malper=inanolo.blogspot.com|url=https://inanolo.blogspot.com/2018/10/rehmi-kurdziman-ez-ji-xwe-ra-nabejim.html|sal=2018}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
{{kol3|ku
| {{hw|ku|hay}}
| ha
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W|fa|مواظبت}}, {{W|fa|توجه}}, {{W|fa|مراقبت}}, {{W|fa|متوجه}}
* {{Z|en}}: {{W|en|watch out}}, {{W|en|care}}, {{W|en|tendance}}
* {{Z|tr}}: {{W+|tr|bilgi}}, {{W+|tr|haber}}
{{werger-bin}}
== {{ziman|en}} ==
=== Navdêr ===
{{en-navdêr|es}}
# {{awayekî din|en|hajj}}
hqo20curan90eb8sjtirrbbzxfxhe1w
çarmêrkî
0
51476
6328882
6256023
2026-08-11T11:23:02Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328882
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
[[Wêne:A Tailor at Work (6920059143).jpg|thumb|Mêrikekî '''çarmêrkî''' rûniştî.]]
{{hoker|ku}}
# [[awa|Awayekî]] [[rûniştin]]ê. Nigên xwe her yek bi hêleke kirin û bi çeperast kirinê wan li ser wan rûniştin.
#* {{jêder|ku|jêgirtin=Lêbelê ne ku ji tizbîkişandina wî tê derxistibû, ji serê sicadeya wî yê ku hatibû qulipandin û ji rûniştina wî ya '''çarmêrkî''' tê derxistibû.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=120}}}}
#* {{jêder-malper|ku|jêgirtin=Helbest û Roman, wek du birayên hesûd in li mala wêjeya nûjen '''çarmêrkî''' rûniştine û ne yên çûyînê ne.|nivîskar=Samî Hêzil|sernav=Helbesta serkêş & romana barkêş|url=https://xwebun.org/helbesta-serkes-romana-barkes/|malper=xwebun.org|sal=2020}}
#* {{jêder-malper|ku|jêgirtin=Bi pilingê pêşî re şîyar dibin.<br>Têhn vedide l`lûlan ji teqînê.<br>Stran dikevin pêlên xuşînê,<br>şer dîne, şervan dîne<br>'''çarmêrkî''' rûniştî di bin berfê de<br>Ev çiya rûspî ne, heyran!|nivîskar=Arjen Arî|sernav=Ev Çiya Rûspî Ne|url=https://www.helbestakurdi.com/helbest/arjen-ari--ev-ciya-ruspi-ne.html|malper=helbestakurdi.com}}
==== Formên alternatîv ====
* [[çarmêrî]]
* [[çarmêrgî]]
==== Etîmolojî ====
[[çar]] + [[mêr]]+kî
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Schneidersitz}}
* {{Z|en}}: {{W+|en|cross-legged}}, {{W+|en|tailor-fashion}}
* {{Z|tr}}: {{W+|tr|bağdaş}}
{{werger-bin}}
7thksfvpltiiz8day2x6kwqv157s63h
kepazetî
0
51527
6329007
6326726
2026-08-11T11:52:01Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329007
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[riswayî]], [[rezîlî]], [[şerpezetî]], [[perîşanî]], [[belengazî]], [[jarî]], [[hejarî]], [[rezalet]]
#* {{jêder-malper|ku|jêgirtin=Rêxistina Yahûdiyan a bi navê Komîteya Yahudiyan ya Amerîkayê (AJC) eşkere kir ku mewqifê Erdoganî yê li Davosê “'''kepazetiyek''' e ku dikare bibe sedemê reaksiyona li dijî Îsraîlê û yahûdiyan.”|malper=Netkurd.com|sal=1/2009}}
# [[bedniyetî]], [[niyetxirabî]], [[xêrnexwazî]], [[xirabîxwazî]], [[belakirî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[kepazehî]]
* [[kepazeyî]]
==== Etîmolojî ====
Ji {{qertaf|ku|kepaze|-tî}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Schändlichkeit}} {{mê}}
* {{Z|en}}: {{W|en|depths of degradation}}
* {{Z|tr}}: {{W|tr|rezillik}}, {{W|tr|kepazelik}}, {{W|tr|rezalet}}
{{werger-bin}}
fk9bge6mh9rpnhps6cdbop2yrb3uuxi
avemast
0
51632
6328870
6297211
2026-08-11T08:59:05Z
IbrahimKocher Duhok
4280
/* Werger */
6328870
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dew]], [[mastav]], [[çeqilmast]], <br>[[vexwarin]]a ku ji [[têkil]]kirina [[mast]]î û [[av]]ê hatiye çêkirin
#* {{bêmînak|ku}}
==== Ji wêjeyê ====
''Piştî şîvxwarinê car care vexwarin û kakil bo mêvanan dihatine danan. Yek ji wan caran avemast hate pêşkêşkirin. Dilopeka avemastê bi rihên Mîrê Hekariya ve ma, hoşmendê wî viya agahdar bike bêyî kes pê bihesît û got:”Qirê rîte hêlîna xwe. ” Civatê hemiyê berê xwe da mîrî û pêk ve kire kenî. Evê carê jî hoşmendê mîrê Hekariya dorand.''
(Ehmed Qerenî: ''Girew û hevrikî di navbera mîrê Hekariya û paşayê Behdînan da'', Transkrîpsiyon (Tîpguhestin): Hallocî Larê, Nefel.com, 2/2009)
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[avmast]]
==== Jê ====
* [[avemastî]]
==== Etîmolojî ====
Ji {{qertaf|ku|av|-e-|mast}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}:{{W+|fa|دوغ}}, {{W+|fa|آبدوغ|guman=erê}}
* {{Z|en}}:{{W+|en|buttermilk}}
{{werger-bin}}
3nqvm90ltfn78y0mysjt046s6tiwkp9
gepir
0
51717
6328963
6307196
2026-08-11T11:50:12Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328963
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[beş|Beş]]a [[leş]]î ya [[zirav]] ya [[navber]]a [[ser]]î û [[pişt]]ê.
#: {{hevmaneyên peyvê|ku|patik}}
#* {{jêder-malper|ku|jêgirtin=Me, bi [[kut]]ê li gepirê xist û ji qirikê bi derxist''|nivîskar=|sernav=|url=http://www.kurdenkirsehire.com/Cand-huner/mem-xelikan.htm|urlya-arşîvê=https://web.archive.org/web/20081228023332/http://www.kurdenkirsehire.com/Cand-huner/mem-xelikan.htm|malper=kurdenkirsehire.com|sal=}}
# {{kontrol|rêz=erê|[[past]], [[qemçik]], [[şatik]], [[şahtik]], [[stukur]], [[pate]], [[gepêr]], [[gempir]]}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|qeper}}
==== Têkildar ====
* {{g|ku|gerden}}
* {{g|ku|gewrî}}
* {{g|ku|stu}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Genick|m}}, {{W|de|Halsansatz}}
* {{Z|fa}}: {{W|fa|قفا}}
* {{Z|tr}}: {{W|tr|patik}}, {{W|tr|püsür}}, {{W|tr|ense|guman=erê}}
{{werger-bin}}
33qj2dl85bzpupoqsc0jmey7edvbspd
kowboy
0
51718
6329028
6246168
2026-08-11T11:52:45Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329028
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[eşqiya]], [[rêbir]], [[keleş]], [[rêgir]], [[korsan]], [[heydûd]], [[nijdevan]], [[cerdevan]], [[çete]], [[talanker]], [[revîner]], <br>kesa/ê ku bi [[darê zorê]] tiştekî ji [[xwedan]]ên wê [[standin|distîne]] û [[revandin|direvîne]] <br>(bi taybetî [[keştî|keştiyan]] yan [[firoke|firokeyan]])<br>(bi taybetî di [[dîrok]]a [[Amerîka]]yê de)
#* {{jêder-malper|ku|jêgirtin='''Kowboyên''' çemçemalî negihîştin miradê xwe û berpirsê xemsariya polîsê ku nekarî qanûnê serwer bike ji kar hate avêtin.|malper=netkurd.com|sal=2/2009}}
==== Formên alternatîv ====
* [[kawboy]]
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|cowboy}}.
==== Jê ====
* [[kowboyane]]
* [[kowboyî]]
* [[kowboyîtî]]
* [[kowboytî]]
==== Werger ====
{{werger-ser}}
* {{Z|fi}}: {{W+|fi|cowboy}}, {{W+|fi|lainsuojaton}}, {{W+|fi|ryöväri}}
* {{Z|en}}: {{W+|en|cowboy}}, {{W+|en|roughrider}}
* {{Z|tr}}: {{W+|tr|kovboy}}, {{W+|tr|haydut}}
{{werger-bin}}
p388nksozjqevf74uldrtzq5oq1e7kx
maço
0
51775
6329047
6137083
2026-08-11T11:53:28Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329047
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[mêrane]], [[nêrane]], wek [[mêr]]an, [[maskulîn]]
#* {{jêder-malper|ku|jêgirtin=Efserek '''maço''' bû transseksuel.|malper=Netkurd.com|sal=5/2009}}
==== Etîmolojî ====
Ji spanî [[macho]] ([[nêr]], [[mêr]]), latînî [[masculus]]
==== Jê ====
* [[maçotî]]
* [[maçoyane]]
* [[maçoyî]]
* [[maçoyîtî]]
9wkx92r9ex3wp68cwh30f7pnnp5668s
favorî
0
51832
6328956
6306450
2026-08-11T11:49:54Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328956
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[bijare]], [[tercîh]]kirî, [[xweşdivî]], [[xoşewîst]], [[hez]]kirî, [[berdilî]], [[hêja]], [[jêhatî]], [[hezkirî]], [[bihagiran]], [[nirxbilind]], [[favorît]]
#* {{jêder-malper|ku|jêgirtin=Lîstokên Jînda yên gelek xweşik hene. Her çiqes ku em lîstokên xweşik ên renga-reng didin ber wê jî, lê ev hirçoka me naxwaze bi van bilîze. '''Favorîyên''' wê tiştên teknîkî ne, wek mînak telefona destan û komandoya TVyê.|nivîskar=Şîlan Diljen|sernav=Di nav kevçî û beroşan de|url=http://hircok.blogspot.com/2009/05/di-nav-kefci-u-berosan-de.html|malper=Hircok.blogspot.com|sal=5/2009}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{ji|fr|ku|favori}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|geliefkoosd}}
* {{Z|de}}: {{W|de|Favorit|m|guman=erê}}
* {{Z|eo}}: {{W|eo|preferata}}, {{W|eo|favorata}}
* {{Z|fi}}: {{W|fi|suosikki}}, [[lempi-]]. [[mieli-]]
* {{Z|fr}}: {{W|fr|favori}}
* {{Z|nl}}: {{W|nl|geliefkoosd}}, {{W|nl|lievelings-}}, {{W|nl|uitverkoren}}
* {{Z|en}}: (''emerîkî'') [[favorite]], (''brîtanî'') {{W|en|favourite}}
* {{Z|pt}}: {{W|pt|favorito}}
* {{Z|tr}}: {{W|tr|favori}}
* {{Z|el}}: {{W|el|αγαπημένος}}
{{werger-bin}}
sq7temti2ri3nrwo01g3uppr97zsywi
berîn
0
51981
6328801
6292420
2026-08-11T00:28:15Z
Balyozbot
7867
/* Rengdêr 1 */ sererastkirin
6328801
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=x-ngh}}
# Dengê ku [[mih]] derdixin.
==== Bi alfabeyên din ====
* {{ku-ar|بهرین}}
==== Werger ====
{{werger-ser|dengderxistina mihan}}
* {{Z|en}}: {{W+|en|baa}}
* {{Z|tr}}: {{W+|tr|melemek}}
{{werger-bin}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# ya [[pêşîn]], [[yekem]]
==== Werger ====
{{werger-ser|pêşîn, yekem}}
* {{Z|en}}: {{W+|en|anteriority}}, {{W+|en|primarily}}
* {{Z|tr}}: {{W+|tr|ilk}}, {{W+|tr|birinci}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{maneid|ku|fire}} [[berfireh|Berfireh]], [[fireh]], [[bêsinor]].
#: {{nm|ku|Biheşta '''berîn'''.}}
#: {{nm|ku|Esmanê '''berîn'''.}}
==== Werger ====
{{werger-ser|berfireh}}
* {{Z|en}}: {{W+|en|comprehensive}}
* {{Z|tr}}: {{W-|tr|geniş çaplı}}, {{W+|tr|kapsamlı}}
{{werger-bin}}
=== Navdêr 3 ===
{{navdêr|ku|z=m}}
# [[deştîn]], [[beristan]], [[dever]]ên [[ziwa]] û [[hişk]], [[dever]]ên [[kêm]] [[baran]] lê [[barîn|dibare]] û [[loma]] [[ziwa]]
==== Formên alternatîv ====
* [[berî#Navdêr 2|berî]]
==== Jê ====
* [[berînî]]
==== Werger ====
{{werger-ser|deverên ziwa}}
* {{Z|en}}: {{W+|en|desert}}
* {{Z|tr}}: {{W+|tr|ova}}, {{W+|tr|bozkır}}
{{werger-bin}}
==== Çavkanî ====
# Mela Xelîl Mişextî: ''Ferhenga Merg û Jî'', Aras, Hewlêr 2006
=== Rengdêr 1 ===
{{rengdêr|ku}}
# [[kevirîn]], ji [[ber]]î
#* {{jêder-malper|ku|jêgirtin=Li bajarê Zonguldakê karkerên komir qanûna nû protesto kir. Li gor pêşniyarnameya guhertina qanûnan a ku Lijneya Plan û Bûtçeyê ji bo Meclisê rêkirîye Saziya Komira '''Berîn''' a Tirkiyeyê dê ji bo şirketên taybet bê firotin.|sernav=Ji malpera nûçeyan a Bianet.org|url=http://bianet.org/bianet/ked/191278-karkeren-komire-cun-di-circirriken-komire-de-u-deri-girtin|sal=11/2017}}
==== Etîmolojî ====
Ji {{paş|ku|ber|-în}}.
==== Werger ====
{{werger-ser|kevirîn}}
* {{Z|en}}: {{W+|en|stony}}
* {{Z|tr}}: {{W-|tr|taştan yapılmış}}, {{W+|tr|taştan}}
{{werger-bin}}
=== Rengdêr 2 ===
{{rengdêr|ku}}
# [[kevnare]], [[qedîm]]
==== Werger ====
{{werger-ser|kevnare}}
* {{Z|en}}: {{W+|en|ancient}}
* {{Z|tr}}: {{W+|tr|kadim}}
{{werger-bin}}
ecd2ov3hhiflz18v8ry9d2tpwkhtude
konevanî
0
52125
6329025
6326735
2026-08-11T11:52:39Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329025
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[siyaset]], [[polîtîka]], [[ramyarî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[konevanîtî]]
* [[konevantî]]
==== Etîmolojî ====
Ji {{paş|ku|konevan|-î}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|politiek|xs=Afrikaans}}
* {{Z|de}}: {{W|de|Politik|f}}
* {{Z|bn}}: {{W|bn|রাজনীতি|sc=Beng}}
* {{Z|bg}}: {{W|bg|политика|tr=polítika|f}}
* {{Z|cs}}: {{W|cs|politika|f}}
* {{Z|zh}}:
*: [[mandarînî]]: [[政治]] (zhèngzhì)
* {{Z|ar}}: {{W|ar|سياسة}} (siyase)
* {{Z|hy}}: [[քաղաքականություն]] (k'aġak'akanut'yun)
* {{Z|et}}: {{W|et|poliitika}}
* {{Z|fa}}: [[سیاست]] (siyaset)
* {{Z|fi}}: {{W|fi|politiikka}}
* {{Z|fr}}: {{W|fr|politique|f}}
* {{Z|ka}}: {{W|ka|პოლიტიკა|tr=politika}}
* {{Z|hi}}: {{W|hi|राजनीति|tr=rājnīti|f}}
* {{Z|nl}}: {{W|nl|politiek|f}}
* {{Z|he}}: {{W|he|פוליטיקה}}
* {{Z|en}}: [[politics]]; [[policy]]
* {{Z|it}}: {{W|it|politica|f}}
* {{Z|ja}}: {{W+|ja|政治|tr=seiji|sc=Jpan}} ([[せいじ]])
* {{Z|ko}}: [[정치]] (jeongchi)
* {{Z|lv}}: {{W|lv|politika|xs=Latvian}}
* {{Z|hu}}: {{W|hu|politika}}
* {{Z|no}}: {{W|no|politikk|m}}
* {{Z|pl}}: {{W|pl|polityka|f}}
* {{Z|pt}}: {{W|pt|política|f}}
* {{Z|ro}}: {{W|ro|politică|f}}
* {{Z|ru}}: {{W|ru|политика|tr=polítika|f}}
* {{Z|sh}}: {{W|sh|politika|f}}
* {{Z|sh}}: {{W|sh|politika|f}}
* [[laosî]]: {{W|lo|ການເມືອງ}}
* {{Z|sh}}:
*: Kirîlî: [[политика#Serbian|политика]] {{mê}}
*: Latînî: {{W|la|politika#Serbian|f}}
* {{Z|sco}}: {{W|sco|sluagh-iùl|m}}
* {{Z|sk}}: {{W|sk|politika|f}}
* {{Z|es}}: {{W|es|política|f}}
* {{Z|sv}}: {{W|sv|politik|c}}
* {{Z|te}}: {{W|te|రాజకీయాలు}}
* {{Z|tr}}: {{W|tr|politika}}, {{W|tr|siyaset}}
* {{Z|ur}}: [[راج نیتی]] (rāj-nīti), [[سیاست]] (siyāsat)
* {{Z|vi}}: {{W|vi|chính trị|xs=Vietnamese}}
{{werger-bin}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[siyasî]], [[polîtîkî]], [[ramyarî]]
#* {{jêder-malper|ku|jêgirtin=Ev polîsê ko hîç îşê wî bi velokirina wêneyan nîn e, çimkî tenê ew li çekên agirîn an çekên spî digere. Lê ji [[şoven|şofîniya]] xwe yekser telefonê ji hêzên ewlekariya '''konevanî''' re vedike. Ew jî mijarê mezintir dikin û xort dişînin bal Parêzerê Giştî û ji wir dişînin bal Dadgerê Take yê leşkerî.|malper=Avestakurd.net|sal=7/2009}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
e13l2sciov0torm99nf4k1t68zowhc2
hevzayend
0
52180
6328982
6137201
2026-08-11T11:51:04Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328982
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[mirov|Mirovên]] ku ji mirovên zayendên xwe re ji aliye [[zayendî]] û [[hîsîtî]] [[hez kirin|hez dikin]].
#* {{jêder-malper|ku|jêgirtin=Buttigieg yekemîn kesê '''hevzayend''' ê nav Demokratan e jî ku dixwaze serokatiya mezintirîn zilhêza cîhanê bike.|nivîskar=Rêbaz Elî|sernav=Homoseksuelek bo şûna Trump|url=https://www.rudaw.net/kurmanci/opinion/10122019|malper=rudaw.net|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Mela balê kişand ser pisrgirêkên '''hevzayendên''' misilman.|sernav=Melayê hevzayend: Gere mizgeftên dostê hevzayendan bên vekirin|url=https://rojname.com/3615341|malper=rojname.com|sal=2018}}
#* {{jêder-malper|ku|jêgirtin=Ti astengî nikare me paş bixe. Bêdeng nemîne û biqîre ku '''hevzayend''' ji hene!|nivîskar=Mem Botanî|sernav=Karbidestên Tirk Destûr Neda Meşa Rûmetê|url=https://www.dengeamerika.com/a/lgbti_stenbol/4463143.html|malper=dengeamerika.com|sal=2018}}
==== Hevmane ====
* [[homoseksûel]]
* [[nêrûmê]]
==== Jê ====
* [[hevzayendî]]
* [[hevzayendîtî]]
==== Etîmolojî ====
Ji {{qertaf|ku|hev|zayend}}.
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W+|ar|مثلي الجنس}}
* {{Z|en}}: {{W+|en|homosexual}}, {{W+|en|queer}}
* {{Z|tr}}: {{W+|tr|eşcinsel}}
{{werger-bin}}
oksdosexppovjwe4r4d4hbx1sw489k1
emenî
0
52703
6328944
6306035
2026-08-11T11:47:32Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328944
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[xalîçe]], [[berik]], [[mehfûr]], [[zîlî]], [[kilîm]]
#* {{jêder-malper|ku|jêgirtin=Du hefteyan berê ev '''emenî''' perda bûkê bû. Hingê di hewşa mala wan de ringeringa defê bû, mirazê Silo, yê lapî mezin dihate sêrî. Wî kurê xwe, yê nuxurî anîbû ber zewacê. Hingê ringeringa defê di nav dil û canê wî de bi hezar û yek awazî alan dida, jîyana wî bi şabûn dixemiland. Lê niha ew '''emenî''' girêdida, wekî seva neferê wî starek hebe. Niha teqeteqa tekên vagonê tê bêjî girmîniya çakûçên hesin bûn ko li serê wî dixistin.|nivîskar=Tosinê Reşîd|sernav=[[etap|Êtap]]'|malper=Nefel.com|sal=6/2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
30bwby4p53a4ae9tov4xbngcx760jqa
bablekan
0
52738
6328792
6277705
2026-08-11T00:27:10Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328792
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[cûn]]ek [[govend]]ên [[kurdî]] ye
#* {{jêder-malper|ku|jêgirtin=Lê herhal cihê herî xweş ku mirov rabe govendê bigerîne jî ev der e; yanê zozanên Culemêrgê. Belê culemêrgî rabûne '''Bablekanê''' di nav xwezaya xweş, di nav hewaya xweş e.|nivîskar=|sernav=Li çiyê Bablekan xweş e!|url=https://diyarname.com/news.php?Idx=2503|malper=Diyarname.com|sal=7/2009}}
#* {{jêder-malper|ku|jêgirtin=Ji bo me bide sekinandin, edetî li ser nenûkan direqisî. Teyê sond bixwara ka ev mêrik bi '''bablekan''', yan jî bi şemamê dilîze û direqise.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
==== Formên alternatîv ====
* [[qardaş]]
* [[qardeş]]
* [[şêxanî]]
==== Vîdyo ====
* http://www.youtube.com/watch?v=Tcd8Xy94u7A
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
0f049c59t8pug5o0h8gakq0u1off68n
6328840
6328792
2026-08-11T00:41:20Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328840
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[cûn]]ek [[govend]]ên [[kurdî]] ye
#* {{jêder-malper|ku|jêgirtin=Lê herhal cihê herî xweş ku mirov rabe govendê bigerîne jî ev der e; yanê zozanên Culemêrgê. Belê culemêrgî rabûne '''Bablekanê''' di nav xwezaya xweş, di nav hewaya xweş e.|nivîskar=|sernav=Li çiyê Bablekan xweş e!|url=https://diyarname.com/news.php?Idx=2503|malper=Diyarname.com|sal=7/2009}}
#* {{jêder-malper|ku|jêgirtin=Ji bo me bide sekinandin, edetî li ser nenûkan direqisî. Teyê sond bixwara ka ev mêrik bi '''bablekan''', yan jî bi şemamê dilîze û direqise.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
==== Formên alternatîv ====
* [[qardaş]]
* [[qardeş]]
* [[şêxanî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Vîdyo ====
* http://www.youtube.com/watch?v=Tcd8Xy94u7A
==== Werger ====
{{werger-ser}}
{{werger-bin}}
0q5obzwzdin1qh0mgbii7yafwmvft8l
dorûver
0
53381
6328937
5028641
2026-08-11T11:46:04Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328937
wikitext
text/x-wiki
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza|z=}}
# [[derdor]], [[dorûber]]
#* {{jêder-malper|ku|jêgirtin=Şarê '''dorûverê''' Çêrmûge, Sêwregi, Aldûş û Motkî xo sey “dimilî/dumbilî” û lehçeya xo zî sey “dimilkî” name kenê.|nivîskar=Roşan Lezgîn|sernav=Kirmanckî, Kirdkî, Dimilkî, Zazakî|url=http://www.zazaki.net/haber/kirmanck,-kirdk,-dimilk,-zazak-148.htm|malper=zazaki.net|sal=2009|ziman=zza}}
#:: {{werger pêwîst e}}
lt122z931ogcukmspygax1aeviafp0o
6328938
6328937
2026-08-11T11:46:39Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328938
wikitext
text/x-wiki
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza|z=}}
# [[derdor]], [[dorûber]]
#* {{jêder-malper|zza|jêgirtin=Şarê '''dorûverê''' Çêrmûge, Sêwregi, Aldûş û Motkî xo sey “dimilî/dumbilî” û lehçeya xo zî sey “dimilkî” name kenê.|nivîskar=Roşan Lezgîn|sernav=Kirmanckî, Kirdkî, Dimilkî, Zazakî|url=http://www.zazaki.net/haber/kirmanck,-kirdk,-dimilk,-zazak-148.htm|malper=zazaki.net|sal=2009}}
jqri2d1hwyz840r4q8873vz6kk6pmoa
berdêlî
0
53775
6328857
6298855
2026-08-11T01:12:15Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328857
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[her]] [[yek]] ji [[keç]]ên ku bi hev hatine [[guherandin]]
#* {{jêder-pirtûk|ku|jêgirtin=Û di nav ekradan de '''berdêlî''' jî dikin. Mesela yêk xweha xwe dide yêkî û xweha wî jî ji boy xwe distîne û yaxo keça xwe dide yêkî û keça wî jî jo boy xwe distîne. Yanî mubadele dikin. Herkesekî ji wan mesrefa daweta xwe dibîne.|nivîskar=Mele Mehmûdê Bayezîdî|edîtor=Jan Dost|sernav=Adat û Rusûmatnameê Ekradiye|weşanxane=Weşanxaneya Nûbihar|sal=2010|rûpel=43|isbn=9789944360678}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
{{kol3|ku|cure=Jê
|berdêlî kirin<pos:lêker>
|berdêlîkirin<pos:navdêr>
|berdêlîkirî<pos:rengdêr>
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bi zaravayên din ====
* {{Z|zza}}: {{W-|zza|pêvurîn}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W-|fa|زن به زن}}
* {{Z|en}}: {{W+|en|substitutional|guman=erê}}, {{W+|en|synonymous|guman=erê}}, {{W+|en|appositive|guman=erê}}, {{W+|en|interchange|guman=erê}}, {{W+|en|succedaneous|guman=erê}}
* {{Z|en}}: {{W+|en|surrogateship}}, {{W+|en|vicarious}}
{{werger-bin}}
o3ldv7m9kxmpp6mpngjl36glin5ikbc
çavkorî
0
53779
6328885
5919985
2026-08-11T11:24:22Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328885
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# Hereketkirina bêyî [[baldan]]a [[netîce]]yên tiştekî, bi [[piştguhkirin]]a temamê encaman.
#* {{jêder-malper|ku|jêgirtin=Bi awayekî '''çavkorî''', bawerîpêanîna fermanên dînî.|nivîskar=Ali Gurdilî|sernav=Nasandina Çend Têgihên Felsefeyî|url=https://candname.com/nasandina-cend-tegihen-felsefeyi/|urlya-arşîvê=https://web.archive.org/web/20230101220456/https://candname.com/nasandina-cend-tegihen-felsefeyi/|malper=Çandname|dîrok=2021-01-25}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Navdêr ===
# Ji ber [[bal nedan|balnedan]]ê [[neditîn]]a tiştên li ber çavan.
#: {{mk|ku|Min '''çavkorî''' nekiribûna min ê ew lawik li ber dîwar bidîtana.}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
kgfx2q0cb302fxl4takmd1nta9clebq
fenek
0
53840
6328959
6232729
2026-08-11T11:50:02Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328959
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[hîlekar]], [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[şeytan]], [[qurnaz]], [[xapîner]]
#* {{jêder-malper|ku|jêgirtin=Baş guh bidin min, li van der û doran gurekî pir '''fenek''' û zalim heye. Dibê haya we baş ji we hebe, rojekê neyê we nexapîne.|nivîskar={{w|Zinarê Xamo}}|sernav=Şengê û Pengê (çîrok)|url=https://zinarexamo.blogspot.com/2011/03/senge-u-penge.html|malper=zinarexamo.blogspot.com|sal=2011}}
==== Bi alfabeyên din ====
* {{ku-ar|فەنەک}}
==== Têkildar ====
* [[derewîn]]
==== Etîmolojî ====
Ji {{ji|ar|ku|فَنَاء}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|حقه باز}}, {{W+|fa|حیله گر}}, {{W+|fa|نیرنگ باز}}
* {{Z|en}}: {{W+|en|deceitful}}, {{W+|en|tricky}}, {{W+|en|disingenuous|guman=erê}}, {{W+|en|dodger|guman=erê}}, {{W+|en|machinator|guman=erê}}
* {{Z|tr}}: {{W+|tr|aktör|guman=erê}}, {{W+|tr|çıfıt|guman=erê}}, {{W+|tr|dalavereci|guman=erê}}, {{W+|tr|dolapçı|guman=erê}}, {{W+|tr|dubaracı|guman=erê}}, {{W+|tr|düzenbaz|guman=erê}}, {{W+|tr|düzenci|guman=erê}}, {{W+|tr|hileci|guman=erê}}, {{W+|tr|hilekâr|guman=erê}}, {{W+|tr|iblis|guman=erê}}, {{W+|tr|kaltaban|guman=erê}}, {{W+|tr|numaracı|guman=erê}}, {{W+|tr|oyunbaz|guman=erê}}, {{W|tr|hilecî|guman=erê}}
{{werger-bin}}
== {{ziman|mt}} ==
=== Navdêr ===
{{navdêr|mt|z=n}}
# {{mijar|mt|heywan}} {{g|ku|keroşk}}, {{g|ku|kerguh}}, {{g|ku|kîvroşk}}
#* {{bêmînak|mt}}
=== Çavkanî ===
{{rûpela wergerê|mt|keroşk}}
0sni57ndemz8ubm0036qjsifgkkpdcl
şebikîn
0
53860
6328711
6287834
2026-08-10T18:03:48Z
Bikarhêner
3719
"nikarbûn" nîne.
6328711
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=x-ngh}}
# Di nava [[gav]]an de birîn derketin û nekarîna birêveçûnê.
#: {{mk|ku|Wê rojê di dawetê de hingî min leyist ez '''şebikîm'''.}}
==== Jê ====
* {{g|ku|şebikî}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
p90ivoppvl8fy45pragbl4hos6p2lss
ji ya xwe daketin
0
54701
6328999
6125117
2026-08-11T11:51:42Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328999
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=?}}
# [[dest jê berdan]], [[dev jê berdan]], [[êdî]] ne[[kirin]], [[êdî]] [[li gel]] ne[[man]], <br />[[bela|bela xwe jê vekirin]], [[jê gerîn]], [[dest|destên xwe jê şûştin]], [[êdî]] [[may]]ê xwe tê nekirin
#* {{jêder-malper|ku|jêgirtin=Ligel her cure berpêyan jî ew '''ji ya xwe daneket'''|url=http://www.diyarname.com/yedek/modules.php?name=News&file=article&sid=1154|malper=diyarname.com|sal=2016}}
#* {{jêder-malper|ku|jêgirtin=Her çendîn Atalay, Ahmet Türk, dozggêr û dadwerên Diyarbekirê ev îdîaya Hatip Dicle redkir jî CHP '''ji a xwe daneket''' û mesele bir parlamentoyê|sernav=Baykal bi berpirsê PKK-ê yê Ewropayê re rûnişt|url=http://www.netkurd.com/?mod=news&option=view&id=3777|malper=netkurd.com|sal=2010}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
770ctaenjq98b2msicw448a8f14c6s1
alvêr
0
54899
6328777
6296546
2026-08-11T00:25:19Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328777
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kirîn]] û [[firotin]], [[danûstandin]]
#* {{jêder-malper|ku|jêgirtin=baykotkirina dehan şîrket û kompaniyayên biyanî bi sûçê '''alvêr''' û bazirganî tevî Îranê|nivîskar=Siyamend Terbî|sernav=Berhevkirina Pêşnivîsa Biryarnameyekê Ji Hêla Demokratên Amerîkayê Ve Di Kongireya Wî Welatî Da|url=http://www.kurdistanmedia.com/kurmanci/siyasi/file/35.php|malper=kurdistanmedia.com|sal=2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{deyn|tr|ku|alver}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|trade}}
* {{Z|tr}}:{{W+|tr|alışveriş}}
{{werger-bin}}
bpjtwd6ke2wq9y61qn5zx15r5a67f36
demî
0
55223
6328903
6138109
2026-08-11T11:25:50Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328903
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[demkî]], [[miweqet]], [[berdem]], [[demdiyar]], [[rabor]], [[ne berdewam]], [[ne daîmî]], [[ne herdemî]], ne [[hertimî]], ne [[mayinde]], <br>tişta/ê bo [[dem]]ek [[diyar]]
#: ''Min karek '''demkî''' heye.'' (anku ew kar dê piştî demek diyar biqete.)
==== Etîmolojî ====
Ji {{paş|ku|dem|-î}}
==== Jê ====
* [[demîtî]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|tydelik}}
* {{Z|de}}: {{W|de|Interim-}}, {{W|de|provisorisch}}
* {{Z|da}}: {{W|da|foreløbig}}
* {{Z|eo}}: {{W|eo|provizora}}
* {{Z|fa}}: {{W|fa|زمانی}}
* {{Z|fi}}: {{W|fi|tilapäinen}}, {{W|fi|määräaikainen}}, {{W|fi|väliaikainen}}, {{W|fi|ohimenevä}}, {{W|fi|siirtymä-}}
* {{Z|fr}}: {{W|fr|provisoire}}, {{W|fr|temporaire}}
* {{Z|nl}}: {{W|nl|tijdelijk}}, {{W|nl|voorlopig}}
* {{Z|en}}: {{W|en|provisional}}, {{W|en|temporary}}, {{W|en|interim}}, {{W|en|transitional}}, {{W|en|ad interim}}, {{W|en|periodic|guman=erê}}, {{W|en|chronological|guman=erê}}
* {{Z|ca}}: {{W|ca|provisional}}, {{W|ca|provisori}}
* {{Z|pap}}: {{W|pap|temporal}}
* {{Z|pt}}: {{W|pt|provisório}}, {{W|pt|temporário}}
* {{Z|es}}: {{W|es|provisional}}, {{W|es|interino}}
* {{Z|tr}}: {{W|tr|geçici}}
{{werger-bin}}
=== Hoker ===
{{hoker|ku}}
# [[demkî]], [[miweqet]], [[berdem]], [[demdiyar]], [[rabor]], [[ne berdewam]], [[ne daîmî]], [[ne herdemî]], ne [[hertimî]], ne [[mayinde]], <br>tişta/ê bo [[dem]]ek [[diyar]]
#* {{jêder-malper|ku|jêgirtin=Çelik got ku divê agirbesta PKK'ê ne '''demî''' lê mayînde be. Çelik ku diyar kir rawestiyana tundiyê geşedaneke baş e, got ku divê êdî tundî nebe amûra xweîfadekirinê.|malper=Netkurd.com|sal=8/2010}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
7h1cc6np7wtbv8tw0nwng3xqmeygrj2
6328922
6328903
2026-08-11T11:41:09Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328922
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[demkî]], [[miweqet]], [[berdem]], [[demdiyar]], [[rabor]], [[ne berdewam]], [[ne daîmî]], [[ne herdemî]], ne [[hertimî]], ne [[mayinde]], <br>tişta/ê bo [[dem]]ek [[diyar]]
#: ''Min karek '''demkî''' heye.'' (anku ew kar dê piştî demek diyar biqete.)
==== Jê ====
* [[demîtî]]
==== Etîmolojî ====
Ji {{paş|ku|dem|-î}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W|af|tydelik}}
* {{Z|de}}: {{W|de|Interim-}}, {{W|de|provisorisch}}
* {{Z|da}}: {{W|da|foreløbig}}
* {{Z|eo}}: {{W|eo|provizora}}
* {{Z|fa}}: {{W|fa|زمانی}}
* {{Z|fi}}: {{W|fi|tilapäinen}}, {{W|fi|määräaikainen}}, {{W|fi|väliaikainen}}, {{W|fi|ohimenevä}}, {{W|fi|siirtymä-}}
* {{Z|fr}}: {{W|fr|provisoire}}, {{W|fr|temporaire}}
* {{Z|nl}}: {{W|nl|tijdelijk}}, {{W|nl|voorlopig}}
* {{Z|en}}: {{W|en|provisional}}, {{W|en|temporary}}, {{W|en|interim}}, {{W|en|transitional}}, {{W|en|ad interim}}, {{W|en|periodic|guman=erê}}, {{W|en|chronological|guman=erê}}
* {{Z|ca}}: {{W|ca|provisional}}, {{W|ca|provisori}}
* {{Z|pap}}: {{W|pap|temporal}}
* {{Z|pt}}: {{W|pt|provisório}}, {{W|pt|temporário}}
* {{Z|es}}: {{W|es|provisional}}, {{W|es|interino}}
* {{Z|tr}}: {{W|tr|geçici}}
{{werger-bin}}
=== Hoker ===
{{hoker|ku}}
# [[demkî]], [[miweqet]], [[berdem]], [[demdiyar]], [[rabor]], [[ne berdewam]], [[ne daîmî]], [[ne herdemî]], ne [[hertimî]], ne [[mayinde]], <br>tişta/ê bo [[dem]]ek [[diyar]]
#* {{jêder-malper|ku|jêgirtin=Çelik got ku divê agirbesta PKK'ê ne '''demî''' lê mayînde be. Çelik ku diyar kir rawestiyana tundiyê geşedaneke baş e, got ku divê êdî tundî nebe amûra xweîfadekirinê.|malper=Netkurd.com|sal=8/2010}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
e3mdh73tdo9ugjj4htcbanpyrb78b0d
alçax
0
55241
6328776
6138116
2026-08-11T00:25:16Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328776
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|alçax}}
{{rengdêr|ku}}
# [[necamêr]], [[nemerd]], [[nemirov]], [[bêrûmet]], [[bêşeref]], [[bênamûs]], [[ne maqûl]], [[pîs]]
#* {{jêder-malper|ku|jêgirtin=Osman Baydemirî di parastina xwe ya mehkemeyê de got “rêkirina zarokan bo serê çiyayan alçaxî” ye.|malper=Nefel.com|sal=8/2010}}
==== Jê ====
* [[alçaxane]]
* [[alçaxî]]
* [[alçaxîtî]]
* [[alçaxtî]]
==== Etîmolojî ====
Ji {{ji|tr|ku|alçak}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|gemein}}
* {{Z|en}}: {{W+|en|succumbing|guman=erê}}
{{werger-bin}}
i5i52osvlrcyaf06av0nc3rykf0oy1w
dorfireh
0
57871
6328935
6246268
2026-08-11T11:45:54Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328935
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[berfireh]]
#* {{jêder-malper|ku|jêgirtin=Serokkomarê Tirkiyeyê Abdullah Gul 30’ê kanûnê tê Amedê. Ev hatin girîng e. Bendewarî ew e ku Gul ji Amedê peyama sersalê ya ji bo tevahiya Tirkiyeyê bide. Gul dê li Amedê çi bêje? Bêguman, şêwirmendên wî '''dorfireh''' li ser peyama ku ew ê bide dixebitin. Her wiha divê paşguh neyê kirin ku Gul piştî civîna MGK’ê [Encûmena Asayîşa Neteweyî] ya dawiya salê pêk bîne dê bê Amedê. Ev noqte, peyama Gul dê bide hê jî giranbuhatir dike. Lewre tiştên ku Gul dê li Amedê bîne ziman, dê wekî peyamên di civîna MGK’ê de hatine rafînekirin bêne qebûlkirin. Ligel raya giştî ya Tirkiyeyê siyaseta kurd jî dê peyamên ku li Amedê bêne dayîn wisa şîrove bike.|nivîskar=Adil Zozanî|sernav=Heke Abdullah Gul kurd bûya|malper=Welat.com|sal=12/2010}}
==== Formên alternatîv ====
* {{g|ku|dorfere}}
* {{g|ku|dorfereh}}
* {{g|ku|dorfire}}
* {{g|ku|dorferhe}}
* {{g|ku|dorfirhe}}
* {{g|ku|dewrfireh}}
==== Jê ====
{{kol3|ku|cure=Jê
|dorfirehî
|dorfirehîtî
|dorfirehtî
|dorfireh kirin<pos:lêker>
|dorfirehkirin<pos:navdêr>
|dorfirehkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{pêk|ku|dor|fireh}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|large}}, {{W|en|vast}}, {{W|en|extensive}}
* {{Z|tr}}: {{W|tr|derin}}, {{W|tr|etraflı}}
{{werger-bin}}
nqy85wg8vbwyuaonadfm52dipb6g43l
femînîst
0
57972
6328958
6250814
2026-08-11T11:50:00Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328958
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# kesa/ê ku [[daxwaz]]a [[bicihanîn]] û [[zêde]]kirina [[maf]]ên [[jin]]an dike
#* {{jêder-malper|ku|jêgirtin=Nivîskara '''femînîst''' Hîdayet Şefkatli Tuksal, di kanala Habertürk de behsa hebûna cemaetek îslamî kir û tofanek [[kesanedî]] rakir. Hîdayet Şefkatli Tuksal, mêrê xwe ji xwe berdide û dibêje: "Min bi rêya nasek xwe ew nas kir û min bi çavê serê xwe dît. Gava ez çûm mala jinikê, min keçek ciwan di mala wê de dît. Piştî pirsê, jinikê got „ew hewîya min e, min ji mêrê xwe re aniye".|nivîskar=|sernav=|url=|malper=Lotikxane.com|sal=1/2011}}
==== Formên alternatîv ====
* [[fêmînîst]]
==== Dijmane ====
* [[maskulîst]]
* [[maşîst]]
* [[şovenîzm]]
==== Etîmolojî ====
Ji {{deyn|en|ku|feminist}}, ji {{ji|la|ku|femininus}} + [[-îst]].
==== Têkildar ====
* [[femînîn]]
* [[femînîzm]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Feminist|m}}, {{W|de|Feministin|f}}
* {{Z|fi}}: {{W+|fi|feministi}}
* {{Z|fr}}: {{W|fr|féministe|m}}
* {{Z|nl}}: {{W|nl|feminist|m}}, {{W|nl|feministe|f}}
* {{Z|en}}: {{W+|en|feminist}}
* {{Z|ja}}: {{W|ja|フェミニスト|tr=feminisuto}}
* {{Z|cmn}}: {{W|cmn|女權主義者|sc=Hani}}, {{W|cmn|女权主义者|tr=nǚquánzhǔyìzhě}}, {{W|cmn|女權擴張論者|sc=Hani}}, {{W|cmn|女权扩张论者|tr=nǚquánkuòzhānglùnzhě}}
* {{Z|ru}}: {{W|ru|tr=feminíst|феминист|m}}, {{W|ru|tr=feminístka|феминистка|f}}
* {{Z|es}}: {{W|es|feminista|m}}
* {{Z|sv}}: {{W|sv|feminist|c}}
* {{Z|tr}}: {{W+|tr|feminist}}
* {{Z|el}}: {{W|el|feminist|m}}, {{W|el|feministkinja|f}}
{{werger-bin}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[têkildar]]î [[femînîzm]]ê
==== Werger ====
{{werger-ser}}
{{werger-bin}}
0j5h5qm4cy7hgzkpvh4dcne8llardng
berhelist
0
60353
6328800
6278156
2026-08-11T00:28:13Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328800
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# [[dijber]], [[dijraber]], [[raqib]], [[beramber]], [[mixalif]], [[oponent]], [[opozisyon]]
#* {{jêder-malper|ku|jêgirtin=Dema ko dijmin bi dijminahiya xwe û berpirsên hukmetê jî bi gendeliya xwe Kurdistanê lawaz û qels dikin, '''berhelistên''' hukmetê anko partiyên opozîsyon jî bi şikandina hemî pîroziyan gemiya ko ew bi xwe jî liser in kun dikin.|nivîskar=[[w:Lezgîn Çalî|Lezgîn Çalî]]|sernav=Sedsala 21-ê sedsala kurdan e|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=31&RubricNr=&ArticleNr=5821|malper=Nefel.com|sal=5/2011}}
==== Jê ====
* [[berhelistî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
l3tz6ay8gyxu7c17ik59j8ydb4cc6ji
Şablon:bnr herwiha
10
61439
6328853
232659
2026-08-11T01:01:25Z
EmausBot
6143
Beralîkirina ducarî li ser [[Şablon:herwiha binêre]] hat sererastkirin
6328853
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:herwiha binêre]]
rs8zw8507u3wm1cnt3aeeldn5rbtb0c
Şablon:Binêre herwiha
10
61440
6328848
232653
2026-08-11T01:00:35Z
EmausBot
6143
Beralîkirina ducarî li ser [[Şablon:herwiha binêre]] hat sererastkirin
6328848
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:herwiha binêre]]
rs8zw8507u3wm1cnt3aeeldn5rbtb0c
begefendî
0
61454
6328797
6246593
2026-08-11T00:27:31Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328797
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{f|ku|bi taybetî|qerfî}} [[beg]], [[efendî]], [[rêzdar]], [[birêz]], [[hêja]], [[ezbenî]], [[ezxulam]], [[ezqurban]], [[ezheyran]], [[ezgorî]]
#* {{jêder-malper|ku|jêgirtin=Selahattin Demirtaşê serokê gruba BDP-ê ya Parlamentoya Tirkiyeyê digel hinek parlamenterên gruba BDP-ê hat cihê konserê û ji xelkê re axivî û behsa zordariya walî û dozgirên tirk kir û got: — Dozgir ji Veysel Tuncay re dibêje ”yan bibêje ka kê ji te xwest ko tu wê stranê lê bidî yan jî em te bernadin”. Ez bangî wî dozgirê ko ev bêqanûnîtî kiriye dikim: Yê ko xwest ew stran lê bêt dan, bêt guhdarî kirin û bêt gotin ez im. Ma dozgir '''begefendî''' nizane ko gelê kurd li Kurdistanê bi kurdî diaxive û guhdariya stranên kurdî dike. Em dê li hemberî vê bêqanûnîtiyê û mirovrevandinê bi hev re strana ”Herne pêş” bibêjin.|malper=Nefel.com|sal=7/2011}}
==== Bi alfabeyên din ====
* {{ku-ar|بهگئهفهندی}}
==== Formên alternatîv ====
* [[begefindî]]
==== Jê ====
* [[begefendîtî]]
==== Etîmolojî ====
Ji {{qertaf|ku|beg|efendî}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W-|fa|آقای بیگ}}
* {{Z|en}}: [[dear]] [[sir]], {{W+|en|sir}}
* {{Z|tr}}: {{W+|tr|beyefendi}}
{{werger-bin}}
gbans38ya382kkm4vexo3a06m23pz1z
& Co
0
61467
6328764
5018845
2026-08-11T00:13:43Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328764
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* û ko
=== Biwêj ===
{{biwêj|ku}}
# ([[filankes]]) û [[heval]]ên xwe, <br>... û [[hevbend]]ên xwe, <br>... û [[hevrê]]yên xwe
#* {{jêder-malper|ku|jêgirtin=Dema min ew nivîsa taze xwend, hevpeyvîna Şakelî ya berî salan hat bîra min û jariya hine “akademisyenên” kurd hat ber çav. Gelo mirov wan îgnor bike û nivîsînên wan ji pişt guhan re bavêje çopa gilêş yan jî bersiv bide û argumentên xwe pêşkêş bike. Di vê gengeşiya bersiv dan û nedanê de, min bi baş dît ew bê bersiv nemînin. Her wisa bi baş dibînim kesên gengaza xwendina wan nivîsînan nîn e ji egerên cuda cuda bêpar nebin.|nivîskar=Suleiman Sulêvanî|sernav=''F. Şakelî '''& Co''' fenomeneke xirab di nav întelektueliya kurdên Başûr de|malper=Diyarname.com|sal=6/2007|ziman=}}
==== Etîmolojî ====
[[&]] + [[co.]] ji {{ji|en|ku|company|wate=[[hevbend]]; [[fîrma]]}}.
fwcqg1jllw8bfhjlqar9amm9gwrbsg7
kult
0
61607
6329031
6310691
2026-08-11T11:52:51Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329031
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kom]]ek [[dînî]] yan [[felsefî]] yan [[çandeyî]] (bi taybetî ya [[nehînî]] û [[marjînal]])
# [[heyranî]], kesa/ê ku wek [[pîroz]] tê [[peristin]]
#* {{jêder-kovar|ku|jêgirtin=Di çapemenîyê de, ev yek êdî qet nabe sedema gumanan: "Staline is back" ["Stalîn vegerîya"], Putîn "bi lez û bez şeref li Yekîtîya Sovyetê û '''kulta''' Stalîn vegerand"; jixwe, "Putîn, Stalînê serdema Înternetê ye."|nivîskar=Jean-Marie Chauvier|sernav=Cinên Meydana Sor|wergêr=Simko Destan|kovar=Le Monde Diplomatique kurdî|hejamr=19|sal=6/2011}}
# tiştê ku xelk yan [[kom]]ek [[pirr]] [[heyran]]ê wê/wî ye
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* {{g|ku|kultane}}
* {{g|ku|kultî}}
* {{g|ku|kultperês}}
* {{g|ku|kultperêsî}}
==== Etîmolojî ====
Ji {{ji|fr|ku|culte}} yan ji {{ji|en|ku|cult}} ji {{ji|la|ku|cultus}} ([[heyranî]]; [[xemxwerî]]) ji [[colō]] ([[parastin]])
==== Werger ====
{{werger-ser}}
* {{Z|fi}}: {{W+|fi|kultti}}
* {{Z|fr}}: {{W+|fr|culte}}
* {{Z|en}}: {{W+|en|cult}}
* {{Z|tr}}: {{W+|tr|kült}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[qeft]], [[gurz]], [[gimş]], [[dest]]
#* {{jêder-malper|ku|jêgirtin=Ya din, ev kultek pereyan ji bo rojên destengîyê hatibûn komkirin, ne ji tiştekî din ra û loma dera ku tu kesî dest tê nedaba|nivîskar=Franz Kafka|wergêr=Nuh Ateş|sernav=Veguherîn – II –|url=birnebun.eu/2015/10/veguherin-ii-franz-kafka|malper=birnebun.eu|dîrok=21.04. 2015}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|pl}} ==
=== Navdêr ===
{{navdêr|pl|z=n}}
# {{mijar|pl|dîn}} {{g|ku|îbadet}}, {{g|ku|peristin}}
=== Çavkanî ===
{{rûpela wergerê|pl|îbadet}}
923b8hpewzqujb1pszo3oi6skpq57ga
bi avê zanîn
0
62052
6328808
6138720
2026-08-11T00:28:43Z
Balyozbot
7867
/* Biwêj */ sererastkirin
6328808
wikitext
text/x-wiki
{{bnr-n|biavêzanîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Biwêj ===
{{biwêj|ku}}
# [[melevan]] bûn, [[avjen]] bûn, [[sobar]] bûn, [[melevanî]]kirin [[zanîn]], [[şareza]]ya/ê [[avjenî|avjeniyê]] bûn
#* {{jêder-malper|ku|jêgirtin=Min dil da te, poşman im: te dil da ber derba şûr<br>Ez '''bi avê nizanim''', te ez kirime behrek kûr.|nivîskar=Said Yusuf|sernav=Min dil da te|url=http://www.stranenkurdi.com/said-yusuf-min-dil-da-te/|malper=stranenkurdi.com|sal=2011}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
b6rsfqtf8ejjkrdu7cuhq0uvb6wjujt
Şablon:bnr-hrw
10
62545
6328849
241999
2026-08-11T01:00:45Z
EmausBot
6143
Beralîkirina ducarî li ser [[Şablon:herwiha binêre]] hat sererastkirin
6328849
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:herwiha binêre]]
rs8zw8507u3wm1cnt3aeeldn5rbtb0c
binnivîs
0
62748
6328815
6327637
2026-08-11T00:28:58Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328815
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
[[Wêne:Subtitle-Example.svg|thumb|250px|Nimûneyek ji binnivîsan di filman de.]]
# [[wergerandin|Wergerandina]] [[diyalog]]ên [[film]]an bi [[nivîs]]an <br>(ne bi [[dublaj]]ê).
#* {{jêder-malper|ku|jêgirtin=Weke hûn dizanin yek ji projeyên herî mezin ên malpera me wergera fîlman e. Lê dîsa weke hûn dizanin em ji bo fîlman dublajê nakin, em tenê ji bo fîlmên biyanî '''binnivîsan''' amade dikin. Lê heye ku herkes nezane binnivîs çi ne û çawa tên bikaranîn. dixwazim di vê nivîsê de li ser vê yekê bisekinim.|url=http://wergerine.com/index.php?option=com_content&view=article&id=31&Itemid=57|malper=wergerine.com|sal=1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Dijmane ====
* {{g|ku|dublaj}}
==== Jê ====
* {{g|ku|bêbinnivîs}}
* {{g|ku|bibinnivîs}}
* {{g|ku|binnivîsî}}
==== Etîmolojî ====
Ji {{pêş|ku|bin-|nivîs}}.
==== Bide ber ====
* {{g|ku|binivîs}}
* {{g|ku|jêrnav}}
* {{g|ku|bernivî}}
* {{g|ku|jornivîs}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Unterschrift|m}}, {{W+|de|Untertitel|n}}
* {{Z|cs}}: {{W-|cs|titulky|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|zh|字幕}} (zìmù)
* {{Z|da}}: {{W-|da|undertekst|c}}
* {{Z|fi}}: {{W+|fi|tekstitys}}
* {{Z|fr}}: {{W+|fr|sous-titre|n}}
* {{Z|gd}}: {{W-|gd|fo-thiotal|n}}
* {{Z|hi}}: {{W+|hi|उपशीर्षक|tr=upśīrṣak}}
* {{Z|en}}: {{W+|en|subtitle}} {{mane|captioning, textual versions of the dialog in films}}, {{W+|en|subtitles|guman=erê}}
* {{Z|ga}}: {{W-|ga|fotheideal|n}}
* {{Z|is}}: {{W+|is|texti|n}}, {{W+|is|þýðing|m}}, {{W+|is|þýðingartexti|n}}, {{W-|is|kvikmyndatexti|n}}
* {{Z|ja}}: {{W+|ja|字幕|tr=じまく, jimaku}}
* {{Z|ko}}: {{W+|ko|자막|tr=jamak|sc=Hang}} ({{W+|ko|字幕|sc=Hani}})
* {{Z|mk}}: {{W-|mk|титл|tr=titl|n}}, {{W-|mk|титлови|tr=títlovi|p}}, {{W-|mk|превод|tr=prévod|n}}
* {{Z|ms}}: {{W-|ms|sarikata}}
* {{Z|hu}}: {{W+|hu|felirat}}
* {{Z|pl}}: {{W+|pl|napisy}} {{p}}
* {{Z|pt}}: {{W+|pt|legenda|m}}
* {{Z|ru}}: {{W|ru|tr=subtítr|субтитр|n}}, {{W-|ru|субтитры|tr=subtítry|p}}
* {{Z|es}}: {{W+|es|subtítulo|n}}, {{W+|es|subtítulos|n}}
* {{Z|sv}}: {{W-|sv|textremsa|c}}
* {{Z|tr}}: {{W+|tr|altyazı}}, {{W-|tr|alt başlık}}, {{W+|tr|alt yazı}}
* {{Z|vi}}: {{W+|vi|phụ đề|xs=Vietnamese}}
* {{Z|el}}: {{W|el|tr=ypótitloi|υπότιτλοι|n}}
{{werger-bin}}
jjtguxsgbtlrkijb0uivil7enrplitw
hiseynok
0
62825
6328713
6328598
2026-08-10T18:08:45Z
Bikarhêner
3719
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328713
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Snail2.JPG|thumb|Şeytanokek]]
{{navdêr|ku|z=n}}
# {{f|ku|heywan}} (''[[devok]]a [[êzidî|êzidiyan]]'') [[şeytanok|Şeytanok]] ([[heywan]]ê bi[[qalik]]).
#* {{jêder|ku|jêgirtin=Michael Chyet: Êzîdî dibêjnê "hiseynok", ji ber ku ew newêrin peyiva "şeytan" bi lêv bikin. Li gora dînê wan/ola wan qedexe ye ku wê peyivê bêjin.|di koma "Zimanê Kurdî" ya li ser [[Rûname]]yê de, 1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* [[hisênok]]
* [[huseynok]]
* [[husênok]]
==== Navê zanistî ====
* ''[[Gastropoda]]''
==== Jê ====
* [[hiseynokane]]
* [[hiseynokfiroş]]
* [[hiseynokfiroşî]]
* [[hiseynokî]]
* [[hiseynoknas]]
* [[hiseynoknasî]]
* [[hiseynokvan]]
* [[hiseynokvanî]]
* [[hiseynokvanîtî]]
* [[hiseynokvantî]]
* [[hiseynokxwer]]
* [[hiseynokxwerî]]
==== Etîmolojî ====
Ji {{paş|ku|Husên|-ok}}. Qiseya {{q|ku|şeytan}} bal Êzidiyan heram e ku bê gotin. Lewma li şûna gotina ''şeytan'' ya di {{q|ku|şeytanok}} da navê Husên bin Elî dibêjin, bide ber dîsan jî çanda Êzidiyan {{q|ku|Sultan}} {{q|ku|Êzîd}} (padşehekî pîroz di dînê wan da, ya rast Yezîdê xelîfeyê pêncan yê Emewiyan e, ku Husên û malbata wî qirr kir).
==== Werger ====
{{werger-bnr|şeytanok}}
dpw48ud1uivh0wa5j11up70zcf68103
6328717
6328713
2026-08-10T18:34:46Z
Wikihez
7344
/* Jê */
6328717
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Snail2.JPG|thumb|Şeytanokek]]
{{navdêr|ku|z=n}}
# {{f|ku|heywan}} (''[[devok]]a [[êzidî|êzidiyan]]'') [[şeytanok|Şeytanok]] ([[heywan]]ê bi[[qalik]]).
#* {{jêder|ku|jêgirtin=Michael Chyet: Êzîdî dibêjnê "hiseynok", ji ber ku ew newêrin peyiva "şeytan" bi lêv bikin. Li gora dînê wan/ola wan qedexe ye ku wê peyivê bêjin.|di koma "Zimanê Kurdî" ya li ser [[Rûname]]yê de, 1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* [[hisênok]]
* [[huseynok]]
* [[husênok]]
==== Navê zanistî ====
* ''[[Gastropoda]]''
==== Jê ====
{{kol3|ku|cure=Jê
|hiseynokane
|hiseynokfiroş
|hiseynokfiroşî
|hiseynokî
|hiseynoknas
|hiseynoknasî
|hiseynokvan
|hiseynokvanî
|hiseynokvanîtî
|hiseynokvantî
|hiseynokxwer
|hiseynokxwerî
}}
==== Etîmolojî ====
Ji {{paş|ku|Husên|-ok}}. Qiseya {{q|ku|şeytan}} bal Êzidiyan heram e ku bê gotin. Lewma li şûna gotina ''şeytan'' ya di {{q|ku|şeytanok}} da navê Husên bin Elî dibêjin, bide ber dîsan jî çanda Êzidiyan {{q|ku|Sultan}} {{q|ku|Êzîd}} (padşehekî pîroz di dînê wan da, ya rast Yezîdê xelîfeyê pêncan yê Emewiyan e, ku Husên û malbata wî qirr kir).
==== Werger ====
{{werger-bnr|şeytanok}}
3dkzqo9gex6o2ne3s5r2rffrd9hmyx7
6328718
6328717
2026-08-10T18:44:44Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328718
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Snail2.JPG|thumb|Şeytanokek]]
{{navdêr|ku|z=n}}
# {{f|ku|heywan}} (''[[devok]]a [[êzidî|êzidiyan]]'') [[şeytanok|Şeytanok]] ([[heywan]]ê bi[[qalik]]).
#* {{jêder|ku|jêgirtin=Michael Chyet: Êzîdî dibêjnê "hiseynok", ji ber ku ew newêrin peyiva "şeytan" bi lêv bikin. Li gora dînê wan/ola wan qedexe ye ku wê peyivê bêjin.|di koma "Zimanê Kurdî" ya li ser [[Rûname]]yê de, 1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* [[hisênok]]
* [[huseynok]]
* [[husênok]]
==== Navê zanistî ====
* ''[[Gastropoda]]''
==== Jê ====
{{kol3|ku|cure=Jê
|hiseynokî
}}
==== Etîmolojî ====
Ji {{paş|ku|Husên|-ok}}. Qiseya {{q|ku|şeytan}} bal Êzidiyan heram e ku bê gotin. Lewma li şûna gotina ''şeytan'' ya di {{q|ku|şeytanok}} da navê Husên bin Elî dibêjin, bide ber dîsan jî çanda Êzidiyan {{q|ku|Sultan}} {{q|ku|Êzîd}} (padşehekî pîroz di dînê wan da, ya rast Yezîdê xelîfeyê pêncan yê Emewiyan e, ku Husên û malbata wî qirr kir).
==== Werger ====
{{werger-bnr|şeytanok}}
0isjfxs3m8whsobti6tx6k1u6orv0fn
6328719
6328718
2026-08-10T18:45:17Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328719
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Snail2.JPG|thumb|Şeytanokek]]
{{navdêr|ku|z=n}}
# {{f|ku|heywan|[[devok]]a [[êzidî|êzidiyan]]}} [[şeytanok|Şeytanok]] ([[heywan]]ê bi[[qalik]]).
#* {{jêder|ku|jêgirtin=Michael Chyet: Êzîdî dibêjnê "hiseynok", ji ber ku ew newêrin peyiva "şeytan" bi lêv bikin. Li gora dînê wan/ola wan qedexe ye ku wê peyivê bêjin.|di koma "Zimanê Kurdî" ya li ser [[Rûname]]yê de, 1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* [[hisênok]]
* [[huseynok]]
* [[husênok]]
==== Navê zanistî ====
* ''[[Gastropoda]]''
==== Jê ====
{{kol3|ku|cure=Jê
|hiseynokî
}}
==== Etîmolojî ====
Ji {{paş|ku|Husên|-ok}}. Qiseya {{q|ku|şeytan}} bal Êzidiyan heram e ku bê gotin. Lewma li şûna gotina ''şeytan'' ya di {{q|ku|şeytanok}} da navê Husên bin Elî dibêjin, bide ber dîsan jî çanda Êzidiyan {{q|ku|Sultan}} {{q|ku|Êzîd}} (padşehekî pîroz di dînê wan da, ya rast Yezîdê xelîfeyê pêncan yê Emewiyan e, ku Husên û malbata wî qirr kir).
==== Werger ====
{{werger-bnr|şeytanok}}
ju876uuvhx30j63jb749g65otnpc2oz
6328720
6328719
2026-08-10T18:45:51Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6328720
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Snail2.JPG|thumb|Şeytanokek]]
{{navdêr|ku|z=n}}
# {{f|ku|heywan|[[devok]]a [[êzidî|êzidiyan]]}} [[heywan|Heywan]]ê bi[[qalik]].
#: {{hevmane|ku|şeytanok}}
#* {{jêder|ku|jêgirtin=Michael Chyet: Êzîdî dibêjnê "hiseynok", ji ber ku ew newêrin peyiva "şeytan" bi lêv bikin. Li gora dînê wan/ola wan qedexe ye ku wê peyivê bêjin.|di koma "Zimanê Kurdî" ya li ser [[Rûname]]yê de, 1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* {{g|ku|hisênok}}
* {{g|ku|huseynok}}
* {{g|ku|husênok}}
==== Navê zanistî ====
* ''[[Gastropoda]]''
==== Jê ====
{{kol3|ku|cure=Jê
|hiseynokî
}}
==== Etîmolojî ====
Ji {{paş|ku|Husên|-ok}}. Qiseya {{q|ku|şeytan}} bal Êzidiyan heram e ku bê gotin. Lewma li şûna gotina ''şeytan'' ya di {{q|ku|şeytanok}} da navê Husên bin Elî dibêjin, bide ber dîsan jî çanda Êzidiyan {{q|ku|Sultan}} {{q|ku|Êzîd}} (padşehekî pîroz di dînê wan da, ya rast Yezîdê xelîfeyê pêncan yê Emewiyan e, ku Husên û malbata wî qirr kir).
==== Werger ====
{{werger-bnr|şeytanok}}
s9s0lt9qt8r4ppjnrt3865vlw5onr2v
6328721
6328720
2026-08-10T18:46:18Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328721
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Snail2.JPG|thumb|Şeytanokek]]
{{navdêr|ku|z=n}}
# {{f|ku|heywan|[[devok]]a [[êzidî|êzidiyan]]}} [[heywan|Heywanekî]] bi[[qalik]] e.
#: {{hevmane|ku|şeytanok}}
#* {{jêder|ku|jêgirtin=Michael Chyet: Êzîdî dibêjnê "hiseynok", ji ber ku ew newêrin peyiva "şeytan" bi lêv bikin. Li gora dînê wan/ola wan qedexe ye ku wê peyivê bêjin.|di koma "Zimanê Kurdî" ya li ser [[Rûname]]yê de, 1/2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* {{g|ku|hisênok}}
* {{g|ku|huseynok}}
* {{g|ku|husênok}}
==== Navê zanistî ====
* ''[[Gastropoda]]''
==== Jê ====
{{kol3|ku|cure=Jê
|hiseynokî
}}
==== Etîmolojî ====
Ji {{paş|ku|Husên|-ok}}. Qiseya {{q|ku|şeytan}} bal Êzidiyan heram e ku bê gotin. Lewma li şûna gotina ''şeytan'' ya di {{q|ku|şeytanok}} da navê Husên bin Elî dibêjin, bide ber dîsan jî çanda Êzidiyan {{q|ku|Sultan}} {{q|ku|Êzîd}} (padşehekî pîroz di dînê wan da, ya rast Yezîdê xelîfeyê pêncan yê Emewiyan e, ku Husên û malbata wî qirr kir).
==== Werger ====
{{werger-bnr|şeytanok}}
tpelsbla3e2f9e78o8p99sbib6frsho
bestseller
0
62914
6328805
5954738
2026-08-11T00:28:30Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328805
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
# bêstsêlir
# bestseler
=== Rengdêr ===
{{ku-tewîn-rd|bestseller}}
{{rengdêr|ku}}
# [[berhem]]ên ku [[pirr]] tên [[firotin]] (bi taybetî [[pirtûk]])
#* {{jêder-malper|ku|jêgirtin=Kitêba Ehmedê Xanî "[[Mem û Zîn]]" li Kurdistanê û Tirkiyeyê bû '''bestseller'''.|malper=Nefel.com|sal=2/2012}}
# kesa/ê ku [[berhem]]ên wî gelek tên [[firotin]]
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|bestseller}}: ji [[best]] ([[baş]]tirîn, herî baş) + [[seller]] ([[-firoş]], [[firoşkar]])
==== Werger ====
{{werger-ser}}
{{werger-bin}}
72agga6aemwk78rn75du52uv0xhkw5k
berdanberdan
0
63260
6328854
6298822
2026-08-11T01:08:52Z
Wikihez
7344
/* Navdêr */
6328854
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kaos|Kaos]], [[bêahengî]], [[nearamî]], [[tevlihevî]], [[nîqaş]], [[qerqeşe]].
# [[serbestî|Serbestî]], [[serberdayî]], ne[[bestî]].
#: {{nm|ku|Di siyasetê da, '''berdanberdan''' û bêrêgezî herdem zirarê dide keseyatîya mirovan.}}
#* {{jêder-malper|ku|jêgirtin=Hewqas '''berdanberdan''' û tevlîhevî çawa çêdibin? Mirov dikare van bûyeran wek anarşîzm û sikandal jî binav bike.|nivîskar=Siddiq Bozarslan|sernav=Kurdistan ne Tunûs e û ne jî Misir! -2|url=http://netewe.com/node/nivzede.php?id=98|urlya-arşîvê=https://web.archive.org/web/20130518050507/http://netewe.com/node/nivzede.php?id=98|malper=netewe.com|dîrok=02.02.2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[berdan berdan]]
==== Etîmolojî ====
Ji {{pêk|ku|berdan|berdan}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|chaos}}, {{W-|af|baaierd}}
* {{Z|de}}: {{W+|de|Chaos|n}}; {{W+|de|Wirrwarr|m}}
* {{Z|da}}: {{W+|da|rod}}
* {{Z|eo}}: {{W-|eo|ĥaoso}}
* {{Z|fo}}: {{W-|fo|ruðuleiki}}, {{W-|fo|fløkja}}
* {{Z|fi}}: {{W+|fi|kaaos}}; {{W+|fi|epäjärjestys}}
* {{Z|fr}}: [[chaos]]
* {{Z|fur}}: {{W-|fur|disoarder}}, {{W-|fur|tizeboel}}
* {{Z|fy}}: {{W-|fy|disoarder}}, {{W-|fy|tizeboel}}
* {{Z|nl}}: {{W+|nl|chaos}}; {{W+|nl|wanorde}}, {{W+|nl|baaierd}}, {{W+|nl|rommel}}, {{W+|nl|warboel}}, {{W+|nl|warwinkel}}
* {{Z|en}}: {{W+|en|chaos}}; {{W+|en|disorder}}, {{W+|en|tangle}}, {{W+|en|havoc}}, {{W+|en|disarray}}
* {{Z|ca}}: {{W+|ca|caos}}
* {{Z|la}}: {{W-|la|chaos}}
* {{Z|ms}}: {{W-|ms|kekacauan}}
* {{Z|pap}}: {{W-|pap|babel}}, {{W-|pap|bochincha}}, {{W-|pap|desòrden}}, {{W-|pap|kaos}}
* {{Z|pt}}: {{W+|pt|caos}}
* {{Z|ru}}: {{W+|ru|беспорядок}}
* {{Z|es}}: {{W+|es|caos}}
* {{Z|sv}}: {{W+|sv|kaos}}, {{W+|sv|oordning}}, {{W+|sv|trassel}}
* {{Z|tr}}: {{W+|tr|kaos}}
* {{Z|el}}: {{W+|el|χάος}}
{{werger-bin}}
mu1qlttpitsas8ie1mc5sqlwq4ac4y3
gava dî
0
63262
6328874
6256506
2026-08-11T10:45:39Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328874
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# çendek [[berê]], hinekî berî niha, di van demên nêzik de
#* {{jêder-malper|ku|jêgirtin='''Gava dî''' min nivîsa A. Tîgrîs di www.e-weje.com'ê da xwand. Li gorî ragîhandina wî miletê kurd yê ku ber bi meydana newrozê dimeshiya ji nîviyê zêdetir bi tirkî u yê din jî bi kurdiyeke xirab bi hevdu ra deng dikirine|nivîskar=Zinarê Xamo|sernav=Newroza îsal û evîndariya kurdan ya zimanê tirkî|url=http://zinarexamo.blogspot.com/2009/03/newroza-isal-u-evindariya-kurdan-ya.html|malper=zinarexamo.blogspot.com|sal=2009}}
#* {{jêder-malper|ku|jêgirtin=Guh bide min. Ka çî hate serê min. '''Gavadî''' ezli ser sergo yê Rizo runiştî bûm. Hayê min ji tiştek tine bû.|nivîskar=Bedirxan Epözdemir|sernav=MİHEMEDÊ HELİME|url=http://www.pen-kurd.org/kurdi/bedirxan-epozdemir/mihemede-helime.html|malper=pen-kurd.org}}
==== Formên alternatîv ====
* [[gavadî]]
==== Dijmane ====
* [[ji zû ve]]
==== Etîmolojî ====
* [[gav]]a+ [[dî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|kürzlich}}, {{W|de|gerade|guman=erê}}, {{W|de|neuerlich|guman=erê}}
* {{Z|en}}: {{W|en|recently}}, {{W|en|lately}}
* {{Z|tr}}: {{W|tr|yakınlarda}}, {{W|tr|az önce}}
{{werger-bin}}
12uzhi9cl6raobln7ek6c2lp4hwb09w
mango
0
111726
6329049
6103948
2026-08-11T11:53:33Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329049
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
[[Wêne:Mango 2008-3-1.JPG|thumb|Mango]]
{{navdêr|ku|z=}}
# [[fêqî|Fêqiyekî]] [[germistan]]an yê bi [[şikl]]ê [[hêk]]an û bi [[reng]]ê [[pirteqalî]] ye.
#* {{jêder-malper|ku|jêgirtin='''Mango''', ew fêkiyê ku li navçeyên [[germesêr]] wek Hindistan û Afrîqayê çêdibe, li Sûriyê û bi taybetî li Tertûs, Laziqiyê û bakurê Idlibê di destpêka sedsala bîst û yekemîn de ji aliyê çend endazyaran ve li nav rûberekî sînordar de hatiye çandin.|malper=Rudaw.net/kurmanci|sal=10/2022}}
==== Navê zanistî ====
* ''[[Mangifera indica]]''
==== Etîmolojî ====
Ji {{ji|en|ku|mango}} ji {{ji|pt|ku|manga}} {{ji|ms|ku|mangga}} ji zimanekî [[dravîdî]], bo nimûne malayalamî yan tamilî.
==== Werger ====
{{werger-ser}}
* {{Z|abx}}: {{W|abx|mangga}}
* {{Z|af}}: {{W|af|veselperske}}
* {{Z|msm}}: {{W|msm|mangga}}
* {{Z|de}}: {{W|de|Mango|m}}
* {{Z|bm}}: {{W|bm|mangoro}}
* {{Z|bci}}: {{W|bci|amanngo}}
* {{Z|dua}}: {{W|dua|jangolo}}
* {{Z|id}}: {{W|id|mangga}}
* {{Z|ar}}: {{W|ar|مانجو}}
* {{Z|eo}}: {{W|eo|mango}}
* {{Z|fi}}: {{W|fi|mango}}
* {{Z|fr}}: {{W|fr|mangue|n}}
* {{Z|gl}}: {{W|gl|manga|m}}
* {{Z|hi}}: {{W|hi|आम}}
* {{Z|nl}}: {{W|nl|mango}}
* {{Z|he}}: {{W|he|מנגו|n}}
* {{Z|io}}: {{W|io|mango}}
* {{Z|en}}: {{W|en|mango}}
* {{Z|ja}}: {{W|ja|マンゴー|tr=mangō}}
* {{Z|cgc}}: {{W|cgc|mangga}}
* {{Z|ca}}: {{W|ca|mango}}
* {{Z|ks}}: {{W|ks|اَمب}}
* {{Z|ko}}: {{W|ko|망고|R=mango}}
* {{Z|ln}}: {{W|ln|língoló}}, {{W|ln|mángoló}}
* {{Z|mg}}: {{W|mg|manga}}
* {{Z|ml}}: {{W|ml|മാങ്ങ|R=māṅṅā}}
* {{Z|gv}}: {{W|gv|mango}}
* {{Z|mh}}: {{W|mh|mañko}}
* {{Z|no}}: {{W|no|mango}}
* {{Z|oc}}: {{W|oc|mango}}
* {{Z|pln}}: {{W|pln|mango}}
* {{Z|myp}}: {{W|myp|xáohoi}}
* {{Z|pl}}: {{W|pl|mango|nt}}
* {{Z|pt}}: {{W|pt|manga|m}}
* {{Z|ru}}: {{W|ru|манго}}
* {{Z|se}}: {{W|se|máŋgu}}
* {{Z|ses}}: {{W|ses|mangoro}}
* {{Z|es}}: {{W|es|mango|n}}
* {{Z|sv}}: {{W|sv|mango}}
* {{Z|zdj}}: {{W|zdj|emɓe}}, {{W|zdj|yemɓe}}
* {{Z|ta}}: {{W|ta|மாங்காய்|R=māṅkāy}}
* {{Z|tr}}: {{W|tr|mango}}
* {{Z|tvu}}: {{W|tvu|níngol}}
* {{Z|ur}}: {{W|ur|آم}}
* {{Z|vi}}: {{W|vi|quả xoài}}
* {{Z|wls}}: {{W|wls|foʻi mago}}
* {{Z|wo}}: {{W|wo|mango}}
{{werger-bin}}
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-us-mango.ogg|dever=DYA}}
* {{deng|en|en-au-mango.ogg|dever=Awistralya}}
* {{deng|en|LL-Q1860 (eng)-Simplificationalizer-mango.wav|Deng|dever=New Jersey, DYA}}
* {{deng|en|LL-Q1860 (eng)-Wodencafe-mango.wav|Deng|dever=Teksas, DYA}}
=== Navdêr ===
{{navdêr|en}}
# [[mango#ku|Mango]].
1md14hruy947aoxkfg8gs4awm9hye6x
artezyen
0
123909
6328781
6139240
2026-08-11T00:25:48Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328781
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
[[Wêne:Blâme puits de Bontemps (18).JPG|thumb|Bîra '''artezyen'''.]]
{{rengdêr|ku}}
# [[av]] han [[şile]]yeke din ya [[bîr]]an ku bi [[hêz]]a xwe [[bilind]] dibe:
#* {{jêder-malper|ku|jêgirtin=Waliyê Şirnexê Osman Bilgin diyar kir, li herêma Çiyayê Gabarê ya rezerva petrolê lê hat dîtin, ji bîra '''artezyen''' a ekîb li ser dixebitin, petrol derket.|malper=Aa.com.tr/kk|sernav=Ji bîra artezyen a li qada petrolê ya li Çiyayê Gabarê hat vekirin petrol derket|sal=5/2023|url=https://www.aa.com.tr/kk/abor%C3%AE/ji-b%C3%AEra-artezyen-a-li-qada-petrol%C3%AA-ya-li-ciyay%C3%AA-gabar%C3%AA-hat-vekirin-petrol-derket/2906620}}
==== Etîmolojî ====
Ji {{deyn|fr|ku|puits artésien|w=bîra artezyen}} ji navê herêma {{q|fr|Artois}} ku bîreke wisa lê hatibû dîtin. Heman peyv wek {{q|en|artesian}} ketiye îngilîzî jî.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|artesisch}}
* {{Z|fr}}: {{W+|fr|artésien}}
* {{Z|en}}: {{W+|en|artesian}}
* {{Z|tr}}: {{W+|tr|artezyen}}
* {{Z|el}}: {{W+|el|αρτεσιανός}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Rengdêr ===
{{rengdêr|tr}}
# {{g|ku|artezyen}}, [[bîr]]a artezyen
o3cajamsacc1hn6rzz5b2uro3taf1gt
fay
0
136145
6328957
6306452
2026-08-11T11:49:56Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328957
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kelişte]] yan [[şeq]]eke [[mezin]] li [[erd]]ekê ku bi taybetî ji ber [[erdhej]]înê [[peyda]] bûye:
#* {{jêder-malper|ku|jêgirtin=Endezyarê li Rêveberiya Vekolîn û Lêgerina Madeyan (MTA) Hasan Elmacî, ji bo Edeneyê hişyariya erdhejeke dijwar da û got ku fayeke çalak heye di wê herêmê re derbas dibe. Hasan Elmacî herwiha dibêje ew '''fay''' potansiyela erdhejeke zêdeyî 7.1 pile [[li xwe girtin|li xwe digire]] û got, "Erdhejêke bi pileya 7.1 dê Edeneyê [[ji nav birin|ji nav bibe]]."|url=https://www.rudaw.net/kurmanci/middleeast/turkey/160420235|sernav= Pisporê erdhejê hişyariya erdhejeke dijwar da|malper=Rûdaw.net|sal=4/2023}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Deyn ji {{deyn|tr|ku|fay}} ji {{ji|fr|ku|faille}} ji {{q|fr|faillir|w=[[têk çûn]]}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|en}} ==
=== Navdêr ===
{{en-navdêr}}
# [[perî]], [[horî]]
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[şeq]], [[derz]], [[kelişte]]
ioa3xdx7xf61d7b4iylqybiblbx3kvr
leh
0
152374
6329041
5156138
2026-08-11T11:53:15Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329041
wikitext
text/x-wiki
{{bnr-h|Leh}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Serenav ===
{{serenav|ku}}
# Kesê ji [[Polonya]]yê an bi eslê xwe [[polonî]] ye.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Pole|n}}, {{W+|de|Polin|m}}
* {{Z|hi}}: {{W+|hi|पोल|tr=pol}}, {{W+|hi|पोलिश|tr=poliś}}
* {{Z|en}}: {{W+|en|Pole}}
* {{Z|ja}}: {{W+|ja|ポーランド人|tr=ポーランドじん, pōrandojin}}
* {{Z|ko}}: {{W+|ko|폴란드인|tr=pollandeu'in}}
* {{Z|tr}}: {{W+|tr|Polonyalı}}, {{W+|tr|Leh}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku}}
# [[alî girtin|Ali]]yê tiştekî an kesekî [[alî girtin|girtin]].
#* {{jêder-malper|ku|jêgirtin=Di dengdana kongreyê de 51 kes '''di lehê de''' û 58 kes di eleyhiya derketina wî ya derve de dengê xwe dan.|sernav=Nehiştin serokê Perûyê Castillo ji Perûyê here derveyê welat|url=https://www.peyamakurd.info/kurmanci/C%C3%AEhan/nehistin-seroke-peruye-castillo-ji-peruye-here-derveye-welat|urlya-arşîvê=https://web.archive.org/web/20230624220612/https://www.peyamakurd.info/kurmanci/C%C3%AEhan/nehistin-seroke-peruye-castillo-ji-peruye-here-derveye-welat|malper=peyamakurd.info|dîrok=2022-11-19}}
#* {{jêder-malper|ku|jêgirtin=Piştî hilbijartinên DYAyê, hîn encamên fermî dîyar nebûbe jî, serkeftina Joe Biden ji alîyê gelek xwende û sîyasetmedarên me ve weke mizgînîyekê hate pêşwazîkirin û bû sedemê kêfxweşîya hin terefên kurd. Ji ber hin gotinên Biden yên '''di lehê''' kurdan '''de''', tê hêvîkirin ku di serdema serokatîya Biden de, helwêsta DYAyê ya di herêmê de dê bê guhertin û piştgiriya navdewletî ji bo dewletbûyina kurdan dê zêde bibe.|nivîskar=Fuad Onen|sernav=Serkeftina Joe Biden û şahiya kurdan|url=https://pelkurd.com/fuat-onen/serkeftina-joe-biden-u-sahiya-kurdan/|urlya-arşîvê=https://web.archive.org/web/20230624221456/https://pelkurd.com/fuat-onen/serkeftina-joe-biden-u-sahiya-kurdan/|malper=pelkurd.com|sal=2020}}
#* {{jêder-malper|ku|jêgirtin=Îro ji bo vê daxwaza kurdan şertên derve gelkî musaîd in, lê wek hertiştî ev şert jî ne ebedî ne, sibe dikane '''di lehê''' kurdan '''da''' biguhere.|nivîskar=Zinarê Xamo|url=https://zinarexamo.blogspot.com/2014/11/bi-xer-eme-kurdistana-serbixwe-bibinin.html|urlya-arşîvê=https://web.archive.org/web/20230624222744/https://zinarexamo.blogspot.com/2014/11/bi-xer-eme-kurdistana-serbixwe-bibinin.html|malper=zinarexamo.blogspot.com|dîrok=2014-11-20}}
==== Dijmane ====
* {{g|ku|eleyh}}, {{g|ku|eleyhî}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[leh#ku|leh]], [[berwer]]
# [[havil]], [[sûd]], [[kelk]]
==== Dijmane ====
* {{g|tr|aleyh}} ''(1)''
9p3zdmh4qc6jxi2e3yycq3hy3n3g52j
lekan
0
152390
6329042
6311140
2026-08-11T11:53:17Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329042
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{dever|Serhed|Serheda Jorîn}} Alavên ku tên pêkirin bo ku mirov li ser berfê pê bigere û neçike nav berfê de.
#: {{hevmaneyên peyvê|ku|kele|leyan|liyan|niyal}}
#* {{jêder-malper|ku|jêgirtin=Berf usa hişk dibû, wekî me, zara, bê '''lekana''' xwe ser dişimitand.|nivîskar=Emerîkê Serdar|sernav=GUMAN|url=http://kurd.amarikesardar.com/?p=271|malper=kurd.amarikesardar.com|sal=2014}}
#* {{jêder-malper|ku|jêgirtin=Apê me yê Gurco dibêje heta çiri çira çarix û '''lekana''' werin bîra min, ez nayêm Serhedê.|nivîskar=Hasan Akbal/Hesenê Alê|sernav=DENGBÊJ Û STRANÊN ME|url=https://www.kurdipedia.org/files/books/2013/88669.PDF?ver=130240716467026376}}
[[Wêne:Город Амурск музей (38).JPG|thumb|230пкс|Cotek lakanên dewra berê.]]
[[Wêne:Ski.jpg|100px|thumb|230пкс|Lakana berfê ya modern.]]
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|lakan}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|لەکان}}
* {{Z|zza}}: {{W-|zza|lekan}} <ref>{{pirtûk|nivîskar=Rosan Hayıg|url=https://www.academia.edu/37632683/Zazaca_T%C3%BCrk%C3%A7e_s%C3%B6zl%C3%BCk|sernav=Zazaca Türkçe Sözlük|sal=2012|isbn=978-975-8277-43-8|nekat=1}}</ref>
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W|ar|حذاء الثلج|guman=erê}} پاچیله
* {{Z|fa}}: {{W|fa|کفش برف|guman=erê}}, {{W|fa|پاچیله}}
* {{Z|fi}}: {{W|fi|lumikenkä|guman=erê}}
* {{Z|en}}: {{W|en|snowshoe}}
* {{Z|ru}}: {{W|ru|лыжи}}, {{W|ru|лыжи}}
* {{Z|tr}}: {{W|tr|kar ayakkabısı}}, {{W|tr|kasnak|guman=erê}}, {{W|tr|lekan}}, {{W|tr|hedik|guman=erê}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|Wan}} [[leyan]], {{g|ku|lekan}} (Alava ji bo meşîna ser berfê) <ref>{{malper|url=https://sozluk.gov.tr/|sernav=DERLEME SÖZLÜĞÜ (TÜRKİYE TÜRKÇESİ AĞIZLARI SÖZLÜĞÜ)|malper=sozluk.gov.tr}}</ref>
=== Çavkanî ===
{{çavkanî}}
4px4zjrsp5lqijpaomq3d5pwcno5lgm
ons
0
157488
6329079
6139310
2026-08-11T11:54:35Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329079
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[weqî]], <br>[[pîvan]]eke [[giranî|giraniyê]] anku [[wezn]]ê ya 28,3495 [[gram]] e<br> (bi taybetî bo [[pîvan]]a [[zêr]])
#* {{jêder-malper|ku|jêgirtin=Li gorî pêşbîniyên City Bankê her '''ons'''a zêr dê heta 6-12 mehan bibe 3 hezar dolar.|malper=Rudaw.net/kurmanci|sal=10/2024|sernav=City Bank: Onsa zêr dê bibe 3000 dolar|url=https://www.rudaw.net/kurmanci/business/22102024}}
==== Etîmolojî ====
Ji {{ji|fr|ku|once}} ji {{ji|la|ku|uncia}}, têkilî {{g|la|ūnus|w=yek}}.
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W-|sq|ons|m}}
* {{Z|de}}: {{W+|de|Unze|m}}
* {{Z|arc}}:
*: {{Z|syc}}: {{W-|syc|ܐܘܢܩܝܐ|m|tr=ʾūnqīyā}}
* {{Z|bn}}: {{W+|bn|আউন্স}}
* {{Z|bg}}: {{W-|bg|унция|m}}
* {{Z|cs}}: {{W+|cs|unce|m}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|安士|tr=on1 si6-2}}
*: {{Z|cmn}}: {{W+|cmn|盎司|tr=àngsī}}
* {{Z|id}}: {{W+|id|ons}}
* {{Z|ar}}: {{W-|ar|أُوقِيَّة|m}}, {{W-|ar|وِقِيَّة|m}}, {{W-|ar|أَوْنْس|n}}, {{W-|ar|أونصة|m|tr=ʔunṣa}}, {{W-|ar|أونسة|m|tr=ʔunsa}}
* {{Z|hy}}: {{W+|hy|ունցիա}}, {{W+|hy|ունկի}}
* {{Z|eo}}: {{W+|eo|unco}}
* {{Z|gez}}: {{W-|gez|ወቄት}}
* {{Z|fo}}: {{W-|fo|unsa|m}}
* {{Z|fi}}: {{W+|fi|unssi}}
* {{Z|fr}}: {{W+|fr|once|m}}
* {{Z|fur}}: {{W-|fur|once|m}}
* {{Z|gd}}: {{W-|gd|unnsa|n}}
* {{Z|gl}}: {{W-|gl|onza|m}}
* {{Z|hi}}: {{W+|hi|औंस}}
* {{Z|he}}: {{W+|he|אוּנְקִיָה|m|tr=unqiyá}}
* {{Z|enm}}: {{W-|enm|ounce}}
* {{Z|en}}: {{W+|en|ounce}}
* {{Z|ga}}: {{W-|ga|unsa|n}}, {{W-|ga|uinge|m}}
*: {{Z|sga}}: {{W-|sga|ungae|m}}
* {{Z|it}}: {{W+|it|oncia|m}}
* {{Z|is}}: {{W+|is|únsa|m}}
* {{Z|ja}}: {{W+|ja|オンス|tr=onsu}}
* {{Z|ca}}: {{W+|ca|unça|m}}
* {{Z|ko}}: {{W-|ko|온스}}
* {{Z|la}}: {{W-|la|uncia|m}}
* {{Z|lv}}: {{W-|lv|unce|m}}
* {{Z|lt}}: {{W-|lt|uncija|m}}
* {{Z|ms}}: {{W-|ms|auns}}
* {{Z|mt}}: {{W-|mt|uqija|m}}
* {{Z|mi}}: {{W-|mi|aunihi}}
* {{Z|hu}}: {{W+|hu|uncia}}
* {{Z|mn}}: {{W-|mn|унци}}
* {{Z|nrf}}: {{W-|nrf|onche|m}}
* {{Z|oc}}: {{W-|oc|onça|m}}
* {{Z|uz}}: {{W-|uz|untsiya}}
* {{Z|pl}}: {{W+|pl|uncja|m}}
* {{Z|pt}}: {{W+|pt|onça|m}}
* {{Z|rm}}: {{W-|rm|onza|m}}, {{W-|rm|untscha}}, {{W-|rm|unza}}, {{W-|rm|uonscha}}
* {{Z|ro}}: {{W+|ro|uncie|m}}
* {{Z|ru}}: {{W+|ru|у́нция|m}}
* {{Z|scn}}: {{W-|scn|oncia|m}}, {{W-|scn|uncia}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|у̑нца|m}}
*: Latînî: {{W+|sh|ȗnca|m}}
* {{Z|es}}: {{W+|es|onza|m}}
* {{Z|sw}}: {{W-|sw|wakia}}
* {{Z|sv}}: {{W+|sv|uns}}
* {{Z|tl}}: {{W-|tl|onsa}}
* {{Z|th}}: {{W-|th|ออนซ์}}
* {{Z|tr}}: {{W+|tr|ons}}
* {{Z|vec}}: {{W-|vec|onsa|m}}, {{W-|vec|onza}}, {{W-|vec|onzha}}, {{W-|vec|onça}}
* {{Z|cy}}: {{W+|cy|owns|m}}
* {{Z|km}}: {{W-|km|អោនស៍}}
* {{Z|el}}: {{W+|el|ουγγιά|m}}
* {{Z|zu}}: {{W-|zu|iawunsi|5}}
{{werger-bin}}
:{{werger çavkanî|en|ounce|beş=Ev qismê Wergerê|oldid=82402428}}
== {{ziman|af}} ==
=== Cînav ===
{{cînav|af}}
# [[em#ku|em]] (wek [[biker]])
== {{ziman|sq}} ==
=== Navdêr ===
{{navdêr|sq|z=m}}
# {{mijar|sq|pîvan}} {{g|ku|ons}}, {{g|ku|weqî}}
#* {{bêmînak|sq}}
=== Çavkanî ===
{{rûpela wergerê|sq|ons}}
== {{ziman|id}} ==
=== Navdêr ===
{{navdêr|id}}
# {{mijar|id|pîvan}} {{g|ku|ons}}, {{g|ku|weqî}}
#* {{bêmînak|id}}
=== Çavkanî ===
{{rûpela wergerê|id|ons}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# ons (yekeya giraniyê ku li Fransayê 30, 59 gr û li îngilistanê 28, 349 gr û li Holandayê jî 100 gr ye)
== {{ziman|vo}} ==
=== Cînav ===
{{cînav|vo}}
# [[ew#ku|ew]] (pirjimar), [[wan#ku|wan]]
17bmmpaojezle7kbszecl6rnciqse13
patetik
0
158649
6328729
4634034
2026-08-10T21:38:37Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328729
wikitext
text/x-wiki
{{h-bnr|patetîk}}
== {{ziman|tr}} ==
=== Rengdêr ===
{{rengdêr|tr}}
# [[kartêker]], [[bibandor]]
4cughegkr808qx9aq395uu7nes67m0u
çiriş otu
0
175129
6328873
6208774
2026-08-11T09:43:19Z
Bibliophile
1215
6328873
wikitext
text/x-wiki
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[gûlik]] (Asphdelus)
# [[loxîn]]
o8wp8qiw27ruoxdl1mmh1b5o5wrwokq
derbest
0
178825
6328905
6279967
2026-08-11T11:26:04Z
Balyozbot
7867
sererastkirin
6328905
wikitext
text/x-wiki
{{bnr-h|Derbest}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# dergirtî, [[nixamtî]] <br/>Tiştê ku derê wî hatiye girtin û bestin.
#* {{jêder-malper|ku|jêgirtin=bi wêne û helwest e<br>xeyal tê de serbest e<br>tirs ji ber wê bindest e<br>bê awaz be '''derbest''' e|nivîskar=Ferhadê Içmo|sernav=Helbest|url=https://www.helbestakurdi.com/helbest/ferhade-icmo--helbest.html|malper=helbestakurdi.com|sal=2002}}
#* {{jêder-pirtûk|ku|jêgirtin=Ey keça ciwan ser renga hinek al,<br> Der best nînim, rêbarim, derbest nînim, revok nînim<br>Dizanî şerpeze û '''derbest''' yekcar çira min |nivîskar=Prof. Qanatê Kurdo|sernav=Tarixa edebyeta kurdi|url=https://www.kurdipedia.org/docviewer.aspx?lng=13&book=20140505141231100527|sal=1992|çap=2|rûpel=317}}
# [[cidî|Cidî]], [[muhîm]].
#* {{jêder-malper|ku|jêgirtin=Pêwîst û girînge ku li ser heman astê ciddî û '''derbest''' û bi wefadarîya Neteweyî û Niştîmanî, dûr ji torebûn heqaret û kardanên kesokî – şexsî bê bi karanîn.|nivîskar=Konseya rêveber ya KNK|sernav=Hildana Ala Herêma Başûrê Kurdistanê li Kerkûk|url=http://www.kongrakurdistan.eu/ku/hildana-ala-herema-basure-kurdistane-li-kerkuk/|malper=kongrakurdistan.eu|sal=2017}}
#* {{jêder-kovar|ku|jêgirtin=Heke dewlet bi awayekî '''derbest''' li Yeşil digere, ew çawa dikare here Başûr li ser navê dewletê ji bo anîna Şemdin Sakik xebatê bike?|kovar=Azadiya Welat|sernav=Bêyî çeteyan şerê taybet nameşe|url=http://arsivakurd.org/images/arsiva_kurd/kovar/azadiya_welat/azadiya_welat_122.pdf|nivîskar=Samî Tan|hejmar=122|sal=1998|rûpel=2}}
#* {{jêder-malper|ku|jêgirtin=Tevî hewara mirovatî yê malbat û xelkê dilsozên din yên li Kurdistan û Îranê, rejîma Îranê bê xem û bê '''derbest''' ti cûre bersivek bi banga azadîxwazî, mirovperweriy û aşitîxwazîyê nade.|nivîskar=|sernav=KNK: Em xwedî li Penahî derkevin|url=http://www.yeniozgurpolitika.com/index.php?rupel=nuce&id=86360|malper=yeniozgurpolitika.com|sal=2018}}
# [[xeleq|Xeleq]].<ref>{{Ferhenga Destî|r=88}}</ref>
#* {{jêder-kovar|ku|jêgirtin=Li ber dergehê<br>Dilê min aza û serbest<br>Vedwestin<br>Vane<br>Ji '''derbesta''' mirinê<br>Bi dizî daketine|kovar=Pênûsa nû|sernav=0mîdên windayî|url=http://www.penusanu.com/penusanu/PN-kurdi-23.pdf|nivîskar=Boniye Cegerxwin|weşanxane=weşanên Hevbenda Nivîskar û Rojnamevanên Kurd li Sûrî|hejmar=23|sal=2014|rûpel=23}}
==== Jê ====
* [[derbest kirin]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser|dergirtî|1}}
* {{Z|ar}}: {{W+|ar|كفن}}, {{W+|ar|نعش}}, {{W+|ar|نقاب}}
* {{Z|fa}}: {{W+|fa|در بسته}}, {{W+|fa|پلوم}}, {{W+|fa|آک بند}}
* {{Z|en}}: {{W+|en|pall}}, {{W|en|copyhold|guman=erê}}
* {{Z|tr}}: {{W+|tr|kapalı}}, {{W+|tr|mahfuz}}
{{werger-bin}}
{{werger-ser|cidî, muhîm|2}}
* {{Z|en}}: {{W+|en|serious}}, {{W|en|important}}
* {{Z|tr}}: {{W+|tr|ciddi}}, {{W+|tr|önemli}}
{{werger-bin}}
{{werger-ser|xeleq|3}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{guherto|darbest}}
#* {{jêder-malper|ku|jêgirtin=Cenazeyê Akçelîk bi konvoyeke ji sedan wesayîtî, anîn gundê Şahê yê bajaroka Esnedereyê. Piştî nimêja cenaz ya li mizgefta gund, '''derbest''' li ser milan heta goristana gund hat hilgiritin.|sernav=Gerilayê HPG’ê Akçelîk ber bi rêwîtiya dawî ve hate oxirkirin|url=https://anfkurdi.com/kurdistan/gerilaye-hpg-e-akcelik-ber-bi-rewitiya-dawi-ve-hate-oxirkirin-67759|malper=anfkurdi.com|sal=2016}}
=== Çavkanî ===
{{çavkanî}}
pkk02if4lvpwq840rap5cm30eb7tvz1
hetîketî
0
179866
6328980
6282412
2026-08-11T11:51:00Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328980
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[şermezarî]], [[rezîltî]], sucê ku mirov an jî saziyekî li ber raya giştî û li hember mirovan [[rûreş]] dike
#* {{jêder-malper|ku|jêgirtin=Bjerregard da zanîn ku li Tirkiyê bi dehan rojnamevan ji ber kar û barên xwe yên pîşeyî girtî ne û ev rewş ji bo Tirkiyê '''hetîketî''' ye.|sernav=Bjerregard: Girtina Rojnamevanan ji bo Tirkiyê hetîketî ye|url=http://rudaw.net/kurmanci/middleeast/turkey/02112013|malper=rudaw.net|sal=2013}}
# [[perîşanî]] <ref>http://www.turkcekurtcesozluk.com/index.php/term/K%C3%BCrt%C3%A7e-K%C3%BCrt%C3%A7e+S%C3%B6zl%C3%BCk+%28Ferhenga+Kurd%C3%AE-Kurd%C3%AE%29, hetîketî.xhtml</ref>
==== Jê ====
* {{mj|Lêker}} [[hetîketî kirin]]
* {{mj|Navdêr}} [[hetîketîkirin]]
* {{mj|Rengdêr}} [[hetîketîkirî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Eklat|m|guman=erê}}
* {{Z|fa}}: {{W+|fa|رذالت}}, {{W+|fa|پریشانی}}
* {{Z|en}}: {{W+|en|opprobriousness}}, {{W+|en|scandal}}, {{W|en|gaffe|guman=erê}}
* {{Z|tr}}: {{W+|tr|rezalet}}, {{W+|tr|rezillik}}, {{W+|tr|skandal}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
i804muk3j38paiwwbnoyjftjljztdi4
çavbeloq
0
180130
6328883
6139842
2026-08-11T11:23:28Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328883
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[çavzoq]], mirovekî çavbeloq ew e yê çavên wî zêdeyî mirovên din, bel in.
#* {{jêder-malper|ku|jêgirtin=te derine rû zemînê dareke pişkivî<br>yan gurzeke stiriyên '''çavbeloq'''<br>ê mirovê êk ta e|nivîskar=Mihemed Nur Elhuseynî|sernav=Mêvan Im|url=https://www.helbestakurdi.com/helbest/mihemed-nur-elhuseyni--mevan-im.html|malper=helbestakurdi.com}}
#* {{jêder-malper|ku|jêgirtin=Keçika ser-reş, pêsîr-gir û '''çavbeloq''' bi çengurrê çend kursîyên naylonî ku ji ber tavikê spîçolkî bibûn girt û ew derxistin devê derîyê derve.|nivîskar=Miqedes Akin|sernav=Ala Franciscoyî û malavahîya bi 80 euroyan|url=https://bianet.org/kurdi/mafen-mirovan/224432-ala-franciscoyi-u-malavahiya-bi-80-euroyan|malper=bianet.org|sal=2020}}
==== Etîmolojî ====
Ji {{pêk|ku|çav|beloq}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|Glotzaugen}}
* {{Z|fa}}: {{W-|fa|چشم قلمبه}}
* {{Z|en}}: {{W+|en|pop eyed}}
* {{Z|tr}}: {{W+|tr|lokma göz}}, {{W+|tr|lokma gözlü}}, {{W-|tr|patlak gözlü}}, {{W+|tr|patlak göz}}
{{werger-bin}}
lsrs2fqrvjmdhk19gvrqb0xvxy4ng2j
çavgirtonek
0
180133
6328884
6321725
2026-08-11T11:23:48Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328884
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|lîstika zarokan}} Cureyekî lîstikên zarokan e.
#* {{jêder-malper|ku|jêgirtin=ji qedera xwe ya wêran gilî û gazincan dikim roj di hatina min ya dinyayê de poşman bûn xewnereşk li nav nivînan bi lîstika '''çavgirtonekê''' dileyîzin|nivîskar=Xizan Şîlan|sernav=Derwêşê Çîlekêş|url=https://www.antoloji.com/derwese-cilekes-siiri/|malper=antoloji.com|sal=2012}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W-|fa|چشم گذاشتن}}
* {{Z|en}}: {{W+|en|hide-and-seek}}
* {{Z|tr}}: {{W+|tr|saklambaç}}
{{werger-bin}}
=== Çavkanî ===
* {{pirtûk|sal=2006|nivîskar=Umîd Demîrhan|url=http://books.google.com.tr/books?id=5QCDCwAAQBAJ&pg=PA67&dq=%22%C3%A7avgirtonek%22&hl=&cd=1&source=gbs_api|sernav=Ferhenga Destî (Kurdî bi Kurdî)|weşanxane=Sewad|rûpel=67}}
* {{pirtûk|url=http://books.google.com.tr/books?id=6gLhDwAAQBAJ&pg=PA436&dq=%22%C3%A7avgirtonek%22&hl=&cd=2&source=gbs_api|sernav=Ferheng -Sözlük: KURMANCÎ-TIRKÎ TÜRKÇE-KÜRTÇE|weşanxane=Na Yayınları|ISBN=9786058694385|rûpel=436}}
l5wxn622mbpci6noesrs894pu2d99ni
baberik
0
181025
6328790
6297654
2026-08-11T00:26:55Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328790
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/bɑːbɛˈrɪk/}} {{r-ya req}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Wingaker1.jpg|thumb|250px|baberik]]
{{navdêr|ku|z=m}}
# [[pate|Pateyên]] bi [[beleme]] û [[keştî|keştiyan]] ve yên ku tên [[hildan]] daku [[ba]] lê bide û [[livandin|bilivîne]].
#* {{jêder-pirtûk|ku|jêgirtin="Gelek nekişand baran sekinî. Robînzon û Înî dest biçêkirina qeyîkê kriin. Ji du meh şûnda wana qeyîkeke mezine baş çêkirin, ji qisîlê jî '''baberika''' qeyîka çêkirin. Ber jî çêkirin, paşê gemî berbi berê kaş kirin.|nivîskar=Danyêl Dêfo|wergêr=Cêrdoê Gênco|sernav=Robînzon Krûzo|url=https://en.calameo.com/read/005071515ab266b1f3071|weşanxane=Înstîtûta kurdzanîyê - Wien|sal=2012|rûpel=37}}
#* {{jêder-malper|ku|jêgirtin=Piştî van gotinan wî li dor xwe nerî û dît ko ajotvanê keştiya wî carinan li '''baberikê''' û carinan jî li dûriyê dinere.|nivîskar=Husein Muhammed|sernav=»Peyamber-a« Xelîl Cibranî|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=33&RubricNr=&ArticleNr=3989|malper=nefel.com|sal=2008}}
#* {{jêder-kovar|ku|jêgirtin=Keçikin zirav li peravê xwêyê kom dikin<br>bi haqas keder, ew qas xwedaqûlkirî- li deryayê nanêrin.<br>Li wira, '''baberikek''', baberikeke sipî,<br>ji nava şînrengiyê gazî wan dike.|kovar=Kovara Rojava|sernav=Belkî siba ew ê me bikujin, 9 helbestên bijare yên Yannîs Rîtsos|nivîskar=Azad Ekkaş|url=http://rojava.net/wp-content/uploads/2019/09/KOVARA-ROJAVA2.pdf|hejmar=2|sal=2019|rûpel=77}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[baberrik]]
* [[baberk]]
* [[babirk]]
==== Jê ====
* [[bêbaberik]]
* [[bibaberik]]
* [[baberikdar]]
* [[baberikvan]]
* [[bagir]]
==== Etîmolojî ====
Ji {{pêk|ku|ba|berik}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Segel|n}}
* {{Z|cs}}: {{W+|cs|plachta|f}}
* {{Z|da}}: {{W+|da|sejl|n}}
* {{Z|hy}}: {{W+|hy|առագաստ}}
* {{Z|fi}}: {{W+|fi|purje}}
* {{Z|gd}}: {{W-|gd|seòl|m}}
* {{Z|gl}}: {{W+|gl|vela|f}}
* {{Z|nl}}: {{W+|nl|zeil|n}}
* {{Z|he}}: {{W+|he|מפרש|m}}
* {{Z|en}}: [[sail]] (the fabric)
* {{Z|it}}: {{W+|it|vela|f}}
* {{Z|is}}: {{W+|is|segl|n}}
* {{Z|ca}}: {{W+|ca|vela|f}}
* {{Z|ko}}: {{W-|ko|돛|tr=dot}}
* {{Z|la}}: {{W-|la|velum|n}}
* {{Z|no}}: {{W+|no|seil}}
* {{Z|pl}}: {{W+|pl|żagiel|m}}
* {{Z|pt}}: {{W+|pt|vela|f}}
* {{Z|ro}}: {{W+|ro|velă|f}}
* {{Z|ru}}: {{W+|ru|парус}}
* {{Z|sh}}: {{W+|sh|jedro|n}}
* {{Z|sh}}: {{W+|sh|jedro|n}}
* {{Z|sl}}: {{W+|sl|jadro|n}}
* {{Z|es}}: {{W+|es|vela|f}}
* {{Z|sw}}: {{W+|sw|shira|xs=sw}}}}
* {{Z|sv}}: {{W+|sv|segel|n}}
* {{Z|te}}: [[తెరచాప]] (teracaapa)
* {{Z|tr}}: {{W+|tr|yelken}}
* {{Z|cy}}: {{W-|cy|hwyl|xs=Welsh}}
* {{Z|el}}: {{W+|el|πανί|n}}
{{werger-bin}}
046dz6knyt45clix37vmv7r0tz0x12d
çirvirîn
0
182286
6328893
6246491
2026-08-11T11:25:03Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328893
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=?}}, {{r-ya req}}
# [[peritîn]], [[dirîn]], [[veçirîn]], hatin [[çirvirandin]]
#* {{jêder-malper|ku|jêgirtin=Îcar liqûma Tirkan jî çi liqûm e haaaa, malxerabê tu dibê qey ji bin konê qereçîyan derketiye. Ne bi makyaj û dermanan be nayê xwarin ellawekîl. Lê di dema me de kes li xweşikbûnê nanere. Hema qûna kê mezin be, memikên kê sîlîkonkirî be, kî zêdetir xwe berde çolê û têkeve bin qeraseyên xelkê, ew baş û meşhûr dibe. Aha Natalîn Avci xanim jî bi qeraseyên reşikên Amerîkayê dest bi lotikan kiriye. Ê ji xwe di vî karî de heta nebin çarox û ji hev '''neçirvirin''', kes meşhûr nabe.|malper=Lotikxane.com|sal=11/2010}}
==== Formên alternatîv ====
* [[çirrvirrîn]]
==== Tewîn ====
:-çirvir-
==== Etîmolojî ====
[[çirîn]] - [[-în]] + [[vir]] + [[-în]]
==== Jê ====
* [[çirviriyayî]]
* [[çirvirî]]
* [[çirvirok]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
fha2n8i939hkvvhwowpk8o4felj7kli
6328926
6328893
2026-08-11T11:41:21Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328926
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=?}}, {{r-ya req}}
# [[peritîn]], [[dirîn]], [[veçirîn]], hatin [[çirvirandin]]
#* {{jêder-malper|ku|jêgirtin=Îcar liqûma Tirkan jî çi liqûm e haaaa, malxerabê tu dibê qey ji bin konê qereçîyan derketiye. Ne bi makyaj û dermanan be nayê xwarin ellawekîl. Lê di dema me de kes li xweşikbûnê nanere. Hema qûna kê mezin be, memikên kê sîlîkonkirî be, kî zêdetir xwe berde çolê û têkeve bin qeraseyên xelkê, ew baş û meşhûr dibe. Aha Natalîn Avci xanim jî bi qeraseyên reşikên Amerîkayê dest bi lotikan kiriye. Ê ji xwe di vî karî de heta nebin çarox û ji hev '''neçirvirin''', kes meşhûr nabe.|malper=Lotikxane.com|sal=11/2010}}
==== Tewandin ====
:-çirvir-
==== Formên alternatîv ====
* [[çirrvirrîn]]
==== Jê ====
* [[çirviriyayî]]
* [[çirvirî]]
* [[çirvirok]]
==== Etîmolojî ====
[[çirîn]] - [[-în]] + [[vir]] + [[-în]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
aeopvg9si5z5qrnzdn843z877ymlpoi
manyaq
0
185713
6329051
5019316
2026-08-11T11:53:37Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329051
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{guherto|manyak}}
#* {{jêder-malper|ku|jêgirtin=SSTa (Sîstema Serweriya Tirkan) ko bi gengeşîyên teskerê yên ko ev bi qasî du salan e ji rojevê nakevin, civak kiriye '''manyaqê''' operasyona ji sînor wê de, vê yekê armanc dike.|nivîskar=Fuat Onen|sernav=Welatek di [[ronahî|ronkaya]] rojê de ji gelên wî yên otokton hat dizîn|malper=Nefel.com|sal=12/2007}}
o7yyeazuzwxgddfwts4idnckcowokm0
mustehsîl
0
186259
6329066
5019319
2026-08-11T11:54:07Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329066
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr ===
{{rengdêr|ku}}
# {{bnr|mistehsîl}}
#* {{jêder-malper|ku|jêgirtin=Bi baweriya min şoreşa pêşmergeyan hê bi temamî neçûye serî: Şoreşa çekdarî temam bû, lê niha divê şoreşa civakî-aborî dest pê bike. Bernameya şoreşa civakî-aborî bi hindikî ji du xalan divê pêk bê: 1. Civakê ji mustehlîkî (consumer/tüketici) ya luks û bi îsraf biguhêre bike civaka '''mustehsîl''' (productif/üretici) a endustriyê, 2. Zihniyeta eşîrî û ya partîzaniya dewletên totalîter a li herêmê divê hêdî hêdî bê maliştin.|nivîskar=Rojen Barnas|sernav=Şoreşa Kurdistana Başûr A Mayî|sal=5/2007|malper=Netkurd.com}}
q84cbarapj0ougz173h7t3xj1h97010
muşerref
0
186268
6329067
5019320
2026-08-11T11:54:09Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329067
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr ===
{{rengdêr|ku}}
# {{guherto|mişeref}}
#* {{jêder-malper|ku|jêgirtin=Heger em bi “ereb bazarî” hesabekî bikin, dikarim bibêjim ko % 80-ê di malên kurdan de TV-yên kurdî tine. Bes maleke bê TV-yên tirkî tine, % 99, 9999 malên kurdan de TV-yên tirkî hene (ji bo kurdên bakur dibêjim). Belkî bi xêra TRT-a kurdî malên wan kurdên –kurdînedîtî '''muşerref''' bibin; malûm e gihayê hewşê tahl e, û kurdî belkî bi destê dewletê bi van şîrin bibe.|nivîskar=Brahîm Xelîl Sirûcî|sernav=Belkî bi xêra TRT-ê em TêReTêr kurmancî tamaşe bikin|malper=Nefel.com|sal=11/2008}}
ktsqv9cqdaytou5agnqtb63ib1vysgq
cîlê
0
246086
6328832
6279172
2026-08-11T00:32:14Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328832
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[yekser]], [[hemen]], [[şirp]], [[tavilê]], [[car de]], [[demildest]], [[di cî de]], [[zû]], [[bênavbir]], <br>bêyî [[derengî]], bêyî [[gîro|gîrobûnê]] yan [[gîro|gîrokirinê]]
#* {{jêder-malper|ku|jêgirtin=Mar '''cîlê''' di şûna xwe da, ji serma hişk bû, cemidî.|nivîskar=Nuh Ateş|sernav=Bedelê ken|url=http://www.birnebun.com/candukultur/cirok.htm|malper=birnebun.com|sal=2004}}
#* {{jêder-kovar|ku|jêgirtin=Miço '''cîlê''' li dij derket û got...|kovar=Bîrnebûn|sernav=Rojek ji rojiyê, terawî û okey|url=http://birnebun.eu/hejmar/birnebunweb51.pdf|nivîskar=Ecevit Yıldırım|hejmar=51|sal=2011|rûpel=28}}
#* {{jêder|ku|jêgirtin=Ez ji '''cîlê''' rabûm ser xwe|http://www.tavlioren.com/arsiv/arsiv-wene/ecewid-tirsatato/ecewid-tirsatato.html}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|dadelik}}, {{W-|af|almeteens}}, {{W-|af|direk}}
* {{Z|sq}}: {{W+|sq|fill}}, {{W+|sq|menjëherë}}
* {{Z|de}}: {{W+|de|alsbald}}, {{W+|de|flugs}}, {{W+|de|gleich}}, {{W+|de|sofort}}, {{W+|de|sogleich}}, {{W+|de|umgehend}}, {{W+|de|ohne weiteres|guman=erê}}
* {{Z|da}}: {{W+|da|straks}}
* {{Z|eo}}: {{W+|eo|tuj}}
* {{Z|fo}}: {{W-|fo|alt fyri eitt}}, {{W-|fo|beinan vegin}}, {{W-|fo|uttan nakað honk}}
* {{Z|fi}}: {{W+|fi|heti}}
* {{Z|fr}}: {{W+|fr|immédiatement}}, {{W+|fr|tout de suite}}
* {{Z|fy}}: {{W-|fy|aansen}}, {{W-|fy|aanst}}, {{W-|fy|aanstûns}}, {{W-|fy|dalik}}, {{W-|fy|daliks}}
* {{Z|nl}}: {{W+|nl|aanstonds}}, {{W+|nl|dadelijk}}, {{W+|nl|meteen}}, {{W-|nl|op staande voet}}, {{W+|nl|schielijk}}, {{W+|nl|subiet}}, {{W+|nl|zo}}
* {{Z|en}}: {{W+|en|immediately}}, {{W+|en|at once}}, {{W+|en|directly}}, {{W+|en|right now}}, {{W+|en|forthwith}}, {{W+|en|instantaneously}}, {{W+|en|straightaway}}, {{W+|en|straightway}}
* {{Z|it}}: {{W-|it|fra poco}}, {{W+|it|immediatamente}}, {{W+|it|subito}}
* {{Z|ca}}: {{W-|ca|de seguida}}, {{W+|ca|tot seguit}}
* {{Z|ms}}: {{W-|ms|serera}}
* {{Z|pap}}: {{W-|pap|inmediatamente}}, {{W-|pap|mesora}}, {{W-|pap|umbé}}, {{W-|pap|umbes}}
* {{Z|pl}}: {{W+|pl|zaraz}}, {{W+|pl|natychmiast}}
* {{Z|pt}}: {{W+|pt|directamente}}, {{W+|pt|imediatamente}}, {{W+|pt|sem demora}}, {{W+|pt|logo}}, {{W+|pt|depressa}}
* {{Z|ro}}: {{W+|ro|îndată}}
* {{Z|srn}}: {{W-|srn|nownow}}, {{W-|srn|wante’wante}}
* {{Z|es}}: {{W-|es|ahora mismo}}, {{W-|es|en el acto}}, {{W+|es|en seguida}}, {{W+|es|inmediatamente}}, {{W+|es|desde luego}}
* {{Z|sw}}: {{W-|sw|sasa hivi}}
* {{Z|tr}}: {{W+|tr|hemen}}
* {{Z|el}}: {{W+|el|ακαριαίος}}, {{W+|el|αμέσως}}
{{werger-bin}}
iuehj21vm7vra4oglwwskqdm6cc55am
6328865
6328832
2026-08-11T02:12:09Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6328865
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[yekser]], [[hemen]], [[şirp]], [[tavilê]], [[car de]], [[demildest]], [[di cî de]], [[zû]], [[bênavbir]], <br>bêyî [[derengî]], bêyî [[gîro]]bûnê yan [[gîro]]kirinê
#* {{jêder-malper|ku|jêgirtin=Mar '''cîlê''' di şûna xwe da, ji serma hişk bû, cemidî.|nivîskar=Nuh Ateş|sernav=Bedelê ken|url=http://www.birnebun.com/candukultur/cirok.htm|malper=birnebun.com|sal=2004}}
#* {{jêder-kovar|ku|jêgirtin=Miço '''cîlê''' li dij derket û got...|kovar=Bîrnebûn|sernav=Rojek ji rojiyê, terawî û okey|url=http://birnebun.eu/hejmar/birnebunweb51.pdf|nivîskar=Ecevit Yıldırım|hejmar=51|sal=2011|rûpel=28}}
#* {{jêder|ku|jêgirtin=Ez ji '''cîlê''' rabûm ser xwe|http://www.tavlioren.com/arsiv/arsiv-wene/ecewid-tirsatato/ecewid-tirsatato.html}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|dadelik}}, {{W-|af|almeteens}}, {{W-|af|direk}}
* {{Z|sq}}: {{W+|sq|fill}}, {{W+|sq|menjëherë}}
* {{Z|de}}: {{W+|de|alsbald}}, {{W+|de|flugs}}, {{W+|de|gleich}}, {{W+|de|sofort}}, {{W+|de|sogleich}}, {{W+|de|umgehend}}, {{W+|de|ohne weiteres|guman=erê}}
* {{Z|da}}: {{W+|da|straks}}
* {{Z|eo}}: {{W+|eo|tuj}}
* {{Z|fo}}: {{W-|fo|alt fyri eitt}}, {{W-|fo|beinan vegin}}, {{W-|fo|uttan nakað honk}}
* {{Z|fi}}: {{W+|fi|heti}}
* {{Z|fr}}: {{W+|fr|immédiatement}}, {{W+|fr|tout de suite}}
* {{Z|fy}}: {{W-|fy|aansen}}, {{W-|fy|aanst}}, {{W-|fy|aanstûns}}, {{W-|fy|dalik}}, {{W-|fy|daliks}}
* {{Z|nl}}: {{W+|nl|aanstonds}}, {{W+|nl|dadelijk}}, {{W+|nl|meteen}}, {{W-|nl|op staande voet}}, {{W+|nl|schielijk}}, {{W+|nl|subiet}}, {{W+|nl|zo}}
* {{Z|en}}: {{W+|en|immediately}}, {{W+|en|at once}}, {{W+|en|directly}}, {{W+|en|right now}}, {{W+|en|forthwith}}, {{W+|en|instantaneously}}, {{W+|en|straightaway}}, {{W+|en|straightway}}
* {{Z|it}}: {{W-|it|fra poco}}, {{W+|it|immediatamente}}, {{W+|it|subito}}
* {{Z|ca}}: {{W-|ca|de seguida}}, {{W+|ca|tot seguit}}
* {{Z|ms}}: {{W-|ms|serera}}
* {{Z|pap}}: {{W-|pap|inmediatamente}}, {{W-|pap|mesora}}, {{W-|pap|umbé}}, {{W-|pap|umbes}}
* {{Z|pl}}: {{W+|pl|zaraz}}, {{W+|pl|natychmiast}}
* {{Z|pt}}: {{W+|pt|directamente}}, {{W+|pt|imediatamente}}, {{W+|pt|sem demora}}, {{W+|pt|logo}}, {{W+|pt|depressa}}
* {{Z|ro}}: {{W+|ro|îndată}}
* {{Z|srn}}: {{W-|srn|nownow}}, {{W-|srn|wante’wante}}
* {{Z|es}}: {{W-|es|ahora mismo}}, {{W-|es|en el acto}}, {{W+|es|en seguida}}, {{W+|es|inmediatamente}}, {{W+|es|desde luego}}
* {{Z|sw}}: {{W-|sw|sasa hivi}}
* {{Z|tr}}: {{W+|tr|hemen}}
* {{Z|el}}: {{W+|el|ακαριαίος}}, {{W+|el|αμέσως}}
{{werger-bin}}
o2z523f316gsmhzdipp1ucmp7j3uk27
dibêje lê napêje
0
255059
6328913
6252082
2026-08-11T11:28:07Z
Balyozbot
7867
/* Biwêj */ sererastkirin
6328913
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Biwêj ===
{{biwêj|ku}}
# Ew bi xwe jî [[li gor]] [[gotin]]a xwe nakin, [[axiftin]]a xwe dibêjin lê [[bi cih anîn|bi cih nayînin]]. Dema ku yek yan hinek tiştekê bêjin lê ew bixwe jî neken, ev biwêj tê gotin.
#* {{jêder-malper|ku|jêgirtin=Kal û pîrên me ji berê de gotine: “'''Dibêje, lê napêje'''.” Mixabin ev rewş hema bêje ji bo hemû nivîskar, serokên sazî û dezgehên Kurdan û parlamenteran tevan derbas dibe.|nivîskar=Mela Mihyedîn|sernav=Ceribînek li ser “ferhenga bişaftinê”|url=http://www.rupelanu.com/ceribinek-li-ser-ferhenga-bisaftine-295yy.htm|malper=rupelanu.com|sal=2017}}
#* {{jêder-malper|ku|jêgirtin=“Ev 47 sal in ku Joe qet tiştên ku niha dipeyîve nekirine. Ewê qet neguhere. Ew tenê '''dibîêje, lê qet napêje'''!|sernav=Trump Dibêje Biden Tiştekî Nake, Tenê Diaxife|url=https://www.dengeamerika.com/a/trump_biden_twitter/5552284.html|malper=dengeamerika.com|sal=2020}}
#* {{jêder-kovar|ku|jêgirtin=Em dîsa dixwazin bi gotinek pêşiyan nivîsa xwe biqedînin. ('''Dibêje lê napêje''') birez Arinç tu jî xweş dibêjî lê qet napêjî.|kovar=Azadiya Welat|sernav=Ji Arinç re nameya vekirî|nivîskar=Paşa Şeker|dîrok=9 Tebax 2011|rûpel=2}}
==== Formên alternatîv ====
* ''(Dihok)'' [[dibêjît lê napêjît]]
==== Werger ====
{{werger-ser}}
* {{Z|en}} : {{W|en|he's all talk and no bake}}, {{W|en|says one thing, does another}}, {{W|en|talks the talk but doesn't walk the walk}}, {{W|en|full of hot air}}
{{werger-bin}}
bd5hhqfw0vx59s7wbqw28vxecjtswsh
aşik
0
259520
6328846
6297571
2026-08-11T00:53:13Z
Wikihez
7344
/* Navdêr */
6328846
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[amûr|Amûrê]] ku tê de [[qehwe]] tê [[hêran]].
#* {{jêder-pirtûk|ku|jêgirtin=Gava em ji kar vegerin em ê li ser nîşanê bipeyivin. Ez ê piştî xwarinê '''aşikê''' qehwê bigerînim. Em ê cezwe têxin manqilê. Wê diya min li fala me binêre û çi nebêje. Em zar û zêç hemû baş in, di hundurê malê de şênî û kêfxweşî heye. Şansê we vekirî be. Wê ax di destê me de bibe zêr. Em mîna rojê ne. Wê ji mista me huzûr birije.|sernav=Keça Kurd Zengê|wergêr={{w|Firat Cewerî|F[irat] Cewerî}}; S. Demir|nivîskar=Cemşîd Bender|orîjînal=Kürt Kızı Zenge|zimanê-orîjînal=tr|weşanxane=Nûdem|sal=1997|rûpel=33|isbn=91 888592-31 6}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Hevmane ====
* [[aşê qehweyê]]
* [[distarkê qehweyê]]
* [[qehwehêr]]
==== Etîmolojî ====
Ji {{qertaf|ku|aş|ik}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kaffeemühle}}
* {{Z|en}}: {{W+|en|coffee mill}}
* {{Z|tr}}: {{W+|tr|kahve değirmeni}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku}}
# [[meîde]], [[gede]]
==== Etîmolojî ====
[[aş]] + [[ik]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|stomach}}, {{W+|en|quern|guman=erê}}
* {{Z|tr}}: {{W+|tr|mide}}
{{werger-bin}}
== {{ziman|zza}} ==
==== Mane ====
# [[aşk]]
# [[aşik]], [[mitrib]]<ref>http://www.kovarabir.com/wp-content/uploads/Ferheng%C3%AA-Dimil%C3%AE-Zazak%C3%AE-%C3%BB-Kurmanc%C3%AE-A-a.pdf</ref>
=== Çavkanî ===
{{çavkanî}}
n1l6pyo313fglsxpb25n6kaa7lq4m43
kalekal
0
263867
6329001
6309526
2026-08-11T11:51:48Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329001
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|dengê siriştî}} [[deng|Dengê]] [[bizin]]an.
#: '''''Kalekala''' bizinê ye jiber ko ya birçî ye.''<ref>{{Ferhenga Kamêran}}</ref>
#* {{jêder-malper|ku|jêgirtin=Mustafa Kaplan (22) û Îsmaîl Kaplan (18) ku destnîşan kirin ew vê karê bi eşq û şewq dikin diyar kirin xeyala wan ew e ku ew çêwligeke mezin saz bikin. Wan destnîşan kirin ku kalekala pez betilandina me ya temamê rojê dibe. Kaynak: Kalekala pez betilandina me ya temamê rojê dibe.|sernav=Kalekala pez betilandina me ya temamê rojê dibe|url=https://www.cinarinsesi.com/kalekala-pez-betilandina-me-ya-temame-roje-dibe-121902h.htm|malper=cinarinsesi.com|sal=2017}}
#* {{jêder-malper|ku|jêgirtin=îşev dîsa '''kalekala''' berxa bû ber guhê min,<br>îşev dîsa wek tifala kêflû bûbû ruhê min.|nivîskar=Fêrîkê Ûsiv|sernav=Te Bîr Nakim|url=https://www.helbestakurdi.com/helbest/ferike-usiv--te-bir-nakim.html|malper=helbestakurdi.com}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|كالەکال}}
==== Formên alternatîv ====
* [[kale-kal]]
==== Jê ====
* ''Lêker'' [[kalekal kirin]]
* ''Navdêr'' [[kalekalkirin]]
* ''Rengdêr'' [[kalekalkirî]]
==== Têkildar ====
* [[miremir]]
* [[zirezir]]
* [[hîrehîr]]
* [[nalenal]]
* [[kûzekûz]]
* [[xiştexişt]]
* [[kewtekewt]]
* [[fîtefît]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Meckern}}
* {{Z|fr}}: {{W|fr|bêlement}}
* {{Z|en}}: {{W|en|bleating}}
* {{Z|tr}}: {{W|tr|meleme}}, {{W|tr|inim inim}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
sj3wn1tpaxa2e4vmvpui9yona1b6jm5
mêhreban
0
264283
6329060
6100730
2026-08-11T11:53:55Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329060
wikitext
text/x-wiki
{{bnr-h|Mêhreban}}
== {{ziman|ku}} ==
=== Rengdêr ===
{{rengdêr|ku}}
# {{guharto|ku|mihrîvan}}
#* {{jêder-malper|ku|jêgirtin=Dayikî Cemal ji ber adet û orfên civaka paşverû zû strangotin terikand û heya mirinê xwe wenda kir da ku kes wê mîna hunermend nas neke. Ew jineke xêrxwaz, nefs bilind û gelek '''mêhreban''' bû.|sernav=Jiyana Dayikî Cemal|url=https://www.bernamegeh.org/2019/12/31/dayiki-cemal/|malper=bernamegeh.org|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Bi navê xwedê yê mezin û '''mêhreban''', birayê rêzdar, dibistan ji bo zarok û ciwanan tune ne, perwerde ne ji bo keçan û ne jî ji bo kuran tune ye, em rica ji kesên xwedî bîr û ra dikin ku dibistanan ji bo zarokan vekin.|sernav=Li Cerablusê çi diqewime|url=https://www.rudaw.net/kurmanci/middleeast/syria/150920161|malper=rudaw.net|sal=2016}}
#* {{jêder-kovar|ku|jêgirtin=Lê Xanî di Mem û Zînê de bi vegotina mîrê Kurd Emîr Z(ey)neddîn dest bi hikayetê diket ku ew li Cizîr(a) Botan hukumdariya taîfeyên Kurd diket ku ew emîrekî '''mêhreban''', comerd, xêrker, xêrxwaz û xwştivîyê xwas û 'amê Kurdan e.|kovar=Nûbihar|sernav=Muqayeseyek digel Mesnewiya Kurdî|url=https://www.academia.edu/12707421/Muqayeseyek_digel_Mesnewiya_Kurd%C3%AE_Mem_%C3%BB_Z%C3%AEna_Ehmed%C3%AA_Xan%C3%AE_%C3%BB_Leyla_%C3%BB_Mecn%C3%BBna_Nizam%C3%AE|nivîskar=Ehmed Şerîfî|wergêr=Ayhan Geverî|hejmar=131|rûpel=21}}
q6yrqz6qs0gcy1oewkgx3cnoa4zlv4t
kerax
0
273765
6329009
6309923
2026-08-11T11:52:06Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329009
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|ke|rax}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{f|ku|çandinî}} Demê mirov [[paleyî kirin|palehiya]] xelkê bike, ''genim, nîsk û ceh û hwd'' yên xelkê rake mirov dibe ''kerax''ê wan. Du [[behir]] ji xwediyê erd re ye û behrek jî ji keraxî re ye.
#* {{jêder-pirtûk|ku|jêgirtin=Kurê min Miho, axa dê ji min bixeyide ku ez te bişînim dibistanê. Wî gotiye ku xwendin ne ya şivan û gavan û '''kerax''' û kurmanca ye.|nivîskar=Sidqî Hirorî|sernav=Evîn û Şewat|weşanxane=Nûdem|sal=1998|rûpel=16|isbn=91 88591-40 5}}
#* {{jêder|ku|jêgirtin=Îmana ko pê re hebû hemû di serê bêvila wî re derket û çû. Bi leza gunehkar û keleşan li xwe fitilî û berê xwe da rê ko here. Wî çaxî dît ko Tajdînê '''keraxê''' wî jî bi mitale û stuxwar, çend metroyan dûrî wî, li pişt wî ye.|{{Jêgirtin/Silêman Demir/Sorê Gulê/2002|r=153}}}}
#* {{jêder-kovar|ku|jêgirtin=ax lê fireh, ezman lê hatibe hev...<br>di axa xwe de bê ax, '''kerax''' be tev!|kovar=Çira|sernav=Ne axperest im|url=http://arsivakurd.org/images/arsiva_kurd/kovar/cira/cira_03.pdf|nivîskar=Arjen Arî|hejmar=3|sal=1995|rûpel=48}}
# [[nik]], [[cem]], [[bal]], [[ba]], [[kêlek]]
#* {{jêder-pirtûk|ku|jêgirtin=Min bi destêkî li '''keraxê''' porê xwe mist da, tenê çend heb têl por mabûn, yek jê kişand, di nav herdu tiliyên xwe de bir anî.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=80|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Li ser rêbeja Sêrt û Batmanê ji ber ku mij zêde bû, hin ajotvanan wesayitên xwe li '''keraxê''' rê da sekinandin.|sernav=Li başûrê rojhilatê mij çêbû|url=https://www.tigrishaber.com/li-basure-rojhilate-mij-cebu-12456h.htm|malper=tigrishaber.com|sal=2014}}
#* {{jêder-kovar|ku|jêgirtin=Lê li '''keraxê''' rê, li rastan û çîyayan hê berfê som girtibû, kêm bibû, nicîya bû, lê hê belekî neketibûnê.|kovar=Wêje û rexne|sernav=RONÎKIRINEK LI SER ÇEND ALÎYÊN ROMANA SÎBERÊ YA WEZÎRÊ EŞO|url=https://www.academia.edu/37663919/Ron%C3%AEkirinek_li_Ser_%C3%87end_Aliy%C3%AAn_Romana_S%C3%AEber%C3%AA_ya_Wez%C3%AEr%C3%AA_E%C5%9Fo_W%C3%AAje_%C3%BB_Rexne_9_10_2018_|nivîskar=ÖMER DELİKAYA|hejmar=9-10|sal=2018|rûpel=184}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Jê ====
* [[keraxî]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser|ya/ê ku berhemê xelkê radike|1|stûn=1}}
* {{Z|fa}}: {{W+|fa|کارگر سبزیجات}}
* {{Z|fr}}: {{W+|fr|paysan sans terre entretenu avec sa famille par le propriétaire foncier en échange de son travail}}<ref name="kurmanci8" />
* {{Z|en}}: {{W+|en|farmer without land supported with his family by landowner in exchange for his labour}}<ref name="kurmanci8">{{kovar|kovar=Kurmancî|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku8.pdf|sernav=Termên çandiniyê li hêla Mêrdînê|nivîskar=Zinar SORAN|hejmar=8|sal=1991|rûpel=5}}</ref>
* {{Z|tr}}: {{W+|tr|topraksız olup toprak sahibi tarafından ailesiyle birlikte beslenen hizmetkar köylü}},<ref name="kurmanci8" /> {{W+|tr|bostancı}}, {{W+|tr|sebze yetiştiricisi}}
{{werger-bin}}
{{werger-ser|kêlek|2}}
* {{Z|en}}: {{W|en|side}}
* {{Z|tr}}: {{W|tr|kenar}}, {{W|tr|yan}}, {{W|tr|yanı başı}}
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|kerax}}
{{rengdêr|ku}}
# [[kirêt]], [[pîs]], [[pelos]]
#* {{jêder-kovar|ku|jêgirtin=Mirovahî, digel ku tiştên pir payebilind û qîmetdar diafirîne bi heman awayî gelek tiştên '''kerax''' bêteşe jî dixuliqîne.|kovar=Agirî|sernav=Biyanîbûn|url=http://www.arsivakurd.org/images/arsiva_kurd/kovar/agiri/agiri_142.pdf|nivîskar=Adar jiya|hejmar=142|sal=2010|rûpel=11}}
==== Jê ====
* [[keraxî]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|degoutant}}, {{W|de|widerlich}}
* {{Z|en}}: {{W+|en|repugnant}}, {{W+|en|repulsive}}, {{W+|en|abominable}}, {{W+|en|revolting}}, {{W+|en|detestable}}, {{W+|en|disgusting}}
* {{Z|tr}}: {{W+|tr|iğrenç}}, {{W+|tr|mekruh}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
qikxjlyiuz5655xmqhhkiyzasz9ir4b
bi qirika (yekî) girtin
0
280787
6328811
6278520
2026-08-11T00:28:49Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328811
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=b-gh}}
# [[desteser kirin]], [[girtin]], bi hêz û zorê girtin, [[bi yekî re pevçûn]], ji bo doza tiştekî hesab pirsîn
#: ''Nizanim li ser çi bû, lê ûsivê seyîd '''bi qirika seyad girtibû'''.''<ref>Ferhenga Biwêjan, Mustafa Borak</ref>
#* {{jêder-malper|ku|jêgirtin=Bişar Kiliçê 63 salî bi salane ku firarê eskerîyê bû û xwe li Qosera Mêrdînê, li gund vedişart û nedixwest ji Tirkan re eskerîyê bike. Lê talîya talî felekê pişta xwe dayê û eskerên Tirk '''bi qirika wî rebenî girtin''' û ew şandin eskerîyê.|malper=Lotikxane.com|sal=08/2006}}
==== Bide ber ====
* [[qirrik]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|capture}}, {{W+|en|catch}}
* {{Z|tr}}: {{W+|tr|yakalamak}}, {{W+|tr|tutuklamak}} anlamında bir deyim, {{W-|tr|birinin gırtlağına basmak}}, {{W+|tr|gırtlağına sarılmak}}, {{W+|tr|yakasına asılmak}}, {{W+|tr|yakasına sarılmak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
6v4n0saoworkz83nyp8lbpukx5if5i8
6328838
6328811
2026-08-11T00:41:14Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328838
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=b-gh}}
# [[desteser kirin]], [[girtin]], bi hêz û zorê girtin, [[bi yekî re pevçûn]], ji bo doza tiştekî hesab pirsîn
#: ''Nizanim li ser çi bû, lê ûsivê seyîd '''bi qirika seyad girtibû'''.''<ref>Ferhenga Biwêjan, Mustafa Borak</ref>
#* {{jêder-malper|ku|jêgirtin=Bişar Kiliçê 63 salî bi salane ku firarê eskerîyê bû û xwe li Qosera Mêrdînê, li gund vedişart û nedixwest ji Tirkan re eskerîyê bike. Lê talîya talî felekê pişta xwe dayê û eskerên Tirk '''bi qirika wî rebenî girtin''' û ew şandin eskerîyê.|malper=Lotikxane.com|sal=08/2006}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[qirrik]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|capture}}, {{W+|en|catch}}
* {{Z|tr}}: {{W+|tr|yakalamak}}, {{W+|tr|tutuklamak}} anlamında bir deyim, {{W-|tr|birinin gırtlağına basmak}}, {{W+|tr|gırtlağına sarılmak}}, {{W+|tr|yakasına asılmak}}, {{W+|tr|yakasına sarılmak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
bmix9t03974hwnaanms662gmc052w9p
cîwar bûn
0
301194
6328861
5992900
2026-08-11T01:23:47Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328861
wikitext
text/x-wiki
{{bnr-n|cîwarbûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|cîwar bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=cîwar|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# Li cihekî [[bi cih bûn]].
#* {{jêder-kovar|ku|jêgirtin=Mixabin, dema serhildana Dêrsimê têk diçe, ew neçar dimîne, berê xwe dide binxetê, ji wir diçe Urdinê, û sala 1940î, li tataxa «Miheta Bexdad», bajarê Helebê '''cîwar dibe''', kar û xebata rewşenbîrî û ramyarî didomîne.|kovar=Newroz|sernav=49 Saliya Koçkirina xebatkarê Kurd ê navdar Dr. Nûrî Dêrsimî|url=https://yek-dem.net/ku/wp-content/uploads/2022/09/Newroz-153.pdf|urlya-arşîvê=https://web.archive.org/web/20240208181030/https://yek-dem.net/ku/wp-content/uploads/2022/09/Newroz-153.pdf|hejmar=153|sal=2022|dîrok=2022-09-06|rûpel=2}}
#* {{jêder-malper|ku|jêgirtin=Dema Koşka Uzun Hasan di 1469an da neqlê Tebrîzê ya paytext dibe, ew jî li wir '''cîwar dibe'''.|nivîskar=Siddik Bozarslan|sernav=Îdrîs-î Bidlîsî (1452-1520)|url=https://portal.netewe.com/idris-i-bidlisi-1452-1520/|urlya-arşîvê=https://web.archive.org/web/20240208183352/https://portal.netewe.com/idris-i-bidlisi-1452-1520/|malper=netewe.com|dîrok=2022-09-14}}
#* {{jêder-malper|ku|jêgirtin=Piştî mirina bavê xwe bi dîya xwe Henrîette Hornîk ve diçe li Vîyanayê '''cîwar dibe'''.|nivîskar=Zerdüşt Öztürk|sernav=Balerîna Kurd Leyla Bedirxan|url=https://www.bernamegeh.org/leyla-bedirxan-ki-ye/|urlya-arşîvê=https://web.archive.org/web/20240208183742/https://www.bernamegeh.org/leyla-bedirxan-ki-ye/|malper=bernamegeh.org|dîrok=2021-09-25}}
==== Etîmolojî ====
Ji {{heve|ku|cîwar|bûn}}. "Bi"ya di serî de ji bo sivikkirina telafûzê ketîye, eslen wekî "'''''bi'''cihûwar bûn''".
==== Werger ====
{{werger-ser}}
* {{Z|en}}: to {{W+|en|settle}}
* {{Z|tr}}: {{W+|tr|yerleşmek}}
{{werger-bin}}
bx26ieg06vny3a7csbmtx2y46vxj7rx
6328862
6328861
2026-08-11T01:24:08Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328862
wikitext
text/x-wiki
{{bnr-n|cîwarbûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|cîwar bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=cîwar|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# Li cihekî [[bi cih bûn]].
#* {{jêder-kovar|ku|jêgirtin=Mixabin, dema serhildana Dêrsimê têk diçe, ew neçar dimîne, berê xwe dide binxetê, ji wir diçe Urdinê, û sala 1940î, li tataxa «Miheta Bexdad», bajarê Helebê '''cîwar dibe''', kar û xebata rewşenbîrî û ramyarî didomîne.|kovar=Newroz|sernav=49 Saliya Koçkirina xebatkarê Kurd ê navdar Dr. Nûrî Dêrsimî|url=https://yek-dem.net/ku/wp-content/uploads/2022/09/Newroz-153.pdf|urlya-arşîvê=https://web.archive.org/web/20240208181030/https://yek-dem.net/ku/wp-content/uploads/2022/09/Newroz-153.pdf|hejmar=153|dîrok=2022-09-06|rûpel=2}}
#* {{jêder-malper|ku|jêgirtin=Dema Koşka Uzun Hasan di 1469an da neqlê Tebrîzê ya paytext dibe, ew jî li wir '''cîwar dibe'''.|nivîskar=Siddik Bozarslan|sernav=Îdrîs-î Bidlîsî (1452-1520)|url=https://portal.netewe.com/idris-i-bidlisi-1452-1520/|urlya-arşîvê=https://web.archive.org/web/20240208183352/https://portal.netewe.com/idris-i-bidlisi-1452-1520/|malper=netewe.com|dîrok=2022-09-14}}
#* {{jêder-malper|ku|jêgirtin=Piştî mirina bavê xwe bi dîya xwe Henrîette Hornîk ve diçe li Vîyanayê '''cîwar dibe'''.|nivîskar=Zerdüşt Öztürk|sernav=Balerîna Kurd Leyla Bedirxan|url=https://www.bernamegeh.org/leyla-bedirxan-ki-ye/|urlya-arşîvê=https://web.archive.org/web/20240208183742/https://www.bernamegeh.org/leyla-bedirxan-ki-ye/|malper=bernamegeh.org|dîrok=2021-09-25}}
==== Etîmolojî ====
Ji {{heve|ku|cîwar|bûn}}. "Bi"ya di serî de ji bo sivikkirina telafûzê ketîye, eslen wekî "'''''bi'''cihûwar bûn''".
==== Werger ====
{{werger-ser}}
* {{Z|en}}: to {{W+|en|settle}}
* {{Z|tr}}: {{W+|tr|yerleşmek}}
{{werger-bin}}
d166o02dbe3hfxzpakzvjcr0bwp7mr5
kursiyê biteker
0
308977
6329038
6310790
2026-08-11T11:53:09Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329038
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Lightweightwheelchair.jpg|thumb|Kursiyekî bi[[teker]].]]
{{navdêr|ku|z=n}}
# [[kursî|Kursiyên]] ku mirovên nikarin [[meşîn|bimeşin]] an jî yên [[nexweş]] ji bo çûna derekê bi kar tînin.
#* {{jêder-malper|ku|jêgirtin=Di Lijneya Giştî ya TBMMyê de hin madeyên pêşnûmaya komî hatin qebûlkirin. Li gor madeyê ji bo wesayîtên astengdaran ên ku kesên '''kursiyê biteker''' an jî darbestan bikartînin Baca Wesayîtan a Taybet dê bê kêmkirin.|sernav=Beşa sêyem a pêşnûmaya komî hat qebûlkirin|url=https://www.aa.com.tr/kk/pol%C3%AEt%C3%AEka/besa-s%C3%AAyem-a-p%C3%AAsn%C3%BBmaya-kom%C3%AE-hat-qeb%C3%BBlkirin/185199|malper=aa.com.tr/|dîrok=05.02.2014}}
#* {{jêder-malper|ku|jêgirtin=Li ser '''kursiyê biteker''' hemû karên xwe bi xwe dike.|sernav=Bi zineata xwe debara mala xwe dike|url=https://www.trtnuce.com/turkiye/bi-zineata-xwe-debara-mala-xwe-dike-h46447.html|malper=trtnuce.com|sal=2019}}
#* {{jêder-kovar|ku|jêgirtin=Mizgîn Baran ev 18 sal in ku herdu lingên wê nalivin û nikare rabe ser lingan û bimeşe, lewma li ser '''kursiyê biteker''' jiyana xwe didomîne.|kovar=Rûdaw|sernav=Jiyan bê lingan jî dimeşe|url=https://ia803105.us.archive.org/22/items/rudaw_147/rudaw_147.pdf|nivîskar=Mehmet Sebatli|hejmar=147|sal=2012|rûpel=7}}
==== Tewandin ====
{{ku-tewîn-nav/nû|heve=îzafe}}
==== Etîmolojî ====
Ji ''[[kursiyê]] + [[biteker]]'', {{yekser|en|ku|wheelchair|hûr=1}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Rollstuhl|n}}, {{W-|de|Krankenfahrstuhl|n}}, {{W+|de|Fahrstuhl|n}}
* {{Z|ast}}: {{W-|ast|siella de ruedes|m}}
* {{Z|az}}: {{W-|az|təkərli kürsü}}, {{W-|az|əlil arabası}}
* {{Z|bg}}: {{W-|bg|инвалидна количка|m}}
* {{Z|my}}: {{W-|my|ဘီးတပ်ကုလားထိုင်}}
* {{Z|cs}}: {{W-|cs|invalidní vozík|n}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|輪椅|tr=leon4 ji2}}
*: {{Z|cmn}}: {{W-|cmn|輪椅|tr=lúnyǐ}}
* {{Z|da}}: {{W+|da|rullestol|g}}, {{W+|da|kørestol|g}}
* {{Z|ovd}}: {{W-|ovd|rullstuol|n}}
* {{Z|id}}: {{W+|id|kursi roda}}
* {{Z|ar}}: {{W-|ar|كُرْسِيّ لِلْمُقْعَدِين|n|tr=kursiyy li-l-muqʕadīn}}, {{W-|ar|كُرْسِيّ مُتَحَرِّك|n}}
* {{Z|hy}}: {{W+|hy|անվասայլակ}}
* {{Z|eo}}: {{W-|eo|rulseĝo}}, {{W-|eo|radseĝo|y}}
* {{Z|et}}: {{W+|et|ratastool}}
* {{Z|fa}}: {{W+|fa|ویلچر|tr=vilčer}}
* {{Z|fo}}: {{W-|fo|koyristólur|n}}, {{W-|fo|rullistólur|n}}, {{W-|fo|akstólur|n}}
* {{Z|fi}}: {{W+|fi|pyörätuoli}}; {{W+|fi|rullatuoli}}
* {{Z|fr}}: {{W+|fr|fauteuil roulant|n}}, {{W+|fr|chaise roulante|m}}
* {{Z|gd}}: {{W-|gd|cathair-cuibhle|m}}
* {{Z|gl}}: {{W-|gl|cadeira de rodas|m}}
* {{Z|ka}}: {{W-|ka|ინვალიდის სავარძელი}}
* {{Z|haw}}: {{W-|haw|noho huila}}
* {{Z|hi}}: {{W-|hi|व्हीलचेयर}}
* {{Z|nl}}: {{W+|nl|rolstoel|n}}
* {{Z|he}}: {{W+|he|כיסא גלגלים|n|tr=kisé galgalím|cuda=כִּסֵּא גַּלְגַּלִּים / כיסא גלגלים}}
* {{Z|io}}: {{W-|io|rulstulo}}
* {{Z|en}}: {{W+|en|wheelchair}}
* {{Z|ga}}: {{W-|ga|cathaoir rothaí|m}}
* {{Z|it}}: {{W-|it|sedia a rotelle|m}}
* {{Z|is}}: {{W-|is|hjólastóll|n}}
* {{Z|ja}}: {{W+|ja|車椅子|tr=くるまいす, kurumaisu}}, {{W-|ja|ホイールチェア|tr=hoīruchea}}
* {{Z|kl}}: {{W-|kl|issiavik assakaasulik}}
* {{Z|ca}}: {{W-|ca|cadira de rodes|m}}
* {{Z|ko}}: {{W+|ko|휠체어}}, {{W-|ko|바퀴의자}}
* {{Z|kw}}: {{W-|kw|kador ros|m}}
* {{Z|la}}: {{W-|la|sella rotalis|m}}
* {{Z|lv}}: {{W-|lv|ratiņkrēsls|n}}
* {{Z|lb}}: {{W-|lb|Rollstull|n}}
* {{Z|mk}}: {{W-|mk|инвали́дска ко́личка|m}}, {{W-|mk|ко́личка|m}}
* {{Z|mt}}: {{W-|mt|siġġu tar-roti|m}}
* {{Z|gv}}: {{W-|gv|caair wheeylagh|m}}
* {{Z|mi}}: {{W-|mi|tūru wīra}}
* {{Z|hu}}: {{W+|hu|kerekesszék}}, {{W+|hu|tolószék}}, {{W+|hu|tolókocsi}}
* {{Z|nv}}: {{W-|nv|ił naalbąąsí}}
* {{Z|nrf}}: {{W-|nrf|tchaîse à reues|m}}
* {{Z|no}}: {{W+|no|rullestol|n}}
* {{Z|ug}}: {{W-|ug|چاقلىق ئورۇندۇق}}
* {{Z|pdt}}: {{W-|pdt|Rollstool|n}}
* {{Z|pl}}: {{W+|pl|wózek inwalidzki|n}}
* {{Z|pt}}: {{W-|pt|cadeira de rodas|m}}
* {{Z|rm}}: {{W-|rm|sutga cun rodas|m}}
* {{Z|ro}}: {{W-|ro|scaun rulant|nt}}, {{W-|ro|scaun cu rotile|nt}}
* {{Z|ru}}: {{W-|ru|кре́сло-ката́лка|nt}}, {{W-|ru|инвали́дное кре́сло|nt}}, {{W-|ru|инвали́дная коля́ска|m}}, {{W+|ru|кре́сло-коля́ска|nt}}
* {{Z|es}}: {{W+|es|silla de ruedas|m}}
* {{Z|sw}}: {{W-|sw|kitimaguru}}, {{W-|sw|kiti cha magurudumu}}, {{W-|sw|kiti mwendo}}
* {{Z|sv}}: {{W+|sv|rullstol|g}}
* {{Z|te}}: {{W-|te|చక్రాలకుర్చీ}}
* {{Z|tr}}: {{W+|tr|tekerlekli sandalye}}
* {{Z|uk}}: {{W-|uk|інвалі́дний візо́к|n}}, {{W-|uk|крі́сло-ката́лка|nt}}
* {{Z|vi}}: {{W+|vi|xe lăn}}
* {{Z|cy}}: {{W-|cy|cadair olwyn|m}}
* {{Z|km}}: {{W-|km|រទេះជនពិការ}}
* {{Z|el}}: {{W+|el|αναπηρικό καροτσάκι|nt}}, {{W+|el|αναπηρικό αμαξίδιο|nt}}
{{werger-bin}}
:{{werger çavkanî|en|wheelchair|beş=Ev qismê Wergerê|oldid=76568993}}
mgdgttol6zbwal0t8b292p9fuuq9p4n
Albatros
0
309170
6328734
4648220
2026-08-10T22:35:45Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328734
wikitext
text/x-wiki
{{h-bnr|albatros}}
== {{ziman|de}} ==
=== Navdêr ===
{{navdêr|de|z=n}}
# [[albatros]]
ipgzqrj6blvmy243qacs6z1jfua1whi
hil kirin
0
324047
6328983
5164362
2026-08-11T11:51:07Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328983
wikitext
text/x-wiki
{{bnr-n|hilkirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|hil kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=hil|valahî=erê}}
{{lêker|ku|c=h-gh}}
# ([[agir]] yan [[ronahî]]) [[geş kirin]], [[pê xistin]], [[vêxistin]], [[berdan]]ê
#: ''Dihî me agirekê gelek xweş '''hil kirbû'''.''
#* {{jêder-malper|ku|jêgirtin=Demîrtaş axaftina wiha berdewam kir: "Hûn amade ne em dê qezenc bikin. Li hemberî me ne bendavên Faşîst Kenan Evren û ne jî yên AKP'ê xwe nagirin. Agirê we '''hil kir''' dê Rojhilata Navîn ronî bike. Dê barbariya DAIŞ'ê û AKP'ê bi agirê Newrozê tune bibe."|sernav=Demîrtaş: Barbariya DAIŞ û AKP'ê dê bi ronahiya Newrozê tune bibin|url=http://www.ozgurhabergazetesi.com/dem%C3%AErtas-barbariya-dais-%C3%BB-akp%C3%AA-d%C3%AA-bi-ronahiya-newroz%C3%AA-tune-bibin,42262|malper=ozgurhabergazetesi.com|dîrok=24.03.2015}}
#* {{jêder-malper|ku|jêgirtin=Jiyan Kameran ji Rûdawê re dibêje: “Ez gelek ji moman hez dikin, ne ku tenê jê hez bikim, lê ji tirsa tenêtiya xwe, hez dikim her çar aliyên min ronahî be, lewma moman '''hil dikim'''.”|nivîskar=Rengîn Şero|sernav=Keça Helebçeyî ya qurbaniya kîmyabaranê bi navê 'Jiyan' nasname wergirt|url=https://www.rudaw.net/kurmanci/kurdistan/210120196|malper=rudaw.net|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=biçûk bûm, gava min li dûrî waran bi pêxistina findekê '''hil kir''' agirê te û gundiyên warê gurê boz gotin min, “xoce tu yekî romantîk î”…|nivîskar=Dilawer Zeraq|sernav=biçûk bûm...|url=https://diyarname.com/news.php?Idx=34336|malper=diyarname.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Gelek welatiyan li kolanan agirê Newrozê pê xist û gelek welatiyan jî li şaneşînên xwe agirê Newrozê '''hil kir'''.|sernav=Li Bakur coşa cejna Newrozê|url=https://e-rojname.com/bs-nuce/82429/|malper=e-rojname.com|sal=2020}}
#* {{jêder-malper|ku|jêgirtin=Li gora nûçeya gihîştî malpera “Kurdistanmedia”yê serbarê zexta rejîmê li ser xelkê Kurdistanê bona vê ku merasima newrozê bi rê ve nebin, lê xelkê bi bêguhdana bi çavsoriyên rejîmê, agirê newrozê '''hil kirin''', û merasim bi rê ve birin.|sernav=Bavê şehîd Qadir Kerîmî agirê newroza Gellwanî hil kir|url=https://kurdistanmedia.com/ku/news/bave-sehid-qadir-kerimi-agire-newroza-gellwani-hil-kir|malper=kurdistanmedia.com|sal=2018}}
==== Bi alfabeyên din ====
* {{ku-ar|هل کرن}}
==== Etîmolojî ====
Ji {{heve|ku|hil|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|aufheben}}, {{W|de|aufwerfen}}, {{W|de|entwurzeln}}, {{W|de|abreissen}}, {{W|de|hochheben}}, {{W|de|erraten|guman=erê}}
* {{Z|fa}}: {{W+|fa|آتش گرفتن، آتش زدن}}
* {{Z|en}}: to {{W|en|ignite}}, {{W|en|catch fire}}, {{W|en|flare up}}
* {{Z|tr}}: {{W+|tr|alevlendirmek}}
{{werger-bin}}
0ain0itf5tui5rrsyd8puisqw1jehbt
araste bûn
0
326285
6328779
6112702
2026-08-11T00:25:36Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328779
wikitext
text/x-wiki
{{bnr-n|arastebûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
=== Lêker ===
{{ku-tewîn-lk|araste bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=araste|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# [[berê xwe dan]] [[cih|cihekî]] an [[tişt]]ekî
#* {{jêder-malper|ku|jêgirtin=Li ser vê yekê em '''arasteyî''' pirê '''dibin''' û cara duyem em di ser pira Nîssîbiyê ya li ser çemê Ferêt re derbas dibe û daxilê erda Komageneyê dibin.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
#* {{jêder-kitêb|ku|jêgirtin= ...ji du terefan leşker '''araste''' qesda ceng û cîdalê '''bûyî'''.|nivîskar={{w|Mela Mûsayê Hekarî}}|sernav=Durrû’l Mecalîs|amadekar=Hêmin Omer|sala weşandinê=2022|sal=1857|rûpel=75}}
==== Etîmolojî ====
Ji {{heve|ku|araste|bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: to {{W+|en|head}} (to/for)
* {{Z|tr}}: {{W+|tr|yönelmek}}
{{werger-bin}}
iul1esfttp2dmzgvesbculrpxd6zis2
6328868
6328779
2026-08-11T02:12:19Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6328868
wikitext
text/x-wiki
{{bnr-n|arastebûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
=== Lêker ===
{{ku-tewîn-lk|araste bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=araste|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# [[berê xwe dan]] [[cih]]ekî an [[tişt]]ekî
#* {{jêder-malper|ku|jêgirtin=Li ser vê yekê em '''arasteyî''' pirê '''dibin''' û cara duyem em di ser pira Nîssîbiyê ya li ser çemê Ferêt re derbas dibe û daxilê erda Komageneyê dibin.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
#* {{jêder-kitêb|ku|jêgirtin= ...ji du terefan leşker '''araste''' qesda ceng û cîdalê '''bûyî'''.|nivîskar={{w|Mela Mûsayê Hekarî}}|sernav=Durrû’l Mecalîs|amadekar=Hêmin Omer|sala weşandinê=2022|sal=1857|rûpel=75}}
==== Etîmolojî ====
Ji {{heve|ku|araste|bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: to {{W+|en|head}} (to/for)
* {{Z|tr}}: {{W+|tr|yönelmek}}
{{werger-bin}}
l14gurs07i0ahrshcw1brwvtshqiuqr
şelafî
0
334713
6328705
6157930
2026-08-10T14:29:41Z
IbrahimKocher Duhok
4280
Werger: +îngilîzî : [[flattery]] (bi alîkarî)
6328705
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# rewşa [[şelaf]]bûnê
# {{kontrol|rêz=erê|[[melaqî]], [[şînekî]], [[şalûsî]], [[çaplûsî]], [[lêbokî]], [[seypesanî]], [[xweşekî]], [[aloşî]]}}
==== Etîmolojî ====
Ji {{paş|ku|şelaf|-î}}
==== Jê ====
{{kol3|ku|cure=Jê
|şelafî bûn<pos:lêker>
|şelafî kirin<pos:lêker>
|şelafîbûn<pos:navdêr>
|şelafîkirin<pos:navdêr>
}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|oiliness}}, {{W+|en|flattery}}
* {{Z|tr}}: {{W+|tr|dalkavukluk}}, {{W+|tr|yağcılık}}, {{W-|tr|yalakalık}}
{{werger-bin}}
jt6q68w1r5ht5bw4cfp5u6wgp2ykqg4
6328706
6328705
2026-08-10T14:31:24Z
IbrahimKocher Duhok
4280
Werger: +farisî : [[چاپلوس]] (bi alîkarî)
6328706
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# rewşa [[şelaf]]bûnê
# {{kontrol|rêz=erê|[[melaqî]], [[şînekî]], [[şalûsî]], [[çaplûsî]], [[lêbokî]], [[seypesanî]], [[xweşekî]], [[aloşî]]}}
==== Etîmolojî ====
Ji {{paş|ku|şelaf|-î}}
==== Jê ====
{{kol3|ku|cure=Jê
|şelafî bûn<pos:lêker>
|şelafî kirin<pos:lêker>
|şelafîbûn<pos:navdêr>
|şelafîkirin<pos:navdêr>
}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|چاپلوس}}
* {{Z|en}}: {{W+|en|oiliness}}, {{W+|en|flattery}}
* {{Z|tr}}: {{W+|tr|dalkavukluk}}, {{W+|tr|yağcılık}}, {{W-|tr|yalakalık}}
{{werger-bin}}
5jslv0l7drtc7b3f1yruxsffs25pifg
6328707
6328706
2026-08-10T14:41:06Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328707
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# rewşa [[şelaf]]bûnê
# {{kontrol|rêz=erê|[[melaqî]], [[şînekî]], [[şalûsî]], [[çaplûsî]], [[lêbokî]], [[seypesanî]], [[xweşekî]], [[aloşî]]}}
==== Jê ====
{{kol3|ku|cure=Jê
|şelafî bûn<pos:lêker>
|şelafî kirin<pos:lêker>
|şelafîbûn<pos:navdêr>
|şelafîkirin<pos:navdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|şelaf|-î}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|چاپلوس}}
* {{Z|en}}: {{W+|en|oiliness}}, {{W+|en|flattery}}
* {{Z|tr}}: {{W+|tr|dalkavukluk}}, {{W+|tr|yağcılık}}, {{W-|tr|yalakalık}}
{{werger-bin}}
fgl1xi1rk616q13kgqt1vsajuc4qwhz
nefsmezin
0
341250
6328863
6118369
2026-08-11T01:32:43Z
Wikihez
7344
/* Rengdêr */
6328863
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesê [[nefs]]a wî [[mezin]] e; kesê ne [[dilnizm]].
#: {{hevmane|ku|pozbilind|qure|difinbilind|arogan|qebe|mexrûr|xurr|kuşpene|kepîbilind|bixurûr}}
#: {{dijmane|ku|nefsbiçûk}}
#* {{jêder-malper|ku|jêgirtin=Heke niha mimkun bûya û derfet û hêz û şiyaneke min a bi wî rengî hebûya, min dixwest biçime ser gorra Ûsivê ‘Hemîd ê bavê xwe, gorra wî ya li Xelfeliya Îdirê, bavê min ê ku hê jî 7 salî ye di nezera min de, ê sala 2012an wexer kirî û hê jî ez neçûme ser, û min ê bigota, “Bavo, şukir, kurê te yê (bi gotina te) '''‘nefsmezin’''' axirî hate ber serê Te, ciya min ‘Helîme û neviyê te Siyabend Arî jî milên xwe di stûyê min re birine, dibêjine min, ‘Megirî, megirî, melorîne!’”|nivîskar=Kawa Nemir|sernav=Kawa Nemir: Antî-semîtîzm rabûye ser zîn, antî-kurdîzm jî li Kurdistanê û dîyasporayê rehên xwe berdide|url=https://botantimes.com/kawa-nemir-anti-semitizm-rabuye-ser-zin-anti-kurdizm-ji-li-kurdistane-u-diyasporaye-rehen-xwe-berdide/|malper=Botan Times|dîrok=02.12.2023}}
==== Etîmolojî ====
Ji {{heve|ku|nefs|mezin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|uppish}}
* {{Z|tr}}: {{W+|tr|kibirli}}, {{W+|tr|kurumlu}}, {{W+|tr|mağrur}}
{{werger-bin}}
o0uiivq7j9arh015a6vha3dv7hpts7u
devbiken
0
341561
6328910
6162431
2026-08-11T11:27:51Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328910
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|devbiken}}
{{rengdêr|ku}}
# Kesa/ê ku hertim [[kenîn|dikene]].
#: {{hevmaneyên peyvê|ku|beşûş}}
#* {{jêder|ku|jêgirtin=Bêjna min dirêj, porê min reş û direj, ez spehî û her '''devbiken''' bûm.|{{Jêgirtin/Firat Cewerî/Payiza Dereng|weşanxane={{w|Avesta}}|sal=2014|r=24}}}}
#* {{jêder-malper|ku|jêgirtin=Her çiqas jiyaneke gelek çetin û dijwar derbas kirîbû jî, dîtina min dît, di jiyanê de jîr, wisa jî zîrek, bi disîplîn û çeleng bû. '''Devbiken''' bû. Tinaz, henek û laqirdiyên wê xurt bûn.|nivîskar=Nihat Gültekin|sernav=80 Saliya Cemîla Casimê Celîl|url=https://kurttarihidergisi.com/blog/80-saliya-cemila-casime-celil|malper=kurttarihidergisi.com|sal=2020}}
#* {{jêder-kovar|ku|jêgirtin=Kûto bi heyecaneke '''devbiken''' bersivand (...)|kovar=Tîroj|sernav=Kûtê binê tenûrê|url=http://ontwikkel2.mvanlaar.net/Portals/0/adam/Blog%20App/LvEWtpWmn0O1aBOxocpbLQ/File/T%C3%AEroj_29.pdf|nivîskar=J.K|hejmar=29|sal=2007|rûpel=20}}
#* {{jêder-kovar|ku|jêgirtin=Li vê herêmê bajar bilivûtevgertir û mirov '''devbikentir''' in.|kovar=Le Monde diplomatique kurdî|sernav=Serpêhatîyên ukraynî|url=http://ontwikkel2.mvanlaar.net/Portals/0/adam/Blog%20App/arncyn_dSE6Y5w4Ktzb7BA/File/lemonde_kurdi_25.pdf|nivîskar=Andrei Kourkov|wergêr=Baran Nebar|hejmar=25|sal=2011|rûpel=16}}
==== Etîmolojî ====
Ji {{qertaf|ku|dev|bi|ken}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|cheerful}}, {{W+|en|joyful}}
* {{Z|tr}}: {{W+|tr|beşuş}}, {{W+|tr|güler yüzlü}}, {{W+|tr|güleç}}
{{werger-bin}}
4jvgvvphdqrkse3wkx6yeiab82auf8t
barebar
0
342702
6328794
6298133
2026-08-11T00:27:18Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328794
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|dengê siriştî}} [[deng|Dengê]] [[bangkirin]]ê bi [[deng]]ekî [[qebe]] û [[nexweş]].<ref>{{malper|nivîskar=ishak_baravi|url=https://twitter.com/ishak_baravi/status/1296482946799546369|sernav=Cotepeyvên Teqlîdî|malper=twitter.com|sal=2020|ziman=ku}}</ref>
#* {{jêder-malper|ku|jêgirtin=Ew ditirsin, lê tirsa wan ne ji ber pereyan e. Gurên boz eşkere dibêjin ko ev kanal dê rê li ber parçebûna dewletê veke û loma li dijî wê derdikevin. '''Barebara''' kevnegeneralan e. Qareqara kurdkuj û ergenekonperestan e.|nivîskar=Mustafa Aydogan|sernav=Bihêlin kî dixwaze bi kurdî bipeyive bila bipeyive!|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=28&RubricNr=24&ArticleNr=4047|malper=nefel.com|sal=2009}}
#* {{jêder-malper|ku|jêgirtin=Her roj qîreqîr û '''barebara''' Erdogan û berdevkên hikûmetê… Her ku diqîrin; pereyê Tirkiyê (TL) dikeve, dolar (USD) bilindtir dibe… Her ku diqîrin; xelk feqîrtir dibe… Her ku diqîrin; xelk diêşe, meseleyên esasî bêçareserî li holê dimînin…|nivîskar=Halil Dalkılıç|sernav=Erê çav sor in, lê rewş ne gorî dilê wan e!..|url=https://nupel.net/halil-dalkilic-ere-cav-sor-in-le-rews-ne-gori-dile-wan-e-19715h.html|malper=nupel.net|dîrok=}}
#* {{jêder-malper|ku|jêgirtin=Bi vexwarina çayekê re min li dengê okêya kurdî huhdarî kir, dengê çêr û xeyîdîn û '''barebara''' bi kurdî guhdarî kir, kêf ken û henekên mirovan temaşe kir.|nivîskar=M. Çiya Mazî|sernav=Vegera Bakurê Kurdistanê|url=https://www.amidakurd.org/ku/tekst/vegera_bakur%C3%AA_kurdistan%C3%AA|malper=amidakurd.org|dîrok=15.12.2013}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* ''(Lêker)'' [[barebar kirin]]
==== Etîmolojî ====
Ji {{navg|ku|bar|-e-|bar}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}:{{W+|tr|bar bar}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
nejgz8d5wspnuh9f6ms0hawaohtkhyp
bêzin
0
344050
6328807
6278514
2026-08-11T00:28:38Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328807
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[terwende]], [[kêm]], [[kêmpeyda]]
#* {{jêder-malper|ku|jêgirtin=Geştîgeh û hem liman e bender </br>Terwende û hem '''bêzin''' jî ender |nivîskar=Abdulkadir Bîngol|sernav=Ji Kitêba Abdulkadîr Bîngöl a Nûbihara Mezinan beşek|url=https://www.facebook.com/Dilkul.Ciziri/posts/1097391540330860/|malper=facebook.com|dîrok=04.06.20016}}
#* {{jêder-malper|ku|jêgirtin=Yek ji hevalên '''bêzin''' (nadir) bû kû di zanî her tim azad jiyan bike.|sernav=Zarokên Azad yên Kurdistan’ê|url=https://yps-online.net/zaroken-azad-yen-kurdistane/|malper=yps-online.net|sal=2017}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji neçarî hevjînê wê jinê tekê '''bêzin''' ji destê hevjîna xwe derxist û da wî bêwijdanî ta ku derbasî (kişwera dizan) bin|nivîskar=Merwan Berekat|sernav=Efrîn Destanê û Birîn|url=https://www.kurdipedia.org/files/books/2019/236473.PDF?ver=131932560360893149|sal=2018|rûpel=177}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|uncommon}}
* {{Z|tr}}: {{W+|tr|nadir}}
{{werger-bin}}
=== Formeke navdêrê ===
{{navdêr|ku|form=erê}}
# ''[[form]]a [[çemandî]] ji [[peyv]]a'' '''[[bazin]]'''
==== Formên alternatîv ====
*[[bazinî]]
==== Bikaranîn ====
* [[kurmanciya navendî]] û [[kurmanciya rojavayî|rojavayî]]
ay9e0b0u5c6kcktjp26970am3zomcd2
6328839
6328807
2026-08-11T00:41:17Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328839
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[terwende]], [[kêm]], [[kêmpeyda]]
#* {{jêder-malper|ku|jêgirtin=Geştîgeh û hem liman e bender </br>Terwende û hem '''bêzin''' jî ender |nivîskar=Abdulkadir Bîngol|sernav=Ji Kitêba Abdulkadîr Bîngöl a Nûbihara Mezinan beşek|url=https://www.facebook.com/Dilkul.Ciziri/posts/1097391540330860/|malper=facebook.com|dîrok=04.06.20016}}
#* {{jêder-malper|ku|jêgirtin=Yek ji hevalên '''bêzin''' (nadir) bû kû di zanî her tim azad jiyan bike.|sernav=Zarokên Azad yên Kurdistan’ê|url=https://yps-online.net/zaroken-azad-yen-kurdistane/|malper=yps-online.net|sal=2017}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji neçarî hevjînê wê jinê tekê '''bêzin''' ji destê hevjîna xwe derxist û da wî bêwijdanî ta ku derbasî (kişwera dizan) bin|nivîskar=Merwan Berekat|sernav=Efrîn Destanê û Birîn|url=https://www.kurdipedia.org/files/books/2019/236473.PDF?ver=131932560360893149|sal=2018|rûpel=177}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|uncommon}}
* {{Z|tr}}: {{W+|tr|nadir}}
{{werger-bin}}
=== Formeke navdêrê ===
{{navdêr|ku|form=erê}}
# ''[[form]]a [[çemandî]] ji [[peyv]]a'' '''[[bazin]]'''
==== Notên bikaranînê ====
* [[kurmanciya navendî]] û [[kurmanciya rojavayî|rojavayî]]
==== Formên alternatîv ====
*[[bazinî]]
g3kprpvp7davd2elpysh2s4kyhuuybz
6328860
6328839
2026-08-11T01:15:33Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328860
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[terwende]], [[kêm]], [[kêmpeyda]]
#* {{jêder-malper|ku|jêgirtin=Geştîgeh û hem liman e bender </br>Terwende û hem '''bêzin''' jî ender |nivîskar=Abdulkadir Bîngol|sernav=Ji Kitêba Abdulkadîr Bîngöl a Nûbihara Mezinan beşek|url=https://www.facebook.com/Dilkul.Ciziri/posts/1097391540330860/|malper=facebook.com|dîrok=04.06.2016}}
#* {{jêder-malper|ku|jêgirtin=Yek ji hevalên '''bêzin''' (nadir) bû kû di zanî her tim azad jiyan bike.|sernav=Zarokên Azad yên Kurdistan’ê|url=https://yps-online.net/zaroken-azad-yen-kurdistane/|malper=yps-online.net|sal=2017}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji neçarî hevjînê wê jinê tekê '''bêzin''' ji destê hevjîna xwe derxist û da wî bêwijdanî ta ku derbasî (kişwera dizan) bin|nivîskar=Merwan Berekat|sernav=Efrîn Destanê û Birîn|url=https://www.kurdipedia.org/files/books/2019/236473.PDF?ver=131932560360893149|sal=2018|rûpel=177}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|uncommon}}
* {{Z|tr}}: {{W+|tr|nadir}}
{{werger-bin}}
=== Formeke navdêrê ===
{{navdêr|ku|form=erê}}
# ''[[form]]a [[çemandî]] ji [[peyv]]a'' '''[[bazin]]'''
==== Notên bikaranînê ====
* [[kurmanciya navendî]] û [[kurmanciya rojavayî|rojavayî]]
==== Formên alternatîv ====
*[[bazinî]]
hvg0t915uqbx2rbun28vcg3bznm7peo
evî
0
359969
6328951
6232752
2026-08-11T11:49:34Z
Balyozbot
7867
/* Cînav */ sererastkirin
6328951
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Cînav ===
{{cînav|ku}}
# {{guharto|ku|vî}}
#* {{jêder-malper|ku|jêgirtin=Haja min ji '''evî''' nivîsa Celadet Bedirxan tune bû, heke min xwendibe jî ewê çaxê min baş dêna xwe nedayê miheqeq. |nivîskar=Rehmî Kurdziman|sernav=Ez ji xwe ra nabêjim nivîskar, karê min nivîskarî nîne|malper=inanolo.blogspot.com|url=https://inanolo.blogspot.com/2018/10/rehmi-kurdziman-ez-ji-xwe-ra-nabejim.html|sal=2018}}
du5mrsk6z62d6ribxq1ufskqa4dkaqu
bastannas
0
375358
6328796
6298206
2026-08-11T00:27:25Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328796
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{f|ku|nadir|zanist}} Kesên ku [[erd]]ê [[kolîn|dikolin]] û li [[dîrok]]a [[qedîm]] [[lê gerîn|digerin]].
#* {{jêder-malper|ku|jêgirtin=Kûpa Zêrîn a Hesenlû li sala 1958’ di erdkolaneke hevpar navbera Îran û Amerîkayê, li girê kevnar(bastanî) ê Hesenlû ê Nexedeyê, ji aliyê arkeolojîk ('''bastannas''') ê Amerîkî, Rabêrt Daysom, hat peyda kirin.|sernav=Mehrîcana asareke kevnar a Kurdistanê li parêzgeha Urmiyê|url=https://kurdpa.net/ku/news/mehricana-asareke-kevnar-a-kurdistane-li-parezgeha-urmiye|malper=urdpa.net|sal=2014}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Hevmane ====
* [[şûnwarnas]]
* [[arkeolog]]
* [[kevnarnas]]
==== Jê ====
* [[bastannasî]]
==== Etîmolojî ====
Ji {{ji|ckb|ku|باستانناس}}.
==== Bi zaravayên din ====
{{werger-ser|stûn=1}}
* {{Z|ckb}}: {{W-|ckb|باستانناس|tr={{g|ckb|bastannas|sc=Latn}}}}
{{werger-bin}}
==== Werger ====
{{werger-bnr|arkeolog}}
=== Çavkanî ===
* {{Zana Farqînî|r=95}}
* {{ferhenga izolî|r=491}}
cempo500wc9l7ahlenutboz72z6ntfz
biqelafet
0
376418
6328816
6065871
2026-08-11T00:29:00Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328816
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|bi|qe|la|fet}}
=== Rengdêr ===
{{ku-tewîn-rd|biqelafet}}
{{rengdêr|ku}}
# [[laşgir]], [[qelantor]]
#* {{jêder|ku|jêgirtin=Raymondê nîv reşîk, ku reşikiya wî ne zêde, bes têra xuyakirina durehiya wî dikir, bi bejn û bala xwe ve yekî '''biqelafet''' bû.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=73}}}}
#* {{jêder-malper|ku|jêgirtin=Ez xwendekarekî '''biqelafet''' bûm . Ji bo ku di polê de zêdegavî çênebe. Serokê polê ez hatibûm hilbijartin.|nivîskar=Dilovan Altuboga|sernav=Du Bîraniyên Min|url=https://web.archive.org/web/20200410130448/http://candname.com/du-biraniyen-min/|malper=http://candname.com/du-biraniyen-min/|dîrok=08.07.2016}}
#* {{jêder-malper|ku|jêgirtin=Ma ew zilamê mezin û '''biqelafet''', çawa ew cûc û gunikên biçûk…|nivîskar=Ismaîl Yildiz|sernav=Li ser Berzika Destavêjekî|url=https://archive.org/details/qijikerejkovarhejmar3|malper=Kovara Qijika Reş, r.132|sal=2011}}
==== Etîmolojî ====
Ji {{qertaf|ku|bi-|qelafet}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|bodied}}
* {{Z|tr}}: {{W+|tr|cüsseli}}
{{werger-bin}}
nt913v4d1pbek5j80fkssfkx64qxnt4
dilrehm
0
377389
6328918
6065874
2026-08-11T11:32:32Z
Balyozbot
7867
sererastkirin
6328918
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|dil|rehm}}
=== Rengdêr ===
{{ku-tewîn-rd|dilrehm}}
{{rengdêr|ku}}
# [[dilşewat]], [[dilsot]], [[dilsoj]], [[hestyar]], [[şîrîn]], [[bihîzyar]], [[hisgir]], [[hesas]], [[jidil]], [[hestger]], [[dilzîz]]
#* {{jêder-malper|ku|jêgirtin=Lazim e ku şagirtên Îsa hevdil an '''dilrehm''' bin. Lê belê ev yek carinan li me zor tê, çimkî em biqisûr in.|sernav=Dilrehm Be!|url=https://www.jw.org/kmr-x-rd/kitebxane/kovar/birca-cavderiye-lekolin-adar-2019/dilrehm-be/|malper=jw.org/kmr|sal=03/2019}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji aniha û pê ve nahêlim tu kes li der û dora mala Xaltiya Pîrevoka '''dilrehm''' bigere. Hema kî û çi bigere, ez ê wan di nava zimanên xwe de bixeniqînim.|nivîskar=Mehmed Tekçe|sernav=Azadîstan|weşanxane=Na Yayınları|rûpel=51|isbn=9786059017213}}
#* {{jêder-pirtûk|ku|jêgirtin=Him emir da, him jî di efrandinêd xwe da Ûsivê Beko yekî nazil û '''dilrehm''' e bona kirin û tiştêd qenc, lê ji vêya zêdetir jî berk û bi înk e hindava nerastiyê, neheqiyê û zordestiyê.|nivîskar=Têmûrê Xelîl|sernav=Antolojiya 35 Helbestvan û Nivîskarên Kurd ên Sovyeta Berê|weşanxane=Na Yayınları|sal=01.01.2014|rûpel=257|isbn=9786059017039}}
==== Etîmolojî ====
Ji {{qertaf|ku|dil|rehm}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|gnädig}}, {{W|de|zärtlich}}, {{W|de|milde|guman=erê}}, {{W|de|mitfühlend}}
* {{Z|fa}}: {{W+|fa|دلرحم}}
* {{Z|en}}: {{W+|en|kindhearted}}, {{W+|en|compassionate}}, {{W+|en|merciful}}
* {{Z|tr}}: {{W+|tr|bağrı yufka}}, {{W+|tr|şefkatli}}
{{werger-bin}}
mxz034upckynrj4bvcw2isirb4zb6cb
dilzîz
0
377404
6328919
6167848
2026-08-11T11:38:47Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328919
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[hestdar]], [[pejndar]], [[hestgerm]], [[diltenik]], [[dilşoş]], [[hestger]], [[hestyar]], [[çavbiav]], [[çavbistêrk]], [[çavşil]], [[dilşoj]], [[dilnerm]], [[bihîzyar]], [[hisgir]]
#* {{jêder-pirtûk|ku|jêgirtin=Çi bû ye ji te? Ma qey tu nizane ku ev deh sal in bavê min miriye? Bi vê gotinê re, mîna Nepenê ji nû ve bi ser hişê xwe ve were, lêva xwe gez kir û di dilê xwe de got: “Gelo ew kî bû, ku şeva çûyî bû siya li ser dilê vê Nepena gewr a '''dilzîz''' re.|sal=2015|nivîskar=Mahîr Bagok|url=http://books.google.com.tr/books?id=L4fhDwAAQBAJ&pg=PA157&dq=%22dilz%C3%AEz%22&hl=&cd=3&source=gbs_api|sernav=Siya Nepenê|weşanxane=Na Yayınları|ISBN=9786059017190|rûpel=157}}
#* {{jêder-malper|ku|jêgirtin=Xanima Şeyhmus Alpsoyê ku mehkûm û nexweş e û bi salan bi şikleke neheq di girtîgehê de tê girtin nameyeke '''dilzîz''' a bi sernava “Rebbê min ez ji te re gazinan dikim” nivîsand.|sernav=Ji xanima Şeyhmus Alpsoyî nameyeke dilzîz|url=https://ilkha.com/kurmanci/rojev/ji-xanima-seyhmus-alpsoy-nameyeke-dilzz-12197|malper=ilkha.com/kurmanci|sal=2018}}
#* {{jêder-malper|ku|jêgirtin=Ji pişta çiyayekî ji êgir û girî<br>şahmeraneke '''dilzîz'''<br>şeveqeke gulînî ji bilindahiyan dadixe|nivîskar=Fatma Savci|sernav=Xewna Hilatî|url=https://www.helbestakurdi.com/helbest/fatma-savci--xewna-hilati.html|malper=helbestakurdi.com}}
==== Jê ====
* {{g|ku|dilzîzî}}
* {{g|ku|dilzîz kirin}}
* {{g|ku|dilzîzkirin}}
* {{g|ku|dilzîz bûn}}
* {{g|ku|dilzîzbûn}}
==== Etîmolojî ====
Ji {{pêk|ku|dil|zîz}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|zartfühlend}}, {{W|de|rührselig}}, {{W|de|schwermütig}}, {{W|de|zärtlich}}, {{W|de|einfühlsam|guman=erê}}
* {{Z|fa}}: {{W+|fa|نازک دل}}
* {{Z|en}}: {{W+|en|emotional}}, {{W|en|sentimental}}
* {{Z|tr}}: {{W+|tr|duygulu}}, {{W+|tr|hisli}}, {{W+|tr|mütehassis}}, {{W+|tr|santimantal}}, {{W+|tr|sulu gözlü}}, {{W+|tr|yufka yürekli}}, {{W|tr|duygusal}}, {{W|tr|hassas}}
{{werger-bin}}
55fx4sjau7sc4l43tivigw9td6ak01r
devgirk
0
381157
6328911
6305134
2026-08-11T11:27:54Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328911
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[devik]], [[bergirk]], [[tampon]]
#* {{jêder|ku|jêgirtin='''Devgirka''' qutiya ji camê rakiribû, qolye danîbû orta wê û dîsa devgirk girtibû.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=90}}}}
#* {{jêder|ku|jêgirtin=Û ji vê xalê '''devgirka''' beroşa kozmîk (xala kozmîk) vebû...|Şerîf Çelebî: ''Gelo li gorî zanistê gumanîya nebûna xwedê heye?'', Kovara Felsefevan, Hj. 5, 2016, r. 12}}
#* {{jêder-malper|ku|jêgirtin=Spîral, RÎA yan jî '''devgirk''', amrazek e ku ji plastîkê çêbûye û li welatê me jê re spîral tê gotin. |nivîskar=KOMELEYA MAFÊN MIROVAN ÊN JINAN|sernav=AMRAZA NAV MALZAROKÊ - RÎA (SPÎRAL)|url=https://archive.org/details/mafen-me-yen-zayekiye-hene-kurdi|malper=http://kadinininsanhaklari.org/|sal=2014}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{qertaf|ku|devgir|-k}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|درپوش}}, {{W+|fa|کپسول}}, {{W+|fa|کپسول}}
* {{Z|en}}: {{W+|en|detonator}}, {{W+|en|wadding}}, {{W+|en|stopper}}
* {{Z|tr}}: {{W+|tr|tıkaç}}, {{W+|tr|kapsül}}, {{W+|tr|tapa}}, {{W|tr|mantar}}, {{W|tr|tıpa}}
{{werger-bin}}
9ov1wnhj4hat032nno1t473cqu98b4z
bixwebawer
0
423530
6328819
6230411
2026-08-11T00:29:07Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328819
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr ===
{{ku-tewîn-rd|bixwebawer}}
{{rengdêr|ku}}
# [[jixwebawer]], [[jixwerazî]], [[biste]]
#* {{jêder|ku|jêgirtin=Dema ez hatim vir, ez xortekî nûgihiştî û '''bixwebawer''' bûm.|{{Jêgirtin/Firat Cewerî/Payiza Dereng|weşanxane={{w|Avesta}}|sal=2014|r=23}}}}
#* {{jêder-malper|ku|jêgirtin=Rojnamegerê Iraqî Zeydî ku pêlav avêtibû Bush di hilbijartinê da '''bixwebawer''' e.|nivîskar=Önder Beyter|sernav=Rojnamegerê Iraqî Zeydî ku pêlav avêtibû Bush di hilbijartinê da bixwebawer e|url=https://www.aa.com.tr/kk/dinya/rojnameger%C3%AA-iraq%C3%AE-zeyd%C3%AE-ku-p%C3%AAlav-av%C3%AAtib%C3%BB-bush-di-hilbijartin%C3%AA-da-bixwebawer-e/1140158|malper=aa.com.tr/kk|sal=2018}}
#* {{jêder-malper|ku|jêgirtin=Îja ligel vê, kar û xebata bo zarokan di tevahiya jiyana welatan de li pileya herî pêş e û ji bernameyên TV, Radyo, Medyaya Civakî bigire heta yarîgeh û krêşan, baxçeyên zarokan her tişt ji bo hindê ye ku nifşekî baştir, zanatir, '''bixwebawertir''' bigihêje û vê dinyaya me bike warekî xweştir û şêntir…|nivîskar=Omer Dilsoz|sernav=Xebatên bo zarokan|url=https://www.yuksekovahaber.com.tr/yazi/xebaten-bo-zarokan-4120.htm|malper=yuksekovahaber.com.tr|sal=2015}}
==== Jê ====
* {{g|ku|bixwebawerî}}
==== Etîmolojî ====
Ji {{qertaf|ku|bi|xwe|bawer}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|selbstzufrieden}}
* {{Z|en}}: {{W+|en|confident}}, {{W+|en|self-confident}}
* {{Z|tr}}: {{W-|tr|öz güvenli}}, {{W+|tr|iddialı}}
{{werger-bin}}
jui1evtnt0xqobh6jbffd3i1b41hihd
bersivdêr
0
424170
6328803
6299095
2026-08-11T00:28:26Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328803
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# Kesa/ê ku [[bersiv dan|bersiv dide]].
#* {{jêder-kovar|ku|jêgirtin=Ev pirseke, ko bersiva wê pir zor e û pêdiviye '''bersivdêr''' agah li hemen hemen hemî cureyên nivîsîna kurdî û bihemî zaraveyan hebe û ez vê idîayê nakim, lê li gor agahiyên min, lêkolînerên kurd di warê edeba kurdî ya kilasîkî de, hebûn û hene...|kovar=Pênûsa Nû|sernav=Hevpeyvînek zindî biTengezarê Marînî re|nivîskar=Tengezarê Marînî|hejmar=17|sal=2013|rûpel=20}}
#* {{jêder-kovar|ku|jêgirtin=Bo zelalkirina têgeha derbirînên wek van mînakan, gerek mebesta '''bersivdêr''' ji pêvajoya hevokê zelal be.|kovar=Kanîzar|sernav=LÊKER (KAR) DI ZIMANÊ KURDÎ DE (6)|url=https://zimannas.files.wordpress.com/2018/02/hejmar16.pdf|nivîskar=Deham Ebdulfetah|hejmar=16|sal=2018|rûpel=228}}
# [[berpirs|Berpirs]], [[berpirsiyar]], [[mesûl]].
#* {{jêder-malper|ku|jêgirtin=Zerîf: Amerîka divê ji ber derketina ji Perymana Atomî '''bersivdêr''' be|sernav=Zerîf: Amerîka divê ji ber derketina ji Perymana Atomî bersivdêr be|url=https://kurmanci.sahartv.ir/news/%C3%8Eran-i315673|malper=kurmanci.sahartv.ir|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Formên alternatîv ====
* [[bersivder]]
==== Etîmolojî ====
Ji {{paş|ku|bersiv|-dêr}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|respondent}}
* {{Z|tr}}: {{W-|tr|cevap veren}} (kimse)
{{werger-bin}}
d8t0ymmgrgc47dqdaxzc3xwgq4kifxs
herî kirin
0
433229
6328733
4581108
2026-08-10T22:33:54Z
Wikihez
7344
6328733
wikitext
text/x-wiki
{{bnr-n|herîkirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/hɛˈriː kɘˈɾɘn/}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|herî kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=herî|valahî=erê}}
{{lêker|ku|c=h-gh}}, {{bilêv|r|req|1}}
# [[çamûr kirin]]
==== Etîmolojî ====
Ji {{heve|ku|herî|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|bedraggle}}
{{werger-bin}}
ovmmqdv5ig5k2rckivmn8fpoke1nkty
kirin boraq
0
433453
6329020
6150269
2026-08-11T11:52:29Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329020
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=}}
# [[kirin qurban]], [[qurban kirin]]
#* {{jêder-malper|ku|jêgirtin=Ji Cabir bîn Ebdullah hatiye ragihandin, ku wiha got: Me bi Pêxember (e.s) ra ferza Hecê edakir, me huştir ji ber heftan û çêlek ji ber heft kesan ve '''kir boraq''' (şerjêkir) .|sernav=Boraq|url=https://serhedname.com/?p=1841|malper=serhedname.com|sal=2017}}
#* {{jêder-malper|ku|jêgirtin=baş dizanim, lê semîra te jînenîgarî '''kir boraq''' ji bo erdnîgariyê, heyfa min tê li keçaniya te ya terr, li hêviyên te yên serzer.|nivîskar=Rênas Jiyan|sernav=Semîramîs|url=https://www.helbestakurdi.com/helbest/renas-jiyan--semiramis.html|malper=helbestakurdi.com}}
==== Etîmolojî ====
Ji ''[[kirin]] + [[boraq]].''
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|kurban etmek}}
{{werger-bin}}
m9qh4avbogux5ly64z6wid63y3xumlo
kêlb
0
447702
6329017
6097267
2026-08-11T11:52:22Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329017
wikitext
text/x-wiki
{{bnr-h|kelb}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[hov]], [[har]]
#* {{jêder-malper|ku|jêgirtin=Kurdistanê rumetê xwe yê hov û '''kêlb''' û pencên xwe yê ku bi xwina jin û zarokên Kurda sor bûyî naveşêrin.|sernav=Firmiskên heramzadên welat|url=http://www.dengekurdistan.nu/details.aspx?an=1415|malper=dengekurdistan.nu|sal=2012}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}}
# {{f|ku|Lacertus}} {{f|ku|xişok}} Cureyek [[xijinde]]yan e ku hêk dikin û çarpê digerin û xwînsar in,{{p-wate}} <br>
==== Hevmane ====
{{kol3|ku
|gumgumok
|marmaroş
|dîlmar
|margîsk
|kêlbezer
|meqezer
|qimqimok
|kelpezî
|kêlbik
|fatik
|dêmar
|dêlemar
|bûkemar
|marmarok
|dîlmar
|dêlmar
|kêlbesor
|dakmar
|beqmar
}}
==== Etîmolojî ====
Bi kêmî bi maneya "har, hov" ji {{ji|ar|ku|كلب}} (kelb: [[se]], [[seg]], [[kûçik]])
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|cuspid|guman=erê}}, {{W|en|langur|guman=erê}}, {{W|en|laniary|guman=erê}}, {{W|en|fang}}
* {{Z|tr}}: {{W|tr|kertenkele}}<ref>{{Zana Farqînî|r=1007}}</ref>
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=n}}
# {{guherto|ku|kilb|w=diranê caneweran ê tûj}}
=== Çavkanî ===
{{çavkanî}}
jxcvlvcfc417f4xfr1ksazw2g4s3ovr
gerxele
0
448935
6328966
6307269
2026-08-11T11:50:18Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328966
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mane?|ku}}
#: ''Di nav '''gerxeleya''' berbûkan.''
#* {{jêder-malper|ku|jêgirtin=Di nava gerxêleyê re ez û Mem Jan ku ji Uskudar bi hev re hatibûn meşiyan. Di Kolana Îstiklalê re hêdî hêdî me berê xwe da qada Galatasarayê. Gelek mirovên di nava '''gerxeleyê''' de piştgirê van rûdanan bûn û her ji kêlîkekê carekê diruşmeyek diavêtin. Dema ku diqîriyan jî pirê mirovên din jî bi wan re diqîriyan.|nivîskar=Çiya Mazî|sernav=EZ ÇÛM TAKSÎMÊ|url=https://diyarname.com/article.php?Idx=988|malper=diyarname.com|sal=2013}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
h034uqtnb99g8gowwuo2nnn20p0b4kj
akort kirin
0
448950
6328773
5732008
2026-08-11T00:25:07Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328773
wikitext
text/x-wiki
{{bnr-n|akortkirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
=== Lêker ===
{{ku-tewîn-lk|akort kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=akort|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[akort|Akorta]] alava muzîkê [[eyar kirin]].
#* {{jêder-malper|ku|jêgirtin=Ewil bi hesasiyeteke mezin çêdike, dûvre '''akort dike''' û herî dawî jî lê dide.|sernav=Perwerdeya bi firotina santûrê|url=https://www.trtnuce.com/jiyan/perwerdeya-bi-firotina-santr-h48530.html|malper=trtnuce.com|sal=2019}}
==== Etîmolojî ====
Ji {{heve|ku|akort|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|umstimmen}}
* {{Z|en}}: {{W+|en|attune}}
* {{Z|tr}}: {{W+|tr|akort etmek}}
{{werger-bin}}
hc94pvp3lt0kily8fnz6l5m7vbtc5ue
kudandin
0
450159
6329030
6310653
2026-08-11T11:52:49Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329030
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|kudandin|form=gerguhêz|niha=kudîn|borî=kudand}}
{{lêker|ku|c=x-gh}}
# [[domandin]], [[berdewamî]], [[berdewam kirin]], [[demandin]], [[dan domkirin]], [[dan ajotin]], [[domkirin]], [[dewamkirin]], [[berdewamkirin]], [[domîn]], [[ajotin]], [[dom kirin]], [[dewam kirin]], [[berdewam bûn]], [[rê çûn]]
#* {{jêder-malper|ku|jêgirtin=Hasilî kelam em apê xwe yê têrken û xweşsuhbet li gundê wî yê li ser devê rê datîne û em riya xwe '''dukudîne'''. Guhên me jî, bi daketina wî re ji xwe re xenê dibin.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
#* {{jêder|ku|jêgirtin=...wê mijarê teze di ser guhê xwe re avêt û li a xwe '''kudand'''.|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=15}}}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|continue}}, {{W+|en|proceed}}, {{W+|en|carry on}}
* {{Z|tr}}: {{W+|tr|sürdürmek}}, {{W+|tr|sürmek}}, {{W|tr|katetmek}}, {{W|tr|sürdürüp gitmek}}
{{werger-bin}}
{{bend}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mane?|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürdürme}}, {{W+|tr|sürme}}, {{W|tr|katetme}}
{{werger-bin}}
itu3unihzbi5jhrn5cjutrglluqs2qp
nezir kirin
0
450232
6329075
6152034
2026-08-11T11:54:25Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329075
wikitext
text/x-wiki
{{bnr-n|nezirkirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=h-gh}}
# [[gazî kirin]], [[xwe dan]], [[tayîn kirin]], [[fêda kirin]], [[weqf kirin]]
#: ''Wî zilamî '''nezir kiriye''' ku di riya Xwedê de qurbanek serjê ke û goştê wê li xîzanan belav bike.''
#* {{jêder-malper|ku|jêgirtin=Otobîyografîya wî ya nevaze û mukemel, hîmê “Cîhana duhê” datîne. Her weha, di heman demê de ji bo berhemên “dîrokî” yên ku wî '''nezirê''' Ronesans û Reformê '''kiribûn''' jî bû îlham.|nivîskar=Antony Burlaud|wergêr=Sedat Ulugana|sernav=STEFAN ZWEIG AN JÎ SAWA POLÎTÎKAYÊ|url=https://diplo-kurdi.com/index.php/ku/node/1927|malper=diplo-kurdi.com|sal=2020}}
==== Etîmolojî ====
Ji {{heve|ku|nezir|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|widmen}}
* {{Z|fa}}: {{W-|fa|اختصاص دادن}}, {{W+|fa|فدا کردن}}, {{W-|fa|وقف کردن}}, {{W-|fa|نذر کردن|guman=erê}}
* {{Z|en}}: {{W+|en|devote|guman=erê}}
* {{Z|tr}}: {{W+|tr|adamak}}
{{werger-bin}}
qkvjjdspmla7wfa1pc67mjh62zhumj3
niyetbaş
0
459837
6329076
6181134
2026-08-11T11:54:29Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329076
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştên [[baş]] bike.
#: {{hevmaneyên peyvê|ku|niyetpak}}
#* {{jêder-malper|ku|jêgirtin=Ji karkeran yek di nav jiyana rojane de mirovekî niyetbaş ku armanca wî ew e maliyên xwe xwedî bike.|malper=diyarname.com|url=http://diyarname.com/news.php?Idx=921|dîrok=2015-11-17}}
==== Hevmane ====
* {{g|ku|niyetpak}}
==== Dijmane ====
* {{g|ku|niyetxirab}}
==== Etîmolojî ====
Ji {{pêk|ku|niyet|baş}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|gutgemeint|guman=erê}}, {{W-|de|gutgesinnt|guman=erê}}, {{W+|de|wohlmeinend|guman=erê}}
* {{Z|en}}: {{W+|en|good faith}}
* {{Z|tr}}: {{W+|tr|iyi niyet}}, {{W+|tr|iyi niyetli}}
{{werger-bin}}
1p3icp2347qjsq4kuiezb38dba25sdt
klîk kirin
0
465580
6329024
5580624
2026-08-11T11:52:37Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329024
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|klîk kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=klîk|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[tikandin]], [[pêlê kirin|pêl (tiştekî) kirin]] (di komputergeriyê de)
#* {{jêder-malper|ku|jêgirtin=Jibo guhdarî kirina hevpeyvîna Dexîl ê Şemo digel birêz Mehmet Aktar, lînka ‘Guhdarî kirin’ li rexê rastê vê perê '''klîk bike'''.|nivîskar=Dexîlê Şemo|sernav=Mehmet Aktar: Erdogan Lêborînê Bixwaze, Dilşkestina Kurdan Namîne|url=https://www.dengeamerika.com/a/mehmet-aktar-erdogan-leborine-bixwaze-dilkestina-kurdan-namine-136807378/1117252.html|malper=dengeamerika.com|sal=2012}}
#* {{jêder-malper|ku|jêgirtin=Ji bo xwendina beşa heftemîn vir '''klîk bike'''|nivîskar=Cemîl Kolahî|sernav=PKK e pirojeyek ji bo jinavbirina bizava netewî a Kurdan – 6|url=https://darkamazi.net/kurdi/archives/1015437|malper=darkamazi.net|sal=2020}}
#* {{jêder-malper|ku|jêgirtin=Bo xwandina tevahiya reşnivîsê bi zimanê erebî li vir '''klîk bike'''|sernav=Reşnivîsa destûra ENKSê bo rêvebirina Rojavayê Kurdistanê|url=https://www.nerinaazad.org/kr/news/kurdistan/rojava/resnivsa-destra-enks-bo-rvebirina-rojavay-kurdistan|malper=nerinaazad.org|dîrok=08.01.2017}}
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|click}} + [[kirin]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|klicken}}, [[anklicken]]
* {{Z|cs}}: {{W|cs|kliknout}}
* {{Z|hy}}: {{W|hy|կտտացնել}}
* {{Z|eo}}: {{W|eo|klaki}}
* {{Z|fi}}: {{W+|fi|napsauttaa}}, {{W+|fi|näpäyttää}}
* {{Z|fr}}: {{W+|fr|cliquer}}
* {{Z|gd}}: {{W|gd|cliog}}
* {{Z|gl}}: {{W|gl|premer}}
* {{Z|io}}: {{W+|io|kliktar}}
* {{Z|en}}: {{W|en|click|guman=erê}}
* {{Z|ga}}: {{W|ga|cliceáil}}, {{W|ga|gliogáil}}
* {{Z|it}}: {{W+|it|cliccare}}
* {{Z|ca}}: {{W+|ca|clicar}}, {{W+|ca|fer clic}}
* {{Z|mk}}: {{W|mk|клика}}, {{W|mk|кликнува}}
* {{Z|ms}}: {{W|ms|mengklik}}
* {{Z|mi}}: {{W+|mi|pāwhiri}}
* {{Z|nrf}}: {{W+|nrf|clyiquer}}
* {{Z|pt}}: {{W+|pt|clicar}}
* {{Z|ro}}: {{W|ro|clica}}
* {{Z|ru}}: {{W+|ru|щёлкать}}, {{W+|ru|щёлкнуть}}, {{W+|ru|кли́кать}}, {{W+|ru|кли́кнуть}}
* {{Z|sco}}: {{W|sco|sneck}}
* {{Z|es}}: {{W|es|hacer clic}}, {{W+|es|cliquear}}, {{W|es|clicar}}
* {{Z|sv}}: {{W+|sv|klicka}}
* {{Z|tr}}: {{W|tr|tıklamak}}
* {{Z|vi}}: {{W+|vi|nhấn chuột}}, {{W+|vi|nhấp chuột}}, {{W+|vi|bấm chuột}}, {{W+|vi|ấn chuột}}
{{werger-bin}}
d6t1t7pz9c0id7puyzojxwlynsn4y90
nûgihiştî
0
469305
6329078
6257075
2026-08-11T11:54:33Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329078
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku|form=-}}
# Kesa/ê ku [[nû]] [[xort]] bûye.
#: {{hevmaneyên peyvê|ku|nûciwan|sinêle|sengele|bizele}}
#* {{jêder-malper|ku|jêgirtin=Di rojeke weke îro de 33 ciwanên '''nûgihiştî''' yên sosyalîst li Pirsûsê ji aliyê hêzên dewleta Tirk ên tarî ve hatin kuştin.|nivîskar=BARIŞ POLATMA|sernav=33 gul li Pirsûsê|url=https://www.ozgurpolitika.com/haberi-33-gul-li-pirsuse-148529|malper=ozgurpolitika.com|sal=2020}}
#* {{jêder-kovar|ku|jêgirtin=Her çi qas hîn xortekî '''nûgihiştî''' be jî hînî zimanên mînanî Rûsî, Tirkî, Ermenikî, Hurumî (Yewnanî), Gurcîkî dibe.|kovar=Bingöl Üniversitesi Yaşayan Diller Enstitüsü Dergisi|sernav=Bandora rêbaza realîzma civakparêz di romana Şivanê Kurmanca de|url=https://dergipark.org.tr/en/download/article-file/319037|nivîskar=Eyyüp Gürtürk|cîld=2|hejmar=3|sal=2016|rûpel=191}}
#* {{jêder-malper|ku|jêgirtin=delala '''nûgihiştî''' tu li kû yî<br>yara çavkihilkirî tu li kû yî|nivîskar=Baba Tahirê Uryan|sernav=Çarîn 28 (Delala Nûgihiştî)|url=https://www.helbestakurdi.com/helbest/baba-tahire-uryan--carin-28-delala-nugihisti.html|malper=helbestakurdi.com}}
# Tişta/ê ku hê nû derketiye.
#: {{hevmaneyên peyvê|ku|nûber|nûbar}}
#* {{jêder-malper|ku|jêgirtin=Ez bawer dikim ku ev destpêka xebata helbestvanê me yî '''nûgihiştî''' ye.|nivîskar=Konê Reş|sernav=Dr. Abdulazîz Ferman û Dîwanên; Dûriya Welêt, Evîn Li Welêt û Hezkirina Li Welêt|url=http://www.welateme.net/kurdi/modules.php?name=News&file=article&sid=4809|malper=welateme.net|dîrok=}}
#* {{jêder-malper|ku|jêgirtin=Samir Kalo hêvî dike ku kuçe û taxên bajarê Qamişloyê bi wêneyan bixemilin bi taybet wêneyên wênesazên '''nûgihiştî'''.|sernav=Bi rêya tabloyên xwe azarên civaka xwe rave dike|url=http://www.hawarnews.com/kr/haber/bi-rya-tabloyn-xwe-azarn-civaka-xwe-rave-dike-h38474.html|malper=hawarnews.com|sal=2021}}
#* {{jêder-malper|ku|jêgirtin=Tevî şaristaniyê wexta bazirganî û sektora kapîtalîst barkirin Ewrûpayê, li pêşiya xwe erdên bakîr û beyar, bajarên nû avabûne û feodalîteyeke '''nûgihiştî''' ya xam a Ewrûpayê dîtin.|nivîskar=Çekdar Botan|sernav=NIRXANDIN – Kapîtalîzm û Şaristaniyên Civakî-Dîrokî – 2|url=https://www.nuceciwan50.com/ku/2020/04/30/nirxandin-kapitalizm-u-saristaniyen-civaki-diroki-2/|malper=nuceciwan50|sal=2020}}
==== Formên alternatîv ====
* {{herwiha|ku|nûgiha|nûgihayî}}
==== Binêre herwiha ====
{{stûn|
* {{g|ku|ecemî}}
* {{g|ku|xêve}}
* {{g|ku|beragî}}
* {{g|ku|xama}}
* {{g|ku|berbext}}
}}
==== Etîmolojî ====
Ji {{pêk|ku|nû|gihiştî}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Neuling}}
* {{Z|fa}}: {{W+|fa|نوجوان}}
* {{Z|tr}}: {{W+|tr|turfanda}}, {{W+|tr|yeni yetme}}
{{werger-bin}}
0vrio6fd6u25pu13oq7t2mwrtypqtsi
Şablon:bnr h
10
515531
6328852
1685325
2026-08-11T01:01:15Z
EmausBot
6143
Beralîkirina ducarî li ser [[Şablon:herwiha binêre]] hat sererastkirin
6328852
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:herwiha binêre]]
rs8zw8507u3wm1cnt3aeeldn5rbtb0c
degiş kirin
0
534612
6328901
6182994
2026-08-11T11:25:43Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328901
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|degiş kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=degiş|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[guherandin]], [[guhertin]]
#* {{jêder-malper|ku|jêgirtin=Zanim ewê bavê min bigota ti dîsa tinazê xu dikî û hinkî şorr dikî lê ewê têra dilê xu jî bikenniya. Emirkinna meriv ewqas jî zimanê xu '''degiş dikê''' heeew. Winê ana bivêjin ti peznê xu didî lê min ji wan fem dikir. Ku pir hêdî xeberdana min fem dikir ha.|nivîskar=Jinikok|sernav=Ziman|url=http://www.lotikxane.com/2015/09/28/ziman-5/|malper=lotikxane.com|sal=2015}}
#* {{jêder-malper|ku|jêgirtin=Mêrik lê nêri, Fatikê jî xwe '''degiş kir''' o solek kir pê o çû temaşa daweta xwe binêr.|nivîskar=Roza Sierra|sernav=Dêrika Çiyayê Mazî|url=https://rozasierra.blogspot.com/2019/03/derika-ciyaye-mazi.html|malper=rozasierra.blogspot.com|sal=2019}}
==== Etîmolojî ====
Ji {{ji|tr|ku|değişmek|değiş-|w=[[guherîn]]}} + [[kirin]].
==== Têkildar====
* [[degiş bûn]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|change}}<ref>{{Chyet2020|cild=A-L}}</ref>
* {{Z|tr}}: {{W+|tr|değiştirmek}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
nfmf0tzp4jval0ictqp7uo2ep019ant
6328923
6328901
2026-08-11T11:41:12Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328923
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|degiş kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=degiş|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[guherandin]], [[guhertin]]
#* {{jêder-malper|ku|jêgirtin=Zanim ewê bavê min bigota ti dîsa tinazê xu dikî û hinkî şorr dikî lê ewê têra dilê xu jî bikenniya. Emirkinna meriv ewqas jî zimanê xu '''degiş dikê''' heeew. Winê ana bivêjin ti peznê xu didî lê min ji wan fem dikir. Ku pir hêdî xeberdana min fem dikir ha.|nivîskar=Jinikok|sernav=Ziman|url=http://www.lotikxane.com/2015/09/28/ziman-5/|malper=lotikxane.com|sal=2015}}
#* {{jêder-malper|ku|jêgirtin=Mêrik lê nêri, Fatikê jî xwe '''degiş kir''' o solek kir pê o çû temaşa daweta xwe binêr.|nivîskar=Roza Sierra|sernav=Dêrika Çiyayê Mazî|url=https://rozasierra.blogspot.com/2019/03/derika-ciyaye-mazi.html|malper=rozasierra.blogspot.com|sal=2019}}
==== Têkildar====
* [[degiş bûn]]
==== Etîmolojî ====
Ji {{ji|tr|ku|değişmek|değiş-|w=[[guherîn]]}} + [[kirin]].
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|change}}<ref>{{Chyet2020|cild=A-L}}</ref>
* {{Z|tr}}: {{W+|tr|değiştirmek}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
lno3uno58z5js95t3iet4y455qab241
jîwar
0
534686
6329000
6309467
2026-08-11T11:51:45Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329000
wikitext
text/x-wiki
{{bnr-h|jiwar}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|jî|war}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[cih|Cihê]] ku [[mirov]] lê [[dijî]].
#* {{jêder-malper|ku|jêgirtin=Nemaze di xeyal, bîr û nêrînên derhênerên kurd de yên ku karîne hin aliyên vî '''jîwarê''' dijwar ronî bikin.|nivîskar=Fedwa Derwîş|sernav=Jin di sînemaya kurdî de|url=http://www.welateme.net/kurdi/modules.php?name=News&file=article&sid=3562|malper=welateme.net}}
#* {{jêder-kovar|ku|jêgirtin=Ev e serbarî xirabkirina war û '''jîwarê''' gelek ji balindeyên jêgotî, bi rêka zêdeavakirin û berfirehkirina bajaran, kêşana rêk û rêbarên dirêj di nav cih û wargehên wan de, pîsbûn û bêserûberbûna kirasê şînahîya erdî, kêmbûna rêjî û baranan, li hindek cihên dî, ev e hemû bû egerê nearamî û kêmbûna xwarin û vexwarina hindek cûnan û vebiryana hindekên dî.|kovar=Kurmancî|sernav=Balindeyên li Kurdistanê - I|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku54.pdf|nivîskar=Îsmaîl TAHA ŞAHÎN|hejmar=54|sal=2014|rûpel=3}}
#* {{jêder-malper|ku|jêgirtin=Derhêner jiyana krêkaran, derdeseriyên wan û '''jîwarê''' wan nîşan didet.|sernav=Machines|url=https://www.duhokiff.com/index.php/documentary-vision/item/1070-machines|malper=duhokiff.com|sal=2016}}
# [[derdor]], [[hawirdor]] (bi taybetî [[sirişt]]ê [[derdor]]ên mirovî)
#* {{jêder-malper|ku|jêgirtin=Tirkiyê daxwaz kiriye ku Kurdên Sûrî helwest û '''jîwarê''' xwe yê siyasî destnîşan bikin û di berjewendiya demî ya rejîma Esed de tev negerin.|nivîskar=Dildar Şeko|sernav=Tirkiyê bi rojava re azîna `diyalogê` hilbijart|url=https://www.rudaw.net/kurmanci/kurdistan/270720139|malper=rudaw.net|dîrok=27.07.2013}}
#* {{jêder-malper|ku|jêgirtin=Hunerê heftem, ango sînema, berî her tiştî zimanek huneri ye, alavek payebilind a derbirîna huneri ye. Sînema ziman, wêne, mûsîk û liv e. Evin alavên hemaheng ên derbirîna '''jîwar''' u nasnamyê.|nivîskar=Hûsên Omar|sernav=Kurdistana Rojava û sînemaya penaber|url=http://avestakurd.net/blog/2013/01/14/kurdistana-rojava-snemaya-penaber/|malper=avestakurd.net|dîrok=14.01.2013}}
#* {{jêder-kovar|ku|jêgirtin=Vêce hemû rêbazên perwerdeyiyê berê xwe bi xurtî dan perwerdekirina zarokan, ji ber ku avakirina civakeke durist û pêşketî bi avakirina kesayetiya zarokan destpêdike, û ji ber ku kesayetî ne bi zayîna zarok re çêdibe, lê belê di riya dan û standinê, bi '''jîwarê''' xwe re zarok kesayetiyê qezenc dike, û li gor vê rasteqîniyê jîwarê zarok kesayetiya wî avadike.|kovar=Pênûsa Nû|sernav=Toreya Zarokan|url=http://www.penusanu.com/penusanu/PN-kurdi-46.pdf|nivîskar=Selam Darî|hejmar=46|sal=2016}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Hevmane ====
* [[jîngeh]]
==== Etîmolojî ====
{{ji?|ku}}
==== Werger ====
{{werger-ser|cihê jiyînê|1}}
* {{Z|en}}: {{W+|en|environment}}
* {{Z|tr}}: {{W+|tr|yerleşim yeri}}
{{werger-bin}}
{{werger-ser|hebûneke praktîkî|2}}
* {{Z|ar}}: {{W|ar|واقع}}, {{W|ar|حق}}
* {{Z|en}}: {{W|en|reality}}, {{W|en|nature}}, {{W|en|atmosphere}}
{{werger-bin}}
ckoja8c2o0j8gr5w95xm610xy2ldfu8
abloqe kirin
0
534964
6328761
6152765
2026-08-11T00:03:29Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328761
wikitext
text/x-wiki
{{bnr-n|abloqekirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|abloqe kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=abloqe|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[dor girtin]], [[dorpêçî kirin]]
#* {{jêder-malper|ku|jêgirtin=Behsa bûyera liberxwedana boxtiyên kela Ercîşê jî bûyereka gellek balkêş e û di cildê duduyê de diyar dibe ku ji berxwedana Kela Dimdimê ne kêmtir e: ”… Şah berê xwe da Ercîşê û ferman da ku bi hişkî kelê '''abloqe bikin'''.|nivîskar=Mûrad Ciwan|sernav=Şerefname; pencereya kurdan a ber li mêjûyê|url=https://muradciwan.com/2013/10/30/serefname-pencereya-kurdan-a-ber-li-mejuye/|malper=muradciwan.com|sal=2013}}
#* {{jêder-malper|ku|jêgirtin=Di nîvê meha tebaxa sala 1882an de, Kemal Beg ê sekreterê sêyem ê Sultan hatiye Wanê ku Şêx razî bike li yek ji wan bajarên pîroz ên ereb rûne. Lê Şêx guhê xwe nedayê û xwe li kela Oremarê asê kir. Hêzên Osmanî keleyê '''abloqe kirin'''.|nivîskar=Ziya Avci|sernav=Şêx Ubeydullahê Nêhrî û Serhildana 1880an|url=http://www.rupelanu.com/sex-ubeydullahe-nehri-u-serhildana-1880an-1110h.htm|malper=rupelanu.com|sal=2017}}
==== Etîmolojî ====
Ji {{heve|ku|abloqe|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|blockade}}, {{W+|en|lay siege}}
* {{Z|tr}}: {{W+|tr|ablukaya almak}}
{{werger-bin}}
ecqeyleb22ewuz7rbs7kfbia6aip75y
agirî girtin
0
534965
6328769
6183136
2026-08-11T00:24:52Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328769
wikitext
text/x-wiki
{{bnr-n|agirîgirtin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|agirî girtin|form=gerguhêz|niha=gir|borî=girt|pêşgir=agirî|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[agir]] [[vêketin]]
#* {{jêder-malper|ku|jêgirtin=Duhî roja duşemiyê 04.02.2013ê li bajarê Silêmaniyê vahiya xwendekar têde dijîn '''agirî girt''' û di encam da du xwendekar û karmendekê wê avahiyê jiyana xwe ji dest de û hijmareke xwendekaran jî birîdar bûn.|sernav=Hikûmeta Kurdistanê lêkolîneke berfire li ser bûyera Silimaniyeyê dike|url=https://www.kdp.info/a/print.aspx?l=16&smap=010000&a=44694|malper=kdp.info|sal=2013}}
#* {{jêder-malper|ku|jêgirtin=Ji daxuyaniya KCK-ê û gotinên Salih Mislim dîyar dibe ko '''agirî girtiye''' delinga wan.|sernav=Agirî girt delinga KCK-ê û PYD-ê|url=http://www.nefel.com/articles/article_detail.asp?RubricNr=1&ArticleNr=7931|malper=nefel.com|sal=2014}}
#* {{jêder-malper|ku|jêgirtin='''Agirî girt''' mala yekî, got: “Ne her ew tir ji kêçê re nema.<br>Dema mirov ji ber karekî eciz dibe û ji ber înyatê xwe diêxe zerarê tê gotin .|nivîskar=ABDULKADIR BINGOL|sernav=Agir agirê qurman|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=28&RubricNr=24&ArticleNr=4286|malper=nefel.com|sal=2009}}
==== Etîmolojî ====
Ji {{heve|ku|agirî|girtin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|catch fire}}
{{werger-bin}}
pi8nqzc5tviqktisfuv3at67pavhbmq
ajnegeh
0
534966
6328770
6296337
2026-08-11T00:24:56Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328770
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# gola [[avjenî]]yê, gola [[melevanî|melevaniyan]]
#: {{hevmaneyên peyvê|ku|hewz}}
#* {{jêder-malper|ku|jêgirtin=Morawiecki di prekonferasekê de ragihand ku salonên sînema, şanogeh, '''ajnegeh''' û salonên egzersizê di ji 30ê Gulanê pê ve werin vekirin.|sernav=Polonya Gavên Normalkirina Jîyanê Davêje|url=https://www.dengeamerika.com/a/polonya_normalkirin/5437604.html|malper=dengeamerika.com|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{paş|ku|ajne|-geh}}
==== Werger ====
{{werger-bnr|hewz}}
f4szsqxgtrn7gjmqp3s1kr7q0zll0yk
destemel
0
535728
6328908
6119210
2026-08-11T11:27:40Z
Balyozbot
7867
sererastkirin
6328908
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesê [[dest]]ê wî [[biqabiliyet]] e, kare hin [[kar]]an bike.
#: {{hevmane|ku|destbikêr|pratîk}}
#* {{jêder-malper|ku|jêgirtin='''Destemel''' in gundiyê te,<br/> Hurmet siyan e bona te.|nivîskar=Aram Tîgran & Cemalê Ûsiv|sernav=Gundê Şamîramê|url=https://www.gotinenstranan.com/berhem/aram-tigran-cemale-usiv-gunde-samirame|malper=gotinenstranan.com}}
#* {{jêder-kitêb|ku|jêgirtin=Helbestvan bi hewas, hizkirin û hisret derheqa malxê mala, mêrê çê, henekçîya, dengbêj- sazbenda, çîrokbêja, kevanyên '''destemel''' û bûkên bedew da distirê.|nivîskar=Dr. Eskerê Boyîk|sernav=Nûra Elegezê: Çend dîdem ji edebyeta Kurdên Ermenistanê|url=https://bnk.institutkurde.org/images/pdf/1PVMCFDUEW.pdf|weşanxane=Dengê Êzîdiyan|cih=Oldenburg, Deutschland|sal=4/2004|rûpel=79}}
==== Etîmolojî ====
Ji {{heve|ku|dest|emel}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|eli yatkın}}
* {{Z|en}}: {{W+|en|skilled}} (at something), {{W+|en|deft}}, {{W+|en|apt}} (at something)}
{{werger-bin}}
gus379d5ogx4ffvvr1vot3jb4p63xm0
agirbir
0
538993
6328768
6296226
2026-08-11T00:24:44Z
Balyozbot
7867
sererastkirin
6328768
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/ɑːɡɪɾˈbɪr/}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}, {{r-ya nerm}} (1), {{r-ya req}} (2)
# Di [[şer]] de [[rawestandin]]a [[lihevxistin]]ê ji bo [[armanc]]ekê ([[bi taybetî]] [[demî]] ye).
#* {{jêder-kovar|ku|jêgirtin=Koreya Bakûr, ji bo peymana aşitiyê bikeve dêvla peymana '''agirbir''' ya 1953yê, şertê bi DYA’yê yê rasterast diyalogê derxist pêş.|kovar=Le Monde diplomatique kurdî|sernav=Çîn û Kore|url=https://diplo-kurdi.com/sites/default/files/2019-02/lmdk14_dql.pdf|nivîskar=Philippe Pons|wergêr=Ahmet Dere|hejmar=14|sal=2011|rûpel=15}}
#* {{jêder-malper|ku|jêgirtin=Îstîfan Dî Mîstora, nûnerê taybetî yê rêkxistina NY li Sûriyê, hêvî xwast ku tevî vê '''agirbirê''', gereke din a gotûbêjên aşitiyê heftiyek din dest pê bike.|sernav=Konseya Ewlekariya NY biryara Agirbir li Sûriyê pejirand|url=https://kurdistanmedia.com/ku/news/konseya-ewlekariya-ny-biryara-agirbir-li-suriye-pejirand|malper=kurdistanmedia.com|sal=2016}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[agirbirr]]
==== Hevmane ====
* [[agirbest]]
==== Etîmolojî ====
* [[agir]] +[[-bir]]
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|armëpushim}}
* {{Z|de}}: {{W+|de|Waffenstillstand|n}}, {{W+|de|Feuerpause|m}}, {{W+|de|Waffenruhe|f}}
* {{Z|id}}: [[gencatan]] [[senjata]]
* {{Z|ar}}: {{W-|ar|هدنة}}
* {{Z|eo}}: {{W-|eo|militpaŭzo|xs=Esperanto}}
* {{Z|fa}}: {{W+|fa|آتش بس}}, {{W+|fa|آتش نشانی}}, {{W-|fa|آتشبس}}
* {{Z|fi}}: {{W+|fi|tulitauko}}
* {{Z|fr}}: {{W+|fr|cessez-le-feu|n}}, {{W+|fr|trêve|m}}
* {{Z|nl}}: {{W+|nl|staakt-het-vuren|n}}
* {{Z|he}}: [[הפסקת-אש]] (hafsaqat-esh)
* {{Z|en}}: {{W+|en|ceasefire}}, {{W+|en|armistice}}
* {{Z|it}}: {{W+|it|cessate il fuoco|n}}, {{W+|it|armistizio|n}}
* {{Z|ko}}: [[정전]](停戰)
* {{Z|hu}}: {{W+|hu|tűzszünet}}
* {{Z|no}}: {{W+|no|våpenhvile}}
* {{Z|pl}}: [[zawieszenie]] [[broni]]
* {{Z|pt}}: {{W-|pt|cessar-fogo|n}}, {{W+|pt|armistício|n}}, {{W+|pt|trégua|m}}
* {{Z|es}}: {{W-|es|alto el fuego|n}}, {{W+|es|armisticio|n}}, {{W+|es|tregua|m}}
* {{Z|sv}}: {{W+|sv|eldupphör|nt}}
* {{Z|tr}}: {{W+|tr|ateşkes}}, {{W+|tr|bırakışma}}, {{W+|tr|mütareke}}
* {{Z|el}}: [[εκεχειρία]] (ekexeiría)
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# [[made|Madeyê]] ku agirê mirovan kêm dike.
#* {{jêder-malper|ku|jêgirtin=Keça min 2 salî û sipîsaxlem bû. Lêbelê nişkêva devê wê zihabû û tiştek di ber da neçû. Dermanên êş û '''agirbir''' ên ku em didinê jî bi kêr nayên.|nivîskar=Önder Beyter|sernav=Lujeyna Îdlibî ku bûye qansêr ji bo tedawiyê li hêviya alîkariyê ye|url=https://www.aa.com.tr/kk/dinya/lujeyna-%C3%AEdlib%C3%AE-ku-b%C3%BBye-qans%C3%AAr-ji-bo-tedawiy%C3%AA-li-h%C3%AAviya-al%C3%AEkariy%C3%AA-ye/1863544|malper=aa.com.tr|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser|[[made|madeyê]] agirê mirovan kêm dike|1}}
* {{Z|de}}: {{W+|de|Fiebermittel}}, {{W+|de|fiebersenkend}}
* {{Z|en}}: {{W+|en|antipyretic}}, {{W+|en|antifebrile}}
* {{Z|tr}}: {{W-|tr|ateş düşürücü}}<ref>{{pirtûk|nivîskar=Sinan Alptekin|sernav=Ferhenga Zimanê Kurdî - Tirkî|sal=2013|rûpel=7|ziman=ku}}</ref><ref>{{ferhenga izolî|r=494}}</ref>
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
5g6v74m6upzs4i9gq7uc33eq2qkxf1e
6328869
6328768
2026-08-11T02:12:22Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6328869
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/ɑːɡɪɾˈbɪr/}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}, {{r-ya nerm}} (1), {{r-ya req}} (2)
# Di [[şer]] de [[rawestandin]]a [[lihevxistin]]ê ji bo [[armanc]]ekê ([[bi taybetî]] [[demî]] ye).
#* {{jêder-kovar|ku|jêgirtin=Koreya Bakûr, ji bo peymana aşitiyê bikeve dêvla peymana '''agirbir''' ya 1953yê, şertê bi DYA’yê yê rasterast diyalogê derxist pêş.|kovar=Le Monde diplomatique kurdî|sernav=Çîn û Kore|url=https://diplo-kurdi.com/sites/default/files/2019-02/lmdk14_dql.pdf|nivîskar=Philippe Pons|wergêr=Ahmet Dere|hejmar=14|sal=2011|rûpel=15}}
#* {{jêder-malper|ku|jêgirtin=Îstîfan Dî Mîstora, nûnerê taybetî yê rêkxistina NY li Sûriyê, hêvî xwast ku tevî vê '''agirbirê''', gereke din a gotûbêjên aşitiyê heftiyek din dest pê bike.|sernav=Konseya Ewlekariya NY biryara Agirbir li Sûriyê pejirand|url=https://kurdistanmedia.com/ku/news/konseya-ewlekariya-ny-biryara-agirbir-li-suriye-pejirand|malper=kurdistanmedia.com|sal=2016}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[agirbirr]]
==== Hevmane ====
* [[agirbest]]
==== Etîmolojî ====
* [[agir]] +[[-bir]]
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|armëpushim}}
* {{Z|de}}: {{W+|de|Waffenstillstand|n}}, {{W+|de|Feuerpause|m}}, {{W+|de|Waffenruhe|f}}
* {{Z|id}}: [[gencatan]] [[senjata]]
* {{Z|ar}}: {{W-|ar|هدنة}}
* {{Z|eo}}: {{W-|eo|militpaŭzo|xs=Esperanto}}
* {{Z|fa}}: {{W+|fa|آتش بس}}, {{W+|fa|آتش نشانی}}, {{W-|fa|آتشبس}}
* {{Z|fi}}: {{W+|fi|tulitauko}}
* {{Z|fr}}: {{W+|fr|cessez-le-feu|n}}, {{W+|fr|trêve|m}}
* {{Z|nl}}: {{W+|nl|staakt-het-vuren|n}}
* {{Z|he}}: [[הפסקת-אש]] (hafsaqat-esh)
* {{Z|en}}: {{W+|en|ceasefire}}, {{W+|en|armistice}}
* {{Z|it}}: {{W+|it|cessate il fuoco|n}}, {{W+|it|armistizio|n}}
* {{Z|ko}}: [[정전]](停戰)
* {{Z|hu}}: {{W+|hu|tűzszünet}}
* {{Z|no}}: {{W+|no|våpenhvile}}
* {{Z|pl}}: [[zawieszenie]] [[broni]]
* {{Z|pt}}: {{W-|pt|cessar-fogo|n}}, {{W+|pt|armistício|n}}, {{W+|pt|trégua|m}}
* {{Z|es}}: {{W-|es|alto el fuego|n}}, {{W+|es|armisticio|n}}, {{W+|es|tregua|m}}
* {{Z|sv}}: {{W+|sv|eldupphör|nt}}
* {{Z|tr}}: {{W+|tr|ateşkes}}, {{W+|tr|bırakışma}}, {{W+|tr|mütareke}}
* {{Z|el}}: [[εκεχειρία]] (ekexeiría)
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# [[made|Madeyê]] ku agirê mirovan kêm dike.
#* {{jêder-malper|ku|jêgirtin=Keça min 2 salî û sipîsaxlem bû. Lêbelê nişkêva devê wê zihabû û tiştek di ber da neçû. Dermanên êş û '''agirbir''' ên ku em didinê jî bi kêr nayên.|nivîskar=Önder Beyter|sernav=Lujeyna Îdlibî ku bûye qansêr ji bo tedawiyê li hêviya alîkariyê ye|url=https://www.aa.com.tr/kk/dinya/lujeyna-%C3%AEdlib%C3%AE-ku-b%C3%BBye-qans%C3%AAr-ji-bo-tedawiy%C3%AA-li-h%C3%AAviya-al%C3%AEkariy%C3%AA-ye/1863544|malper=aa.com.tr|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser|[[made]]yê agirê mirovan kêm dike|1}}
* {{Z|de}}: {{W+|de|Fiebermittel}}, {{W+|de|fiebersenkend}}
* {{Z|en}}: {{W+|en|antipyretic}}, {{W+|en|antifebrile}}
* {{Z|tr}}: {{W-|tr|ateş düşürücü}}<ref>{{pirtûk|nivîskar=Sinan Alptekin|sernav=Ferhenga Zimanê Kurdî - Tirkî|sal=2013|rûpel=7|ziman=ku}}</ref><ref>{{ferhenga izolî|r=494}}</ref>
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
73sdtocktuotny1avj1ycw3ytycbdop
aşê qehweyê
0
539480
6328782
6183719
2026-08-11T00:25:52Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328782
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[amûr|Amûrê]] ku tê de [[qehwe]] tê [[hêran]].
#* {{jêder-malper|ku|jêgirtin=Gava qehwe li gorî dilê we qeliya, ji ser agir deynin. Kakilên behîvan jê derxin, di '''aşê qehweyê''' de bihêrin, piştre bixin merkaneyekê (qawanozekê) û hilînin.|nivîskar=Amed Çeko Jiyan|sernav=Etîketa qehweyeke ji dawiya salên 1700'î mayî: Chicorée au Kurde|url=https://diyarname.com/news.php?Idx=41908|malper=diyarname.com|sal=2020}}
==== Hevmane ====
* [[aşik]]
* [[distarkê qehweyê]]
* [[qehwehêr]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kaffeemühle}}
* {{Z|en}}: {{W+|en|coffee mill}}
* {{Z|tr}}: {{W+|tr|kahve değirmeni}}
{{werger-bin}}
e16pbm4msh3lwhmjiuu7ke72ggt2coq
çavlixew
0
539637
6328886
6183777
2026-08-11T11:24:32Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328886
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[xilmaş]], [[xirmaş]], [[ximaş]]
#* {{jêder-malper|ku|jêgirtin=Di lêdana cara pêşî de gava derî venebû, mamosta Çetîn carek du carên din jî li derî da. Bi lêdana sisê an çaran re, jina wî '''çavlixew''' û bi kirasê şevê li wî derî vekir.|nivîskar=Firat Cewerî|sernav=Heyştê adarê|url=http://nefel.org/articles/article_print.asp?ArticleNr=4217|malper=nefel.org|sal=2009}}
==== Etîmolojî ====
[[çav]] + [[li]] + [[xew]]
==== Jê ====
* [[çavlixewî]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|drowsy}}, {{W+|en|sleepy}}
* {{Z|tr}}: {{W+|tr|uykulu}}, {{W-|tr|gözleri uykulu}}
{{werger-bin}}
rx9dxerf6gebeqhi3mmrkp7ttst1im3
6328929
6328886
2026-08-11T11:41:30Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328929
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[xilmaş]], [[xirmaş]], [[ximaş]]
#* {{jêder-malper|ku|jêgirtin=Di lêdana cara pêşî de gava derî venebû, mamosta Çetîn carek du carên din jî li derî da. Bi lêdana sisê an çaran re, jina wî '''çavlixew''' û bi kirasê şevê li wî derî vekir.|nivîskar=Firat Cewerî|sernav=Heyştê adarê|url=http://nefel.org/articles/article_print.asp?ArticleNr=4217|malper=nefel.org|sal=2009}}
==== Jê ====
* [[çavlixewî]]
==== Etîmolojî ====
[[çav]] + [[li]] + [[xew]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|drowsy}}, {{W+|en|sleepy}}
* {{Z|tr}}: {{W+|tr|uykulu}}, {{W-|tr|gözleri uykulu}}
{{werger-bin}}
n1pukqnizxt8vnin48vkry1mzag4762
henekçî
0
539877
6328978
6308214
2026-08-11T11:50:55Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328978
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# [[pêkenîn]], [[şemo]], [[henekxweş]], [[yarîker]]
#* {{jêder-pirtûk|ku|jêgirtin=Helbestvan bi hewas, hizkirin û hisret derheqa malxê mala, mêrê çê, '''heneçîya''', dengbêj- sazbenda, çîrokbêja, kevanyên destemes û bûkên bedew da distirê.|nivîskar=Dr. Eskerê Boyîk|sernav=Nûra Elegezê Çend dîdem ji edebyeta Kurdên Ermenistanê|weşanxane=Dengê Êzîdiyan|sal=2004|rûpel=80}}
#* {{jêder-malper|ku|jêgirtin=Li ser bextê qerf û '''henekçîyên''' Cûlemêrgê be, tê gotin ku ji ber arê?e, bêbextî, dijminahî û genge?îyên di nava olan de, Mûsa, Îsa, Mihemed Pêxember û Melekê Tawiz diçin nîk (cem) xwedê gilî û gazindên xwe dikin.|sernav=ÇI MI?KILÊN MIN NÎNIN|url=http://www.lotikxane.com/2010/02/14/ci-miskilen-min-ninin/|malper=lotikxane.com|sal=2010}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{paş|ku|henek|-çî}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|دلقک}}, {{W|fa|دلقک|guman=erê}}
* {{Z|en}}: {{W+|en|jocose}}, {{W|en|jocular|guman=erê}}
{{werger-bin}}
7t0ui8dkjo9394nzrv6spzmngup1vgg
nanoziko
0
614725
6329071
6252189
2026-08-11T11:54:17Z
Balyozbot
7867
/* Hoker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329071
wikitext
text/x-wiki
{{ds|nanoziko|nanzikî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[xebat|Xebat]]a ku tenê bi kêrî [[ziktêrî|ziktêriyê]] tê.<ref>Ferhenga Umîd Demîrhan, Çapa Duyem</ref>
#* {{jêder-malper|ku|jêgirtin=Li gorî lêkolînê 10 milyon û 15 hezar kes bi '''nanoziko''' dijîn. Dema ku mirov lê bifikire ku nifûsa Arjantînê 44 milyon e, ev tê maneya ku ji 4'an 3 nifûs hejar e. Ji van kesên ku bi '''nanoziko''' dijîn 700 hezar jê gelê xwecih e.|sernav=Li Arjantînê hejarî 35 ji 100'î derbas kir|url=https://web.archive.org/web/20200904064045/https://anfkurdi.com/civak-ekolojI/li-arjantine-hejari-35-ji-100-i-derbas-kir-118770|malper=anfkurdi.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Karker Mihemed Fîlîz dibêje: "Em ji sere sibê heta 7ê êvarê bi '''nanoziko''' dixebitin. Remezan e rojî ye kare me giran û zehmet e.|nivîskar=Mahîr Yuksel|sernav=Karkerên kişkişokê di Remezanê de gelek zehmetî dibînin|url=https://www.kurdistan24.net/ku/VideoReader/f393f4f4-6a7d-4925-8be7-8f98c1eabcfc|malper=kurdistan24.net|sal=2019}}
==== Formên alternatîv ====
* {{g|ku|nanozikî}}
* {{g|ku|nanzikî}}
==== Etîmolojî ====
Ji {{navg|ku|nan|-o-|ziko}}
=== Çavkanî===
{{çavkanî}}
22exb20vyweh0jlu0x38wnnifohkqgk
ketin ser kurm û kirasê (yekî)
0
616873
6329014
5020309
2026-08-11T11:52:16Z
Balyozbot
7867
/* Biwêj */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329014
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Biwêj ===
{{biwêj|ku}}
# {{bnr|çûn ser kurm û kirasê (yekî)}}
#* {{jêder-pirtûk|ku|jêgirtin=Keça min dibistana amadeyî (lîse) kuta kir. Di pola duduyan a zankoyê de '''kete ser kurm û kirasê xwe''', malbata xwe, civakê, dibistana xwe, rûçikê xwe, navê xwe, derdora xwe û hevalên xwe û gihişte pênasa xweya rasteqîn. Dema ku cara pêşîn wê ji min re qala rewşa xwe kir, tiştê ku wê wek “Dayê, bedena min cuda ye, gîyanê min cuda ye” derbirrî, me bêahengî bi hev re kir aheng.|wergêr=Kawa Nemir|sernav=ez dayîka transseksuelekî ê me|url=https://listag.files.wordpress.com/2015/03/bbta_kapak_kurtce-web.pdf|weşanxane=Koma Stenbolê ya Malbatên LGBT’yan|sal=2015|rûpel=15}}
#* {{jêder-malper|ku|jêgirtin=Ev ayet der heqê wan kesan de ye ku bi her halê xwe '''ketine ser kurm û kirasê''' kafiran. Li gorî vê rewşê; halê wan kesên ku hêj eziyet nedîtine û bi gotin û amelên xwe bi kafiran re lihevkirî û bi aheng heyata xwe berdewam dikin wê çawa çêbe?|nivîskar=Osman SADIKOĞLU|sernav=Dûrketına Jı Şırk û Muşrîkan û Dost Gırtına Allah û Dîn û Dostên Wî|url=https://tevhiddergisi.org/makale/d-rketina-ji-sirk-musr-kan-dost-girtina-allah-d-n-dost-n-w|malper=tevhiddergisi.org|sal=2018}}
cc0fhtd828imsyw9qjsmkud8ggg5pex
kerikmejî
0
618936
6329010
6185557
2026-08-11T11:52:08Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329010
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Tênegehiştî, [[aqilsivik]], [[bêqil]]
#* {{jêder-malper|ku|jêgirtin=Ez dibêjim ka ev fîgana Apê Fehmî 80 salin ku ketîye guhên me Kurdên '''kerikmejî'''. Lê mixabin ku me hêja jî ji xwe ra dersek ji vê buyera dijwar û xeddar negirtî ye.|nivîskar=Şakir Epozdemir|sernav=Fehmîyê Bilal û Derdê Kurdan|url=http://www.mediakurd.com/details.aspx?an=63|malper=mediakurd.com|sal=2009}}
==== Etîmolojî ====
Ji {{pêk|ku|kerik|mejî}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
i2b15txlch5jx8aa4kemxk37e7wklxe
mêr jî hene, mêrkok jî hene; jin jî hene, jinkok jî hene
0
625516
6329061
6188712
2026-08-11T11:53:57Z
Balyozbot
7867
/* Gotineke pêşiyan */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329061
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# [[gotina pêşiyan|Gotineke pêşiyan]] a kurdî.<ref>Pend û Peng, Bîlal Hesen</ref>
#* {{jêder-malper|ku|jêgirtin=Belê, '''jin hene û jinkok hene. Mêr hene û mêrkok hene'''. Ê de ji xwe re vê lotikê bixwînin û mêr çawa ne bibînin. Bibînin bê kurê bavan çawa ne.|nivîskar=Hecî Berber|sernav=Aha mêr ev mêr e ha….|url=http://www.lotikxane.com/2015/12/05/aha-mer-ev-mer-e-ha/|malper=lotikxane.com|sal=2015}}
#* {{jêder-malper|ku|jêgirtin=Rebeno, nema çavên wî bi jina wî ve dirabûn! Jinê digot: Xwelî li serê min be, ma min jî mêr heye? Mala minê! '''Mêr jî hene û mêrkok jî hene''', hevalên min yek jî li vî welatê gemar nemaye. Eyşo keça şivên bû wa li Swêsra ye, Gurcê li Elmanya ye, Şefê li Swêde.. bi pera dilîzin!|nivîskar=Reşad Şeref|sernav=Xewna penaberiyê|url=https://krd.riataza.com/2016/12/16/xewna-penaberiye/|malper=riataza.com|sal=2016}}
==== Hevmane ====
* {{mj|Dihok}} [[zelam yêt heyn û zelamoşk jî yêt heyn]]
=== Çavkanî ===
{{çavkanî}}
lz8x784511ee7ksc23lt87wvz5p7gfy
êkspayir bûn
0
627241
6328955
5091563
2026-08-11T11:49:52Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328955
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|êkspayir bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=êkspayir|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[bi ser ve çûn]], [[borîn]]a [[dem]]î, [[wext]] bi ser ve çûn, [[mêjo]]ya tiştekî [[xilas bûn]]
#* {{jêder-pirtûk|ku|jêgirtin='''Êkspayir bûn'''.<br>Hemî hizir di kolankên bîrhatina da|nivîskar=Xelîl Duhokî|sernav=Antolojiya helbesta nû ya kurmancên başûr|url=https://www.kurdipedia.org/files/books/2014/116122.PDF?ver=132321413460347764|sal=2013|rûpel=720}}
#* {{jêder-malper|ku|jêgirtin=Li gorî agahiyên peyamnêrê BasNewsê, beşek mezin ji wan derzî û dermanan xirab bibûn, beşek jê '''êkspayir''' (dema bikaranîna wan derbas bibû) '''bibûn'''.|sernav=Li Kerkûkê zêdetirî 4 ton derzî û dermanên xirab hat zeftkirin|url=http://www.basnews.com/kr/babat/303604|malper=basnews.com|sal=2016}}
#* {{jêder-malper|ku|jêgirtin=Bo cara duyê ez hest dikem qelemê min neşêt digel min berdewamiyê bidet û xwe ji nivîsînên min vedihêlît. Bi rastî vî şîşeyê hibrî ez gelek westandim. Nizanim hibr '''êkspayir''' e yan serikê qelemî selixî ye û li nivîsînê diheziqît.|nivîskar=Ebdulrehman Bamerni|sernav=Sê nivîsîn bi qelemê hibrî|url=http://ebdulrehmanbamerni.blogspot.com/2011/01/se-nivisin-bi-qeleme-hibri.html|malper=ebdulrehmanbamerni.blogspot.com|sal=2011}}
==== Etîmolojî ====
Deyn ji {{deyn|en|ku|expire}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|expire}}
* {{Z|tr}}: {{W|tr|son kullanma tarihi geçmek}}
{{werger-bin}}
d0orshr38xulp5hbqj8y7swral13f7y
degiş bûn
0
629019
6328900
6189839
2026-08-11T11:25:38Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328900
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|degiş bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=degiş|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# [[guherîn]], [[bedil bûn]]
#* {{jêder-malper|ku|jêgirtin=Îro ew qanûn '''degiş bûye''' ew mode hatîye hildanê|nivîskar=Ercan Aras|sernav=Di kilam û dengbejîya kurdî da pêkenokî (komedî) -2|url=https://krd.riataza.com/2017/05/25/di-kilam-u-dengbejiya-kurdi-da-pekenoki-komedi-2/|malper=krd.riataza.com|sal=2017}}
#* {{jêder-kovar|ku|jêgirtin=Di devê her dengbêjekî de, li her herêmekê gotin, meqam '''degiş dibe'''. Bi vî terhî, şaxên destanan dertên holê.|kovar=Tîroj|sernav=Destan û romana destanê|url=http://www.arsivakurd.org/images/arsiva_kurd/kovar/tiroj/tiroj_37.pdf|nivîskar=Dr. Ömer Uluçay|hejmar=37|sal=2009|rûpel=62}}
#* {{jêder-malper|ku|jêgirtin=Mirov '''degiş dibe''', wext degiş dibe, bala meriv jî...|sernav=kesên ku dema xwendina pirtûkan de binê hevokan bi pênûsên rengorengo xêz dikin|url=https://tirsik.net/index.php?peyam=119136|malper=tirsik.net|sal=2020}}
==== Etîmolojî ====
Ji {{ji|tr|ku|değiş-|tr=[[değişmek]]}} + [[bûn]].
==== Têkildar ====
* [[degiş kirin]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|change}}
* {{Z|tr}}: {{W|tr|değişmek}}
{{werger-bin}}
cubimhil2hmg0nutwbqk6tuh194uxdt
6328924
6328900
2026-08-11T11:41:15Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328924
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|degiş bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=degiş|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# [[guherîn]], [[bedil bûn]]
#* {{jêder-malper|ku|jêgirtin=Îro ew qanûn '''degiş bûye''' ew mode hatîye hildanê|nivîskar=Ercan Aras|sernav=Di kilam û dengbejîya kurdî da pêkenokî (komedî) -2|url=https://krd.riataza.com/2017/05/25/di-kilam-u-dengbejiya-kurdi-da-pekenoki-komedi-2/|malper=krd.riataza.com|sal=2017}}
#* {{jêder-kovar|ku|jêgirtin=Di devê her dengbêjekî de, li her herêmekê gotin, meqam '''degiş dibe'''. Bi vî terhî, şaxên destanan dertên holê.|kovar=Tîroj|sernav=Destan û romana destanê|url=http://www.arsivakurd.org/images/arsiva_kurd/kovar/tiroj/tiroj_37.pdf|nivîskar=Dr. Ömer Uluçay|hejmar=37|sal=2009|rûpel=62}}
#* {{jêder-malper|ku|jêgirtin=Mirov '''degiş dibe''', wext degiş dibe, bala meriv jî...|sernav=kesên ku dema xwendina pirtûkan de binê hevokan bi pênûsên rengorengo xêz dikin|url=https://tirsik.net/index.php?peyam=119136|malper=tirsik.net|sal=2020}}
==== Têkildar ====
* [[degiş kirin]]
==== Etîmolojî ====
Ji {{ji|tr|ku|değiş-|tr=[[değişmek]]}} + [[bûn]].
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|change}}
* {{Z|tr}}: {{W|tr|değişmek}}
{{werger-bin}}
m9594aasl4evhb6kmjh29stha6ktonv
kanserojen
0
633362
6329002
6252910
2026-08-11T11:51:50Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329002
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[made]]yek e ku dikare bibe [[sedem]]a [[kanser]]ê anku [[penceşêr]]ê anku [[seletan]]ê
#: {{jêder-malper|ku|jêgirtin=Di hêkên ku Taywanê ji Tirkiyeyê kirîbûn de madeyên kanserojen hatibûn tesbîtkirin..|malper=Rudaw.net/kurmanci|sal=8/2023|sernav=Gelo hêkên bi madeyên kanserojen li bazaran belav bûne?|url=https://www.rudaw.net/kurmanci/middleeast/turkey/26082023}}
==== Formên alternatîv ====
* [[karsînojen]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|krebserregend}}, {{W+|de|karzinogen}}
* {{Z|be}}: {{W-|be|канцэрагенны}}
* {{Z|cs}}: {{W+|cs|karcinogenní}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W-|cmn|[[致癌]][[的]]|tr=zhì'ái de}}
* {{Z|da}}: {{W-|da|kræftfremkaldende}}, {{W-|da|karcinogen}}
* {{Z|hy}}: {{W+|hy|քաղցկեղածին}}
* {{Z|eo}}: {{W-|eo|kanceriga}}
* {{Z|fi}}: {{W+|fi|karsinogeeninen}}
* {{Z|fr}}: {{W+|fr|cancérigène|n|m}}, {{W+|fr|carcinogène}}
* {{Z|nl}}: {{W+|nl|kankerverwekkend}}
* {{Z|en}}: {{W+|en|carcinogenic}}, {{W+|en|cancerogenic}}
* {{Z|ga}}: {{W-|ga|carcanaigineach}}
* {{Z|ja}}: {{W-|ja|発癌性|tr=はつがんせい, hatsugansei}}
* {{Z|ca}}: {{W-|ca|cancerigen}}, {{W+|ca|carcinogen}}
* {{Z|hu}}: {{W+|hu|karcinogén}}, {{W+|hu|rákokozó}}, {{W+|hu|rákkeltő}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|kreftfremkallende}}, {{W-|nb|karsinogen}}
* {{Z|pl}}: {{W+|pl|rakotwórczy}}
* {{Z|pt}}: {{W-|pt|cancerígeno}}, {{W-|pt|carcinogênico}}, {{W-|pt|carcinogénico}}
* {{Z|ro}}: {{W+|ro|cancerigen}}, {{W+|ro|carcinogen}}
* {{Z|ru}}: {{W+|ru|канцерогенный}}
* {{Z|sh}}: {{W-|sh|karcinogen|n}}, {{W+|sh|kȁncerogēn|n}}
* {{Z|sk}}: {{W-|sk|karciogénny}}
* {{Z|es}}: {{W+|es|cancerígeno}}
* {{Z|sv}}: {{W+|sv|carcinogen}}, {{W+|sv|karcinogen}}, {{W+|sv|cancerframkallande}}, {{W+|sv|cancerogen}}
* {{Z|tr}}: {{W+|tr|kanserojen}}
* {{Z|el}}: {{W+|el|καρκινογόνος}}
{{werger-bin}}
:{{werger çavkanî|en|carcinogenic|beş=Ev qismê Wergerê|oldid=75692121}}
== {{ziman|tr}} ==
===Rengdêr===
{{rengdêr|tr}}
#[[kanserojen#ku|kanserojen]]
cuclqcmdgjnmddkcma9c5somj7yg898
menderes
0
634363
6329053
6311938
2026-08-11T11:53:41Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329053
wikitext
text/x-wiki
{{bnr-h|Menderes}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Rio-cauto-cuba.JPG|thumb|250px|'''Menderesên''' [[çem]]ekî.]]
{{navdêr|ku|z=m}}
# {{f|ku|erdnîgarî}} [[fetlok]]ên [[çem]] û [[robar]]an, <br>[[badok]]ên [[çem]] û [[robar]]an
#* {{jêder-malper|ku|jêgirtin=Bajarê Erdexana ku zozan, mêrg, gol, çem û deştên reng rengî li ser xwe dihewîne bi '''menderesên''' lihevbadayî va balê dikişîne.|malper=AA|sal=7/2023|sernav=Dîmenên menderesên li Erdexanê ji hewayê va hatin kişandin|url=https://www.aa.com.tr/kk/jiyan/d%C3%AEmen%C3%AAn-menderes%C3%AAn-li-erdexan%C3%AA-ji-heway%C3%AA-va-hatin-kisandin/2937599}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|مەندەرەس}}
* {{ku-kr|мәндәрәс}}
==== Etîmolojî ====
Bi riya {{deyn|tr|ku|menderes}} ji {{ji|el|ku|Μαίανδρος|tr=Maíandros}} ku navê [[çem]]ê [[Menderes]] yê li rojavayê Tirkiyê ye ku bi [[fetlok]]ên xwe naskirî ye. Heman peyv ji yûnanî ketiye piraniya zimanên ewropî jî: {{hv|en|meander}}, {{hv|fr|méandre}}, {{hv|de|Mäander}}, {{hv|es|meandro}}...
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|Flusswindung|m}}, {{W+|de|Mäander|n}}, {{W-|de|Flussschlinge|m}}, {{W-|de|Flussbiegung|m}}
* {{Z|eu}}: {{W-|eu|meandro}}
* {{Z|bg}}: {{W+|bg|меа́ндър|n}}
* {{Z|cs}}: {{W+|cs|meandr|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|河套|tr=hétào}}
* {{Z|da}}: {{W-|da|mæander|g}}
* {{Z|et}}: {{W+|et|meander}}
* {{Z|fi}}: {{W+|fi|meanderi}}
* {{Z|fr}}: {{W+|fr|méandre|n}}
* {{Z|gl}}: {{W+|gl|meandro|n}}
* {{Z|nl}}: {{W+|nl|meander|n}}, {{W+|nl|waterloop|n}}
* {{Z|en}}: {{W+|en|meander}}
* {{Z|it}}: {{W+|it|meandro|n}}
* {{Z|ca}}: {{W+|ca|meandre|n}}
* {{Z|lv}}: {{W-|lv|meandrs|n}}
* {{Z|lt}}: {{W-|lt|meandra|m}}
* {{Z|mk}}: {{W-|mk|меа́ндер|n}}
* {{Z|hu}}: {{W+|hu|kanyarulat}}, {{W+|hu|meander}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|meander|n}}
*: {{Z|nn}}: {{W-|nn|meander|n}}
* {{Z|pl}}: {{W+|pl|meander|n}}, {{W+|pl|zakole|nt}}
* {{Z|pt}}: {{W+|pt|meandro|n}}
* {{Z|ro}}: {{W+|ro|meandru|nt}}
* {{Z|ru}}: {{W+|ru|меа́ндр|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|меандар|n}}
*: Latînî: {{W+|sh|meandar|n}}
* {{Z|sk}}: {{W-|sk|meander|n}}
* {{Z|sl}}: {{W+|sl|meander|n}}
* {{Z|es}}: {{W+|es|meandro|n}}
* {{Z|sv}}: {{W+|sv|meander|g}}
* {{Z|uk}}: {{W-|uk|меа́ндр|n}}
{{werger-bin}}
:{{werger çavkanî|en|meander|beş=Ev qismê Wergerê|oldid=76566030}}
== {{ziman|tr}} ==
=== Navdêr ===
{{nav|tr}}
# [[menderes#Kurdî|menderes]], [[fetlok]], di rêavên çeman de fetlokên weke tîpa “s”
dmc5foal0l63v8rqn0hg8o8ipo3y1v7
chimney pot
0
637483
6328741
5733539
2026-08-10T22:42:21Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328741
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Navdêr ===
{{navdêr|en}}
# [[qazan]]a [[kulîn]]ê
37fjzvedbyudn04lpbcuu9yhdmandn0
bîterbûn
0
651406
6328825
6303987
2026-08-11T00:31:41Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328825
wikitext
text/x-wiki
{{binêre lêker|bîter bûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[peydebûn]], [[dabînbûn]], [[raybûn]]
#* {{jêder-malper|ku|jêgirtin=Eşîrên koçer derbazî jîyana riatî dibûn û ewê yekê alî pakkirina şertên jîyana wan dikir (sazkirina pevgirêdana {komûnîkasyon}, qewînkirina qeyde-qanûna, peydabûna aletên, ku avê bi hêsanî ji bîra derdixin), û herweha '''bîterbûna''' cûrên jîyanê yên nûjen, wek bikaranîna ereba, ji bo gundîya çêbûna firsenda, ku herine bajara û h.w.d.|nivîskar=Têmûrê Xelîl|sernav=KURDISTAN PIŞTÎ ŞERÊ HEMCIHANÊ YÊ DUDAYAN|url=https://krd.riataza.com/2019/05/12/kurdistan-pisti-sere-hemcihane-ye-dudayan/|malper=krd.riataza.com|sal=2019}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{pêk|ku|bîter|bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|bulunma}}
{{werger-bin}}
sv5mfqzl3enwo8imizacnhhf02jz23j
lafîte
0
653609
6329040
6311027
2026-08-11T11:53:13Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329040
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[poster]]
#* {{jêder-malper|ku|jêgirtin=Bêtirî 100 kesî ji ber perlemana Yonanê berê xwe dan baliyozgeha Almaniyayê, û panivîs( '''lafîte''') hildidan ku tê de bi ingilîzî danîbûn (( Ez malbata xwe dixwzim)) bi wê yekê dixwestin derkevin Almaniyayê|sernav=Li jêr hevoka (( Ez malbata xwe dixwazim )) ... penaberên sûrî yên li Yonanê asê mane nerazîbûna xwe diyar dikin|url=https://www.qasioun-news.com/ar/articles/87558|malper=qasioun-news.com|sal=2017}}
#* {{jêder-malper|ku|jêgirtin=Jinên ku rengên xemrî,gulgulî û sor li xwe dikirin '''lafîte''' û pankard bilind dikirin, ku wan bi rêya wan berevanî li rola xwe di xwenîşandanan de kir û wan kampanya reşkirinê ya li dijî wan, nemaze ya di mîdyaya civakî de, şermezar kir.|nivîskar=Faris Omran|sernav=Jinên Îraqî banga Sedir bo qedexekirina xwenîşandanên têkel şermezar dikin|url=https://diyaruna.com/kmr/articles/cnmi_di/features/2020/02/19/feature-01|malper=diyaruna.com|sal=2020}}
#* {{jêder-malper|ku|jêgirtin=Grûpa ku navê "Ciwanên Kurd" li xwe dike, bi vê çalakiyê rabû. Di xwepêşandanê de, ciwanan '''lafîte''' bilind kiribûn, ku li ser wan hatibû nivîsandin...|sernav=Li Qamişloyę ciwanęn kurd doza çareserkirina Pirsa Kurdî li Suriyę kir - Xwepęşandaneke aşityane|url=http://www.amude.net/print.php?newsId=2354&newsLanguage=Munteda|malper=amude.net|sal=2005}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
fm7ijh3x06haldufx9zprvcboqba067
di dev û pozê (yekî) de anîn
0
654450
6328739
6248147
2026-08-10T22:39:53Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328739
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku}} {{e|ku|biwêjî}}
# {{mane?|ku}}
==== Formên alternatîv ====
* {{g|ku|di bêvila (yekî) re anîn}}
bspechtn9pwbuwoj5oorwv1zzxekdxw
6328740
6328739
2026-08-10T22:40:05Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328740
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=h-gh}} {{e|ku|biwêjî}}
# {{mane?|ku}}
==== Formên alternatîv ====
* {{g|ku|di bêvila (yekî) re anîn}}
b7hdsbb3bj02lo5f1renn49x4mmovww
korê ku kêç ketî destan
0
661495
6329026
6194102
2026-08-11T11:52:41Z
Balyozbot
7867
/* Biwêj */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329026
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Biwêj ===
{{biwêj|ku}}
#ji bo kesên çikosî û tema tê gotin<ref>Mehmet Oncu, Ferhenga Biwêjan, Sîtav, 2014</ref>
#* {{jêder-malper|ku|jêgirtin=Zilam, merivekî bi rû û têrpeyv e. Li tomofîlê siwar dibe nabe, direqînê û dest bi axaftinê dike. Gelek eyan bû ku mêrik birçiyê peyvê ye. Mîna '''korekî kêçek bikeve nav lepan'''! De vêca ne kêçek, em çar heb kêç, bibore çar heb pepûkên xwedê ketine nav lepê wî.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
=== Çavkanî ===
{{çavkanî}}
4w8bmyumcq6bo7q6gock16r617lsi5c
li ser neynûkan reqisîn
0
668232
6329045
6194301
2026-08-11T11:53:24Z
Balyozbot
7867
/* Biwêj */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329045
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Biwêj ===
{{biwêj|ku}}
#pir kêf kirin
#xweş reqas kirin<ref>Şêxmûs Aslan, Ferhenga Biwêjan, 2004</ref>
#* {{jêder-malper|ku|jêgirtin=Zilamekî qemer ê di kirasê çermsoran de, hinekî li pêş, destê xwe ji me re bilind dike. Hew tenê destê xwe bilind dikir? Na wele! Camêro hemû bedena xwe, bi destê xwe re bilind dikir. Ji bo me bide sekinandin, edetî '''li ser nenûkan direqisî'''.|nivîskar=Agîd Yazar|sernav=Welatê Antîakos ê zîrek Komagene IV|url=https://xwebun.org/welate-antiakos-e-zirek-komagene-iv/|malper=xwebun.org|sal=2020}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
fhd1ieyc517odcl6k9kvuj6qcnjvh6c
kaşke
0
830130
6329003
6309732
2026-08-11T11:51:53Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329003
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[erebe|Erebe]]ya [[hesp]]ê ku pê [[ajal]], [[eşya]], û malzeme tê [[kişandin]], wek paytonê.
#* {{jêder-malper|ku|jêgirtin=Nibras Ebasê ku 20 sal ev kar kir û niha patron e û bi dehan kes li cem dixebitin der barê barkêşiya bi '''kaşkeyê''' va agahî da nûçegihanê AAyê û got: "Em bi erebeyên hespan bar dibin nav Bexda û bajarên li derveyê Bexdayê.|nivîskar=Abdullah Tel|sernav=Li Bexdayê erebeyên hespan hê jî di rewacê da ne|url=https://www.aa.com.tr/kk/jiyan/li-bexday%C3%AA-erebey%C3%AAn-hespan-h%C3%AA-j%C3%AE-di-rewac%C3%AA-da-ne/1203928|urlya-arşîvê=https://web.archive.org/web/20230701084904/https://www.aa.com.tr/kk/jiyan/li-bexday%C3%AA-erebey%C3%AAn-hespan-h%C3%AA-j%C3%AE-di-rewac%C3%AA-da-ne/1203928|malper=AA|dîrok=2018-07-17}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|cart}}, {{W+|en|coach}}, {{W+|en|hack}}
* {{Z|tr}}: {{W+|tr|at arabası}}
{{werger-bin}}
e3siun3bubx2qdvcfeep33detnsumy7
cifta berazan
0
830140
6328830
6195030
2026-08-11T00:32:00Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328830
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[çek]]ê ku [[fîşek]]a wê dipeqît, bi [[taybet]]î di kuştina [[beraz]]an de tê [[bikaranîn]]
#* {{jêder-malper|ku|jêgirtin={{ku-Arab|!!کورکەکێ 11 سالی کچەکا 8 سالی ب '''جفتا بەرازا''' دکوژیت و سەبەب ژی دڤێ ڤیدیوێ دا بزانە}}|nivîskar=Liberal Kurdistan لێبرالیەت بو کوردستان|sernav=|url=https://www.facebook.com/dohuk.duhok/videos/979010715475878/|malper=facebook.com/dohuk.duhok|sal=2015}}
#:: ''Kurikekî 11 salî keçeke 8 salî bi '''cifta beraza''' dikujît û sebeb jî di vê vîdîwê da bizane!!''
==== Bi alfabeyên din ====
* {{ku-ar|جفتا بەرازا}}
==== Etîmolojî ====
Ji [[cifte|cift]] + [[-a]] + [[beraz]] + [[-an]].
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|shotgun}}
{{werger-bin}}
63tarxu8yf1a31q9kqzsbr6yp9o9our
6328835
6328830
2026-08-11T00:38:55Z
Wikihez
7344
/* Navdêr */
6328835
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[çek]]ê ku [[fîşek]]a wê dipeqît, bi [[taybet]]î di kuştina [[beraz]]an de tê [[bikaranîn]]
#* {{jêder-malper|ku|sc=ku-Arab|jêgirtin=!!کورکەکێ 11 سالی کچەکا 8 سالی ب '''جفتا بەرازا''' دکوژیت و سەبەب ژی دڤێ ڤیدیوێ دا بزانە|nivîskar= لێبرالیەت بو کوردستان<tr:Liberal Kurdistan>|tr=Kurikekî 11 salî keçeke 8 salî bi '''cifta beraza''' dikujît û sebeb jî di vê vîdîwê da bizane!!|sernav=|url=https://www.facebook.com/dohuk.duhok/videos/979010715475878/|malper=facebook.com/dohuk.duhok|sal=2015}}
==== Bi alfabeyên din ====
* {{ku-ar|جفتا بەرازا}}
==== Etîmolojî ====
Ji [[cifte|cift]] + [[-a]] + [[beraz]] + [[-an]].
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|shotgun}}
{{werger-bin}}
l5x5ateo8ovr3ie1x9d7sl7cp8yz239
gereşûn
0
836410
6328965
6307228
2026-08-11T11:50:16Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328965
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Gereşûn.jpg|thumb|Gereşûn]]
{{navdêr|ku|z=m}}
# {{f|ku|xwarin}} Cûreyekî [[şorbe|şorbeyê]] yê bi [[birinc|birincê]] an jî [[dahn|dahnî]] û [[avbacan|ava bacanan]] tê çêkirin. Herwiha ji bo tahmê [[qelî]] û [[pîvaz|pîvaza]] hişk jî dikeve vê xwarinê. Bi piranî wek xwarina sereke tê xwarin.
#* {{jêder-malper|ku|jêgirtin=Berê xwarinek me hebû, me jê re digot '''gereşûn'''. Va belkî 15 sal bûye min gereşûn nexwariye..|malper=twitter|url=https://twitter.com/senyoressor/status/1130884823936057345 gereşûn|sernav=@senyoressor|sal=05/2019}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Tarîfa xwarinê ====
Ji bo sê kesan:
* Du [[qedeh|qedehên]] avê [[birinc]]
* Heşt qedehên avê [[av]]
* Du [[kevçî|kevçiyên]] xwarinê [[avbacan|ava bacanan]]
* Çar kevçiyên xwarinê [[rûn]]
* Nîv kevçiyê xwarinê [[xwê]]
# Ava xwe bikelînin
# Ava bacanan û rûn biqijilînin
# Birincê pê dakin, heya birinc di avê de nerm bibe bila bikele
;{{biçûk|Çavkanî:
* ''twitter'' [https://twitter.com/xalidxelo/status/1213759992752459777 tarîfa gereşûnê], @xalidxelo, 01/2020
}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
iehgu5allwk2x5iywywz33jkqq3ne5i
dabarkirin
0
836803
6328896
6304456
2026-08-11T11:25:18Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328896
wikitext
text/x-wiki
{{bnr-l|dabar kirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[raguhestin]]a [[pêzanîn]]an ji ser [[internêt]]ê bo [[kombers]]ekî .
#* {{jêder-malper|ku|jêgirtin=Vaye hat! Ev guherto bo şerefa Billy Eckstine bi navê “Eckstine” hat binav kirin. Ev guhertoya herî dawî ya mezin a WordPressê ye bo '''dabarkirin''' û hildemandinê niha li ser paceya rêvebiriya we ye.|nivîskar=Ridwan Xelîl|sernav=WordPress 5.5 “Eckstine”|url=https://kmr.wordpress.org/2020/08/15/wordpress-5-5-eckstine/|malper=kmr.wordpress.org|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{pêk|ku|da-|barkirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|تحميل}}
* {{Z|fr}}: {{W+|fr|télécharger}}
* {{Z|en}}: {{W+|en|download}}
{{werger-bin}}
99t77lxexcxkm0pwnlj91w2g02uima3
enteş
0
836977
6328948
6306109
2026-08-11T11:48:27Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328948
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{f|ku|Aldûş}} Ji hêla [[çawanî]] û [[çendanî]]yê ve [[wekî]] [[hev]] bûn, [[hevta]], [[hinkûf]].
#: ''Tu wî dikî '''enteşê''' min?''
#* {{jêder-kovar|ku|jêgirtin=Li ciyê xwe rûne, tu kîyî li dijî me di axivî, edeba xwe bizane tu ne '''enteşê''' me yî em te bigirin ciddîye.|kovar=ARSİVA KURD|sernav=Lîstikên qirêj ên dewleta Tirk ên li Başûrê Kurdistanê|url=https://archive.org/details/407468584-arsiva-kurd-bargiran-2016-10_202006|nivîskar=Bargiran|sal=2016|dîrok=|rûpel=32}}
#* {{jêder-kovar|ku|jêgirtin=Bi Iraqê re gotinên nemayî, bi serokwezîrê Îraqê henekên xwe dikirin. Tu ne '''enteşê''' me yî. em bi te re hevdîtina pêk nînin. Hete xwe bizane Abadîyê derpê di navber rana da bû!”|sernav=TIRKIYÊ LI HER DEWRÊN DUNYAYÊ WENDA KIRINE|url=https://archive.org/details/407590085-arsiva-kurd-bargiran-2017-3-a|nivîskar=Bargiran|sal=2017|rûpel=36}}
#* {{jêder-pirtûk|ku|jêgirtin=Her kes '''enteşê''' xwe bixwe zane.|nivîskar=Mehmet Oncu|sernav=Ferhenga Devoka Herêma Semsûrê|weşanxane=Sîtav|sal=2020|rûpel=115|isbn=9786057920607}}
#* {{jêder-malper|ku|jêgirtin=Rasûlûllâh wiha kerem kiriye ku: "(Ê ku dixwazin bizewicin) ku lawik û keçik '''enteşê''' hev bin û hûn wana nezewicînin, li benda fîtneyê bisekinin."|sernav=Gotinên Pêxember|url=https://twitter.com/571gp632/status/1292426588429090816|malper=twitter.com|sal=2020}}
#* {{jêder-kovar|ku|jêgirtin=Em jî hêvî dikin ku ew giravokên ku taybetî navçeya Cêlikanin û ne li Tirkiyê ne jî li welatên din hempaû '''enteşên''' wan tinenin, rojekê pêş de aliyê dewletê ve bên parastin û qorî kirinê.|kovar=Semsûr|sernav=Ji bihûştên rûzemîn ên veşartî "Cêlikan"|url=https://silo.tips/download/min-digot-qey-tu-bi-ziman-ma-tu-bi-kurd-nizan-cigerxwn|nivîskar=Mehmet Oncû|hejmar=5|sal=2011|rûpel=8}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|equal}}
* {{Z|tr}}: {{W|tr|denk}}
{{werger-bin}}
r8d91h121rifhobg1zc38cw6i45n9hi
Şablon:jêder-malper
10
837082
6328752
6249533
2026-08-10T23:31:14Z
Wikihez
7344
6328752
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t
| alias =
chapter: title,sernav,webpage,rûpela-webê,entry,made;
trans-chapter: trans-title,tercimeya-sernav,trans-webpage,tercimeya-webê,tercimeya-malperê,trans-entry,tercimeya-madeyê;
chapterurl: titleurl,urlya-sernav,webpageurl,urlya-webê ,entryurl,urlya-madeyê;
chapter_tlr: webpage_tlr,tercimanê-webê;
chapter_series: webpage_series,seriya-websîteyê;
chapter_seriesvolume: webpage_seriesvolume,cildê-seriya-webê;
chapter_number: webpage_number,hejmara-webê;
chapter_plain: title_plain,sernav-sade,webpage_plain,web-sade;
title: site,work,websîte,malper,xebat;
trans-title: trans-site,tercimeya-sîteyê,trans-work,tercimeya-xebatê;
}}<!--
-->{{#if:{{{nekat|}}}||<!--
-->{{kategorî|Jêgirtinên malperan bi {{navê zimanî|{{{1}}}}}}}<!--
-->}}</includeonly><!--
--><noinclude>{{jêder-malper|en|nivîskar=Meg Downey|sernav=Marvel’s Comic Soul Stone could Explain the Jump from Infinity War’s Ending to Avengers 4: A Brief History of Crazy Multidimensional Power|url=https://www.polygon.com/2018/5/7/17328230/infinity-war-avengers-4-marvel-comics-soul-stone|urlya-arşîvê=https://web.archive.org/web/20180624110542/https://www.polygon.com/2018/5/7/17328230/infinity-war-avengers-4-marvel-comics-soul-stone|tarîxa-arşîvê=24 June 2018|xebat=[[w:Polygon (website)|Polygon]]|tarîx=7 May 2018|jêgirtin=There’s a very real chance that, rather than crumbling into the dust and floating off into the '''ether''', Thanos’s victims [in the film ''[[w:Avengers: Infinity War|Avengers: Infinity War]]''] were actually sucked up into the Soul Stone.}}<!--
-->{{documentation}}</noinclude>
g3wic2i1nomlmj47vxypwdcnv5smlci
nemûr
0
839399
6329073
6285065
2026-08-11T11:54:21Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329073
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|ne|mûr}}
=== Navdêr ===
{{navdêr|ku|z=?}}
# [[neqş û nîgar]]
#* {{jêder|ku|jêgirtin=Hundirê restorantê jî bi dekorasyoneke ku hemû nexş û '''nemûrên''' çanda Çînê diheband di hundirê xwe de hatibû xemilandin.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=85}}}}
#* {{jêder-malper|ku|jêgirtin=Wana xwe wek du xortên bê simêl û bê rî didan nîşandan, ku cilên jinan li xwe kirine, şala sipî dane serê xwe, ser wê şalê şaleke reş a badayî girê didan, ku keçên kurdên koçer ji hirîyê çê dikirin û bi nexş û '''nemûran''' va dixemilandin. |nivîskar=Î. A. Orbêlî|sernav=Folklor û deba Moksê|url=https://archive.org/details/folklorudebamokseorbeli|malper=Wergera ji rûsî: Têmûrê Xelîl|sal=1982}}
#* {{jêder-malper|ku|jêgirtin=Di guldesteya ji wêneyên ku Edvard û Thomas kişandin çêkirî de, tê dîtin ku çirayên li hundirê dêrê bi taybetî bala wan kişandine û wan peywendiyeke nêzîk li gel nexş û '''nemûrên''' avahiyan ên kevir danîne.|nivîskar=Edvard Uğurel - Matias Uğurel|sernav=Dêr|url=https://web.archive.org/web/20200416153019/http://bianet.org/bianet/sanat/141143-kilise-der|malper=http://bianet.org/|dîrok=29.09.2012}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
1n54m4krrtdn83ni2jxl0nj2see9slw
Şablon:jêder-kitêb
10
839412
6328750
6276923
2026-08-10T23:25:09Z
Wikihez
7344
6328750
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t|type=book}}<!--jêderê bigire
-->{{#if:{{{nekat|}}}||<!--
-->{{kategorî|Jêgirtinên kitêban bi {{navê zimanî|{{{1}}}}}}}<!--
-->}}</includeonly><!--
--><noinclude>{{jêder-kitêb/ceribandin|en|author=F[rancis] Scott Fitzgerald|authorlink=F. Scott Fitzgerald|chapter=IX|title=[[w:The Great Gatsby|The Great Gatsby]]|location=New York, N.Y.|publisher=[[w:Charles Scribner's Sons|Charles Scribner’s Sons]]|year=1925|oclc=884653065|location2=New York, N.Y.|publisher2=Charles Scribner’s Sons|year2=1953|isbn2=978-0-684-16498-4|page2=182|pageurl2=https://archive.org/stream/in.ernet.dli.2015.184960/2015.184960.The-Great-Gatsby#page/n185/mode/1up|passage=So we beat on, boats against the current, borne back '''ceaselessly''' into the past.}}<noinclude>
{{belgekirin}}</noinclude>
88drgsprawphmnemfs8rqyiuc0zax8v
6328754
6328750
2026-08-10T23:31:34Z
Wikihez
7344
6328754
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t|type=book}}<!--jêderê bigire
-->{{#if:{{{nekat|}}}||<!--
-->{{kategorî|Jêgirtinên kitêban bi {{navê zimanî|{{{1}}}}}}}<!--
-->}}</includeonly><!--
--><noinclude>{{jêder-kitêb|en|author=F[rancis] Scott Fitzgerald|authorlink=F. Scott Fitzgerald|chapter=IX|title=[[w:The Great Gatsby|The Great Gatsby]]|location=New York, N.Y.|publisher=[[w:Charles Scribner's Sons|Charles Scribner’s Sons]]|year=1925|oclc=884653065|location2=New York, N.Y.|publisher2=Charles Scribner’s Sons|year2=1953|isbn2=978-0-684-16498-4|page2=182|pageurl2=https://archive.org/stream/in.ernet.dli.2015.184960/2015.184960.The-Great-Gatsby#page/n185/mode/1up|passage=So we beat on, boats against the current, borne back '''ceaselessly''' into the past.}}<noinclude>
{{belgekirin}}</noinclude>
0bhir7zvz5uh1ihqmqkvyptcvptkadw
çîlqerqaş
0
840753
6328894
5836511
2026-08-11T11:25:06Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328894
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Mihemed Qers-çîlqerqaş.wav|Deng|Qers}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# {{serhedî}} Gelek [[spî]]<ref>{{malper|sernav=çîlqerqaş|url=http://tirsik.net/index.php?peyam=123600|malper=tirsik.net|dîrok=17.05.2020|ziman=ku}}</ref>
#* {{jêder-pirtûk|ku|jêgirtin=Zarokên xwe yên kurîn li pişta beranên '''çîlqerqaş''', sergevez, qerase dikirin, bi derîvekirina gomê re heviyên xwe avis dikirin.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=71|isbn=978-605-5585-41-9}}
#* {{jêder-pirtûk|ku|jêgirtin=Rûyê te yê '''çîlqerqaş'''<br>hinarikên te yên sorgevez|nivîskar=Bawer Agirî|sernav=Êş|weşanxane=Na Yayınları|sal=2016|rûpel=92|isbn=9786059017558}}
#* {{jêder-malper|ku|jêgirtin=Mîna robarên dirêj heylo dipdirêj<br>her ku dipelînin gumikên '''çîlqerqaş'''<br>sibehan em bi xwe, êvaran dîn.|nivîskar=Mustafa Köz|wergêr={{w|Berken Bereh}}|sernav=Çi Ku Evîn Heye|url=http://avestakurd.net/blog/2012/08/26/gotina-deryay-ya-mustafa-koz-ji-ls-derc/|malper=avestakurd.net|sal=2012}}
==== Hevmane ====
* [[qerqaş]]
* [[çîlspî]]
* [[sipspî]]
==== Etîmolojî ====
Ji {{qertaf|ku|çîl|qerqaş}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|schneeweiss}}, {{W-|de|kreideweiss}}, {{W+|de|schlohweiß}}, {{W-|de|leuchtend weiß}}
* {{Z|fi}}: {{W+|fi|vitivalkoinen}}
* {{Z|en}}: {{W+|en|snow-white}}
* {{Z|tr}}: {{W+|tr|bembeyaz}}, {{W+|tr|apak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
9a63lfzzaau7mni8qikpco46j4kwlnu
6328915
6328894
2026-08-11T11:29:08Z
Balyozbot
7867
[[Bikarhêner:Wikihez/skrîpt/py/dengbot.py|Bot]]: Formata parametreya "dever" hat guhartin
6328915
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Mihemed Qers-çîlqerqaş.wav|dever=Qers}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# {{serhedî}} Gelek [[spî]]<ref>{{malper|sernav=çîlqerqaş|url=http://tirsik.net/index.php?peyam=123600|malper=tirsik.net|dîrok=17.05.2020|ziman=ku}}</ref>
#* {{jêder-pirtûk|ku|jêgirtin=Zarokên xwe yên kurîn li pişta beranên '''çîlqerqaş''', sergevez, qerase dikirin, bi derîvekirina gomê re heviyên xwe avis dikirin.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=71|isbn=978-605-5585-41-9}}
#* {{jêder-pirtûk|ku|jêgirtin=Rûyê te yê '''çîlqerqaş'''<br>hinarikên te yên sorgevez|nivîskar=Bawer Agirî|sernav=Êş|weşanxane=Na Yayınları|sal=2016|rûpel=92|isbn=9786059017558}}
#* {{jêder-malper|ku|jêgirtin=Mîna robarên dirêj heylo dipdirêj<br>her ku dipelînin gumikên '''çîlqerqaş'''<br>sibehan em bi xwe, êvaran dîn.|nivîskar=Mustafa Köz|wergêr={{w|Berken Bereh}}|sernav=Çi Ku Evîn Heye|url=http://avestakurd.net/blog/2012/08/26/gotina-deryay-ya-mustafa-koz-ji-ls-derc/|malper=avestakurd.net|sal=2012}}
==== Hevmane ====
* [[qerqaş]]
* [[çîlspî]]
* [[sipspî]]
==== Etîmolojî ====
Ji {{qertaf|ku|çîl|qerqaş}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|schneeweiss}}, {{W-|de|kreideweiss}}, {{W+|de|schlohweiß}}, {{W-|de|leuchtend weiß}}
* {{Z|fi}}: {{W+|fi|vitivalkoinen}}
* {{Z|en}}: {{W+|en|snow-white}}
* {{Z|tr}}: {{W+|tr|bembeyaz}}, {{W+|tr|apak}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
ltk61qm361qfqyx4bjyi5lusbjmnfjj
Şablon:jêder-kovar
10
842241
6328751
6292261
2026-08-10T23:28:47Z
Wikihez
7344
6328751
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t|type=journal}}<!--
-->{{#if:{{{nekat|}}}||<!--
-->{{kategorî|Jêgirtinên kovaran bi {{navê zimanî|{{{1}}}}}}}<!--
-->}}</includeonly><!--
--><noinclude>{{jêder-kovar/ceribandin|en|author=Justin Chang|authorlink=Justin Chang|title=The Day He Arrives [film review]|url=https://variety.com/2011/film/markets-festivals/the-day-he-arrives-1117945326/|archiveurl=https://web.archive.org/web/20170628015008/https://variety.com/2011/film/markets-festivals/the-day-he-arrives-1117945326/|archivedate=28 June 2017|magazine=[[w:Variety (magazine)|Variety]]|date=25 May 2011|issn=0042-2738|oclc=960911146|passage=The outline could apply to most of the self-effacing, increasingly inward-looking comedies written and directed by [[w:Hong Sang-soo|Hong Sang-soo]], and it certainly describes "[[w:The Day He Arrives|The Day He Arrives]]," an agreeably meandering exercise that brings some clever French New Wave '''fillips''' and structural repetitions to Hong's characteristically boozy party.}}<!--
-->{{belgekirin}}</noinclude>
k0uzvh83jlpfr74dw5zd0g8dm8ygtvb
6328753
6328751
2026-08-10T23:31:28Z
Wikihez
7344
6328753
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t|type=journal}}<!--
-->{{#if:{{{nekat|}}}||<!--
-->{{kategorî|Jêgirtinên kovaran bi {{navê zimanî|{{{1}}}}}}}<!--
-->}}</includeonly><!--
--><noinclude>{{jêder-kovar|en|author=Justin Chang|authorlink=Justin Chang|title=The Day He Arrives [film review]|url=https://variety.com/2011/film/markets-festivals/the-day-he-arrives-1117945326/|archiveurl=https://web.archive.org/web/20170628015008/https://variety.com/2011/film/markets-festivals/the-day-he-arrives-1117945326/|archivedate=28 June 2017|magazine=[[w:Variety (magazine)|Variety]]|date=25 May 2011|issn=0042-2738|oclc=960911146|passage=The outline could apply to most of the self-effacing, increasingly inward-looking comedies written and directed by [[w:Hong Sang-soo|Hong Sang-soo]], and it certainly describes "[[w:The Day He Arrives|The Day He Arrives]]," an agreeably meandering exercise that brings some clever French New Wave '''fillips''' and structural repetitions to Hong's characteristically boozy party.}}<!--
-->{{belgekirin}}</noinclude>
k0vpbrfdr9c0fn5dei0p2zacpt9jgaz
bi kitkit
0
843356
6328810
6195343
2026-08-11T00:28:47Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328810
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[bi detay]] û [[bi teferûat]], [[bi hûrgilî]]
#* {{jêder-kovar|ku|jêgirtin=Di çarçeweke gelemper de - ne '''bi kitkit''' (teferrûat)- me termên leşkerî da ber xwe.|kovar=Kurmancî|sernav=Termên Leşkerî 1|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku11.pdf|nivîskar=Rojen BARNAS|nivîskar2=Mizaffer BEGZADE|hejmar=11|sal=1992|rûpel=4}}
#* {{jêder-malper|ku|jêgirtin=Her weha fonksîyon, berpirsi û erkên parlamentên herêmî û ya navendî jî dikanin ji alîyê hiqûqnasîyê ve bêtir '''bi''' hûrgilî û '''kitkit''' bên ravekirin.|nivîskar=Baran Rizgar|sernav=MODELÊN BRÎTANÎ YÊN ÇARESERKIRINA PIRSGIRÊKÊN NETEWÎ|url=https://sites.google.com/a/baranrizgar.co.cc/azadiya-kurdistane/home/modelen-britani-yen-careserkirina-pirsgireken-netewi|malper=baranrizgar.co|sal=2010}}
#* {{jêder-pirtûk|ku|jêgirtin=Şaredarîya Haringey lîsteke payinê ya xanî birêve dibe û dema ku hun serî li xênî bidin, agahîya '''bi kitkit''' dê ji we re bê dayin.|sernav=Ez ê Jiyana xwe Bidomînim|url=https://www.haringey.gov.uk/sites/haringeygovuk/files/7th_edition_-_i_shall_survive-_kurdish.pdf|sal=2007|çap=7|rûpel=23}}
==== Werger ====
{{werger-ser|stûn=2}}
* {{Z|en}}: {{W+|en|detailedly}}, {{W+|en|in detail}}, {{W-|en|in a comprehensive manner}}, {{W+|en|comprehensively}}
* {{Z|tr}}: {{W-|tr|ayrıntılı bir şekilde}}
{{werger-bin}}
7nvjg3xj9ajmw37dobkxh1ammni4ttc
Gotûbêj:derbest
1
844375
6328904
5020681
2026-08-11T11:25:56Z
Balyozbot
7867
/* Derbest tabût? */ sererastkirin
6328904
wikitext
text/x-wiki
== Derbest tabût? ==
* {{jêder-malper|ku|jêgirtin=Cenazeyê Akçelîk bi konvoyeke ji sedan wesayîtî, anîn gundê Şahê yê bajaroka Esnedereyê. Piştî nimêja cenaz ya li mizgefta gund, '''derbest''' li ser milan heta goristana gund hat hilgiritin.|sernav=Gerilayê HPG’ê Akçelîk ber bi rêwîtiya dawî ve hate oxirkirin|url=https://anfkurdi.com/kurdistan/gerilaye-hpg-e-akcelik-ber-bi-rewitiya-dawi-ve-hate-oxirkirin-67759|malper=anfkurdi.com|sal=2016}}--[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 23:07, 20 hezîran 2020 (UTC)
: li vir dibêje erê tabût e: {{pirtûk|url=https://zimannas.files.wordpress.com/2016/07/behdinan-kurmanji.pdf|sernav=behdinan-kurmanji}} --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 08:53, 21 hezîran 2020 (UTC)
== [[Wîkîferheng:Daxwazên peyitandinê|DP]]: Hezîrana 2020==
{{arşîv-ser|dp|nepeyitandî}}
{{fake==|<s>[[derbest]]</s>}}
Ji bo maneya "xeleq" û ji bo maneya "yekser" peyitandin hewce ye. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 21:23, 20 hezîran 2020 (UTC)
: ''Berpirsên rêzdarên Encûmena Senato, Wezareta Derve, Wezareta Bergirî û Navendên cûdayên '''derbest''' bi rewşa cîhan û rojhilata navîn kir, xweşbextane hemû rêzekî bêpayan ji bo gelê Kurdistanê û Hêzên Pêşmerge hebû.''[https://rojevakurd.com/hezen-kurdistani-dive-gaven-pratiki-bene-avetin/ Çavkanî 1]
: ''Ev dîdariya han hemî pîvarên vacayî ji nîr û '''derbest''' ji hevpeyvîneke rateqîn re derbaskir,''[http://www.welateme.net/kurdi/modules.php?name=News&file=article&sid=2578 2]
::Min nikarî wateyak ji wan derxim. Kes ji wan tiştek fêm dike? --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 08:56, 21 hezîran 2020 (UTC)
:{{nepeyitandî}} ji ber tunebûna çavkaniyan jê hatiye birin. bnr [[Pêvek:Bêçavkanî/derbest]].
{{arşîv-bin}}
dkgdds9329udg17ursowg49o44bp8nv
doho
0
845389
6328934
5020699
2026-08-11T11:45:48Z
Balyozbot
7867
sererastkirin
6328934
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}
# {{bnr|duh}}
#* {{jêder-malper|ku|jêgirtin=Helwesta Ewropayê '''doho''' jî ev bû, îro jî ev e.|nivîskar=Ahmed Dere|url=https://www.rudaw.net/kurmanci/opinion/11042013|malper=Rûdaw|dîrok=2013-04-11|sernav=Pêvajoya ‘Çareseriyê’ û Ewropa}}
3s47u4ujdq6nbm7kmuypc09voui8o95
Gotûbêj:bizanebûn
1
845396
6328820
5021746
2026-08-11T00:29:09Z
Balyozbot
7867
/* Rastnivîs */ sererastkirin
6328820
wikitext
text/x-wiki
== Rastnivîs ==
"bizanebûn" an jî "bi zanebûn"? -- [[Bikarhêner:Şêr|Şêr]] ([[Gotûbêja bikarhêner:Şêr|gotûbêj]]) 21:34, 22 tîrmeh 2020 (UTC)
: {{r|Şêr}} Merheba hêja. TEORÎKEN: Bi ya min ev yek girêdayî cureya peyvê diguhere. Ger peyv "rengdêr" be, divê bi hev ve were nivîsandin, lê ger peyv "hoker" be, cuda tê nivîsandin.
: PRATÎKEN: Ez ê ji ser peyva "biqesdî / bi qesdî" biçim, da ku rindtir were têgihîştin.
: 1 - {{jêder-malper|ku|jêgirtin=''Bêguman Swêd '''bi qesdî''' piştgirîya terorîstan nake.''|malper=Radyoya Swêdê|url=https://sverigesradio.se/sida/artikel.aspx?programid=2200&artikel=5291884|sal=2012-10-01|ziman=ku|sernav=Swêd dibêje Tirkî: "Delîlan bîne!"}}
: 2 - {{jêder-malper|ku|jêgirtin=''Digel ku malbata wê li Filistînê dijî hikûmeta Netanyahu teşebûs kir nehêle ku ew bikeve welêt û Tlaîbê ev yek wekî "hewldana biçûkxistina '''biqesdî'''" bi nav kir.''|malper=AA|url=https://www.aa.com.tr/kk/dinya/em-nikarin-dest%C3%BBr%C3%AA-bidin-ku-trump-%C3%BB-netanyahu-rastiy%C3%AAn-b%C3%AArehm-%C3%AAn-dagirkirin%C3%AA-ves%C3%AArin/1560252|ziman=ku|sal=2019-08-20|sernav="Em nikarin destûrê bidin ku Trump û Netanyahu rastiyên bêrehm ên dagirkirinê veşêrin"}} -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 20:36, 23 tîrmeh 2020 (UTC)
52jwis3mqu961i2pjzm5iewlie82wz6
6328822
6328820
2026-08-11T00:30:44Z
Wikihez
7344
Guhartoya [[Special:Diff/6328820|6328820]] yê [[Special:Contributions/Balyozbot|Balyozbot]] ([[User talk:Balyozbot|gotûbêj]]) şûnde kir
6328822
wikitext
text/x-wiki
== Rastnivîs ==
"bizanebûn" an jî "bi zanebûn"? -- [[Bikarhêner:Şêr|Şêr]] ([[Gotûbêja bikarhêner:Şêr|gotûbêj]]) 21:34, 22 tîrmeh 2020 (UTC)
: {{r|Şêr}} Merheba hêja. TEORÎKEN: Bi ya min ev yek girêdayî cureya peyvê diguhere. Ger peyv "rengdêr" be, divê bi hev ve were nivîsandin, lê ger peyv "hoker" be, cuda tê nivîsandin.
: PRATÎKEN: Ez ê ji ser peyva "biqesdî / bi qesdî" biçim, da ku rindtir were têgihîştin.
: 1 - {{jêder-malper|ku|jêgirtin=''Bêguman Swêd '''bi qesdî''' piştgirîya terorîstan nake.''|malper=Radyoya Swêdê|url=https://sverigesradio.se/sida/artikel.aspx?programid=2200&artikel=5291884|dîrok=2012-10-01|sernav=Swêd dibêje Tirkî: "Delîlan bîne!"}}
: 2 - {{jêder-malper|ku|jêgirtin=''Digel ku malbata wê li Filistînê dijî hikûmeta Netanyahu teşebûs kir nehêle ku ew bikeve welêt û Tlaîbê ev yek wekî "hewldana biçûkxistina '''biqesdî'''" bi nav kir.''|malper=AA|url=https://www.aa.com.tr/kk/dinya/em-nikarin-dest%C3%BBr%C3%AA-bidin-ku-trump-%C3%BB-netanyahu-rastiy%C3%AAn-b%C3%AArehm-%C3%AAn-dagirkirin%C3%AA-ves%C3%AArin/1560252|dîrok=2019-08-20|sernav="Em nikarin destûrê bidin ku Trump û Netanyahu rastiyên bêrehm ên dagirkirinê veşêrin"}} -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 20:36, 23 tîrmeh 2020 (UTC)
sxcahzrnt031pwnmoaj5aeatgwiozyc
bi qitûtî
0
845762
6328812
6290080
2026-08-11T00:28:51Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328812
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}
# {{mane?|ku}}
#* {{jêder-pirtûk|ku|jêgirtin=Lê divê heta serê mehê pereyên di bêrîka xwe de '''bi qitûtî''' xerş bikira, deynên nû nekira.|nivîskar=Sirri Ayhan|wergêr=Yaqob Tilermenî|sernav=Dansa Berber|url=https://books.google.com.tr/books?id=MVjjDwAAQBAJ&pg=PA25&lpg=PA25&dq=%22bi+qit%C3%BBt%C3%AE%22&source=bl&ots=hHhBzCUw4P&sig=ACfU3U3mmH3lo0kXGv3HfQHu4ufO8u4-pw&hl=en&sa=X&ved=2ahUKEwiN6tXx6-3qAhWRiVwKHV58BN0Q6AEwBHoECAoQAQ#v=onepage&q=%22bi%20qit%C3%BBt%C3%AE%22&f=false|weşanxane=Na Yayınları|sal=2014|rûpel=25|isbn=9786059017008}}
#* {{jêder-pirtûk|ku|jêgirtin=Niha tişt giş buha ne, ê de mal e, tu bikî nekî ma biwê navê, ma gaz navê, tu bawer nakî, çiqas ez '''bi qitûtî''' îdare dikim, dîsa jî weqek dohnê gazê têra me nake.|nivîskar=Musa Anter|sernav=Birîna Reş|weşanxane=Avesta|sal=1999|çap=3|rûpel=18}}
#* {{jêder-kovar|ku|jêgirtin=Di romaneke nerîtî de bi piranî serlehengek heye û roman di ser wî re dimeşe. Di ber vî lehengî re, lehengên din '''bi qitûtî''' û bi têkiliyên xwe yên ligel serleheng hene, herweku ji bo çîroka sereke bi tenê obje bin. Lê belê di romana pirdeng de leheng “di mercên yeksan de” (Bahtin, 2004: 148) beşdarî diyaloga mezin a romanê dibin.|kovar=Kadim Akademi SBD|sernav=Pirdengî di Romana Mîrname ya Jan Dost de|url=https://dergipark.org.tr/en/download/article-file/386535|nivîskar=Ümran ALTINKILIÇ|cîld=1|hejmar=2|sal=2017|rûpel=98}}
#* {{jêder-malper|ku|jêgirtin=Ez yek ji wan kesên ku ji sala 1970-yî ve ligor pêçêbûnên xwe pey agahiyên Kurdistana Îranê diketim, bo bizanim ka çi li vî parçê Kurdistanê diqewimê", lê me nikarîbû em başbaş bigihin armanca xwe, mijar '''bi qitûtî''' di riya rojnamekê ji vir û nûçeyekê ji dera han digiha me, belê îro roj di riya malperên Internêtê mirov eger bixwazê, dikarê bi hesanî bigihê deng û basên kîjan welatî li dinyayê, nemaze tew ku zimanekî biyanî wek zimanê Ingilîzî têbigihê.|nivîskar=Berzo Mehmûd|sernav=Kurd û Gilobelîzm|url=http://www.welateme.net/kurdi/modules.php?name=News&file=print&sid=2417|malper=welateme.net|sal=2011}}
==== Etîmolojî ====
Ji {{heve|ku|bi|qitûtî}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|tutumluca}}, {{W-|tr|hasislikle}}
{{werger-bin}}
=== Hoker ===
{{hoker|ku}}
# {{rastnivîs|biqitûtî}}
gwu3w7phxr9ljreg97c25u2wetegfma
çirizandin
0
845765
6328892
6322003
2026-08-11T11:25:00Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328892
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çirizandin|form=gerguhêz|niha=çirizîn|borî=çirizand}}
{{lêker|ku|c=x-gh}}
# [[Xwarin]]a [[dendik]]an
#: {{mk|ku|Em ji xwe re dendikan '''diçirizînin'''.}}
#* {{jêder-malper|ku|jêgirtin=Êvaran, li taxa mesîhiyan, ango taxa filehan, jinan ber deriyên xwe avreşandî dikir û berdida germa di hundirê çimentoyê û qîra rê de mayî. Wan sendelî û terebêze datanîn, qehwe an vexwarinên sar vedixwarin, dendikên şebeş û berberoyan '''diçirizandin'''.|nivîskar=Fawaz Husên|sernav=Ermenên bajarê Amûdê di salên 1960-1970yî de|url=https://krd.riataza.com/2015/11/06/ermenen-bajare-amude-di-salen-1960-1970yi-de/|malper=riataza.com|dîrok=06.11.2015}}
#* {{jêder-kovar|ku|jêgirtin=Derewan dike çawa ku dendikan '''biçirizîne''': Bawerî pê nayê kirin|kovar=Ronahî|sernav=FERHENGA BIWÊJAN|nivîskar=Diyar Bohtî|url=https://ronahi.net/ku/wp-content/uploads/2024/01/1131.pdf|hejmar=1131|sal=2024|rûpel=1}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|çitlemek}}
{{werger-bin}}
{{bend}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[Xwarin]]a [[dendik]]an.
#* {{jêder-malper|ku|jêgirtin=Yamîş yanjî '''çirizandin''' ji kelûpelên bingehîn ên ku di vê mehê de tê xwarin.|nivîskar=Anha|sernav=‘Tu bi xêr hatî Remezan’ gelê Misirê dê wiha meha pîroz pêşwazî bike|url=http://www.hawarnews.com/kr/haber/tu-bi-xr-hat-remezan-gel-misir-d-wiha-meha-proz-pswaz-bike-h30532.html|urlya-arşîvê=https://web.archive.org/web/20200728091921/http://www.hawarnews.com/kr/haber/tu-bi-xr-hat-remezan-gel-misir-d-wiha-meha-proz-pswaz-bike-h30532.html|malper=hawarnews.com|sal=2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|çitleme}}
{{werger-bin}}
4xouy5dxjr6ml5pk8pl33t4miajy69e
dirf
0
845915
6328931
6305410
2026-08-11T11:43:10Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328931
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# [[xuyang|Xuyang]]a [[derve]] ya tiştekî.
#* {{jêder-malper|ku|jêgirtin=Di destana Mîrzengî de, Kurdeyatiya Ristemê Zal û malbata Zal bi her awayî û bi her şiklî derdikeve pêş. Ew dibin qehereman û pêlewanên mîtolojîk yên kurdan. Rostem dibe Ristem. Ew û azbata wî, bi '''dirfê''' xwe, bi rabûn û rûnişkandina xwe, bi mêranî, cengewarî, cesaret, xurtî, durustî, dilpakî û bi mêvanperweriya xwe dibin perçeyek civaka kurd.|nivîskar=Paşa Brodrêj|sernav=Ristemê Zal|url=https://rojevakurd.com/risteme-zal/|malper=rojevakurd.com|sal=2011}}
#* {{jêder-pirtûk|ku|jêgirtin=Ez derbasî hundirê qehwê bûm. Çend xort li ser maseyekê rûniştî çay vedixwarin, ji '''dirfa''' wan min zanibû ku ji gundê me ne, lê min dîsa pê dernexist ku kî ne.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=80|isbn=978-605-5585-41-9}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Hevmane ====
* [[dirûv]]
* [[şekil]]
* [[şêwe]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|appearance}}
* {{Z|tr}}: {{W|tr|dış görünüş}}
{{werger-bin}}
3iosw7eq8txez9xy4ulx8ijwuz9vy20
katkirin
0
846124
6329004
6309706
2026-08-11T11:51:55Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329004
wikitext
text/x-wiki
{{binêre lêker|kat kirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[vegotin]], [[behskirin]], [[qalkirin]]
#* {{jêder-malper|ku|jêgirtin=Berhema Kafka ya navdartirîn romana wî Process (Dawe) ye. Dawe ya Kafka, çi ji hêla naverok û bûyerên xwe ve û çi ji hêla formê '''katkirina''' xwe ve, ne romaneke realîst e. Zêdetir xewnekê, kabûsekî ko têda bûyerên behît diqewumin, tîne bîra mirovî.|nivîskar=M. ALÎ KUT|sernav=Franz Kafka ”Li ber qanûnê” 1883–1924|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=32&RubricNr=&ArticleNr=3388|malper=nefel.com|sal=2008}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{pêk|ku|kat|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|telling}} (a story), {{W|en|narration}}
* {{Z|tr}}: {{W|tr|anlatma}}
{{werger-bin}}
90nq2d690gwisi3gxciucrl7btvxuj7
awirtûj
0
846192
6328787
6196319
2026-08-11T00:26:36Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328787
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|awirtûj}}
{{rengdêr|ku}}
# [[awirbaz]]
#* {{jêder-pirtûk|ku|jêgirtin=Pîqabeke dîzel û reng kesk bû, yekî xurt '''awirtûj''' -bawer bikim, navê wî Şerîf bû- li ser direksiyonê rûniştibû.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=81|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Zoro Metînî, bi hunermendîya xwe diltenik, wek mîrekî Kurd '''awirtûj''' û wek şervanekî rengan bêhn fireh, wek zarokekî ku bi lîstoka xwe bilîze, şanaz bû.|nivîskar=Sheymus Özzengin|sernav=Hunermend Zoro Metînî bi qasî hunerê xwe mezin e|url=https://krd.riataza.com/2019/07/11/hunermend-zoro-metini-bi-qasi-hunere-xwe-mezin-e/|malper=krd.riataza.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Bes ku min bidîta çavên '''awirtûj''' ên Gulistanê, bes ku min bidîta dek û dolabên JÎTEM’ê, bes ku min careka din bidîta hovitî, tenêtî, tunebûn û birçitî!|nivîskar=Omer Faruk Baran|sernav=Bila kes netirse, Xwedê jî gotiye ''Min Dît''!|url=https://diyarname.com/news.php?Idx=3349|malper=diyarname.com|sal=2010}}
==== Têkildar ====
* [[awir tûj bûn]]
==== Jê ====
* [[awirtûjî]]
==== Etîmolojî ====
Ji {{qertaf|ku|awir|tûj}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|şahin bakışlı}}, {{W-|tr|keskin bakışlı}}, {{W+|tr|çatık}}
{{werger-bin}}
gvqj0bcn60i3hrtofnrmv6mnyeba0ye
6328841
6328787
2026-08-11T00:41:23Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328841
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|awirtûj}}
{{rengdêr|ku}}
# [[awirbaz]]
#* {{jêder-pirtûk|ku|jêgirtin=Pîqabeke dîzel û reng kesk bû, yekî xurt '''awirtûj''' -bawer bikim, navê wî Şerîf bû- li ser direksiyonê rûniştibû.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=81|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Zoro Metînî, bi hunermendîya xwe diltenik, wek mîrekî Kurd '''awirtûj''' û wek şervanekî rengan bêhn fireh, wek zarokekî ku bi lîstoka xwe bilîze, şanaz bû.|nivîskar=Sheymus Özzengin|sernav=Hunermend Zoro Metînî bi qasî hunerê xwe mezin e|url=https://krd.riataza.com/2019/07/11/hunermend-zoro-metini-bi-qasi-hunere-xwe-mezin-e/|malper=krd.riataza.com|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Bes ku min bidîta çavên '''awirtûj''' ên Gulistanê, bes ku min bidîta dek û dolabên JÎTEM’ê, bes ku min careka din bidîta hovitî, tenêtî, tunebûn û birçitî!|nivîskar=Omer Faruk Baran|sernav=Bila kes netirse, Xwedê jî gotiye ''Min Dît''!|url=https://diyarname.com/news.php?Idx=3349|malper=diyarname.com|sal=2010}}
==== Jê ====
* [[awirtûjî]]
==== Têkildar ====
* [[awir tûj bûn]]
==== Etîmolojî ====
Ji {{qertaf|ku|awir|tûj}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|şahin bakışlı}}, {{W-|tr|keskin bakışlı}}, {{W+|tr|çatık}}
{{werger-bin}}
hz2ofk3k9m2ck63oe3wwiukc9rx0zil
awirtûjî
0
846193
6328788
6297366
2026-08-11T00:26:40Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328788
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[rewş|Rewşa]] [[awirtûj]]bûnê.
#* {{jêder-malper|ku|jêgirtin='''Awirtûjî''' û xwînrijiya çavên te ên nêrgizî, dem kir wek serdema Cengîz Xan ê cengbaz û êrîşkar.|nivîskar=Welat Agirî|sernav=Dîroknasiya Melayê Cizîrî|url=https://krd.riataza.com/2017/08/25/diroknasiya-melaye-ciziri/|malper=krd.riataza.com|sal=2017}}
#* {{jêder-malper|ku|jêgirtin=Ez xebatên xwe yên hunerî bu ruhekî amatorî û li gor armancekê bi rê ve dibim. Li gor min, divê siyaset ne bi cidiyeteke '''awirtûjî''' be; divê karê ku tu dikî cidî bikî.|nivîskar=Hayri Demir|sernav=Demîrtaş pirsên me bersivandin: Moralê me baş e, em bihêz in û natirsin|url=http://www.dipanel.ovh/kr/POLITIKA/content/view/22909?page=14|malper=dipanel.ovh|sal=2017}}
#* {{jêder-kovar|ku|jêgirtin=Di gel hemerengiya çavan, '''awirtûjî''' û çurisîna di çavên Seyda de, di yê Keyo de nabînim.|kovar=Agirî|sernav=KUMBEDÊ GERDÛN İM EZ|url=https://ia903101.us.archive.org/21/items/agiri_074/agiri_074.pdf|nivîskar=Arjen Arî|hejmar=74|sal=2007|rûpel=10}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{paş|ku|awirtûj|-î}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
3pxia18jla5fgcxzalajgid9vylfxpc
bîter bûn
0
846250
6328824
6196327
2026-08-11T00:31:37Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328824
wikitext
text/x-wiki
{{binêre navdêr|bîterbûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|bîter bûn|form=negerguhêz|niha=b|borî=bû|pêşgir=bîter|valahî=erê}}
{{lêker|ku|c=h-ngh}}
# [[peyde bûn]], [[dabîn bûn]], [[ray bûn]]
#* {{jêder-pirtûk|ku|jêgirtin=Gelek caran dengê şerên wan dihat, li hev didan, li jinên xwe didan. Lêdaneke sosret. Çar heb bira bûn, ne dihatin dawetekê, ne li şînekê '''bîter dibûn'''.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=83|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Bajarê Kela Dimdimê mîna bajarên qedîmî yên mayîn ew qas ne mezin bû, lê ev bajar jî êdî bûbû bajarekî mezin û her tişt tê de '''bîter dibû'''.|nivîskar=Takî Çîftsuren|sernav=Dimdim: Romana mêran û mêranîyê|url=https://www.gazeteduvar.com.tr/kitap/2020/07/22/dimdim-romana-meran-u-meraniye/|malper=gazeteduvar.com.tr|sal=2020}}
#* {{jêder-malper|ku|jêgirtin=Hebû tunebû, rehmet li dê û bavê hazir û guhdaran û bi tevê pepûk û xîzanan, ji xeynê dizên xiyaran be. Di dewr û zemanekê de padişahek hebûye. Rojekê derdek lê '''bîter dibe'''. Çiqas hekîm û lokmanê wî welatî hene tînin ser, lê tu kesek ji derdê wî re çareyek nabîne.|nivîskar=Yasemîn Elban|sernav=Henek jî bi kurdî xweş in|url=https://krd.riataza.com/2017/12/31/henek-ji-bi-kurdi-xwes/|malper=riataza.com|sal=2017}}
==== Etîmolojî ====
Ji {{heve|ku|bîter|bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|bulunmak}}, {{W+|tr|sağlanmak}}, {{W-|tr|temin edilmek}}
{{werger-bin}}
a4e420z5olo90ibb4d11fuf2ldcxdhu
kemame
0
846291
6329005
6309851
2026-08-11T11:51:57Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329005
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:A surgical mask (2017).jpg|thumb|Kemame]]
{{navdêr|ku|z=m}}
# Maskeyên xelik an jî [[nojdar]] [[danîn|didanin]] ber [[dev]] û [[difin]]a xwe ji bo [[xweparastin]]ê.
#* {{jêder-malper|ku|jêgirtin=Beşîr wiha berdewam kir: "Ez bi xwe tevahiya perspektîvan tînim cih. piştî belavkirina madeyên xwarinê ez vedigerim mal. Tevî ku '''kemame''' û lepikan bikar tînim. Ez bang li şêniyan dikim ku tenê ji bo pêwîstiyan ji mal derkevin."|sernav=Şêniyên Helebê: Xweparastin bi hezar carî ji dermankirinê çêtir e|url=https://hawarnews.com/kr/haber/sniyn-heleb-xweparastin-bi-hezar-car-ji-dermankirin-ctir-e-h29723.html%C5%9E%C3%AAniy%C3%AAn?fbclid=IwAR3XtUAyIA8v8eRd5dJr8gnZoU24RB0jN-RSjKVoIVtFD1s8V50ZCLOtFdw|malper=hawarnews.com|sal=2020}}
#* {{jêder-malper|ku|jêgirtin={{ku-Arab|ل ژێر ناڤێ (ئەرێ چەند جورێن کەمامان هەنە ؟) کارەکێ ڤیدیویى هاتیە ئامادەکرن ژبوى ساخلەمیا گشتى و خەلک بزانیت چ جورە '''کەمامە''' بکاربینیت و ل چ دەم بکاربینیت ژلایێ قوتابیێ پشکا کارگێرى تەندروستى ئەیهان سامى}}|url=https://www.dpu.edu.krd/page/ku/3492/|malper=dpu.edu.krd}}
#*: ''Li jêr navê (erê çend curên kemaman hene?) Karmekî vîdîwîyî hatîye amadekirin ji boy saxlema giştî û xalek bizanît çi cure kemame bi kar bînît û li çi dem bi kar bînît ji alîy kutabîy pişka kargêrî tendirustî eyman samî.''
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Hevmane ====
* [[rûpoş]]
* [[mask]]
* [[demamik]]
==== Têkildar ====
* [[nojdarî]]
==== Etîmolojî ====
Ji {{deyn|ckb|ku|کەمامە}} ji {{ji|ar|ku|الكمامة}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|facemask}}
* {{Z|tr}}: {{W|tr|maske}}
{{werger-bin}}
mb6uqmht60hra4zjv75nci3bmb4lwvx
çirçirandin
0
855588
6328891
6153528
2026-08-11T11:24:57Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328891
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çirçirandin|form=gerguhêz|niha=çirçirîn|borî=çirçirand}}
{{lêker|ku|c=h-gh}}
# [[çirandin]]
#* {{jêder-malper|ku|jêgirtin=Di vî warî de bi xwe gelek pêşniyarên min hebûn. Min ji wan re gelek pêşniyar kirin, min hewl da, min xwe '''çirçirand''' lê mixabin çênebû. Lê tiştê ku ez dibêjim tiştekî gelekî dîrokî û berfireh e.|nivîskar=Kawa Nemir|sernav=Kawa Nemir: Em tenê behsa ezberên xwe dikin|url=https://mevlutoguz.tumblr.com/post/175690109600/kawa-nemir-em-ten%C3%AA-behsa-ezber%C3%AAn-xwe-dikin|malper=mevlutoguz.tumblr.com|sal=2018}}
==== Werger ====
{{werger-ser}}
* {{Z|fi}}: {{W+|fi|hienostella}}
* {{Z|tr}}: {{W+|tr|abartmak}}, {{W+|tr|yırtmak}}
{{werger-bin}}
{{bend}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[çirandin]]
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|abartma}}, {{W+|tr|yırtma}}
{{werger-bin}}
tevrb5bekp8tf56qk4uylcpw78qpi7p
avatir
0
855622
6328784
6196394
2026-08-11T00:26:19Z
Balyozbot
7867
/* Hevok */ sererastkirin
6328784
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hevok ===
{{hevok|ku}}
# Bersiva ku yek didê wextê ku kesek ji yekî re dibêje ''[[mala te ava]]!''.
#* {{jêder-malper|ku|jêgirtin=Zana Farqînî, gelek spas ji bo bersivdayîna pirsan. Mala te ava..!<br>'''Avatir'''!|nivîskar=SALIHĘ KEVIRBIRÎ|sernav=Xwediyê Ferhenga Kurdî-Tirkî ya ji 166 hezar peyvî pêk tê Zana Farqînî: "Nêçîrvaniya Peyvan hiseke xweş li min peyda dike!"|url=http://www.oocities.org/mehname2004/54/diyari1.html|malper=oocities.org|sal=2004}}
#* {{jêder-malper|ku|jêgirtin=-Belê… Ez gelek kêfxweş bûm bi sohbeta me… Mala te ava…<br>Ş.F.: Ez jî… A te '''avatir'''… Ez jî pirr kêfxweş bûm ku min hûn nas kirin, ez hatim ciyê we dît.|nivîskar=Şêxo Fîlîk|sernav=Şêxo Fîlîk: Nivîsandin ne tenê dilrehetkirin an jî derbirînek e.|url=https://inanolo.blogspot.com/2016/03/|malper=inanolo.blogspot.com|sal=2016}}
#* {{jêder-kovar|ku|jêgirtin=Zor spas ezbenî, mala te hezar caran ava be!<br>'''Avatir''' Salihê birazî, tu li ser herdu çavê min hatî...|kovar=POPKURD|sernav=DENGBÊJ ZAHIRO: DENGBÊJIYA BERÊ NEMAYE!|url=https://popkurd.wordpress.com/2018/09/12/popkurd-2/|nivîskar=Salihê Kevirbirî|hejmar=2|sal=2018|rûpel=27}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Formeke rengdêrê ===
{{rengdêr|ku|form=erê}}
# {{komparatîv|ku|ava}}
qmccr56oz1qbj5i8uy0wrbl4h9bn2qx
hûtê heftserî
0
862880
6328990
6196412
2026-08-11T11:51:23Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328990
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# {{f|ku|mîtolojiya kurdî}} [[cinawir|Cinawirekî]]/ê mezin di [[çîrok]]ên [[kurdî]] yên [[gelerî]] de.
#* {{jêder-malper|ku|jêgirtin='''Hûta heftserî''' ji xewê radibe, çavsor dibe û dibêje bêhna merivan tê. Hût dike ufe uff û kufe kuffa wê, radibe bi dû qîzikê dikeve.|nivîskar=Mordem Zel|sernav=Qîzika Sêwî Û Hûta Heftserî|url=http://candname.com/qizika-sewi-u-huta-heftseri/|malper=candname.com|sal=2018}}
#* {{jêder-malper|ku|jêgirtin=Surreyalîzim di asta xwe ya herî bilind de çîrokên me yên gelêrî de rû dide. Weke mînak, ew '''hûtê heftserî''' yê ku di çîrokên pîrik û kalikên me de fîgûrekî surreyale.|nivîskar=ivîsandin li ba min encama şewata rih e|sernav=Helîm Yûsiv|url=https://diyarname.com/news.php?Idx=2200|malper=diyarname.com|sal=2009}}
#* {{jêder-malper|ku|jêgirtin=Erdogan bûye cinawir, bûye '''hûtekî heftserî''', kî derdikeve ber dixwe; dide girtin, ji kar davêje.|nivîskar=Zinarê Xamo|sernav=Erdogan bûye hûtê heftserî|url=http://zinarexamo.blogspot.com/2016/07/erdogan-buye-hute-heftseri.html|malper=zinarexamo.blogspot.com|sal=2016}}
==== Têkildar ====
* [[gurê manco]]
* [[Teyrê Ecelê]]
* [[Xalê Gurgur]]
==== Etîmolojî ====
[[hût]] + [[-ê]] [[heft]] + [[ser]] + [[-î]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
94504785dp96fqd6rzj6tz67r5w3pcu
ji guhê şeytên ketin
0
863141
6328998
6196413
2026-08-11T11:51:40Z
Balyozbot
7867
/* Biwêj */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328998
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Biwêj ===
{{biwêj|ku}}
# {{f|ku|Amûdê}} ji bo wan kesên ku [[têra xwe heye|têra xwe hene]], zîrek in, [[guhên (yekî) livîn|guhê wî dilivin]] û zêde şeytaniyan dike tê gotin
#* {{jêder-malper|ku|jêgirtin=Yabo Amûdî '''ji guhê şeytên ketine'''.|nivîskar=Rupela.Qamislo|sernav=Yabo Amûdî ji Guhê şeytên ketine|url=https://www.facebook.com/Rupela.Qamislo/posts/1441618085994745|malper=facebook.com|sal=2019}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
jolkrjk5mfnfc9wfq4ubzsyvgfnyu0g
ajobarî
0
871957
6328771
6296347
2026-08-11T00:24:59Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328771
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[rewş|Rewşa]] [[ajobar]]bûnê
# ''([[leşkerî]], [[moşek]])'' kontrolbarî, moşekên ku [[karîn|dikarin]] bên kontrolkirin an alîkirin
#* {{jêder-malper|ku|jêgirtin=TOS-1A, şiklê nûjenkirina pergala TOS-1 Buratino ye, ku di sala 1995an de ji bo artêşê hat radestkirin. Şiklê dawiyê yê pergala termobarîk, bi pergala firandinê ya pêşketî û '''ajobariya''' otomatîk hatiye teçhîzatkirin. Wek muhîmat moşekên bêajobarî yên giran tên bikaranîn.|sernav=Buratinoya' nû|url=https://vid1.ria.ru/ig/sip/uvzs/uvz-ch1-mobile-ku/|malper=vid1.ria.ru}}
#:
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[bêajobarî]]
==== Etîmolojî ====
Ji {{paş|ku|ajobar|-î}}
==== Werger ====
{{werger-ser||1}}
* {{Z|en}}: {{W+|en|driveability}}, {{W+|en|rideability}}, {{W+|en|drivability}}, {{W+|en|spreadability}}, {{W+|en|arability}}
* {{Z|tr}}: {{W-|tr|sürülebilirlik}}
{{werger-bin}}
{{werger-ser||2}}
* {{Z|en}}: {{W+|en|guidance}}
* {{Z|tr}}: {{W+|tr|güdüm}}<ref>{{Zana Farqînî|r=33}}</ref>
{{werger-bin}}
=== Rengdêr ===
{{ku-tewîn-rd|ajobarî}}
{{rengdêr|ku}}
# ''([[leşkerî]], [[moşek]])'' [[kontrolbar]], fuzeyên ku dikarin bêne alîkirin, kontrolkirin, birêvebirin
#* {{jêder-malper|ku|jêgirtin=Fuzeyên '''ajobarî''' yên di destê ASAyê de li dijî wesayîtên leşkerî û armancên din ên leşkerî têne bikaranîn ku di destê ASAyê de hene.|sernav=Artêşa Azad bi fuzeyên ajobarî êrîşî mîlîsên rûsî kir|url=http://www.peyamakurd.com/kurmanci/Cîhan/suriye-artesa-azad-bi-fuzeyen-ajobari-erisi-milisen-rusi-kir|malper=peyamakurd.com|sal=2019}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|guided}}
* {{Z|tr}}: {{W+|tr|güdümlü}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
mp1yu5mrxlp54fp6k8pddvjatxyx0hp
ketin heyrê
0
872799
6329013
6290377
2026-08-11T11:52:14Z
Balyozbot
7867
/* Lêker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329013
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=b-ngh}}
# {{mane?|ku}}
#* {{jêder-pirtûk|ku|jêgirtin=Bavê rebên serê zeviyê tirpan kişandiye tî, betilî hêviya avê b»ye. Lê zarok qet '''neketiye heyrê'''. Ji xwe re leyîstiye heya Xwedê ew kiriye kevir li vir daniye.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=84|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Baş e, eze ji Penvîz re niviştek çekim ku guleyen çekan ber bi wî ve neyen, heke ben jî bi saya nivişte we cîde bibin xwelî. Le, tişteke din hey e… Ez gavek bere ketim mitale û '''ketim heyra''' vî tiştî.|sernav=ÇÎROKA ÎMAM Û PERWÎZ|url=https://kurdologbeg.wordpress.com/2019/08/22/ciroka-imam-u-perwiz/|malper=kurdologbeg.wordpress.com|sal=2019}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji min ne hat car din berhev bikim bixim tûrik<br>Ez '''ketim heyra''' bêçariyê<br>Dotên gundê ma hatin<br>Li galgal û gotinan civiyan<br>Yek bi yek dane hev û keniyan|nivîskar=Medeni ferho|sernav=Hey Gerîlla|url=http://www.arsivakurd.org/images/arsiva_kurd/pirtuk/pirtuken_kurdi/medeni_ferho/hey_gerilla.pdf|weşanxane=weşanên ABeCe|sal=1994|rûpel=70}}
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W|fr|être désarmé}},<ref name="kurmanci31">{{kovar|kovar=Kurmancî|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku31.pdf|sernav=Peyvên Stranên folklorî|nivîskar=M. Emîn NAROZÎ|hejmar=31|sal=2002|rûpel=6|ziman=ku}}</ref> {{W|fr|ne pas savoir quoi faire}}<ref name="kurmanci31" />
* {{Z|en}}: {{W|en|be disarmed}},<ref name="kurmanci31" /> {{W|en|not to know what to do}}<ref name="kurmanci31" />
* {{Z|tr}}: {{W|tr|ne yapacağını bilmemek}},<ref name="kurmanci31" /> {{W|tr|çaresiz olmak}}<ref name="kurmanci31" />
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
gfabw5l6rdu32bvhq5fzu9126s9wvk6
hişkalav
0
872800
6328986
6308795
2026-08-11T11:51:14Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328986
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|kompûternasî}} [[qet|Qetên]] [[kombers]]an.
#* {{jêder-malper|ku|jêgirtin=Gava vedibe wekî pergala xebatê ya Wîndowsê vedibe, ji ber ku gelekî tiştên li ser wîndowsê jê derxistine û çend tiştên biçûk lê bar kirine lewma '''hişkalavekî''' xurt hewce nake û dixebite. 2GB RAM jê re bes e.|nivîskar=Rûsipî|sernav=Hiren's BootCD PE (Ji bo Kombersê Çenteyê Rewşa Lezgîn)|url=https://teknist.xyz/page/view-post?id=24|malper=teknist.xyz|sal=2019}}
#* {{jêder-malper|ku|jêgirtin=Pc Medik ji bo çareserkirina pirsgirêkên '''hişkalav''' û bernameyan eyarên kompîtura we vediherîne…|sernav=Veherîner-Regstry|url=https://bernamegeh.wordpress.com/category/regstry/|malper=bernamegeh.wordpress.com}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Dijmane ====
* [[nermalav]]
==== Etîmolojî ====
Ji {{pêk|ku|hişk|alav}}. {{yekser|en|ku|hardware}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Hardware|m}}
* {{Z|az}}: {{W|az|aparat təminatı}}, {{W|az|avadanlıq}}
* {{Z|be}}: {{W|be|апаратнае забеспячэнне}}, {{W|be|абсталяванне}}
* {{Z|bn}}: {{W|bn|হার্ডওয়্যার}}
* {{Z|bg}}: {{W|bg|хардуер|n}}
* {{Z|cs}}: {{W|cs|hardware|n}}
* {{Z|da}}: {{W|da|hardware}}
* {{Z|id}}: {{W|id|perangkat keras}}, {{W|id|peranti keras}}, {{W|id|peralatan}}
* {{Z|eo}}: {{W|eo|aparataro}}
* {{Z|fa}}: {{W|fa|سختافزار}}
* {{Z|fi}}: {{W|fi|laitteisto}}, {{W|fi|hardware}}, {{W|fi|rauta}}, {{W|fi|hardis}}
* {{Z|fr}}: {{W|fr|matériel|n}}
* {{Z|gd}}: {{W|gd|bathar-cruaidh|n}}
* {{Z|hi}}: {{W|hi|हार्डवेयर|n}}
* {{Z|nl}}: {{W|nl|hardware}}
* {{Z|io}}: {{W|io|hardwaro}}, {{W|io|aparataro}}
* {{Z|en}}: {{W|en|hardware}}
* {{Z|ga}}: {{W|ga|crua-earraí}}
* {{Z|it}}: {{W|it|hardware|n}}
* {{Z|ja}}: {{W|ja|ハードウェア}}, {{W|ja|ハード}}
* {{Z|jv}}: {{W|jv|ꦥꦶꦫꦤ꧀ꦠꦶ ꦏꦱꦂ}}
* {{Z|yue}}: {{W|yue|硬件}}
* {{Z|ca}}: {{W|ca|maquinari|n}}
* {{Z|ko}}: {{W|ko|하드웨어}}, {{W|ko|굳은모}}
* {{Z|lv}}: {{W|lv|aparatūra}}
* {{Z|lt}}: {{W|lt|aparatūra}}, {{W|lt|techninė įranga}}, {{W|lt|aparatinė įranga}}
* {{Z|ms}}: {{W|ms|perkakasan}}
* {{Z|mt}}: {{W|mt|ħardwer|n}}
* {{Z|cmn}}: {{W|cmn|硬件}}, {{W|cmn|硬體}}, {{W|cmn|硬体}}, {{W|cmn|硬設備}}, {{W|cmn|硬设备}}
* {{Z|mi}}: {{W|mi|pūmārō }}
* {{Z|hu}}: {{W|hu|hardver}}
* {{Z|nan}}: {{W|nan|硬體}}, {{W|nan|硬体}}
* {{Z|nrf}}: {{W|nrf|hardware|n}}
* {{Z|no}}: {{W|no|maskinvare|n}}
* {{Z|uz}}: {{W|uz|apparat taʻminot}}
* {{Z|pl}}: {{W|pl|sprzęt|n}}
* {{Z|pt}}: {{W|pt|hardware|n}}
* {{Z|ro}}: {{W|ro|hardware}}, {{W|ro|aparatură|m}}, {{W|ro|aparataj}}
* {{Z|ru}}: {{W|ru|аппарату́ра|m}}, {{W|ru|хардве́р|n}}, {{W|ru|аппара́тное обеспече́ние}}, {{W|ru|обору́дование}}
* {{Z|sh}}: {{W|sh|чврстовље}}, {{W|sh|тврдовље}}, {{W|sh|стројевина}}, {{W|sh|тврдотворина}}, {{W|sh|скло̏по̄вље}}, {{W|sh|ха̏рдве̄р|n}}, {{W|sh|рачунална склоповска подршка|m}}, {{W|sh|стројна опрема|m}}, {{W|sh|čvrstovlje}}, {{W|sh|tvrdovlje}}, {{W|sh|strojevina}}, {{W|sh|tvrdotvorina}}, {{W|sh|sklȍpōvlje}}, {{W|sh|hȁrdvēr|n}}, {{W|sh|računalna sklopovska podrška|m}}, {{W|sh|strojna oprema|m}}
* {{Z|es}}: {{W|es|hardware|n}}, {{W|es|soporte físico|n}}
* {{Z|sv}}: {{W|sv|hårdvara}}, {{W|sv|maskinvara}}
* {{Z|th}}: {{W|th|ฮาร์ดแวร์}}
* {{Z|tr}}: {{W|tr|donanım}}<ref>{{pirtûk|nivîskar=Komîsyon|sernav=FERHENGA ZARAVÊN TEKNÎKÎ: Ferhenga Kurdî-Tirkî-Îngilîzî ya Teknîkî|sal=2014|rûpel=62|isbn=9786050106213|ziman=ku}}</ref>
* {{Z|tk}}: {{W|tk|apparat üpjünçiligi}}
* {{Z|uk}}: {{W|uk|апаратне забезпечення}}
* {{Z|vi}}: {{W|vi|cương liệu}}, {{W|vi|phần cứng}}, {{W|vi|phần máy}}
* {{Z|el}}: {{W|el|υλισμικό}}{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
lht5d0ynynqhqye0uzu7bgne9lr3ylv
manaş
0
872840
6329048
6311608
2026-08-11T11:53:30Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329048
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[qad]], [[meydan]]
#: '''''Manaşa''' hespan''
#* {{jêder-malper|ku|jêgirtin=Min bi xwe di zarokatiya xwe de, bi çavê serê xwe ev rewişt dîtin bê çawa lingê xort, mêr, navsere û pîrên gundiyan, li '''manaşa''' gundî, li ber çavê jin zarok û keçên qerd, berjor dikirin, dixistin darê feleqeya bav û kalên xwe, bi quretiyeke nemrûdane, şelpinî dihanîn ji binê piyê wan, orînî ji binê kezeba wan.|nivîskar=Hesenê Metê|sernav=NÎŞANEKE VEJÎNA EDEBIYATA KURDÎ|url=http://www.angelfire.com/journal2/mehname/hejmar43/nirxandin1.html|malper=angelfire.com}}
#* {{jêder-kovar|ku|jêgirtin=Piştî derketina berhemên mîna roman, hîkaye, helbest, novel, rojnivîsk û cerîbînan, cûreyên metnên zanistî û akademîk ên mîna meqale û lêkolînan jî bere bere derdikevin '''manaşa''' ronahiyê. |kovar=Nûpelda|sernav=Vercacêkerdena Gramerê Zazakî û Kurmancî|url=https://www.kurdipedia.org/files/relatedfiles/2016/97457/0022.PDF?ver=131225476227574547|nivîskar=Ayhan Meretowar|hejmar=22|sal=2016|rûpel=28}}
#* {{jêder-malper|ku|jêgirtin=Hin aliyên ergenekonî û nîjadperest, di '''manaşê''' de sekinîne û li pey lawazbûna Erdogan in.|nivîskar=Fehim IŞIK|sernav=HILBIJARTIN JÎ, ŞER JÎ LI BER DERÎ NE|url=http://rojnameyanewroz2.com/hilbijartin-ji-ser-ji-li-ber-deri-ne-12405.html|malper=rojnameyanewroz2.com/|sal=2017}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|square}}, {{W|en|maidan}}, {{W|en|arena}}, {{W|en|place}}
* {{Z|tr}}: {{W|tr|meydan}}, {{W|tr|alan}}
{{werger-bin}}
tbr6c666d2x6ohcasoditc5x9zzmmdw
dirgan
0
872845
6328932
6305411
2026-08-11T11:43:18Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328932
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:CompostBinTube wb.jpg|thumb|150px|'''Dirganek''']]
{{navdêr|ku|z=m}}
# Amûrek wek merran lê devtilî ye ku pê kewş tê hevdan û tê avêtin patozê.
#* {{jêder-pirtûk|ku|jêgirtin=Torbe bir û danî ber derî, zivirî hat. Dîsa '''dirgan''' xwe da dest xwe nola qet ez ne li wê derê bim dest bi xebata xwe kir.|nivîskar=Mihemed Şarman|sernav=Pirça Winda|cîh=Stembol|weşanxane={{w|Weşanên Avesta|Avesta}}|sal=2016|çap=2|rûpel=8|isbn=978-605-5585-41-9}}
#* {{jêder-pirtûk|ku|jêgirtin=Hildan das û kêlendî<br>Hildan '''dirgan''' û tevnî<br>Hildan mêkut, hildan stûn<br>Li bestekê berev bûn|nivîskar=Têmûrê Xelîl|sernav=Antolojiya 35 Helbestvan û Nivîskarên Kurd ên Sovyeta Berê|weşanxane=Na yayinlari|sal=2014|rûpel=210|isbn=9786059017039}}
#* {{jêder-malper|ku|jêgirtin=Peyva ”milêb”ê, 10 navên xwe yên cuda hene. Wek mînak: sêgulî, milêb, milhêb, şene, '''dirgan''', sêtilî, duguh, çitel, pêçok, neperûşk.|nivîskar=Zeynulabidîn Zinar|sernav=DILQÊ MEDRESEYA KURDÎ DI WÊJEYA KURDÎ DE – 7|url=http://buyerpress.com/kurdi/?p=13965|malper=buyerpress.com|sal=2018}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Hevmane ====
* [[milêb]]
==== Etîmolojî ====
Ji {{ji|el}} {{g|el|δικράνι}}
<small>'''Çavkanî:''' {{kovar|kovar=Kurmancî|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku49.pdf|sernav=Peyvên yûnanî di kurdî de|nivîskar=Rojda AZÎZOGLU|hejmar=49|sal=2011|rûpel=3|ziman=ku}}</small>
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W|fr|fourche}}<ref name="kurmanci49">{{kovar|kovar=Kurmancî|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku49.pdf|sernav=Peyvên yûnanî di kurdî de|nivîskar=Rojda AZÎZOGLU|hejmar=49|sal=2011|rûpel=3|ziman=ku}}</ref>
* {{Z|en}}: {{W|en|hayfork}},<ref name="kurmanci49" /> {{W|en|pitchfork}}<ref name="kurmanci49" />
* {{Z|tr}}: {{W|tr|dirgen}}<ref name="kurmanci49" />
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
41a6ikq7kba84xokta9m0hk6w67qpup
barebar kirin
0
872894
6328795
6196442
2026-08-11T00:27:22Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328795
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|barebar kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=barebar|valahî=erê}}
{{lêker|ku|c=h-gh}}
# Bi awayekî qebe û nexweş deng derxistin, qîrîn
#* {{jêder-malper|ku|jêgirtin=Luigi ji Yehowa re dua kir ku ew alî wî bike ku ew kontrola xwe winda neke. Luigi dixwest wî sakîn bike, lê nafîle bû. Piştî ku Luigi melûmatên sîgortaya wî nivîsî, zilam hê '''barebar dikir''', û Luigi jî çû.|sernav=Xwegirtin – Sifateke Muhîm|url=https://www.jw.org/kmr-x-rd/kitebxane/kovar/birca-cavderiye-capa-lekoline-ilon-2017/xwegirtin/|malper=jw.org}}
#* {{jêder-malper|ku|jêgirtin=Erbeqan di hilbijartinan da li kuçe û kolanan digerîya û '''barebar dikir''':<br>-Nimêj stûna olî û cîhad jî zîrwa wê ye! Em sîyaset nakin, em bi cîhadê mijûl in!|sernav=Hûn hemû zindîq in!|url=https://pasabrodrej.blogspot.com/2019/01/hun-hemu-zindiq-in.html|malper=pasabrodrej.blogspot.com|sal=2019}}
==== Etîmolojî ====
Ji {{heve|ku|barebar|kirin}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
0rt8t9qloglm23hpbv5mp67idrbh7z6
Gotûbêj:lêgerk
1
872927
6329044
5020763
2026-08-11T11:53:22Z
Balyozbot
7867
/* Jêgirtin */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329044
wikitext
text/x-wiki
{{r|Balyozxane}} Te çima agahdarîyê jê bir? -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 17:09, 29 tebax 2020 (UTC)
:{{r|Guherto}} Ne hewce ye. 3 çavkanî heye loma peyveke kurdî ye. --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 17:10, 29 tebax 2020 (UTC)
::Ez ê serê xwe xwim. -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 17:11, 29 tebax 2020 (UTC)
:::Çawa? --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 17:13, 29 tebax 2020 (UTC)
::::Yanî ez ji vî tîştî eciz im. Ez weke we nafikirim li ser kurdîtîya peyvên çêkirî û yên înglîzî ku jixwe kurdîya wan hene. -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 17:15, 29 tebax 2020 (UTC)
::::: {{r|Guherto}} Pismam ez jî weke te difikirim ji bo peyvên rûniştî. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 17:18, 29 tebax 2020 (UTC)
:::::: {{r|Guherto}} Lêbelê ev yek jî heye ku mîsalen yek nivîsek dixwîne û leqayî vê peyvê dibe, maneya wê pê dernaxe û li ferhengan dinêre. Çavkaniya vê peyvê jî heye, hema bila li vir bimîne çi zerera vê heye qey. Yanî ger bêjî ev peyv ji bo peyvekî din jî dikare were bikaranîn, an maneyeke vê yê din jî heye, wê jî wek maneya duyem tevlî bike, lê divê ji bo wê maneyê jî çavkanî hebin. Û ger peyvên li ser Wîkîferhengê pir pir zêde bibin û tevlîhev bibin, an peyvên kêmçavkanî pir zêde bibin, em dikarin pîvekên tevlîkirinê biguherînin û krîteran bilind bikin, mîsalen bêjin ku ''"5 çavkaniyên înternetî wek yek çavkaniyek pêbawer tê hesabê û divê ji bo her peyvê bi kêmanî 3 çavkaniyên cuda ên pêbawer hebin."'' Yanî bi vê yekê ewqasî aciz nebe, ev pîvek di demên pêş de ku hewce bû helbet wê biguherin jî. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 17:43, 29 tebax 2020 (UTC)
:::::::{{r|Bikarhêner}} Ez ne xwestibûm jê bibim, min tenê agahdarîyek lê zêde kir ku ev peyv di zimanê kurdî de nîne û tenê ji bonî yek malper hatîye bikaranîn (wa vê peyvê çêkirîye), lê hêjayê [[Bikarhêner:Balyozxane|Balyozxane]] agahdarîyê jê bir. -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 17:54, 29 tebax 2020 (UTC)
== Jêbirin ==
{{r|Bikarhêner|Guherto|Ghybu}} Bi ya min ev peyv li gorî [[Wîkîferheng:Pîvekên tevlîkirinê]] ne derbasdar e. Divê were jêbirin ji ber ku hemû çavkanî anonîm in, nivîskarê wan ne diyar e. Fikrê we? --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 17:21, 17 îlon 2020 (UTC)
:Tu fikirê min dizanî :) Kêfxweş bûm ku tu weke min difikirê. (Min gotibû "ez ne xwestibûm jê bibim" ji ber ku ez xwestibanim jê bibim jî hûnê gotibanin "çavkanî heye". Di rastîyê de ez dixwestim jê bibim lê guhertina min ne bi daxwaza jêbirinê hatibû çêkirin.) -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 17:22, 17 îlon 2020 (UTC)
::Na, zimanî kurdî tenê nivîskar çênakin, gela kurdî (civak) çêdike; facebook, twitter û malperên teknîkî jî pencereyeke li ser civaka kurdî ne. Li vira pirsgirêk ew peyv di nav civaka kurdî de tê bikaranîn an na? Ji bo peyvên teknîkî jî malperên teknîkî bi min çavkaniyeke baş e.--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:13, 17 îlon 2020 (UTC)
:::Li ser wikiya fransî van şablonan çêkirine: [[:fr:Catégorie:Modèles de fréquence]], [[:en:hapax_legomenon#English]]--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]], ...) 22:24, 17 îlon 2020 (UTC)
::::{{r|Ghybu}} Li vir [https://fr.wiktionary.org/wiki/Wiktionnaire:Critères_d’acceptabilité_des_entrées] translate: [https://translate.googleusercontent.com/translate_c?depth=1&pto=aue&rurl=translate.google.com&sl=fr&sp=nmt4&tl=en&u=https://fr.wiktionary.org/wiki/Wiktionnaire:Crit%25C3%25A8res_d%25E2%2580%2599acceptabilit%25C3%25A9_des_entr%25C3%25A9es&usg=ALkJrhi9PifQvqQtTHzCt5UOPRp1Avp6cg#Quand_un_mot_fait-il_partie_d%E2%80%99une_langue_?] behsa attestion/çavkaniyan dikin lê çend çavkanî hewce ye, çavkanî divê li gor çi be behsa van nakin. Li gorî çi em ê nadîr/gelek nadîr bi kar bînin min fêm nekir. --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 22:55, 17 îlon 2020 (UTC)
:::::{{r|Bikarhêner}} ''Li gorî çi em ê nadîr/gelek nadîr bi kar bînin min fêm nekir.'' Li gorî hejmera çavkaniyan ku tên dîtin :) Herwiha ew ji bo peyvên ku ''gelek nadîr'' (hapax: çavkaniyek) in tenê peyvên ku bi nivîskarên navdaran hatine bikaranîn qebûl dikin.--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:08, 19 îlon 2020 (UTC)
:{{r|Ghybu}} Misal peyva [[bîrkok]] tenê ji hêla Mehmed Uzun ve hatiye bikaranîn, ti çavkaniyên din tune ye, Zana Farqînî jî di nivîseke xwe de dibêje min ew peyv nexist ferhenga xwe. Li gor rêbaznameya niha divê jê bibin. Lê Mehmed Uzun jî pir navdar e. Bi ya min em nadir/gelek nadir piştî attestionê bi kar bînin. Misal [[bastannas]] gelek kêm tê bikaranîn lê peyitandî ye. --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 01:14, 19 îlon 2020 (UTC)
::Erê {{=)}}--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:21, 19 îlon 2020 (UTC)
:::Erê lê lêgerk nepeyitandî ye loma jêbirin hewce ye {{=D}} --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 01:24, 19 îlon 2020 (UTC)
::::Mixabin, erê {{bêhêvî}}. Li gorî te {{w|Egerin}} çavkaniyek baş nîne?--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:27, 19 îlon 2020 (UTC)
:::::{{r|Ghybu}} Pirsgirêk ne ew e. Tenê 3 çavkanî hene û her sê jî ji nivîskarên anonîm in. Yek ji van jî Facebookê û ew jî qet nayê hesibandin. --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 02:43, 19 îlon 2020 (UTC)
:::::: {{r|Balyozxane}} Pismam malpera ''teknistan.com-ê'' ne malperekî anonîm e. Di nivîsan de beşa ''author'' jî heye. Ji xeynî wî bi min anonîmbûn ji bo malperên wekî Facebookê filan derbasdar e, lê di teknistan.com-ê de nivîsên bêkalîte tinebûn. Ev yek ji bo malpera din jî derbasdar e. Awayê din wê ji bo malperên hêja neheqî bibe. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 06:40, 19 îlon 2020 (UTC)
:::::: {{r|Bikarhêner}} Bira, tê de jî nivîskar nehatiye nivîsîn.--[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 10:29, 19 îlon 2020 (UTC)
{{r|Balyozxane|Ghybu}} Ew jî hew wê peyva pûç bi kar tînin, li malpera wan binerin, [https://bianet.org/kurdi/zanisti/232977-kawa-onatli-egerin-dixwaze-bibe-navend-u-platforma-interneta-kurdi li vir binerin]. Ber werê jêbirin :) -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 16:55, 5 kanûna pêşîn 2020 (UTC)
:Çima bersivê nadin :( -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 20:34, 7 kanûna pêşîn 2020 (UTC)
:Peyvekê çêkirin, ti kesî fêm nekir, dev jê qeran. Ma ev ne mimkin e? -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 20:36, 7 kanûna pêşîn 2020 (UTC)
:Balyozxane, te gotibû "Erê lê lêgerk nepeyitandî ye loma jêbirin hewce ye", çima jê nabin? -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 20:38, 7 kanûna pêşîn 2020 (UTC)
::Li ser guhartinên dawî ji jêr ber bi jor ve min jê dibir loma hîn nehatibûm vê peyvê.--[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 22:24, 7 kanûna pêşîn 2020 (UTC)
:::Mala te ava -- [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 22:32, 7 kanûna pêşîn 2020 (UTC)
==== Jêgirtin ====
# {{f|ku|nadir|informatîk|neolojîzm}} Tiştê ku yek pê di [[înternet]]ê de [[malper]]an [[lê gerîn|digere]] û [[dîtin|dibîne]].
#* {{jêder-malper|ku|jêgirtin=Heya vêga we nikaribû bi Kurdî agahiya bigerin û internetê bi kar bînin. Em wek Egerîn ji bo pêdiviyek û kêmasiyeke mezin ji holê rabe bi kedeke mezin û bi zanyarî '''lêgerka''' bi kurdî pêşkêşî xizmeta gelê xwe dikin.|sernav=Googlea Kurdî: Egerîn|url=https://teknistan.wordpress.com/2018/05/13/googlea-kurdi-egerin/|malper=teknistan.wordpress.com|sal=2018}}
#* {{jêder|ku|jêgirtin=Hûn belki zanin ev demeke Lêgerin û web portala kurdi Egerin.com derketîye û her roj dice bikarhênerên wê mezin dibin. Bi vê emailê ez hinek informasyon rêdikim li ser '''lêgerk'''/Gerok û web portala bi kurdî Egerin.|[http://www.natgeokurd.com/yekem-geroka-kurdi-egerin-com/ Malpera National Geographic a Kurdî], 09/2015}}
#* {{jêder-malper|ku|jêgirtin=Egerin ne tenê '''lêgerk''' e. Tu zaf tiṣtên din jî dikarî bikî. ji bo ku tu dikaribî ji hemu servîsên Egerin feyde bibînî em vîdeoyên alîkarîyê cê dikin û emê rûpeleka alîkarîyê li ser egerin.com vekin..|nivîskar=Egerin|sernav=Egerin|url=https://www.facebook.com/egerin.official/posts/484162228371657/|malper=facebook.com|sal=2014}}
* Çavkanî: Bi maneya "geroka webê" {{kovara kurmancî|hejmar=26|sernav=Termên kompûterê|nivîskar=Behroz Şucaî}}--[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 00:00, 24 gulan 2021 (UTC)
isykbygtb9u39ptc9zbxbsohhags88m
nerm û narîn
0
873053
6329074
6290453
2026-08-11T11:54:23Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329074
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# {{f|ku|cotepeyv}} {{mane?|ku}}
#* {{jêder-malper|ku|jêgirtin=Ax, şeva min ya '''nerm û narîn''',<br>şeva min ya gewer û gewr,<br>bigire koşa xwe vî zarokê westiyayî!<br>Min pirr germ û gurr e.|nivîskar=Eino Leino|wergêr=Husein Muhammed|sernav=SED Û YEK STRAN|url=http://nefel.com/articles/article_print.asp?ArticleNr=5929|malper=nefel.com|sal=2011}}
#* {{jêder-malper|ku|jêgirtin=Ruxmê ku xwediyê avahiyek '''nerm û narîn''' bû jî zîrekiya wê me şaş dikir. Hêlên Dersîmê yê asî û serhildêr di dinyaya xwe a veşartî de dihêla û dema mijar dibû têkoşîn ji derxistina vê şerm nedikir.|sernav=JINÊN KU BI JIYANÊ RE DIKENIYAN|url=https://www.yjastar.com/ku/sehitlerimiz/723-jinen-ku-bi-jiyane-re-dikeniyan|malper=yjastar.com|sal=2018}}
#* {{jêder-kovar|ku|jêgirtin=Behrên Fêrîkê Ûsiv bi qasî ku gurr û hişk in, ew çend jî nerm û narîn in.|kovar=Wêje û Rexne|sernav=SIRUŞT Û FÊRÎKÊ ÛSIV|url=https://www.academia.edu/36952963/Siru%C5%9Ft_%C3%BB_F%C3%AAr%C3%AEk%C3%AA_%C3%9Bsiv|nivîskar=İNAN EROĞLU|rûpel=157}}
==== Etîmolojî ====
Ji ''[[nerm]] + [[û]] + [[narîn]]''
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|sc=Latn|nerm û niyan}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|plain sailing}}, {{W-|en|easy ride}}, {{W-|en|no hiccups}}
{{werger-bin}}
lz1mbs7t2x1rjnowxnixwi8r9h9m74b
Gotûbêj:cewser
1
873196
6328828
5020780
2026-08-11T00:31:53Z
Balyozbot
7867
/* Çavkanî */ sererastkirin
6328828
wikitext
text/x-wiki
== [[Wîkîferheng:Daxwazên peyitandinê|DP]]: Tîrmeha 2020an ==
{{arşîv-ser|dp|nepeyitandî|link=Taybet:PermanentLink/4069530#cewser}}
{{fake==|<s>[[cewser]]</s>}}
bêçavkanî--[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 09:48, 23 tîrmeh 2020 (UTC)
:Tenê çavkaniyek heye. Di ferhengên Kurdî-Ermenî û Kurdî-rûsî de wek ''qelîştek'' derbas dibe. --[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 18:37, 24 tebax 2020 (UTC)
:{{nepeyitandî}}--[[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 19:22, 25 tebax 2020 (UTC)
::[[Pêvek:Bêçavkanî/cewser]]
{{arşîv-bin}}
== Çavkanî ==
# Ji hin nîşan û elametan re tê gotin ku destpêka tiştekê an cihekî nîşan didin , wekî xêza li nîveka êşbiran de ku ji bona peydakirina cihê gerkirina wan anko ji nîvekê de duqetkirina wan.
#* {{jêder-malper|ku|jêgirtin=Wek me pêştir jî nivîsandibû, bo “ silbî û îcabî”, erênî û nerênî gelekî baş in. Bo “musbet û nefî” me erê û nerê bi kar anî. Ez bo '''cewserê''' “mûcib û salib” di elektîrîkê de, “germik û sardik” pêşniyar dikim.|nivîskar=Bedran Hebîb|sernav=Mala zimanê me yê wêran – 4|url=http://www.gulan-media.com/kurdi/articles.php?id=109&eid=8|malper=gulan-media.com|sal=2011}} [[Bikarhêner:Balyozxane|Balyozxane]] ([[Gotûbêja bikarhêner:Balyozxane|gotûbêj]]) 17:22, 20 nîsan 2021 (UTC)
jk5zh3zk5ssqa20uaqas7zjyy7tpvok
derû
0
873525
6328907
5020821
2026-08-11T11:26:37Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328907
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|devkî}} {{guherto|derew}}
#* {{jêder-malper|ku|jêgirtin=Di beramber de berpirsê liqa Mexmûrê ya Partiya Demokrata Kurdistanê (PDK) Necat Elî Fatim ew daxuyaniya Wezareta Bergirî ya Iraqê red dike û dibêje “Naveroka daxuyaniya Wezareta Bergirî ya Iraqê '''derû''' ye.”|sernav=“4 gundên Mexmûrê di destê Pêşmergeyan de ne”|url=https://www.basnews.com/so/babat/107046|malper=basnews.com|sal=2015}}
#* {{jêder-malper|ku|jêgirtin=Dewleta Tirk êrîşa dagirkeriyê ya vê dawiyê li hember rêvebiriya Rojava bi heman '''derû''' û xepan da dest pê kir. |nivîskar=Derwêş M. Ferho|sernav=ÊRÎŞÊN PIRRALÎ LI SER KURDAN|url=http://ronahi.net/ku/index.php/2019/11/01/erisen-pirrali-li-ser-kurdan/|malper=ronahi.net|sal=2019}}
i3jsuq1fphme1p6ptvri5hzwh8nrfzi
mûkî
0
873658
6329069
6284881
2026-08-11T11:54:13Z
Balyozbot
7867
/* Hoker */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329069
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[hinek]], [[piçek]]
#: ''Qama te '''mûkî''' bi ser ya min ketiye.''
#: ''Ev kursî bi '''mûkî''' ji yê dî bilindtir e.''
#* {{jêder-pirtûk|ku|jêgirtin=Dibêjin mîrî çûna sibakê bi neynikê li xwe neriye '''mûkî''' sipî di nav riha xwe de dîtiye.|nivîskar=Seydayê Tîrêj|amadekar=Dilawerê Zengî|sernav=Serpêhatiyên Kurdan (2)|weşanxane=Emîral|cih=Beyrût|sal=2009|rûpel=75}}
#* {{jêder-pirtûk|ku|jêgirtin=Lê Ez wer'a dibêjim, t'u car sond nexwin, ne bi e'zmên, çimkî ew t'extê Xwedê ye ne jî bi e'rdê, çimkî ew cîyê bin p'îyêd Wî ye, P'adşê mezin e û ne jî bi serê xwe sond bixwe, çimkî tu nikarî '''mûkî''' sipî kî yan r'eş kî.|amadekar=Mihemed Selîm Siwarî|sernav=Mizgînî: Încîla bi Kurdî|url=https://books.google.com.tr/books?id=NFmDCwAAQBAJ&pg=PA21&lpg=PA21&dq=%22m%C3%BBk%C3%AE%22&source=bl&ots=alcH3U_ouO&sig=ACfU3U0tYb_j-AceZ76Y6c9t4ODjQ5__wA&hl=tr&sa=X&ved=2ahUKEwjP3YHsnOnrAhVJposKHU16A9o4FBDoATAGegQIARAB#v=onepage&q=%22m%C3%BBk%C3%AE%22&f=false|weşanxane=Renas Media|sal=1983|rûpel=}}
#* {{jêder-malper|ku|jêgirtin=Ev zanîna han, hate xuya kirin, piştî ku çend zanyarên zanîngeha iksfûrtê, aletek ku bi lîzerê bikartê saz kirin, ev alet dikare wêneyan ji tuştên ku bi sedê caran ji serê '''mûkî''' biçûktire bikşîne.|nivîskar=Zana Xane|sernav=ÇILO MIROV HO DIBIN..?|url=https://www.gilgamish.org/2008/10/07/12998.html|malper=gilgamish.org|sal=2008}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
pfwgtbsta8ltld76sdx9of8surh74rc
cêbecê kirin
0
873988
6328829
5514113
2026-08-11T00:31:57Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328829
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Lêker ===
{{ku-tewîn-lk|cêbecê kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=cêbecê|valahî=erê}}
{{lêker|ku|c=h-gh}}
# {{guherto|ku|cîbicî kirin}}
#* {{jêder-pirtûk|ku|jêgirtin=Pergala xebata Navenda Rapêflanê û flêweyê rêxistina wê, parvekirina ceribandinan, pêkanîna kultur û kevneflopiyekî pêkve hilberînê, befldar, û rêveberiyekî flefaf e;Navend vesazbûn û xebatên xwe di vê bingehê de '''cêbecê dike'''.|amadekar=Komîsyon|sernav=NÊZÎKTÊDAYÎNÊN NÛ Û ALTERNATÎFÊN RAPÊfiANA DERBAJARÎ|url=https://www.academia.edu/2039083/N%C3%AAz%C3%AEkt%C3%AAday%C3%AEn%C3%AAn_N%C3%BB_%C3%BB_Alternat%C3%AEf%C3%AAn_Rap%C3%AAsana_Derbajar%C3%AE|sal=2011|rûpel=224}}
#* {{jêder-malper|ku|jêgirtin=Destnîşankirina mejiyê erebên çolê ku xelîfe EboBekir Bexdadî sedî sed '''cêbecê dike''' ji bo têgeha peya û xezûkirinê ew e ku nabe peya di şer de bişkê, ku şikiya jî gereke xwe bikuje, ev taybetiye berê îslamê hebû û bi nav dîroka îslamê jî ketiye heta bi niha, lewra dema EboBekir bi navê îslamê serê xelkê jêdike û destê xelkê qutdike û komkujiyê dike û jinan jî wek xenîme dibîne û dikire difroşe wiha Bexdadî mejiyê erebên çolê cêbecê dike.|sernav=Qûnaxa parastina sinûrên Kurdistanê têgehîştine ji ew jîngeha DAIŞ li xwe digre|url=http://www.gulan-media.com/kurdi/details.php?section=3&id=78|malper=gulan-media.com|sal=2015}}
#* {{jêder-malper|ku|jêgirtin=Paş ku serokê Flîpînê Rodrigo Dutîrtî ferman daye polîsan ji bo gullebaran kirina her kesê qedexeya derketinê bişkênît, polîsan fermana Serokê welat weke xwe '''cêbecê kir''' dema ku welatîyekê temen 63 salî li ser caddê gullebaran kirî.|sernav=QEDEXE ŞIKAND, POLÎSAN GULLE BERDANÊ Û KUŞT|url=https://darkamazi.net/kurdi/archives/1012550|malper=darkamazi.net|sal=2020}}
grxf202ifg5it7hjd7lgjx3l5vuxjd6
dabar kirin
0
874251
6328895
6196544
2026-08-11T11:25:15Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328895
wikitext
text/x-wiki
{{bnr-n|dabarkirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|dabar kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=dabar|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[raguhestin]]a [[pêzanîn]]an ji ser [[internêt]]ê bo [[kombers]]ekî .
#* {{jêder-kovar|ku|jêgirtin=Di nav wan neh heyvan de yên piştî derxistina nav bazarê ya têlefona Apple, li dor bîst û pênc hezar benameyên kompûterî hatibûne pêşxistin ji bo vê têlefonê (heta îro ew hejmar gihiştiye sed hezarê, lewre berhema nû ya Apple'ê bazarên Çîn û Kore ya Başûr dagîr kirin) û bi vî rengî, 800 milyon caran bername li ser înternetê hatibûne '''dabarkirin'''.|kovar=Le Monde diplomatique kurdî|sernav=Amazon, Apple, Google, dêwên piştî qeyranê|nivîskar=Dan Schiller|wergêr=Ergîn Opengîn|hejmar=4|sal=2010|rûpel=10}}
#* {{jêder-malper|ku|jêgirtin='''Dabar bike'''|sernav=Hangi Şeyh Said? – Cevher Kara|url=http://candname.com/hangi-seyh-said-cevher-kara/|malper=candname.com|sal=2016}}
#* {{jêder-malper|ku|jêgirtin=Herwiha li gor nûkirina dawî ya Microsoftê, çêdibe ku zimanê Kurdî ligel herdu zaravên Kurmancî û Soranî di appa xizmetguzarîya Ajor de li ser mobaylê û malpera Microsoftê were '''dabarkirin'''.|sernav=Microsoftê zimanê Kurdî li lîsteya xwe ya wergêranê zêde kir|url=http://www.rupelanu.com/microsofte-zimane-kurdi-li-listeya-xwe-ya-wergerane-zede-kir-12568h.htm|malper=rupelanu.com|sal=2020}}
==== Etîmolojî ====
Ji {{heve|ku|da-|barkirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|تحميل}}
* {{Z|fr}}: {{W+|fr|télécharger}}
* {{Z|en}}: {{W+|en|download}}
{{werger-bin}}
rvn9undlas2v0zyc9xk0wp031g6nky3
Şablon:bnr-lk
10
874799
6328850
4574064
2026-08-11T01:00:55Z
EmausBot
6143
Beralîkirina ducarî li ser [[Şablon:lêkerê binêre]] hat sererastkirin
6328850
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:lêkerê binêre]]
dpv7etbsanb48jlq2rliivbqwq18zro
Şablon:bnr-nd
10
874800
6328851
4574077
2026-08-11T01:01:05Z
EmausBot
6143
Beralîkirina ducarî li ser [[Şablon:navdêrê binêre]] hat sererastkirin
6328851
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:navdêrê binêre]]
d1ulldkgxfj9n9gp3jrl6tuau4hyv8r
keştîvan
0
876766
6329011
6310118
2026-08-11T11:52:10Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329011
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:H5090 Götheborg merimiehet töissä.jpg|thumb|250px|Keştîvan]]
{{navdêr|ku|z=mn}}
# Kesa/ê li [[keştî|keştiyê]] [[xebitîn|dixebite]] yan [[keştî|keştiyê]] [[xebitandin|dixebitîne]].
#* {{jêder-malper|ku|jêgirtin=Di sedsala 15-em de Lîsabon navenda giring a bazerganiyê ye û li bajêr gelek '''keştîvan''', stêrknas, cografyazan û zanyarên cuda cuda kom dibin.|sernav=Krîstofor Kolumbus|url=https://ku.wikipedia.org/wiki/Kr%C3%AEstofor_Kolumbus|malper=ku.wikipedia.org}}
#* {{jêder-malper|ku|jêgirtin=Bûyera pirtûkê li ser Robinson Kreutzner derbas dibe. Bavê wî dixwaze ku bila layê wê bibe parêzer û jiyana xwe bi dewlemend dewam bike. Lê nîgaşa lawik pir cuda ye. Ew dixwaze ku gerdun bigere; cihê ku nehatiye dîtin bibîne. Ji bo vî daxwasa wê werê cîh pêwîste ku li deryayê bibe '''keştîvan'''. Ew jî dibîstana xwe berdide û '''keştîvan''' dibe. Lê rojek keştî ya wê qeza dike û ew tenê li jiyan dimîne û nav perçên keştî derdikeve giravek.|sernav=Robinson Crusoe|url=https://ku.wikipedia.org/wiki/Robinson_Crusoe_(pirt%C3%BBk)|malper=ku.wikipedia.org}}
#* {{jêder-malper|ku|jêgirtin=Duvrerastî '''keştîvanekî''' dibe, ev keştîvan jî biraye Dirikê’ye lê hevdû nasnakin. Dirikê jê dipirse:– '''Keştîvano''' ma te dê û bavên min nedîtiye? '''Keştîvan''' dibêje:– Na!|sernav=Dirikê|url=http://candname.com/dirike/|malper=candname.com|nivîskar=Dilazad ART|sal=2017}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|کهشتیڤان}}
==== Hevmane ====
* [[deryavan]]<ref>{{malper|url=https://www.thekurdishdictionary.com/en/search/english/kurmanci/sailor}}</ref>
==== Jê ====
* [[keştîvanî]]
==== Etîmolojî ====
Ji {{pêk|ku|keştî|-van}}.
==== Werger ====
{{werger-ser|Kesa/ê li [[keştî|keştiyê]] [[xebitîn|dixebite]] yan [[keştî|keştiyê]] [[xebitandin|dixebitîne]]}}
* {{Z|akk}}: {{W-|akk|𒈣𒁻|tr=MA₂LAH₄|ts=malāḫu|n}}
* {{Z|sq}}: {{W+|sq|detar|n}}, {{W+|sq|marinar|n}}, {{W+|sq|lundërtar|n}}
* {{Z|de}}: {{W+|de|Matrose|n}}, {{W-|de|Matrosin|m}}, {{W+|de|Seemann|n}}, {{W-|de|Seefrau|m}}, {{W-|de|Seemännin|m}}
* {{Z|arc}}: {{W-|arc|מַלָּחָא|tr=mallāḥā|n}}, {{W-|arc|נַוְטָא|tr=nawṭā|n}}
*: Siryanî: {{W-|syc|ܡܠܚܐ|tr=mallāḥā|n}}, {{W-|syc|ܢܘܛܐ|tr=nawṭā|n}}
* {{Z|ast}}: {{W-|ast|marineru|n}}, {{W-|ast|marín|n}}
* {{Z|az}}: {{W+|az|dənizçi}}
* {{Z|be}}: {{W-|be|матро́с|n|sc=Cyrl}}, {{W-|be|мара́к|n}}, {{W-|be|марапла́вец|n}}
* {{Z|bn}}: {{W-|bn|নাবিক}}
* {{Z|br}}: {{W+|br|martolod}}
* {{Z|bg}}: {{W+|bg|моря́к|n}}, {{W+|bg|матро́с|n}}, {{W+|bg|морепла́вател|n}}
* {{Z|my}}: {{W+|my|ခလာသီ}}, {{W+|my|သင်္ဘောသား}}
* {{Z|cs}}: {{W+|cs|námořník|n}}, {{W-|cs|mariňák|n}}, {{W-|cs|mořeplavec|n}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|水手|tr=shuǐshǒu|sc=Hani}}, {{W+|cmn|海員|sc=Hani}}, {{W+|cmn|海员|tr=hǎiyuán|sc=Hani}}
* {{Z|ckt}}: {{W-|ckt|лельутвыткульын|tr=lelʹutvytkulʹyn}}, {{W-|ckt|аӈӄаляйвыльын|tr=aṇqaljajvylʹyn}}
* {{Z|da}}: {{W-|da|matros}}, {{W+|da|sømand}}
* {{Z|id}}: {{W+|id|pelayar}}, {{W+|id|pelaut}}, {{W+|id|kelasi}}
* {{Z|ar}}: {{W-|ar|بَحَّار|n}}, {{W-|ar|بَحْرِيّ|n}}
* {{Z|xcl}}: {{W-|xcl|նաւաստի}}, {{W-|xcl|նաւազ}}
* {{Z|hy}}: {{W+|hy|նավաստի}}, {{W+|hy|նավազ}}
* {{Z|eo}}: {{W-|eo|maristo}}, {{W-|eo|maristino}}
* {{Z|et}}: {{W-|et|madrus}}, {{W-|et|meremees}}
* {{Z|fa}}: {{W+|fa|ملاح|tr=malâh}}, {{W+|fa|بحری|tr=bahri}}, {{W-|fa|خلاشی|tr=xalâši}}
* {{Z|fo}}: {{W-|fo|sjómaður|n}}
* {{Z|fi}}: {{W+|fi|matruusi}}, {{W+|fi|merimies}}
* {{Z|fr}}: {{W+|fr|matelot|n}}, {{W+|fr|matelote|m}}, {{W-|fr|femme matelot|m}}, {{W-|fr|femme-matelot|m}}, {{W+|fr|marin|n}}, {{W-|fr|femme marin|m}}, {{W-|fr|femme-marin|m}}
* {{Z|gd}}: {{W-|gd|seòladair|n}}, {{W-|gd|loingear|n}}, {{W-|gd|muireach|n}}, {{W-|gd|maraiche|n}}
* {{Z|gl}}: {{W+|gl|mariñeiro|n}}, {{W-|gl|mariñeira|m}}
* {{Z|ka}}: {{W-|ka|მეზღვაური}}
* {{Z|haw}}: {{W-|haw|kelamoku}}, {{W-|haw|holomoku}}
* {{Z|hi}}: {{W+|hi|नाविक|n}}, {{W+|hi|मल्लाह|n}}, {{W-|hi|जहाज़ी|n}}, {{W+|hi|माँझी|n}}, {{W+|hi|केवट|n}}, {{W+|hi|लशकर|n}}, {{W-|hi|लश्कर|n}}, {{W-|hi|ख़लासी|n}}
* {{Z|nl}}: {{W+|nl|matroos|n}}, {{W+|nl|zeeman|n}}
* {{Z|he}}: {{W+|he|מַלָּח|n|tr=malláḥ|sc=Hebr}}, {{W+|he|יוֹרֵד יָם|n|tr=yōrēḏ yām}}
* {{Z|io}}: {{W+|io|maristo}}
* {{Z|ang}}: {{W-|ang|rēþra|n}}
* {{Z|en}}: {{W-|en|sailor}}
* {{Z|ga}}: {{W-|ga|maraí|n}}
* {{Z|ist}}: {{W-|ist|mareîtimo|n}}
* {{Z|it}}: {{W+|it|marinaio|n}}, {{W+|it|marinaia|m}}, {{W+|it|marittimo|n}}, {{W+|it|marittima|m}}, {{W+|it|navigante|n|m}}, {{W+|it|navigatore|n}}, {{W+|it|navigatrice|m}}
* {{Z|is}}: {{W+|is|sjómaður|n}}, {{W-|is|sjóari|n}}
* {{Z|ja}}: {{W+|ja|船員|tr=せんいん, sen'in}}, {{W-|ja|水夫|tr=すいふ, suifu}}, {{W-|ja|船乗り|tr=ふなのり, funanori|sc=Jpan}}, {{W+|ja|水兵|tr=すいへい, súihei}}, {{W-|ja|セーラー|tr=sērā}}
* {{Z|ca}}: {{W+|ca|marí|n}}, {{W+|ca|mariner|n}}
* {{Z|ky}}: {{W-|ky|деңизчи}}, {{W-|ky|моряк}}, {{W-|ky|матрос}}
* {{Z|ko}}: {{W+|ko|선원}}, {{W+|ko|수병}}
* {{Z|la}}: {{W+|la|nauta|n}}, {{W-|la|nāvita|n}}
* {{Z|lv}}: {{W-|lv|jūrnieks|n}}, {{W-|lv|jūrniece|m}}, {{W-|lv|kuģinieks|n}}, {{W-|lv|kuģiniece|m}}, {{W-|lv|matrozis|n}}
* {{Z|lo}}: {{W+|lo|ກະລາສີ}}, {{W-|lo|ນາວິກ}}
* {{Z|lij}}: {{W-|lij|mainâ|n}}
* {{Z|lt}}: {{W-|lt|jūreivis|n}}, {{W-|lt|jūreivė|m}}
* {{Z|mk}}: {{W-|mk|морнар|n}}, {{W-|mk|морепло́вец|n}}
* {{Z|mg}}: {{W+|mg|baharia}}
* {{Z|ml}}: {{W+|ml|ഖലാസി}}
* {{Z|ms}}: {{W-|ms|anak kapal}}, {{W-|ms|kelasi}}
* {{Z|mt}}: {{W-|mt|baħri|n}}
* {{Z|gv}}: {{W-|gv|marrinagh|n}}
* {{Z|mi}}: {{W-|mi|kauhoe}}, {{W-|mi|kaumoana}}, {{W-|mi|hēramana}}
* {{Z|mr}}: {{W-|mr|खलाशी}}
* {{Z|hu}}: {{W+|hu|matróz}}, {{W+|hu|tengerész}}, {{W+|hu|hajós}}
* {{Z|mn}}: {{W+|mn|далайчин}}
* {{Z|nv}}: {{W-|nv|táłkááʼ siláo}}, {{W-|nv|chʼah łigai}}
* {{Z|nrf}}: {{W-|nrf|frégatîn|n}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|matros|n}}, {{W-|nb|sjømann|n}}
*: {{Z|nn}}: {{W-|nn|matros|n}}, {{W-|nn|sjømann|n}}
* {{Z|oc}}: {{W-|oc|marinièr|n}}
* {{Z|or}}: {{W+|or|ନାବିକ|sc=Orya}}
* {{Z|ug}}: {{W-|ug|دېڭىزچى}}, {{W-|ug|ماتروس}}
* {{Z|uz}}: {{W+|uz|dengizchi}}, {{W+|uz|matros}}
* {{Z|pi}}: {{W-|pi|nāvika|n}}
* {{Z|ps}}: {{W-|ps|ماڼګى|n|tr=maṇgay}}, {{W-|ps|ملاح|n|tr=malāh}}
* {{Z|pdt}}: {{W-|pdt|Matroos|n}}
* {{Z|pl}}: {{W+|pl|marynarz|n}}, {{W+|pl|żeglarz|n}}, {{W+|pl|żeglarka|m}}
* {{Z|roa-opt}}: {{W-|roa-opt|marinneiro|n}}
* {{Z|pt}}: {{W+|pt|marinheiro|n}}, {{W+|pt|marujo|n}}
* {{Z|kk}}: {{W-|kk|теңізші}}, {{W-|kk|кемеші}}
* {{Z|cop}}: {{W-|cop|ⲛⲉϥ|n}}, {{W-|cop|ⲛⲉⲉϥ|n}}
* {{Z|ro}}: {{W+|ro|marinar|n}}, {{W+|ro|matelot|n}}, {{W+|ro|matroz|n}}
* {{Z|ru}}: {{W+|ru|матро́с|n}}, {{W+|ru|моря́к|n}}, {{W+|ru|морепла́ватель|n}}
* {{Z|sa}}: {{W+|sa|नाविक|n}}
* {{Z|sd}}: {{W-|sd|سيلاني|sc=sd-Arab}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|мо̀рна̄р|n}}, {{W-|sh|по̀морац|n}}, {{W-|sh|морепло́вац|n}}
*: Latînî: {{W+|sh|mòrnār|n}}, {{W+|sh|pòmorac|n}}, {{W+|sh|moreplóvac|n}}
* {{Z|orv}}: {{W-|orv|морꙗнинъ|n}}
* {{Z|sk}}: {{W-|sk|námornik|n}}, {{W-|sk|moreplavec|n}}
* {{Z|sl}}: {{W+|sl|mornár|n}}, {{W-|sl|mornárka|m}}
* {{Z|es}}: {{W+|es|marinero|n}}
* {{Z|sux}}: {{W-|sux|𒈣𒁺𒁺|tr=MA₂LAH₅|ts=malah}}
* {{Z|sw}}: {{W+|sw|baharia}}
* {{Z|sv}}: {{W+|sv|matros}}, {{W+|sv|sjöman}}
* {{Z|tg}}: {{W-|tg|маллоҳ}}, {{W+|tg|баҳрӣ}}, {{W-|tg|баҳрчӣ}}, {{W-|tg|дарёнавард}}
* {{Z|th}}: {{W+|th|กะลาสี}}, {{W+|th|ลูกเรือ}}, {{W+|th|ทหารเรือ}}, {{W-|th|นาวิก}}
* {{Z|te}}: {{W+|te|నావికుడు|n}}
* {{Z|tr}}: {{W+|tr|gemici}}, {{W+|tr|bahriyeli}}, {{W|tr|denizci}}
* {{Z|tk}}: {{W-|tk|deňizçi}}
* {{Z|tpi}}: {{W-|tpi|boskru}}
* {{Z|ur}}: {{W-|ur|ملاح|n|tr=mallāh}}, {{W-|ur|خلاصی|n|tr=xalāsī}}
* {{Z|uk}}: {{W-|uk|моря́к|n}}, {{W-|uk|матро́с|n}}, {{W-|uk|морепла́вець|n}}
* {{Z|cy}}: {{W+|cy|morwr}}
* {{Z|km}}: {{W-|km|កម្មករនាវា}}, {{W+|km|នាវិក}}, {{W+|km|នាវិកា}}
* {{Z|yi}}: {{W-|yi|שיפֿער|n|sc=Hebr}}, {{W-|yi|שיפֿערין|m|sc=Hebr}}
* {{Z|grc}}: {{W-|grc|ναύτης|n}}, {{W-|grc|ναυτίλος|n}}
* {{Z|el}}: {{W+|el|ναύτης|n}}, {{W+|el|ναυτικός|n}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
ihyk5o5fejdbu32g8vcvehztrhpg2bv
Ferîdûn
0
907816
6328960
6295258
2026-08-11T11:50:04Z
Balyozbot
7867
/* Serenav */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328960
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Serenav ===
{{serenav|ku|z=n}}
# {{f|ku|Şahname}} Şah û [[leheng]]ekî efsanewî yê [[îranî]].
# [[nav|Navekî]] {{navkes|ku|law}} e.
#* {{jêder-malper|ku|jêgirtin=Abûkat '''Ferîdûn''' Yazar jî çû rahmetê. Mirina bêbext Ferîdûn Yazar jî ji me stend. Bi wefeta entellektuel û kurdperwerê hêja û dostê bavê min yê salan Ferîdûn Yazar ez gelkî xemgîn bûm.|nivîskar=Zinarê Xamo|sernav=Ferîdûn Yazar jî çû rahmetê|url=http://zinarexamo.blogspot.com/2016/06/feridun-yazar-ji-cu-rahmete.html|malper=zinarexamo.blogspot.com|sal=2016}}
#* {{jêder-malper|ku|jêgirtin='''Ferîdûn''' Erşedî helbestvanê Kurd ê rojhilatê Kurdistanê û rûniştvanê Almaniya, koleksyonek ji şêirên xwe di pirtûkekî de, jêr navê Berd (kevir) çap kir.|sernav=Helbestvanê Kurd Ferîdûn Erşedî Pritûka xwe ya nû derxist|url=https://www.qasioun-news.com/ar/articles/15918|malper=qasioun-news.com/|sal=2015}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr|y}}
==== Etîmolojî ====
{{nyz|ku}}. Bide ber {{g+|fa|فریدون|tr=Feraydun}}, {{g+|ae|𐬚𐬭𐬀𐬉𐬙𐬀𐬊𐬥𐬀}}, {{g+|xcl|Հրուդէն}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W|fa|فریدون}}
* {{Z|tr}}: {{W|tr|Feridun}}
{{werger-bin}}
gxjf848y8lc3vp6queq9znsl137s15r
Kepreşîne
0
933709
6329008
6295473
2026-08-11T11:52:03Z
Balyozbot
7867
/* Serenav */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329008
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Serenav ===
{{serenav|ku|z=m}}
# {{f|ku|Cihûtî}} [[cejn|Cejn]]eke [[cihû]]yan ya [[payîz]]ê ye
#* {{jêder-malper|ku|jêgirtin=Festîval her ji saet 10-ê sibehê dest pê dike û heta 12-ê şevê hemu kurd li deştekê kom dibin û şahiyê dikin. Bi helkeftina vê cejnê, serokwezîr û serokê welat ligel wezîr û generalên mezin di festîvalê de amade dibin û cejna '''Kepreşîne''' li kurdan pîroz dikin.’’|nivîskar=Newzad Mecîd|sernav=Nêzîka 210 hezar Kurdên Cihû li Îsraîlê dijîn|url=http://avestakurd.net/blog/2012/12/12/nzka-210-hezar-kurdn-cih-li-sral-dijn/|malper=avestakurd.net|sal=2012}}
#* {{jêder-malper|ku|jêgirtin={{ku-Arab|دەمێ جەژنا كەپرەشینان یا جوهیان نێزیك بووی}}|sernav=Yuhenna 7:2 (Behdînî)|url=http://kitebipiroz.com/behdini/bible/jhn/7/2}}
#*: ''Demê Cejna '''Kepreşînan''' ya Cuhiyan nêzîk bûyî''
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|y}}
==== Etîmolojî ====
Ji {{pêk|ku|kepir|şîn}} (2).
;{{biçûk|Çavkanî
* {{Chyet|r=307}}
}}
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|عيد المظال}}
* {{Z|en}}: {{W|en|Tabernacles}}, {{W|en|Sukkot}}
{{werger-bin}}
3e2aqo4pvr585wpztfds0yqumoj4teu
bi dev kirin
0
933804
6328809
6278516
2026-08-11T00:28:45Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328809
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=}}
# [[gotin]]
#* {{jêder|ku|jêgirtin=Bîsteke li hêvîya dostê xwe ma ku bêhna wî were ber wî, û dûvre pirsiyara ku ji bo wê hatibû '''bi dev kir'''|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=19}}}}
#* {{jêder-malper|ku|jêgirtin=Wê rojê wiha '''bi dev dike''' "Gava ez qêriyam û min got; Hibr dibare, ez ne serxweş bûm. Hefsarê hişê min di destê min de bû û bîna hibrê jî, ji bîna xwêdana paxilên yarika xwe ya ermen bêtir nas dikir."|nivîskar=Ali Fikri Işik|sernav=Romana Modern ya Kurdî|url=https://diyarname.com/news.php?Idx=3838|malper=diyarname.com/|sal=2010}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
np23l2zeypz7a41y9gu0hsinwirnqxx
miqerer
0
936122
6329063
6252099
2026-08-11T11:54:01Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329063
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|miqerer}}
{{rengdêr|ku}}
# [[biryarbûyî]], yê ku hatiye qerargirtin
#* {{jêder-pirtûk|ku|jêgirtin=''Yek şubhê Bekir, bitac û binper<br/> Westayî li ber derî, '''muqerrer'''''|nivîskar=Ehmedê Xanî|sernav=Mem û Zîn}}
#* {{jêder-malper|ku|jêgirtin=Ji qaîdeyên '''muqerrer''' e ku: “Mena herfî, ji hukmê qestî re, nabe mehkûmû eleyhî û tetqîqat li ser mena herfî çênabin.|malper=Zehra.com|sernav=Mesnewiya Nûriye|ziman=ku|url=https://zehra.com.tr/kitapoku.php?id=20&sayfa=279|urlya-arşîvê=https://web.archive.org/web/20210213145507/https://zehra.com.tr/kitapoku.php?id=20&sayfa=279|nivîskar=Seîdê Kurdî}}
==== Formên alternatîv ====
* [[muqerer]]
* [[miqerrer]]
==== Etîmolojî ====
Ji {{deyn|ar}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
cw3m2l3xshjpdmwkbya1gh01vc9nomf
manîkur
0
956231
6329050
6311643
2026-08-11T11:53:35Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329050
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
[[Wêne:Nail salon -Fujiyoshida 01.jpg|thumb|300px|Destekî ku lê manîkur tê kirin]]
# [[miamele]]yên [[kozmetîk]] yê ji bo [[neynûk]]an [[tilî|tili]]yan
#* {{jêder-malper|ku|jêgirtin=Li gora fitweya melayan bikar anîna makyaj û manîkuran heram e. Ji ber vê yekê ev '''manîkura''' îslamî hatiye derxistin.|url=http://avestakurd.net/blog/2013/02/02/mankura-slam-hate-ckirin/|sernav=Manîkura Îslamî hate çêkirin|dîrok=2013-02-02|ziman=ku|malper=Avestakurd.net|urlya-arşîvê=https://web.archive.org/web/20210221223406/http://avestakurd.net/blog/2013/02/02/mankura-slam-hate-ckirin/}}
#* {{jêder-malper|ku|jêgirtin=Wê çêlekên Semsûrê ji îro û pêde heftê rojekê herin ser berber xwe bedew bikin, piştre wê herin '''manîkura''' nenûkên xwe bikin, wan biqusînin û şahîk bikin, û piştre jî herin têkevin hawizê avê û xwe helal bikin.|sernav=Di çavê wan de çêlek ji Kurdan qîmettir in|url=http://www.lotikxane.com/arsiv/arsiv%2071.html|malper=Lotikxane|ziman=ku|dîrok=2007-09-02|urlya-arşîvê=https://web.archive.org/web/20210221224021/http://www.lotikxane.com/arsiv/arsiv%2071.html}}
#* {{jêder-malper|ku|jêgirtin=Dev ji peyvên '''manîkurê''' berdin, em bra ne, em wek goşt û neynokê ne…|dîrok=2012-12-14|sernav=“Kurd êdî ji gotina bratiyê îkrah dikin“|url=http://avestakurd.net/blog/2012/12/14/kurd-d-ji-gotina-bratiy-krah-dikin/|ziman=ku|malper=Avestakurd.net|urlya-arşîvê=https://web.archive.org/web/20210221224747/http://avestakurd.net/blog/2012/12/14/kurd-d-ji-gotina-bratiy-krah-dikin/}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[manîkûr]]
==== Jê ====
* [[manîkurvan]]
* [[manîkurvanî]]
* [[manîkurîst]]
* [[manîkurîstî]]
* [[manîkur kirin]] ''(wek lêker)''
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|manicure}}
* {{Z|tr}}: {{W|tr|manikür}}
{{werger-bin}}
7324uxz2vf7zkso7hixtyzw42busmho
ergo
0
968031
6328949
6105376
2026-08-11T11:49:25Z
Balyozbot
7867
/* Hoker */ sererastkirin
6328949
wikitext
text/x-wiki
{{binêre herwiha|Ergo|ergo-}}
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{beş|Hoker|Girêdek}} {{mj|DYA}}{{IPA|en|/ˈɝɡoʊ/}}
** {{deng|en|En-au-ergo.ogg|dever=Awistralya}}
* {{beş|Navdêr 1}} {{mj|DYA}} {{IPA|en|/ˈɝɡoʊ/}}
* {{beş|Navdêr 2}} {{mj|DYA}} {{IPA|en|/ˈɝɡoʊ/}}
=== Hoker ===
{{en-hoker|-}}
# ji ber vê yekê, lewma, bi vî awayî
#* {{jêder-malper|ku|jêgirtin=The pirates who invaded this fort left Sparrow locked in his cell; '''ergo''', they are not his allies.|sernav=Pirates of the Caribbean|sal=2003}}
#:: Korsanên ku vê kelehê îşxal kirin, Sparrowê di hucreya wî de kilîdkirî hiştin; lewma ew ne dostê wî ne.
==== Etîmolojî ====
Ji {{mîr|enm|en|ergo}}, ji {{ji|la|en|ergo}}.
=== Girêdek ===
{{girêdek|en}}
# [[lewma]]
==== Etîmolojî ====
Ji {{mîr|enm|en|ergo}}, ji {{ji|la|en|ergo}}.
=== Navdêr 1 ===
{{en-navdêr}}
# {{f|en|argo}} ergometre (makîneya ku enerjiya xerckirî hesab dike)
==== Etîmolojî ====
{{qusandin|ku|ergometer}}.
=== Navdêr 2 ===
{{en-navdêr}}
# {{f|en|nefermî}} [[ergonomîk]]
==== Etîmolojî ====
{{qusandin|en|ergonomic}}.
=== Anagram ===
* {{anagram|en|a=egor|Geor.|Gero|Gore|Ogre|Rego|gero-|goer|gore|ogre|orge|rego|roge}}
=== Zêdetir hîn bibe ===
* {{wpedî|ziman=en}}
gag11837opedsxuume52g8j6k1ch9xs
metrolojî
0
968709
6329056
6312110
2026-08-11T11:53:47Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329056
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|zanist}} Zanista ku li ser [[pîvandin]]ê yan [[pîvan]]an dixebite.
#* {{jêder-malper|ku|jêgirtin=Me di çarçoveya '''metrolojiya''' qanûnî da çavdêrî û kontrola piyaseyê ya milyonek û 200 hezar alavên pîvanê, di çarçoveya ewlehiya berhemê da jî ya 20 hezar berhemî kir.|nivîskar=Önder Beyter|sernav=Wezîr Varank: Teleba sektora reel a ji bo veberhênanê ji sedî 21 zêde bû|url=https://www.aa.com.tr/kk/abor%C3%AE/wez%C3%AEr-varank-teleba-sektora-reel-a-ji-bo-veberh%C3%AAnan%C3%AA-ji-sed%C3%AE-21-z%C3%AAde-b%C3%BB-/2045551|malper=aa.com.tr/kk|sal=2020}}
#* {{jêder-malper|ku|jêgirtin="Zîrweya Helal a Dinyayê ya 2018an û 6emîn Fuara Helal Expoyê ya Teşkîlata Tevkariya Îslamê" ku AA bû Şirîkê wê yê Ragihandina Global, di hîmayeya Serokomariyê û tevkariya Enstîtuya Standardên Welatên Îslamê û '''Metrolojiyê''' (SMIIC), Navenda Xurtkirina Bazirganiya Îslamê (ICDT) û Discover Eventsê li Yenîkapiyê di Navenda Pêşandan û Hunerê ya Avrasyayê hat lidarxistin û dest pê kir.|sernav="Xelata aştiyê" dan Yusuf Îslam|url=https://www.trtnuce.com/turkiye/xelata-astiy-dan-yusuf-slam-h42487.html|malper=trtnuce.com|sal=2018}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{deyn|en|ku|metrology}}, ji {{ji|grc|ku|μέτρον|w=pîvan}} + {{paş|ku|-lojî}}.
==== Binêre herwiha ====
* {{g|ku|meteorolojî}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Metrologie|m}}
* {{Z|bg}}: {{W-|bg|метрология|m}}
* {{Z|cs}}: {{W+|cs|metrologie|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|測量學|tr=cèliángxué}}
* {{Z|da}}: {{W+|da|metrologi|g}}
* {{Z|hy}}: {{W+|hy|չափագիտություն}}
* {{Z|fi}}: {{W-|fi|mittaustiede}}, {{W+|fi|metrologia}}
* {{Z|gl}}: {{W+|gl|metroloxía|m}}
* {{Z|en}}: {{W-|en|metroloji}}, {{W-|tr|ölçümbilim}}
* {{Z|en}}: {{W+|en|metrology}}
* {{Z|it}}: {{W+|it|metrologia|m}}
* {{Z|is}}: {{W-|is|mælifræði|m}}
* {{Z|ja}}: {{W-|ja|測定学|tr=[[そくていがく]], sokuteigaku}}
* {{Z|ca}}: {{W-|ca|metrologia|m}}
* {{Z|mk}}: {{W-|mk|метрологија|m}}
* {{Z|hu}}: {{W+|hu|méréstudomány}}, {{W+|hu|méréstan}}, {{W+|hu|metrológia}}
* {{Z|no}}: {{W+|no|metrologi|n}}
* {{Z|pl}}: {{W+|pl|metrologia|m}}
* {{Z|pt}}: {{W+|pt|metrologia|m}}
* {{Z|ro}}: {{W+|ro|metrologie|m}}
* {{Z|ru}}: {{W+|ru|метроло́гия|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|метроло̀гија|m}}
*: Latînî: {{W+|sh|metrològija|m}}
* {{Z|es}}: {{W+|es|metrología|m}}
* {{Z|crh}}: {{W-|crh|ölçeme ilimi}}
{{werger-bin}}
:{{werger çavkanî|en|metrology|beş=Ev qismê Wergerê|oldid=75071569}}
guxx2qvl4me8kxqfjo85lzhl6opsdbt
Gotûbêj:abûr
1
969624
6328767
5021791
2026-08-11T00:24:39Z
Balyozbot
7867
/* Mane */ sererastkirin
6328767
wikitext
text/x-wiki
== Mane ==
* abûr namûs? şerm û eyb<ref>{{Ferhenga Destî|r=5}}</ref>
* {{jêder-malper|ku|jêgirtin=Hindî dikir nedişêya Mecnûn li oba xo dûr bêxît. Rojekê ço bal Xelîfe û şikayeta Mecnûn kir, ku '''abûr''' bo me nehêlaye.|nivîskar=Seyid Kafî ‘Elewî|sernav=SEWAD Û WERGÊRA ÇÊRISTA LELÎ Û MECNÛN -2|url=https://krd.riataza.com/2017/01/06/sewad-u-wergera-cerista-leli-u-mecnun-2/|malper=riataza.com|sal=2017}}
* [[abûra yekî birin]], to [[dishonor]]<ref>{{kovara kurmancî|hejmar=53|sernav=Hinek peyv ji Selmasê|nivîskar=Khosrow ABDOLLAHÎ|r=1}}</ref><ref>{{Ferhenga Destî|r=5}}</ref>
* {{jêder-malper|ku|jêgirtin=Babê Qeys naçar dirêkete xastina Leylê û babê Leylê dibêjît; kurê we '''abûra me biriye''' û ez kiça xo nademe wî.|nivîskar=Seyid Kafî ‘Elewî|sernav=SEWAD Û WERGÊRA ÇÊRISTA LELÎ Û MECNÛN -2|url=https://krd.riataza.com/2017/01/06/sewad-u-wergera-cerista-leli-u-mecnun-2/|malper=riataza.com|sal=2017}}
** [https://zanistvan.files.wordpress.com/2018/06/ferhenga-kurdc3ae-farsc3ae.pdf] ?
** [https://twitter.com/dilewelat/status/1158496175227572225]
** ''Navborî got: ‘’Mehmûd Sengawî xalên wî yên lewaz di dest Lahor Cengî de heye, ewqas karên abûra wî çûyî kirine, naçare Lahor çi bibêje bike, eger na dê abûra wî bibin.’’'' [https://www.basnews.com/kr/babat/674679] ?
* [[abûr çûn]], [[abûra rûyê xwe hirşandin]]
** ''Her wiha Tiramp ragihand: abûra wan ber bi jinavçûnê ye û gelê wê di êş û azarandaye. Pêtvî dike ew haydarî axaftinên xwe be.'' [https://darkamazi.net/kurdi/archives/1011316]
* {{jêder-malper|ku|jêgirtin=Berpirsê binkeyê Çemçemalê Ebdula Kuwêxa Mubarek di tora xwe ya civakî facebookê de gotarek bi serenava ‘’Li Kurdistanê siyaseta abûra wê çûyî’’ belav kir û wek yekem siyaseta abûra wê çûyî jî nimûneyê wê li ser Gorran anî û aşkera kir, ew Gorran a ku bi salane cîhê hêviyê bû bo xelkê û li ser destê Newşîrwan Mistefa hat damezrandin, naha şerê şîrket, sermaye û servet û dewlemendiyê tê de pêşketiye.’’|url=https://www.basnews.com/kr/babat/468510}}
=== Çavkanî ===
phdt6j6z0zryxgxk2knzwe5dn4nt79d
aramxane
0
970254
6328845
6296868
2026-08-11T00:43:28Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6328845
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Cihê ku [[mirov]]ên pîr lê [[man|dimînin]] û tên [[xwedî derketin|xwedîderketin]].
#* {{jêder-pirtûk|ku|jêgirtin=Hîn ez li welat bûm lawe min Bengîn ji Stockholmê telefon kir, got "hevalekî te telefon kir û ew nimara telefonê da min." Ez lê gerîyam yê ku telefon kirîbû, M. Gorkey bû, wî da zanîn ku ew nuha li huzurewî-'''aramxana''' Alanya bû.|sernav=Ji Haysive heta Stockholme|nivîskar=Kazim Budak|weşanxane=APEC|isbn=978-91-86139-97-1|sal=2015|rûpel=150}}
#* {{jêder-malper|ku|jêgirtin=Li '''aramxaneya''' extiyaran a li Sultangaziyê, ji nişkê ve şewatê dest pê kir.|sernav=Aramxane şewitî|malper=trtnuce.com|url=https://www.trtnuce.com/turkiye/aramxane-sewit-h41555.html|sal=2018}}
#* {{jêder-malper|ku|jêgirtin=Aliyê rojavayê tirkiyê jimara '''aramxaneyan''' ku cîhên bêaram in her roj zêde dibin. Bajarên mîna Stenbol, Îzmir û Bursayê de hema bêje malbatên fireh û mezin nemane.|nivîskar=Welat Agirî|sernav=Malbata kurd a kevneşoperest -2|url=https://krd.riataza.com/2017/06/20/malbata-kurd-kevnesoperest-2/|malper=riataza.com|sal=2017}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Etîmolojî ====
Ji {{qertaf|ku|aram|-xane}}, ihtimalên {{yekser|tr|ku|huzurevi|hûr=1}}, ji {{qertaf|tr|huzur|w1=aram|evi|w2=xane, mal|nekat=1}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Pflegeheim|nt}}
* {{Z|az}}: {{W-|az|qocalar evi}}
* {{Z|hy}}: {{W+|hy|ծերանոց}}
* {{Z|fi}}: {{W+|fi|hoitokoti}}
* {{Z|fr}}: {{W+|fr|maison de repos|m}}
* {{Z|en}}: {{W+|en|nursing home}}, {{W+|en|care home}}, {{W+|en|old people's home}}
* {{Z|it}}: {{W-|it|casa di riposo}}
* {{Z|ru}}: {{W+|ru|дом престаре́лых|n}}, {{W-|ru|ча́стная лече́бница|m}}
* {{Z|es}}: {{W+|es|asilo|n}}, {{W-|es|cotolengo}}
* {{Z|sv}}: {{W+|sv|ålderdomshem|nt}}, {{W+|sv|äldreboende|nt}}, {{W+|sv|åldringshem|nt}}
* {{Z|tr}}: {{W+|tr|huzurevi}}
{{werger-bin}}
=== Çavkanî ===
* {{Ferhenga Kamêran|r=39}}
gqsgw4j8094er9goa26q7nx8i3qiaqp
dekoratîv
0
971443
6328902
6279875
2026-08-11T11:25:46Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328902
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{kîte|ku|de|ko|ra|tîv}}
=== Rengdêr ===
{{ku-tewîn-rd|dekoratîv}}
{{rengdêr|ku}}
# Ya / yê ku [[dekore]] dike.
#* {{jêder-malper|ku|jêgirtin=Wekî her sal, vê carê jî Şaredariya Moskowê li hemû park û meydanan bazarên kevneşopî yên '''dekoratîv''' ava dike|nivîskar=Kamîz Şeddadî|sernav=SERÊ SALÊ - Ji bo xemilandina paytext 10 milyon dolar|url=https://www.rudaw.net/kurmanci/world/17122016|urlya-arşîvê=https://web.archive.org/web/20210721190038/https://www.rudaw.net/kurmanci/world/17122016|malper=Rûdaw|dîrok=17-12-2016}}
==== Formên alternatîv ====
* {{g|ku|dekoratîf}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|decorative}}
* {{Z|tr}}: {{W+|tr|dekoratif}}
{{werger-bin}}
bp85hu63i3darhzbtyhy1oupbukapbz
kubîk
0
971499
6329029
6283831
2026-08-11T11:52:47Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329029
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku|form=-}}
# Yê bi şiklê [[kûp|kûb]]ê.
#* {{jêder-malper|ku|jêgirtin=Îcar taybetiya Wêneyê '''Kubîk''' jî ew e ku bi hesabê geometriyê tê çêkirin û şikl û dirûvên geometrîk tên bikaranîn.|nivîskar=Hevpeyvîn: Amed Çeko Jiyan|sernav=Dilawer Zeraq: Nivîsandina kurdî rûtemek e|url=https://diyarname.com/news.php?Idx=2422|urlya-arşîvê=https://web.archive.org/web/20210801071630/https://diyarname.com/news.php?Idx=2422|malper=Diyarname|dîrok=2009-07-01}}
==== Formên alternatîv ====
* {{g|ku|kûbîk}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|cubic}}, {{W+|en|cubical}}
* {{Z|tr}}: {{W+|tr|kübik}}
{{werger-bin}}
drpu7xfk7w3sq0fbim4zbkdko4a6u8p
cînayî
0
975317
6328833
6279177
2026-08-11T00:32:18Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6328833
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Yê eleqedarê [[ceza]]yê.
#: {{jêder-malper|ku|jêgirtin=Hukumeta Kurdistanê hê di sala 2002–yê de qanûna jimare 14 derxist ku kuştina jinê bi çi sedemî dibe bila bibe wek curmeka '''cînayî''' qebûl kir.|nivîskar=Mûrad Ciwan|sernav=Li Kurdistanê li ser rewşa jinan reform dibin|url=https://muradciwan.com/2013/11/05/li-kurdistane-li-ser-rewsa-jinan-reform-dibin/|arşîv=https://web.archive.org/web/20220717133535/https://muradciwan.com/2013/11/05/li-kurdistane-li-ser-rewsa-jinan-reform-dibin/|malper=muradciwan.com|sal=2013-11-05|sal=2013}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
83i9gl4r69up2zhac42c4t6w8g2vrvg
6328834
6328833
2026-08-11T00:33:18Z
Wikihez
7344
Guhartoya [[Special:Diff/6328833|6328833]] yê [[Special:Contributions/Balyozbot|Balyozbot]] ([[User talk:Balyozbot|gotûbêj]]) şûnde kir
6328834
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Yê eleqedarê [[ceza]]yê.
#: {{jêder-malper|ku|jêgirtin=Hukumeta Kurdistanê hê di sala 2002–yê de qanûna jimare 14 derxist ku kuştina jinê bi çi sedemî dibe bila bibe wek curmeka '''cînayî''' qebûl kir.|nivîskar=Mûrad Ciwan|sernav=Li Kurdistanê li ser rewşa jinan reform dibin|url=https://muradciwan.com/2013/11/05/li-kurdistane-li-ser-rewsa-jinan-reform-dibin/|urlya-arşîvê=https://web.archive.org/web/20220717133535/https://muradciwan.com/2013/11/05/li-kurdistane-li-ser-rewsa-jinan-reform-dibin/|malper=muradciwan.com|dîrok=2013-11-05}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
kh8gxx6tyo4h8yz7fuu742ezu78ajiu
birayêt
0
977887
6328818
6260367
2026-08-11T00:29:05Z
Balyozbot
7867
/* Formeke navdêrê */ sererastkirin
6328818
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Formeke navdêrê ===
{{ku-tew-nav|bira|nêr|îzafe|binavkirî}}
{{navdêr|ku|z=n|form=erê}}
# {{f|ku|kurmanciya rojhilatî}} ''Rewşa [[îzafeyî]] ya pirjimar a binavkirî ya'' '''[[bira]]'''.
#* {{jêder-malper|ku|jêgirtin=Rojekê du bira çîne (çûne) nêçîrê, birayek têt nav rezî avê dibid (dibit), fêqî dibid, bo birayêd xwe şîvê hazir ti(di)kit heta '''birayêt''' wî êvarî ji nêçîrê tên|malper=Cankurd.wordpress.com|url=https://cankurd.wordpress.com/2010/09/15/rosteme-zal-1/|sernav=Rostemê Zal -1|sal=9/2010}}
==== Formên alternatîv ====
* {{mj|standard}} [[birayên]]
* [[birên]]
* {{mj|kurmanciya serhedî}} [[birayêd]]
4q293v6fcm9up7h08xc37ric6kcvo1a
ketinên
0
977909
6329015
5139491
2026-08-11T11:52:18Z
Balyozbot
7867
/* Formeke navdêrê */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329015
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Formeke navdêrê ===
{{ku-tew-nav|ketin|mê|îzafe|binavkirî}}
{{navdêr|ku|z=m|form=erê}}
# ''Rewşa [[îzafeyî]] ya pirjimar a binavkirî ya'' '''{{g|ku|ketin#Navdêr}}'''.
#* {{jêder-malper|ku|jêgirtin=Bi hemû xewn û xeyalên xwe ve, bi hemû êş û janên xwe ve, bi hemû kêmasî û '''ketinên''' xwe ve, bi hemû çûyîn û dûrketinên xwe ve, ji xwe re bûm çal û kendal, çalên kûr û kendalên xedar.|malper=Candname.com|url=https://candname.com/zarok-u-kestiya-aytmatov/|sernav=Zarok û Keştiya Aytmatov|nivîskar=Faîk Ocal|sal=7/2022}}
rwv4nf4xmqv89rkng0u591du9hpcr7q
kîkboksîng
0
979228
6329022
6310965
2026-08-11T11:52:33Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329022
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|kʰîkboksîng}}
=== Navdêr ===
[[Wêne:USMC-050716-M-1837P-001.jpg|thumb|250px|Du kes '''kîkboksîngê''' dikin.]]
{{navdêr|ku|z=m}}
# [[werziş]]ek e ku mirov bi [[kulm]]an/[[mist]]an û [[pêhn]]an li [[dijber]]ê xwe dide:
#*{{jêder-malper|ku|jêgirtin=Sibe kîkbokserê kurd ê ji Rojavayê Kurdistanê Ehmed Yûsif Ebdo di lîstika dawî de ya Şampiyoniya Cîhanî ya '''kîkboksîngê''' de rûbirûyî kîkbokserê taylandî bibe ku niha qaremanê cîhanê ye.|malper=Rudaw.com/kurmanci|sal=5/2023|sernav= Bokserê Kurd dê ji bo Şampiyoniya Cîhanî derkeve pêşberî bokserê Taylandî |url=https://www.rudaw.net/kurmanci/sports/260520231}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* [[kîkboks]]
==== Têkildar ====
* [[kîkbokser]]
==== Etîmolojî ====
Ji {{deyn|en|ku|kickboxing}} ji {{q|en|kick|w=pêhn}} + {{q|en|boxing|w=boksîng, [[kulmanê]], [[mistanê]]}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Kickboxing|nt}}, {{W+|de|Kickboxen|nt}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W|cmn|踢拳|tr=tīquán}}
* {{Z|id}}: {{W|id|kickboxing}}
* {{Z|ar}}: {{W|ar|كِيك بُوكْس|n|tr=kik buks}}
* {{Z|eo}}: {{W|eo|piedbato-bokso}}
* {{Z|fi}}: {{W+|fi|potkunyrkkeily}}
* {{Z|fr}}: {{W+|fr|kick-boxing|n}}
* {{Z|nl}}: {{W+|nl|kickboksen|n}}
* {{Z|en}}: {{W+|en|kickboxing}}
* {{Z|ja}}: {{W+|ja|キックボクシング|tr=kikkubokushingu|sc=Jpan}}
* {{Z|ko}}: {{W+|ko|킥복싱|sc=Kore}}
* {{Z|ms}}: {{W|ms|kickboxing}}
* {{Z|pl}}: {{W+|pl|kick boxing|m}}, {{W+|pl|kick-boxing|m}}
* {{Z|pt}}: {{W|pt|kickboxing|m}}, {{W|pt|kickboxe|m}}
* {{Z|ru}}: {{W+|ru|кикбо́ксинг|m}}
* {{Z|sv}}: {{W|sv|kickboxning|c}}
* {{Z|uk}}: {{W|uk|кікбо́ксинг|m}}
* {{Z|vi}}: {{W|vi|quyền cước}}
* {{Z|el}}: {{W|el|κικ μπόξινγκ|nt}}
{{werger-bin}}
86tesyxqxkvpr8mi1f3x4yomd70kgc6
kîkbokser
0
979230
6329021
6310964
2026-08-11T11:52:31Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329021
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
*{{ku-IPA|kʰîkbokser}}
=== Navdêr ===
[[Wêne:USMC-050716-M-1837P-001.jpg|thumb|250px|Du '''kîkbokser''' kîkboksîngê dikin.]]
{{nav|ku|z=mn}}
# [[werzişvan]]ên [[kîkboksîng]]ê:
#* {{jêder-malper|ku|jêgirtin=Sibe '''kîkbokserê''' kurd ê ji Rojavayê Kurdistanê Ehmed Yûsif Ebdo di lîstika dawî de ya Şampiyoniya Cîhanî ya kîkboksîngê de rûbirûyî kîkbokserê taylandî bibe ku niha qaremanê cîhanê ye.|malper=Rudaw.com/kurmanci|sal=5/2023|sernav= Bokserê Kurd dê ji bo Şampiyoniya Cîhanî derkeve pêşberî bokserê Taylandî|url=https://www.rudaw.net/kurmanci/sports/260520231}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Têkildar ====
* [[kîkboksîng]]
==== Etîmolojî ====
Ji {{deyn|en|ku|kickboxer}} ji {{q|en|kick|w=pêhn}} + {{q|en|boxer|w=bokser, [[kulmvan]], [[mistvan]]}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Kickboxer|n}}, {{W+|de|Kickboxerin|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W-|cmn|[[自由搏擊]][[選手]]|tr=zìyóu bójī xuǎnshǒu}}
* {{Z|fi}}: {{W+|fi|potkunyrkkeilijä}}
* {{Z|fr}}: {{W+|fr|kickboxeur|n}}, {{W+|fr|kickboxeuse|m}}
* {{Z|nl}}: {{W+|nl|kickbokser|n}}
* {{Z|en}}: {{W+|en|kickboxer}}
* {{Z|ro}}: {{W+|ro|kickboxer|n}}
* {{Z|ru}}: {{W+|ru|кикбо́ксер|n}}, {{W+|ru|кикбо́ксерша|m}}
* {{Z|sv}}: {{W-|sv|kickboxare|g}}
* {{Z|el}}: {{W-|el|κικ μπόξερ|nt}}
{{werger-bin}}
:{{werger çavkanî|en|kickboxer|beş=Ev qismê Wergerê|oldid=71427767}}
m3pamp3l7p6nf0o5hjstuzbxfublgtm
muxerref
0
979426
6329068
6261053
2026-08-11T11:54:11Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329068
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# {{f|ku|dîn}} [[sexte]], [[guherandî]], [[xirabkirî]] <br>(bi taybetî [[nivîs]]ên [[pîroz]] yên bêyî [[ruxset]] [[guherandî]])
#* {{jêder-malper|ku|jêgirtin=Pey ku mîsyoneran fûarên kitaban ji xwe re kirin mesken û dest bi belavkirina Incîla '''muxerref''' kirin, li Edeneyê jî Dostên Quranê di fuara kitêban a Tuyapê de bê pere dest bi belavkirina Quran kirin.|malper=Cinarinsesi.com|sal=1/2013|sernav=Li Hember Misyonertiyê Quran Pîroz Hat Belav Kirin|url=https://www.cinarinsesi.com/li-hember-misyonertiye-quran-piroz-hat-belav-kirin-24803h.htm}}
# [[guherî]], [[guheriyayî]], [[xirabbûyî]], [[deforme]]:
#* {{jêder-malper|ku|jêgirtin="Gilîdax" ji "Agirî Dağı" ya tirkî '''muxerref''' e|nivîskar=Nevzat EMİNOĞLU|malper=acikbilim.yok.gov.tr|sernav=Nêrînek gelemperî li Mîrektiya Hîzanê: îlm û edebiyat|sal=2016|url=https://acikbilim.yok.gov.tr/bitstream/handle/20.500.12812/101613/yokAcikBilim_10129790.pdf?sequence=-1}}
==== Formên alternatîv ====
{{kol2|ku|mixeref|mixerref|muxeref}}
==== Etîmolojî ====
Deyn ji {{deyn|ar|ku|مُحَرَّف}} ji lêkera {{g|ar|حَرَّفَ}}. Ji heman rehî: {{q|ku|texrîf}}.
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W|ar|مُحَرَّف}}
* {{Z|en}}: {{W|en|falsified}}, {{W|en|feigned}}, {{W|en|changed}}, {{W|en|corrupted}}, [[dissembled]], [[false]], [[counterfeit]], [[sham]], [[fictitious]], [[artificial]], [[factitious]]; [[affected]], [[prim]], [[finical]]
* {{Z|tr}}: {{W|tr|muharref}}, {{W|tr|sahte}}
{{werger-bin}}
4a9ozwazvpnjhp9yoykcwzor5ata6pa
nîvkurdî
0
979445
6329077
6197514
2026-08-11T11:54:31Z
Balyozbot
7867
/* Rengdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329077
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[beş|Beş]]ek bi [[kurdî]] û [[beş]]ek bi [[ziman]]ekî [[din]].
#* {{jêder-malper|ku|jêgirtin=Bê şik, divê mirov vê jî bibêje ku ev kovar '''nîvkurdî''' û nîvtirkî bûn û di ber siyasetê re cîh didan nivîs û lêkolînên wêjeyî jî ku vê taybetmendiyê dê tovên wêjeya kurmanciyê ya nuh jî biavêtana.|nivîskar=Îbrahîm Seydo Aydogan|sernav=Celadet bedirxan, çavkaniyên Hawarê û kurdayetiya nû|malper=Candname.com|sal=5/2019|url=https://candname.com/celadet-bedirxan-cavkaniyen-haware-u-kurdayetiya-nu/}}
# [[axiftin|Axaftin]] an [[nivîs]]a ku tê de [[hinek]] [[peyv]] bi [[kurdî]] û hinek jî bi zimanekî [[din]] in.
#* {{jêder-malper|ku|jêgirtin=Dûra jinekê ji Diyarbekrê telefon kir, wê jî nîvtirkî û '''nîvkurdî''' derdê xwe ji tuxtor re got.|malper=Zinarexamo.blogspot.com|sernav=Dîyaloga kerr û lalan |dîrok=2009-1-25|url=https://zinarexamo.blogspot.com/2009/01/dyaloga-kerr-lalan.html?m=1}}
==== Têkildar ====
{{kol3|ku|erebmancî|inglîzmancî|sormancî|tirkmancî|nîvziman}}
==== Etîmolojî ====
Ji {{pêş|ku|nîv-|kurdî}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
rqdlq1vrq96dz8nf45hxz50n1ztibxs
însîcam
0
979447
6328993
6260299
2026-08-11T11:51:29Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328993
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[rêkûpêkî]], [[sazgarî]], [[rewanî]], [[lihevî]], [[lihevkirin]], [[lihevhatin]], [[sazî]], [[berdewamî]], [[duzgunî]], [[tebayî]], [[konsîstans]]:
#* {{jêder-malper|ku|jêgirtin=Wezîrê Xezîneyê Şîmşek: "Ji bo ku em bigihîjin hedefa xwe ya zêdekirina refaha civakî zelalbûn, '''însîcam''', pêşbînî û hevsengiya normên navneteweyî wê bibin rêgezên me yên sereke."|malper=Aa.com.tr/kk|sal=6/2023|sernav= Wezîrê Xezîneyê Şîmşek: Zelalbûn, însîcam, pêşbînî û hevsengiya normên navneteweyî wê bibin rêgezên me yên sereke|url=https://www.aa.com.tr/kk/vg/galeriya-v%C3%AEdeoy%C3%AA/wez%C3%AEr%C3%AA-xez%C3%AEney%C3%AA-s%C3%AEmsek-zelalb%C3%BBn-%C3%AEns%C3%AEcam-p%C3%AAsb%C3%AEn%C3%AE-%C3%BB-hevsengiya-norm%C3%AAn-navnetewey%C3%AE-w%C3%AA-bibin-r%C3%AAgez%C3%AAn-me-y%C3%AAn-sereke/0}}
==== Formên alternatîv ====
*[[insicam]]
*[[însicam]]
==== Etîmolojî ====
Ji {{deyn|ar|ku|اِنْسِجَام|w=[[rêkûpêkî]], [[rewanî]]}} ji rehê {{g|ar|س ج م|w=[[herikîn]], [[rewan]] bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Beständigkeit|m}}, {{W+|de|Regelmäßigkeit|m}}, {{W+|de|Zuverlässigkeit|m}}, {{W|de|Verlässlichkeit|m}}
* {{Z|az}}: {{W|az|ardıcıllıq}}
* {{Z|bg}}: {{W+|bg|постоянство|nt}}, {{W+|bg|устойчивост|m}}
* {{Z|id}}: {{W+|id|konsistensi}}
* {{Z|eo}}: {{W|eo|kohereco}}
* {{Z|fi}}: {{W+|fi|johdonmukaisuus}}, {{W+|fi|yhdenmukaisuus}}, {{W+|fi|tasaisuus}}
* {{Z|gl}}: {{W|gl|consistencia|m}}
* {{Z|ka}}: {{W|ka|მუდმივობა}}, {{W|ka|თანმიმდევრობა}}, {{W|ka|კონსისტენტურობა}}, {{W+|ka|ერთიანობა}}, {{W|ka|შეთანხმებულობა}}, {{W|ka|ურყევობა}}
* {{Z|en}}: {{W|en|consistency}}, {{W|en|congruence}}, {{W|en|uniformity}}
* {{Z|ga}}: {{W|ga|comhsheasmhacht|m}}
* {{Z|it}}: {{W+|it|coerenza|m}}, {{W+|it|costanza|m}}
* {{Z|ca}}: {{W+|ca|consistència|m}}
* {{Z|ms}}: {{W|ms|ketekalan}}, {{W|ms|kekonsistenan}}, {{W|ms|konsistensi}}
* {{Z|no}}: {{W|no|konsistens}}
* {{Z|pl}}: {{W+|pl|spójność|m}}
* {{Z|pt}}: {{W+|pt|consistência|m}}
* {{Z|ro}}: {{W+|ro|consistență|m}}
* {{Z|es}}: {{W+|es|consistencia|m}}
* {{Z|tl}}: {{W|tl|pagkamaugnayin}}
* {{Z|tr}}: {{W|tr|insicam}}
* {{Z|el}}: {{W+|el|συνέπεια|m}}
{{werger-bin}}
2fmhzfwuadahfhgecl3wy3ng1eqwmul
giyawerk
0
979448
6328967
5150146
2026-08-11T11:50:23Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328967
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{guherto|giyagewrik}}:
#* {{jêder-malper|ku|jêgirtin=Li Tilloya navçeya Sêrtê Salvia Siirtica (giyawerk) ku tenê bi qasî 15 rojan vedike, tê parastin… Şêniyên herêmê tevlî ekîban her sal devera ku '''giyawerk''' lê digihîje ji bo biparêzin der û dora wê têl dikin û diparêzin.|malper=Aa.com.tr/kk|sal=6/2023|sernav= Giyawerk a li Sêrtê bi tenê qasî 15 rojan vedike tê parastin|url=https://www.aa.com.tr/kk/jiyan/giyawerk-a-li-s%C3%AArt%C3%AA-bi-ten%C3%AA-qas%C3%AE-15-rojan-vedike-t%C3%AA-parastin/2913459}}
teon9jhzfblvxb692nbg10oi94gia0c
emilîn
0
979829
6328945
6306039
2026-08-11T11:48:11Z
Balyozbot
7867
sererastkirin
6328945
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|'emilîn}} / عەملین
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=x-ngh|niha=-emil-|borî=-emilî-}} {{tewandin}}
# [[kar kirin]], [[şol kirin]], [[îş kirin]], [[xebitîn]], [[şixulîn]]
#* {{jêder-malper|ku|jêgirtin=Lêlê divê sala wê salê dere dergistiyê xwe re cih û karan '''diemile'''.|malper=candname.com|sernav=strana "Gewrê"|nivîskar={{w|Meryem Xan}} (1904-1949)|url=https://candname.com/awaza-xeribi-teneti-huzn-u-kedere-meryem-xan/}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|عَمِلَ}} + kurdî {{q|ku|-în}}. [[hevreh|Hevreh]]a {{q|ku|emel}}, {{q|ku|emilandin}}, {{q|ku|amil}}.
==== Bide ber ====
* {{g|ku|elimîn}}
==== Bi alfabeyêmn din ====
* {{ku-ar|عەملین}}
==== Têkildarî ====
{{kol2|ku
|amil
|emel
|emilandin
}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[karkirin]], [[şolkirin]], [[îşkirin]], [[xebitîn]], [[şixulîn]]
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
fw2qu641m1d4k17lism31e01hyofze4
muaythai
0
979966
6329065
6260695
2026-08-11T11:54:05Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329065
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|muaytay|miwaytay}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|spor}} [[spor|Spor]]ek e mirov bi [[mist]]an û [[pêhn]]an û [[ser]]î li [[dijber]]ê xwe dide.
#: {{hevwate|ku|tayboksîng}}
#* {{jêder-malper|ku|jêgirtin=Rahêner Gursel Tayam jî got: “Şampiyoniya Êrîvanê di sê beşan de bo ciwanên me baş bû. Xelkê me ji ber ku Êrîvanê mînak werdigirin, êdî bêtirs zarokên xwe dişînin vê derê. Êrîvan di beşên boks, kickboks û '''muaythai''' de bû şampiyon. Em şanaziyê pê dikin.|malper=Rudaw.net/kurmanci|sal=6/2023|sernav=Şampiyona Dêrsîmî: Min hêviyên keçên Dêrsîmê geş kirin|url=https://www.rudaw.net/kurmanci/sports/27062023}}
==== Formên alternatîv ====
* [[muaytay]]
==== Têkildar ====
* [[lethwei]]
* [[muay boran]]
* [[muay lao]]
==== Etîmolojî ====
Bi riya îngilîzî {{q|en|Muay Thai}} ji {{deyn|th|ku|มวยไทย|tr=muai-tai|w=boksînga taylandî}} ji {{g|th|มวย|w=boksîng}} + {{g|th|ไทย|w=taylandî}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
o5vqfuzhihhmmpxq78299j2cehr9b5y
fîlvan
0
979984
6328962
5998289
2026-08-11T11:50:09Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328962
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
*{{ku-IPA}}
=== Navdêr ===
[[Wêne:Mahout_on_an_elephant;_gouache_on_paper.jpg|thumb|'''Fîlvanekî''' li fîlekî siwar.]]
{{navdêr|ku|z=mn}}
# {{mijar|ku|meslek}} [[siwar|Siwar]]ê [[fîl]]an, [[xwedîker]]ê [[fîl]]an, [[rahêner]]ê [[fîl]]an.
#: {{hevmane|ku|fîlajo}}
#* {{jêder-malper|ku|jêgirtin=Û karwan bi rêh xistin û '''fîlvan''' da pey fîl û stûrvan (=[[hêştir]]van) da pey stûr (=hêştirê) û [[parxêl]]van da pey parxêlê.'' |malper=ku.wikibooks.org|https://ku.wikibooks.org/wiki/Ay%C4%81dg%C4%81r_%C4%AB_zar%C4%93r%C4%81n|sal=7/2013|sernav=Yadigarê zerîran, wergera kurdî|url=https://ku.wikibooks.org/wiki/Ay%C4%81dg%C4%81r_%C4%AB_zar%C4%93r%C4%81n}}
==== Bi alfabeyên din ====
* {{ku-ar|فیلڤان}}
==== Jê ====
* {{g|ku|fîlvanane}}
* {{g|ku|fîlvanî}}
* {{g|ku|fîlvanîtî}}
* {{g|ku|fîlvantî}}
==== Etîmolojî ====
Ji {{paş|ku|fîl|-van}}, herwiha bide ber farisî {{g|fa|فیلبان|tr=fîlban}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Mahaut|n}}, {{W+|de|Mahout|n}}, {{W+|de|Mahut|n}}, {{W-|de|Elefantentreiber|n}}
* {{Z|as}}: {{W-|as|মাউত}}
* {{Z|eu}}: {{W-|eu|mahout}}
* {{Z|bn}}: {{W+|bn|মাহুত}}
* {{Z|my}}: {{W+|my|ဆင်ဦးစီး}}, {{W+|my|ယရည်း}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|象夫}}, {{W+|cmn|象奴}}
* {{Z|da}}: {{W-|da|mahout}}, {{W-|da|mahut}}, {{W-|da|elefantdriver}}, {{W-|da|elefantfører}}
* {{Z|id}}: {{W+|id|mahout}}
* {{Z|et}}: {{W-|et|elevandijuht}}
* {{Z|fa}}: {{W-|fa|فیلبان}}
* {{Z|fi}}: {{W-|fi|norsunajaja}}
* {{Z|fr}}: {{W+|fr|mahout|n}}, {{W+|fr|cornac|n}}
* {{Z|gl}}: {{W-|gl|cornaca|n}}
* {{Z|inc-ogu}}: {{W-|inc-ogu|पुंतार}}
* {{Z|hi}}: {{W-|hi|महौत}}, {{W+|hi|महाउत}}, {{W+|hi|महावत|n}}
* {{Z|he}}: {{W-|he|פַּיָּל|n|tr=payal}}
* {{Z|en}}: {{W+|en|mahout}}, {{W|en|elephant keeper}}, {{W|en|elephant driver}}, {{W|en|elephant trainer}}
* {{Z|rkt}}: {{W-|rkt|মাহুত}}
* {{Z|ca}}: {{W-|ca|mahout}}
* {{Z|ko}}: {{W-|ko|머하웃}}
* {{Z|lt}}: {{W-|lt|mahoutas}}
* {{Z|mk}}: {{W-|mk|ма́хаут|n}}
* {{Z|ml}}: {{W+|ml|ആനപ്പാപ്പാൻ|n}}, {{W+|ml|പാപ്പാൻ|n}}
* {{Z|hu}}: {{W-|hu|elefánthajcsár}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|elefantfører}}
* {{Z|pl}}: {{W+|pl|kornak|n}}
* {{Z|pt}}: {{W+|pt|cornaca|n}}
* {{Z|pa}}: {{W-|pa|ਮਹੌਤ}}
* {{Z|ro}}: {{W+|ro|cornac}}
* {{Z|ru}}: {{W-|ru|махау́т|n}}, {{W-|ru|[[пого́нщик]] [[слон|слоно́в]]|n}}
* {{Z|es}}: {{W-|es|mahout|n}}, {{W+|es|cornaca|n}}
* {{Z|sv}}: {{W-|sv|mahout}}
* {{Z|ta}}: {{W+|ta|பணிக்கன்}}, {{W+|ta|யானைப்பாகன்}}
* {{Z|th}}: {{W+|th|ควาญ}}, {{W-|th|ควาญช้าง}}
* {{Z|te}}: {{W+|te|గజారోహుడు}}, {{W+|te|మావటి}}
* {{Z|mkh-mvi}}: {{W-|mkh-mvi|quan voi}}
* {{Z|vi}}: {{W+|vi|quản tượng}}
* {{Z|km}}: {{W-|km|ហត្ថិគោបកៈ|tr=hattʰe’koopa’ka’}}, {{W-|km|ហ្មដំរី}}, {{W+|km|ទ្រមាក់|tr=trɔmeak}}
{{werger-bin}}
:{{werger çavkanî|en|mahout|beş=Ev qismê Wergerê|oldid=75056231}}
bljulah7vi5dr2gh0hrq9ydy7u9zu0n
çileyê havînê
0
980029
6328889
6260340
2026-08-11T11:24:51Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328889
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|ç(h)ileyê ha"vînê|ç(h)ilê ha"vînê}}
=== Navdêr ===
[[Wêne:Northern Spain (20576352056).jpg|thumb|Li '''çileyê havînê''' bi piranî hewa gelekî germ e, barîn kêm e yan nîne û erd hişk dibe.]]
{{navdêr|ku|z=n}}
# [[nîv]]a [[havîn]]ê, [[nav]]a [[havîn]]ê, <br>[[germ]]tirîn [[dem]]a [[havîn]]ê, <br>40 rojên germtirîn yên havînê
#: {{dijwate|ku|çileyê zivistanê}}
# [[cejn]]eke [[êzidî|êzidiyan]] e ku [[havîn]]an tê kirin:
#* {{jêder-malper|ku|jêgirtin=Îro roja duşemê 02.08.2021ê Cejna '''Çilê Havînê''' ye li nava êzdiyan lêbelê îsal ji ber vîrusa koronayê merasîmên cejna çileyê havînê nayêne kirin.|malper=basnews.com|https://www.basnews.com/kr/|sal=8/2021|sernav=Îro Cejna Çilê Havînê ye li nava êzdiyan|url=https://www.basnews.com/kr/babat/704832}}
==== Formên alternatîv ====
* {{mj|devkî}} [[çilê havînê]]
==== Bi alfabeyên din ====
* {{ku-ar|چلەیێ هاڤینێ}}
* {{ku-kr|чʹьләйе һавине}}
==== Pirhejmar ====
* {{mj|nivîskî}} [[çileyên havînê]], [[çileyên havînan]]
* {{mj|devkî}} [[çilên havînê]], [[çilên havîna]]
==== Etîmolojî ====
[[çile]] + [[-yê]] + [[havîn]] + [[-ê]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Hochsommer|n}}
* {{Z|ar}}: {{W-|ar|قَيْظ}}, {{W-|ar|مُنْتَصَفُ الصَّيْف}}
* {{Z|et}}: {{W-|et|kesksuvi}}, {{W-|et|südasuvi}}
* {{Z|fa}}: {{W-|fa|چلهی تابستان|tr=çileyi tabistan}}
* {{Z|fi}}: {{W-|fi|keskikesä}}
* {{Z|nl}}: {{W+|nl|midzomer|n}}
* {{Z|en}}: {{W+|en|midsummer}}, {{W+|en|dog days}}
* {{Z|is}}: {{W-|is|miðsumar|nt}}
* {{Z|ja}}: {{W+|ja|真夏|tr=まなつ, manatsu}}
* {{Z|ko}}: {{W+|ko|한여름}}
* {{Z|nv}}: {{W-|nv|shį́ʼííłnííʼ|sc=Latn}}
* {{Z|pl}}: {{W-|pl|śródlecie|nt}}
* {{Z|ro}}: {{W-|ro|mijlocul verii|nt}}, {{W+|ro|miezul verii|nt}}
* {{Z|se}}: {{W-|se|mihcamárat}}
* norwecî:
*: {{Z|nb}}: {{W-|nb|midtsommer|nt}}
* {{Z|es}}: {{W-|es|pleno verano|n}}
* {{Z|sv}}: {{W+|sv|midsommar|c}}
* {{Z|tr}}: {{W-|tr|yazın ortası}}
* {{Z|el}}: {{W+|el|μεσοκαλόκαιρο|nt}}
{{werger-bin}}
fm3g8de8ar0xrq8zuswf6y3rgerbzlr
6328927
6328889
2026-08-11T11:41:24Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6328927
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|ç(h)ileyê ha"vînê|ç(h)ilê ha"vînê}}
=== Navdêr ===
[[Wêne:Northern Spain (20576352056).jpg|thumb|Li '''çileyê havînê''' bi piranî hewa gelekî germ e, barîn kêm e yan nîne û erd hişk dibe.]]
{{navdêr|ku|z=n}}
# [[nîv]]a [[havîn]]ê, [[nav]]a [[havîn]]ê, <br>[[germ]]tirîn [[dem]]a [[havîn]]ê, <br>40 rojên germtirîn yên havînê
#: {{dijwate|ku|çileyê zivistanê}}
# [[cejn]]eke [[êzidî|êzidiyan]] e ku [[havîn]]an tê kirin:
#* {{jêder-malper|ku|jêgirtin=Îro roja duşemê 02.08.2021ê Cejna '''Çilê Havînê''' ye li nava êzdiyan lêbelê îsal ji ber vîrusa koronayê merasîmên cejna çileyê havînê nayêne kirin.|malper=basnews.com|https://www.basnews.com/kr/|sal=8/2021|sernav=Îro Cejna Çilê Havînê ye li nava êzdiyan|url=https://www.basnews.com/kr/babat/704832}}
==== Bi alfabeyên din ====
* {{ku-ar|چلەیێ هاڤینێ}}
* {{ku-kr|чʹьләйе һавине}}
==== Formên alternatîv ====
* {{mj|devkî}} [[çilê havînê]]
==== Etîmolojî ====
[[çile]] + [[-yê]] + [[havîn]] + [[-ê]]
==== Pirhejmar ====
* {{mj|nivîskî}} [[çileyên havînê]], [[çileyên havînan]]
* {{mj|devkî}} [[çilên havînê]], [[çilên havîna]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Hochsommer|n}}
* {{Z|ar}}: {{W-|ar|قَيْظ}}, {{W-|ar|مُنْتَصَفُ الصَّيْف}}
* {{Z|et}}: {{W-|et|kesksuvi}}, {{W-|et|südasuvi}}
* {{Z|fa}}: {{W-|fa|چلهی تابستان|tr=çileyi tabistan}}
* {{Z|fi}}: {{W-|fi|keskikesä}}
* {{Z|nl}}: {{W+|nl|midzomer|n}}
* {{Z|en}}: {{W+|en|midsummer}}, {{W+|en|dog days}}
* {{Z|is}}: {{W-|is|miðsumar|nt}}
* {{Z|ja}}: {{W+|ja|真夏|tr=まなつ, manatsu}}
* {{Z|ko}}: {{W+|ko|한여름}}
* {{Z|nv}}: {{W-|nv|shį́ʼííłnííʼ|sc=Latn}}
* {{Z|pl}}: {{W-|pl|śródlecie|nt}}
* {{Z|ro}}: {{W-|ro|mijlocul verii|nt}}, {{W+|ro|miezul verii|nt}}
* {{Z|se}}: {{W-|se|mihcamárat}}
* norwecî:
*: {{Z|nb}}: {{W-|nb|midtsommer|nt}}
* {{Z|es}}: {{W-|es|pleno verano|n}}
* {{Z|sv}}: {{W+|sv|midsommar|c}}
* {{Z|tr}}: {{W-|tr|yazın ortası}}
* {{Z|el}}: {{W+|el|μεσοκαλόκαιρο|nt}}
{{werger-bin}}
p6lqttc85jybqs7p6n20pro7wrcq4ex
çilê havînê
0
980030
6328890
5932215
2026-08-11T11:24:54Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328890
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=n}}
# {{guherto|çileyê havînê}}
#* {{jêder-malper|ku|jêgirtin=Îro roja duşemê 02.08.2021ê Cejna '''Çilê Havînê''' ye li nava êzdiyan lêbelê îsal ji ber vîrusa koronayê merasîmên cejna çileyê havînê nayêne kirin.|malper=basnews.com|https://www.basnews.com/kr/|sal=8/2021|sernav=Îro Cejna Çilê Havînê ye li nava êzdiyan|url=https://www.basnews.com/kr/babat/704832}}
==== Etîmolojî ====
Ji {{heve|ku|çile|havîn}}.
94mnpb1wvioo7pxfwdaz4idpwxkgnmy
ekoturîzm
0
980033
6328941
6260769
2026-08-11T11:47:16Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328941
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|ekʰotʰurîzm}}
=== Navdêr ===
[[Wêne:Llano del Muerto en Perquín, El Salvador - 2011.jpg|thumb|[[sûlav|Sûlav]] yek ji [[xweştivî]]tirîn [[dîmen]]ên geştiyarî ne.]]
{{navdêr|ku|z=m}}
# [[geştiyarî|geştyariya]] [[berpirsiyarane]], <br>[[turîzm]]a ku [[rêz lê girtin|rêz li]] [[heywan]] û [[riwek]] û [[aborî|aboriya]] [[cih]]ê [[turîzm]]ê [[rêz lê girtin|digire]]
#: {{hevwate|ku|turîzma ekolojîk|geştiyariya kesk|turîzma kesk}}
#* {{jêder-malper|ku|jêgirtin=Li Sariqamûşa navçeya Qersê ya xweza û daristanên wê newaze ne, qada '''ekoturîzmê''' roj bi roj bala turîstên xwemalî û biyanî dikişîne.|malper=AA|sal=7/2023|sernav=Qada ekoturîzmê ya li Qersê derfet dide ku meriv ji qelebalixiya bajaran dûr bikeve|url=https://www.aa.com.tr/kk/jiyan/qada-eko-tur%C3%AEzm%C3%AA-ya-li-qers%C3%AA-derfet-dide-ku-meriv-ji-qelebalixiya-bajaran-d%C3%BBr-bikeve/29350913}}
==== Formên alternatîv ====
* [[ekotûrîzm]]
==== Bi alfabeyên din ====
* {{ku-ar|ئەکۆتوریزم}}
* {{ku-kr|әкотӧризм}}
==== Têkildarî ====
* [[ekoturîst]]
* [[ekoturîstîk]]
==== Etîmolojî ====
Ji {{deyn|en|ku|ecotourism}}, binêre ''[[eko-]]'' û ''[[turîzm]]''
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|ekotoerisme}}
* {{Z|de}}: {{W-|de|Ökotourismus|n}}
* {{Z|az}}: {{W-|az|ekoturizm}}
* {{Z|cs}}: {{W-|cs|ekoturistika}}
* {{Z|zh}}:
:*mandarînî: {{W+|cmn|生態旅遊|tr=shēngtài lǚyóu}}, {{W|cmn|生態觀光|tr=shēngtài guānguāng}}
* {{Z|id}}: {{W-|id|ekowisata}}, {{W+|id|ekoturisme}}
* {{Z|ar}}: {{W-|ar|سِيَاحَة بِيئِيَّة|m}}
* {{Z|hy}}: {{W|hy|էկոտուրիզմ|tr=ēkoturizm}}
* {{Z|eo}}: {{W-|eo|ekoturismo}}
* {{Z|et}}: {{W-|et|ökoturism}}
* {{Z|fi}}: {{W-|fi|ekomatkailu}}, {{W-|fi|ekoturismi}}
* {{Z|fr}}: {{W|fr|écotourisme|n}}
* {{Z|nl}}: {{W+|nl|ecotoerisme}}
* {{Z|en}}: {{W+|en|ecotourism}}
* {{Z|it}}: {{W-|it|ecoturismo|n}}
* {{Z|is}}: {{W-|is|visthæf ferðamennska}}
* {{Z|ca}}: {{W+|ca|ecoturisme|n}}
* {{Z|lv}}: {{W-|lv|ekotūrisms}}
* {{Z|lt}}: {{W-|lt|ekoturizmas}}
* {{Z|ms}}: {{W-|ms|ekopelancongan}}
* {{Z|hu}}: {{W-|hu|ökoturizmus}}
* {{Z|no}}: {{W-|no|økoturisme}}
* {{Z|pl}}: {{W-|pl|ekoturystyka}}
* {{Z|pt}}: {{W-|pt|ecoturismo|n}}
* {{Z|ro}}: {{W-|ro|ecoturism}}
* {{Z|se}}: {{W|se|ekoturisma}}
* {{Z|sc}}: {{W|sc|ecoturismu}}
* {{Z|sh}}: {{W-|sh|eko-turizam}}
* {{Z|es}}: {{W+|es|ecoturismo|n}}
* {{Z|sv}}: {{W-|sv|ekoturism}}
* {{Z|tl}}: {{W-|tl|ekoturismo}}
* {{Z|tr}}: {{W-|tr|ekoturizm}}
* {{Z|vi}}: {{W-|vi|du lịch sinh thái}}
{{werger-bin}}
hm5wkw4khz226po9sgl1wcparlj4xwd
Endam
0
980048
6328946
6295204
2026-08-11T11:48:18Z
Balyozbot
7867
/* Serenav */ sererastkirin
6328946
wikitext
text/x-wiki
{{bnr-h|endam}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Serenav ===
{{serenav|ku|z=n}}
# {{f|ku|nadir}} Navekî {{navkes|ku|law}} e.
#* {{jêder-malper|ku|jêgirtin=Nûçegihanê Rûdawê '''Endam''' Cebar ragihand... ku... agir bi wî cihî ketiye û nehatiye kontrolkirin...|malper=Rudaw.net/kurmanci|sal=7/2023|sernav=Agir bi derdora Firokexenaya Herîrê ket...|url=https://www.rudaw.net/kurmanci/kurdistan/060720237}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Etîmolojî ====
Ji {{q|ku|endam}}.
9ijzd171m7k4q936kgy7f2akmhrn68r
jeopark
0
1170332
6328995
6309308
2026-08-11T11:51:33Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328995
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Yehliu_-_Mushroom_Rock_01.jpg|thumb|250px|'''Jeoparkek''']]
{{navdêr|ku|z=m}}
# [[park|Park]]a ku ji ber [[giringî|giringiya]] [[jeolojî|jeolojiya]] xwe hatiye [[parastin]].
#* {{jêder-malper|ku|jêgirtin='''Jeoparka''' Nemrûdê ya li Bidlîsê li ser Şaxa '''Jeoparka''' Kurewî ya Rêxistina Perwerde, Zanist û Çandê ya Neteweyên Yekbûyî (UNESCO) hat hesibandin. Ji ber vê, li '''jeoparkê''' xebat tên kirin û li vir 50 qadên jeosîtê hatin diyarkirin. .|malper=Aa.com.tr/kk/|sal=9/2023|sernav=Li Jeoparka Nemrûdê 50 qadên jeosîtê hatin diyarkirin|url=https://www.aa.com.tr/kk/pg/galeriya-w%C3%AAneyan/li-jeoparka-nemr%C3%BBd%C3%AA-50-qad%C3%AAn-jeos%C3%AEt%C3%AA-hatin-diyarkirin/}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Têkildar ====
* [[jeolog]]
* [[jeolojî]]
* [[jeolojîk]]
* [[jeosît]]
* [[jeoturîzm]]
==== Etîmolojî ====
Ji {{qertaf|ku|jeo-|park}} li ber modela {{ji|en|ku|geopark}}, {{ji|fr|ku|géoparc}} û/yan {{ji|tr|ku|jeopark}}.
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W|ar|حديقة جيولوجية|m}}
* {{Z|fa}}: {{W+|fa|ژئوپارک|tr=jêopark}}
* {{Z|fr}}: {{W+|fr|géoparc}}
* {{Z|en}}: {{W+|en|geopark}}
* {{Z|tr}}: {{W+|tr|jeopark}}
{{werger-bin}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# {{g|ku|jeopark}}
kulbv2pm4jtv17r36by4owks284m47m
jeosît
0
1170334
6328996
6309310
2026-08-11T11:51:35Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6328996
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Yehliu_-_Mushroom_Rock_01.jpg|thumb|250px|'''Jeosîtek''']]
{{navdêr|ku|z=m}}
# [[cih|Cihê]] bi [[jeolojî|jeolojiya]] xwe [[giring]]; [[cih]]ê ku ji ber [[giringî|giringiya]] [[jeolojî|jeolojiya]] xwe hatiye [[parastin]].
#* {{jêder-malper|ku|jêgirtin=Jeoparka Nemrûdê ya li Bidlîsê li ser Şaxa Jeoparka Kurewî ya Rêxistina Perwerde, Zanist û Çandê ya Neteweyên Yekbûyî (UNESCO) hat hesibandin. Ji ber vê, li jeoparkê xebat tên kirin û li vir 50 qadên '''jeosîtê''' hatin diyarkirin.|malper=Aa.com.tr/kk/|sal=9/2023|sernav=Li Jeoparka Nemrûdê 50 qadên jeosîtê hatin diyarkirin|url=https://www.aa.com.tr/kk/pg/galeriya-w%C3%AAneyan/li-jeoparka-nemr%C3%BBd%C3%AA-50-qad%C3%AAn-jeos%C3%AEt%C3%AA-hatin-diyarkirin/}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Têkildar ====
* [[jeolog]]
* [[jeolojî]]
* [[jeolojîk]]
* [[jeopark]]
* [[jeoturîzm]]
==== Etîmolojî ====
Ji {{qertaf|ku|jeo-|sîte}} li ber modela {{ji|en|ku|geosite}}, {{ji|fr|ku|géosite}} û/yan {{ji|tr|ku|jeosit}}.
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W+|fr|géosite}}
* {{Z|en}}: {{W+|en|geosite}}
* {{Z|tr}}: {{W+|tr|jeosit}}
{{werger-bin}}
mj0tis6gum7efcai24udl6tiwurikyl
mentiq
0
1207870
6329054
6311950
2026-08-11T11:53:43Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329054
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{awayekî din|ku|mantiq}}
#* {{jêder-malper|ku|jêgirtin=Bi vegera li ferhengan tê zanîn ku zenberî cureyek ji cureyên gemiyên mezin e. Û li vir, ji xwe dê '''mentiq''' û atmosfera mailkên xanî roniyê bihavêjin ser quncikên tarî yên di zimanê Mem û Zînê de. Xanî dibêje ez bûme mîna Dicle, gava ku pêlan vedide û gemiyên mîna Zenberî dide berxwe.|nivîskar=Jan Dost|sernav=Bêjing û zenberekên seydayê Bozarslan|url=https://diyarname.com/article.php?Idx=94|malper=Diyarname.com|sal=3/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[bêmentiq]]
* [[bêmentiqî]]
* [[bimentiq]]
* [[mentiqdar]]
* [[mentiqdarî]]
* [[mentiqî]]
maxlzalda9pycpsbd2j7wmweas7hrkv
destpirtûk
0
1254028
6328909
6323424
2026-08-11T11:27:45Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328909
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|destp(h)irtûk}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kitêb|Kitêba]] [[referans]]ê; [[kitêb]]a [[zanist]]ekê ku mirov dikare [[gav]]a [[hewce]] be lê li hin [[agahî|agahiyan]] [[lê gerîn|bigere]]
#: {{hevwate|ku|rêbername|berdestname|destname|kitêba destî}}
#* {{jêder-malper|ku|jêgirtin=Di '''destpirtûka''' “Rewşa Derûnî, Trawma û Alîkarî Piştî Karesatan” de pisporên tenduristiya derûnî xwestiye li ser çend xalên girîng rawestin ku mirov di wan rewşên karesat û bobelatan de hay ji bertek, nîşêt û rêyên xweparastinê hebin da ku hem bo xwe û hem bo derdora xwe bibin alîkar.|malper=Rudaw.net/kurmanci|sal=10/2023|sernav=Destpirtûka ‘Rewşa Derûnî, Trawma û Alîkarî Piştî Karesatan’ derket|url=https://www.rudaw.net/kurmanci/culture/30102023}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{pêk|ku|dest|pirtûk}}, {{yekser|en|ku|handbook|hûr=1}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Handbuch|nt}}
* {{Z|eu}}: {{W-|eu|eskuliburu}}, {{W-|eu|gidaliburu}}
* {{Z|be}}: {{W-|be|даве́днік|n|sc=Cyrl}}
* {{Z|bg}}: {{W+|bg|справочник|n}}, {{W+|bg|наръчник|n}}
* {{Z|cs}}: {{W+|cs|příručka|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|手冊|tr=shǒucè}}
* {{Z|id}}: {{W+|id|buku pegangan}}
* {{Z|hy}}: {{W+|hy|ձեռնարկ}}
* {{Z|eo}}: {{W-|eo|manlibro}}
* {{Z|fa}}: {{W+|fa|کتاب دستی}}
* {{Z|fi}}: {{W+|fi|käsikirja}}
* {{Z|fr}}: {{W+|fr|manuel|n}}
* {{Z|fy}}: {{W-|fy|hânboek|nt}}
* {{Z|gd}}: {{W-|gd|leabhar-làimhe|n}}
* {{Z|hi}}: {{W-|hi|लघु ग्रंथ|n}}
* {{Z|nl}}: {{W+|nl|handboek|nt}}
* {{Z|he}}: {{W-|he|סֵפֶר עֵזֶר|n|tr=séfer 'ézer}}, {{W-|he|סֵפֶר כִּיס|n|tr=séfer kís}}, {{W-|he|ספר שימוש|n|tr=séfer shimúsh|cuda=ספר שימוש \ סֵפֶר שִׁמּוּשׁ}}
* {{Z|ang}}: {{W-|ang|handbōc|m}}
* {{Z|en}}: {{W+|en|handbook}}
* {{Z|it}}: {{W+|it|manuale|n}}, {{W+|it|guida|m}}
* {{Z|is}}: {{W-|is|handbók|m}}
* {{Z|ja}}: {{W+|ja|便覧|tr=べんらん, benran|sc=Jpan}}, {{W-|ja|ハンドブック|tr=handobukku|sc=Jpan}}, {{W+|ja|手帳|tr=てちょう, techō|sc=Jpan}}, {{W-|ja|手帖|tr=てちょう, techō|sc=Jpan}}, {{W+|ja|案内書|tr=あんないしょ, annaisho|sc=Jpan}}
* {{Z|ko}}: {{W+|ko|편람}}, {{W+|ko|안내서}}, {{W-|ko|핸드북}}
* {{Z|lv}}: {{W-|lv|rokasgrāmata|m}}
* {{Z|mk}}: {{W-|mk|при́рачник|n}}, {{W-|mk|у́патство|nt}}
* {{Z|ms}}: {{W-|ms|buku panduan}}
* {{Z|mi}}: {{W-|mi|pukapuka aratohu}}
* {{Z|hu}}: {{W+|hu|kézikönyv}}, {{W+|hu|segédkönyv}}, {{W+|hu|tankönyv}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|håndbok|n|m}}
* {{Z|pl}}: {{W+|pl|podręcznik|n}}
* {{Z|pt}}: {{W+|pt|manual|n}}
* {{Z|ro}}: {{W+|ro|manual|nt}}
* {{Z|ru}}: {{W+|ru|спра́вочник|n}}, {{W+|ru|посо́бие|nt}}
* {{Z|sd}}: {{W+|sd|دَستِينامو|n}}
* {{Z|es}}: {{W+|es|manual|n}}, {{W+|es|prontuario|n}}
* {{Z|sv}}: {{W+|sv|handbok|g}}
* {{Z|tl}}: {{W-|tl|dalaklat}}
* {{Z|tr}}: {{W+|tr|el kitabı}}
* {{Z|uk}}: {{W+|uk|довідни́к|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|sổ tay}}
* {{Z|cy}}: {{W+|cy|llawlyfr|n}}
* {{Z|yi}}: {{W-|yi|האַנטבוך|nt}}, {{W-|yi|האַנטביכל|nt}}
* {{Z|el}}: {{W+|el|εγχειρίδιο|nt}}
*: Kevn: {{W-|grc|ἐγχειρίδιον|nt}}
{{werger-bin}}
:{{werger çavkanî|en|handbook|beş=Ev qismê Wergerê|oldid=73175653}}
l4jrg2qhgn223yu3rmwaxqe6qo7su61
bîbliyomanî
0
1263704
6328823
6260917
2026-08-11T00:31:33Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328823
wikitext
text/x-wiki
{{bêçavkanî}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[şeydayî|şeydayiya]] [[kitêb]] û [[pirtûk]]an, <br>[[mecnûnî|mecnûniya]] [[kitêb]]an, <br>[[hezkirin]]a [[bêhed]] ji [[kitêb]]an û [[berhevkirin]]a wan
#* {{jêder-malper|ku|jêgirtin=“Kesên ji pirtûkan hez dikin re bibliyofil tê gotin. Bibliyo pirtûk e, fîl jî hezkirin e, bibliyofil yanê kesê ji pirtûkan hez dike. Wekî din bibliyomanî heye. Yanê mirovê ku pirtûkan kom dike. Ez bi xwe di navbera bibliyofilî û bibliyomanî de me.|malper=Rudaw.net/kurmanci|sal=11/2023|sernav=Sehafekî Kurd wekî arkeologan dikeve pey pirtûkên kevin|url=https://www.rudaw.net/kurmanci/culture/13112023}}
==== Formên alternatîv ====
* [[bîbliyomaniya]]
* [[bîbliyomanya]]
==== Têkildar ====
* [[bîbliyomanyak]]
==== Etîmolojî ====
Ji {{deyn|tr|ku|bibliyomani}} ji {{ji|fr|ku|bibliomanie}}; ''[[bîbliyo-]]'' + ''[[-manî]]''.
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W+|fr|bibliomanie|m}}
* {{Z|en}}: {{W+|en|bibliomania}}
* {{Z|pl}}: {{W+|pl|bibliomania|m}}
* {{Z|pt}}: {{W+|pt|bibliomania|m}}
* {{Z|tr}}: {{W+|tr|bibliyomani}}
* {{Z|el}}: {{W+|el|βιβλιομανία|m}}
{{werger-bin}}
:{{werger çavkanî|en|bibliomania|beş=Ev qismê Wergerê|oldid=75998002}}
kvu9mygt6b66r29vpgwx9wuy9nhwj1o
cîwarbûn
0
1318756
6328875
6304445
2026-08-11T10:52:28Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6328875
wikitext
text/x-wiki
{{bnr-l|cîwar bûn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[bicihbûn|Bicihbûn]]a li cihekî.
#: {{hevmane|ku|îskan}}
#* {{jêder-malper|ku|jêgirtin=Gelek demên dirêj ew hev nabînin. Piştî hatin û '''cîwarbûna''' Stockholmê jî tenêmayîna Şanazê dîsa berdewam dike.|nivîskar=Rohat Alakom|sernav=Ji Edebîyata Kurdên Swêdê: Trîlojîya Mehmed Dehsiwar|url=https://www.kurdarastirmalari.com/yazi-detay-oku-114|urlya-arşîvê=https://web.archive.org/web/20240213174151/https://www.kurdarastirmalari.com/yazi-detay-oku-114|malper=kurdarastirmalari.com|dîrok=2021-04-09}}
#* {{jêder-kovar|ku|jêgirtin=Mesela di nav rêvebiriyên mandater de li Iraq û Sûriyeyê ji bo Kurdan çêbûna hin fersendan, Silêmanî, Şam û heta dereceyekê Bexda derxistiye pêş; di wextê Şerê Cîhanê yê Yekem de '''cîwarbûna''' hin eşîrên Êzidî li Qefqasyayê, Rewan (Êrîvan) kiriye navendek; di dema cuntayên leşkerî de koçberiya ber bi diyasporayê ve, hin bajarên Ewropayê lê xasma Stockholm derxistiye pêş; di dema şerê sar de avabûna komareke temenkin li Mehabadê wahayeke edebî welidandiye; bi geşbûna têkoşîna Kurdî re li Kurdistanê çêbûna hin reform û destkeftiyan, cardin Stenbol, Silêmanî, Hewlêr, Amedê wek mekanên senkronîk ên Kurdî derxistiye pêş.|kovar=Nûbihar Akademî|sernav=Qonaxa Stenbolê di Edebiyata Kurdî ya Modern de|url=https://dergipark.org.tr/tr/download/article-file/503946|nivîskar=Ramazan Çeçen|urlya-arşîvê=https://web.archive.org/web/20240213174616/https://dergipark.org.tr/tr/download/article-file/503946|hejmar=8|sal=2017|rûpel=44}}
#* {{jêder-malper|ku|jêgirtin=Hejmara yên ku '''cîwarbûna''' li Kurdistanê baştir dibînin, piştî dagîrkirina Mûsilê duqat dibe.|nivîskar=Dr. Azad Ehmed Elî|sernav=Erebên Kurdistanê û têkiliyên wan bi Erebên Erebistanê re|url=https://www.rudaw.net/kurmanci/opinion/18042015|urlya-arşîvê=https://web.archive.org/web/20240213175205/https://www.rudaw.net/kurmanci/opinion/18042015|malper=Rûdaw Kurmancî|dîrok=2015-04-18}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{heve|ku|cîwar|bûn}}. "Bi"ya di serî de ji bo sivikkirina telafûzê ketîye, eslen wekî "'''''bi'''cihûwar'''bûn'''''".
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|settling}}
* {{Z|tr}}: {{W+|tr|yerleşme}}
{{werger-bin}}
5pdbtwkbsj9tridwmpm9noy3ygla1m9
kurmanciya jorê
0
1324887
6329035
6310773
2026-08-11T11:53:02Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329035
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|ziman}} {{hevmaneya|ku|kurmancî}}
#* {{jêder-pirtûk|ku|jêgirtin=Van weşanên bi kurdî û osmanî, bi awayekî fireh, cih dan ziman, çand û berhemên edebiyata kurdî. Wan herdu zaravayên mezintirîn, '''kurmanciya jorê''' û kurmanciya jêrê esas girtin. Di nav van weşanan de, ya girîng, bêguman, Jîn e.|nivîskar={{w|Mehmed Uzun}}|sernav={{w|Destpêka edebiyata kurdî}}|sal=1992}}
==== Tewandin ====
{{ku-tewîn-nav/nû|heve=îzafe}}
==== Binêre ====
* {{mane|soranî}} {{g|ku|kurmanciya jêrê}}
g7sz3igqbvinlm1sk1mdvzpuzqgfuao
kurmanciya jêrê
0
1324888
6329034
6310774
2026-08-11T11:53:00Z
Balyozbot
7867
/* Navdêr */ sererastkirin [[Wîkîpediya:AutoWikiBrowser|AWB]]
6329034
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|ziman}} {{hevmaneya|ku|soranî}}
#* {{jêder-pirtûk|ku|jêgirtin=Van weşanên bi kurdî û osmanî, bi awayekî fireh, cih dan ziman, çand û berhemên edebiyata kurdî. Wan herdu zaravayên mezintirîn, kurmanciya jorê û '''kurmanciya jêrê''' esas girtin. Di nav van weşanan de, ya girîng, bêguman, Jîn e.|nivîskar={{w|Mehmed Uzun}}|sernav={{w|Destpêka edebiyata kurdî}}|sal=1992}}
==== Tewandin ====
{{ku-tewîn-nav/nû|heve=îzafe}}
==== Binêre ====
* {{mane|kurmancî}} {{g|ku|kurmanciya jorê}}
9bhm6t1odohoqkg2nalb7thrkh567a5
Wîkîferheng:ceribandin/Default
4
1324891
6328899
6328078
2026-08-11T11:25:31Z
Balyozbot
7867
/* Lêker */ sererastkirin
6328899
wikitext
text/x-wiki
{{<noinclude>Wîkîferheng:ceribandin</noinclude>/vê rêzê neguhêre}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
[[Wêne:Example.jpg|thumb|Mînak]]
{{lêker|ku|c=h-gh}}
# Maneya 1ê.
#: {{mk|ku|'''Nimûneyeke''' bikaranînê ya vê peyvê.}}
#* {{bênimûne|ku}}
# {{f|ku|mecazî}} Maneya 2an.
#* {{jêder-pirtûk|ku|jêgirtin=Jêgirtinek ji kitêbekê.|nivîskar=Rojen Barnas|sernav=Sîlvan/ Silîvan / FARQÎN|sal=2013|weşandxane=Nûbihar|rûpel=189|isbn= 9786055402884, 6055402882}}
# Maneya 3an.
==== Bikaranîn ====
''Çend not li ser bikaranîna peyvê.''
==== Jê ====
{{kol3|ku|cure=Jê
|ceribandinvan
}}
==== Têkildar ====
* ''Peyvên ku têkiliya [[etîmolojîk]] bi peyvê re hene''.
=== Etîmolojî ===
''Çîroka tarîxî ya eslê kelîmeyê. Nimûneya bandor'': Ji {{deyn|ota|ku|باندره}}, {{q|ota|باكدیره}}, ({{hv|tr|bandıra}}) ji {{ji|vec|ku|bandéra}} ({{hv|it|bandiera}}) ji {{ji|gem|ku}} *''bandwa-'' ({{cotreh|ku|band|bend}}). Bide ber {{hv|fr|bandière}} (wek {{hv|en|banner}}), {{hv|el|παντιέρα}}.
==== Binêre herwiha ====
* ''Peyvên eleqadar lê belê têkiliya etîmolojîk nîne''.
* {{wpedî}}
==== Werger ====
{{werger-ser|1|Maneya 1ê}}
* {{Z|en}}: {{W+|en|word}}
{{werger-bin}}
{{werger-ser|2|Maneya an}}
{{werger-bin}}
{{werger-bnr|Maneya 3an|kelîme}}
=== Navdêr ===
{{ku-tewîn-nav|nav=nimûne|mê}}
{{navdêr|ku|z=m}}
# mane 1
#: mînak 1-1
#: mînak 1-2
#* jêgirtin 1-1
#* jêgirtin 1-2
# mane 2
#: mînak 2-1
#: mînak 2-2
#* jêgirtin 2-1
#* jêgirtin 2-2
# mane 3
==== Werger ====
{{werger-ser|1|Maneya 1ê}}
{{werger-bin}}
{{werger-ser|2|Maneya 2an}}
{{werger-bin}}
{{werger-ser|3|Maneya 3an}}
{{werger-bin}}
=== Çavkanî ===
{{Çavkanî}}
* Çavkaniyên din li vir binivîse.
q4bgsog0zn6pp8cav0or7552fxwc8y4
Bikarhêner:Wikihez/skrîpt/js/delete.js
2
1357331
6328726
6327906
2026-08-10T21:36:24Z
Wikihez
7344
6328726
javascript
text/javascript
// <nowiki>
// Key: mass-delete-category
// Label: Jêbirina bi kom
// Info: Rûpelên di kategoriyê de an rûpelên girêdayî (Girêdanên li ser vir) bi komî jê dibe (Taybet ji bo adminan)
(function() {
// Navê fonksiyonê li vir wekî 'mass-delete-category' tê diyarkirin daku loader.js bikar bîne
window.wikihez_scripts = window.wikihez_scripts || {};
window.wikihez_scripts['mass-delete-category'] = function() {
// Mode diyar bike: 'category' an 'backlinks'
function getMode() {
if (mw.config.get('wgNamespaceNumber') === 14) {
return 'category';
}
if (mw.config.get('wgCanonicalSpecialPageName') === 'Whatlinkshere') {
return 'backlinks';
}
return null;
}
const mode = getMode();
if (!mode) {
mw.notify('Ev amûr tenê di rûpelên kategoriyê de an di rûpelên "Girêdanên li ser vir" de dixebite.', { type: 'error' });
return;
}
// Rûpela armanc a bidest bixe (kategorî bixwe, an rûpela ku Taybet:Girêdanên_li_ser_vir lê dinêre)
function getTargetTitle() {
if (mode === 'category') {
return mw.config.get('wgPageName');
}
// backlinks mode
let target = mw.config.get('wgRelevantPageName');
if (!target) {
target = mw.util.getParamValue('target');
}
return target;
}
const targetTitle = getTargetTitle();
if (!targetTitle) {
mw.notify('Rûpela armanc nehat dîtin.', { type: 'error' });
return;
}
mw.loader.using(["mediawiki.api", "mediawiki.util", "jquery.ui"]).done(function() {
const api = new mw.Api();
function getCategoryMembers(categoryName, callback) {
api.get({
action: "query",
list: "categorymembers",
cmtitle: categoryName,
cmlimit: "max",
format: "json"
}).done(function(data) {
if (data.query && data.query.categorymembers) {
const members = data.query.categorymembers.reduce((acc, member) => {
// Hemû namespaces: 14 binkategorî ne, yên din rûpelên normal/yên din in
const group = (member.ns === 14) ? '14' : 'others';
if (!acc[group]) acc[group] = [];
acc[group].push(member.title);
return acc;
}, { 'others': [], '14': [] });
callback(members);
} else {
callback({ 'others': [], '14': [] });
}
}).fail(() => callback({ 'others': [], '14': [] }));
}
function getBacklinkMembers(pageTitle, callback) {
api.get({
action: "query",
list: "backlinks",
bltitle: pageTitle,
bllimit: "max",
format: "json"
}).done(function(data) {
if (data.query && data.query.backlinks) {
const nsMap = {};
const members = data.query.backlinks.reduce((acc, member) => {
// Rûpelên ku bixwe redirect in ber bi armancê ve, ji yên din cuda tomar bike
const group = member.redirect !== undefined ? 'redirects' : 'others';
if (!acc[group]) acc[group] = [];
acc[group].push(member.title);
nsMap[member.title] = member.ns;
return acc;
}, { 'others': [], 'redirects': [] });
members.nsMap = nsMap;
callback(members);
} else {
callback({ 'others': [], 'redirects': [], nsMap: {} });
}
}).fail(() => callback({ 'others': [], 'redirects': [], nsMap: {} }));
}
function getMembers(callback) {
if (mode === 'category') {
getCategoryMembers(targetTitle, callback);
} else {
getBacklinkMembers(targetTitle, callback);
}
}
// Sedemên jêbirinê yên pêş-danasînkirî. Yekem ji bo mode/target diyar e,
// "bot" gişî ye, "custom" nivîsandina bi destan vedibe.
function getReasonPresets() {
const presets = [];
if (mode === 'category') {
presets.push({
key: 'default',
label: 'Paqijkirina kategoriyê',
value: "Paqijkirina kategoriya [[:Kategorî:Madeyên ku bên jêbirin\n|Madeyên ku bên jêbirin]]"
});
} else {
presets.push({
key: 'default',
label: 'Bêçavkanî',
value: `Formên [[${targetTitle}]] hatine jêbirin çunkî bêçavkanî ne`
});
}
presets.push({ key: 'bot', label: 'Xeletiya botê', value: 'Xeletiya botê' });
presets.push({ key: 'custom', label: 'Din (bi destan)', value: '' });
return presets;
}
function getDefaultReason() {
return getReasonPresets()[0].value;
}
function getDialogTitle() {
return mode === 'category'
? 'Jêbirina bi kom ji kategoriyê'
: 'Jêbirina bi kom ji rûpelên girêdayî';
}
function getSecondGroupConfig() {
// { value: hilbijartina di members de, label: ya ku têtê nîşandan }
return mode === 'category'
? { value: '14', label: 'Binkategorî' }
: { value: 'redirects', label: 'Redirect' };
}
function displayModal(members) {
const secondGroup = getSecondGroupConfig();
const reasonPresets = getReasonPresets();
const reasonOptionsHtml = reasonPresets.map(p =>
`<option value="${p.key}">${mw.html.escape(p.label)}</option>`
).join('');
const modalHtml = `
<style>
#md-container {
/* Şêwaza ronahiyê ya standard */
--md-bg: #ffffff;
--md-fg: #202122;
--md-border: #a2a9b1;
--md-input-bg: #ffffff;
--md-list-bg: #f8f9fa;
--md-item-border: #eaecf0;
--md-item-hover: #fee7e6;
--md-danger-bg: #d33333;
--md-danger-fg: #ffffff;
--md-btn-bg: #f8f9fa;
--md-btn-fg: #202122;
--md-progress-track: #eaecf0;
font-family: sans-serif;
padding: 10px;
background: var(--md-bg);
color: var(--md-fg);
}
/* Şêwaza tarî: dema tercîha pergalê tarî be (skin-theme-clientpref-os) */
@media (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os #md-container {
--md-bg: #101418;
--md-fg: #eaecf0;
--md-border: #54595d;
--md-input-bg: #27292d;
--md-list-bg: #18181d;
--md-item-border: #36383d;
--md-item-hover: #3a2626;
--md-danger-bg: #f54739;
--md-danger-fg: #ffffff;
--md-btn-bg: #2b2d31;
--md-btn-fg: #eaecf0;
--md-progress-track: #36383d;
}
}
/* Şêwaza tarî: dema bikarhêner bi zelalî moda şevê hilbijartibe */
html.skin-theme-clientpref-night #md-container {
--md-bg: #101418;
--md-fg: #eaecf0;
--md-border: #54595d;
--md-input-bg: #27292d;
--md-list-bg: #18181d;
--md-item-border: #36383d;
--md-item-hover: #3a2626;
--md-danger-bg: #f54739;
--md-danger-fg: #ffffff;
--md-btn-bg: #2b2d31;
--md-btn-fg: #eaecf0;
--md-progress-track: #36383d;
}
/* Fallback: heke tu klasa skînê tune be lê pergal tarî be (nimûne, li derveyî wîkiyê) */
@media (prefers-color-scheme: dark) {
html:not(.skin-theme-clientpref-day):not(.skin-theme-clientpref-night):not(.skin-theme-clientpref-os) #md-container {
--md-bg: #101418;
--md-fg: #eaecf0;
--md-border: #54595d;
--md-input-bg: #27292d;
--md-list-bg: #18181d;
--md-item-border: #36383d;
--md-item-hover: #3a2626;
--md-danger-bg: #f54739;
--md-danger-fg: #ffffff;
--md-btn-bg: #2b2d31;
--md-btn-fg: #eaecf0;
--md-progress-track: #36383d;
}
}
.md-input-group { margin-bottom: 12px; }
.md-input-group label { display: block; font-weight: bold; margin-bottom: 5px; color: var(--md-fg); }
#md-reason, #md-pattern, #md-reason-preset {
width: 100%;
padding: 8px;
box-sizing: border-box;
border: 1px solid var(--md-border);
background: var(--md-input-bg);
color: var(--md-fg);
}
#md-reason-preset { margin-bottom: 6px; }
#md-pattern { font-family: monospace; }
#md-list {
border: 1px solid var(--md-border);
max-height: 200px;
overflow-y: scroll;
background: var(--md-list-bg);
margin-bottom: 10px;
}
.md-item {
padding: 5px 10px;
border-bottom: 1px solid var(--md-item-border);
cursor: pointer;
font-size: 0.85em;
display: flex;
justify-content: space-between;
color: var(--md-fg);
}
.md-item:hover { background-color: var(--md-item-hover); }
.md-item.selected { background-color: var(--md-danger-bg) !important; color: var(--md-danger-fg); }
#md-progress-container { display: none; margin-bottom: 15px; }
#md-progress-bar { width: 100%; background: var(--md-progress-track); height: 12px; border-radius: 6px; overflow: hidden; }
#md-progress-fill { width: 0%; height: 100%; background: var(--md-danger-bg); transition: width 0.2s; }
#md-status-text { font-size: 0.85em; margin-top: 5px; text-align: center; color: var(--md-fg); }
.md-buttons { display: flex; gap: 5px; }
.md-btn { padding: 6px 12px; border: 1px solid var(--md-border); background: var(--md-btn-bg); color: var(--md-btn-fg); cursor: pointer; }
.md-btn-danger { background: var(--md-danger-bg); color: var(--md-danger-fg); border-color: var(--md-danger-bg); font-weight: bold; margin-left: auto; }
.md-btn:disabled { opacity: 0.5; cursor: default; }
/* Şêwaza dîalogê ya jQuery UI (sernav, kêlek) */
.md-dialog.ui-dialog { background: var(--md-bg, #fff); border-color: var(--md-border, #a2a9b1); }
.md-dialog .ui-dialog-titlebar { background: var(--md-list-bg, #f8f9fa); border-color: var(--md-border, #a2a9b1); color: var(--md-fg, #202122); }
.md-dialog .ui-dialog-title { color: var(--md-fg, #202122); }
.md-dialog .ui-dialog-content { background: var(--md-bg, #fff); color: var(--md-fg, #202122); }
html.skin-theme-clientpref-night .md-dialog.ui-dialog,
html.skin-theme-clientpref-night .md-dialog .ui-dialog-titlebar,
html.skin-theme-clientpref-night .md-dialog .ui-dialog-content {
background: #101418; color: #eaecf0; border-color: #54595d;
}
@media (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os .md-dialog.ui-dialog,
html.skin-theme-clientpref-os .md-dialog .ui-dialog-titlebar,
html.skin-theme-clientpref-os .md-dialog .ui-dialog-content {
background: #101418; color: #eaecf0; border-color: #54595d;
}
}
</style>
<div id="md-container">
<div class="md-input-group">
<label>Sedemê jêbirinê:</label>
<select id="md-reason-preset">
${reasonOptionsHtml}
</select>
<input type="text" id="md-reason" placeholder="Sedemê binivîse..." value="${getDefaultReason()}">
</div>
<div class="md-input-group">
<label>Fîltra Regex (vebijarkî):</label>
<input type="text" id="md-pattern" placeholder="Nimûne: ^Bikarhêner:.*">
</div>
<div class="md-input-group">
<input type="radio" id="pgRadio" name="md-type" value="others" checked> <label style="display:inline" for="pgRadio">Rûpel (Hemû)</label>
<input type="radio" id="catRadio" name="md-type" value="${secondGroup.value}"> <label style="display:inline" for="catRadio">${secondGroup.label}</label>
</div>
${mode === 'backlinks' ? `
<div class="md-input-group">
<input type="checkbox" id="md-ns0-filter"> <label style="display:inline" for="md-ns0-filter">Tenê made (ns:0)</label>
</div>
` : ''}
<div id="md-list"></div>
<div id="md-progress-container">
<div id="md-progress-bar"><div id="md-progress-fill"></div></div>
<div id="md-status-text">Amade ye...</div>
</div>
<div class="md-buttons">
<button class="md-btn" id="md-selectAll">Hemûyan hilbijêre</button>
<button class="md-btn md-btn-danger" id="md-deleteButton">Jê bibe</button>
</div>
</div>
`;
const $dialog = $('<div>').html(modalHtml).dialog({
title: getDialogTitle(),
width: 500,
modal: true,
dialogClass: 'md-dialog'
});
function renderList() {
const type = $('input[name="md-type"]:checked').val();
const items = members[type] || [];
const $list = $('#md-list').empty();
const pattern = $('#md-pattern').val();
const ns0Only = $('#md-ns0-filter').is(':checked');
let regex;
try { if(pattern) regex = new RegExp(pattern); } catch(e) {}
items.forEach(item => {
if (regex && !regex.test(item)) return;
if (ns0Only && members.nsMap && members.nsMap[item] !== 0) return;
const $el = $('<div>').addClass('md-item').text(item);
$list.append($el);
});
}
$('#md-list').on('click', '.md-item', function() {
$(this).toggleClass('selected');
});
$('#md-selectAll').on('click', function() {
$('.md-item').addClass('selected');
});
$('#md-reason-preset').on('change', function() {
const key = $(this).val();
const preset = reasonPresets.find(p => p.key === key);
if (preset && key !== 'custom') {
$('#md-reason').val(preset.value);
} else {
$('#md-reason').val('').focus();
}
});
$('#md-pattern, input[name="md-type"], #md-ns0-filter').on('input change', renderList);
$('#md-deleteButton').on('click', function() {
const selected = $('.md-item.selected').map(function() { return $(this).text(); }).get();
const reason = $('#md-reason').val();
if (selected.length === 0) {
alert("Ji kerema xwe rûpelan hilbijêre!");
return;
}
if (!confirm(`Tu dixwazî ${selected.length} rûpelan jê bibe? Ev kiryar paşve naye girtin!`)) return;
$(this).prop('disabled', true);
$('.md-btn').prop('disabled', true);
$('#md-progress-container').show();
processDeletions(selected, reason, $dialog);
});
renderList();
}
async function processDeletions(titles, reason, $dialog) {
let deleted = 0;
const total = titles.length;
for (let i = 0; i < total; i++) {
const title = titles[i];
const progress = Math.round(((i + 1) / total) * 100);
$('#md-progress-fill').css('width', progress + '%');
$('#md-status-text').text(`Tê jêbirin: ${i + 1} / ${total} (${title})`);
try {
await api.postWithToken("csrf", {
action: "delete",
title: title,
reason: reason + " ([[Bikarhêner:Wikihez/skrîpt/js/delete.js|delete.js]])"
});
deleted++;
} catch (err) {
console.error("Xeletî di jêbirina rûpela " + title + ":", err);
}
}
$('#md-status-text').text(`Temam bû! ${deleted} rûpel hatin jêbirin.`);
setTimeout(() => {
$dialog.dialog('close');
location.reload();
}, 1500);
}
// Destpêkirina pêvajoyê
getMembers(displayModal);
});
};
})();
// </nowiki>
1joxs6uicbjt3wp91ns8itv3hvuycku
Gotûbêj:loxîn
1
1357389
6328871
6238977
2026-08-11T09:41:54Z
Bibliophile
1215
6328871
wikitext
text/x-wiki
== loxîn û gûlik ==
<gallery>
Wêne:Эрему́рус замечательный (лат. Eremúrus spectabílis).jpg|thumb|1. ''Eremurus spectabilis''
Wêne:Asphodelus aestivus.jpg|2. ''Asphodelus''
</gallery>
Silav @[[Bikarhêner:Bibliophile|Bibliophile]], Te {{q|ku|gûlik}} wekî hevmaneya ''loxîn'' nivîsandiye bi tirkî jî {{q|tr|çiriş otu}}. Ez gûlikê wekî ''Eremurus spectabilis'' (1) nas dikim. ''loxîn'' "Eremurus spectabilis" (1) û "Asphodelus" (2) e? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 23:19, 25 hezîran 2026 (UTC)
:Herwiha peyva "loxîn" li ku derê tê bikaranîn (tenê li Hawêlê)? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 23:24, 25 hezîran 2026 (UTC)
:: Çavkaniya min gulik wekî loxîn bi nav dikir, lewma min wisa got nebe ez ji kitêban jî kontrol bikim.
fls66rlsol5i4bsz3pokkohqsfiaymh
6328872
6328871
2026-08-11T09:42:03Z
Bibliophile
1215
6328872
wikitext
text/x-wiki
== loxîn û gûlik ==
<gallery>
Wêne:Эрему́рус замечательный (лат. Eremúrus spectabílis).jpg|thumb|1. ''Eremurus spectabilis''
Wêne:Asphodelus aestivus.jpg|2. ''Asphodelus''
</gallery>
Silav @[[Bikarhêner:Bibliophile|Bibliophile]], Te {{q|ku|gûlik}} wekî hevmaneya ''loxîn'' nivîsandiye bi tirkî jî {{q|tr|çiriş otu}}. Ez gûlikê wekî ''Eremurus spectabilis'' (1) nas dikim. ''loxîn'' "Eremurus spectabilis" (1) û "Asphodelus" (2) e? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 23:19, 25 hezîran 2026 (UTC)
:Herwiha peyva "loxîn" li ku derê tê bikaranîn (tenê li Hawêlê)? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 23:24, 25 hezîran 2026 (UTC)
:: Çavkaniya min gulik wekî loxîn bi nav dikir, lewma min wisa got nebe ez ji kitêban jî kontrol bikim.[[Bikarhêner:Bibliophile|Bibliophile]] ([[Gotûbêja bikarhêner:Bibliophile|gotûbêj]]) 09:42, 11 tebax 2026 (UTC)
2rjwtzh6l9jfd4mp0s9q7x6aga817sc
Modul:quote
828
1357519
6328695
6328692
2026-08-10T12:05:54Z
Wikihez
7344
6328695
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimeya "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "hejmar")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqaleyê", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-madeyê"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beşê"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qismê"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
--{"level", "level"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
qxmnlverr39d7qqulbqclnk1beyii59
6328697
6328695
2026-08-10T12:33:34Z
Wikihez
7344
6328697
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimeya "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "hejmar")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqaleyê", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-madeyê"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beşê"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qismê"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
--{"level", "level"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
n9w10o5umledsk9mwbuqxgoxz8v2w8n
6328708
6328697
2026-08-10T17:26:58Z
Wikihez
7344
6328708
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Use the content language's date formatting (as format_date_args() does for the main date) so month names are
-- translated (e.g. into Kurdish), instead of {{#formatdate:}}, which reorders day/month/year but always leaves
-- month names in English.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimeya "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "hejmar")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqaleyê", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-madeyê"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beşê"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qismê"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
--{"level", "level"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- If there's no actual quote text (or translation) to display after the source line, don't add the trailing
-- colon, mirroring the equivalent check in show_cite() below.
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 and (not args.t or args.t == "-") and not (args.tr or args.ts or args.norm or args.origtext) then
args.nocolon = true
end
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
ghmuka0r6qbnaps2ofo3c7hds6uemon
6328709
6328708
2026-08-10T17:45:07Z
Wikihez
7344
6328709
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Localized formatDate translates month names, unlike {{#formatdate:}}.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimeya "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "nimare")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqaleyê", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-madeyê"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beşê"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qismê"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
--{"level", "level"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"nimare"}, sade = "nimare", urlya = "nimareyê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
local ku_numeric_plural = {
volume = "cildên", issue = "hejmarên", number = "nimareyên", line = "rêzên", page = "rûpelên", column = "stûnên",
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
for canon, plural in pairs(ku_numeric_plural) do
alias_with_2(plural, canon .. "s")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- kuwikt always hides the trailing colon on quote_t.
args.nocolon = true
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
qc54si103dc4fqnp3oxtb4wbupcr9vn
6328716
6328709
2026-08-10T18:18:15Z
Wikihez
7344
6328716
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Localized formatDate translates month names, unlike {{#formatdate:}}.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimekirina "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "nimare")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqaleyê", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-madeyê"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beşê"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qismê"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
--{"level", "level"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"nimare"}, sade = "nimare", urlya = "nimareyê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
local ku_numeric_plural = {
volume = "cildên", issue = "hejmarên", number = "nimareyên", line = "rêzên", page = "rûpelên", column = "stûnên",
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
for canon, plural in pairs(ku_numeric_plural) do
alias_with_2(plural, canon .. "s")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- kuwikt always hides the trailing colon on quote_t.
args.nocolon = true
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
6yed4inoyyxwegu6xns1rvjkhdtc9je
6328731
6328716
2026-08-10T22:02:22Z
Wikihez
7344
6328731
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Localized formatDate translates month names, unlike {{#formatdate:}}.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimekirina "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "nimare")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqaleyê", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,rojname,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,tercimeya-rojname,trans-work,tercimeya-xebatê", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,tercimanê-rojnameyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,urlya-rojnameyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-madeyê"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beşê"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qismê"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
{"level", "seviye"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"nimare"}, sade = "nimare", urlya = "nimareyê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
local ku_numeric_plural = {
volume = "cildên", issue = "hejmarên", number = "nimareyên", line = "rêzên", page = "rûpelên", column = "stûnên",
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
for canon, plural in pairs(ku_numeric_plural) do
alias_with_2(plural, canon .. "s")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- kuwikt always hides the trailing colon on quote_t.
args.nocolon = true
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
pgz7ycwkmxbjd7p5mi5fz95lvbyhbb9
6328747
6328731
2026-08-10T23:11:38Z
Wikihez
7344
6328747
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Localized formatDate translates month names, unlike {{#formatdate:}}.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimekirina "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "nimare")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqale", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,rojname,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,tercimeya-rojname,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,tercimanê-rojnameyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,urlya-rojnameyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-made"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beş"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qism"},
{"trans-section", "tercimeya-qisim"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
{"level", "seviye"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"nimare"}, sade = "nimare", urlya = "nimareyê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
local ku_numeric_plural = {
volume = "cildên", issue = "hejmarên", number = "nimareyên", line = "rêzên", page = "rûpelên", column = "stûnên",
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
for canon, plural in pairs(ku_numeric_plural) do
alias_with_2(plural, canon .. "s")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- kuwikt always hides the trailing colon on quote_t.
args.nocolon = true
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
rlzy4h6l6n0sf8yeaq9hiy53k8xfzwj
6328765
6328747
2026-08-11T00:19:34Z
Wikihez
7344
6328765
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Localized formatDate translates month names, unlike {{#formatdate:}}.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
-- Accept M/YYYY or MM/YYYY in year= (e.g. "6/2007" or "06/2007") as a month+year date, so it renders with a
-- localized month name (e.g. "2007 hezîran") instead of literally.
local month_names = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December",
}
if year and not date then
local mon, yr = umatch(year, "^(%d%d?)/(%d%d%d%d)$")
local mon_num = mon and tonumber(mon)
if mon_num and mon_num >= 1 and mon_num <= 12 then
date = month_names[mon_num] .. " " .. yr
year = nil
end
end
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimekirina "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "nimare")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqale", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,rojname,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,tercimeya-rojname,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,tercimanê-rojnameyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,urlya-rojnameyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-made"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beş"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qism"},
{"trans-section", "tercimeya-qisim"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
{"level", "seviye"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"nimare"}, sade = "nimare", urlya = "nimareyê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
local ku_numeric_plural = {
volume = "cildên", issue = "hejmarên", number = "nimareyên", line = "rêzên", page = "rûpelên", column = "stûnên",
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
for canon, plural in pairs(ku_numeric_plural) do
alias_with_2(plural, canon .. "s")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- kuwikt always hides the trailing colon on quote_t.
args.nocolon = true
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
4uapdmqfdzwwtd3x33eweqj8vmeyyqz
6329080
6328765
2026-08-11T11:58:52Z
Wikihez
7344
6329080
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex/ceribandin"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- Localized formatDate translates month names, unlike {{#formatdate:}}.
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, "j F Y", text)
if ok then
return date
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
-- Kurmanji aliases of <t:...>/<gloss:...>.
w = {
item_dest = "gloss",
},
werger = {
item_dest = "gloss",
},
tercime = {
item_dest = "gloss",
},
alt = {},
-- Kurmanji alias of <alt:...>.
cuda = {
item_dest = "alt",
},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi %s ve hatine veqetandin di |%s= de bi hev re were bikaranîn; "
.. "ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Niha lînkên di hundirê '%s' de, digel nivîsa <alt:...> '%s', nayên piştgirîkirin"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
local conj_translations = {["and"] = "û", ["or"] = "an"}
return serial_comma_join(parts, {conj = conj_translations[delimiter]})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", display = "a.", full = "ante"},
["c."] = {anchor = "c.", display = "~", full = "nêzîkî"},
["p."] = {anchor = "p.", display = "p.", full = "post"},
}
-- Patterns recognized at the start of a date/year spec, each mapped to the key into `abbrs` it stands for.
-- Checked in order, so longer/more specific prefixes should come before shorter ones that could be a substring
-- of them.
local abbr_prefix_patterns = {
{pattern = "^nêzîkî%s+", key = "c."},
{pattern = "^c%.%s*", key = "c."},
{pattern = "^a%.%s*", key = "a."},
{pattern = "^p%.%s*", key = "p."},
}
-- Process prefixes 'a.' (ante), 'c.' (circa; also recognizes the Kurdish word 'nêzîkî') and 'p.' (post) at the
-- beginning of an arbitrary date or year spec. Returns two values, the formatted version of the prefix and the
-- date spec minus the prefix. If no prefix is found, returns an empty string and the full date.
local function process_ante_circa_post(date)
for _, prefix_spec in ipairs(abbr_prefix_patterns) do
if umatch(date, prefix_spec.pattern) then
local abbr = abbrs[prefix_spec.key]
local abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.display
.. "</abbr>]]'' "
-- Remove the matched prefix (letter/word, period if any, and trailing space) from the date parameter.
date = ugsub(date, prefix_spec.pattern, "")
return abbr_prefix, date
end
end
return "", date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Wextê |%s=%s (dibe ku ji forma xwe ya orjînal hatibe standardîzekirin) naxebite; li "
.. "[[mw:Help:Extension:ParserFunctions##time|belgekirina fonksiyona #time]] binêre"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo salê |%s= bi kar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= divê tarîxa temam (sal-meh-roj) bi kar bîne; ji bo mehê |%s= û ji bo salê |%s= bikar bîne"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
-- Accept M/YYYY or MM/YYYY in year= (e.g. "6/2007" or "06/2007") as a month+year date, so it renders with a
-- localized month name (e.g. "2007 hezîran") instead of literally.
local month_names = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December",
}
if year and not date then
local mon, yr = umatch(year, "^(%d%d?)/(%d%d%d%d)$")
local mon_num = mon and tonumber(mon)
if mon_num and mon_num >= 1 and mon_num <= 12 then
date = month_names[mon_num] .. " " .. yr
year = nil
end
end
if date and year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= divê tenê digel |%s= were dayîn, ne digel |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("Bêyî ku |%s= an |%s=/|%s= were dayîn, |%s= an |%s=/|%s= nayê dayîn"):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (cara dawî hate gihiştin)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
-- Wrap contributor names (authors, editors, translators, compilers, etc.) and the bolded publication year in a
-- span so they can be styled distinctly (e.g. Kurdish Wiktionary's "j-pewist" highlighting).
local function j_lazim(text)
if not text then
return nil
end
return '<span class="j-pewist">' .. text .. "</span>"
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL nikare valahiyê tê de bihewîne, lê |%s=%s hate dîtin"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]non[yî]mo?u?s?$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Nabe ku lînk di |%s=%s de were dayîn"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Nabe ku lînk di %s=%s de were dayîn"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "nivîskarê anonîm"
authorobjs[1].link = "nivîskarê anonîm"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(j_lazim(format_multivalued_annotated_text(authorobjs)))
elseif trans_authorlink then
error(
(
"Nabe ku |%s= digel çend unsirên ku bi bernavekê ve hatine veqetandin di |%s= de bi hev re "
.. "were bikaranîn; ji bo her unsirê modîfîkatora hundirîn a <t:...> bi kar bîne û lînkê "
.. "rasterast têxe nirxa modîfîkatorê hundirîn"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(j_lazim(formatted_text))
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(j_lazim(author))
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep(j_lazim("anonîm" .. anonymous_suffix))
else
entities = j_lazim(entities)
if prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Divê tenê yek ji |%s= an %s= were dayîn"):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Ji bo |%s= ev %s= lazim e"):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Ji bo |%s= ev |%s= lazim e; nirxa hejmarî li |%s= binivîse"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
-- Set to true by add_entry()/add_chapter() when a chapter/entry title has been added and "li ser " (lit.
-- "on/in") is owed to whatever comes next. It's consumed either by mainauthor= (attached directly in front
-- of it) or, if there's no mainauthor=, by the work's title= later on. Fields in between (translator,
-- editor, compiler, director) don't consume it, but the first of them printed while it's still pending gets
-- a "bi " (lit. "with/by") prefix instead, since otherwise e.g. "edîtoriya X" would read as a bare noun
-- phrase with nothing to attach it to the sentence.
local pending_li_ser = false
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
coauthors = j_lazim(coauthors)
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "li gel "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "tercimeya ", nil, nil, " terciman")
local function add_labeled_editor()
local editor, editor_fullname = a_with_name("editor")
local editors, editors_fullname = a_with_name("editors")
if editor and editors then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(editor_fullname, editors_fullname))
end
local val, fullname, param = editor, editor_fullname, "editor"
if editors then
val, fullname, param = editors, editors_fullname, "editors"
end
if not val then
return
end
local entities = parse_and_format_multivalued_annotated_text(param, "and")
local label
if fullname == "amadekar" or fullname == "amadekar2" then
label = "amadekariya"
else
-- covers "editor", "editor2", "edîtor", "edîtor2", etc.
label = "edîtoriya"
end
local bi_prefix = (pending_li_ser and not author_outputted) and "bi " or ""
if is_anonymous(entities) then
add_with_sep(j_lazim(bi_prefix .. label .. " kesekî nenas"))
else
add_with_sep(bi_prefix .. label .. " " .. j_lazim(entities))
end
author_outputted = true
end
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Nabe ku hem |%s= hem jî |%s= were bikaranîn"):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " ji hêla "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "beşa ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
pending_li_ser = true
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
role = j_lazim(role)
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
actor = j_lazim(actor)
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " wekî ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (aktor)")
end
else
if role then
add_with_sep("xeberdan ji aliyê " .. role .. " ve")
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (aktor)")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "tercimeya ", nil, nil, " terciman")
author_outputted = false
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
mainauthor = j_lazim(mainauthor)
if mainauthor then
-- Label mainauthor explicitly when another credit (translator, editor, compiler, director) follows
-- it, so e.g. "li ser Kurt Gödel, edîtoriya X" doesn't read as if Kurt Gödel were the editor.
if a("tlr") or a("editor") or a("editors") or a("compiler") or a("compilers") or a("director") or a("directors") then
mainauthor = mainauthor .. " (nivîskarê sereke)"
end
if pending_li_ser then
add_with_sep("li ser " .. mainauthor)
pending_li_ser = false
else
add_with_sep(mainauthor)
end
author_outputted = true
end
do
local tlr_prefix = "tercimekirina "
if pending_li_ser and not author_outputted then
tlr_prefix = "bi tercimekirina "
end
add_authorlike("tlr", tlr_prefix, nil, nil, " terciman")
end
add_labeled_editor()
add_sg_and_pl_authorlike("compiler", "berhevkirin")
add_sg_and_pl_authorlike("director", "derhênan")
add_authorlike("lyricist", nil, " (gotin)", nil, " gotinnivîs")
add_authorlike("lyrics-translator", nil, " (tercime)", nil, " tercimanê gotinan")
add_authorlike("composer", nil, " (muzîk)", nil, " bestekar")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
local title_text = format_annotated_text(titleobj, tag_with_cite, tag_with_cite)
if pending_li_ser then
title_text = "li ser " .. title_text
pending_li_ser = false
end
add(title_text)
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
local maint_text = maintenance_line("jkx sernavê kitêb an kovarê binivîse")
if pending_li_ser then
maint_text = "li ser " .. maint_text
pending_li_ser = false
end
add(maint_text)
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "ku") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (bi " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Divê tenê yek ji |%s= an |%s= were dayîn"):format(edition_fullname, edition_plain_fullname))
end
local function ordinal_suffix(n)
n = tonumber(n)
if not n then
return nil
end
if n % 100 == 11 then
return "an"
elseif n % 10 == 1 then
return "ê"
else
return "an"
end
end
if edition then
local edStr = tostring(edition)
local numPart = edStr:match("^(%d+)%s*[Ss][Tt]$")
or edStr:match("^(%d+)%s*[Nn][Dd]$")
or edStr:match("^(%d+)%s*[Rr][Dd]$")
or edStr:match("^(%d+)%s*[Tt][Hh]$")
or edStr:match("^(%d+)$")
if numPart then
add_with_sep("çapa " .. numPart .. ordinal_suffix(numPart))
else
add_with_sep("çapa " .. edition)
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Nabe ku " .. plain_fullname .. " digel " .. paramname .. " an " .. plparamname .. " were dayîn"))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " ji " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "bêhejmar " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or (singular_desc .. "ên")
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = singular_desc .. "ên"
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "cild")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "hejmar")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "nimare")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Ji kerema xwe zimanê vê jêgirtinê bi |1= diyar bike"))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "bi " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "jêgirtin bi " .. format_langs(quotelang))
end
insert(annotations, "bi giştî eser bi " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "bi " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
artist = j_lazim(artist)
if artist then
add_with_sep("hunermend: " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
feat = j_lazim(feat)
if feat then
sep = " "
add_with_sep("digel " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
others = j_lazim(others)
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("hate jêgirtin di " .. quoted_in .. " de")
insert(tracking_categories, "Jêgirtin bi parametreya quoted-in")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("ji " .. source .. " hatiye wergirtin")
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
by = j_lazim(by)
local origtype = a("deriv") or "tercimeya"
if original or by then
add_with_sep(origtype .. " " .. (original or "orîjînal") .. (by and " ji hêla " .. by .. " ve" or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "bi " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "bi giştî eser bi " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " orîjînal" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Ji kerema xwe tarîx an salekê binivîse", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("di " .. formatted_date_published .. " de hate weşandin" .. (platform and " li ser " .. platform or ""))
elseif platform then
add_with_sep("li ser " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(archiveurl_fullname, url_fullname)
)
end
end
add(", ji [" .. url .. " orjînalê] di ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("Gava |%s= tê dayîn, divê |%s= jî were dayîn"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
add(" de hatiye arşîvkirin")
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", di " .. format_date(a("accessdate")) .. " de hatiye gihiştin")
end
end
local formatted_section = format_chapterlike("section", "qismê ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", sehne: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", seviye/herêm: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "rûpel", ", ")
handle_numeric_param("column", a("column_prefix") or "stûn", ", ")
handle_numeric_param("line", a("line_prefix") or "rêz", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Nabe ku |%s%s= bêyî |author%s= an |last%s= were dayîn"):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "hate jêgirtin di" or "ji nû ve hatiye weşandin wekî".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("ji nû ve hatiye weşandin wekî")
else
add("ji nû ve hatiye weşandin")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Tu dikarî tarîxa vê jêgirtinê [[:Category:Daxwazên tarîxê|binivîsî]]?",
year_last
)
-- format_date_args bolds the year here (via bold_year = not format_as_cite), so this is the only date variable
-- we wrap; origdate=, date_published= and the newversion date are left unwrapped.
formatted_date = j_lazim(formatted_date)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Nabe ku |%s= bêyî |2ndauthor= an |2ndlast= were dayîn"):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Çavkanî bi parametreya nekat")
else
insert(tracking_categories, "Jêgirtin bi parametreya nekat")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Nirxa `args.pagename` xelet e: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, "Jêgirtin bi " .. termlang:getFullName())
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Daxwazên tarîxê bi " .. argslangobj:getCanonicalName())
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"editor", "amadekar"},
{"title", ",4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,sernav,article,meqale,4", true},
{"chapterurl", "titleurl,articleurl,urlya-sernav,urlya-meqaleyê", true},
{"trans-chapter", "trans-title,trans-article,tercimeya-sernav,tercimeya-meqale", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators,tercimanê-sernav,tercimanên-sernav,tercimanên-meqaleyê,tercimanê-meqaleyê", true},
{"chapter_series", "title_series,article_series,seriya-sernav,seriya-meqaleyê", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume,cildê-seriya-sernav,cildê-seriya-meqaleyê", true},
{"chapter_number", "title_number,article_number,hejmara-sernav,hejmara-meqaleyê", true},
{"chapter_plain", "title_plain,article_plain,sernav-sade,meqale-sade", true},
{"title", "journal,kovar,magazine,newspaper,work,xebat,xezete,rojname,5", true},
{"trans-title", "trans-journal,tercimeya-kovar,trans-magazine,trans-newspaper,tercimeya-xezete,tercimeya-rojname,trans-work,tercimeya-xebat", true},
{"tlr", "journal_tlr,tercimanê-kovarê,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,tercimanê-xezeteyê,tercimanê-rojnameyê,newspaper_translators,work_tlr,tercimanê-xebatê,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,urlya-kovarê,magazineurl,newspaperurl,urlya-xezeteyê,urlya-rojnameyê,workurl,urlya-xebatê", true},
{"page", "7"},
{"source", "newsagency,ajans,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Nirxa '%s' ji bo type%s= nayê naskirin; nirxên mihtemel ev in: %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type or args.cure or direct_args.cure
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2 or args.cure2 or direct_args.cure2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Ji bo bernav '%s' divê (:) tê de hebe"):format(alias_spec)) -- ("Alias spec '%s' should have one colon in it"):format(alias_spec) ev çi dibêje?
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= û |%s= bernav in; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= bernavê |%s= ye; nabe ku nirx ji bo herduyan were dayîn"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Nabe ku nirxek ji bo |%s=%s were dayîn, ji ber ku dê were guhartin an paşguhkirin"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
local function alias_list_allow_holes(canon)
return {alias_of = canon, list = true, allow_holes = true}
end
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["ziman2"] = {alias_of = "lang2", type = "language", sublist = true},
["newversion"] = true,
["versiyona-nû"] = {alias_of = "newversion"},
["author"] = list_allow_holes,
["nivîskar"] = alias_list_allow_holes("author"),
["2ndauthor"] = true,
["2nivîskar"] = {alias_of = "2ndauthor"},
["trans-author"] = list_allow_holes,
["tercimeya-nivîskar"] = alias_list_allow_holes("trans-author"),
["authorlink"] = list_allow_holes,
["lînka-nivîskar"] = alias_list_allow_holes("authorlink"),
["2ndauthorlink"] = true,
["2lînka-nivîskar"] = {alias_of = "2ndauthorlink"},
["trans-authorlink"] = list_allow_holes,
["lînka-tercimeya-nivîskar"] = alias_list_allow_holes("trans-authorlink"),
["first"] = list_allow_holes,
["pêşnav"] = alias_list_allow_holes("first"),
["2ndfirst"] = true,
["2pêşnav"] = {alias_of = "2ndfirst"},
["trans-first"] = list_allow_holes,
["tercimeya-pêşnav"] = alias_list_allow_holes("trans-first"),
["last"] = list_allow_holes,
["paşnav"] = alias_list_allow_holes("last"),
["2ndlast"] = true,
["2paşnav"] = {alias_of = "2ndlast"},
["trans-last"] = list_allow_holes,
["tercimeya-paşnav"] = alias_list_allow_holes("trans-last"),
["nocat"] = boolean,
["nekat"] = {alias_of = "nocat"},
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
["jêgirtin"] = {alias_of = "text"},
["jg"] = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
["hrf"] = {alias_of = "lit"},
t = true,
translation = alias_of_t,
["tercime"] = alias_of_t,
["werger"] = alias_of_t,
["w"] = alias_of_t,
gloss = alias_of_t,
lb = true,
["e"] = {alias_of = "lb"},
brackets = boolean,
["parantez"] = {alias_of = "brackets"},
-- original quote params
origtext = true,
["metna-orîjînal"] = {alias_of = "origtext"},
origtr = true,
["tr-orîjînal"] = {alias_of = "origtr"},
origts = true,
["ts-orîjînal"] = {alias_of = "origts"},
orignorm = true,
["norm-orîjînal"] = {alias_of = "orignorm"},
origsc = script,
["sc-orîjînal"] = {alias_of = "origsc"},
orignormsc = script,
["normsc-orîjînal"] = {alias_of = "orignormsc"},
origsubst = true,
["subst-orîjînal"] = {alias_of = "origsubst"},
origlb = true,
["e-orîjînal"] = {alias_of = "origlb"},
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
-- Record which alias was actually used, so error messages show e.g. |tarîx= instead of |date=.
if cloned_args[alias] then
alias_map[canon] = alias
end
if cloned_args[alias .. "2"] then
alias_map[canon .. "2"] = alias .. "2"
end
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- tercimeyên Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "rol"},
{"role", "axivêr"},
{"tlr", "terciman"},
{"tlr", "wergêr"},
{"chapter_tlr", "tercimanên-beşê"},
{"chapter_tlr", "tercimanê-beşê"},
{"chapter_tlr", "tercimana-beşê"},
{"chapter_tlr", "wergêrên-beşê"},
{"chapter_tlr", "wergêrê-beşê"},
{"chapter_tlr", "wergêra-beşê"},
-- tercimeyên Then the newversion params (which have FOO2 versions).
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
{"coauthors", "hevnivîskar"},
{"quotee", "jê-tê-girtin"},
{"editor", "edîtor"},
{"editor", "amadekar"},
{"mainauthor", "nivîskarê-sereke"},
{"compiler", "berhevkar"},
{"director", "derhêner"},
{"lyricist", "gotinnivîs"},
{"lyrics-translator", "tercimanê-gotinan"},
{"lyrics-translator", "tercimana-gotinan"},
{"lyrics-translator", "wergêrê-gotinan"},
{"lyrics-translator", "wergêra-gotinan"},
{"composer", "bestekar"},
{"actor", "aktor"},
{"actor", "lîstikvan"},
{"artist", "hunermend"},
{"artist", "artîst"},
{"feat", "mêvan"},
--tercimeyên author control params
{"default-authorlabel", "standard-etîketa-nivîskar"},
{"authorlabel", "etîketa-nivîskar"},
--tercimeyên title
{"title", "sernav"},
{"trans-title", "tercimeya-sernav"},
{"trans-title", "wergera-sernav"},
{"series", "serî"},
{"series", "rêze"},
{"seriesvolume", "cildê-seriyê"},
{"seriesvolume", "cildê-rêzeyê"},
{"notitle", "bêsernav"},
--tercimeyên entry
{"entry", "made"},
{"entryurl", "urlya-madeyê"},
{"trans-entry", "tercimeya-made"},
{"trans-entry", "wergera-madeyê"},
--tercimeyên chapter
{"chapter", "beş"},
{"chapterurl", "urlya-beşê"},
{"chapter_number", "hejmara-beşê"},
{"chapter_plain", "beş-sade"},
{"chapter_series", "seriya-beşê"},
{"chapter_series", "rêzeya-beşê"},
{"chapter_seriesvolume", "cildê-seriya-beşê"},
{"chapter_seriesvolume", "cildê-rêzeya-beşê"},
{"trans-chapter", "tercimeya-beş"},
{"trans-chapter", "wergera-beşê"},
--tercimeyên section
{"section", "qisim"},
{"section", "qism"},
{"sectionurl", "urlya-qismê"},
{"section_number", "hejmara-qismê"},
{"section_plain", "qisim-sade"},
{"section_plain", "qism-sade"},
{"section_series", "rêzeya-qismê"},
{"section_seriesvolume", "cildê-seriya-qismê"},
{"section_seriesvolume", "cildê-rêzeya-qismê"},
{"trans-section", "tercimeya-qism"},
{"trans-section", "tercimeya-qisim"},
--tercimeyên other video-game params
{"system", "sîstem"},
{"system", "pergal"},
{"scene", "sehne"},
{"level", "seviye"},
--tercimeyên URL
{"archiveurl", "urlya-arşîvê"},
-- tercimeyên edition
{"edition", "çap"},
{"edition_plain", "çap-sade"},
--tercimeyên misc date params; most date params handled below
{"archivedate", "roja-arşîvê"},
{"archivedate", "tarîxa-arşîvê"},
{"accessdate", "tarîxa-gihiştinê"},
{"accessdate", "roja-gihiştinê"},
{"nodate", "bêtarîx"},
--tercimeyên other params
{"type", "cure"},
{"genre", "janr"},
{"medium", "medya"},
{"others", "kesên-din"},
{"others", "yên-din"},
{"quoted_in", "cihê-jêgirtinê"},
{"location", "cih"},
{"location", "cîh"},
{"publisher", "weşanxane"},
{"publisher", "weşanger"},
{"original", "orîjînal"},
{"original", "orjînal"},
{"by", "ji-aliyê"},
{"by", "ji-hêla"},
--{"deriv", ""},
{"note", "not"},
{"note_plain", "not-sade"},
{"other", "yê-din"},
{"source", "çavkanî"},
--tercimeyên
{"worklang", "zimanê-eserê"},
{"termlang", "zimanê-termê"},
{"origlang", "zimanê-orîjînal"},
{"origworklang", "zimanê-esera-orîjînal"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
-- Kurmancî aliases for the date params
for _, date_aliased in ipairs{
{"date", "tarîx"},
{"date", "dîrok"},
{"year", "sal"},
{"month", "meh"},
{"start_date", "tarîxa-destpêkê"},
{"start_year", "sala-destpêkê"},
{"start_month", "meha-destpêkê"},
{"origdate", "tarîxa-orîjînal"},
{"origyear", "sala-orîjînal"},
{"origyear", "sala orîjînal"},
{"origmonth", "meha-orîjînal"},
{"origstart_date", "tarîxa-destpêkê-orîjînal"},
{"origstart_year", "sala-destpêkê-orîjînal"},
{"origstart_month", "meha-destpêkê-orîjînal"},
{"date_published", "tarîxa-weşandinê"},
{"year_published", "sala-weşandinê"},
{"year_published", "sala weşandinê"},
{"month_published", "meha-weşandinê"},
{"start_date_published", "tarîxa-destpêkê-weşandin"},
{"start_year_published", "sala_destpêkê-weşandin"},
{"start_month_published", "meha-destpêkê-weşandin"}
} do
local canon, alias = unpack(date_aliased)
alias_with_2(alias, canon)
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- canon word -> Kurdish forms
-- aliases : plain synonyms (maps straight to canon, e.g. "volume")
-- sade : ezafe form used before "-sade" (canon .. "_plain")
-- urlya : ezafe form used after "urlya-" (canon .. "url")
local ku_numeric = {
volume = {aliases = {"cild", "cîld"}, sade = "cild", urlya = "cild"},
issue = {aliases = {"hj", "hejmar"}, sade = "hejmar", urlya = "hejmarê"},
number = {aliases = {"nimare"}, sade = "nimare", urlya = "nimareyê"},
line = {aliases = {"rêz"}, sade = "rêz", urlya = "rêzê"},
page = {aliases = {"rûpel", "r"}, sade = "rûpel", urlya = "rûpelê"},
column = {aliases = {"stûn"}, sade = "stûn", urlya = "stûnê"},
}
local ku_numeric_plural = {
volume = "cildên", issue = "hejmarên", number = "nimareyên", line = "rêzên", page = "rûpelên", column = "stûnên",
}
for canon, t in pairs(ku_numeric) do
for _, alias in ipairs(t.aliases) do
alias_with_2(alias, canon)
end
alias_with_2(t.sade .. "-sade", canon .. "_plain")
alias_with_2("urlya-" .. t.urlya, canon .. "url")
alias_with_2("pêşgira-" .. t.urlya, canon .. "_prefix")
end
for canon, plural in pairs(ku_numeric_plural) do
alias_with_2(plural, canon .. "s")
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= divê bi pêşgira koda zimên dest pê bike")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= divê bi pêşgira koda zimên dest pê bike")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Nabe ku %s= bêyî origtext= were dayîn"):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite, source)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
source = source
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = format_usex(usex_data)
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
-- kuwikt always hides the trailing colon on quote_t.
args.nocolon = true
insert(parts, get_quote(args, false, export.source(args, alias_map, nil, other_controls)))
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
jzqzgpnwn3c0fpa0egcr6y04y81xjrf
Wîkîferheng:Xebat
4
1357857
6328696
6328217
2026-08-10T12:18:11Z
Wikihez
7344
6328696
wikitext
text/x-wiki
{{/ser}}
= Karên ferhengî =
== Mane ==
* [[:Kategorî:Madeyên bê beşa mane]]
** [[:Kategorî:Madeyên bê beşa mane bi kurmancî]]
Li ser van rûpelan ev made hene ku maneyan wan nehatine nivîsin û divê werin nivîsin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Etîmolojî ==
*[[:Kategorî:Daxwazên etîmolojiyê]]
**[[:Kategorî:Daxwazên etîmolojiyê bi kurmancî]]
Li ser van rûpelan ev made hene ku etîmolojiya wan hîn nehatine nivîsin. Ji bo alîkariyê binêre [[WF:Etîmolojî]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Cureyê rêzimanî ==
* [[:Kategorî:Gotarên bê kategoriya rêzimanî]]
* [[:Kategorî:Gotarên bê kategoriya rêzimanî bi kurmancî]]
Li ser van rûpelan ev made hene ku cureyên wan yên rêzimanî hîn nehatine nivîsin. Ji bo alîkariyê binêre [[Alîkarî:Cureyên peyvan]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Kontrol ==
* [[:Kategorî:Kontrol]]
** [[:Kategorî:Kontrola maneyê]]
Ev madde bi botê hatine çêkirin, yek bi yek divê werin kontrolkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
= Şablon =
== IPA ==
* {{ş|IPA}} divê [[Modul:IPA]] bi kar bîne. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Deng ==
Kurdîkirina belgekirina {{ş|deng}} lazim e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:06, 19 tîrmeh 2026 (UTC)
= Modul =
== Modul:form of/templates ==
* [[Modul:form of/templates]]: Divê ev modul were rojanekirin û xeletiyên berê wekî ([[hevalê]]) werin rastkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
*:Merheba @[[Bikarhêner:Ghybu|Ghybu]] Te gotibû di vê modulê de xeletî hene, jkx tu dikarî li vir binivîsî çi kêmasî hene, daku wextê rojane dikim ez ji bîr nekim? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:16, 21 tîrmeh 2026 (UTC)
*::Silav. Nizanim ji bîra min çûye... Herwiha ji bo çêkirina formên navdêran zanînên cîns û tîpa dawî bes e:
*::* (-ê, mê) => çemandî, bangkirin
*::* (-ê, nêr) => îzafe
*::* (-ê, mê û nêr) => îzafe (nêr), bangkirin (mê), çemandî (mê)
*::* (-a) => îzafe (mê)
*::* (-ekî) => îzafe û çemandî (nêr, nebinavkirî)
*::* (-eke) = > îzafe (mê, nebinavkirî)
*::* ...
*:: <code>if find(mw.title.getCurrentTitle().subpageText, 'ekî$') then ... end</code>
*::<code><nowiki>{{ku-tewîn-navForm|<navdêr>|<zayend>}</nowiki></code>
*::Tablo û nivîs di yekcarî de tên çêkirin...
*::Feqet problem lêzêdekirina mînakan e. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:34, 21 tîrmeh 2026 (UTC)
*:::Lêzêdekirina kîjan nimûneyan? Ev koda js ji bo çi ye? Qisûrê nenêre min fêm nekir :/ [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:13, 21 tîrmeh 2026 (UTC)
*::::Li vira ([[hevalê#Formeke navdêrê]]) di bin maneyên 1. û 2. mînak nayên tevlî kirin :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 21 tîrmeh 2026 (UTC)
*:::::Ev tercîh e, ne mecbûrî ye, em dikarin [https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&diff=prev&oldid=6276350 wisa] bikin. Wekî din? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:29, 21 tîrmeh 2026 (UTC)
*::::::Min li jor tênê got ku tenê parametreyên "navdêr" û "zayend" hewce nee. Bi '''[//ku.wiktionary.org/w/index.php?title=heval%C3%AA&curid=969734&diff=6276353&oldid=6276350 vî]''' awayî jî tê çêkirin. Parametreyên din ne hewce ne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:38, 21 tîrmeh 2026 (UTC)
*:::::::Ji bo wê şabloneke din lazim e, bila ev şablon wekî îngilîzî bimîne em ji bo kurmancî yekî din çêkin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:42, 21 tîrmeh 2026 (UTC)
*::::::::[https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&oldid=6276885 wisa] çawa ye? Bi min nivîsîna nimûneyan zêde ne lazim e ji ber ku ti kes serê xwe pê naêşîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:46, 23 tîrmeh 2026 (UTC)
*:::::::::@[[Bikarhêner:Ghybu|Ghybu]] Vê şablonê bi kar bînin an na? Navê şablonê kê çi be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:07, 24 tîrmeh 2026 (UTC)
== Modul:columns ==
* [[Modul:columns]] were rojanekirin û {{ş|kol3}} bila lînka ''nîşan bide'' deyne beriya sernavê, kolê di qutiya rengî de bila nebe. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Modul:etymon ==
* [[Modul:etymon kevn]]: Rojanekirin hewce ye. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Modul:ziman/code to canonical name]] ==
Belgekirina skrîptê û js divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:31, 22 tîrmeh 2026 (UTC)
:* [[MediaWiki:UpdateLanguageNameAndCode.js]]
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:50, 22 tîrmeh 2026 (UTC)
::* [[Modul:ziman/print]]
::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:52, 22 tîrmeh 2026 (UTC)
:::*[[Modul:ziman/şablon]]
:::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:56, 22 tîrmeh 2026 (UTC)
::::* [[MediaWiki:Gadget-translation editor.js/ziman.json]]
::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:06, 22 tîrmeh 2026 (UTC)
== [[Modul:quote]] ==
Piştî ev modul hate hazirkirin, lazim e navên jegirtinan werin rastkirin û li hemûyan {{param|jêgirtin}} were zêdekirin. Bnr. [[Gotûbêja şablonê:Jêgirtin/Ehmedê Xanî/Mem û Zîn]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:27, 5 tebax 2026 (UTC)
= Javascript =
== [[Mediawiki:Gadget-citoid-helper.js]] ==
Ji bo bi citoidê kopîkirina malûmatên çavkaniyan amûreke wisa lazim e. Xisûsen ji ber ku bi çend amûrên din dikare were bikaranîn.
Feqat çend problem hene, şablonên me de kêmasiya parametreyan gelek in û xerîteyên citoidê hîn nehatine çêkirin. Wana sererast bikin dûre vê amûrê çêkin, piştre [[MediaWiki:Gadget-start.js|start.js]] û [[MediaWiki:Gadget-wikt.add-examples.js|add examples.js]] were rojanekirin.
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:04, 19 tîrmeh 2026 (UTC)
:Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]], ez dibêjim karê Modul:quote zêde wext bistîne, bila em dest bi bikaranîna van amûran bikin dûre kêmasiyan em ê temam bikin înşela. Dikarî vana li cihên xwe yên rast kopî paste bikî?
# [[Special:PermanentLink/6291574|Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]] --> [[Mediawiki:Gadget-citoid-helper.js]]
# Ya li jêr kopî bike qismê herî dawî ya AmûrênVeşartî li [[MediaWiki:Gadgets-definition]]:
## <code><nowiki>* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js</nowiki></code>
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:58, 26 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-start.js]] ==
Rojanekirin hewce ye. Min gelek tişt lê zêde kir lê ez niha test dikime. Piştre em bar bikin:
* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 17 tîrmeh 2026 (UTC)
:Min [[MediaWiki:Gadget-start.js/data.json|data.json]] çêkir ji bo ku bi hêsanî malûmatên heyî werin guhartin bêyî guhartina Javascriptê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:49, 18 tîrmeh 2026 (UTC)
:Xeletiyên ku ji bîr nekim rast bikim:
:* Wextê min çavkanî "kitêb" hilbijart û bi destî tije kir xeletiyeke [https://ku.wiktionary.org/w/index.php?title=xezete&diff=prev&oldid=6265392 wisa] derket her kelîme hate lînkkirin.
:* <code>html("⠿")</code> ev ne lazim e.
:* textarea ji bo çavkaniyên jêgirtinan xaseten yên sernav hîn jî ne draggable e.
:* pêşdîtina zindî checkbox wextê tê rakirin, pêşdîtin winda nabe.
:* Butona mobîlê ya vekirina formê di moda tarî de belî nabe, tenê wekî qutiyeke tarî xuya dibe.
:* Metna hişyarkirinê di guhartina rûpelên heyî de lazim e baştir bikim.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:51, 18 tîrmeh 2026 (UTC)
::Ev problem çêbûn, ez ê binêrim ka çi problemên din hene. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:15, 19 tîrmeh 2026 (UTC)
:::Çêke: Ji bo qismê çavkaniyê yek dikare API call û Kategorî:Çavkanî bi kar bîne ji bo ku şablon zêde bikî ji yên heyî. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 19 tîrmeh 2026 (UTC)
::::Ev jî çêbû, min beşa çavkanî jî çêkir. Eger xeletî dernekeve û problema valahiya piştî etîketê ji bîr nekim, piştî rojanekirina amûrên linkify, û citoid em dikarin bar bikin. Ez ê ti tiştê nû îlawe nekim, zêde dirêj bû. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:14, 21 tîrmeh 2026 (UTC)
:::::Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]]. Dikarî wana bar bikî?
:::::* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
:::::* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
:::::* [[MediaWiki:Gadgets-definition]] wisa rojane bike:
:::::* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper]|start.js|start.css|start.js/data.json
:::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:39, 5 tebax 2026 (UTC)
== [[Mediawiki:Gadget-QQ.js]] ==
Ev amûr di şikle Minerva de. Her daîm vê xeletiyê dide:
<syntaxhighlight lang="js">
TypeError: Cannot read properties of null (reading 'addEventListener') at css () at runScript () at Array.<anonymous> () at flushCssBuffer ()
</syntaxhighlight> [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:29, 18 tîrmeh 2026 (UTC)
:* [[Bikarhêner:Wikihez/skrîpt/js/Gadget-QQ.js]] --> [[Mediawiki:Gadget-QQ.js]]
:* [[Bikarhêner:Wikihez/Gadget-QQ.css]] --> [[Mediawiki:Gadget-QQ.css]]
:Ez dibêjim çêbû lê ka çend roj biceribînim. Tiştên ku hatin sererastkirin:
:# Google Books API Key dikarî zêde bikî, dixe cookies û di gerokê de dimîne. Berê bê API Key dixebitiya lê êdî mecbûr e ku API Key-a te hebe, bidestxistina wê ne zêde zor e lê dîsa jî tevlihev e.
:# Êdî di mobîlê de dixebite, heta di mobîlê de xweştir xuya dike.
:# Moda tarî
:# OOUI dewsa jquery.ui
:# Li qutiyê çi dixwazî zêde bikî, dikare li gorî îsm, sifet, fiîl bitewîne. Lê ji bo fiîl tenê dikare çend heb inflection bîne.
:# Butona paqij bike lê zêde kir.
:# Çend paqijiyên jêgirtinên Google Kitêbê niha hene.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:38, 18 tîrmeh 2026 (UTC)
::Tewandina fiîlan û xeletiya modulê lazim e were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:40, 21 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-wikt.add-examples.js]] ==
Min ev amûr hinek rojane kir feqat çend problem hene berî ku bar bikin.
Tiştên ku min guhart:
# Êdî li sayfeyên bi {{ş|maneid}} jî dixebite,
# Cihê di wîkîtekstê de yê ku jêgirtin were îlawekirin baştir bû,
# [[Mediawiki:Gadget-citoid-helper.js|citoid helper]] zêde kir ji bo ku bi hêsanî çavkanî bi riya doi, isbn an urlyê werin tijîkirin.
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]] --> [[MediaWiki:Gadget-wikt.add-examples.css]]
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]] --> [[MediaWiki:Gadget-wikt.add-examples.js]]
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 19 tîrmeh 2026 (UTC)
:Min "wikt." qismên cache kirinê ya wîkiya fransî bi [[MediaWiki:Gadget-StorageUtils.js]] guhartiye. loma ji bîr nekin wê amûrê li [[MediaWiki:Gadgets-definition]] zêde bikin. û navê amûrê jî biguhêrînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:15, 23 tîrmeh 2026 (UTC)
::Berê li ser WF:ceribandin dixebitî. niha naxebite. Divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:10, 7 tebax 2026 (UTC)
== Gadget-translation editor ==
* [[MediaWiki:Gadget-translation editor.js]]: divê formata en.wîktê were bikaranîn ji ber ku me gelek tercime ji en.wîktê kopî kir û ev js hîn nikare formata wekî li jêr bi kar bîne.
<syntaxhighlight lang="wikitext">
* {{Z|sh}}:
*: Kirîlî:
*: Latînî
</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Mediawiki:Gadget-linkify.js]] ==
* ''rûpeleke'' wekî<syntaxhighlight lang="wikitext">[[rûpeleke]]</syntaxhighlight> lînk dike, bi regexê belkî dikare wisa bike <syntaxhighlight lang="wikitext">[[rûpel]]eke</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
* Amûreke din wekî [[User:Wikihez/Gadget-linkify.js|linkify]] lazim e ku herfên mezin biçûk bike ji bo kurmancî.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:{{r|Bikarhêner}} Merheba bira, dikarî viya jî bar bikî?:
* [[Special:PermanentLink/6291974|linkify]] --> [[Mediawiki:Gadget-linkify.js]]
Spas--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:42, 29 tîrmeh 2026 (UTC)
:Dûre [https://ku.wiktionary.org/wiki/MediaWiki:Gadget-start.js#L-283 li vir] wiktviLinkify bike kuLinkify xêra xwe [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:51, 29 tîrmeh 2026 (UTC)
::Min ji bîr kir lê zêde bikim niha nikare "Dİ" bike "di", xeletiyeke berbelav a di nivîsên kurdî de, herfên din ên wekî ll yan rr jî hewce ne werin zêdekirin. Dûre em zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:42, 29 tîrmeh 2026 (UTC)
:::Min nû ferq kir, sayfeyên ku hîn nehatine çêkirin wîkîlînk nake. Problemeke mezin e divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:15, 30 tîrmeh 2026 (UTC)
::::Na, lînk dike, tiştekî din heye... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:49, 31 tîrmeh 2026 (UTC)
== Amûra manayê ==
Amûreke din ji bo nivîsina maneyê wekî Nimûne zêde bike lazim e [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6276876 js] [https://ku.wiktionary.org/w/index.php?title=%C5%9Eablon:ceribandin2&oldid=6265629 şablon] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6265642 css] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:12, 23 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-jeder.js]] ==
@[[Bikarhêner:Ghybu|Ghybu]] Çavkaniyên jêderê di moda pêşdîtinê de jêderê vedişêre, ew jî min gelek eciz dike wextê çavkanî zêde dikim. Min ji Claude pirsî û kodan nîşanî wê da, wisa cewab da:
Yes — and this file actually explains the whole thing precisely, better than my earlier guess about extract-stripping.
What's happening: the CSS rule
<syntaxhighlight lang="css">
.jeder{
display:none;
}
</syntaxhighlight>
hides every citation by default, *unconditionally*. The only thing that ever makes it visible again is the gadget's JS: it finds each `.jeder`, builds the short "`— (year, author, +)`" summary from the `.j-pewist` fields, and either reveals the short version or — for citations with no `.j-pewist` fields — explicitly sets `display:inline` on the original.
So visibility of citations depends entirely on this JS running. In the normal article view (Image 1) it runs, so you see the collapsed "`(1918, E. Rehmî Ji Mala Hekariyan, Amadekar: M. E. Bozarslan, +)`" form. In whatever generated Image 2 — a hover-preview/extract/API render — gadget JS doesn't execute, so nothing ever removes the `display:none`, and the citation vanishes completely rather than degrading to "still visible, just not collapsed."
<b>The fix:</b> flip the default so the *un-collapsed* state is the safe fallback, and let JS do the hiding only after it successfully builds the short version. That way, any context without JS shows the full citation instead of nothing.
CSS — remove the blanket hide:
<syntaxhighlight lang="css">
.jeder {
/* intentionally no display:none here — see Gadget-... .js */
}
</syntaxhighlight>
JS — do the hiding from script, after the short form exists:
{{veşêre-ser}}
<syntaxhighlight lang="js">
// Ji bo şablonên [[Şablon:jêder]] hatiye nivîsandin.
// Parametreyên ku di navbera "<span class="j-pewist">...</span>" an "{{j-pêwîst|...}}" de ne venaşêre.
$(function() {
function nivisaKurtTevliBike(sund, nivisKurt) {
var zede = $('<a>+</a>')
.addClass('click')
.attr('href', '#')
.attr('title', 'zêdetir')
.css('font-weight', 'bold');
var kurt = $(' <a>↩</a>')
.addClass('click-kurt')
.attr('href', '#')
.attr('title', 'veşêre')
.css('font-weight', 'bold');
$('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// Only hide the full citation once the short summary actually exists.
// If this script never runs (no-JS clients, hover-preview extracts,
// action=render, etc.), the full citation stays visible instead of
// silently disappearing.
sund.css('display', 'none');
}
function vesere() {
$('.jeder').each(function() {
var elmTab = $(this).find('.j-pewist').clone();
if (elmTab.length) {
var elm = '';
for (var i = elmTab.length - 1; i >= 0; i--) {
elm = elmTab.eq(i).html() + ', ' + elm;
}
var nivisKurt = ' — (' + elm;
nivisaKurtTevliBike($(this), nivisKurt);
}
// else: no j-pewist fields to shorten — leave the full citation
// as it already renders (visible), nothing to do.
});
}
vesere();
$(".click").click(function(e) {
e.preventDefault();
$(this).parent('.jeder-kurt').css('display', 'none');
$(this).parent('.jeder-kurt').prev().css('display', 'inline');
});
$(".click-kurt").click(function(e) {
e.preventDefault();
$(this).parent('.jeder').css('display', 'none');
$(this).parent('.jeder').next().css('display', 'inline');
});
});
</syntaxhighlight>
Net effect:
- JS-enabled readers (normal article view): identical experience to today — collapsed short form with `+`/`↩` toggle.
- No-JS contexts (previews, extracts, screen readers before JS loads, print, etc.): full citation is shown instead of nothing — a real regression fix rather than a cosmetic one.
One caveat worth being upfront about: this fixes it *if* the preview context renders the gadget's HTML/CSS but doesn't execute gadget JS (which is the far more common case, and what this code strongly suggests is happening). If Image 2 instead comes from a pipeline that strips the `.jeder`/`.jegirtin-text` elements out of the HTML entirely before this CSS/JS even gets a chance to apply, no on-wiki CSS/JS change can help — that'd need the extract-generation config changed instead. Given what this gadget file shows, though, I'd bet on the CSS-hide explanation.
{{veşêre-bin}}
Em dûre biceribînin eger xeletî tinebe, vî tiştî jî rast bikin. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:00, 23 tîrmeh 2026 (UTC)
:Ez APIya MediaWiki rind nizanim belkî Claude dizane:) Em nikarin bibêjin dema ku moda "''action=edit''" e fonksiyona <code>function vesere()</code> bi kar meyîne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:57, 24 tîrmeh 2026 (UTC)
::Na, di moda "edît"-ê de <code>var elmTab = null</code>... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:13, 24 tîrmeh 2026 (UTC)
?:
<syntaxhighlight lang="js">
if (
mw.config.get('wgAction') === 'edit' ||
mw.config.get('wgAction') === 'submit'
){
var elmTab = [];
} else {
var elmTab = $(this).find('.j-pewist').clone();
}
</syntaxhighlight>
--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:31, 24 tîrmeh 2026 (UTC)
:Ez jî nizanim Claude çiqas ji mediawiki fêm dike lê heta niha ti tişt nîne ku min jê pirs kir û nikaribû çêke, bila wekî reklam nebe feqat Claude mikemmel e, dibêjim "li vir çima xeletiyeke wisa derdikeve" di dosyeya 2000 rêzî de diçe tiştê xelet tenê rast dike tiştekî din naguherîne. Chatgpt û aistudio qet wisa nakin, eynî dosyeyê deh cara dinivîsin, deh netîceyên cuda derdikevin :D
:Em dikarin vê amûrê wextê edit û submitê neaktîv bikin wekî <syntaxhighlight lang="js">if (!(action === "edit" || action === "submit")) {
:return;</syntaxhighlight> lê wê demê display:none wê çibe nizanim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:23, 24 tîrmeh 2026 (UTC)
::display:none ne hewce ye ma jixwe di nav kodê [https://ku.wiktionary.org/w/index.php?title=MediaWiki:Gadget-jeder.js&oldid=6069025#L-49 L-49] de inline/none heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:53, 24 tîrmeh 2026 (UTC)
:Min bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.js&diff=prev&oldid=6290816#L-28] ceriband feqat nexebitî. "display:none" di pêşdîtinê de dixebite feqat js naşixule. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:43, 25 tîrmeh 2026 (UTC)
::Kodên JSê pir hez nakim (pêşta hukurina APIya MWyê hewce bû) dîsa jî ez ê seh bikim :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:49, 27 tîrmeh 2026 (UTC)
:::Ez niha bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6290820] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6290821#L-8] bi kar tînim ti problem nîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:09, 27 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-PagePreviews.js]] ==
Ez dibêjim em vê amûrê jî çêkin [[:en:MediaWiki:Gadget-PagePreviews.js]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:56, 3 tebax 2026 (UTC)
= Moda tarî =
== [[Şablon:wîkîpediya]] ==
Rengê tarî de xirab e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:36, 4 tebax 2026 (UTC)
= Bot =
Karên ku bi botê werin çêkirin ji kerema xwe li vir binivîsin.
== Kategorî:Biwêj ==
[[:Kategorî:Biwêj]] divê were paqijkirin, lîsteya madeyên {{ş|biwêj}} çêke, yên ku tê de bûn, kirin, man hene filtre bike yên din bi destî tê çêkirin.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Jêgirtin ==
Xistina jêgirtinên beşa [https://ku.wiktionary.org/w/index.php?search=insource%3A%2F%3D+*Ji+%5BWw%5D%C3%AAjey%C3%AA+*%3D%2F&title=Taybet%3AL%C3%AAger%C3%AEn&profile=advanced&fulltext=1&ns0=1&searchToken=8rh0bmw8dccsi7aynl6zli8uf ji wêjeyê] li beşa maneyê. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Bota Toolforgeê ==
Botekî Toolforgeê lazim e ji bo ku xeletiyên biçûk wekî şablonên bi navên îngilîzî werin kurdîkirin yan jî valahiya beşan rast bike û hwd.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:Min [[Bikarhêner:Wikihez/skrîpt/py/kuwiktkozmetik.py|paqijiyen kozmetîk]] hazir kir feqat hîn navên şablonan naguhêre. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 4 tebax 2026 (UTC)
== Updatew ==
Bota [[Bikarhêner:Wikihez/skrîpt/py/updateW.py|updateW]] divê were rojanekirin. Yan jî yekî nû were çêkirin. Şablonên {{ş|W}} di beşa tercimeyan de sererast dike û zimanan rêz dike. Ya niha xeletiya navê zimanî dide.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== sihir --> sêhr ==
Tercimeyên ''[[sêhr]]'' hemû dibêje ''sihir'' loma bi botê lazim e kirin ''sêhr''. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:43, 18 tîrmeh 2026 (UTC)
:Sihirbaz --> sêhrbaz [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:07, 18 tîrmeh 2026 (UTC)
== Tercimeyên dîroknas ==
Li tercimeyên [[dîroknas]], hevmaneyên wê hewce ye were îlawekirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:44, 18 tîrmeh 2026 (UTC)
== Mewlûd ==
Sererastkirina jêgirtinên mewlûdê [https://ku.wiktionary.org/w/index.php?search=insource%3A%2Fw%5C%3AMela+His%C3%AAn%C3%AA+Batey%C3%AE%2F&title=Taybet%3AL%C3%AAger%C3%AEn&ns0=1&searchToken=8m0tguy3sqt7edr4sg0u8hedo] wekî [https://ku.wiktionary.org/w/index.php?title=dax%C3%AEdar&curid=284303&diff=6265851&oldid=6142285] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:43, 20 tîrmeh 2026 (UTC)
d7qsxhlyjgx1o4owzd8kc7b61fs2hag
6328699
6328696
2026-08-10T12:53:10Z
Wikihez
7344
/* Modul:quote */
6328699
wikitext
text/x-wiki
{{/ser}}
= Karên ferhengî =
== Mane ==
* [[:Kategorî:Madeyên bê beşa mane]]
** [[:Kategorî:Madeyên bê beşa mane bi kurmancî]]
Li ser van rûpelan ev made hene ku maneyan wan nehatine nivîsin û divê werin nivîsin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Etîmolojî ==
*[[:Kategorî:Daxwazên etîmolojiyê]]
**[[:Kategorî:Daxwazên etîmolojiyê bi kurmancî]]
Li ser van rûpelan ev made hene ku etîmolojiya wan hîn nehatine nivîsin. Ji bo alîkariyê binêre [[WF:Etîmolojî]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Cureyê rêzimanî ==
* [[:Kategorî:Gotarên bê kategoriya rêzimanî]]
* [[:Kategorî:Gotarên bê kategoriya rêzimanî bi kurmancî]]
Li ser van rûpelan ev made hene ku cureyên wan yên rêzimanî hîn nehatine nivîsin. Ji bo alîkariyê binêre [[Alîkarî:Cureyên peyvan]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Kontrol ==
* [[:Kategorî:Kontrol]]
** [[:Kategorî:Kontrola maneyê]]
Ev madde bi botê hatine çêkirin, yek bi yek divê werin kontrolkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
= Şablon =
== IPA ==
* {{ş|IPA}} divê [[Modul:IPA]] bi kar bîne. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Deng ==
Kurdîkirina belgekirina {{ş|deng}} lazim e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:06, 19 tîrmeh 2026 (UTC)
= Modul =
== Modul:form of/templates ==
* [[Modul:form of/templates]]: Divê ev modul were rojanekirin û xeletiyên berê wekî ([[hevalê]]) werin rastkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
*:Merheba @[[Bikarhêner:Ghybu|Ghybu]] Te gotibû di vê modulê de xeletî hene, jkx tu dikarî li vir binivîsî çi kêmasî hene, daku wextê rojane dikim ez ji bîr nekim? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:16, 21 tîrmeh 2026 (UTC)
*::Silav. Nizanim ji bîra min çûye... Herwiha ji bo çêkirina formên navdêran zanînên cîns û tîpa dawî bes e:
*::* (-ê, mê) => çemandî, bangkirin
*::* (-ê, nêr) => îzafe
*::* (-ê, mê û nêr) => îzafe (nêr), bangkirin (mê), çemandî (mê)
*::* (-a) => îzafe (mê)
*::* (-ekî) => îzafe û çemandî (nêr, nebinavkirî)
*::* (-eke) = > îzafe (mê, nebinavkirî)
*::* ...
*:: <code>if find(mw.title.getCurrentTitle().subpageText, 'ekî$') then ... end</code>
*::<code><nowiki>{{ku-tewîn-navForm|<navdêr>|<zayend>}</nowiki></code>
*::Tablo û nivîs di yekcarî de tên çêkirin...
*::Feqet problem lêzêdekirina mînakan e. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:34, 21 tîrmeh 2026 (UTC)
*:::Lêzêdekirina kîjan nimûneyan? Ev koda js ji bo çi ye? Qisûrê nenêre min fêm nekir :/ [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:13, 21 tîrmeh 2026 (UTC)
*::::Li vira ([[hevalê#Formeke navdêrê]]) di bin maneyên 1. û 2. mînak nayên tevlî kirin :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 21 tîrmeh 2026 (UTC)
*:::::Ev tercîh e, ne mecbûrî ye, em dikarin [https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&diff=prev&oldid=6276350 wisa] bikin. Wekî din? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:29, 21 tîrmeh 2026 (UTC)
*::::::Min li jor tênê got ku tenê parametreyên "navdêr" û "zayend" hewce nee. Bi '''[//ku.wiktionary.org/w/index.php?title=heval%C3%AA&curid=969734&diff=6276353&oldid=6276350 vî]''' awayî jî tê çêkirin. Parametreyên din ne hewce ne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:38, 21 tîrmeh 2026 (UTC)
*:::::::Ji bo wê şabloneke din lazim e, bila ev şablon wekî îngilîzî bimîne em ji bo kurmancî yekî din çêkin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:42, 21 tîrmeh 2026 (UTC)
*::::::::[https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&oldid=6276885 wisa] çawa ye? Bi min nivîsîna nimûneyan zêde ne lazim e ji ber ku ti kes serê xwe pê naêşîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:46, 23 tîrmeh 2026 (UTC)
*:::::::::@[[Bikarhêner:Ghybu|Ghybu]] Vê şablonê bi kar bînin an na? Navê şablonê kê çi be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:07, 24 tîrmeh 2026 (UTC)
== Modul:columns ==
* [[Modul:columns]] were rojanekirin û {{ş|kol3}} bila lînka ''nîşan bide'' deyne beriya sernavê, kolê di qutiya rengî de bila nebe. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Modul:etymon ==
* [[Modul:etymon kevn]]: Rojanekirin hewce ye. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Modul:ziman/code to canonical name]] ==
Belgekirina skrîptê û js divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:31, 22 tîrmeh 2026 (UTC)
:* [[MediaWiki:UpdateLanguageNameAndCode.js]]
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:50, 22 tîrmeh 2026 (UTC)
::* [[Modul:ziman/print]]
::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:52, 22 tîrmeh 2026 (UTC)
:::*[[Modul:ziman/şablon]]
:::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:56, 22 tîrmeh 2026 (UTC)
::::* [[MediaWiki:Gadget-translation editor.js/ziman.json]]
::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:06, 22 tîrmeh 2026 (UTC)
== [[Modul:quote]] ==
Piştî ev modul hate hazirkirin, lazim e navên jegirtinan werin rastkirin û li hemûyan {{param|jêgirtin}} were zêdekirin. Bnr. [[Gotûbêja şablonê:Jêgirtin/Ehmedê Xanî/Mem û Zîn]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:27, 5 tebax 2026 (UTC)
::Ev modul hema bêje hazir e. Hûn li ser van madeyan çi difikirin:
# {{para|tarîx}} lazim e full date be eger na, lazim e {{para|sal}} were bikaranîn. Feqat "'''2021''' kanûna pêşîn 23" bi vî şiklî bi min ne problem e çnkî derdê en.wikt "attestation" e delîla herî pêşî jî sal e.
#: {{demo|sep=wisa xuya dibe<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|tarîx=23 December 2021|nivîskar=Harry Hobbs; George Williams|sernav=Micronations and the Search for Sovereignty|url=https://www.cambridge.org/core/books/micronations-and-the-search-for-sovereignty/B0414A3A322695D9EE71E4CDDFDA06DE|weşanxane=Cambridge University Press|rûpel=155|isbn=978-1-009-15012-5|jêgirtin=jêgirtin.|t=-}}</nowiki>}}
#{{para|amadekar}}/{{para|edîtor}}/{{para|terciman}} bi şiklê edîtoriya, amadekariya, tercimekirina
#: {{demo|sep=dide<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|sernav=Medical Surgical Nursing|serî=Juta's Manual of Nursing|cildê-seriyê=volume 4|edîtor=Sophie Mataniele Mogotlane; Joyce Mokoena; Motshedisi Eunice Chauke; Anne Young|sal=2005|weşanxane=Juta Academic|isbn=978-0702171840|rûpel=!12-29|jêgirtin=jêgirtin|t=-}}</nowiki>}}
= Javascript =
== [[Mediawiki:Gadget-citoid-helper.js]] ==
Ji bo bi citoidê kopîkirina malûmatên çavkaniyan amûreke wisa lazim e. Xisûsen ji ber ku bi çend amûrên din dikare were bikaranîn.
Feqat çend problem hene, şablonên me de kêmasiya parametreyan gelek in û xerîteyên citoidê hîn nehatine çêkirin. Wana sererast bikin dûre vê amûrê çêkin, piştre [[MediaWiki:Gadget-start.js|start.js]] û [[MediaWiki:Gadget-wikt.add-examples.js|add examples.js]] were rojanekirin.
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:04, 19 tîrmeh 2026 (UTC)
:Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]], ez dibêjim karê Modul:quote zêde wext bistîne, bila em dest bi bikaranîna van amûran bikin dûre kêmasiyan em ê temam bikin înşela. Dikarî vana li cihên xwe yên rast kopî paste bikî?
# [[Special:PermanentLink/6291574|Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]] --> [[Mediawiki:Gadget-citoid-helper.js]]
# Ya li jêr kopî bike qismê herî dawî ya AmûrênVeşartî li [[MediaWiki:Gadgets-definition]]:
## <code><nowiki>* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js</nowiki></code>
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:58, 26 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-start.js]] ==
Rojanekirin hewce ye. Min gelek tişt lê zêde kir lê ez niha test dikime. Piştre em bar bikin:
* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 17 tîrmeh 2026 (UTC)
:Min [[MediaWiki:Gadget-start.js/data.json|data.json]] çêkir ji bo ku bi hêsanî malûmatên heyî werin guhartin bêyî guhartina Javascriptê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:49, 18 tîrmeh 2026 (UTC)
:Xeletiyên ku ji bîr nekim rast bikim:
:* Wextê min çavkanî "kitêb" hilbijart û bi destî tije kir xeletiyeke [https://ku.wiktionary.org/w/index.php?title=xezete&diff=prev&oldid=6265392 wisa] derket her kelîme hate lînkkirin.
:* <code>html("⠿")</code> ev ne lazim e.
:* textarea ji bo çavkaniyên jêgirtinan xaseten yên sernav hîn jî ne draggable e.
:* pêşdîtina zindî checkbox wextê tê rakirin, pêşdîtin winda nabe.
:* Butona mobîlê ya vekirina formê di moda tarî de belî nabe, tenê wekî qutiyeke tarî xuya dibe.
:* Metna hişyarkirinê di guhartina rûpelên heyî de lazim e baştir bikim.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:51, 18 tîrmeh 2026 (UTC)
::Ev problem çêbûn, ez ê binêrim ka çi problemên din hene. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:15, 19 tîrmeh 2026 (UTC)
:::Çêke: Ji bo qismê çavkaniyê yek dikare API call û Kategorî:Çavkanî bi kar bîne ji bo ku şablon zêde bikî ji yên heyî. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 19 tîrmeh 2026 (UTC)
::::Ev jî çêbû, min beşa çavkanî jî çêkir. Eger xeletî dernekeve û problema valahiya piştî etîketê ji bîr nekim, piştî rojanekirina amûrên linkify, û citoid em dikarin bar bikin. Ez ê ti tiştê nû îlawe nekim, zêde dirêj bû. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:14, 21 tîrmeh 2026 (UTC)
:::::Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]]. Dikarî wana bar bikî?
:::::* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
:::::* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
:::::* [[MediaWiki:Gadgets-definition]] wisa rojane bike:
:::::* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper]|start.js|start.css|start.js/data.json
:::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:39, 5 tebax 2026 (UTC)
== [[Mediawiki:Gadget-QQ.js]] ==
Ev amûr di şikle Minerva de. Her daîm vê xeletiyê dide:
<syntaxhighlight lang="js">
TypeError: Cannot read properties of null (reading 'addEventListener') at css () at runScript () at Array.<anonymous> () at flushCssBuffer ()
</syntaxhighlight> [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:29, 18 tîrmeh 2026 (UTC)
:* [[Bikarhêner:Wikihez/skrîpt/js/Gadget-QQ.js]] --> [[Mediawiki:Gadget-QQ.js]]
:* [[Bikarhêner:Wikihez/Gadget-QQ.css]] --> [[Mediawiki:Gadget-QQ.css]]
:Ez dibêjim çêbû lê ka çend roj biceribînim. Tiştên ku hatin sererastkirin:
:# Google Books API Key dikarî zêde bikî, dixe cookies û di gerokê de dimîne. Berê bê API Key dixebitiya lê êdî mecbûr e ku API Key-a te hebe, bidestxistina wê ne zêde zor e lê dîsa jî tevlihev e.
:# Êdî di mobîlê de dixebite, heta di mobîlê de xweştir xuya dike.
:# Moda tarî
:# OOUI dewsa jquery.ui
:# Li qutiyê çi dixwazî zêde bikî, dikare li gorî îsm, sifet, fiîl bitewîne. Lê ji bo fiîl tenê dikare çend heb inflection bîne.
:# Butona paqij bike lê zêde kir.
:# Çend paqijiyên jêgirtinên Google Kitêbê niha hene.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:38, 18 tîrmeh 2026 (UTC)
::Tewandina fiîlan û xeletiya modulê lazim e were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:40, 21 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-wikt.add-examples.js]] ==
Min ev amûr hinek rojane kir feqat çend problem hene berî ku bar bikin.
Tiştên ku min guhart:
# Êdî li sayfeyên bi {{ş|maneid}} jî dixebite,
# Cihê di wîkîtekstê de yê ku jêgirtin were îlawekirin baştir bû,
# [[Mediawiki:Gadget-citoid-helper.js|citoid helper]] zêde kir ji bo ku bi hêsanî çavkanî bi riya doi, isbn an urlyê werin tijîkirin.
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]] --> [[MediaWiki:Gadget-wikt.add-examples.css]]
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]] --> [[MediaWiki:Gadget-wikt.add-examples.js]]
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 19 tîrmeh 2026 (UTC)
:Min "wikt." qismên cache kirinê ya wîkiya fransî bi [[MediaWiki:Gadget-StorageUtils.js]] guhartiye. loma ji bîr nekin wê amûrê li [[MediaWiki:Gadgets-definition]] zêde bikin. û navê amûrê jî biguhêrînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:15, 23 tîrmeh 2026 (UTC)
::Berê li ser WF:ceribandin dixebitî. niha naxebite. Divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:10, 7 tebax 2026 (UTC)
== Gadget-translation editor ==
* [[MediaWiki:Gadget-translation editor.js]]: divê formata en.wîktê were bikaranîn ji ber ku me gelek tercime ji en.wîktê kopî kir û ev js hîn nikare formata wekî li jêr bi kar bîne.
<syntaxhighlight lang="wikitext">
* {{Z|sh}}:
*: Kirîlî:
*: Latînî
</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Mediawiki:Gadget-linkify.js]] ==
* ''rûpeleke'' wekî<syntaxhighlight lang="wikitext">[[rûpeleke]]</syntaxhighlight> lînk dike, bi regexê belkî dikare wisa bike <syntaxhighlight lang="wikitext">[[rûpel]]eke</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
* Amûreke din wekî [[User:Wikihez/Gadget-linkify.js|linkify]] lazim e ku herfên mezin biçûk bike ji bo kurmancî.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:{{r|Bikarhêner}} Merheba bira, dikarî viya jî bar bikî?:
* [[Special:PermanentLink/6291974|linkify]] --> [[Mediawiki:Gadget-linkify.js]]
Spas--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:42, 29 tîrmeh 2026 (UTC)
:Dûre [https://ku.wiktionary.org/wiki/MediaWiki:Gadget-start.js#L-283 li vir] wiktviLinkify bike kuLinkify xêra xwe [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:51, 29 tîrmeh 2026 (UTC)
::Min ji bîr kir lê zêde bikim niha nikare "Dİ" bike "di", xeletiyeke berbelav a di nivîsên kurdî de, herfên din ên wekî ll yan rr jî hewce ne werin zêdekirin. Dûre em zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:42, 29 tîrmeh 2026 (UTC)
:::Min nû ferq kir, sayfeyên ku hîn nehatine çêkirin wîkîlînk nake. Problemeke mezin e divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:15, 30 tîrmeh 2026 (UTC)
::::Na, lînk dike, tiştekî din heye... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:49, 31 tîrmeh 2026 (UTC)
== Amûra manayê ==
Amûreke din ji bo nivîsina maneyê wekî Nimûne zêde bike lazim e [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6276876 js] [https://ku.wiktionary.org/w/index.php?title=%C5%9Eablon:ceribandin2&oldid=6265629 şablon] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6265642 css] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:12, 23 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-jeder.js]] ==
@[[Bikarhêner:Ghybu|Ghybu]] Çavkaniyên jêderê di moda pêşdîtinê de jêderê vedişêre, ew jî min gelek eciz dike wextê çavkanî zêde dikim. Min ji Claude pirsî û kodan nîşanî wê da, wisa cewab da:
Yes — and this file actually explains the whole thing precisely, better than my earlier guess about extract-stripping.
What's happening: the CSS rule
<syntaxhighlight lang="css">
.jeder{
display:none;
}
</syntaxhighlight>
hides every citation by default, *unconditionally*. The only thing that ever makes it visible again is the gadget's JS: it finds each `.jeder`, builds the short "`— (year, author, +)`" summary from the `.j-pewist` fields, and either reveals the short version or — for citations with no `.j-pewist` fields — explicitly sets `display:inline` on the original.
So visibility of citations depends entirely on this JS running. In the normal article view (Image 1) it runs, so you see the collapsed "`(1918, E. Rehmî Ji Mala Hekariyan, Amadekar: M. E. Bozarslan, +)`" form. In whatever generated Image 2 — a hover-preview/extract/API render — gadget JS doesn't execute, so nothing ever removes the `display:none`, and the citation vanishes completely rather than degrading to "still visible, just not collapsed."
<b>The fix:</b> flip the default so the *un-collapsed* state is the safe fallback, and let JS do the hiding only after it successfully builds the short version. That way, any context without JS shows the full citation instead of nothing.
CSS — remove the blanket hide:
<syntaxhighlight lang="css">
.jeder {
/* intentionally no display:none here — see Gadget-... .js */
}
</syntaxhighlight>
JS — do the hiding from script, after the short form exists:
{{veşêre-ser}}
<syntaxhighlight lang="js">
// Ji bo şablonên [[Şablon:jêder]] hatiye nivîsandin.
// Parametreyên ku di navbera "<span class="j-pewist">...</span>" an "{{j-pêwîst|...}}" de ne venaşêre.
$(function() {
function nivisaKurtTevliBike(sund, nivisKurt) {
var zede = $('<a>+</a>')
.addClass('click')
.attr('href', '#')
.attr('title', 'zêdetir')
.css('font-weight', 'bold');
var kurt = $(' <a>↩</a>')
.addClass('click-kurt')
.attr('href', '#')
.attr('title', 'veşêre')
.css('font-weight', 'bold');
$('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// Only hide the full citation once the short summary actually exists.
// If this script never runs (no-JS clients, hover-preview extracts,
// action=render, etc.), the full citation stays visible instead of
// silently disappearing.
sund.css('display', 'none');
}
function vesere() {
$('.jeder').each(function() {
var elmTab = $(this).find('.j-pewist').clone();
if (elmTab.length) {
var elm = '';
for (var i = elmTab.length - 1; i >= 0; i--) {
elm = elmTab.eq(i).html() + ', ' + elm;
}
var nivisKurt = ' — (' + elm;
nivisaKurtTevliBike($(this), nivisKurt);
}
// else: no j-pewist fields to shorten — leave the full citation
// as it already renders (visible), nothing to do.
});
}
vesere();
$(".click").click(function(e) {
e.preventDefault();
$(this).parent('.jeder-kurt').css('display', 'none');
$(this).parent('.jeder-kurt').prev().css('display', 'inline');
});
$(".click-kurt").click(function(e) {
e.preventDefault();
$(this).parent('.jeder').css('display', 'none');
$(this).parent('.jeder').next().css('display', 'inline');
});
});
</syntaxhighlight>
Net effect:
- JS-enabled readers (normal article view): identical experience to today — collapsed short form with `+`/`↩` toggle.
- No-JS contexts (previews, extracts, screen readers before JS loads, print, etc.): full citation is shown instead of nothing — a real regression fix rather than a cosmetic one.
One caveat worth being upfront about: this fixes it *if* the preview context renders the gadget's HTML/CSS but doesn't execute gadget JS (which is the far more common case, and what this code strongly suggests is happening). If Image 2 instead comes from a pipeline that strips the `.jeder`/`.jegirtin-text` elements out of the HTML entirely before this CSS/JS even gets a chance to apply, no on-wiki CSS/JS change can help — that'd need the extract-generation config changed instead. Given what this gadget file shows, though, I'd bet on the CSS-hide explanation.
{{veşêre-bin}}
Em dûre biceribînin eger xeletî tinebe, vî tiştî jî rast bikin. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:00, 23 tîrmeh 2026 (UTC)
:Ez APIya MediaWiki rind nizanim belkî Claude dizane:) Em nikarin bibêjin dema ku moda "''action=edit''" e fonksiyona <code>function vesere()</code> bi kar meyîne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:57, 24 tîrmeh 2026 (UTC)
::Na, di moda "edît"-ê de <code>var elmTab = null</code>... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:13, 24 tîrmeh 2026 (UTC)
?:
<syntaxhighlight lang="js">
if (
mw.config.get('wgAction') === 'edit' ||
mw.config.get('wgAction') === 'submit'
){
var elmTab = [];
} else {
var elmTab = $(this).find('.j-pewist').clone();
}
</syntaxhighlight>
--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:31, 24 tîrmeh 2026 (UTC)
:Ez jî nizanim Claude çiqas ji mediawiki fêm dike lê heta niha ti tişt nîne ku min jê pirs kir û nikaribû çêke, bila wekî reklam nebe feqat Claude mikemmel e, dibêjim "li vir çima xeletiyeke wisa derdikeve" di dosyeya 2000 rêzî de diçe tiştê xelet tenê rast dike tiştekî din naguherîne. Chatgpt û aistudio qet wisa nakin, eynî dosyeyê deh cara dinivîsin, deh netîceyên cuda derdikevin :D
:Em dikarin vê amûrê wextê edit û submitê neaktîv bikin wekî <syntaxhighlight lang="js">if (!(action === "edit" || action === "submit")) {
:return;</syntaxhighlight> lê wê demê display:none wê çibe nizanim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:23, 24 tîrmeh 2026 (UTC)
::display:none ne hewce ye ma jixwe di nav kodê [https://ku.wiktionary.org/w/index.php?title=MediaWiki:Gadget-jeder.js&oldid=6069025#L-49 L-49] de inline/none heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:53, 24 tîrmeh 2026 (UTC)
:Min bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.js&diff=prev&oldid=6290816#L-28] ceriband feqat nexebitî. "display:none" di pêşdîtinê de dixebite feqat js naşixule. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:43, 25 tîrmeh 2026 (UTC)
::Kodên JSê pir hez nakim (pêşta hukurina APIya MWyê hewce bû) dîsa jî ez ê seh bikim :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:49, 27 tîrmeh 2026 (UTC)
:::Ez niha bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6290820] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6290821#L-8] bi kar tînim ti problem nîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:09, 27 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-PagePreviews.js]] ==
Ez dibêjim em vê amûrê jî çêkin [[:en:MediaWiki:Gadget-PagePreviews.js]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:56, 3 tebax 2026 (UTC)
= Moda tarî =
== [[Şablon:wîkîpediya]] ==
Rengê tarî de xirab e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:36, 4 tebax 2026 (UTC)
= Bot =
Karên ku bi botê werin çêkirin ji kerema xwe li vir binivîsin.
== Kategorî:Biwêj ==
[[:Kategorî:Biwêj]] divê were paqijkirin, lîsteya madeyên {{ş|biwêj}} çêke, yên ku tê de bûn, kirin, man hene filtre bike yên din bi destî tê çêkirin.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Jêgirtin ==
Xistina jêgirtinên beşa [https://ku.wiktionary.org/w/index.php?search=insource%3A%2F%3D+*Ji+%5BWw%5D%C3%AAjey%C3%AA+*%3D%2F&title=Taybet%3AL%C3%AAger%C3%AEn&profile=advanced&fulltext=1&ns0=1&searchToken=8rh0bmw8dccsi7aynl6zli8uf ji wêjeyê] li beşa maneyê. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Bota Toolforgeê ==
Botekî Toolforgeê lazim e ji bo ku xeletiyên biçûk wekî şablonên bi navên îngilîzî werin kurdîkirin yan jî valahiya beşan rast bike û hwd.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:Min [[Bikarhêner:Wikihez/skrîpt/py/kuwiktkozmetik.py|paqijiyen kozmetîk]] hazir kir feqat hîn navên şablonan naguhêre. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 4 tebax 2026 (UTC)
== Updatew ==
Bota [[Bikarhêner:Wikihez/skrîpt/py/updateW.py|updateW]] divê were rojanekirin. Yan jî yekî nû were çêkirin. Şablonên {{ş|W}} di beşa tercimeyan de sererast dike û zimanan rêz dike. Ya niha xeletiya navê zimanî dide.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== sihir --> sêhr ==
Tercimeyên ''[[sêhr]]'' hemû dibêje ''sihir'' loma bi botê lazim e kirin ''sêhr''. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:43, 18 tîrmeh 2026 (UTC)
:Sihirbaz --> sêhrbaz [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:07, 18 tîrmeh 2026 (UTC)
== Tercimeyên dîroknas ==
Li tercimeyên [[dîroknas]], hevmaneyên wê hewce ye were îlawekirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:44, 18 tîrmeh 2026 (UTC)
== Mewlûd ==
Sererastkirina jêgirtinên mewlûdê [https://ku.wiktionary.org/w/index.php?search=insource%3A%2Fw%5C%3AMela+His%C3%AAn%C3%AA+Batey%C3%AE%2F&title=Taybet%3AL%C3%AAger%C3%AEn&ns0=1&searchToken=8m0tguy3sqt7edr4sg0u8hedo] wekî [https://ku.wiktionary.org/w/index.php?title=dax%C3%AEdar&curid=284303&diff=6265851&oldid=6142285] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:43, 20 tîrmeh 2026 (UTC)
9v95ld9eiynt3y92k2cdokacfewljj9
6328700
6328699
2026-08-10T13:09:23Z
Wikihez
7344
/* Modul:quote */
6328700
wikitext
text/x-wiki
{{/ser}}
= Karên ferhengî =
== Mane ==
* [[:Kategorî:Madeyên bê beşa mane]]
** [[:Kategorî:Madeyên bê beşa mane bi kurmancî]]
Li ser van rûpelan ev made hene ku maneyan wan nehatine nivîsin û divê werin nivîsin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Etîmolojî ==
*[[:Kategorî:Daxwazên etîmolojiyê]]
**[[:Kategorî:Daxwazên etîmolojiyê bi kurmancî]]
Li ser van rûpelan ev made hene ku etîmolojiya wan hîn nehatine nivîsin. Ji bo alîkariyê binêre [[WF:Etîmolojî]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Cureyê rêzimanî ==
* [[:Kategorî:Gotarên bê kategoriya rêzimanî]]
* [[:Kategorî:Gotarên bê kategoriya rêzimanî bi kurmancî]]
Li ser van rûpelan ev made hene ku cureyên wan yên rêzimanî hîn nehatine nivîsin. Ji bo alîkariyê binêre [[Alîkarî:Cureyên peyvan]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Kontrol ==
* [[:Kategorî:Kontrol]]
** [[:Kategorî:Kontrola maneyê]]
Ev madde bi botê hatine çêkirin, yek bi yek divê werin kontrolkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
= Şablon =
== IPA ==
* {{ş|IPA}} divê [[Modul:IPA]] bi kar bîne. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Deng ==
Kurdîkirina belgekirina {{ş|deng}} lazim e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:06, 19 tîrmeh 2026 (UTC)
= Modul =
== Modul:form of/templates ==
* [[Modul:form of/templates]]: Divê ev modul were rojanekirin û xeletiyên berê wekî ([[hevalê]]) werin rastkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
*:Merheba @[[Bikarhêner:Ghybu|Ghybu]] Te gotibû di vê modulê de xeletî hene, jkx tu dikarî li vir binivîsî çi kêmasî hene, daku wextê rojane dikim ez ji bîr nekim? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:16, 21 tîrmeh 2026 (UTC)
*::Silav. Nizanim ji bîra min çûye... Herwiha ji bo çêkirina formên navdêran zanînên cîns û tîpa dawî bes e:
*::* (-ê, mê) => çemandî, bangkirin
*::* (-ê, nêr) => îzafe
*::* (-ê, mê û nêr) => îzafe (nêr), bangkirin (mê), çemandî (mê)
*::* (-a) => îzafe (mê)
*::* (-ekî) => îzafe û çemandî (nêr, nebinavkirî)
*::* (-eke) = > îzafe (mê, nebinavkirî)
*::* ...
*:: <code>if find(mw.title.getCurrentTitle().subpageText, 'ekî$') then ... end</code>
*::<code><nowiki>{{ku-tewîn-navForm|<navdêr>|<zayend>}</nowiki></code>
*::Tablo û nivîs di yekcarî de tên çêkirin...
*::Feqet problem lêzêdekirina mînakan e. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:34, 21 tîrmeh 2026 (UTC)
*:::Lêzêdekirina kîjan nimûneyan? Ev koda js ji bo çi ye? Qisûrê nenêre min fêm nekir :/ [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:13, 21 tîrmeh 2026 (UTC)
*::::Li vira ([[hevalê#Formeke navdêrê]]) di bin maneyên 1. û 2. mînak nayên tevlî kirin :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 21 tîrmeh 2026 (UTC)
*:::::Ev tercîh e, ne mecbûrî ye, em dikarin [https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&diff=prev&oldid=6276350 wisa] bikin. Wekî din? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:29, 21 tîrmeh 2026 (UTC)
*::::::Min li jor tênê got ku tenê parametreyên "navdêr" û "zayend" hewce nee. Bi '''[//ku.wiktionary.org/w/index.php?title=heval%C3%AA&curid=969734&diff=6276353&oldid=6276350 vî]''' awayî jî tê çêkirin. Parametreyên din ne hewce ne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:38, 21 tîrmeh 2026 (UTC)
*:::::::Ji bo wê şabloneke din lazim e, bila ev şablon wekî îngilîzî bimîne em ji bo kurmancî yekî din çêkin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:42, 21 tîrmeh 2026 (UTC)
*::::::::[https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&oldid=6276885 wisa] çawa ye? Bi min nivîsîna nimûneyan zêde ne lazim e ji ber ku ti kes serê xwe pê naêşîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:46, 23 tîrmeh 2026 (UTC)
*:::::::::@[[Bikarhêner:Ghybu|Ghybu]] Vê şablonê bi kar bînin an na? Navê şablonê kê çi be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:07, 24 tîrmeh 2026 (UTC)
== Modul:columns ==
* [[Modul:columns]] were rojanekirin û {{ş|kol3}} bila lînka ''nîşan bide'' deyne beriya sernavê, kolê di qutiya rengî de bila nebe. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Modul:etymon ==
* [[Modul:etymon kevn]]: Rojanekirin hewce ye. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Modul:ziman/code to canonical name]] ==
Belgekirina skrîptê û js divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:31, 22 tîrmeh 2026 (UTC)
:* [[MediaWiki:UpdateLanguageNameAndCode.js]]
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:50, 22 tîrmeh 2026 (UTC)
::* [[Modul:ziman/print]]
::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:52, 22 tîrmeh 2026 (UTC)
:::*[[Modul:ziman/şablon]]
:::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:56, 22 tîrmeh 2026 (UTC)
::::* [[MediaWiki:Gadget-translation editor.js/ziman.json]]
::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:06, 22 tîrmeh 2026 (UTC)
== [[Modul:quote]] ==
Piştî ev modul hate hazirkirin, lazim e navên jegirtinan werin rastkirin û li hemûyan {{param|jêgirtin}} were zêdekirin. Bnr. [[Gotûbêja şablonê:Jêgirtin/Ehmedê Xanî/Mem û Zîn]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:27, 5 tebax 2026 (UTC)
::Ev modul hema bêje hazir e. Hûn li ser van madeyan çi difikirin:
# {{para|tarîx}} lazim e full date be eger na, lazim e {{para|sal}} were bikaranîn. Feqat "'''2021''' kanûna pêşîn 23" bi vî şiklî bi min ne problem e çnkî derdê en.wikt "attestation" e delîla herî pêşî jî sal e.
#: {{demo|sep=wisa xuya dibe<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|tarîx=23 December 2021|nivîskar=Harry Hobbs; George Williams|sernav=Micronations and the Search for Sovereignty|url=https://www.cambridge.org/core/books/micronations-and-the-search-for-sovereignty/B0414A3A322695D9EE71E4CDDFDA06DE|weşanxane=Cambridge University Press|rûpel=155|isbn=978-1-009-15012-5|jêgirtin=jêgirtin.|t=-}}</nowiki>}}
#{{para|amadekar}}/{{para|edîtor}}/{{para|terciman}} bi şiklê edîtoriya, amadekariya, tercimekirina
#: {{demo|sep=dide<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|sernav=Medical Surgical Nursing|serî=Juta's Manual of Nursing|cildê-seriyê=volume 4|edîtor=Sophie Mataniele Mogotlane; Joyce Mokoena; Motshedisi Eunice Chauke; Anne Young|sal=2005|weşanxane=Juta Academic|isbn=978-0702171840|rûpel=!12-29|jêgirtin=jêgirtin|t=-}}</nowiki>}}
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:09, 10 tebax 2026 (UTC)
= Javascript =
== [[Mediawiki:Gadget-citoid-helper.js]] ==
Ji bo bi citoidê kopîkirina malûmatên çavkaniyan amûreke wisa lazim e. Xisûsen ji ber ku bi çend amûrên din dikare were bikaranîn.
Feqat çend problem hene, şablonên me de kêmasiya parametreyan gelek in û xerîteyên citoidê hîn nehatine çêkirin. Wana sererast bikin dûre vê amûrê çêkin, piştre [[MediaWiki:Gadget-start.js|start.js]] û [[MediaWiki:Gadget-wikt.add-examples.js|add examples.js]] were rojanekirin.
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:04, 19 tîrmeh 2026 (UTC)
:Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]], ez dibêjim karê Modul:quote zêde wext bistîne, bila em dest bi bikaranîna van amûran bikin dûre kêmasiyan em ê temam bikin înşela. Dikarî vana li cihên xwe yên rast kopî paste bikî?
# [[Special:PermanentLink/6291574|Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]] --> [[Mediawiki:Gadget-citoid-helper.js]]
# Ya li jêr kopî bike qismê herî dawî ya AmûrênVeşartî li [[MediaWiki:Gadgets-definition]]:
## <code><nowiki>* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js</nowiki></code>
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:58, 26 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-start.js]] ==
Rojanekirin hewce ye. Min gelek tişt lê zêde kir lê ez niha test dikime. Piştre em bar bikin:
* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 17 tîrmeh 2026 (UTC)
:Min [[MediaWiki:Gadget-start.js/data.json|data.json]] çêkir ji bo ku bi hêsanî malûmatên heyî werin guhartin bêyî guhartina Javascriptê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:49, 18 tîrmeh 2026 (UTC)
:Xeletiyên ku ji bîr nekim rast bikim:
:* Wextê min çavkanî "kitêb" hilbijart û bi destî tije kir xeletiyeke [https://ku.wiktionary.org/w/index.php?title=xezete&diff=prev&oldid=6265392 wisa] derket her kelîme hate lînkkirin.
:* <code>html("⠿")</code> ev ne lazim e.
:* textarea ji bo çavkaniyên jêgirtinan xaseten yên sernav hîn jî ne draggable e.
:* pêşdîtina zindî checkbox wextê tê rakirin, pêşdîtin winda nabe.
:* Butona mobîlê ya vekirina formê di moda tarî de belî nabe, tenê wekî qutiyeke tarî xuya dibe.
:* Metna hişyarkirinê di guhartina rûpelên heyî de lazim e baştir bikim.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:51, 18 tîrmeh 2026 (UTC)
::Ev problem çêbûn, ez ê binêrim ka çi problemên din hene. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:15, 19 tîrmeh 2026 (UTC)
:::Çêke: Ji bo qismê çavkaniyê yek dikare API call û Kategorî:Çavkanî bi kar bîne ji bo ku şablon zêde bikî ji yên heyî. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 19 tîrmeh 2026 (UTC)
::::Ev jî çêbû, min beşa çavkanî jî çêkir. Eger xeletî dernekeve û problema valahiya piştî etîketê ji bîr nekim, piştî rojanekirina amûrên linkify, û citoid em dikarin bar bikin. Ez ê ti tiştê nû îlawe nekim, zêde dirêj bû. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:14, 21 tîrmeh 2026 (UTC)
:::::Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]]. Dikarî wana bar bikî?
:::::* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
:::::* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
:::::* [[MediaWiki:Gadgets-definition]] wisa rojane bike:
:::::* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper]|start.js|start.css|start.js/data.json
:::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:39, 5 tebax 2026 (UTC)
== [[Mediawiki:Gadget-QQ.js]] ==
Ev amûr di şikle Minerva de. Her daîm vê xeletiyê dide:
<syntaxhighlight lang="js">
TypeError: Cannot read properties of null (reading 'addEventListener') at css () at runScript () at Array.<anonymous> () at flushCssBuffer ()
</syntaxhighlight> [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:29, 18 tîrmeh 2026 (UTC)
:* [[Bikarhêner:Wikihez/skrîpt/js/Gadget-QQ.js]] --> [[Mediawiki:Gadget-QQ.js]]
:* [[Bikarhêner:Wikihez/Gadget-QQ.css]] --> [[Mediawiki:Gadget-QQ.css]]
:Ez dibêjim çêbû lê ka çend roj biceribînim. Tiştên ku hatin sererastkirin:
:# Google Books API Key dikarî zêde bikî, dixe cookies û di gerokê de dimîne. Berê bê API Key dixebitiya lê êdî mecbûr e ku API Key-a te hebe, bidestxistina wê ne zêde zor e lê dîsa jî tevlihev e.
:# Êdî di mobîlê de dixebite, heta di mobîlê de xweştir xuya dike.
:# Moda tarî
:# OOUI dewsa jquery.ui
:# Li qutiyê çi dixwazî zêde bikî, dikare li gorî îsm, sifet, fiîl bitewîne. Lê ji bo fiîl tenê dikare çend heb inflection bîne.
:# Butona paqij bike lê zêde kir.
:# Çend paqijiyên jêgirtinên Google Kitêbê niha hene.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:38, 18 tîrmeh 2026 (UTC)
::Tewandina fiîlan û xeletiya modulê lazim e were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:40, 21 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-wikt.add-examples.js]] ==
Min ev amûr hinek rojane kir feqat çend problem hene berî ku bar bikin.
Tiştên ku min guhart:
# Êdî li sayfeyên bi {{ş|maneid}} jî dixebite,
# Cihê di wîkîtekstê de yê ku jêgirtin were îlawekirin baştir bû,
# [[Mediawiki:Gadget-citoid-helper.js|citoid helper]] zêde kir ji bo ku bi hêsanî çavkanî bi riya doi, isbn an urlyê werin tijîkirin.
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]] --> [[MediaWiki:Gadget-wikt.add-examples.css]]
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]] --> [[MediaWiki:Gadget-wikt.add-examples.js]]
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 19 tîrmeh 2026 (UTC)
:Min "wikt." qismên cache kirinê ya wîkiya fransî bi [[MediaWiki:Gadget-StorageUtils.js]] guhartiye. loma ji bîr nekin wê amûrê li [[MediaWiki:Gadgets-definition]] zêde bikin. û navê amûrê jî biguhêrînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:15, 23 tîrmeh 2026 (UTC)
::Berê li ser WF:ceribandin dixebitî. niha naxebite. Divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:10, 7 tebax 2026 (UTC)
== Gadget-translation editor ==
* [[MediaWiki:Gadget-translation editor.js]]: divê formata en.wîktê were bikaranîn ji ber ku me gelek tercime ji en.wîktê kopî kir û ev js hîn nikare formata wekî li jêr bi kar bîne.
<syntaxhighlight lang="wikitext">
* {{Z|sh}}:
*: Kirîlî:
*: Latînî
</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Mediawiki:Gadget-linkify.js]] ==
* ''rûpeleke'' wekî<syntaxhighlight lang="wikitext">[[rûpeleke]]</syntaxhighlight> lînk dike, bi regexê belkî dikare wisa bike <syntaxhighlight lang="wikitext">[[rûpel]]eke</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
* Amûreke din wekî [[User:Wikihez/Gadget-linkify.js|linkify]] lazim e ku herfên mezin biçûk bike ji bo kurmancî.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:{{r|Bikarhêner}} Merheba bira, dikarî viya jî bar bikî?:
* [[Special:PermanentLink/6291974|linkify]] --> [[Mediawiki:Gadget-linkify.js]]
Spas--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:42, 29 tîrmeh 2026 (UTC)
:Dûre [https://ku.wiktionary.org/wiki/MediaWiki:Gadget-start.js#L-283 li vir] wiktviLinkify bike kuLinkify xêra xwe [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:51, 29 tîrmeh 2026 (UTC)
::Min ji bîr kir lê zêde bikim niha nikare "Dİ" bike "di", xeletiyeke berbelav a di nivîsên kurdî de, herfên din ên wekî ll yan rr jî hewce ne werin zêdekirin. Dûre em zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:42, 29 tîrmeh 2026 (UTC)
:::Min nû ferq kir, sayfeyên ku hîn nehatine çêkirin wîkîlînk nake. Problemeke mezin e divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:15, 30 tîrmeh 2026 (UTC)
::::Na, lînk dike, tiştekî din heye... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:49, 31 tîrmeh 2026 (UTC)
== Amûra manayê ==
Amûreke din ji bo nivîsina maneyê wekî Nimûne zêde bike lazim e [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6276876 js] [https://ku.wiktionary.org/w/index.php?title=%C5%9Eablon:ceribandin2&oldid=6265629 şablon] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6265642 css] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:12, 23 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-jeder.js]] ==
@[[Bikarhêner:Ghybu|Ghybu]] Çavkaniyên jêderê di moda pêşdîtinê de jêderê vedişêre, ew jî min gelek eciz dike wextê çavkanî zêde dikim. Min ji Claude pirsî û kodan nîşanî wê da, wisa cewab da:
Yes — and this file actually explains the whole thing precisely, better than my earlier guess about extract-stripping.
What's happening: the CSS rule
<syntaxhighlight lang="css">
.jeder{
display:none;
}
</syntaxhighlight>
hides every citation by default, *unconditionally*. The only thing that ever makes it visible again is the gadget's JS: it finds each `.jeder`, builds the short "`— (year, author, +)`" summary from the `.j-pewist` fields, and either reveals the short version or — for citations with no `.j-pewist` fields — explicitly sets `display:inline` on the original.
So visibility of citations depends entirely on this JS running. In the normal article view (Image 1) it runs, so you see the collapsed "`(1918, E. Rehmî Ji Mala Hekariyan, Amadekar: M. E. Bozarslan, +)`" form. In whatever generated Image 2 — a hover-preview/extract/API render — gadget JS doesn't execute, so nothing ever removes the `display:none`, and the citation vanishes completely rather than degrading to "still visible, just not collapsed."
<b>The fix:</b> flip the default so the *un-collapsed* state is the safe fallback, and let JS do the hiding only after it successfully builds the short version. That way, any context without JS shows the full citation instead of nothing.
CSS — remove the blanket hide:
<syntaxhighlight lang="css">
.jeder {
/* intentionally no display:none here — see Gadget-... .js */
}
</syntaxhighlight>
JS — do the hiding from script, after the short form exists:
{{veşêre-ser}}
<syntaxhighlight lang="js">
// Ji bo şablonên [[Şablon:jêder]] hatiye nivîsandin.
// Parametreyên ku di navbera "<span class="j-pewist">...</span>" an "{{j-pêwîst|...}}" de ne venaşêre.
$(function() {
function nivisaKurtTevliBike(sund, nivisKurt) {
var zede = $('<a>+</a>')
.addClass('click')
.attr('href', '#')
.attr('title', 'zêdetir')
.css('font-weight', 'bold');
var kurt = $(' <a>↩</a>')
.addClass('click-kurt')
.attr('href', '#')
.attr('title', 'veşêre')
.css('font-weight', 'bold');
$('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// Only hide the full citation once the short summary actually exists.
// If this script never runs (no-JS clients, hover-preview extracts,
// action=render, etc.), the full citation stays visible instead of
// silently disappearing.
sund.css('display', 'none');
}
function vesere() {
$('.jeder').each(function() {
var elmTab = $(this).find('.j-pewist').clone();
if (elmTab.length) {
var elm = '';
for (var i = elmTab.length - 1; i >= 0; i--) {
elm = elmTab.eq(i).html() + ', ' + elm;
}
var nivisKurt = ' — (' + elm;
nivisaKurtTevliBike($(this), nivisKurt);
}
// else: no j-pewist fields to shorten — leave the full citation
// as it already renders (visible), nothing to do.
});
}
vesere();
$(".click").click(function(e) {
e.preventDefault();
$(this).parent('.jeder-kurt').css('display', 'none');
$(this).parent('.jeder-kurt').prev().css('display', 'inline');
});
$(".click-kurt").click(function(e) {
e.preventDefault();
$(this).parent('.jeder').css('display', 'none');
$(this).parent('.jeder').next().css('display', 'inline');
});
});
</syntaxhighlight>
Net effect:
- JS-enabled readers (normal article view): identical experience to today — collapsed short form with `+`/`↩` toggle.
- No-JS contexts (previews, extracts, screen readers before JS loads, print, etc.): full citation is shown instead of nothing — a real regression fix rather than a cosmetic one.
One caveat worth being upfront about: this fixes it *if* the preview context renders the gadget's HTML/CSS but doesn't execute gadget JS (which is the far more common case, and what this code strongly suggests is happening). If Image 2 instead comes from a pipeline that strips the `.jeder`/`.jegirtin-text` elements out of the HTML entirely before this CSS/JS even gets a chance to apply, no on-wiki CSS/JS change can help — that'd need the extract-generation config changed instead. Given what this gadget file shows, though, I'd bet on the CSS-hide explanation.
{{veşêre-bin}}
Em dûre biceribînin eger xeletî tinebe, vî tiştî jî rast bikin. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:00, 23 tîrmeh 2026 (UTC)
:Ez APIya MediaWiki rind nizanim belkî Claude dizane:) Em nikarin bibêjin dema ku moda "''action=edit''" e fonksiyona <code>function vesere()</code> bi kar meyîne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:57, 24 tîrmeh 2026 (UTC)
::Na, di moda "edît"-ê de <code>var elmTab = null</code>... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:13, 24 tîrmeh 2026 (UTC)
?:
<syntaxhighlight lang="js">
if (
mw.config.get('wgAction') === 'edit' ||
mw.config.get('wgAction') === 'submit'
){
var elmTab = [];
} else {
var elmTab = $(this).find('.j-pewist').clone();
}
</syntaxhighlight>
--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:31, 24 tîrmeh 2026 (UTC)
:Ez jî nizanim Claude çiqas ji mediawiki fêm dike lê heta niha ti tişt nîne ku min jê pirs kir û nikaribû çêke, bila wekî reklam nebe feqat Claude mikemmel e, dibêjim "li vir çima xeletiyeke wisa derdikeve" di dosyeya 2000 rêzî de diçe tiştê xelet tenê rast dike tiştekî din naguherîne. Chatgpt û aistudio qet wisa nakin, eynî dosyeyê deh cara dinivîsin, deh netîceyên cuda derdikevin :D
:Em dikarin vê amûrê wextê edit û submitê neaktîv bikin wekî <syntaxhighlight lang="js">if (!(action === "edit" || action === "submit")) {
:return;</syntaxhighlight> lê wê demê display:none wê çibe nizanim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:23, 24 tîrmeh 2026 (UTC)
::display:none ne hewce ye ma jixwe di nav kodê [https://ku.wiktionary.org/w/index.php?title=MediaWiki:Gadget-jeder.js&oldid=6069025#L-49 L-49] de inline/none heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:53, 24 tîrmeh 2026 (UTC)
:Min bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.js&diff=prev&oldid=6290816#L-28] ceriband feqat nexebitî. "display:none" di pêşdîtinê de dixebite feqat js naşixule. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:43, 25 tîrmeh 2026 (UTC)
::Kodên JSê pir hez nakim (pêşta hukurina APIya MWyê hewce bû) dîsa jî ez ê seh bikim :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:49, 27 tîrmeh 2026 (UTC)
:::Ez niha bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6290820] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6290821#L-8] bi kar tînim ti problem nîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:09, 27 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-PagePreviews.js]] ==
Ez dibêjim em vê amûrê jî çêkin [[:en:MediaWiki:Gadget-PagePreviews.js]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:56, 3 tebax 2026 (UTC)
= Moda tarî =
== [[Şablon:wîkîpediya]] ==
Rengê tarî de xirab e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:36, 4 tebax 2026 (UTC)
= Bot =
Karên ku bi botê werin çêkirin ji kerema xwe li vir binivîsin.
== Kategorî:Biwêj ==
[[:Kategorî:Biwêj]] divê were paqijkirin, lîsteya madeyên {{ş|biwêj}} çêke, yên ku tê de bûn, kirin, man hene filtre bike yên din bi destî tê çêkirin.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Jêgirtin ==
Xistina jêgirtinên beşa [https://ku.wiktionary.org/w/index.php?search=insource%3A%2F%3D+*Ji+%5BWw%5D%C3%AAjey%C3%AA+*%3D%2F&title=Taybet%3AL%C3%AAger%C3%AEn&profile=advanced&fulltext=1&ns0=1&searchToken=8rh0bmw8dccsi7aynl6zli8uf ji wêjeyê] li beşa maneyê. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Bota Toolforgeê ==
Botekî Toolforgeê lazim e ji bo ku xeletiyên biçûk wekî şablonên bi navên îngilîzî werin kurdîkirin yan jî valahiya beşan rast bike û hwd.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:Min [[Bikarhêner:Wikihez/skrîpt/py/kuwiktkozmetik.py|paqijiyen kozmetîk]] hazir kir feqat hîn navên şablonan naguhêre. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 4 tebax 2026 (UTC)
== Updatew ==
Bota [[Bikarhêner:Wikihez/skrîpt/py/updateW.py|updateW]] divê were rojanekirin. Yan jî yekî nû were çêkirin. Şablonên {{ş|W}} di beşa tercimeyan de sererast dike û zimanan rêz dike. Ya niha xeletiya navê zimanî dide.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== sihir --> sêhr ==
Tercimeyên ''[[sêhr]]'' hemû dibêje ''sihir'' loma bi botê lazim e kirin ''sêhr''. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:43, 18 tîrmeh 2026 (UTC)
:Sihirbaz --> sêhrbaz [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:07, 18 tîrmeh 2026 (UTC)
== Tercimeyên dîroknas ==
Li tercimeyên [[dîroknas]], hevmaneyên wê hewce ye were îlawekirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:44, 18 tîrmeh 2026 (UTC)
== Mewlûd ==
Sererastkirina jêgirtinên mewlûdê [https://ku.wiktionary.org/w/index.php?search=insource%3A%2Fw%5C%3AMela+His%C3%AAn%C3%AA+Batey%C3%AE%2F&title=Taybet%3AL%C3%AAger%C3%AEn&ns0=1&searchToken=8m0tguy3sqt7edr4sg0u8hedo] wekî [https://ku.wiktionary.org/w/index.php?title=dax%C3%AEdar&curid=284303&diff=6265851&oldid=6142285] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:43, 20 tîrmeh 2026 (UTC)
bhtcx93n0atwg41ij3kjeel0grxz3fe
6328701
6328700
2026-08-10T13:11:11Z
Wikihez
7344
/* Modul:quote */ Bersiv
6328701
wikitext
text/x-wiki
{{/ser}}
= Karên ferhengî =
== Mane ==
* [[:Kategorî:Madeyên bê beşa mane]]
** [[:Kategorî:Madeyên bê beşa mane bi kurmancî]]
Li ser van rûpelan ev made hene ku maneyan wan nehatine nivîsin û divê werin nivîsin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Etîmolojî ==
*[[:Kategorî:Daxwazên etîmolojiyê]]
**[[:Kategorî:Daxwazên etîmolojiyê bi kurmancî]]
Li ser van rûpelan ev made hene ku etîmolojiya wan hîn nehatine nivîsin. Ji bo alîkariyê binêre [[WF:Etîmolojî]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Cureyê rêzimanî ==
* [[:Kategorî:Gotarên bê kategoriya rêzimanî]]
* [[:Kategorî:Gotarên bê kategoriya rêzimanî bi kurmancî]]
Li ser van rûpelan ev made hene ku cureyên wan yên rêzimanî hîn nehatine nivîsin. Ji bo alîkariyê binêre [[Alîkarî:Cureyên peyvan]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Kontrol ==
* [[:Kategorî:Kontrol]]
** [[:Kategorî:Kontrola maneyê]]
Ev madde bi botê hatine çêkirin, yek bi yek divê werin kontrolkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
= Şablon =
== IPA ==
* {{ş|IPA}} divê [[Modul:IPA]] bi kar bîne. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Deng ==
Kurdîkirina belgekirina {{ş|deng}} lazim e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:06, 19 tîrmeh 2026 (UTC)
= Modul =
== Modul:form of/templates ==
* [[Modul:form of/templates]]: Divê ev modul were rojanekirin û xeletiyên berê wekî ([[hevalê]]) werin rastkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
*:Merheba @[[Bikarhêner:Ghybu|Ghybu]] Te gotibû di vê modulê de xeletî hene, jkx tu dikarî li vir binivîsî çi kêmasî hene, daku wextê rojane dikim ez ji bîr nekim? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:16, 21 tîrmeh 2026 (UTC)
*::Silav. Nizanim ji bîra min çûye... Herwiha ji bo çêkirina formên navdêran zanînên cîns û tîpa dawî bes e:
*::* (-ê, mê) => çemandî, bangkirin
*::* (-ê, nêr) => îzafe
*::* (-ê, mê û nêr) => îzafe (nêr), bangkirin (mê), çemandî (mê)
*::* (-a) => îzafe (mê)
*::* (-ekî) => îzafe û çemandî (nêr, nebinavkirî)
*::* (-eke) = > îzafe (mê, nebinavkirî)
*::* ...
*:: <code>if find(mw.title.getCurrentTitle().subpageText, 'ekî$') then ... end</code>
*::<code><nowiki>{{ku-tewîn-navForm|<navdêr>|<zayend>}</nowiki></code>
*::Tablo û nivîs di yekcarî de tên çêkirin...
*::Feqet problem lêzêdekirina mînakan e. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:34, 21 tîrmeh 2026 (UTC)
*:::Lêzêdekirina kîjan nimûneyan? Ev koda js ji bo çi ye? Qisûrê nenêre min fêm nekir :/ [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:13, 21 tîrmeh 2026 (UTC)
*::::Li vira ([[hevalê#Formeke navdêrê]]) di bin maneyên 1. û 2. mînak nayên tevlî kirin :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 21 tîrmeh 2026 (UTC)
*:::::Ev tercîh e, ne mecbûrî ye, em dikarin [https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&diff=prev&oldid=6276350 wisa] bikin. Wekî din? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:29, 21 tîrmeh 2026 (UTC)
*::::::Min li jor tênê got ku tenê parametreyên "navdêr" û "zayend" hewce nee. Bi '''[//ku.wiktionary.org/w/index.php?title=heval%C3%AA&curid=969734&diff=6276353&oldid=6276350 vî]''' awayî jî tê çêkirin. Parametreyên din ne hewce ne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:38, 21 tîrmeh 2026 (UTC)
*:::::::Ji bo wê şabloneke din lazim e, bila ev şablon wekî îngilîzî bimîne em ji bo kurmancî yekî din çêkin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:42, 21 tîrmeh 2026 (UTC)
*::::::::[https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&oldid=6276885 wisa] çawa ye? Bi min nivîsîna nimûneyan zêde ne lazim e ji ber ku ti kes serê xwe pê naêşîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:46, 23 tîrmeh 2026 (UTC)
*:::::::::@[[Bikarhêner:Ghybu|Ghybu]] Vê şablonê bi kar bînin an na? Navê şablonê kê çi be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:07, 24 tîrmeh 2026 (UTC)
== Modul:columns ==
* [[Modul:columns]] were rojanekirin û {{ş|kol3}} bila lînka ''nîşan bide'' deyne beriya sernavê, kolê di qutiya rengî de bila nebe. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Modul:etymon ==
* [[Modul:etymon kevn]]: Rojanekirin hewce ye. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Modul:ziman/code to canonical name]] ==
Belgekirina skrîptê û js divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:31, 22 tîrmeh 2026 (UTC)
:* [[MediaWiki:UpdateLanguageNameAndCode.js]]
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:50, 22 tîrmeh 2026 (UTC)
::* [[Modul:ziman/print]]
::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:52, 22 tîrmeh 2026 (UTC)
:::*[[Modul:ziman/şablon]]
:::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:56, 22 tîrmeh 2026 (UTC)
::::* [[MediaWiki:Gadget-translation editor.js/ziman.json]]
::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:06, 22 tîrmeh 2026 (UTC)
== [[Modul:quote]] ==
Piştî ev modul hate hazirkirin, lazim e navên jegirtinan werin rastkirin û li hemûyan {{param|jêgirtin}} were zêdekirin. Bnr. [[Gotûbêja şablonê:Jêgirtin/Ehmedê Xanî/Mem û Zîn]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:27, 5 tebax 2026 (UTC)
::Ev modul hema bêje hazir e. Hûn li ser van madeyan çi difikirin:
# {{para|tarîx}} lazim e full date be eger na, lazim e {{para|sal}} were bikaranîn. Feqat "'''2021''' kanûna pêşîn 23" bi vî şiklî bi min ne problem e çnkî derdê en.wikt "attestation" e delîla herî pêşî jî sal e.
#: {{demo|sep=wisa xuya dibe<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|tarîx=23 December 2021|nivîskar=Harry Hobbs; George Williams|sernav=Micronations and the Search for Sovereignty|url=https://www.cambridge.org/core/books/micronations-and-the-search-for-sovereignty/B0414A3A322695D9EE71E4CDDFDA06DE|weşanxane=Cambridge University Press|rûpel=155|isbn=978-1-009-15012-5|jêgirtin=jêgirtin.|t=-}}</nowiki>}}
#{{para|amadekar}}/{{para|edîtor}}/{{para|terciman}} bi şiklê edîtoriya, amadekariya, tercimekirina
#: {{demo|sep=dide<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|sernav=Medical Surgical Nursing|serî=Juta's Manual of Nursing|cildê-seriyê=volume 4|edîtor=Sophie Mataniele Mogotlane; Joyce Mokoena; Motshedisi Eunice Chauke; Anne Young|sal=2005|weşanxane=Juta Academic|isbn=978-0702171840|rûpel=!12-29|jêgirtin=jêgirtin|t=-}}</nowiki>}}
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:09, 10 tebax 2026 (UTC)
:@[[Bikarhêner:Bikarhêner|Bikarhêner]] û @[[Bikarhêner:Ghybu|Ghybu]] Hîn gelek tişt hene divê îzah bikin û fikrê we pirs bikim, feqat îzahkirin pir zor e, em dest bi bikaranînê bikin û dûre tiştên ku hûn naxwazin em dikarin biguherînîn. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:11, 10 tebax 2026 (UTC)
= Javascript =
== [[Mediawiki:Gadget-citoid-helper.js]] ==
Ji bo bi citoidê kopîkirina malûmatên çavkaniyan amûreke wisa lazim e. Xisûsen ji ber ku bi çend amûrên din dikare were bikaranîn.
Feqat çend problem hene, şablonên me de kêmasiya parametreyan gelek in û xerîteyên citoidê hîn nehatine çêkirin. Wana sererast bikin dûre vê amûrê çêkin, piştre [[MediaWiki:Gadget-start.js|start.js]] û [[MediaWiki:Gadget-wikt.add-examples.js|add examples.js]] were rojanekirin.
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:04, 19 tîrmeh 2026 (UTC)
:Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]], ez dibêjim karê Modul:quote zêde wext bistîne, bila em dest bi bikaranîna van amûran bikin dûre kêmasiyan em ê temam bikin înşela. Dikarî vana li cihên xwe yên rast kopî paste bikî?
# [[Special:PermanentLink/6291574|Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]] --> [[Mediawiki:Gadget-citoid-helper.js]]
# Ya li jêr kopî bike qismê herî dawî ya AmûrênVeşartî li [[MediaWiki:Gadgets-definition]]:
## <code><nowiki>* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js</nowiki></code>
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:58, 26 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-start.js]] ==
Rojanekirin hewce ye. Min gelek tişt lê zêde kir lê ez niha test dikime. Piştre em bar bikin:
* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 17 tîrmeh 2026 (UTC)
:Min [[MediaWiki:Gadget-start.js/data.json|data.json]] çêkir ji bo ku bi hêsanî malûmatên heyî werin guhartin bêyî guhartina Javascriptê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:49, 18 tîrmeh 2026 (UTC)
:Xeletiyên ku ji bîr nekim rast bikim:
:* Wextê min çavkanî "kitêb" hilbijart û bi destî tije kir xeletiyeke [https://ku.wiktionary.org/w/index.php?title=xezete&diff=prev&oldid=6265392 wisa] derket her kelîme hate lînkkirin.
:* <code>html("⠿")</code> ev ne lazim e.
:* textarea ji bo çavkaniyên jêgirtinan xaseten yên sernav hîn jî ne draggable e.
:* pêşdîtina zindî checkbox wextê tê rakirin, pêşdîtin winda nabe.
:* Butona mobîlê ya vekirina formê di moda tarî de belî nabe, tenê wekî qutiyeke tarî xuya dibe.
:* Metna hişyarkirinê di guhartina rûpelên heyî de lazim e baştir bikim.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:51, 18 tîrmeh 2026 (UTC)
::Ev problem çêbûn, ez ê binêrim ka çi problemên din hene. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:15, 19 tîrmeh 2026 (UTC)
:::Çêke: Ji bo qismê çavkaniyê yek dikare API call û Kategorî:Çavkanî bi kar bîne ji bo ku şablon zêde bikî ji yên heyî. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 19 tîrmeh 2026 (UTC)
::::Ev jî çêbû, min beşa çavkanî jî çêkir. Eger xeletî dernekeve û problema valahiya piştî etîketê ji bîr nekim, piştî rojanekirina amûrên linkify, û citoid em dikarin bar bikin. Ez ê ti tiştê nû îlawe nekim, zêde dirêj bû. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:14, 21 tîrmeh 2026 (UTC)
:::::Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]]. Dikarî wana bar bikî?
:::::* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
:::::* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
:::::* [[MediaWiki:Gadgets-definition]] wisa rojane bike:
:::::* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper]|start.js|start.css|start.js/data.json
:::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:39, 5 tebax 2026 (UTC)
== [[Mediawiki:Gadget-QQ.js]] ==
Ev amûr di şikle Minerva de. Her daîm vê xeletiyê dide:
<syntaxhighlight lang="js">
TypeError: Cannot read properties of null (reading 'addEventListener') at css () at runScript () at Array.<anonymous> () at flushCssBuffer ()
</syntaxhighlight> [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:29, 18 tîrmeh 2026 (UTC)
:* [[Bikarhêner:Wikihez/skrîpt/js/Gadget-QQ.js]] --> [[Mediawiki:Gadget-QQ.js]]
:* [[Bikarhêner:Wikihez/Gadget-QQ.css]] --> [[Mediawiki:Gadget-QQ.css]]
:Ez dibêjim çêbû lê ka çend roj biceribînim. Tiştên ku hatin sererastkirin:
:# Google Books API Key dikarî zêde bikî, dixe cookies û di gerokê de dimîne. Berê bê API Key dixebitiya lê êdî mecbûr e ku API Key-a te hebe, bidestxistina wê ne zêde zor e lê dîsa jî tevlihev e.
:# Êdî di mobîlê de dixebite, heta di mobîlê de xweştir xuya dike.
:# Moda tarî
:# OOUI dewsa jquery.ui
:# Li qutiyê çi dixwazî zêde bikî, dikare li gorî îsm, sifet, fiîl bitewîne. Lê ji bo fiîl tenê dikare çend heb inflection bîne.
:# Butona paqij bike lê zêde kir.
:# Çend paqijiyên jêgirtinên Google Kitêbê niha hene.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:38, 18 tîrmeh 2026 (UTC)
::Tewandina fiîlan û xeletiya modulê lazim e were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:40, 21 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-wikt.add-examples.js]] ==
Min ev amûr hinek rojane kir feqat çend problem hene berî ku bar bikin.
Tiştên ku min guhart:
# Êdî li sayfeyên bi {{ş|maneid}} jî dixebite,
# Cihê di wîkîtekstê de yê ku jêgirtin were îlawekirin baştir bû,
# [[Mediawiki:Gadget-citoid-helper.js|citoid helper]] zêde kir ji bo ku bi hêsanî çavkanî bi riya doi, isbn an urlyê werin tijîkirin.
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]] --> [[MediaWiki:Gadget-wikt.add-examples.css]]
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]] --> [[MediaWiki:Gadget-wikt.add-examples.js]]
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 19 tîrmeh 2026 (UTC)
:Min "wikt." qismên cache kirinê ya wîkiya fransî bi [[MediaWiki:Gadget-StorageUtils.js]] guhartiye. loma ji bîr nekin wê amûrê li [[MediaWiki:Gadgets-definition]] zêde bikin. û navê amûrê jî biguhêrînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:15, 23 tîrmeh 2026 (UTC)
::Berê li ser WF:ceribandin dixebitî. niha naxebite. Divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:10, 7 tebax 2026 (UTC)
== Gadget-translation editor ==
* [[MediaWiki:Gadget-translation editor.js]]: divê formata en.wîktê were bikaranîn ji ber ku me gelek tercime ji en.wîktê kopî kir û ev js hîn nikare formata wekî li jêr bi kar bîne.
<syntaxhighlight lang="wikitext">
* {{Z|sh}}:
*: Kirîlî:
*: Latînî
</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Mediawiki:Gadget-linkify.js]] ==
* ''rûpeleke'' wekî<syntaxhighlight lang="wikitext">[[rûpeleke]]</syntaxhighlight> lînk dike, bi regexê belkî dikare wisa bike <syntaxhighlight lang="wikitext">[[rûpel]]eke</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
* Amûreke din wekî [[User:Wikihez/Gadget-linkify.js|linkify]] lazim e ku herfên mezin biçûk bike ji bo kurmancî.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:{{r|Bikarhêner}} Merheba bira, dikarî viya jî bar bikî?:
* [[Special:PermanentLink/6291974|linkify]] --> [[Mediawiki:Gadget-linkify.js]]
Spas--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:42, 29 tîrmeh 2026 (UTC)
:Dûre [https://ku.wiktionary.org/wiki/MediaWiki:Gadget-start.js#L-283 li vir] wiktviLinkify bike kuLinkify xêra xwe [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:51, 29 tîrmeh 2026 (UTC)
::Min ji bîr kir lê zêde bikim niha nikare "Dİ" bike "di", xeletiyeke berbelav a di nivîsên kurdî de, herfên din ên wekî ll yan rr jî hewce ne werin zêdekirin. Dûre em zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:42, 29 tîrmeh 2026 (UTC)
:::Min nû ferq kir, sayfeyên ku hîn nehatine çêkirin wîkîlînk nake. Problemeke mezin e divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:15, 30 tîrmeh 2026 (UTC)
::::Na, lînk dike, tiştekî din heye... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:49, 31 tîrmeh 2026 (UTC)
== Amûra manayê ==
Amûreke din ji bo nivîsina maneyê wekî Nimûne zêde bike lazim e [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6276876 js] [https://ku.wiktionary.org/w/index.php?title=%C5%9Eablon:ceribandin2&oldid=6265629 şablon] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6265642 css] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:12, 23 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-jeder.js]] ==
@[[Bikarhêner:Ghybu|Ghybu]] Çavkaniyên jêderê di moda pêşdîtinê de jêderê vedişêre, ew jî min gelek eciz dike wextê çavkanî zêde dikim. Min ji Claude pirsî û kodan nîşanî wê da, wisa cewab da:
Yes — and this file actually explains the whole thing precisely, better than my earlier guess about extract-stripping.
What's happening: the CSS rule
<syntaxhighlight lang="css">
.jeder{
display:none;
}
</syntaxhighlight>
hides every citation by default, *unconditionally*. The only thing that ever makes it visible again is the gadget's JS: it finds each `.jeder`, builds the short "`— (year, author, +)`" summary from the `.j-pewist` fields, and either reveals the short version or — for citations with no `.j-pewist` fields — explicitly sets `display:inline` on the original.
So visibility of citations depends entirely on this JS running. In the normal article view (Image 1) it runs, so you see the collapsed "`(1918, E. Rehmî Ji Mala Hekariyan, Amadekar: M. E. Bozarslan, +)`" form. In whatever generated Image 2 — a hover-preview/extract/API render — gadget JS doesn't execute, so nothing ever removes the `display:none`, and the citation vanishes completely rather than degrading to "still visible, just not collapsed."
<b>The fix:</b> flip the default so the *un-collapsed* state is the safe fallback, and let JS do the hiding only after it successfully builds the short version. That way, any context without JS shows the full citation instead of nothing.
CSS — remove the blanket hide:
<syntaxhighlight lang="css">
.jeder {
/* intentionally no display:none here — see Gadget-... .js */
}
</syntaxhighlight>
JS — do the hiding from script, after the short form exists:
{{veşêre-ser}}
<syntaxhighlight lang="js">
// Ji bo şablonên [[Şablon:jêder]] hatiye nivîsandin.
// Parametreyên ku di navbera "<span class="j-pewist">...</span>" an "{{j-pêwîst|...}}" de ne venaşêre.
$(function() {
function nivisaKurtTevliBike(sund, nivisKurt) {
var zede = $('<a>+</a>')
.addClass('click')
.attr('href', '#')
.attr('title', 'zêdetir')
.css('font-weight', 'bold');
var kurt = $(' <a>↩</a>')
.addClass('click-kurt')
.attr('href', '#')
.attr('title', 'veşêre')
.css('font-weight', 'bold');
$('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// Only hide the full citation once the short summary actually exists.
// If this script never runs (no-JS clients, hover-preview extracts,
// action=render, etc.), the full citation stays visible instead of
// silently disappearing.
sund.css('display', 'none');
}
function vesere() {
$('.jeder').each(function() {
var elmTab = $(this).find('.j-pewist').clone();
if (elmTab.length) {
var elm = '';
for (var i = elmTab.length - 1; i >= 0; i--) {
elm = elmTab.eq(i).html() + ', ' + elm;
}
var nivisKurt = ' — (' + elm;
nivisaKurtTevliBike($(this), nivisKurt);
}
// else: no j-pewist fields to shorten — leave the full citation
// as it already renders (visible), nothing to do.
});
}
vesere();
$(".click").click(function(e) {
e.preventDefault();
$(this).parent('.jeder-kurt').css('display', 'none');
$(this).parent('.jeder-kurt').prev().css('display', 'inline');
});
$(".click-kurt").click(function(e) {
e.preventDefault();
$(this).parent('.jeder').css('display', 'none');
$(this).parent('.jeder').next().css('display', 'inline');
});
});
</syntaxhighlight>
Net effect:
- JS-enabled readers (normal article view): identical experience to today — collapsed short form with `+`/`↩` toggle.
- No-JS contexts (previews, extracts, screen readers before JS loads, print, etc.): full citation is shown instead of nothing — a real regression fix rather than a cosmetic one.
One caveat worth being upfront about: this fixes it *if* the preview context renders the gadget's HTML/CSS but doesn't execute gadget JS (which is the far more common case, and what this code strongly suggests is happening). If Image 2 instead comes from a pipeline that strips the `.jeder`/`.jegirtin-text` elements out of the HTML entirely before this CSS/JS even gets a chance to apply, no on-wiki CSS/JS change can help — that'd need the extract-generation config changed instead. Given what this gadget file shows, though, I'd bet on the CSS-hide explanation.
{{veşêre-bin}}
Em dûre biceribînin eger xeletî tinebe, vî tiştî jî rast bikin. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:00, 23 tîrmeh 2026 (UTC)
:Ez APIya MediaWiki rind nizanim belkî Claude dizane:) Em nikarin bibêjin dema ku moda "''action=edit''" e fonksiyona <code>function vesere()</code> bi kar meyîne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:57, 24 tîrmeh 2026 (UTC)
::Na, di moda "edît"-ê de <code>var elmTab = null</code>... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:13, 24 tîrmeh 2026 (UTC)
?:
<syntaxhighlight lang="js">
if (
mw.config.get('wgAction') === 'edit' ||
mw.config.get('wgAction') === 'submit'
){
var elmTab = [];
} else {
var elmTab = $(this).find('.j-pewist').clone();
}
</syntaxhighlight>
--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:31, 24 tîrmeh 2026 (UTC)
:Ez jî nizanim Claude çiqas ji mediawiki fêm dike lê heta niha ti tişt nîne ku min jê pirs kir û nikaribû çêke, bila wekî reklam nebe feqat Claude mikemmel e, dibêjim "li vir çima xeletiyeke wisa derdikeve" di dosyeya 2000 rêzî de diçe tiştê xelet tenê rast dike tiştekî din naguherîne. Chatgpt û aistudio qet wisa nakin, eynî dosyeyê deh cara dinivîsin, deh netîceyên cuda derdikevin :D
:Em dikarin vê amûrê wextê edit û submitê neaktîv bikin wekî <syntaxhighlight lang="js">if (!(action === "edit" || action === "submit")) {
:return;</syntaxhighlight> lê wê demê display:none wê çibe nizanim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:23, 24 tîrmeh 2026 (UTC)
::display:none ne hewce ye ma jixwe di nav kodê [https://ku.wiktionary.org/w/index.php?title=MediaWiki:Gadget-jeder.js&oldid=6069025#L-49 L-49] de inline/none heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:53, 24 tîrmeh 2026 (UTC)
:Min bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.js&diff=prev&oldid=6290816#L-28] ceriband feqat nexebitî. "display:none" di pêşdîtinê de dixebite feqat js naşixule. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:43, 25 tîrmeh 2026 (UTC)
::Kodên JSê pir hez nakim (pêşta hukurina APIya MWyê hewce bû) dîsa jî ez ê seh bikim :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:49, 27 tîrmeh 2026 (UTC)
:::Ez niha bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6290820] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6290821#L-8] bi kar tînim ti problem nîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:09, 27 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-PagePreviews.js]] ==
Ez dibêjim em vê amûrê jî çêkin [[:en:MediaWiki:Gadget-PagePreviews.js]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:56, 3 tebax 2026 (UTC)
= Moda tarî =
== [[Şablon:wîkîpediya]] ==
Rengê tarî de xirab e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:36, 4 tebax 2026 (UTC)
= Bot =
Karên ku bi botê werin çêkirin ji kerema xwe li vir binivîsin.
== Kategorî:Biwêj ==
[[:Kategorî:Biwêj]] divê were paqijkirin, lîsteya madeyên {{ş|biwêj}} çêke, yên ku tê de bûn, kirin, man hene filtre bike yên din bi destî tê çêkirin.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Jêgirtin ==
Xistina jêgirtinên beşa [https://ku.wiktionary.org/w/index.php?search=insource%3A%2F%3D+*Ji+%5BWw%5D%C3%AAjey%C3%AA+*%3D%2F&title=Taybet%3AL%C3%AAger%C3%AEn&profile=advanced&fulltext=1&ns0=1&searchToken=8rh0bmw8dccsi7aynl6zli8uf ji wêjeyê] li beşa maneyê. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Bota Toolforgeê ==
Botekî Toolforgeê lazim e ji bo ku xeletiyên biçûk wekî şablonên bi navên îngilîzî werin kurdîkirin yan jî valahiya beşan rast bike û hwd.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:Min [[Bikarhêner:Wikihez/skrîpt/py/kuwiktkozmetik.py|paqijiyen kozmetîk]] hazir kir feqat hîn navên şablonan naguhêre. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 4 tebax 2026 (UTC)
== Updatew ==
Bota [[Bikarhêner:Wikihez/skrîpt/py/updateW.py|updateW]] divê were rojanekirin. Yan jî yekî nû were çêkirin. Şablonên {{ş|W}} di beşa tercimeyan de sererast dike û zimanan rêz dike. Ya niha xeletiya navê zimanî dide.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== sihir --> sêhr ==
Tercimeyên ''[[sêhr]]'' hemû dibêje ''sihir'' loma bi botê lazim e kirin ''sêhr''. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:43, 18 tîrmeh 2026 (UTC)
:Sihirbaz --> sêhrbaz [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:07, 18 tîrmeh 2026 (UTC)
== Tercimeyên dîroknas ==
Li tercimeyên [[dîroknas]], hevmaneyên wê hewce ye were îlawekirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:44, 18 tîrmeh 2026 (UTC)
== Mewlûd ==
Sererastkirina jêgirtinên mewlûdê [https://ku.wiktionary.org/w/index.php?search=insource%3A%2Fw%5C%3AMela+His%C3%AAn%C3%AA+Batey%C3%AE%2F&title=Taybet%3AL%C3%AAger%C3%AEn&ns0=1&searchToken=8m0tguy3sqt7edr4sg0u8hedo] wekî [https://ku.wiktionary.org/w/index.php?title=dax%C3%AEdar&curid=284303&diff=6265851&oldid=6142285] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:43, 20 tîrmeh 2026 (UTC)
fax54xi1t4e7lvvocp1n6l6cc9ewu5y
6328702
6328701
2026-08-10T13:11:28Z
Wikihez
7344
/* Modul:quote */
6328702
wikitext
text/x-wiki
{{/ser}}
= Karên ferhengî =
== Mane ==
* [[:Kategorî:Madeyên bê beşa mane]]
** [[:Kategorî:Madeyên bê beşa mane bi kurmancî]]
Li ser van rûpelan ev made hene ku maneyan wan nehatine nivîsin û divê werin nivîsin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Etîmolojî ==
*[[:Kategorî:Daxwazên etîmolojiyê]]
**[[:Kategorî:Daxwazên etîmolojiyê bi kurmancî]]
Li ser van rûpelan ev made hene ku etîmolojiya wan hîn nehatine nivîsin. Ji bo alîkariyê binêre [[WF:Etîmolojî]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Cureyê rêzimanî ==
* [[:Kategorî:Gotarên bê kategoriya rêzimanî]]
* [[:Kategorî:Gotarên bê kategoriya rêzimanî bi kurmancî]]
Li ser van rûpelan ev made hene ku cureyên wan yên rêzimanî hîn nehatine nivîsin. Ji bo alîkariyê binêre [[Alîkarî:Cureyên peyvan]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Kontrol ==
* [[:Kategorî:Kontrol]]
** [[:Kategorî:Kontrola maneyê]]
Ev madde bi botê hatine çêkirin, yek bi yek divê werin kontrolkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
= Şablon =
== IPA ==
* {{ş|IPA}} divê [[Modul:IPA]] bi kar bîne. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Deng ==
Kurdîkirina belgekirina {{ş|deng}} lazim e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:06, 19 tîrmeh 2026 (UTC)
= Modul =
== Modul:form of/templates ==
* [[Modul:form of/templates]]: Divê ev modul were rojanekirin û xeletiyên berê wekî ([[hevalê]]) werin rastkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
*:Merheba @[[Bikarhêner:Ghybu|Ghybu]] Te gotibû di vê modulê de xeletî hene, jkx tu dikarî li vir binivîsî çi kêmasî hene, daku wextê rojane dikim ez ji bîr nekim? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:16, 21 tîrmeh 2026 (UTC)
*::Silav. Nizanim ji bîra min çûye... Herwiha ji bo çêkirina formên navdêran zanînên cîns û tîpa dawî bes e:
*::* (-ê, mê) => çemandî, bangkirin
*::* (-ê, nêr) => îzafe
*::* (-ê, mê û nêr) => îzafe (nêr), bangkirin (mê), çemandî (mê)
*::* (-a) => îzafe (mê)
*::* (-ekî) => îzafe û çemandî (nêr, nebinavkirî)
*::* (-eke) = > îzafe (mê, nebinavkirî)
*::* ...
*:: <code>if find(mw.title.getCurrentTitle().subpageText, 'ekî$') then ... end</code>
*::<code><nowiki>{{ku-tewîn-navForm|<navdêr>|<zayend>}</nowiki></code>
*::Tablo û nivîs di yekcarî de tên çêkirin...
*::Feqet problem lêzêdekirina mînakan e. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:34, 21 tîrmeh 2026 (UTC)
*:::Lêzêdekirina kîjan nimûneyan? Ev koda js ji bo çi ye? Qisûrê nenêre min fêm nekir :/ [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:13, 21 tîrmeh 2026 (UTC)
*::::Li vira ([[hevalê#Formeke navdêrê]]) di bin maneyên 1. û 2. mînak nayên tevlî kirin :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 21 tîrmeh 2026 (UTC)
*:::::Ev tercîh e, ne mecbûrî ye, em dikarin [https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&diff=prev&oldid=6276350 wisa] bikin. Wekî din? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:29, 21 tîrmeh 2026 (UTC)
*::::::Min li jor tênê got ku tenê parametreyên "navdêr" û "zayend" hewce nee. Bi '''[//ku.wiktionary.org/w/index.php?title=heval%C3%AA&curid=969734&diff=6276353&oldid=6276350 vî]''' awayî jî tê çêkirin. Parametreyên din ne hewce ne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:38, 21 tîrmeh 2026 (UTC)
*:::::::Ji bo wê şabloneke din lazim e, bila ev şablon wekî îngilîzî bimîne em ji bo kurmancî yekî din çêkin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:42, 21 tîrmeh 2026 (UTC)
*::::::::[https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&oldid=6276885 wisa] çawa ye? Bi min nivîsîna nimûneyan zêde ne lazim e ji ber ku ti kes serê xwe pê naêşîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:46, 23 tîrmeh 2026 (UTC)
*:::::::::@[[Bikarhêner:Ghybu|Ghybu]] Vê şablonê bi kar bînin an na? Navê şablonê kê çi be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:07, 24 tîrmeh 2026 (UTC)
== Modul:columns ==
* [[Modul:columns]] were rojanekirin û {{ş|kol3}} bila lînka ''nîşan bide'' deyne beriya sernavê, kolê di qutiya rengî de bila nebe. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Modul:etymon ==
* [[Modul:etymon kevn]]: Rojanekirin hewce ye. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Modul:ziman/code to canonical name]] ==
Belgekirina skrîptê û js divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:31, 22 tîrmeh 2026 (UTC)
:* [[MediaWiki:UpdateLanguageNameAndCode.js]]
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:50, 22 tîrmeh 2026 (UTC)
::* [[Modul:ziman/print]]
::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:52, 22 tîrmeh 2026 (UTC)
:::*[[Modul:ziman/şablon]]
:::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:56, 22 tîrmeh 2026 (UTC)
::::* [[MediaWiki:Gadget-translation editor.js/ziman.json]]
::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:06, 22 tîrmeh 2026 (UTC)
== [[Modul:quote]] ==
Piştî ev modul hate hazirkirin, lazim e navên jegirtinan werin rastkirin û li hemûyan {{param|jêgirtin}} were zêdekirin. Bnr. [[Gotûbêja şablonê:Jêgirtin/Ehmedê Xanî/Mem û Zîn]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:27, 5 tebax 2026 (UTC)
::Ev modul hema bêje hazir e. Hûn li ser van madeyan çi difikirin:
# {{para|tarîx}} lazim e full date be eger na, lazim e {{para|sal}} were bikaranîn. Feqat "'''2021''' kanûna pêşîn 23" bi vî şiklî bi min ne problem e çnkî derdê en.wikt "attestation" e delîla herî pêşî jî sal e.
#: {{demo|sep=wisa xuya dibe<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|tarîx=23 December 2021|nivîskar=Harry Hobbs; George Williams|sernav=Micronations and the Search for Sovereignty|url=https://www.cambridge.org/core/books/micronations-and-the-search-for-sovereignty/B0414A3A322695D9EE71E4CDDFDA06DE|weşanxane=Cambridge University Press|rûpel=155|isbn=978-1-009-15012-5|jêgirtin=jêgirtin.|t=-}}</nowiki>}}
#{{para|amadekar}}/{{para|edîtor}}/{{para|terciman}} bi şiklê edîtoriya, amadekariya, tercimekirina
#: {{demo|sep=dide<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|sernav=Medical Surgical Nursing|serî=Juta's Manual of Nursing|cildê-seriyê=volume 4|edîtor=Sophie Mataniele Mogotlane; Joyce Mokoena; Motshedisi Eunice Chauke; Anne Young|sal=2005|weşanxane=Juta Academic|isbn=978-0702171840|rûpel=!12-29|jêgirtin=jêgirtin|t=-}}</nowiki>}}
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:09, 10 tebax 2026 (UTC)
:@[[Bikarhêner:Bikarhêner|Bikarhêner]] û @[[Bikarhêner:Ghybu|Ghybu]] Hîn gelek tişt hene divê îzah bikin û fikrê we pirs bikim, feqat îzahkirin pir zor e, em dest bi bikaranînê bikin û dûre tiştên ku hûn naxwazin em dikarin biguherînîn, dibe? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:11, 10 tebax 2026 (UTC)
= Javascript =
== [[Mediawiki:Gadget-citoid-helper.js]] ==
Ji bo bi citoidê kopîkirina malûmatên çavkaniyan amûreke wisa lazim e. Xisûsen ji ber ku bi çend amûrên din dikare were bikaranîn.
Feqat çend problem hene, şablonên me de kêmasiya parametreyan gelek in û xerîteyên citoidê hîn nehatine çêkirin. Wana sererast bikin dûre vê amûrê çêkin, piştre [[MediaWiki:Gadget-start.js|start.js]] û [[MediaWiki:Gadget-wikt.add-examples.js|add examples.js]] were rojanekirin.
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:04, 19 tîrmeh 2026 (UTC)
:Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]], ez dibêjim karê Modul:quote zêde wext bistîne, bila em dest bi bikaranîna van amûran bikin dûre kêmasiyan em ê temam bikin înşela. Dikarî vana li cihên xwe yên rast kopî paste bikî?
# [[Special:PermanentLink/6291574|Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]] --> [[Mediawiki:Gadget-citoid-helper.js]]
# Ya li jêr kopî bike qismê herî dawî ya AmûrênVeşartî li [[MediaWiki:Gadgets-definition]]:
## <code><nowiki>* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js</nowiki></code>
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:58, 26 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-start.js]] ==
Rojanekirin hewce ye. Min gelek tişt lê zêde kir lê ez niha test dikime. Piştre em bar bikin:
* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 17 tîrmeh 2026 (UTC)
:Min [[MediaWiki:Gadget-start.js/data.json|data.json]] çêkir ji bo ku bi hêsanî malûmatên heyî werin guhartin bêyî guhartina Javascriptê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:49, 18 tîrmeh 2026 (UTC)
:Xeletiyên ku ji bîr nekim rast bikim:
:* Wextê min çavkanî "kitêb" hilbijart û bi destî tije kir xeletiyeke [https://ku.wiktionary.org/w/index.php?title=xezete&diff=prev&oldid=6265392 wisa] derket her kelîme hate lînkkirin.
:* <code>html("⠿")</code> ev ne lazim e.
:* textarea ji bo çavkaniyên jêgirtinan xaseten yên sernav hîn jî ne draggable e.
:* pêşdîtina zindî checkbox wextê tê rakirin, pêşdîtin winda nabe.
:* Butona mobîlê ya vekirina formê di moda tarî de belî nabe, tenê wekî qutiyeke tarî xuya dibe.
:* Metna hişyarkirinê di guhartina rûpelên heyî de lazim e baştir bikim.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:51, 18 tîrmeh 2026 (UTC)
::Ev problem çêbûn, ez ê binêrim ka çi problemên din hene. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:15, 19 tîrmeh 2026 (UTC)
:::Çêke: Ji bo qismê çavkaniyê yek dikare API call û Kategorî:Çavkanî bi kar bîne ji bo ku şablon zêde bikî ji yên heyî. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 19 tîrmeh 2026 (UTC)
::::Ev jî çêbû, min beşa çavkanî jî çêkir. Eger xeletî dernekeve û problema valahiya piştî etîketê ji bîr nekim, piştî rojanekirina amûrên linkify, û citoid em dikarin bar bikin. Ez ê ti tiştê nû îlawe nekim, zêde dirêj bû. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:14, 21 tîrmeh 2026 (UTC)
:::::Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]]. Dikarî wana bar bikî?
:::::* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
:::::* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
:::::* [[MediaWiki:Gadgets-definition]] wisa rojane bike:
:::::* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper]|start.js|start.css|start.js/data.json
:::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:39, 5 tebax 2026 (UTC)
== [[Mediawiki:Gadget-QQ.js]] ==
Ev amûr di şikle Minerva de. Her daîm vê xeletiyê dide:
<syntaxhighlight lang="js">
TypeError: Cannot read properties of null (reading 'addEventListener') at css () at runScript () at Array.<anonymous> () at flushCssBuffer ()
</syntaxhighlight> [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:29, 18 tîrmeh 2026 (UTC)
:* [[Bikarhêner:Wikihez/skrîpt/js/Gadget-QQ.js]] --> [[Mediawiki:Gadget-QQ.js]]
:* [[Bikarhêner:Wikihez/Gadget-QQ.css]] --> [[Mediawiki:Gadget-QQ.css]]
:Ez dibêjim çêbû lê ka çend roj biceribînim. Tiştên ku hatin sererastkirin:
:# Google Books API Key dikarî zêde bikî, dixe cookies û di gerokê de dimîne. Berê bê API Key dixebitiya lê êdî mecbûr e ku API Key-a te hebe, bidestxistina wê ne zêde zor e lê dîsa jî tevlihev e.
:# Êdî di mobîlê de dixebite, heta di mobîlê de xweştir xuya dike.
:# Moda tarî
:# OOUI dewsa jquery.ui
:# Li qutiyê çi dixwazî zêde bikî, dikare li gorî îsm, sifet, fiîl bitewîne. Lê ji bo fiîl tenê dikare çend heb inflection bîne.
:# Butona paqij bike lê zêde kir.
:# Çend paqijiyên jêgirtinên Google Kitêbê niha hene.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:38, 18 tîrmeh 2026 (UTC)
::Tewandina fiîlan û xeletiya modulê lazim e were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:40, 21 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-wikt.add-examples.js]] ==
Min ev amûr hinek rojane kir feqat çend problem hene berî ku bar bikin.
Tiştên ku min guhart:
# Êdî li sayfeyên bi {{ş|maneid}} jî dixebite,
# Cihê di wîkîtekstê de yê ku jêgirtin were îlawekirin baştir bû,
# [[Mediawiki:Gadget-citoid-helper.js|citoid helper]] zêde kir ji bo ku bi hêsanî çavkanî bi riya doi, isbn an urlyê werin tijîkirin.
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]] --> [[MediaWiki:Gadget-wikt.add-examples.css]]
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]] --> [[MediaWiki:Gadget-wikt.add-examples.js]]
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 19 tîrmeh 2026 (UTC)
:Min "wikt." qismên cache kirinê ya wîkiya fransî bi [[MediaWiki:Gadget-StorageUtils.js]] guhartiye. loma ji bîr nekin wê amûrê li [[MediaWiki:Gadgets-definition]] zêde bikin. û navê amûrê jî biguhêrînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:15, 23 tîrmeh 2026 (UTC)
::Berê li ser WF:ceribandin dixebitî. niha naxebite. Divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:10, 7 tebax 2026 (UTC)
== Gadget-translation editor ==
* [[MediaWiki:Gadget-translation editor.js]]: divê formata en.wîktê were bikaranîn ji ber ku me gelek tercime ji en.wîktê kopî kir û ev js hîn nikare formata wekî li jêr bi kar bîne.
<syntaxhighlight lang="wikitext">
* {{Z|sh}}:
*: Kirîlî:
*: Latînî
</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Mediawiki:Gadget-linkify.js]] ==
* ''rûpeleke'' wekî<syntaxhighlight lang="wikitext">[[rûpeleke]]</syntaxhighlight> lînk dike, bi regexê belkî dikare wisa bike <syntaxhighlight lang="wikitext">[[rûpel]]eke</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
* Amûreke din wekî [[User:Wikihez/Gadget-linkify.js|linkify]] lazim e ku herfên mezin biçûk bike ji bo kurmancî.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:{{r|Bikarhêner}} Merheba bira, dikarî viya jî bar bikî?:
* [[Special:PermanentLink/6291974|linkify]] --> [[Mediawiki:Gadget-linkify.js]]
Spas--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:42, 29 tîrmeh 2026 (UTC)
:Dûre [https://ku.wiktionary.org/wiki/MediaWiki:Gadget-start.js#L-283 li vir] wiktviLinkify bike kuLinkify xêra xwe [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:51, 29 tîrmeh 2026 (UTC)
::Min ji bîr kir lê zêde bikim niha nikare "Dİ" bike "di", xeletiyeke berbelav a di nivîsên kurdî de, herfên din ên wekî ll yan rr jî hewce ne werin zêdekirin. Dûre em zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:42, 29 tîrmeh 2026 (UTC)
:::Min nû ferq kir, sayfeyên ku hîn nehatine çêkirin wîkîlînk nake. Problemeke mezin e divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:15, 30 tîrmeh 2026 (UTC)
::::Na, lînk dike, tiştekî din heye... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:49, 31 tîrmeh 2026 (UTC)
== Amûra manayê ==
Amûreke din ji bo nivîsina maneyê wekî Nimûne zêde bike lazim e [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6276876 js] [https://ku.wiktionary.org/w/index.php?title=%C5%9Eablon:ceribandin2&oldid=6265629 şablon] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6265642 css] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:12, 23 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-jeder.js]] ==
@[[Bikarhêner:Ghybu|Ghybu]] Çavkaniyên jêderê di moda pêşdîtinê de jêderê vedişêre, ew jî min gelek eciz dike wextê çavkanî zêde dikim. Min ji Claude pirsî û kodan nîşanî wê da, wisa cewab da:
Yes — and this file actually explains the whole thing precisely, better than my earlier guess about extract-stripping.
What's happening: the CSS rule
<syntaxhighlight lang="css">
.jeder{
display:none;
}
</syntaxhighlight>
hides every citation by default, *unconditionally*. The only thing that ever makes it visible again is the gadget's JS: it finds each `.jeder`, builds the short "`— (year, author, +)`" summary from the `.j-pewist` fields, and either reveals the short version or — for citations with no `.j-pewist` fields — explicitly sets `display:inline` on the original.
So visibility of citations depends entirely on this JS running. In the normal article view (Image 1) it runs, so you see the collapsed "`(1918, E. Rehmî Ji Mala Hekariyan, Amadekar: M. E. Bozarslan, +)`" form. In whatever generated Image 2 — a hover-preview/extract/API render — gadget JS doesn't execute, so nothing ever removes the `display:none`, and the citation vanishes completely rather than degrading to "still visible, just not collapsed."
<b>The fix:</b> flip the default so the *un-collapsed* state is the safe fallback, and let JS do the hiding only after it successfully builds the short version. That way, any context without JS shows the full citation instead of nothing.
CSS — remove the blanket hide:
<syntaxhighlight lang="css">
.jeder {
/* intentionally no display:none here — see Gadget-... .js */
}
</syntaxhighlight>
JS — do the hiding from script, after the short form exists:
{{veşêre-ser}}
<syntaxhighlight lang="js">
// Ji bo şablonên [[Şablon:jêder]] hatiye nivîsandin.
// Parametreyên ku di navbera "<span class="j-pewist">...</span>" an "{{j-pêwîst|...}}" de ne venaşêre.
$(function() {
function nivisaKurtTevliBike(sund, nivisKurt) {
var zede = $('<a>+</a>')
.addClass('click')
.attr('href', '#')
.attr('title', 'zêdetir')
.css('font-weight', 'bold');
var kurt = $(' <a>↩</a>')
.addClass('click-kurt')
.attr('href', '#')
.attr('title', 'veşêre')
.css('font-weight', 'bold');
$('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// Only hide the full citation once the short summary actually exists.
// If this script never runs (no-JS clients, hover-preview extracts,
// action=render, etc.), the full citation stays visible instead of
// silently disappearing.
sund.css('display', 'none');
}
function vesere() {
$('.jeder').each(function() {
var elmTab = $(this).find('.j-pewist').clone();
if (elmTab.length) {
var elm = '';
for (var i = elmTab.length - 1; i >= 0; i--) {
elm = elmTab.eq(i).html() + ', ' + elm;
}
var nivisKurt = ' — (' + elm;
nivisaKurtTevliBike($(this), nivisKurt);
}
// else: no j-pewist fields to shorten — leave the full citation
// as it already renders (visible), nothing to do.
});
}
vesere();
$(".click").click(function(e) {
e.preventDefault();
$(this).parent('.jeder-kurt').css('display', 'none');
$(this).parent('.jeder-kurt').prev().css('display', 'inline');
});
$(".click-kurt").click(function(e) {
e.preventDefault();
$(this).parent('.jeder').css('display', 'none');
$(this).parent('.jeder').next().css('display', 'inline');
});
});
</syntaxhighlight>
Net effect:
- JS-enabled readers (normal article view): identical experience to today — collapsed short form with `+`/`↩` toggle.
- No-JS contexts (previews, extracts, screen readers before JS loads, print, etc.): full citation is shown instead of nothing — a real regression fix rather than a cosmetic one.
One caveat worth being upfront about: this fixes it *if* the preview context renders the gadget's HTML/CSS but doesn't execute gadget JS (which is the far more common case, and what this code strongly suggests is happening). If Image 2 instead comes from a pipeline that strips the `.jeder`/`.jegirtin-text` elements out of the HTML entirely before this CSS/JS even gets a chance to apply, no on-wiki CSS/JS change can help — that'd need the extract-generation config changed instead. Given what this gadget file shows, though, I'd bet on the CSS-hide explanation.
{{veşêre-bin}}
Em dûre biceribînin eger xeletî tinebe, vî tiştî jî rast bikin. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:00, 23 tîrmeh 2026 (UTC)
:Ez APIya MediaWiki rind nizanim belkî Claude dizane:) Em nikarin bibêjin dema ku moda "''action=edit''" e fonksiyona <code>function vesere()</code> bi kar meyîne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:57, 24 tîrmeh 2026 (UTC)
::Na, di moda "edît"-ê de <code>var elmTab = null</code>... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:13, 24 tîrmeh 2026 (UTC)
?:
<syntaxhighlight lang="js">
if (
mw.config.get('wgAction') === 'edit' ||
mw.config.get('wgAction') === 'submit'
){
var elmTab = [];
} else {
var elmTab = $(this).find('.j-pewist').clone();
}
</syntaxhighlight>
--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:31, 24 tîrmeh 2026 (UTC)
:Ez jî nizanim Claude çiqas ji mediawiki fêm dike lê heta niha ti tişt nîne ku min jê pirs kir û nikaribû çêke, bila wekî reklam nebe feqat Claude mikemmel e, dibêjim "li vir çima xeletiyeke wisa derdikeve" di dosyeya 2000 rêzî de diçe tiştê xelet tenê rast dike tiştekî din naguherîne. Chatgpt û aistudio qet wisa nakin, eynî dosyeyê deh cara dinivîsin, deh netîceyên cuda derdikevin :D
:Em dikarin vê amûrê wextê edit û submitê neaktîv bikin wekî <syntaxhighlight lang="js">if (!(action === "edit" || action === "submit")) {
:return;</syntaxhighlight> lê wê demê display:none wê çibe nizanim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:23, 24 tîrmeh 2026 (UTC)
::display:none ne hewce ye ma jixwe di nav kodê [https://ku.wiktionary.org/w/index.php?title=MediaWiki:Gadget-jeder.js&oldid=6069025#L-49 L-49] de inline/none heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:53, 24 tîrmeh 2026 (UTC)
:Min bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.js&diff=prev&oldid=6290816#L-28] ceriband feqat nexebitî. "display:none" di pêşdîtinê de dixebite feqat js naşixule. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:43, 25 tîrmeh 2026 (UTC)
::Kodên JSê pir hez nakim (pêşta hukurina APIya MWyê hewce bû) dîsa jî ez ê seh bikim :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:49, 27 tîrmeh 2026 (UTC)
:::Ez niha bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6290820] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6290821#L-8] bi kar tînim ti problem nîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:09, 27 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-PagePreviews.js]] ==
Ez dibêjim em vê amûrê jî çêkin [[:en:MediaWiki:Gadget-PagePreviews.js]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:56, 3 tebax 2026 (UTC)
= Moda tarî =
== [[Şablon:wîkîpediya]] ==
Rengê tarî de xirab e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:36, 4 tebax 2026 (UTC)
= Bot =
Karên ku bi botê werin çêkirin ji kerema xwe li vir binivîsin.
== Kategorî:Biwêj ==
[[:Kategorî:Biwêj]] divê were paqijkirin, lîsteya madeyên {{ş|biwêj}} çêke, yên ku tê de bûn, kirin, man hene filtre bike yên din bi destî tê çêkirin.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Jêgirtin ==
Xistina jêgirtinên beşa [https://ku.wiktionary.org/w/index.php?search=insource%3A%2F%3D+*Ji+%5BWw%5D%C3%AAjey%C3%AA+*%3D%2F&title=Taybet%3AL%C3%AAger%C3%AEn&profile=advanced&fulltext=1&ns0=1&searchToken=8rh0bmw8dccsi7aynl6zli8uf ji wêjeyê] li beşa maneyê. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Bota Toolforgeê ==
Botekî Toolforgeê lazim e ji bo ku xeletiyên biçûk wekî şablonên bi navên îngilîzî werin kurdîkirin yan jî valahiya beşan rast bike û hwd.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:Min [[Bikarhêner:Wikihez/skrîpt/py/kuwiktkozmetik.py|paqijiyen kozmetîk]] hazir kir feqat hîn navên şablonan naguhêre. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 4 tebax 2026 (UTC)
== Updatew ==
Bota [[Bikarhêner:Wikihez/skrîpt/py/updateW.py|updateW]] divê were rojanekirin. Yan jî yekî nû were çêkirin. Şablonên {{ş|W}} di beşa tercimeyan de sererast dike û zimanan rêz dike. Ya niha xeletiya navê zimanî dide.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== sihir --> sêhr ==
Tercimeyên ''[[sêhr]]'' hemû dibêje ''sihir'' loma bi botê lazim e kirin ''sêhr''. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:43, 18 tîrmeh 2026 (UTC)
:Sihirbaz --> sêhrbaz [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:07, 18 tîrmeh 2026 (UTC)
== Tercimeyên dîroknas ==
Li tercimeyên [[dîroknas]], hevmaneyên wê hewce ye were îlawekirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:44, 18 tîrmeh 2026 (UTC)
== Mewlûd ==
Sererastkirina jêgirtinên mewlûdê [https://ku.wiktionary.org/w/index.php?search=insource%3A%2Fw%5C%3AMela+His%C3%AAn%C3%AA+Batey%C3%AE%2F&title=Taybet%3AL%C3%AAger%C3%AEn&ns0=1&searchToken=8m0tguy3sqt7edr4sg0u8hedo] wekî [https://ku.wiktionary.org/w/index.php?title=dax%C3%AEdar&curid=284303&diff=6265851&oldid=6142285] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:43, 20 tîrmeh 2026 (UTC)
n272pqzpdwteuitb7rgaiyxtyx43rw2
6328712
6328702
2026-08-10T18:05:06Z
Bikarhêner
3719
/* Modul:quote */ Bersiv
6328712
wikitext
text/x-wiki
{{/ser}}
= Karên ferhengî =
== Mane ==
* [[:Kategorî:Madeyên bê beşa mane]]
** [[:Kategorî:Madeyên bê beşa mane bi kurmancî]]
Li ser van rûpelan ev made hene ku maneyan wan nehatine nivîsin û divê werin nivîsin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Etîmolojî ==
*[[:Kategorî:Daxwazên etîmolojiyê]]
**[[:Kategorî:Daxwazên etîmolojiyê bi kurmancî]]
Li ser van rûpelan ev made hene ku etîmolojiya wan hîn nehatine nivîsin. Ji bo alîkariyê binêre [[WF:Etîmolojî]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Cureyê rêzimanî ==
* [[:Kategorî:Gotarên bê kategoriya rêzimanî]]
* [[:Kategorî:Gotarên bê kategoriya rêzimanî bi kurmancî]]
Li ser van rûpelan ev made hene ku cureyên wan yên rêzimanî hîn nehatine nivîsin. Ji bo alîkariyê binêre [[Alîkarî:Cureyên peyvan]] —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Kontrol ==
* [[:Kategorî:Kontrol]]
** [[:Kategorî:Kontrola maneyê]]
Ev madde bi botê hatine çêkirin, yek bi yek divê werin kontrolkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
= Şablon =
== IPA ==
* {{ş|IPA}} divê [[Modul:IPA]] bi kar bîne. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Deng ==
Kurdîkirina belgekirina {{ş|deng}} lazim e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:06, 19 tîrmeh 2026 (UTC)
= Modul =
== Modul:form of/templates ==
* [[Modul:form of/templates]]: Divê ev modul were rojanekirin û xeletiyên berê wekî ([[hevalê]]) werin rastkirin. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
*:Merheba @[[Bikarhêner:Ghybu|Ghybu]] Te gotibû di vê modulê de xeletî hene, jkx tu dikarî li vir binivîsî çi kêmasî hene, daku wextê rojane dikim ez ji bîr nekim? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:16, 21 tîrmeh 2026 (UTC)
*::Silav. Nizanim ji bîra min çûye... Herwiha ji bo çêkirina formên navdêran zanînên cîns û tîpa dawî bes e:
*::* (-ê, mê) => çemandî, bangkirin
*::* (-ê, nêr) => îzafe
*::* (-ê, mê û nêr) => îzafe (nêr), bangkirin (mê), çemandî (mê)
*::* (-a) => îzafe (mê)
*::* (-ekî) => îzafe û çemandî (nêr, nebinavkirî)
*::* (-eke) = > îzafe (mê, nebinavkirî)
*::* ...
*:: <code>if find(mw.title.getCurrentTitle().subpageText, 'ekî$') then ... end</code>
*::<code><nowiki>{{ku-tewîn-navForm|<navdêr>|<zayend>}</nowiki></code>
*::Tablo û nivîs di yekcarî de tên çêkirin...
*::Feqet problem lêzêdekirina mînakan e. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:34, 21 tîrmeh 2026 (UTC)
*:::Lêzêdekirina kîjan nimûneyan? Ev koda js ji bo çi ye? Qisûrê nenêre min fêm nekir :/ [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:13, 21 tîrmeh 2026 (UTC)
*::::Li vira ([[hevalê#Formeke navdêrê]]) di bin maneyên 1. û 2. mînak nayên tevlî kirin :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 21 tîrmeh 2026 (UTC)
*:::::Ev tercîh e, ne mecbûrî ye, em dikarin [https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&diff=prev&oldid=6276350 wisa] bikin. Wekî din? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:29, 21 tîrmeh 2026 (UTC)
*::::::Min li jor tênê got ku tenê parametreyên "navdêr" û "zayend" hewce nee. Bi '''[//ku.wiktionary.org/w/index.php?title=heval%C3%AA&curid=969734&diff=6276353&oldid=6276350 vî]''' awayî jî tê çêkirin. Parametreyên din ne hewce ne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:38, 21 tîrmeh 2026 (UTC)
*:::::::Ji bo wê şabloneke din lazim e, bila ev şablon wekî îngilîzî bimîne em ji bo kurmancî yekî din çêkin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:42, 21 tîrmeh 2026 (UTC)
*::::::::[https://ku.wiktionary.org/w/index.php?title=heval%C3%AA&oldid=6276885 wisa] çawa ye? Bi min nivîsîna nimûneyan zêde ne lazim e ji ber ku ti kes serê xwe pê naêşîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:46, 23 tîrmeh 2026 (UTC)
*:::::::::@[[Bikarhêner:Ghybu|Ghybu]] Vê şablonê bi kar bînin an na? Navê şablonê kê çi be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:07, 24 tîrmeh 2026 (UTC)
== Modul:columns ==
* [[Modul:columns]] were rojanekirin û {{ş|kol3}} bila lînka ''nîşan bide'' deyne beriya sernavê, kolê di qutiya rengî de bila nebe. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Modul:etymon ==
* [[Modul:etymon kevn]]: Rojanekirin hewce ye. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Modul:ziman/code to canonical name]] ==
Belgekirina skrîptê û js divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:31, 22 tîrmeh 2026 (UTC)
:* [[MediaWiki:UpdateLanguageNameAndCode.js]]
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:50, 22 tîrmeh 2026 (UTC)
::* [[Modul:ziman/print]]
::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:52, 22 tîrmeh 2026 (UTC)
:::*[[Modul:ziman/şablon]]
:::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:56, 22 tîrmeh 2026 (UTC)
::::* [[MediaWiki:Gadget-translation editor.js/ziman.json]]
::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:06, 22 tîrmeh 2026 (UTC)
== [[Modul:quote]] ==
Piştî ev modul hate hazirkirin, lazim e navên jegirtinan werin rastkirin û li hemûyan {{param|jêgirtin}} were zêdekirin. Bnr. [[Gotûbêja şablonê:Jêgirtin/Ehmedê Xanî/Mem û Zîn]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:27, 5 tebax 2026 (UTC)
::Ev modul hema bêje hazir e. Hûn li ser van madeyan çi difikirin:
# {{para|tarîx}} lazim e full date be eger na, lazim e {{para|sal}} were bikaranîn. Feqat "'''2021''' kanûna pêşîn 23" bi vî şiklî bi min ne problem e çnkî derdê en.wikt "attestation" e delîla herî pêşî jî sal e.
#: {{demo|sep=wisa xuya dibe<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|tarîx=23 December 2021|nivîskar=Harry Hobbs; George Williams|sernav=Micronations and the Search for Sovereignty|url=https://www.cambridge.org/core/books/micronations-and-the-search-for-sovereignty/B0414A3A322695D9EE71E4CDDFDA06DE|weşanxane=Cambridge University Press|rûpel=155|isbn=978-1-009-15012-5|jêgirtin=jêgirtin.|t=-}}</nowiki>}}
#{{para|amadekar}}/{{para|edîtor}}/{{para|terciman}} bi şiklê edîtoriya, amadekariya, tercimekirina
#: {{demo|sep=dide<br>|<nowiki>{{jêder-kitêb/ceribandin|en
|sernav=Medical Surgical Nursing|serî=Juta's Manual of Nursing|cildê-seriyê=volume 4|edîtor=Sophie Mataniele Mogotlane; Joyce Mokoena; Motshedisi Eunice Chauke; Anne Young|sal=2005|weşanxane=Juta Academic|isbn=978-0702171840|rûpel=!12-29|jêgirtin=jêgirtin|t=-}}</nowiki>}}
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:09, 10 tebax 2026 (UTC)
:@[[Bikarhêner:Bikarhêner|Bikarhêner]] û @[[Bikarhêner:Ghybu|Ghybu]] Hîn gelek tişt hene divê îzah bikin û fikrê we pirs bikim, feqat îzahkirin pir zor e, em dest bi bikaranînê bikin û dûre tiştên ku hûn naxwazin em dikarin biguherînîn, dibe? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:11, 10 tebax 2026 (UTC)
::Dibe, piştî çêbû, em di praktîkê de bibînin ku çawa ye. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 18:05, 10 tebax 2026 (UTC)
= Javascript =
== [[Mediawiki:Gadget-citoid-helper.js]] ==
Ji bo bi citoidê kopîkirina malûmatên çavkaniyan amûreke wisa lazim e. Xisûsen ji ber ku bi çend amûrên din dikare were bikaranîn.
Feqat çend problem hene, şablonên me de kêmasiya parametreyan gelek in û xerîteyên citoidê hîn nehatine çêkirin. Wana sererast bikin dûre vê amûrê çêkin, piştre [[MediaWiki:Gadget-start.js|start.js]] û [[MediaWiki:Gadget-wikt.add-examples.js|add examples.js]] were rojanekirin.
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:04, 19 tîrmeh 2026 (UTC)
:Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]], ez dibêjim karê Modul:quote zêde wext bistîne, bila em dest bi bikaranîna van amûran bikin dûre kêmasiyan em ê temam bikin înşela. Dikarî vana li cihên xwe yên rast kopî paste bikî?
# [[Special:PermanentLink/6291574|Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]] --> [[Mediawiki:Gadget-citoid-helper.js]]
# Ya li jêr kopî bike qismê herî dawî ya AmûrênVeşartî li [[MediaWiki:Gadgets-definition]]:
## <code><nowiki>* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js</nowiki></code>
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:58, 26 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-start.js]] ==
Rojanekirin hewce ye. Min gelek tişt lê zêde kir lê ez niha test dikime. Piştre em bar bikin:
* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 17 tîrmeh 2026 (UTC)
:Min [[MediaWiki:Gadget-start.js/data.json|data.json]] çêkir ji bo ku bi hêsanî malûmatên heyî werin guhartin bêyî guhartina Javascriptê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:49, 18 tîrmeh 2026 (UTC)
:Xeletiyên ku ji bîr nekim rast bikim:
:* Wextê min çavkanî "kitêb" hilbijart û bi destî tije kir xeletiyeke [https://ku.wiktionary.org/w/index.php?title=xezete&diff=prev&oldid=6265392 wisa] derket her kelîme hate lînkkirin.
:* <code>html("⠿")</code> ev ne lazim e.
:* textarea ji bo çavkaniyên jêgirtinan xaseten yên sernav hîn jî ne draggable e.
:* pêşdîtina zindî checkbox wextê tê rakirin, pêşdîtin winda nabe.
:* Butona mobîlê ya vekirina formê di moda tarî de belî nabe, tenê wekî qutiyeke tarî xuya dibe.
:* Metna hişyarkirinê di guhartina rûpelên heyî de lazim e baştir bikim.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:51, 18 tîrmeh 2026 (UTC)
::Ev problem çêbûn, ez ê binêrim ka çi problemên din hene. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:15, 19 tîrmeh 2026 (UTC)
:::Çêke: Ji bo qismê çavkaniyê yek dikare API call û Kategorî:Çavkanî bi kar bîne ji bo ku şablon zêde bikî ji yên heyî. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 19 tîrmeh 2026 (UTC)
::::Ev jî çêbû, min beşa çavkanî jî çêkir. Eger xeletî dernekeve û problema valahiya piştî etîketê ji bîr nekim, piştî rojanekirina amûrên linkify, û citoid em dikarin bar bikin. Ez ê ti tiştê nû îlawe nekim, zêde dirêj bû. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:14, 21 tîrmeh 2026 (UTC)
:::::Merheba @[[Bikarhêner:Bikarhêner|Bikarhêner]]. Dikarî wana bar bikî?
:::::* [[Bikarhêner:Wikihez/Gadget-start.js]] --> [[MediaWiki:Gadget-start.js]]
:::::* [[Bikarhêner:Wikihez/Gadget-start.css]] --> [[MediaWiki:Gadget-start.css]]
:::::* [[MediaWiki:Gadgets-definition]] wisa rojane bike:
:::::* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper]|start.js|start.css|start.js/data.json
:::::[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:39, 5 tebax 2026 (UTC)
== [[Mediawiki:Gadget-QQ.js]] ==
Ev amûr di şikle Minerva de. Her daîm vê xeletiyê dide:
<syntaxhighlight lang="js">
TypeError: Cannot read properties of null (reading 'addEventListener') at css () at runScript () at Array.<anonymous> () at flushCssBuffer ()
</syntaxhighlight> [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:29, 18 tîrmeh 2026 (UTC)
:* [[Bikarhêner:Wikihez/skrîpt/js/Gadget-QQ.js]] --> [[Mediawiki:Gadget-QQ.js]]
:* [[Bikarhêner:Wikihez/Gadget-QQ.css]] --> [[Mediawiki:Gadget-QQ.css]]
:Ez dibêjim çêbû lê ka çend roj biceribînim. Tiştên ku hatin sererastkirin:
:# Google Books API Key dikarî zêde bikî, dixe cookies û di gerokê de dimîne. Berê bê API Key dixebitiya lê êdî mecbûr e ku API Key-a te hebe, bidestxistina wê ne zêde zor e lê dîsa jî tevlihev e.
:# Êdî di mobîlê de dixebite, heta di mobîlê de xweştir xuya dike.
:# Moda tarî
:# OOUI dewsa jquery.ui
:# Li qutiyê çi dixwazî zêde bikî, dikare li gorî îsm, sifet, fiîl bitewîne. Lê ji bo fiîl tenê dikare çend heb inflection bîne.
:# Butona paqij bike lê zêde kir.
:# Çend paqijiyên jêgirtinên Google Kitêbê niha hene.
:[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:38, 18 tîrmeh 2026 (UTC)
::Tewandina fiîlan û xeletiya modulê lazim e were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:40, 21 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-wikt.add-examples.js]] ==
Min ev amûr hinek rojane kir feqat çend problem hene berî ku bar bikin.
Tiştên ku min guhart:
# Êdî li sayfeyên bi {{ş|maneid}} jî dixebite,
# Cihê di wîkîtekstê de yê ku jêgirtin were îlawekirin baştir bû,
# [[Mediawiki:Gadget-citoid-helper.js|citoid helper]] zêde kir ji bo ku bi hêsanî çavkanî bi riya doi, isbn an urlyê werin tijîkirin.
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]] --> [[MediaWiki:Gadget-wikt.add-examples.css]]
* [[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]] --> [[MediaWiki:Gadget-wikt.add-examples.js]]
- --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 19 tîrmeh 2026 (UTC)
:Min "wikt." qismên cache kirinê ya wîkiya fransî bi [[MediaWiki:Gadget-StorageUtils.js]] guhartiye. loma ji bîr nekin wê amûrê li [[MediaWiki:Gadgets-definition]] zêde bikin. û navê amûrê jî biguhêrînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:15, 23 tîrmeh 2026 (UTC)
::Berê li ser WF:ceribandin dixebitî. niha naxebite. Divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:10, 7 tebax 2026 (UTC)
== Gadget-translation editor ==
* [[MediaWiki:Gadget-translation editor.js]]: divê formata en.wîktê were bikaranîn ji ber ku me gelek tercime ji en.wîktê kopî kir û ev js hîn nikare formata wekî li jêr bi kar bîne.
<syntaxhighlight lang="wikitext">
* {{Z|sh}}:
*: Kirîlî:
*: Latînî
</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== [[Mediawiki:Gadget-linkify.js]] ==
* ''rûpeleke'' wekî<syntaxhighlight lang="wikitext">[[rûpeleke]]</syntaxhighlight> lînk dike, bi regexê belkî dikare wisa bike <syntaxhighlight lang="wikitext">[[rûpel]]eke</syntaxhighlight>
—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
* Amûreke din wekî [[User:Wikihez/Gadget-linkify.js|linkify]] lazim e ku herfên mezin biçûk bike ji bo kurmancî.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:{{r|Bikarhêner}} Merheba bira, dikarî viya jî bar bikî?:
* [[Special:PermanentLink/6291974|linkify]] --> [[Mediawiki:Gadget-linkify.js]]
Spas--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:42, 29 tîrmeh 2026 (UTC)
:Dûre [https://ku.wiktionary.org/wiki/MediaWiki:Gadget-start.js#L-283 li vir] wiktviLinkify bike kuLinkify xêra xwe [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:51, 29 tîrmeh 2026 (UTC)
::Min ji bîr kir lê zêde bikim niha nikare "Dİ" bike "di", xeletiyeke berbelav a di nivîsên kurdî de, herfên din ên wekî ll yan rr jî hewce ne werin zêdekirin. Dûre em zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:42, 29 tîrmeh 2026 (UTC)
:::Min nû ferq kir, sayfeyên ku hîn nehatine çêkirin wîkîlînk nake. Problemeke mezin e divê were rastkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:15, 30 tîrmeh 2026 (UTC)
::::Na, lînk dike, tiştekî din heye... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:49, 31 tîrmeh 2026 (UTC)
== Amûra manayê ==
Amûreke din ji bo nivîsina maneyê wekî Nimûne zêde bike lazim e [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6276876 js] [https://ku.wiktionary.org/w/index.php?title=%C5%9Eablon:ceribandin2&oldid=6265629 şablon] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6265642 css] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:12, 23 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-jeder.js]] ==
@[[Bikarhêner:Ghybu|Ghybu]] Çavkaniyên jêderê di moda pêşdîtinê de jêderê vedişêre, ew jî min gelek eciz dike wextê çavkanî zêde dikim. Min ji Claude pirsî û kodan nîşanî wê da, wisa cewab da:
Yes — and this file actually explains the whole thing precisely, better than my earlier guess about extract-stripping.
What's happening: the CSS rule
<syntaxhighlight lang="css">
.jeder{
display:none;
}
</syntaxhighlight>
hides every citation by default, *unconditionally*. The only thing that ever makes it visible again is the gadget's JS: it finds each `.jeder`, builds the short "`— (year, author, +)`" summary from the `.j-pewist` fields, and either reveals the short version or — for citations with no `.j-pewist` fields — explicitly sets `display:inline` on the original.
So visibility of citations depends entirely on this JS running. In the normal article view (Image 1) it runs, so you see the collapsed "`(1918, E. Rehmî Ji Mala Hekariyan, Amadekar: M. E. Bozarslan, +)`" form. In whatever generated Image 2 — a hover-preview/extract/API render — gadget JS doesn't execute, so nothing ever removes the `display:none`, and the citation vanishes completely rather than degrading to "still visible, just not collapsed."
<b>The fix:</b> flip the default so the *un-collapsed* state is the safe fallback, and let JS do the hiding only after it successfully builds the short version. That way, any context without JS shows the full citation instead of nothing.
CSS — remove the blanket hide:
<syntaxhighlight lang="css">
.jeder {
/* intentionally no display:none here — see Gadget-... .js */
}
</syntaxhighlight>
JS — do the hiding from script, after the short form exists:
{{veşêre-ser}}
<syntaxhighlight lang="js">
// Ji bo şablonên [[Şablon:jêder]] hatiye nivîsandin.
// Parametreyên ku di navbera "<span class="j-pewist">...</span>" an "{{j-pêwîst|...}}" de ne venaşêre.
$(function() {
function nivisaKurtTevliBike(sund, nivisKurt) {
var zede = $('<a>+</a>')
.addClass('click')
.attr('href', '#')
.attr('title', 'zêdetir')
.css('font-weight', 'bold');
var kurt = $(' <a>↩</a>')
.addClass('click-kurt')
.attr('href', '#')
.attr('title', 'veşêre')
.css('font-weight', 'bold');
$('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// Only hide the full citation once the short summary actually exists.
// If this script never runs (no-JS clients, hover-preview extracts,
// action=render, etc.), the full citation stays visible instead of
// silently disappearing.
sund.css('display', 'none');
}
function vesere() {
$('.jeder').each(function() {
var elmTab = $(this).find('.j-pewist').clone();
if (elmTab.length) {
var elm = '';
for (var i = elmTab.length - 1; i >= 0; i--) {
elm = elmTab.eq(i).html() + ', ' + elm;
}
var nivisKurt = ' — (' + elm;
nivisaKurtTevliBike($(this), nivisKurt);
}
// else: no j-pewist fields to shorten — leave the full citation
// as it already renders (visible), nothing to do.
});
}
vesere();
$(".click").click(function(e) {
e.preventDefault();
$(this).parent('.jeder-kurt').css('display', 'none');
$(this).parent('.jeder-kurt').prev().css('display', 'inline');
});
$(".click-kurt").click(function(e) {
e.preventDefault();
$(this).parent('.jeder').css('display', 'none');
$(this).parent('.jeder').next().css('display', 'inline');
});
});
</syntaxhighlight>
Net effect:
- JS-enabled readers (normal article view): identical experience to today — collapsed short form with `+`/`↩` toggle.
- No-JS contexts (previews, extracts, screen readers before JS loads, print, etc.): full citation is shown instead of nothing — a real regression fix rather than a cosmetic one.
One caveat worth being upfront about: this fixes it *if* the preview context renders the gadget's HTML/CSS but doesn't execute gadget JS (which is the far more common case, and what this code strongly suggests is happening). If Image 2 instead comes from a pipeline that strips the `.jeder`/`.jegirtin-text` elements out of the HTML entirely before this CSS/JS even gets a chance to apply, no on-wiki CSS/JS change can help — that'd need the extract-generation config changed instead. Given what this gadget file shows, though, I'd bet on the CSS-hide explanation.
{{veşêre-bin}}
Em dûre biceribînin eger xeletî tinebe, vî tiştî jî rast bikin. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:00, 23 tîrmeh 2026 (UTC)
:Ez APIya MediaWiki rind nizanim belkî Claude dizane:) Em nikarin bibêjin dema ku moda "''action=edit''" e fonksiyona <code>function vesere()</code> bi kar meyîne. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:57, 24 tîrmeh 2026 (UTC)
::Na, di moda "edît"-ê de <code>var elmTab = null</code>... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:13, 24 tîrmeh 2026 (UTC)
?:
<syntaxhighlight lang="js">
if (
mw.config.get('wgAction') === 'edit' ||
mw.config.get('wgAction') === 'submit'
){
var elmTab = [];
} else {
var elmTab = $(this).find('.j-pewist').clone();
}
</syntaxhighlight>
--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:31, 24 tîrmeh 2026 (UTC)
:Ez jî nizanim Claude çiqas ji mediawiki fêm dike lê heta niha ti tişt nîne ku min jê pirs kir û nikaribû çêke, bila wekî reklam nebe feqat Claude mikemmel e, dibêjim "li vir çima xeletiyeke wisa derdikeve" di dosyeya 2000 rêzî de diçe tiştê xelet tenê rast dike tiştekî din naguherîne. Chatgpt û aistudio qet wisa nakin, eynî dosyeyê deh cara dinivîsin, deh netîceyên cuda derdikevin :D
:Em dikarin vê amûrê wextê edit û submitê neaktîv bikin wekî <syntaxhighlight lang="js">if (!(action === "edit" || action === "submit")) {
:return;</syntaxhighlight> lê wê demê display:none wê çibe nizanim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:23, 24 tîrmeh 2026 (UTC)
::display:none ne hewce ye ma jixwe di nav kodê [https://ku.wiktionary.org/w/index.php?title=MediaWiki:Gadget-jeder.js&oldid=6069025#L-49 L-49] de inline/none heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:53, 24 tîrmeh 2026 (UTC)
:Min bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.js&diff=prev&oldid=6290816#L-28] ceriband feqat nexebitî. "display:none" di pêşdîtinê de dixebite feqat js naşixule. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:43, 25 tîrmeh 2026 (UTC)
::Kodên JSê pir hez nakim (pêşta hukurina APIya MWyê hewce bû) dîsa jî ez ê seh bikim :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:49, 27 tîrmeh 2026 (UTC)
:::Ez niha bi vî şiklî [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/test.js&oldid=6290820] [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6290821#L-8] bi kar tînim ti problem nîne. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:09, 27 tîrmeh 2026 (UTC)
== [[MediaWiki:Gadget-PagePreviews.js]] ==
Ez dibêjim em vê amûrê jî çêkin [[:en:MediaWiki:Gadget-PagePreviews.js]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:56, 3 tebax 2026 (UTC)
= Moda tarî =
== [[Şablon:wîkîpediya]] ==
Rengê tarî de xirab e.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:36, 4 tebax 2026 (UTC)
= Bot =
Karên ku bi botê werin çêkirin ji kerema xwe li vir binivîsin.
== Kategorî:Biwêj ==
[[:Kategorî:Biwêj]] divê were paqijkirin, lîsteya madeyên {{ş|biwêj}} çêke, yên ku tê de bûn, kirin, man hene filtre bike yên din bi destî tê çêkirin.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Jêgirtin ==
Xistina jêgirtinên beşa [https://ku.wiktionary.org/w/index.php?search=insource%3A%2F%3D+*Ji+%5BWw%5D%C3%AAjey%C3%AA+*%3D%2F&title=Taybet%3AL%C3%AAger%C3%AEn&profile=advanced&fulltext=1&ns0=1&searchToken=8rh0bmw8dccsi7aynl6zli8uf ji wêjeyê] li beşa maneyê. —[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== Bota Toolforgeê ==
Botekî Toolforgeê lazim e ji bo ku xeletiyên biçûk wekî şablonên bi navên îngilîzî werin kurdîkirin yan jî valahiya beşan rast bike û hwd.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
:Min [[Bikarhêner:Wikihez/skrîpt/py/kuwiktkozmetik.py|paqijiyen kozmetîk]] hazir kir feqat hîn navên şablonan naguhêre. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 4 tebax 2026 (UTC)
== Updatew ==
Bota [[Bikarhêner:Wikihez/skrîpt/py/updateW.py|updateW]] divê were rojanekirin. Yan jî yekî nû were çêkirin. Şablonên {{ş|W}} di beşa tercimeyan de sererast dike û zimanan rêz dike. Ya niha xeletiya navê zimanî dide.—[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:17, 16 tîrmeh 2026 (UTC)
== sihir --> sêhr ==
Tercimeyên ''[[sêhr]]'' hemû dibêje ''sihir'' loma bi botê lazim e kirin ''sêhr''. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:43, 18 tîrmeh 2026 (UTC)
:Sihirbaz --> sêhrbaz [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:07, 18 tîrmeh 2026 (UTC)
== Tercimeyên dîroknas ==
Li tercimeyên [[dîroknas]], hevmaneyên wê hewce ye were îlawekirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:44, 18 tîrmeh 2026 (UTC)
== Mewlûd ==
Sererastkirina jêgirtinên mewlûdê [https://ku.wiktionary.org/w/index.php?search=insource%3A%2Fw%5C%3AMela+His%C3%AAn%C3%AA+Batey%C3%AE%2F&title=Taybet%3AL%C3%AAger%C3%AEn&ns0=1&searchToken=8m0tguy3sqt7edr4sg0u8hedo] wekî [https://ku.wiktionary.org/w/index.php?title=dax%C3%AEdar&curid=284303&diff=6265851&oldid=6142285] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:43, 20 tîrmeh 2026 (UTC)
7jdncj9hld46blh9ot7h3mqpdbirsct
Bikarhêner:Wikihez/skrîpt/js/citeKurdifier.js
2
1358179
6328710
6291542
2026-08-10T17:50:54Z
Wikihez
7344
6328710
javascript
text/javascript
/**
* citeKurdifier.js
*
* Converts English citation templates (quote-web, quote-book, quote-journal)
* and a set of their parameters into their Kurdish Wiktionary equivalents,
* using an inline configuration (see CONFIG below).
*
* Works directly on the edit textbox (#wpTextbox1) — no page fetch needed,
* since the config now lives in this file rather than on a wiki page.
*
* Requires: morebits.js, templateParamRenamer.js (loaded first)
*/
/* global mw, $, Morebits, TemplateParamRenamer */
( function () {
'use strict';
var CONFIG = {
"templates": {
"jêder-malper": "jêder-malper/ceribandin",
"jêder-kitêb": "jêder-kitêb/ceribandin",
"jêder-kovar": "jêder-kovar/ceribandin",
"quote-web": "jêder-malper/ceribandin",
"quote-book": "jêder-kitêb/ceribandin",
"quote-journal": "jêder-kovar/ceribandin",
},
"basic_params": {
"access-date": "roja-gihiştinê",
"cîh": "cih",
"newversion": "versiyona-nû",
"passage": "jêgirtin",
"text": "jêgirtin",
"jg": "jêgirtin",
"transliteration": "tr",
"transcription": "ts",
"normalization": "norm",
"translation": "tercime",
"gloss": "tercime",
"lit": "hrf",
"lb": "e",
"origtext": "metna-orîjînal",
"origtr": "tr-orîjînal",
"origts": "ts-orîjînal",
"orignorm": "norm-orîjînal",
"origsc": "sc-orîjînal",
"orignormsc": "normsc-orîjînal",
"origsubst": "subst-orîjînal",
"origlb": "e-orîjînal",
"nocat": "nekat",
},
"numbered_params": {
"^role(\\d*)$": "rol$1",
"^roles(\\d*)$": "rol$1",
"^speaker(\\d*)$": "rol$1",
"^tlr(\\d*)$": "terciman$1",
"^translator(\\d*)$": "terciman$1",
"^translators(\\d*)$": "terciman$1",
"^chapter_tlr(\\d*)$": "tercimanê-beşê$1",
"^chapter_tlrs(\\d*)$": "tercimanê-beşê$1",
"^chapter_translator(\\d*)$": "tercimanê-beşê$1",
"^chapter_translators(\\d*)$": "tercimanê-beşê$1",
"^lang(\\d*)$": "ziman$1",
"^first(\\d*)$": "pêşnav$1",
"^2ndfirst(\\d*)$": "2pêşnav$1",
"^last(\\d*)$": "paşnav$1",
"^2ndlast(\\d*)$": "2paşnav$1",
"^trans-author(\\d*)$": "tercimeya-nivîskar$1",
"^author(\\d*)$": "nivîskar$1",
"^writer(\\d*)$": "nivîskar$1",
"^writers(\\d*)$": "nivîskar$1",
"^2ndauthor(\\d*)$": "2nivîskar$1",
"^authorlink(\\d*)$": "lînka-nivîskar$1",
"^2ndauthorlink(\\d*)$": "2lînka-nivîskar$1",
"^trans-authorlink(\\d*)$": "lînka-tercimeya-nivîskar$1",
"^trans-first(\\d*)$": "tercimeya-pêşnav$1",
"^trans-last(\\d*)$": "tercimeya-paşnav$1",
"^volume(\\d*)$": "cild$1",
"^volumes(\\d*)$": "cildên$1",
"^volume_plain(\\d*)$": "cild-sade$1",
"^volumeurl(\\d*)$": "urlya-cild$1",
"^volume_prefix(\\d*)$": "pêşgira-cild$1",
"^vol(\\d*)$": "cild$1",
"^vol_plain(\\d*)$": "cild-sade$1",
"^volurl(\\d*)$": "urlya-cild$1",
"^vol_prefix(\\d*)$": "pêşgira-cild$1",
"^issue(\\d*)$": "hejmar$1",
"^issues(\\d*)$": "hejmarên$1",
"^issue_plain(\\d*)$": "hejmar-sade$1",
"^issueurl(\\d*)$": "urlya-hejmarê$1",
"^issue_prefix(\\d*)$": "pêşgira-hejmarê$1",
"^number(\\d*)$": "nimare$1",
"^numbers(\\d*)$": "nimareyên$1",
"^number_plain(\\d*)$": "nimare-sade$1",
"^numberurl(\\d*)$": "urlya-nimareyê$1",
"^number_prefix(\\d*)$": "pêşgira-nimareyê$1",
"^line(\\d*)$": "rêz$1",
"^lines(\\d*)$": "rêzên$1",
"^line_plain(\\d*)$": "rêz-sade$1",
"^lineurl(\\d*)$": "urlya-rêzê$1",
"^line_prefix(\\d*)$": "pêşgira-rêzê$1",
"^page(\\d*)$": "rûpel$1",
"^pages(\\d*)$": "rûpelên$1",
"^page_plain(\\d*)$": "rûpel-sade$1",
"^pageurl(\\d*)$": "urlya-rûpelê$1",
"^page_prefix(\\d*)$": "pêşgira-rûpelê$1",
"^column(\\d*)$": "stûn$1",
"^columns(\\d*)$": "stûnên$1",
"^column_plain(\\d*)$": "stûn-sade$1",
"^columnurl(\\d*)$": "urlya-stûnê$1",
"^column_prefix(\\d*)$": "pêşgira-stûnê$1",
"^coauthors(\\d*)$": "hevnivîskar$1",
"^quotee(\\d*)$": "jê-tê-girtin$1",
"^editor(\\d*)$": "edîtor$1",
"^editors(\\d*)$": "edîtor$1",
"^mainauthor(\\d*)$": "nivîskarê-sereke$1",
"^compiler(\\d*)$": "berhevkar$1",
"^compilers(\\d*)$": "berhevkar$1",
"^director(\\d*)$": "derhêner$1",
"^directors(\\d*)$": "derhêner$1",
"^lyricist(\\d*)$": "gotinnivîs$1",
"^lyrics-translator(\\d*)$": "tercimanê-gotinan$1",
"^composer(\\d*)$": "bestekar$1",
"^actor(\\d*)$": "aktor$1",
"^artist(\\d*)$": "artîst$1",
"^feat(\\d*)$": "mêvan$1",
"^default-authorlabel(\\d*)$": "standard-etîketa-nivîskar$1",
"^authorlabel(\\d*)$": "etîketa-nivîskar$1",
"^title(\\d*)$": "sernav$1",
"^trans-title(\\d*)$": "tercimeya-sernav$1",
"^series(\\d*)$": "serî$1",
"^seriesvolume(\\d*)$": "cildê-seriyê$1",
"^notitle(\\d*)$": "bêsernav$1",
"^entry(\\d*)$": "made$1",
"^entryurl(\\d*)$": "urlya-madeyê$1",
"^trans-entry(\\d*)$": "tercimeya-madeyê$1",
"^chapter(\\d*)$": "beş$1",
"^chapterurl(\\d*)$": "urlya-beşê$1",
"^chapter_number(\\d*)$": "hejmara-beşê$1",
"^chapter_plain(\\d*)$": "beş-sade$1",
"^chapter_series(\\d*)$": "seriya-beşê$1",
"^chapter_seriesvolume(\\d*)$": "cildê-seriya-beşê$1",
"^trans-chapter(\\d*)$": "tercimeya-beşê$1",
"^section(\\d*)$": "qisim$1",
"^sectionurl(\\d*)$": "urlya-qismê$1",
"^section_number(\\d*)$": "hejmara-qismê$1",
"^section_plain(\\d*)$": "qisim-sade$1",
"^section_series(\\d*)$": "rêzeya-qismê$1",
"^section_seriesvolume(\\d*)$": "cildê-seriya-qismê$1",
"^trans-section(\\d*)$": "tercimeya-qismê$1",
"^system(\\d*)$": "sîstem$1",
"^scene(\\d*)$": "sehne$1",
"^archiveurl(\\d*)$": "urlya-arşîvê$1",
"^edition(\\d*)$": "çap$1",
"^edition_plain(\\d*)$": "çap-sade$1",
"^archivedate(\\d*)$": "tarîxa-arşîvê$1",
"^accessdate(\\d*)$": "tarîxa-gihiştinê$1",
"^nodate(\\d*)$": "bêtarîx$1",
"^type(\\d*)$": "cure$1",
"^genre(\\d*)$": "janr$1",
"^medium(\\d*)$": "medya$1",
"^others(\\d*)$": "kesên-din$1",
"^quoted_in(\\d*)$": "cihê-jêgirtinê$1",
"^location(\\d*)$": "cih$1",
"^publisher(\\d*)$": "weşanxane$1",
"^original(\\d*)$": "orîjînal$1",
"^orjînal(\\d*)$": "orîjînal$1",
"^by(\\d*)$": "ji-aliyê$1",
"^note(\\d*)$": "not$1",
"^note_plain(\\d*)$": "not-sade$1",
"^other(\\d*)$": "yê-din$1",
"^source(\\d*)$": "çavkanî$1",
"^worklang(\\d*)$": "zimanê-eserê$1",
"^termlang(\\d*)$": "zimanê-termê$1",
"^origlang(\\d*)$": "zimanê-orîjînal$1",
"^origworklang(\\d*)$": "zimanê-esera-orîjînal$1",
"^date(\\d*)$": "tarîx$1",
"^year(\\d*)$": "sal$1",
"^month(\\d*)$": "meh$1",
"^start_date(\\d*)$": "tarîxa-destpêkê$1",
"^start_year(\\d*)$": "sala-destpêkê$1",
"^start_month(\\d*)$": "meha-destpêkê$1",
"^origdate(\\d*)$": "tarîxa-orîjînal$1",
"^origyear(\\d*)$": "sala-orîjînal$1",
"^sala orîjînal(\\d*)$": "sala-orîjînal$1",
"^origmonth(\\d*)$": "meha-orîjînal$1",
"^origstart_date(\\d*)$": "tarîxa-destpêkê-orîjînal$1",
"^origstart_year(\\d*)$": "sala-destpêkê-orîjînal$1",
"^origstart_month(\\d*)$": "meha-destpêkê-orîjînal$1",
"^date_published(\\d*)$": "tarîxa-weşandinê$1",
"^year_published(\\d*)$": "sala-weşandinê$1",
"^sala weşandinê(\\d*)$": "sala-weşandinê$1",
"^month_published(\\d*)$": "meha-weşandinê$1",
"^start_date_published(\\d*)$": "tarîxa-destpêkê-weşandin$1",
"^start_year_published(\\d*)$": "sala_destpêkê-weşandin$1",
"^start_month_published(\\d*)$": "meha-destpêkê-weşandin$1",
//kovar journal
"^article(\\d*)$": "meqale$1",
"^titleurl(\\d*)$": "urlya-sernav$1",
"^articleurl(\\d*)$": "urlya-meqaleyê$1",
"^trans-article(\\d*)$": "tercimeya-meqaleyê$1",
"^title_tlr(\\d*)$": "tercimanê-sernav$1",
"^title_tlrs(\\d*)$": "tercimanê-sernav$1",
"^title_translator(\\d*)$": "tercimanê-sernav$1",
"^title_translators(\\d*)$": "tercimanê-sernav$1",
"^article_tlrs(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translator(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translators(\\d*)$": "tercimanê-meqaleyê$1",
"^title_series(\\d*)$": "seriya-sernav$1",
"^article_series(\\d*)$": "seriya-meqaleyê$1",
//chapter_seriesvolume
"^title_seriesvolume(\\d*)$": "cildê-seriya-sernav$1",
"^article_seriesvolume(\\d*)$": "cildê-seriya-meqaleyê$1",
//chapter_number
"^title_number(\\d*)$": "hejmara-sernav$1",
"^article_number(\\d*)$": "hejmara-meqaleyê$1",
//chapter_plain
"^title_plain(\\d*)$": "sernav-sade$1",
"^article_plain(\\d*)$": "meqale-sade$1",
//title (periodical name)
"^journal(\\d*)$": "kovar$1",
"^magazine(\\d*)$": "kovar$1",
"^newspaper(\\d*)$": "xezete$1",
"^work(\\d*)$": "xebat$1",
//trans-title
"^trans-journal(\\d*)$": "tercimeya-kovar$1",
"^trans-magazine(\\d*)$": "tercimeya-kovar$1",
"^trans-newspaper(\\d*)$": "tercimeya-xezete$1",
"^trans-work(\\d*)$": "tercimeya-xebat$1",
//tlr (periodical translator)
"^journal_tlr(\\d*)$": "tercimanê-kovar$1",
"^journal_tlrs(\\d*)$": "tercimanê-kovar$1",
"^journal_translator(\\d*)$": "tercimanê-kovar$1",
"^journal_translators(\\d*)$": "tercimanê-kovar$1",
"^magazine_tlr(\\d*)$": "tercimanê-kovar$1",
"^magazine_tlrs(\\d*)$": "tercimanê-kovar$1",
"^magazine_translator(\\d*)$": "tercimanê-kovar$1",
"^magazine_translators(\\d*)$": "tercimanê-kovar$1",
"^newspaper_tlr(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_tlrs(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translator(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translators(\\d*)$": "tercimanê-xezeteyê$1",
"^work_tlr(\\d*)$": "tercimanê-xebatê$1",
"^work_tlrs(\\d*)$": "tercimanê-xebatê$1",
"^work_translator(\\d*)$": "tercimanê-xebatê$1",
"^work_translators(\\d*)$": "tercimanê-xebatê$1",
//url (periodical url)
"^journalurl(\\d*)$": "urlya-kovarê$1",
"^magazineurl(\\d*)$": "urlya-kovarê$1",
"^newspaperurl(\\d*)$": "urlya-xezeteyê$1",
"^workurl(\\d*)$": "urlya-xebatê$1",
//source
"^newsagency(\\d*)$": "ajans$1",
"^news_agency(\\d*)$": "ajans$1",
//chapter (individual webpage/entry title) — website citations
"^webpage(\\d*)$": "rûpela-webê$1",
"^webpageurl(\\d*)$": "urlya-webê$1",
"^trans-webpage(\\d*)$": "tercimeya-webê$1",
"^webpage_tlr(\\d*)$": "tercimanê-webê$1",
"^webpage_series(\\d*)$": "seriya-webê$1",
"^webpage_seriesvolume(\\d*)$": "cildê-seriya-webê$1",
"^webpage_number(\\d*)$": "hejmara-webê$1",
"^webpage_plain(\\d*)$": "web-sade$1",
//title (site/work name) — website citations
"^site(\\d*)$": "websîte$1",
"^trans-site(\\d*)$": "tercimeya-sîteyê$1",
}
};
function run() {
var $textbox = $( '#wpTextbox1' );
if ( !$textbox.length ) {
mw.notify( 'Qutîka guhertinê (wpTextbox1) nehat dîtin. Tu li rûpelekê ya guhertinê yî?', { type: 'error' } );
return;
}
var originalText = $textbox.val();
var newText = TemplateParamRenamer.rename( originalText, CONFIG );
if ( newText === originalText ) {
mw.notify( 'Tu şablon nehat dîtin ku were guhertin.' );
return;
}
// Update the textbox in place. The user still reviews and clicks
// "Save"/"Show changes" themselves — this script never submits
// the form or touches the API.
$textbox.val( newText ).trigger( 'change' );
// Append a note to the edit summary, if present, without
// clobbering anything the user already typed.
var $summary = $( '#wpSummary' );
if ( $summary.length ) {
var note = 'kurdîkirina şablonên jêderê (citeKurdifier)';
var current = $summary.val();
$summary.val( current ? current + '; ' + note : note );
}
mw.notify( 'Şablonên jêderê hatin kurdîkirin. Ji kerema xwe biguherînan kontrol bike û tomar bike.' );
}
$( function () {
// Only makes sense to show this on an edit form
if ( !$( '#wpTextbox1' ).length ) {
return;
}
var portletLink = mw.util.addPortletLink(
'p-cactions',
'#',
'citeKurdifier',
'ca-cite-kurdifier',
'Şablonên jêderê bike kurdî'
);
// addPortletLink returns null if 'p-cactions' doesn't exist in the current skin.
if ( portletLink ) {
portletLink.addEventListener( 'click', function ( e ) {
e.preventDefault();
run();
} );
}
} );
}() );
5372abvtxts53k63fsae3k61cv6wd3r
6328722
6328710
2026-08-10T18:51:26Z
Wikihez
7344
6328722
javascript
text/javascript
/**
* citeKurdifier.js
*
* Converts English citation templates (quote-web, quote-book, quote-journal)
* and a set of their parameters into their Kurdish Wiktionary equivalents,
* using an inline configuration (see CONFIG below).
*
* Works directly on the edit textbox (#wpTextbox1) — no page fetch needed,
* since the config now lives in this file rather than on a wiki page.
*
* Requires: morebits.js, templateParamRenamer.js (loaded first)
*/
/* global mw, $, Morebits, TemplateParamRenamer */
( function () {
'use strict';
var CONFIG = {
"templates": {
"jêder-malper": "jêder-malper/ceribandin",
"jêder-kitêb": "jêder-kitêb/ceribandin",
"jêder-kovar": "jêder-kovar/ceribandin",
"quote-web": "jêder-malper/ceribandin",
"quote-book": "jêder-kitêb/ceribandin",
"quote-journal": "jêder-kovar/ceribandin",
},
"basic_params": {
"access-date": "roja-gihiştinê",
"cîh": "cih",
"newversion": "versiyona-nû",
"passage": "jêgirtin",
"text": "jêgirtin",
"jg": "jêgirtin",
"transliteration": "tr",
"transcription": "ts",
"normalization": "norm",
"translation": "tercime",
"gloss": "tercime",
"lit": "hrf",
"lb": "e",
"origtext": "metna-orîjînal",
"origtr": "tr-orîjînal",
"origts": "ts-orîjînal",
"orignorm": "norm-orîjînal",
"origsc": "sc-orîjînal",
"orignormsc": "normsc-orîjînal",
"origsubst": "subst-orîjînal",
"origlb": "e-orîjînal",
"nocat": "nekat",
},
"numbered_params": {
"^role(\\d*)$": "rol$1",
"^roles(\\d*)$": "rol$1",
"^speaker(\\d*)$": "rol$1",
"^tlr(\\d*)$": "terciman$1",
"^translator(\\d*)$": "terciman$1",
"^translators(\\d*)$": "terciman$1",
"^chapter_tlr(\\d*)$": "tercimanê-beşê$1",
"^chapter_tlrs(\\d*)$": "tercimanê-beşê$1",
"^chapter_translator(\\d*)$": "tercimanê-beşê$1",
"^chapter_translators(\\d*)$": "tercimanê-beşê$1",
"^lang(\\d*)$": "ziman$1",
"^first(\\d*)$": "pêşnav$1",
"^2ndfirst(\\d*)$": "2pêşnav$1",
"^last(\\d*)$": "paşnav$1",
"^2ndlast(\\d*)$": "2paşnav$1",
"^trans-author(\\d*)$": "tercimeya-nivîskar$1",
"^author(\\d*)$": "nivîskar$1",
"^writer(\\d*)$": "nivîskar$1",
"^writers(\\d*)$": "nivîskar$1",
"^2ndauthor(\\d*)$": "2nivîskar$1",
"^authorlink(\\d*)$": "lînka-nivîskar$1",
"^2ndauthorlink(\\d*)$": "2lînka-nivîskar$1",
"^trans-authorlink(\\d*)$": "lînka-tercimeya-nivîskar$1",
"^trans-first(\\d*)$": "tercimeya-pêşnav$1",
"^trans-last(\\d*)$": "tercimeya-paşnav$1",
"^volume(\\d*)$": "cild$1",
"^volumes(\\d*)$": "cildên$1",
"^volume_plain(\\d*)$": "cild-sade$1",
"^volumeurl(\\d*)$": "urlya-cild$1",
"^volume_prefix(\\d*)$": "pêşgira-cild$1",
"^vol(\\d*)$": "cild$1",
"^vol_plain(\\d*)$": "cild-sade$1",
"^volurl(\\d*)$": "urlya-cild$1",
"^vol_prefix(\\d*)$": "pêşgira-cild$1",
"^issue(\\d*)$": "hejmar$1",
"^issues(\\d*)$": "hejmarên$1",
"^issue_plain(\\d*)$": "hejmar-sade$1",
"^issueurl(\\d*)$": "urlya-hejmarê$1",
"^issue_prefix(\\d*)$": "pêşgira-hejmarê$1",
"^number(\\d*)$": "nimare$1",
"^numbers(\\d*)$": "nimareyên$1",
"^number_plain(\\d*)$": "nimare-sade$1",
"^numberurl(\\d*)$": "urlya-nimareyê$1",
"^number_prefix(\\d*)$": "pêşgira-nimareyê$1",
"^line(\\d*)$": "rêz$1",
"^lines(\\d*)$": "rêzên$1",
"^line_plain(\\d*)$": "rêz-sade$1",
"^lineurl(\\d*)$": "urlya-rêzê$1",
"^line_prefix(\\d*)$": "pêşgira-rêzê$1",
"^page(\\d*)$": "rûpel$1",
"^pages(\\d*)$": "rûpelên$1",
"^page_plain(\\d*)$": "rûpel-sade$1",
"^pageurl(\\d*)$": "urlya-rûpelê$1",
"^page_prefix(\\d*)$": "pêşgira-rûpelê$1",
"^column(\\d*)$": "stûn$1",
"^columns(\\d*)$": "stûnên$1",
"^column_plain(\\d*)$": "stûn-sade$1",
"^columnurl(\\d*)$": "urlya-stûnê$1",
"^column_prefix(\\d*)$": "pêşgira-stûnê$1",
"^coauthors(\\d*)$": "hevnivîskar$1",
"^quotee(\\d*)$": "jê-tê-girtin$1",
"^editor(\\d*)$": "edîtor$1",
"^editors(\\d*)$": "edîtor$1",
"^mainauthor(\\d*)$": "nivîskarê-sereke$1",
"^compiler(\\d*)$": "berhevkar$1",
"^compilers(\\d*)$": "berhevkar$1",
"^director(\\d*)$": "derhêner$1",
"^directors(\\d*)$": "derhêner$1",
"^lyricist(\\d*)$": "gotinnivîs$1",
"^lyrics-translator(\\d*)$": "tercimanê-gotinan$1",
"^composer(\\d*)$": "bestekar$1",
"^actor(\\d*)$": "aktor$1",
"^artist(\\d*)$": "artîst$1",
"^feat(\\d*)$": "mêvan$1",
"^default-authorlabel(\\d*)$": "standard-etîketa-nivîskar$1",
"^authorlabel(\\d*)$": "etîketa-nivîskar$1",
"^title(\\d*)$": "sernav$1",
"^trans-title(\\d*)$": "tercimeya-sernav$1",
"^series(\\d*)$": "serî$1",
"^seriesvolume(\\d*)$": "cildê-seriyê$1",
"^notitle(\\d*)$": "bêsernav$1",
"^entry(\\d*)$": "made$1",
"^entryurl(\\d*)$": "urlya-madeyê$1",
"^trans-entry(\\d*)$": "tercimeya-madeyê$1",
"^chapter(\\d*)$": "beş$1",
"^chapterurl(\\d*)$": "urlya-beşê$1",
"^chapter_number(\\d*)$": "hejmara-beşê$1",
"^chapter_plain(\\d*)$": "beş-sade$1",
"^chapter_series(\\d*)$": "seriya-beşê$1",
"^chapter_seriesvolume(\\d*)$": "cildê-seriya-beşê$1",
"^trans-chapter(\\d*)$": "tercimeya-beşê$1",
"^section(\\d*)$": "qisim$1",
"^sectionurl(\\d*)$": "urlya-qismê$1",
"^section_number(\\d*)$": "hejmara-qismê$1",
"^section_plain(\\d*)$": "qisim-sade$1",
"^section_series(\\d*)$": "rêzeya-qismê$1",
"^section_seriesvolume(\\d*)$": "cildê-seriya-qismê$1",
"^trans-section(\\d*)$": "tercimeya-qismê$1",
"^system(\\d*)$": "sîstem$1",
"^scene(\\d*)$": "sehne$1",
"^archiveurl(\\d*)$": "urlya-arşîvê$1",
"^edition(\\d*)$": "çap$1",
"^edition_plain(\\d*)$": "çap-sade$1",
"^archivedate(\\d*)$": "tarîxa-arşîvê$1",
"^accessdate(\\d*)$": "tarîxa-gihiştinê$1",
"^nodate(\\d*)$": "bêtarîx$1",
"^type(\\d*)$": "cure$1",
"^genre(\\d*)$": "janr$1",
"^medium(\\d*)$": "medya$1",
"^others(\\d*)$": "kesên-din$1",
"^quoted_in(\\d*)$": "cihê-jêgirtinê$1",
"^location(\\d*)$": "cih$1",
"^publisher(\\d*)$": "weşanxane$1",
"^original(\\d*)$": "orîjînal$1",
"^orjînal(\\d*)$": "orîjînal$1",
"^by(\\d*)$": "ji-aliyê$1",
"^note(\\d*)$": "not$1",
"^note_plain(\\d*)$": "not-sade$1",
"^other(\\d*)$": "yê-din$1",
"^source(\\d*)$": "çavkanî$1",
"^worklang(\\d*)$": "zimanê-eserê$1",
"^termlang(\\d*)$": "zimanê-termê$1",
"^origlang(\\d*)$": "zimanê-orîjînal$1",
"^origworklang(\\d*)$": "zimanê-esera-orîjînal$1",
"^date(\\d*)$": "tarîx$1",
"^year(\\d*)$": "sal$1",
"^month(\\d*)$": "meh$1",
"^start_date(\\d*)$": "tarîxa-destpêkê$1",
"^start_year(\\d*)$": "sala-destpêkê$1",
"^start_month(\\d*)$": "meha-destpêkê$1",
"^origdate(\\d*)$": "tarîxa-orîjînal$1",
"^origyear(\\d*)$": "sala-orîjînal$1",
"^sala orîjînal(\\d*)$": "sala-orîjînal$1",
"^origmonth(\\d*)$": "meha-orîjînal$1",
"^origstart_date(\\d*)$": "tarîxa-destpêkê-orîjînal$1",
"^origstart_year(\\d*)$": "sala-destpêkê-orîjînal$1",
"^origstart_month(\\d*)$": "meha-destpêkê-orîjînal$1",
"^date_published(\\d*)$": "tarîxa-weşandinê$1",
"^year_published(\\d*)$": "sala-weşandinê$1",
"^sala weşandinê(\\d*)$": "sala-weşandinê$1",
"^month_published(\\d*)$": "meha-weşandinê$1",
"^start_date_published(\\d*)$": "tarîxa-destpêkê-weşandin$1",
"^start_year_published(\\d*)$": "sala_destpêkê-weşandin$1",
"^start_month_published(\\d*)$": "meha-destpêkê-weşandin$1",
//kovar journal
"^article(\\d*)$": "meqale$1",
"^titleurl(\\d*)$": "urlya-sernav$1",
"^articleurl(\\d*)$": "urlya-meqaleyê$1",
"^trans-article(\\d*)$": "tercimeya-meqaleyê$1",
"^title_tlr(\\d*)$": "tercimanê-sernav$1",
"^title_tlrs(\\d*)$": "tercimanê-sernav$1",
"^title_translator(\\d*)$": "tercimanê-sernav$1",
"^title_translators(\\d*)$": "tercimanê-sernav$1",
"^article_tlr(\\d*)$": "tercimanê-meqaleyê$1",
"^article_tlrs(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translator(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translators(\\d*)$": "tercimanê-meqaleyê$1",
"^title_series(\\d*)$": "seriya-sernav$1",
"^article_series(\\d*)$": "seriya-meqaleyê$1",
//chapter_seriesvolume
"^title_seriesvolume(\\d*)$": "cildê-seriya-sernav$1",
"^article_seriesvolume(\\d*)$": "cildê-seriya-meqaleyê$1",
//chapter_number
"^title_number(\\d*)$": "hejmara-sernav$1",
"^article_number(\\d*)$": "hejmara-meqaleyê$1",
//chapter_plain
"^title_plain(\\d*)$": "sernav-sade$1",
"^article_plain(\\d*)$": "meqale-sade$1",
//title (periodical name)
"^journal(\\d*)$": "kovar$1",
"^magazine(\\d*)$": "kovar$1",
"^newspaper(\\d*)$": "xezete$1",
"^work(\\d*)$": "xebat$1",
//trans-title
"^trans-journal(\\d*)$": "tercimeya-kovar$1",
"^trans-magazine(\\d*)$": "tercimeya-kovar$1",
"^trans-newspaper(\\d*)$": "tercimeya-xezete$1",
"^trans-work(\\d*)$": "tercimeya-xebat$1",
//tlr (periodical translator)
"^journal_tlr(\\d*)$": "tercimanê-kovarê$1",
"^journal_tlrs(\\d*)$": "tercimanê-kovarê$1",
"^journal_translator(\\d*)$": "tercimanê-kovarê$1",
"^journal_translators(\\d*)$": "tercimanê-kovarê$1",
"^magazine_tlr(\\d*)$": "tercimanê-kovarê$1",
"^magazine_tlrs(\\d*)$": "tercimanê-kovarê$1",
"^magazine_translator(\\d*)$": "tercimanê-kovarê$1",
"^magazine_translators(\\d*)$": "tercimanê-kovarê$1",
"^newspaper_tlr(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_tlrs(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translator(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translators(\\d*)$": "tercimanê-xezeteyê$1",
"^work_tlr(\\d*)$": "tercimanê-xebatê$1",
"^work_tlrs(\\d*)$": "tercimanê-xebatê$1",
"^work_translator(\\d*)$": "tercimanê-xebatê$1",
"^work_translators(\\d*)$": "tercimanê-xebatê$1",
//url (periodical url)
"^journalurl(\\d*)$": "urlya-kovarê$1",
"^magazineurl(\\d*)$": "urlya-kovarê$1",
"^newspaperurl(\\d*)$": "urlya-xezeteyê$1",
"^workurl(\\d*)$": "urlya-xebatê$1",
//source
"^newsagency(\\d*)$": "ajans$1",
"^news_agency(\\d*)$": "ajans$1",
//chapter (individual webpage/entry title) — website citations
"^webpage(\\d*)$": "rûpela-webê$1",
"^webpageurl(\\d*)$": "urlya-webê$1",
"^trans-webpage(\\d*)$": "tercimeya-webê$1",
"^webpage_tlr(\\d*)$": "tercimanê-webê$1",
"^webpage_series(\\d*)$": "seriya-webê$1",
"^webpage_seriesvolume(\\d*)$": "cildê-seriya-webê$1",
"^webpage_number(\\d*)$": "hejmara-webê$1",
"^webpage_plain(\\d*)$": "web-sade$1",
//title (site/work name) — website citations
"^site(\\d*)$": "websîte$1",
"^trans-site(\\d*)$": "tercimeya-sîteyê$1",
}
};
function run() {
var $textbox = $( '#wpTextbox1' );
if ( !$textbox.length ) {
mw.notify( 'Qutîka guhertinê (wpTextbox1) nehat dîtin. Tu li rûpelekê ya guhertinê yî?', { type: 'error' } );
return;
}
var originalText = $textbox.val();
var newText = TemplateParamRenamer.rename( originalText, CONFIG );
if ( newText === originalText ) {
mw.notify( 'Tu şablon nehat dîtin ku were guhertin.' );
return;
}
// Update the textbox in place. The user still reviews and clicks
// "Save"/"Show changes" themselves — this script never submits
// the form or touches the API.
$textbox.val( newText ).trigger( 'change' );
// Append a note to the edit summary, if present, without
// clobbering anything the user already typed.
var $summary = $( '#wpSummary' );
if ( $summary.length ) {
var note = 'kurdîkirina şablonên jêderê (citeKurdifier)';
var current = $summary.val();
$summary.val( current ? current + '; ' + note : note );
}
mw.notify( 'Şablonên jêderê hatin kurdîkirin. Ji kerema xwe biguherînan kontrol bike û tomar bike.' );
}
$( function () {
// Only makes sense to show this on an edit form
if ( !$( '#wpTextbox1' ).length ) {
return;
}
var portletLink = mw.util.addPortletLink(
'p-cactions',
'#',
'citeKurdifier',
'ca-cite-kurdifier',
'Şablonên jêderê bike kurdî'
);
// addPortletLink returns null if 'p-cactions' doesn't exist in the current skin.
if ( portletLink ) {
portletLink.addEventListener( 'click', function ( e ) {
e.preventDefault();
run();
} );
}
} );
}() );
1dbm8clciqgpjt1dfk4pppxl4cfui5o
6328732
6328722
2026-08-10T22:04:02Z
Wikihez
7344
6328732
javascript
text/javascript
/**
* citeKurdifier.js
*
* Converts English citation templates (quote-web, quote-book, quote-journal)
* and a set of their parameters into their Kurdish Wiktionary equivalents,
* using an inline configuration (see CONFIG below).
*
* Works directly on the edit textbox (#wpTextbox1) — no page fetch needed,
* since the config now lives in this file rather than on a wiki page.
*
* Requires: morebits.js, templateParamRenamer.js (loaded first)
*/
/* global mw, $, Morebits, TemplateParamRenamer */
( function () {
'use strict';
var CONFIG = {
"templates": {
"jêder-malper": "jêder-malper/ceribandin",
"jêder-kitêb": "jêder-kitêb/ceribandin",
"jêder-kovar": "jêder-kovar/ceribandin",
"quote-web": "jêder-malper/ceribandin",
"quote-book": "jêder-kitêb/ceribandin",
"quote-journal": "jêder-kovar/ceribandin",
"jêder-vîdeo": "jêder-vîdeo/ceribandin",
"quote-av": "jêder-vîdeo/ceribandin",
},
"basic_params": {
"access-date": "roja-gihiştinê",
"cîh": "cih",
"newversion": "versiyona-nû",
"passage": "jêgirtin",
"text": "jêgirtin",
"jg": "jêgirtin",
"transliteration": "tr",
"transcription": "ts",
"normalization": "norm",
"translation": "tercime",
"gloss": "tercime",
"lit": "hrf",
"lb": "e",
"origtext": "metna-orîjînal",
"origtr": "tr-orîjînal",
"origts": "ts-orîjînal",
"orignorm": "norm-orîjînal",
"origsc": "sc-orîjînal",
"orignormsc": "normsc-orîjînal",
"origsubst": "subst-orîjînal",
"origlb": "e-orîjînal",
"nocat": "nekat",
},
"numbered_params": {
"^role(\\d*)$": "rol$1",
"^roles(\\d*)$": "rol$1",
"^speaker(\\d*)$": "rol$1",
"^tlr(\\d*)$": "terciman$1",
"^translator(\\d*)$": "terciman$1",
"^translators(\\d*)$": "terciman$1",
"^chapter_tlr(\\d*)$": "tercimanê-beşê$1",
"^chapter_tlrs(\\d*)$": "tercimanê-beşê$1",
"^chapter_translator(\\d*)$": "tercimanê-beşê$1",
"^chapter_translators(\\d*)$": "tercimanê-beşê$1",
"^lang(\\d*)$": "ziman$1",
"^first(\\d*)$": "pêşnav$1",
"^2ndfirst(\\d*)$": "2pêşnav$1",
"^last(\\d*)$": "paşnav$1",
"^2ndlast(\\d*)$": "2paşnav$1",
"^trans-author(\\d*)$": "tercimeya-nivîskar$1",
"^author(\\d*)$": "nivîskar$1",
"^writer(\\d*)$": "nivîskar$1",
"^writers(\\d*)$": "nivîskar$1",
"^2ndauthor(\\d*)$": "2nivîskar$1",
"^authorlink(\\d*)$": "lînka-nivîskar$1",
"^2ndauthorlink(\\d*)$": "2lînka-nivîskar$1",
"^trans-authorlink(\\d*)$": "lînka-tercimeya-nivîskar$1",
"^trans-first(\\d*)$": "tercimeya-pêşnav$1",
"^trans-last(\\d*)$": "tercimeya-paşnav$1",
"^volume(\\d*)$": "cild$1",
"^volumes(\\d*)$": "cildên$1",
"^volume_plain(\\d*)$": "cild-sade$1",
"^volumeurl(\\d*)$": "urlya-cild$1",
"^volume_prefix(\\d*)$": "pêşgira-cild$1",
"^vol(\\d*)$": "cild$1",
"^vol_plain(\\d*)$": "cild-sade$1",
"^volurl(\\d*)$": "urlya-cild$1",
"^vol_prefix(\\d*)$": "pêşgira-cild$1",
"^issue(\\d*)$": "hejmar$1",
"^issues(\\d*)$": "hejmarên$1",
"^issue_plain(\\d*)$": "hejmar-sade$1",
"^issueurl(\\d*)$": "urlya-hejmarê$1",
"^issue_prefix(\\d*)$": "pêşgira-hejmarê$1",
"^number(\\d*)$": "nimare$1",
"^numbers(\\d*)$": "nimareyên$1",
"^number_plain(\\d*)$": "nimare-sade$1",
"^numberurl(\\d*)$": "urlya-nimareyê$1",
"^number_prefix(\\d*)$": "pêşgira-nimareyê$1",
"^line(\\d*)$": "rêz$1",
"^lines(\\d*)$": "rêzên$1",
"^line_plain(\\d*)$": "rêz-sade$1",
"^lineurl(\\d*)$": "urlya-rêzê$1",
"^line_prefix(\\d*)$": "pêşgira-rêzê$1",
"^page(\\d*)$": "rûpel$1",
"^pages(\\d*)$": "rûpelên$1",
"^page_plain(\\d*)$": "rûpel-sade$1",
"^pageurl(\\d*)$": "urlya-rûpelê$1",
"^page_prefix(\\d*)$": "pêşgira-rûpelê$1",
"^column(\\d*)$": "stûn$1",
"^columns(\\d*)$": "stûnên$1",
"^column_plain(\\d*)$": "stûn-sade$1",
"^columnurl(\\d*)$": "urlya-stûnê$1",
"^column_prefix(\\d*)$": "pêşgira-stûnê$1",
"^coauthors(\\d*)$": "hevnivîskar$1",
"^quotee(\\d*)$": "jê-tê-girtin$1",
"^editor(\\d*)$": "edîtor$1",
"^editors(\\d*)$": "edîtor$1",
"^mainauthor(\\d*)$": "nivîskarê-sereke$1",
"^compiler(\\d*)$": "berhevkar$1",
"^compilers(\\d*)$": "berhevkar$1",
"^director(\\d*)$": "derhêner$1",
"^directors(\\d*)$": "derhêner$1",
"^lyricist(\\d*)$": "gotinnivîs$1",
"^lyrics-translator(\\d*)$": "tercimanê-gotinan$1",
"^composer(\\d*)$": "bestekar$1",
"^actor(\\d*)$": "aktor$1",
"^artist(\\d*)$": "artîst$1",
"^feat(\\d*)$": "mêvan$1",
"^default-authorlabel(\\d*)$": "standard-etîketa-nivîskar$1",
"^authorlabel(\\d*)$": "etîketa-nivîskar$1",
"^title(\\d*)$": "sernav$1",
"^trans-title(\\d*)$": "tercimeya-sernav$1",
"^series(\\d*)$": "serî$1",
"^seriesvolume(\\d*)$": "cildê-seriyê$1",
"^notitle(\\d*)$": "bêsernav$1",
"^entry(\\d*)$": "made$1",
"^entryurl(\\d*)$": "urlya-madeyê$1",
"^trans-entry(\\d*)$": "tercimeya-madeyê$1",
"^chapter(\\d*)$": "beş$1",
"^chapterurl(\\d*)$": "urlya-beşê$1",
"^chapter_number(\\d*)$": "hejmara-beşê$1",
"^chapter_plain(\\d*)$": "beş-sade$1",
"^chapter_series(\\d*)$": "seriya-beşê$1",
"^chapter_seriesvolume(\\d*)$": "cildê-seriya-beşê$1",
"^trans-chapter(\\d*)$": "tercimeya-beşê$1",
"^section(\\d*)$": "qisim$1",
"^sectionurl(\\d*)$": "urlya-qismê$1",
"^section_number(\\d*)$": "hejmara-qismê$1",
"^section_plain(\\d*)$": "qisim-sade$1",
"^section_series(\\d*)$": "rêzeya-qismê$1",
"^section_seriesvolume(\\d*)$": "cildê-seriya-qismê$1",
"^trans-section(\\d*)$": "tercimeya-qismê$1",
"^system(\\d*)$": "sîstem$1",
"^scene(\\d*)$": "sehne$1",
"^level(\\d*)$": "seviye$1",
"^archiveurl(\\d*)$": "urlya-arşîvê$1",
"^edition(\\d*)$": "çap$1",
"^edition_plain(\\d*)$": "çap-sade$1",
"^archivedate(\\d*)$": "tarîxa-arşîvê$1",
"^accessdate(\\d*)$": "tarîxa-gihiştinê$1",
"^nodate(\\d*)$": "bêtarîx$1",
"^type(\\d*)$": "cure$1",
"^genre(\\d*)$": "janr$1",
"^medium(\\d*)$": "medya$1",
"^others(\\d*)$": "kesên-din$1",
"^quoted_in(\\d*)$": "cihê-jêgirtinê$1",
"^location(\\d*)$": "cih$1",
"^publisher(\\d*)$": "weşanxane$1",
"^original(\\d*)$": "orîjînal$1",
"^orjînal(\\d*)$": "orîjînal$1",
"^by(\\d*)$": "ji-aliyê$1",
"^note(\\d*)$": "not$1",
"^note_plain(\\d*)$": "not-sade$1",
"^other(\\d*)$": "yê-din$1",
"^source(\\d*)$": "çavkanî$1",
"^worklang(\\d*)$": "zimanê-eserê$1",
"^termlang(\\d*)$": "zimanê-termê$1",
"^origlang(\\d*)$": "zimanê-orîjînal$1",
"^origworklang(\\d*)$": "zimanê-esera-orîjînal$1",
"^date(\\d*)$": "tarîx$1",
"^year(\\d*)$": "sal$1",
"^month(\\d*)$": "meh$1",
"^start_date(\\d*)$": "tarîxa-destpêkê$1",
"^start_year(\\d*)$": "sala-destpêkê$1",
"^start_month(\\d*)$": "meha-destpêkê$1",
"^origdate(\\d*)$": "tarîxa-orîjînal$1",
"^origyear(\\d*)$": "sala-orîjînal$1",
"^sala orîjînal(\\d*)$": "sala-orîjînal$1",
"^origmonth(\\d*)$": "meha-orîjînal$1",
"^origstart_date(\\d*)$": "tarîxa-destpêkê-orîjînal$1",
"^origstart_year(\\d*)$": "sala-destpêkê-orîjînal$1",
"^origstart_month(\\d*)$": "meha-destpêkê-orîjînal$1",
"^date_published(\\d*)$": "tarîxa-weşandinê$1",
"^year_published(\\d*)$": "sala-weşandinê$1",
"^sala weşandinê(\\d*)$": "sala-weşandinê$1",
"^month_published(\\d*)$": "meha-weşandinê$1",
"^start_date_published(\\d*)$": "tarîxa-destpêkê-weşandin$1",
"^start_year_published(\\d*)$": "sala_destpêkê-weşandin$1",
"^start_month_published(\\d*)$": "meha-destpêkê-weşandin$1",
//kovar journal
"^article(\\d*)$": "meqale$1",
"^titleurl(\\d*)$": "urlya-sernav$1",
"^articleurl(\\d*)$": "urlya-meqaleyê$1",
"^trans-article(\\d*)$": "tercimeya-meqaleyê$1",
"^title_tlr(\\d*)$": "tercimanê-sernav$1",
"^title_tlrs(\\d*)$": "tercimanê-sernav$1",
"^title_translator(\\d*)$": "tercimanê-sernav$1",
"^title_translators(\\d*)$": "tercimanê-sernav$1",
"^article_tlr(\\d*)$": "tercimanê-meqaleyê$1",
"^article_tlrs(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translator(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translators(\\d*)$": "tercimanê-meqaleyê$1",
"^title_series(\\d*)$": "seriya-sernav$1",
"^article_series(\\d*)$": "seriya-meqaleyê$1",
//chapter_seriesvolume
"^title_seriesvolume(\\d*)$": "cildê-seriya-sernav$1",
"^article_seriesvolume(\\d*)$": "cildê-seriya-meqaleyê$1",
//chapter_number
"^title_number(\\d*)$": "hejmara-sernav$1",
"^article_number(\\d*)$": "hejmara-meqaleyê$1",
//chapter_plain
"^title_plain(\\d*)$": "sernav-sade$1",
"^article_plain(\\d*)$": "meqale-sade$1",
//title (periodical name)
"^journal(\\d*)$": "kovar$1",
"^magazine(\\d*)$": "kovar$1",
"^newspaper(\\d*)$": "xezete$1",
"^work(\\d*)$": "xebat$1",
//trans-title
"^trans-journal(\\d*)$": "tercimeya-kovar$1",
"^trans-magazine(\\d*)$": "tercimeya-kovar$1",
"^trans-newspaper(\\d*)$": "tercimeya-xezete$1",
"^trans-work(\\d*)$": "tercimeya-xebatê$1",
//tlr (periodical translator)
"^journal_tlr(\\d*)$": "tercimanê-kovarê$1",
"^journal_tlrs(\\d*)$": "tercimanê-kovarê$1",
"^journal_translator(\\d*)$": "tercimanê-kovarê$1",
"^journal_translators(\\d*)$": "tercimanê-kovarê$1",
"^magazine_tlr(\\d*)$": "tercimanê-kovarê$1",
"^magazine_tlrs(\\d*)$": "tercimanê-kovarê$1",
"^magazine_translator(\\d*)$": "tercimanê-kovarê$1",
"^magazine_translators(\\d*)$": "tercimanê-kovarê$1",
"^newspaper_tlr(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_tlrs(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translator(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translators(\\d*)$": "tercimanê-xezeteyê$1",
"^work_tlr(\\d*)$": "tercimanê-xebatê$1",
"^work_tlrs(\\d*)$": "tercimanê-xebatê$1",
"^work_translator(\\d*)$": "tercimanê-xebatê$1",
"^work_translators(\\d*)$": "tercimanê-xebatê$1",
//url (periodical url)
"^journalurl(\\d*)$": "urlya-kovarê$1",
"^magazineurl(\\d*)$": "urlya-kovarê$1",
"^newspaperurl(\\d*)$": "urlya-xezeteyê$1",
"^workurl(\\d*)$": "urlya-xebatê$1",
//source
"^newsagency(\\d*)$": "ajans$1",
"^news_agency(\\d*)$": "ajans$1",
//chapter (individual webpage/entry title) — website citations
"^webpage(\\d*)$": "rûpela-webê$1",
"^webpageurl(\\d*)$": "urlya-webê$1",
"^trans-webpage(\\d*)$": "tercimeya-webê$1",
"^webpage_tlr(\\d*)$": "tercimanê-webê$1",
"^webpage_series(\\d*)$": "seriya-websîteyê$1",
"^webpage_seriesvolume(\\d*)$": "cildê-seriya-webê$1",
"^webpage_number(\\d*)$": "hejmara-webê$1",
"^webpage_plain(\\d*)$": "web-sade$1",
//title (site/work name) — website citations
"^site(\\d*)$": "websîte$1",
"^trans-site(\\d*)$": "tercimeya-sîteyê$1",
//chapter (episode) — audio/video citations
"^episode(\\d*)$": "xelek$1",
"^episodeurl(\\d*)$": "urlya-xelekê$1",
"^trans-episode(\\d*)$": "tercimeya-xelekê$1",
"^episode_series(\\d*)$": "seriya-xelekê$1",
"^episode_seriesvolume(\\d*)$": "cildê-seriya-xelekê$1",
"^episode_number(\\d*)$": "hejmara-xelekê$1",
"^episode_plain(\\d*)$": "xelek-sade$1",
//volume (season) — audio/video citations
"^season(\\d*)$": "sezon$1",
"^seasons(\\d*)$": "sezonên$1",
"^season_plain(\\d*)$": "sezon-sade$1",
"^seasonurl(\\d*)$": "urlya-sezonê$1",
}
};
function run() {
var $textbox = $( '#wpTextbox1' );
if ( !$textbox.length ) {
mw.notify( 'Qutîka guhertinê (wpTextbox1) nehat dîtin. Tu li rûpelekê ya guhertinê yî?', { type: 'error' } );
return;
}
var originalText = $textbox.val();
var newText = TemplateParamRenamer.rename( originalText, CONFIG );
if ( newText === originalText ) {
mw.notify( 'Tu şablon nehat dîtin ku were guhertin.' );
return;
}
// Update the textbox in place. The user still reviews and clicks
// "Save"/"Show changes" themselves — this script never submits
// the form or touches the API.
$textbox.val( newText ).trigger( 'change' );
// Append a note to the edit summary, if present, without
// clobbering anything the user already typed.
var $summary = $( '#wpSummary' );
if ( $summary.length ) {
var note = 'kurdîkirina şablonên jêderê (citeKurdifier)';
var current = $summary.val();
$summary.val( current ? current + '; ' + note : note );
}
mw.notify( 'Şablonên jêderê hatin kurdîkirin. Ji kerema xwe biguherînan kontrol bike û tomar bike.' );
}
$( function () {
// Only makes sense to show this on an edit form
if ( !$( '#wpTextbox1' ).length ) {
return;
}
var portletLink = mw.util.addPortletLink(
'p-cactions',
'#',
'citeKurdifier',
'ca-cite-kurdifier',
'Şablonên jêderê bike kurdî'
);
// addPortletLink returns null if 'p-cactions' doesn't exist in the current skin.
if ( portletLink ) {
portletLink.addEventListener( 'click', function ( e ) {
e.preventDefault();
run();
} );
}
} );
}() );
7dw078g8p7gnxnn2tx8gp8oushewbgy
6328748
6328732
2026-08-10T23:12:38Z
Wikihez
7344
6328748
javascript
text/javascript
/**
* citeKurdifier.js
*
* Converts English citation templates (quote-web, quote-book, quote-journal)
* and a set of their parameters into their Kurdish Wiktionary equivalents,
* using an inline configuration (see CONFIG below).
*
* Works directly on the edit textbox (#wpTextbox1) — no page fetch needed,
* since the config now lives in this file rather than on a wiki page.
*
* Requires: morebits.js, templateParamRenamer.js (loaded first)
*/
/* global mw, $, Morebits, TemplateParamRenamer */
( function () {
'use strict';
var CONFIG = {
"templates": {
"jêder-malper": "jêder-malper/ceribandin",
"jêder-kitêb": "jêder-kitêb/ceribandin",
"jêder-kovar": "jêder-kovar/ceribandin",
"quote-web": "jêder-malper/ceribandin",
"quote-book": "jêder-kitêb/ceribandin",
"quote-journal": "jêder-kovar/ceribandin",
"jêder-vîdeo": "jêder-vîdeo/ceribandin",
"quote-av": "jêder-vîdeo/ceribandin",
},
"basic_params": {
"access-date": "roja-gihiştinê",
"cîh": "cih",
"newversion": "versiyona-nû",
"passage": "jêgirtin",
"text": "jêgirtin",
"jg": "jêgirtin",
"transliteration": "tr",
"transcription": "ts",
"normalization": "norm",
"translation": "tercime",
"gloss": "tercime",
"lit": "hrf",
"lb": "e",
"origtext": "metna-orîjînal",
"origtr": "tr-orîjînal",
"origts": "ts-orîjînal",
"orignorm": "norm-orîjînal",
"origsc": "sc-orîjînal",
"orignormsc": "normsc-orîjînal",
"origsubst": "subst-orîjînal",
"origlb": "e-orîjînal",
"nocat": "nekat",
"brackets": "parantez",
},
"numbered_params": {
"^role(\\d*)$": "rol$1",
"^roles(\\d*)$": "rol$1",
"^speaker(\\d*)$": "rol$1",
"^tlr(\\d*)$": "terciman$1",
"^translator(\\d*)$": "terciman$1",
"^translators(\\d*)$": "terciman$1",
"^chapter_tlr(\\d*)$": "tercimanê-beşê$1",
"^chapter_tlrs(\\d*)$": "tercimanê-beşê$1",
"^chapter_translator(\\d*)$": "tercimanê-beşê$1",
"^chapter_translators(\\d*)$": "tercimanê-beşê$1",
"^lang(\\d*)$": "ziman$1",
"^first(\\d*)$": "pêşnav$1",
"^2ndfirst(\\d*)$": "2pêşnav$1",
"^last(\\d*)$": "paşnav$1",
"^2ndlast(\\d*)$": "2paşnav$1",
"^trans-author(\\d*)$": "tercimeya-nivîskar$1",
"^author(\\d*)$": "nivîskar$1",
"^writer(\\d*)$": "nivîskar$1",
"^writers(\\d*)$": "nivîskar$1",
"^2ndauthor(\\d*)$": "2nivîskar$1",
"^authorlink(\\d*)$": "lînka-nivîskar$1",
"^2ndauthorlink(\\d*)$": "2lînka-nivîskar$1",
"^trans-authorlink(\\d*)$": "lînka-tercimeya-nivîskar$1",
"^trans-first(\\d*)$": "tercimeya-pêşnav$1",
"^trans-last(\\d*)$": "tercimeya-paşnav$1",
"^volume(\\d*)$": "cild$1",
"^volumes(\\d*)$": "cildên$1",
"^volume_plain(\\d*)$": "cild-sade$1",
"^volumeurl(\\d*)$": "urlya-cild$1",
"^volume_prefix(\\d*)$": "pêşgira-cild$1",
"^vol(\\d*)$": "cild$1",
"^vol_plain(\\d*)$": "cild-sade$1",
"^volurl(\\d*)$": "urlya-cild$1",
"^vol_prefix(\\d*)$": "pêşgira-cild$1",
"^issue(\\d*)$": "hejmar$1",
"^issues(\\d*)$": "hejmarên$1",
"^issue_plain(\\d*)$": "hejmar-sade$1",
"^issueurl(\\d*)$": "urlya-hejmarê$1",
"^issue_prefix(\\d*)$": "pêşgira-hejmarê$1",
"^number(\\d*)$": "nimare$1",
"^numbers(\\d*)$": "nimareyên$1",
"^number_plain(\\d*)$": "nimare-sade$1",
"^numberurl(\\d*)$": "urlya-nimareyê$1",
"^number_prefix(\\d*)$": "pêşgira-nimareyê$1",
"^line(\\d*)$": "rêz$1",
"^lines(\\d*)$": "rêzên$1",
"^line_plain(\\d*)$": "rêz-sade$1",
"^lineurl(\\d*)$": "urlya-rêzê$1",
"^line_prefix(\\d*)$": "pêşgira-rêzê$1",
"^page(\\d*)$": "rûpel$1",
"^pages(\\d*)$": "rûpelên$1",
"^page_plain(\\d*)$": "rûpel-sade$1",
"^pageurl(\\d*)$": "urlya-rûpelê$1",
"^page_prefix(\\d*)$": "pêşgira-rûpelê$1",
"^column(\\d*)$": "stûn$1",
"^columns(\\d*)$": "stûnên$1",
"^column_plain(\\d*)$": "stûn-sade$1",
"^columnurl(\\d*)$": "urlya-stûnê$1",
"^column_prefix(\\d*)$": "pêşgira-stûnê$1",
"^coauthors(\\d*)$": "hevnivîskar$1",
"^quotee(\\d*)$": "jê-tê-girtin$1",
"^editor(\\d*)$": "edîtor$1",
"^editors(\\d*)$": "edîtor$1",
"^mainauthor(\\d*)$": "nivîskarê-sereke$1",
"^compiler(\\d*)$": "berhevkar$1",
"^compilers(\\d*)$": "berhevkar$1",
"^director(\\d*)$": "derhêner$1",
"^directors(\\d*)$": "derhêner$1",
"^lyricist(\\d*)$": "gotinnivîs$1",
"^lyrics-translator(\\d*)$": "tercimanê-gotinan$1",
"^composer(\\d*)$": "bestekar$1",
"^actor(\\d*)$": "aktor$1",
"^artist(\\d*)$": "artîst$1",
"^feat(\\d*)$": "mêvan$1",
"^default-authorlabel(\\d*)$": "standard-etîketa-nivîskar$1",
"^authorlabel(\\d*)$": "etîketa-nivîskar$1",
"^title(\\d*)$": "sernav$1",
"^trans-title(\\d*)$": "tercimeya-sernav$1",
"^series(\\d*)$": "serî$1",
"^seriesvolume(\\d*)$": "cildê-seriyê$1",
"^notitle(\\d*)$": "bêsernav$1",
"^entry(\\d*)$": "made$1",
"^entryurl(\\d*)$": "urlya-madeyê$1",
"^trans-entry(\\d*)$": "tercimeya-made$1",
"^chapter(\\d*)$": "beş$1",
"^chapterurl(\\d*)$": "urlya-beşê$1",
"^chapter_number(\\d*)$": "hejmara-beşê$1",
"^chapter_plain(\\d*)$": "beş-sade$1",
"^chapter_series(\\d*)$": "seriya-beşê$1",
"^chapter_seriesvolume(\\d*)$": "cildê-seriya-beşê$1",
"^trans-chapter(\\d*)$": "tercimeya-beş$1",
"^section(\\d*)$": "qisim$1",
"^sectionurl(\\d*)$": "urlya-qismê$1",
"^section_number(\\d*)$": "hejmara-qismê$1",
"^section_plain(\\d*)$": "qisim-sade$1",
"^section_series(\\d*)$": "rêzeya-qismê$1",
"^section_seriesvolume(\\d*)$": "cildê-seriya-qismê$1",
"^trans-section(\\d*)$": "tercimeya-qism$1",
"^system(\\d*)$": "sîstem$1",
"^scene(\\d*)$": "sehne$1",
"^level(\\d*)$": "seviye$1",
"^archiveurl(\\d*)$": "urlya-arşîvê$1",
"^edition(\\d*)$": "çap$1",
"^edition_plain(\\d*)$": "çap-sade$1",
"^archivedate(\\d*)$": "tarîxa-arşîvê$1",
"^accessdate(\\d*)$": "tarîxa-gihiştinê$1",
"^nodate(\\d*)$": "bêtarîx$1",
"^type(\\d*)$": "cure$1",
"^genre(\\d*)$": "janr$1",
"^medium(\\d*)$": "medya$1",
"^others(\\d*)$": "kesên-din$1",
"^quoted_in(\\d*)$": "cihê-jêgirtinê$1",
"^location(\\d*)$": "cih$1",
"^publisher(\\d*)$": "weşanxane$1",
"^original(\\d*)$": "orîjînal$1",
"^orjînal(\\d*)$": "orîjînal$1",
"^by(\\d*)$": "ji-aliyê$1",
"^note(\\d*)$": "not$1",
"^note_plain(\\d*)$": "not-sade$1",
"^other(\\d*)$": "yê-din$1",
"^source(\\d*)$": "çavkanî$1",
"^worklang(\\d*)$": "zimanê-eserê$1",
"^termlang(\\d*)$": "zimanê-termê$1",
"^origlang(\\d*)$": "zimanê-orîjînal$1",
"^origworklang(\\d*)$": "zimanê-esera-orîjînal$1",
"^date(\\d*)$": "tarîx$1",
"^year(\\d*)$": "sal$1",
"^month(\\d*)$": "meh$1",
"^start_date(\\d*)$": "tarîxa-destpêkê$1",
"^start_year(\\d*)$": "sala-destpêkê$1",
"^start_month(\\d*)$": "meha-destpêkê$1",
"^origdate(\\d*)$": "tarîxa-orîjînal$1",
"^origyear(\\d*)$": "sala-orîjînal$1",
"^sala orîjînal(\\d*)$": "sala-orîjînal$1",
"^origmonth(\\d*)$": "meha-orîjînal$1",
"^origstart_date(\\d*)$": "tarîxa-destpêkê-orîjînal$1",
"^origstart_year(\\d*)$": "sala-destpêkê-orîjînal$1",
"^origstart_month(\\d*)$": "meha-destpêkê-orîjînal$1",
"^date_published(\\d*)$": "tarîxa-weşandinê$1",
"^year_published(\\d*)$": "sala-weşandinê$1",
"^sala weşandinê(\\d*)$": "sala-weşandinê$1",
"^month_published(\\d*)$": "meha-weşandinê$1",
"^start_date_published(\\d*)$": "tarîxa-destpêkê-weşandin$1",
"^start_year_published(\\d*)$": "sala_destpêkê-weşandin$1",
"^start_month_published(\\d*)$": "meha-destpêkê-weşandin$1",
//kovar journal
"^article(\\d*)$": "meqale$1",
"^titleurl(\\d*)$": "urlya-sernav$1",
"^articleurl(\\d*)$": "urlya-meqaleyê$1",
"^trans-article(\\d*)$": "tercimeya-meqale$1",
"^title_tlr(\\d*)$": "tercimanê-sernav$1",
"^title_tlrs(\\d*)$": "tercimanê-sernav$1",
"^title_translator(\\d*)$": "tercimanê-sernav$1",
"^title_translators(\\d*)$": "tercimanê-sernav$1",
"^article_tlr(\\d*)$": "tercimanê-meqaleyê$1",
"^article_tlrs(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translator(\\d*)$": "tercimanê-meqaleyê$1",
"^article_translators(\\d*)$": "tercimanê-meqaleyê$1",
"^title_series(\\d*)$": "seriya-sernav$1",
"^article_series(\\d*)$": "seriya-meqaleyê$1",
//chapter_seriesvolume
"^title_seriesvolume(\\d*)$": "cildê-seriya-sernav$1",
"^article_seriesvolume(\\d*)$": "cildê-seriya-meqaleyê$1",
//chapter_number
"^title_number(\\d*)$": "hejmara-sernav$1",
"^article_number(\\d*)$": "hejmara-meqaleyê$1",
//chapter_plain
"^title_plain(\\d*)$": "sernav-sade$1",
"^article_plain(\\d*)$": "meqale-sade$1",
//title (periodical name)
"^journal(\\d*)$": "kovar$1",
"^magazine(\\d*)$": "kovar$1",
"^newspaper(\\d*)$": "xezete$1",
"^work(\\d*)$": "xebat$1",
//trans-title
"^trans-journal(\\d*)$": "tercimeya-kovar$1",
"^trans-magazine(\\d*)$": "tercimeya-kovar$1",
"^trans-newspaper(\\d*)$": "tercimeya-xezete$1",
"^trans-work(\\d*)$": "tercimeya-xebat$1",
//tlr (periodical translator)
"^journal_tlr(\\d*)$": "tercimanê-kovarê$1",
"^journal_tlrs(\\d*)$": "tercimanê-kovarê$1",
"^journal_translator(\\d*)$": "tercimanê-kovarê$1",
"^journal_translators(\\d*)$": "tercimanê-kovarê$1",
"^magazine_tlr(\\d*)$": "tercimanê-kovarê$1",
"^magazine_tlrs(\\d*)$": "tercimanê-kovarê$1",
"^magazine_translator(\\d*)$": "tercimanê-kovarê$1",
"^magazine_translators(\\d*)$": "tercimanê-kovarê$1",
"^newspaper_tlr(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_tlrs(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translator(\\d*)$": "tercimanê-xezeteyê$1",
"^newspaper_translators(\\d*)$": "tercimanê-xezeteyê$1",
"^work_tlr(\\d*)$": "tercimanê-xebatê$1",
"^work_tlrs(\\d*)$": "tercimanê-xebatê$1",
"^work_translator(\\d*)$": "tercimanê-xebatê$1",
"^work_translators(\\d*)$": "tercimanê-xebatê$1",
//url (periodical url)
"^journalurl(\\d*)$": "urlya-kovarê$1",
"^magazineurl(\\d*)$": "urlya-kovarê$1",
"^newspaperurl(\\d*)$": "urlya-xezeteyê$1",
"^workurl(\\d*)$": "urlya-xebatê$1",
//source
"^newsagency(\\d*)$": "ajans$1",
"^news_agency(\\d*)$": "ajans$1",
//chapter (individual webpage/entry title) — website citations
"^webpage(\\d*)$": "rûpela-webê$1",
"^webpageurl(\\d*)$": "urlya-webê$1",
"^trans-webpage(\\d*)$": "tercimeya-web$1",
"^webpage_tlr(\\d*)$": "tercimanê-webê$1",
"^webpage_series(\\d*)$": "seriya-websîteyê$1",
"^webpage_seriesvolume(\\d*)$": "cildê-seriya-webê$1",
"^webpage_number(\\d*)$": "hejmara-webê$1",
"^webpage_plain(\\d*)$": "web-sade$1",
//title (site/work name) — website citations
"^site(\\d*)$": "websîte$1",
"^trans-site(\\d*)$": "tercimeya-sîte$1",
//chapter (episode) — audio/video citations
"^episode(\\d*)$": "xelek$1",
"^episodeurl(\\d*)$": "urlya-xelekê$1",
"^trans-episode(\\d*)$": "tercimeya-xelek$1",
"^episode_series(\\d*)$": "seriya-xelekê$1",
"^episode_seriesvolume(\\d*)$": "cildê-seriya-xelekê$1",
"^episode_number(\\d*)$": "hejmara-xelekê$1",
"^episode_plain(\\d*)$": "xelek-sade$1",
//volume (season) — audio/video citations
"^season(\\d*)$": "sezon$1",
"^seasons(\\d*)$": "sezonên$1",
"^season_plain(\\d*)$": "sezon-sade$1",
"^seasonurl(\\d*)$": "urlya-sezonê$1",
}
};
function run() {
var $textbox = $( '#wpTextbox1' );
if ( !$textbox.length ) {
mw.notify( 'Qutîka guhertinê (wpTextbox1) nehat dîtin. Tu li rûpelekê ya guhertinê yî?', { type: 'error' } );
return;
}
var originalText = $textbox.val();
var newText = TemplateParamRenamer.rename( originalText, CONFIG );
if ( newText === originalText ) {
mw.notify( 'Tu şablon nehat dîtin ku were guhertin.' );
return;
}
// Update the textbox in place. The user still reviews and clicks
// "Save"/"Show changes" themselves — this script never submits
// the form or touches the API.
$textbox.val( newText ).trigger( 'change' );
// Append a note to the edit summary, if present, without
// clobbering anything the user already typed.
var $summary = $( '#wpSummary' );
if ( $summary.length ) {
var note = 'kurdîkirina şablonên jêderê (citeKurdifier)';
var current = $summary.val();
$summary.val( current ? current + '; ' + note : note );
}
mw.notify( 'Şablonên jêderê hatin kurdîkirin. Ji kerema xwe biguherînan kontrol bike û tomar bike.' );
}
$( function () {
// Only makes sense to show this on an edit form
if ( !$( '#wpTextbox1' ).length ) {
return;
}
var portletLink = mw.util.addPortletLink(
'p-cactions',
'#',
'citeKurdifier',
'ca-cite-kurdifier',
'Şablonên jêderê bike kurdî'
);
// addPortletLink returns null if 'p-cactions' doesn't exist in the current skin.
if ( portletLink ) {
portletLink.addEventListener( 'click', function ( e ) {
e.preventDefault();
run();
} );
}
} );
}() );
6nnt76bq32m4119jvl85d917ouvwowv
Bikarhêner:Balyozbot/kontrol/rêzkirina beşan
2
1358302
6328864
6328137
2026-08-11T01:41:06Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: +1 xeta
6328864
wikitext
text/x-wiki
== Nenas beş ==
* [[bêl]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[cerd]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[cewr]]: nenas beş "Qafiye" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[dardekirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[darfiroş]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[daxme]]: nenas beş "Heriwha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[demjimêrk]]: nenas beş "Cûnên demjimêrkan" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[demjimêrk]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[deqkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[derbestkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[derdestkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[desperasyon]]: nenas beş "Têkilî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[destbilindkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[destpirtûk]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[devbeş]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[deverûkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[dey]]: nenas beş "Binere" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[dilxweşkirin]]: nenas beş "Dijmane" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[dilxweşkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[diyod]]: nenas beş "Rastnivîsî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[ferhenga zanistî]]: nenas beş "Pirjimar" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[fiqurî]]: nenas beş "ji" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[firoşxane]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[fort]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[gilîname]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[goganîbûnî]]: nenas beş "Bideber" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[guhlêbûn]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hanek]]: nenas beş "Pirrjimar" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hanek]]: nenas beş "Navê zanistî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hevalkar]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hevserî]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hevxemî]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hevîrkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hêm]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[hûrbîn]]: nenas beş "Navder" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[jajerûn]]: nenas beş "Pîrepend" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[jornivîs]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[jêkvekirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[jêrnivîs]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kalekol]]: nenas beş "Têkilî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kannadayî]]: nenas beş "Alfabeya zimanê kannadayî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[katakanayî]]: nenas beş "[[kîte|Kîteyên]] katakanayî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kelobîn]]: nenas beş "Ji wêjeyê" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kirtîn]]: nenas beş "Binere" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kirtînî]]: nenas beş "Binere" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kêfkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[lêderkirin]]: nenas beş "Hevmane" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[lêkolînên meydanî]]: nenas beş "Yekjimar" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[lêkqelibîn]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[lûlav]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[marekirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[masîcank]]: nenas beş "Navê zanistî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[maytêkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[menber]]: nenas beş "Pirrjimar" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[mijxele]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[mêkut]]: nenas beş "Bi Elfabeyên Din" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[mêvanname]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[mît]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[navokî]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[neguhdarî]]: nenas beş "Bi alfabeya erebî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nexwendewarî]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nexweş]]: nenas beş "Rengêr" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nezanî]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[neçarkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nîşaste]]: nenas beş "Formûla molekûlî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nûber]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nûçename]]: nenas beş "Herwiha binere" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[otokrasî]]: nenas beş "Têkildar" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pandemî]]: nenas beş "Binêre herwiha" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[parçeparçekirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[parîz]]: nenas beş "Têkil" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[peytkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pir]]: nenas beş "Diyarker" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pê]]: nenas beş "Pêşdaçek" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pêbîrhatinok]]: nenas beş "Minak" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pêkanîn]]: nenas beş "2. Mane qowet lê bûn" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pêlîstik]]: nenas beş "Cûnên pêlistikan" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pêmovkî]]: nenas beş "Pirjimarî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pêşbînîkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pîrek]]: nenas beş "3. kesa ne keç" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pîtepêkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[pîvaza nemrûdê]]: nenas beş "Navê zanistî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[qotik]]: nenas beş "Jêrenot û çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[qurtalkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[raberîkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[ranêzîk]]: nenas beş "Jê" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[seat]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[serederîkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[silavkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[sinetkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[tawankirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[têwerkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[waiz]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[wexerkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[windakirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[xanekirin]]: nenas beş "Bi alfabeyên din" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[xaçkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[xelatkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[xirvekirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[xiyar]]: nenas beş "Name" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[xwecihkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[zirbarbûn]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[zirk]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[Îsmaîl]]: nenas beş "Formên alternatîv" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[Ûnis]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[çareserkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[şaşîkirin]]: nenas beş "Çavkanî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[şîrfiroş]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[li]]: nenas beş "Pêşdaçek" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[Perman]]: nenas beş "Lêker (Sorani – Erdelanî)" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[پەرمان]]: nenas beş "Lêker (Sorani – Erdelanî)" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[gula hesretê]]: nenas beş "Navê zanistî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[fižol]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[qerqeşûn]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[me]]: nenas beş "Formekê lêkerê" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[şîrkî]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[qilqaldar]]: nenas beş "Jê" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[kanistan]]: nenas beş "Bi soranî" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[bersorik]]: nenas beş "Bilêvkirin" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[nava hefteyê]]: nenas beş "Pirrjimar" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
* [[bi]]: nenas beş "Pêşdaçek" (ne hate rêzkirin, ne pos_section e lê binbeş hene)
== Astengî di rêzkirinê de ==
* [[bariyer]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[bayist]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[bayist]]: astengî di rêzkirinê de ji ber binbeşa "Werger" (ne hate rêzkirin)
* [[biyang]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[biyokîmya]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[biyoteknolojî]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[botanîk]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[bêemrî]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[bêfermanî]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[bêjename]]: astengî di rêzkirinê de ji ber binbeşa "Hevmane" (ne hate rêzkirin)
* [[bêrîvan]]: astengî di rêzkirinê de ji ber binbeşa "Formên alternatîv" (ne hate rêzkirin)
* [[bûk]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[cilxane]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[derbûn]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[derkirin]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[dualîtî]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[gir]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[gir]]: astengî di rêzkirinê de ji ber binbeşa "Werger" (ne hate rêzkirin)
* [[gizing]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[hegemonî]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[heste]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[heywannasî]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[hezîran]]: astengî di rêzkirinê de ji ber binbeşa "Binêre herwiha" (ne hate rêzkirin)
* [[hiyeroglîf]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[jêkirin]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[kanûna paşîn]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[kefalet]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[komparatîv]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[kronolojî]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[melû]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[meriçîn]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[mexel]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[neqişandin]]: astengî di rêzkirinê de ji ber binbeşa "Bi alfabeyên din" (ne hate rêzkirin)
* [[nivistinxane]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[nîlûfer]]: astengî di rêzkirinê de ji ber binbeşa "Bi alfabeyên din" (ne hate rêzkirin)
* [[nîsanok]]: astengî di rêzkirinê de ji ber binbeşa "Navê zanistî" (ne hate rêzkirin)
* [[peryod]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[petrokîmya]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[peyîz]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[pifdank]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[pismam]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[pol]]: astengî di rêzkirinê de ji ber binbeşa "Binêre herwiha" (ne hate rêzkirin)
* [[qap]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[qefa]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[qolanî]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[raber]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[raketinxane]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[rapelîn]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[razang]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[razanxane]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[revandin]]: astengî di rêzkirinê de ji ber binbeşa "Formên alternatîv" (ne hate rêzkirin)
* [[rezber]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[rûniştinxane]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[serborî]]: astengî di rêzkirinê de ji ber binbeşa "Werger" (ne hate rêzkirin)
* [[surprîz]]: astengî di rêzkirinê de ji ber binbeşa "Formên alternatîv" (ne hate rêzkirin)
* [[sûperlatîv]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[tabloîd]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[texe]]: astengî di rêzkirinê de ji ber binbeşa "Formên alternatîv" (ne hate rêzkirin)
* [[teyr]]: astengî di rêzkirinê de ji ber binbeşa "Hevmane" (ne hate rêzkirin)
* [[tirp]]: astengî di rêzkirinê de ji ber binbeşa "Werger" (ne hate rêzkirin)
* [[tîre]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[werkirin]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[weşanxane]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[wuşe]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[xwarin]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[zang]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[zirz]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[zoolojî]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[zêrandin]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[çiriya yekem]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[çîvçîv]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[şepilîn]]: astengî di rêzkirinê de ji ber binbeşa "Tewandin" (ne hate rêzkirin)
* [[şor]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[şêl]]: astengî di rêzkirinê de ji ber binbeşa "Bide ber" (ne hate rêzkirin)
* [[şêwr]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[paş guhê xwe ve neavêtin]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[paşguh nekirin]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[piştguh nekirin]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[şehde]]: astengî di rêzkirinê de ji ber binbeşa "Jê" (ne hate rêzkirin)
* [[nahiye]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[zoolog]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[heywannas]]: astengî di rêzkirinê de ji ber binbeşa "Têkildar" (ne hate rêzkirin)
* [[bêdengahî]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (ne hate rêzkirin)
* [[aya]]: astengî di rêzkirinê de ji ber binbeşa "Hevmane" (ne hate rêzkirin)
== Şablona ku-tewîn-nav hat zêdekirin li binbeşa Tewandin ya heyî ==
* [[dest]]: şablona ku-tewîn-nav hat zêdekirin li binbeşa Tewandin ya heyî, ji kerema xwe kontrol bike, beş: "Navdêr"
* [[pestandin]]: şablona ku-tewîn-nav hat zêdekirin li binbeşa Tewandin ya heyî, ji kerema xwe kontrol bike, beş: "Navdêr"
* [[vewêrtin]]: şablona ku-tewîn-nav hat zêdekirin li binbeşa Tewandin ya heyî, ji kerema xwe kontrol bike, beş: "Navdêr"
* [[xeriqandin]]: şablona ku-tewîn-nav hat zêdekirin li binbeşa Tewandin ya heyî, ji kerema xwe kontrol bike, beş: "Navdêr"
* [[şepilîn]]: şablona ku-tewîn-nav hat zêdekirin li binbeşa Tewandin ya heyî, ji kerema xwe kontrol bike, beş: "Navdêr"
kglj3wq7f971etsu452h8kjclwnc81x
Modul:quote/ceribandin
828
1358481
6328698
2026-08-10T12:51:52Z
Wikihez
7344
Rûpel bi "--[=[ This module contains functions to implement quote-* templates. Author: Benwing2; conversion into Lua of {{quote-meta/source}} template, written by Sgconlaw with some help from Erutuon and Benwing2. The main interface is quote_t(). Note that the source display is handled by source(), which reads both the arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter. ]=] local export = {} --[=[ FIXME: 1..." hat çêkirin
6328698
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
alt = {},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Can't specify |%s= along with multiple %s-separated entities in |%s=; use the <t:...> "
.. "inline modifier attached to the individual entities"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Can't currently handle embedded links in '%s', with <alt:...> text '%s'"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.'
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
return serial_comma_join(parts, {conj = delimiter})
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
local language = mw.getContentLanguage()
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Timestamp |%s=%s (possibly canonicalized from its original format) could not be parsed; see the "
.. "[[mw:Help:Extension:ParserFunctions##time|documentation for the #time parser function]]"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= should contain a full date (year, month, day of month); use |%s= for year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= should contain a full date (year, month, day of month); use |%s=, |%s= for month and year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("|%s= or |%s=/|%s= cannot be specified without specifying |%s= or |%s=/|%s="):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. " (last accessed)")
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
sep = next_sep or ", "
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL not allowed to contain a space, but saw |%s=%s"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = ", "
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = ", "
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]nonymous$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Can't specify links in |%s=%s"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Can't specify links in %s=%s"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "anonymous author"
authorobjs[1].link = "anonymous author"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(format_multivalued_annotated_text(authorobjs))
elseif trans_authorlink then
error(
(
"Can't specify |%s= along with multiple semicolon-separated entities in |%s=; use the "
.. "<t:...> inline modifier attached to the individual entities and put the link directly "
.. "in the value of the inline modifier"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(formatted_text)
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(author)
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end
add_with_sep("anonymous" .. anonymous_suffix)
elseif prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Specify only one of |%s= or %s="):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
chap_series = ", " .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Cannot specify |%s= without %s="):format(chap_series_fullname, chap_seriesvolume_fullname))
end
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Cannot specify |%s= without |%s=; put the numeric value in |%s= directly"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = numeric_prefix .. make_chapter_with_url(chap)
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = numeric_prefix .. make_chapter_with_url(upper(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "with "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", "quoting ", ", quotee", ", quotees")
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = ", "
end
add_authorlike("chapter_tlr", "translated by ", ", transl.", nil, " translator")
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Can't specify both |%s= and |%s="):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
local verbed_by = verbed .. " by "
local comma_sgnoun = ", " .. noun
local comma_plnoun = ", " .. noun .. "s"
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "chapter ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
add("in ")
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
add("in ")
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
if format_as_cite then
if role then
if actor then
add_with_sep(actor .. " as ")
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(actor .. " (" .. (#actor_objs > 1 and "actors" or "actor") .. ")")
end
else
if role then
add_with_sep("spoken by " .. role)
if actor then
sep = nil
add_with_sep(" (" .. actor .. ")")
end
elseif actor then
add_with_sep(actor .. " (" .. (#actor_objs > 1 and "actors" or "actor") .. ")")
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", "translated by ", ", transl.", nil, " translator")
author_outputted = false
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, " (lyrics)", nil, " lyricist")
add_authorlike("lyrics-translator", nil, " (translation)", nil, " lyrics translator")
add_authorlike("composer", nil, " (music)", nil, " composer")
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
author_outputted = true
end
add_authorlike("tlr", "translated by ", ", transl.", nil, " translator")
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, " (lyrics)", nil, " lyricist")
add_authorlike("lyrics-translator", nil, " (translation)", nil, " lyrics translator")
add_authorlike("composer", nil, " (music)", nil, " composer")
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
add(format_annotated_text(titleobj, tag_with_cite, tag_with_cite))
local series = parse_and_format_annotated_text("series")
if series then
add(" (" .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(SEMICOLON_SPACE .. seriesvolume)
end
add(")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
add(maintenance_line("Please provide the book title or journal name"))
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Supply only one of |%s= and |%s="):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "en") then
local langs = format_langs(args[1] or args.lang)
if langs then
add(" (in " .. langs .. ")")
end
end
end
end
if need_comma then
sep = ", "
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Supply only one of |%s= and |%s="):format(edition_fullname, edition_plain_fullname))
end
if edition then
add_with_sep(edition .. " edition")
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Can't specify " .. plain_fullname .. " with " .. paramname .. " or " .. plparamname))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
numspec = singular_desc .. " " .. sgval .. " of " .. plval
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
numspec = "unnumbered " .. singular_desc
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or pluralize(singular_desc)
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = pluralize(singular_desc)
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
numspec = desc .. " " .. val
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "volume")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "number")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "number")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line("Please specify the language of the quote using |1="))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, "in " .. format_langs(quotelang))
end
else
if quotelang ~= termlang then
insert(annotations, "quotation in " .. format_langs(quotelang))
end
insert(annotations, "overall work in " .. format_langs(worklang))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, "in " .. format_langs(lang2))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(" (" .. concat(annotations, SEMICOLON_SPACE) .. ")")
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
if artist then
add_with_sep("performed by " .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
if feat then
sep = " "
add_with_sep("ft. " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep("quoted in " .. quoted_in)
insert(tracking_categories, "Quotations using quoted-in parameter")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
sep = ": " -- colon
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep("sourced from " .. source)
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
local origtype = a("deriv") or "translation"
if original or by then
add_with_sep(origtype .. " of " .. (original or "original") .. (by and " by " .. by or ""))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = "in " .. format_langs(origlang)
end
if origworklang then
origworklangtext = "overall work in " .. format_langs(origworklang)
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(" (" .. concat(orig_annotations, SEMICOLON_SPACE) .. ")")
else
add_with_sep(origtype .. " of original" .. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(" (" .. origworklangtext .. ")")
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, "Please provide a date or year", true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
add_with_sep("published " .. formatted_date_published .. (platform and " via " .. platform or ""))
elseif platform then
add_with_sep("via " .. platform)
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
add(", <small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
add(", archived from ")
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("When |%s= is specified, |%s= must also be included"):format(archiveurl_fullname, url_fullname)
)
end
end
add("[" .. url .. " the original] on ")
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("When |%s= is specified, |%s= must also be included"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
add(", retrieved " .. format_date(a("accessdate")))
end
end
local formatted_section = format_chapterlike("section", "section ")
if formatted_section then
add(", ")
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(", " .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(", scene: " .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(", level/area: " .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(", " .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
handle_numeric_param("page", a("page_prefix") or "page", ", ")
handle_numeric_param("column", a("column_prefix") or "column", ", ")
handle_numeric_param("line", a("line_prefix") or "line", ", ")
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(", " .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and "; " or ", "
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Can't have |%s%s= without |author%s= or |last%s="):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(SEMICOLON_SPACE)
if args.newversion then -- newversion= is intended for English text, e.g. "quoted in" or "republished as".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add("republished as")
else
add("republished")
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
"Can we [[:Category:Requests for date|date]] this quote?",
year_last
)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = ", "
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = ", "
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
add(":")
elseif args.usenodot and not args.nodot then
add(".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Citations using nocat parameter")
else
insert(tracking_categories, "Quotations using nocat parameter")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Bad value for `args.pagename`: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, termlang:getFullName() .. " terms with quotations")
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Requests for date in " .. argslangobj:getCanonicalName() .. " entries")
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"title", "4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,article,4", true},
{"chapterurl", "titleurl,articleurl", true},
{"trans-chapter", "trans-title,trans-article", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators", true},
{"chapter_series", "title_series,article_series", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume", true},
{"chapter_number", "title_number,article_number", true},
{"chapter_plain", "title_plain,article_plain", true},
{"title", "journal,magazine,newspaper,work,5", true},
{"trans-title", "trans-journal,trans-magazine,trans-newspaper,trans-work", true},
{"tlr", "journal_tlr,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,newspaper_translators,work_tlr,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,magazineurl,newspaperurl,workurl", true},
{"page", "7"},
{"source", "newsagency,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Unrecognized value '%s' for type%s=; possible values are %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Alias spec '%s' should have one colon in it"):format(alias_spec))
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Cannot specify a value |%s=%s as it would be overwritten or ignored"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["newversion"] = true,
["author"] = list_allow_holes,
["2ndauthor"] = true,
["trans-author"] = list_allow_holes,
["authorlink"] = list_allow_holes,
["2ndauthorlink"] = true,
["trans-authorlink"] = list_allow_holes,
["first"] = list_allow_holes,
["2ndfirst"] = true,
["trans-first"] = list_allow_holes,
["last"] = list_allow_holes,
["2ndlast"] = true,
["trans-last"] = list_allow_holes,
["nocat"] = boolean,
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
t = true,
translation = alias_of_t,
gloss = alias_of_t,
lb = true,
brackets = boolean,
-- original quote params
origtext = true,
origtr = true,
origts = true,
orignorm = true,
origsc = script,
orignormsc = script,
origsubst = true,
origlb = true,
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= should begin with a language code prefix")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= should begin with a language code prefix")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Cannot specify %s= without origtext="):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = "<dl><dd>" .. format_usex(usex_data) .. "</dd></dl>"
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, '<div class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, nil, other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args))
insert(parts, "</div>")
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
6o2boijssnzfvdyknbvpnnbbo2zzu5x
Şablon:quote-av
10
1358482
6328724
2026-08-10T21:30:24Z
Wikihez
7344
[[:en:Template:quote-av]] hat kopîkirin ([[Bikarhêner:Wikihez/skrîpt/js/kopi-enWikt.js|kopi-enWikt.js]])
6328724
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t
| volume_prefix = season
| number_prefix = episode
| chapter_plain = {{#if:{{{track|}}}|track {{{track|}}}{{#if:{{{time|}}}{{{at|}}}|, }}
}}{{#if:{{{time|}}}
| {{{time}}} from the start{{#if:{{{at|}}}
|, {{{at}}}
}}
| {{#if:{{{at|}}}
| {{{at}}}
}}
}}
| alias =
author: writer,writers;
chapter: episode;
chapterurl: episodeurl;
trans-chapter: trans-episode;
chapter_series: episode_series;
chapter_seriesvolume: episode_seriesvolume;
chapter_number: episode_number;
chapter_plain: episode_plain;
volume: season;
volumes: seasons;
volume_plain: season_plain;
volumeurl: seasonurl;
platform: network;
| ignore = track,time,at
}}</includeonly><!--
--><noinclude>{{quote-av|en|episode=[[w:Lisa the Iconoclast|Lisa the Iconoclast]]|title=[[w:The Simpsons|The Simpsons]]|season=7|number=16|writer=[[w:David X. Cohen|David X. Cohen]]|date=18 February 1996|note=production code 3F13|passage=''Mrs. Krabappel:'' "[[embiggen|Embiggens]]"? I never heard that word before moving to Springfield. / ''Ms. Hoover:'' I don't know why; it's a perfectly '''cromulent''' word. / [...] / ''Principal Skinner:'' He's embiggened that role with his '''cromulent''' performance.}}<!--
-->{{documentation}}</noinclude>
5o1f5b3yqc0ngk21sdefsxofc7h9wkq
6328730
6328724
2026-08-10T21:59:45Z
Wikihez
7344
6328730
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t
| volume_prefix = sezon
| number_prefix = xelek
| chapter_plain = {{#if:{{{track|}}}|traka {{{track|}}}{{#if:{{{time|}}}{{{at|}}}|, }}
}}{{#if:{{{time|}}}
| {{{time}}} ji destpêkê ve{{#if:{{{at|}}}
|, {{{at}}}
}}
| {{#if:{{{at|}}}
| {{{at}}}
}}
}}
| alias =
author: writer,writers;
chapter: episode,xelek;
chapterurl: episodeurl,urlya-xelekê;
trans-chapter: trans-episode,tercimeya-xelekê;
chapter_series: episode_series,seriya-xelekê;
chapter_seriesvolume: episode_seriesvolume,cildê-seriya-xelekê;
chapter_number: episode_number,hejmara-xelekê;
chapter_plain: episode_plain,xelek-sade;
volume: season,sezon;
volumes: seasons,sezonên;
volume_plain: season_plain,sezon-sade;
volumeurl: seasonurl,urlya-sezonê;
platform: network;
| ignore = track,time,at
}}</includeonly><!--
--><noinclude>{{quote-av|en|episode=[[w:Lisa the Iconoclast|Lisa the Iconoclast]]|title=[[w:The Simpsons|The Simpsons]]|season=7|number=16|writer=[[w:David X. Cohen|David X. Cohen]]|date=18 February 1996|note=production code 3F13|passage=''Mrs. Krabappel:'' "[[embiggen|Embiggens]]"? I never heard that word before moving to Springfield. / ''Ms. Hoover:'' I don't know why; it's a perfectly '''cromulent''' word. / [...] / ''Principal Skinner:'' He's embiggened that role with his '''cromulent''' performance.}}<!--
-->{{documentation}}</noinclude>
kv9bf6kf6es9cc6x9qoufsktuklhyf1
6328749
6328730
2026-08-10T23:18:56Z
Wikihez
7344
6328749
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t
| volume_prefix = sezon
| number_prefix = xelek
| chapter_plain = {{#if:{{{track|{{{trak|}}}}}}|traka {{{track|{{{trak|}}}}}}{{#if:{{{time|{{{dem|}}}}}}{{{at|{{{gav|}}}}}}|, }}
}}{{#if:{{{time|{{{dem|}}}}}}
| {{{time|{{{dem|}}}}}} ji destpêkê ve{{#if:{{{at|{{{gav|}}}}}}
|, {{{at|{{{gav|}}}}}}
}}
| {{#if:{{{at|{{{gav|}}}}}}
| {{{at|{{{gav|}}}}}}
}}
}}
| alias =
author: writer,writers;
chapter: episode,xelek;
chapterurl: episodeurl,urlya-xelekê;
trans-chapter: trans-episode,tercimeya-xelek;
chapter_series: episode_series,seriya-xelekê;
chapter_seriesvolume: episode_seriesvolume,cildê-seriya-xelekê;
chapter_number: episode_number,hejmara-xelekê;
chapter_plain: episode_plain,xelek-sade;
volume: season,sezon;
volumes: seasons,sezonên;
volume_plain: season_plain,sezon-sade;
volumeurl: seasonurl,urlya-sezonê;
platform: network;
| ignore = track,trak,time,dem,at,gav
}}</includeonly><!--
--><noinclude>{{quote-av|en|episode=[[w:Lisa the Iconoclast|Lisa the Iconoclast]]|title=[[w:The Simpsons|The Simpsons]]|season=7|number=16|writer=[[w:David X. Cohen|David X. Cohen]]|date=18 February 1996|note=production code 3F13|passage=''Mrs. Krabappel:'' "[[embiggen|Embiggens]]"? I never heard that word before moving to Springfield. / ''Ms. Hoover:'' I don't know why; it's a perfectly '''cromulent''' word. / [...] / ''Principal Skinner:'' He's embiggened that role with his '''cromulent''' performance.}}<!--
-->{{documentation}}</noinclude>
9qld4pjf1k5yrt5375emnv3yiktsxcw
Şablon:quote-av/belge
10
1358483
6328725
2026-08-10T21:30:25Z
Wikihez
7344
[[:en:Template:quote-av/documentation]] hat kopîkirin ([[Bikarhêner:Wikihez/skrîpt/js/kopi-enWikt.js|kopi-enWikt.js]])
6328725
wikitext
text/x-wiki
{{documentation subpage}}
{{uses lua|Module:quote}}
===Usage===
This template can be used in a dictionary entry to provide a quotation from an audio or video recording, including a film or a radio or television program.
===Sample templates===
; Most basic parameters for English quotations
<syntaxhighlight lang="wikitext" style="overflow:auto">
#* {{quote-av|1=|year=|author=|actor=|role=|title=|season=|number=|time=|text=}}
</syntaxhighlight>
; Most basic parameters for non-English quotations
<syntaxhighlight lang="wikitext" style="overflow:auto">
#* {{quote-av|1=|year=|author=|actor=|role=|title=|season=|number=|time=|text=|t=}}
</syntaxhighlight>
; Commonly used parameters
<syntaxhighlight lang="wikitext" style="overflow:auto">
#* {{quote-av|1=|author=|authorlink=|actor=|role=|episode=|title=|url=|archiveurl=|archivedate=|season=|number=|writer=|location=|publisher=|year=|isbn=|oclc=|time=|text=|t=|tr=}}
</syntaxhighlight>
; All available parameters
<syntaxhighlight lang="wikitext" style="overflow:auto">
#* {{quote-av|1=|author=|authorlink=|writer=|writers=|director=|directors=|actor=|role=|episode=|trans-episode=|title=|trans-title=|url=|archiveurl=|archivedate=|format=|medium=|worklang=|season=|number=|network=|location=|publisher=|date=|month=|year=|year_published=|accessdate=|isbn=|oclc=|id=|time=|at=|text=|passage=|t=|translation=|lit=|tr=|transliteration=|footer=|brackets=|subst=}}
</syntaxhighlight>
The following example:
: <code><nowiki>{{quote-av|en|writer={{w|Cameron Crowe}}|actor={{w|Jay Mohr}}|role=Bob Sugar|title={{w|Jerry Maguire}}|location=Culver City, Calif.|publisher={{w|TriStar Pictures}}; distributed by [[w:Sony Pictures Home Entertainment|Columbia TriStar Home Video]]|year=1996|year_published=1997|isbn=978-0-8001-4174-5|text=It's also my job to take care of the '''skanks''' on the road that you bang.}}</nowiki></code>
produces this:
: {{quote-av|en|writer={{w|Cameron Crowe}}|actor={{w|Jay Mohr}}|role=Bob Sugar|title={{w|Jerry Maguire}}|location=Culver City, Calif.|publisher={{w|TriStar Pictures}}; distributed by [[w:Sony Pictures Home Entertainment|Columbia TriStar Home Video]]|year=1996|year_published=1997|isbn=978-0-8001-4174-5|text=It's also my job to take care of the '''skanks''' on the road that you bang.}}
As there are no specific parameters for quoting multiple lines of a conversation, it is suggested that these be written in the following form, using <code>/</code> as a line separator:
: <code><nowiki>|text=role A (actor A): first line / role B (actor B): second line...</nowiki></code>
===Parameters===
All parameters are optional except those marked "Mandatory", and may contain inline interwikis or external links as needed.
{| class="wikitable"
!Parameter
!Remarks
|- style="vertical-align:top;"
| style="text-align:center;" | <code>1</code>
| A comma-separated list of language codes indicating the language(s) of the quoted text; for a list of the codes, see [[Wiktionary:List of languages]]. If the language is other than English, the template will indicate this fact by displaying "(in [''language''])" (for one language), or "(in [''language''] and [''language''])" (for two languages), or "(in [''language''], [''language''] ... and [''language''])" (for three or more languages). The entry page will also be added to a category in the form "Category:[''Language''] terms with quotations" for the first listed language (unless <code>termlang</code> is specified, in which case that language is used for the category, or <code>nocat</code> is specified, in which case the page will not be added to any category). The first listed language also determines the font to use and the appropriate transliteration to display, if the text is in a non-Latin script.
Use {{para|worklang}} to specify the language(s) that the overall recording is in: see below.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>author</code> and <code>authorlink</code>, or <code>writer</code> or <code>writers</code>
| The author or writer(s) of the episode or program quoted. The parameter {{para|authorlink}} can be used to link to an [[w:|English Wikipedia]] article about the author.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>director</code> or <code>directors</code>
| The director(s) of the episode or program quoted.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>actor</code>
| The actor quoted.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>role</code> or <code>roles</code> or <code>speaker</code>
| The role played by the actor; or, the person (in a non-acting role) speaking.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>episode</code>
| The title of the episode quoted. If specifying an episode number only, use <code>number</code>.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>trans-episode</code>
| If the title of the episode is not in English, this parameter can be used to provide an English translation of the title.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>title</code>
| '''Mandatory''': the title of the recording.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>trans-title</code>
| If the title of the recording is not in English, this parameter can be used to provide an English translation of the title.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>url</code>
| The [[w:Universal Resource Locator|URL]] or web address of the recording. ''Do not link to any webpage that has content in breach of [[w:copyright|copyright]]''.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>archiveurl</code> and <code>archivedate</code><br />or<br /><code>accessdate</code>
| Use <code>archiveurl</code> and <code>archivedate</code> (which must be used together) to indicate the URL or web address of a webpage on a website such as the [https://archive.org Internet Archive] or [https://perma.cc Perma.cc] at which the webpage has been archived, and the date on which the webpage was archived.
Alternatively, if the webpage cannot be archived, use <code>accessdate</code> to indicate when its URL was accessed.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>format</code>
| The format of the recording, for example, "<kbd>Betamax</kbd>" or "<kbd>VHS</kbd>" (which are videotape formats).
|- style="vertical-align:top;"
| style="text-align:center;" | <code>medium</code>
| The medium of the recording, for example, "<kbd>Blu-ray</kbd>", "<kbd>CD</kbd>", "<kbd>DVD</kbd>", "<kbd>motion picture</kbd>", "<kbd>podcast</kbd>", "<kbd>television production</kbd>" or "<kbd>videotape</kbd>".
|- style="vertical-align:top;"
| style="text-align:center;" | <code>season</code> and <code>number</code>
| The [[w:television program#Seasons/series|season or series]] number and episode number of the episode of the program quoted. For example, if quoting from season 3, episode 1, type "<kbd>season=3</kbd> and "<kbd>number=1</kbd>". Use <code>episode</code> to specify the name of the episode.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>network</code>
| The {{w|television network}} or {{w|radio network}} on which the recording is broadcast.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>location</code>
| The location(s) where the recording was published. If more than one location is stated, separate the locations with semicolons, like this: "<kbd>London; New York, N.Y.</kbd>".
|- style="vertical-align:top;"
| style="text-align:center;" | <code>publisher</code>
| The name of one or more publishers of the recording. If more than one publisher is stated, separate the names with semicolons.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>date</code><br />or<br /><code>year</code> (and <code>month</code>)
| '''Mandatory''': the date, or year (and month), that the recording was published. Use either <code>date</code>, or <code>year</code> (and <code>month</code>), not both.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>year_published</code>
| If you use <code>date</code> or <code>year</code> to indicate when the recording was originally released (for example, in cinemas), <code>year_published</code> can be used to indicate a subsequent publication (for example, on DVD).
|- style="vertical-align:top;"
| style="text-align:center;" | <code>isbn</code>, <code>oclc</code> or <code>id</code>
| The [[w:International Standard Book Number|International Standard Book Number]] (ISBN) or [[w:OCLC|Online Computer Library Center]] (OCLC) number (which can be looked up at the [http://www.worldcat.org WorldCat] website) of the recording.
Use <code>id</code> for an identifier other than the ones listed above.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>time</code>
| The time in hours, minutes and seconds from the start of the recording at which the quoted text occurs. For example, if the quoted text appears 1 hour, 30 minutes and 6 seconds into the recording, type "<kbd>time=1:30:06</kbd>".
|- style="vertical-align:top;"
| style="text-align:center;" | <code>at</code>
| Use this parameter to identify where in the recording the quoted text occurs other than by specifying the time from the start of the recording. For example, the parameter can be used to indicate that the text occurs in a particular act and scene of a play.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>text</code> or <code>passage</code>
| The portion of the recording being quoted. Highlight the term defined in bold in the quoted text like this: "<kbd><nowiki>'''Thalia'''</nowiki></kbd>".
|- style="vertical-align:top;"
| style="text-align:center;" | <code>worklang</code>
| A comma-separated list of language codes indicating the language(s) that the overall recording is written in, if different from the quoted text; for a list of the codes, see [[Wiktionary:List of languages]].
|- style="vertical-align:top;"
| style="text-align:center;" | <code>termlang</code>
| A language code indicating the language of the term being illustrated, if different from the quoted text; for a list of the codes, see [[Wiktionary:List of languages]]. If specified, this language is the one used when adding the page to a category of the form "Category:[''Language''] terms with quotations"; otherwise, the first listed language specified using <code>1</code> is used. Only specify this parameter if the language of the quotation is different from the term's language, e.g. a Middle English quotation used to illustrate a modern English term or an English definition of a Vietnamese term in a Vietnamese-English dictionary.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>nocat</code>
| Use <kbd>nocat=y</kbd> or <kbd>nocat=1</kbd> or <kbd>nocat=on</kbd> to suppress adding the page to a category of the form "Category:[''Language''] terms with quotations". This should not normally be done.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>brackets</code>
| Use "<kbd>brackets=on</kbd>" to surround a quotation with [[bracket]]s. This indicates that the quotation either contains a mere mention of a term (for example, "some people find the word '''''manoeuvre''''' hard to spell") rather than an actual use of it (for example, "we need to '''manoeuvre''' carefully to avoid causing upset"), or does not provide an actual instance of a term but provides information about related terms.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>t</code> or <code>translation</code>
| If the quoted text is not in English, this parameter can be used to provide an English [[translation]] of it.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>lit</code>
| If the quoted text is not in English and the translation supplied using <code>t</code> or <code>translation</code> is idiomatic, this parameter can be used to provide a [[literal]] English [[translation]].
|- style="vertical-align:top;"
| style="text-align:center;" | <code>footer</code>
| This parameter can be used to specify arbitrary text to insert in a separate line at the bottom, to specify a comment, footnote, etc.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>tr</code> or <code>transliteration</code>
| If the quoted text uses a different {{w|writing system}} from the {{w|Latin alphabet}} (the usual alphabet used in English), this parameter can be used to provide a [[transliteration]] of it into the Latin alphabet. Note that many languages provide an automatic transliteration if this argument is not specified.
|- style="vertical-align:top;"
| style="text-align:center;" | <code>subst</code>
| Phonetic substitutions to be applied to handle irregular transliterations in certain languages with a non-Latin writing system and automatic transliteration (e.g. Russian and Yiddish). If specified, should be one or more substitution expressions separated by commas, where each substitution expression is of the form <code>FROM//TO</code> (<code>FROM/TO</code> is also accepted), where <code>FROM</code> specifies the source text in the source script (e.g. Cyrillic or Hebrew) and <code>TO</code> is the corresponding replacement text, also in the source script. The intent is to respell irregularly-pronounced words phonetically prior to transliteration, so that the transliteration reflects the pronunciation rather than the spelling. The substitutions are applied in order. Note that Lua patterns can be used in <code>FROM</code> and <code>TO</code> in lieu of literal text; see [[WT:LUA]]. See also {{temp|ux}} for an example of using <code>subst</code> (the usage is identical to that template).
|}
===Examples===
* '''Wikitext''': {{temp|quote-av|2=en|3=writer=<nowiki>{{w|Julian Fellowes}}</nowiki>|4=title=<nowiki>{{w|Downton Abbey}}</nowiki>|5=season=<nowiki>[[w:Downton Abbey (series 2)|2]]</nowiki>|6=number=1|7=year=2011|8=time=26:03|9=text=<nowiki>Did I tell you I've been given a '''colonelcy''' in the North Riding Volunteers?</nowiki>}}
* '''Result''':
** {{quote-av|en|writer={{w|Julian Fellowes}}|title={{w|Downton Abbey}}|season=[[w:Downton Abbey (series 2)|2]]|number=1|year=2011|time=26:03|text=Did I tell you I've been given a '''colonelcy''' in the North Riding Volunteers?}}
===TemplateData===
{{TemplateData header}}
<templatedata>
{
"description": "This template can be used in a dictionary entry to provide a quotation from an audio or video recording, including a film or a radio or television program.",
"params": {
"1": {
"label": "Language",
"description": "A comma-separated list of language codes indicating the language(s) of the quoted text.",
"example": "en",
"type": "string",
"required": true,
"suggested": true
},
"title": {
"label": "Title",
"description": "The title of the recording, film etc.",
"type": "string",
"example": "Citizen Kane",
"required": true
},
"year": {
"label": "Year of release",
"description": "The year that the recording was published. Use either \"date\" or \"year\", not both.",
"type": "number",
"example": "1941",
"suggested": true
},
"date": {
"label": "Date of release",
"description": "Use either \"year\" or \"date\", not both.",
"type": "string",
"example": "September 5 1941",
"suggested": true
},
"author": {
"label": "Writer (screenplay)",
"description": "The author or writer(s) of the film, episode or program quoted. Separate multiple names with semicolons.",
"type": "string",
"aliases": ["writer", "writers"],
"example": "Herman J. Mankiewicz; Orson Welles",
"suggested": true
},
"authorlink": {
"label": "Wikipedia author page",
"description": "English Wikipedia article about the author.",
"type": "string",
"example": "Herman J. Mankiewicz",
"suggested": false
},
"director": {
"label": "Director",
"description": "The director(s) of the film, episode or program quoted. Separate multiple names with semicolons.",
"type": "string",
"aliases": ["directors"],
"example": "Orson Welles"
},
"actor": {
"label": "Actor (speaker)",
"description": "The actor or speaker quoted.",
"type": "string",
"example": "Joseph Cotten"
},
"role": {
"label": "Role",
"description": "The role played by the actor.",
"type": "string",
"example": "Jedediah Leland"
},
"publisher": {
"label": "Publisher",
"description": "The name of one or more publishers of the recording. If more than one publisher is stated, separate the names with semicolons.",
"type": "string",
"example": "RKO Radio Pictures"
},
"medium": {
"label": "Recording medium",
"description": "The medium of the recording.",
"type": "string",
"example": "\"motion picture\", \"television production\", \"podcast\", \"DVD\", \"Blu-ray\", \"CD\" or \"videotape\""
},
"time": {
"label": "Timecode",
"description": "The time in hours, minutes and seconds from the start of the recording at which the quoted text occurs (HH:MM:SS).",
"type": "string",
"example": "1:30:06"
},
"at": {
"label": "Context",
"description": "Use this parameter to identify where in the recording the quoted text occurs other than by specifying the time from the start of the recording. For example, the parameter can be used to indicate that the text occurs in a particular act and scene of a play.",
"type": "string",
"example": "act V, scene iii"
},
"network": {
"label": "Network",
"description": "The television network or radio network on which the recording is broadcast.",
"type": "string",
"example": "20th Century Fox Television"
},
"season": {
"label": "Season number (series)",
"description": "The season number of the episode of the program quoted.",
"type": "number",
"example": "1"
},
"number": {
"label": "Episode number (series)",
"description": "The number of the episode of the program quoted.",
"type": "number",
"example": "10"
},
"episode": {
"label": "Episode title (series)",
"type": "string",
"description": "The title of the episode quoted. If specifying an episode number only, use \"number\".",
"example": "Homer's Night Out"
},
"text": {
"label": "Quoted line",
"description": "The portion of the recording being quoted. Highlight the term defined in bold. As there are no specific parameters for quoting multiple lines of a conversation, it is suggested that these be written using \"/\" as a line separator.",
"aliases": ["passage"],
"type": "content",
"required": true,
"example": "Bernstein, am I a '''stuffed shirt'''? Am I a horse-faced hypocrite? Am I a New England school marm?"
},
"translation": {
"label": "Translation",
"description": "If the quoted text is not in English, this parameter can be used to provide an English translation of it.",
"aliases": ["t"],
"type": "content"
},
"url": {
"label": "URL",
"description": "The URL of the recording. Do not link to any webpage that has content in breach of copyright.",
"type": "url"
},
"brackets": {
"label": "Brackets",
"description": "Use \"on\" to surround a quotation with brackets. This indicates that the quotation contains a mere mention of a term or does not provide an actual instance of a term but provides information about related terms.",
"type": "boolean",
"example": "on"
}
},
"maps": {
"citoid": {
"language": "1",
"title": "title",
"date": "date",
"url": "url",
"director": "director",
"distributor": "publisher",
"scriptwriter": "author"
}
},
"paramOrder": [
"1",
"title",
"year",
"date",
"author",
"authorlink",
"actor",
"role",
"time",
"at",
"medium",
"network",
"text",
"translation",
"season",
"number",
"episode",
"publisher",
"url",
"director",
"brackets"
],
"format": "inline"
}
</templatedata>
===See also===
* {{temp|cite-av}} – for citations in reference sections and on talk pages
* <code><nowiki>{{</nowiki>[[w:Template:cite AV media|cite AV media]]<nowiki>}}</nowiki></code> – the corresponding template at the English Wikipedia
{{citation templates}}
<includeonly>
[[Category:Citation templates]]
</includeonly>
80nodkmctuz2nn5fukf77xvkenozm4n