Wîkîferheng
kuwiktionary
https://ku.wiktionary.org/wiki/Destp%C3%AAk
MediaWiki 1.47.0-wmf.15
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
jin
0
2964
6329795
6328312
2026-08-12T22:40:54Z
Wikihez
7344
6329795
wikitext
text/x-wiki
{{bnr-h|jîn|Jîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-jin.wav|Deng|dever=Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-jin.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Collage of famous women (cropped).jpg|thumb|Çend '''jinên''' navdar:<br>
{{w|Sacagawea}}, {{w|Marie Curie}}, {{w|Marilyn Monroe}}, {{w|Mata Hari}},
{{w|Wu Zetian}}, {{w|Jeanne d'Arc}}, {{w|Nefertîtî}}, {{w|Indira Gandhi}}
]]
{{navdêr|ku|z=m}}
# Mirovên [[mê]] (bi taybetî yên [[mezin]]).
#: {{hevmaneyên peyvê|ku|xanim|afret|kuflet|kulfet|pîrek}}
#: {{jornav|ku|mirov}}
#: {{mk|ku|[[jin]]eke [[ciwan]] / [[cehêl]], [[jin]]eke [[navsere]], [[jin]]eke [[pîr]]}}
#: {{mk|ku|Du '''jin''' û sê zelam bûn.}}
#: {{mk|ku|Êdî ne [[keçik]] e, bûye [[jin]]'''.}}
#* {{jêder-pirtûk|ku|jêgirtin=Dîtin ko şer kete nêzûka malan, ew '''jin''' jî bi wan istûnkonan diçine şerî û yariya mêran dikin.|nivîskar=Mele Mehmûdê Bayezîdî|amadekar=Jan Dost|sernav=Adat û Rusûmatnameê Ekradiye|weşanxane=Weşanxaneya Nûbihar|sal=2010|rûpel=46|isbn=9789944360678}}
# Kesa [[zewicî]], kesa [[şû]]kirî, [[hevser]]a [[mêr]]ekî, [[hevjîn]]a [[zelam]]ekî.
#: {{hevmaneyên peyvê|ku|kebanî|kevanî|bermalî|pîrek|kuflet|kulfet|zewce}}
#: {{jornav|ku|hevjîn|hevser|jinûmêr}}
#: {{mk|ku|Ew û '''jina''' xwe hatin.}}
#: {{mk|ku|'''Jina''' wî ne kurd e.}}
#: {{mk|ku|'''Jina''' Azadî keça Şemsedînî ye.}}
#* {{jêder|ku|jêgirtin=Wî kêfxweşî û bextewerî bi '''jina''' xwe re nedîtibû, lê bi awayekî giştî, ew hînî wê bûbû û jiyana xwe wilo pê re derbas dikir.|''[[w:Biyanî|Biyanî]]'', [[w:Albert Camus|Albert Camus]], Weşanên [[w:Nûdem|Nûdem]]}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Şiklê ku we dîtî bêmeal e<br />Meyla we bi qismê '''jin''' mehal e<br />Meyla beşerî beşer divêtin}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|ژن}}
* {{ku-kr|жьн}}
==== Formên alternatîv ====
{{kol3|ku
|{{herwiha|ku|jink}}
|{{herwiha|ku|jinik}}
|{{herwiha|ku|jinkok|w=ji bo jinên nejidil yan zahirî, jinên ku karên xwe nejidil dikin}}
}}
==== Jêrnav ====
{{kol3|ku
|{{g|ku|bîjin}}
|{{g|ku|dayik}}
|{{g|ku|hewî}}
|{{g|ku|pîrejin}}
}}
==== Jê ====
{{kol3|ku|cure=Jê
|jinane
|jinbaz
|jinbazî
|jinik
|jinî
|jinkî
|jinnas
|jinnasî
|jinparêz
|jinparêzî
|jinperist
|jinperistî
|jinperwer
|jinperwerî
|jinûmêr
|jinûmêrî
|jinzan
|jinzanî
}}
==== Etîmolojî ====
Ji {{mîr|ine-pro|ku|*gʷḗn}}, forma çemandî ya {{q|ine-pro|*gʷnéh₂-}}. Hevreha {{hv|ckb|ژن}}, [[kurdiya başûrî]] ''jin'', lekî ''jin, [[jen]]'', goranî/hewramî ''[[jenî]]'', zazakî ''[[cenî]], [[cinî]]'', partî [[𐫋𐫗]] (j'n), belûçî {{g|bal|جن|tr=cen}}, {{hv|fa|زن|tr=zen}}, tacikî [[зан]] (zan), {{hv|pal|𐫉𐫗|tr=zen}}, bextiyariya kevn [[ζινο]] (zino), {{hv|ae|𐬘𐬇𐬥𐬌|tr=jə̄ni, /ceni/}} û [[𐬘𐬀𐬌𐬥𐬌]] (jaini, /ceyni/) û [[𐬘𐬄𐬥𐬌]] (jąni, /ceni/) û [[𐬔𐬆𐬥𐬁]] (gənā) û [[𐬖𐬆𐬥𐬁]] (γənā), {{hv|sa|जनि}} (jáni), {{hv|os|зæнæг|tr=[[zarok]], [[dûndeh]]}}, {{hv|ru|жена́ }} (žená, /jêna/), {{hv|bg|жена́ |tr=žená, /jêna/}}, çekî û slovakî ''[[žena]]'', serbokroatî ''[[жѐна]] / [[žèna]]'', {{hv|pl|żona}}, {{hv|grc|γυνή}} (gunê), {{hv|hy|կին}} (kin), {{hv|sv|kvinna}}, {{hv|no|kone}}, {{hv|da|kvinde}}, {{hv|en|queen|w=[[şabanû]], [[qiralîçe]]}}...
Berovajî baweriya berbelav, ne hevreha peyvên ''[[jîn]], [[jiyan]]'' e.
Hevmaneyên wê ''[[afret]], [[kulfet]]/[[kuflet]], [[hurmet]]'' ji erebî hatine wergirtin û wek li cihê peyva "jin" hatine bikaranîn ji ber ku "jin" peyveke nîv-[[tabû]] ye/bû.
{{veşêre-ser|Çavkanî}}
;{{biçûk|
* {{Chyet}}
* {{Horn}}
* {{Lubotsky}}
* {{MacKenzie}}
* {{Pokorny}}
* {{The Tower of Babel}}
* {{Tsabolov}}
* {{Watkins}}
}}
{{veşêre-bin}}
==== Herwiha binêre ====
{{stûn|
* {{g|ku|mêr}}
* {{g|ku|zelam}}
* {{g|ku|dayik}}
* {{g|ku|keç}}
* {{g|ku|qîz}}
* {{g|ku|xama}}
* {{g|ku|zerî}}
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: jin, afret
* {{Z|sdh}}: jin
* {{Z|lki}}: jin, [[jen]]
* {{Z|hac}}: {{W-|hac|jenî|sc=Latn}}
* {{Z|zza}}: {{W-|zza|cenî}}, [[cinî]]
==== Werger ====
{{werger-ser|mirovên mê (1)}}
* {{Z|ab}}: {{W-|ab|аԥҳәыс}}
* {{Z|aca}}: {{W-|aca|íina}}, {{W-|aca|íineɻu}}
* {{Z|ace}}: {{W-|ace|inong}}
* {{Z|acu}}: {{W-|acu|nuwa}}
* {{Z|ade}}: {{W-|ade|ɛna}}
* {{Z|ady}}: {{W-|ady|бзылъфыгъ}}
* {{Z|aa}}: {{W-|aa|barra}}
* {{Z|af}}: {{W+|af|vrou|m}}
* {{Z|agd}}: {{W-|agd|anaati}}
* {{Z|aif}}: {{W-|aif|wukora}}
* {{Z|agt}}: {{W-|agt|babbay}}, {{W-|agt|babae}}
* {{Z|aht}}: {{W-|aht|ts'akae}}
* {{Z|mmq}}: {{W-|mmq|abi}}
* {{Z|akk}}: {{W-|akk|𒊩|m|tr=sinništu, MUNUS}}
* {{Z|tpx}}: {{W-|tpx|aʔgu}}
* {{Z|akl}}: {{W-|akl|babaye|cuda=babáye}}
* {{Z|akt}}: {{W-|akt|elim}}
* {{Z|miw}}: {{W-|miw|apäki}}
* {{Z|bey}}: {{W-|bey|sakwoto}}
* {{Z|alw}}: {{W-|alw|máncu}}
* {{Z|akz}}: {{W-|akz|tayyi}}
* {{Z|alk}}: {{W-|alk|akan}}, {{W-|alk|kan}}
* {{Z|alh}}: {{W-|alh|girija}}
* {{Z|sq}}: {{W+|sq|grua|m}}, {{W+|sq|femër|m}}
* {{Z|de}}: {{W+|de|Frau|m}}, {{W+|de|Weib|nt}}, {{W+|de|Weibchen|nt}}, {{W+|de|Weibsperson|m}}
*: {{Z|gmw-rfr}}: {{W-|gmw-rfr|Fraa}}
* {{Z|an}}: {{W+|an|muller|m}}
* {{Z|akr}}: {{W-|akr|p̈ira}}
* {{Z|arc}}:
*: {{Z|syc}}: {{W-|syc|ܐܢܬܬܐ|m|tr=ʔantətɑʔ}}
* {{Z|as}}: {{W-|as|মাইকী মানুহ}}
* {{Z|ay}}: {{W-|ay|palla}}
* {{Z|eu}}: {{W+|eu|andre}}, {{W+|eu|emakume}}
* {{Z|ba}}: {{W-|ba|ҡатын}}
* {{Z|bn}}: {{W+|bn|নারী}}, {{W+|bn|মহিলা}}
* Berberî:
*: {{Z|tzm}}: {{W-|tzm|ⵜⴰⵎⵟⵟⵓⵜ|m}}
*: {{Z|shi}}: {{W-|shi|tamɣart|m}}, {{W-|shi|tawtmt|m}}
* {{Z|bi}}: {{W-|bi|woman}}, {{W-|bi|wuman}}
* {{Z|br}}: {{W+|br|maouez|m}}
* {{Z|mbb}}: {{W-|mbb|bahi}}
* {{Z|bg}}: {{W+|bg|жена́|m}}
* {{Z|my}}: {{W+|my|မိန်းမ}}, {{W+|my|အမျိုးသမီး}}
* {{Z|ce}}: {{W-|ce|зуда}}
* {{Z|cs}}: {{W+|cs|žena|m}}
* {{Z|ny}}: {{W-|ny|mkazi}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|女人|tr=neoi5 jan4-2}}, {{W-|yue|女性|tr=neoi5 sing3}}
*: {{Z|dng}}: {{W-|dng|нүжын}}, {{W-|dng|фунү}}
*: {{Z|hak}}: {{W-|hak|女人|tr=ńg-ngìn}}
*: {{Z|cmn}}: {{W+|cmn|婦女|tr=fùnǚ}}, {{W+|cmn|女人|tr=nǚrén}}, {{W+|cmn|女性|tr=nǚxìng}}, {{W+|cmn|女的|tr=nǚ de}}
*: {{Z|cdo}}: {{W-|cdo|女界|tr=nṳ̄-gái}}
*: {{Z|nan}}: {{W+|nan|查某人|tr=cha-bó͘-lâng}}, {{W+|nan|女人|tr=lí-jîn}}, {{W+|nan|女性|tr=lú-sèng, lí-sèng}}
*:: Teochew: {{W+|nan|查某人|tr=za1 bhou2 nang5}}, {{W-|nan|姿娘|tr=ze1 nion5}}
*: {{Z|wuu}}: {{W-|wuu|女人}}, {{W-|wuu|女性}}
* {{Z|cv}}: {{W-|cv|хӗрарӑм}}
* {{Z|gmw-jdt}}: {{W-|gmw-jdt|vrow}}
* {{Z|dv}}: {{W-|dv|އަންހެންމީހާ}}
* {{Z|id}}: {{W+|id|perempuan}}, {{W+|id|wanita}}
* {{Z|ar}}: {{W+|ar|اِمْرَأَة|m}}
*: {{Z|acw}}: {{W-|acw|حُرْمة|m|tr=ḥurma}}
*: {{Z|apc}}: {{W-|apc|مرة|m|tr=mara}}
*: {{Z|arz}}: {{W-|arz|ست|m|tr=sitt}}
*: {{Z|ary}}: {{W-|ary|مراة|m|tr=mrā}}
*: {{Z|ajp}}: {{W-|ajp|مرة|m|tr=mara}}, {{W-|ajp|مرأة|m|tr=marʔa}}, {{W-|ajp|ست|m|tr=sitt}}
* {{Z|hy}}: {{W+|hy|կին}}
* {{Z|ee}}: {{W-|ee|nyɔnu|cuda=nyɔ́nu}}
* {{Z|fa}}: {{W+|fa|زَن|tr=zan}}, {{W+|fa|خانُم|tr=xânom}}, {{W+|fa|خاتون|tr=xatūn}}
* {{Z|fo}}: {{W+|fo|kona|m}}
* {{Z|fj}}: {{W+|fj|marama}}
* {{Z|fi}}: {{W+|fi|nainen}}
* {{Z|fr}}: {{W+|fr|femme|m}}
*: {{Z|frm}}: {{W-|frm|femme|m}}, {{W-|frm|dame|m}}
* {{Z|fy}}: {{W+|fy|frou}}, {{W+|fy|wiif}}
* {{Z|ff}}: {{W-|ff|debbo}}
* {{Z|gd}}: {{W+|gd|bean|m}}, {{W-|gd|boireannach|n}}
* {{Z|gl}}: {{W+|gl|muller}}
* {{Z|gu}}: {{W+|gu|સ્ત્રી}}
* {{Z|gul}}: {{W-|gul|ooman}}
* {{Z|gnn}}: {{W-|gnn|baṯami}}
* {{Z|ka}}: {{W+|ka|ქალი}
* {{Z|gn}}: {{W+|gn|kuña}}
* {{Z|ht}}: {{W-|ht|fanm}}
* {{Z|hss}}: {{W-|hss|teṭ}}
* {{Z|haw}}: {{W-|haw|wahine}}
* {{Z|ha}}: {{W-|ha|mace}}, {{W-|ha|mata}}
* {{Z|xed}}: {{W-|xed|marakw}}
* {{Z|hid}}: {{W-|hid|mia}}
* {{Z|mba}}: {{W-|mba|bahe}}
* {{Z|hi}}: {{W+|hi|महिला|m}}, {{W+|hi|नारी|m}}, {{W+|hi|स्त्री|m}}, {{W+|hi|औरत|m}}, {{W+|hi|जनि|m}}, {{W-|hi|ख़ातून|m}}, {{W-|hi|ज़न|m}}, {{W-|hi|ज़नानी|m}}
* {{Z|nl}}: {{W+|nl|vrouw|m}}
* {{Z|tts}}: {{W-|tts|ญิง}}
* {{Z|szv}}: {{W-|szv|mwaitu}}
* {{Z|he}}: {{W+|he|אישה|m|tr=ishá|cuda=אישה \ אִשָּׁה}}
* {{Z|io}}: {{W+|io|muliero}}, {{W+|io|homino}}
* {{Z|inz}}: {{W-|inz|eneq}}
* {{Z|aig}}: {{W-|aig|uman}}
* {{Z|en}}: {{W+|en|woman}}
* {{Z|izh}}: {{W-|izh|nain}}
* {{Z|ia}}: {{W+|ia|femina}}
* {{Z|iu}}: {{W-|iu|ᐊᕐᓇᖅ}}, {{W-|iu|arnaq}}
* {{Z|ass}}: {{W-|ass|ɑt}}
* {{Z|ill}}: {{W-|ill|babai}}
* {{Z|irk}}: {{W-|irk|/ameeni|m}}
* {{Z|ga}}: {{W+|ga|bean|m}}
* {{Z|isd}}: {{W-|isd|babay|cuda=babáy}}
* {{Z|itv}}: {{W-|itv|babay|cuda=babáy}}
* {{Z|itz}}: {{W-|itz|ixchʼup}}
* {{Z|iwm}}: {{W-|iwm|wik}}
* {{Z|ixl}}: {{W-|ixl|ixoj}}
* {{Z|uiv}}: {{W-|uiv|okɑs}}
* {{Z|ijc}}: {{W-|ijc|eré}}
* {{Z|ja}}: {{W+|ja|女の人|tr=おんなのひと, onna no hito}}, {{W+|ja|女|tr=おんな, onna}}, {{W+|ja|女性|tr=じょせい, josei}}, {{W+|ja|女人|tr=にょにん, nyonin}}
* {{Z|jra}}: {{W-|jra|đah-kơmơi}}
* {{Z|ojv}}: {{W-|ojv|hine}}
* {{Z|jv}}: {{W+|jv|wong wadon}}, {{W+|jv|wedok}}, {{W+|jv|wanita}}
* {{Z|jeb}}: {{W-|jeb|shaya'}}, {{W-|jeb|ku'a'per}}
* {{Z|jhi}}: {{W-|jhi|baboʔ}}
* {{Z|tow}}: {{W-|tow|ˀówa}}
* {{Z|jig}}: {{W-|jig|nayu}}
* {{Z|kl}}: {{W-|kl|arnaq}}
* {{Z|kn}}: {{W+|kn|ನಾರಿ}}, {{W+|kn|ಸ್ತ್ರೀ}}, {{W+|kn|ಹೆಂಗಸು}}
* Keşmîrî: {{Z|ks}}: {{W-|ks|زَنان|m}} {{W-|ks|ज़नान|m}}
* {{Z|kkz}}: {{W-|kkz|gedeni}}
* {{Z|gva}}: {{W-|gva|vavina}}
* {{Z|khs}}: {{W-|khs|kesale}}
* {{Z|csb}}: {{W-|csb|białka|m}}
* {{Z|roa-oca}}: {{W-|roa-oca|dona|m}}
* {{Z|ca}}: {{W+|ca|dona|m}}
* {{Z|chc}}: {{W-|chc|inya}}
* {{Z|nai-kat}}: {{W-|nai-kat|aqakílak}}
* {{Z|ktw}}: {{W-|ktw|tc'ek}}
* {{Z|xaw}}: {{W-|xaw|momoˀo}}
* {{Z|ktx}}: {{W-|ktx|šampï}}
* {{Z|ky}}: {{W+|ky|аял}}
* {{Z|kiy}}: {{W-|kiy|ko}}
* {{Z|kii}}: {{W-|kii|cakwákt}}
* {{Z|ki}}: {{W-|ki|mũtumia|c1}}
* {{Z|kij}}: {{W-|kij|vivila}}
* {{Z|si}}: {{W-|si|ගෑනි}}
* {{Z|kge}}: {{W-|kge|bɑy}}, {{W-|kge|obɑy}}, {{W-|kge|sobɑy}}
* {{Z|bkm}}: {{W-|bkm|wi}}
* {{Z|kvh}}: {{W-|kvh|ata wine}}
* {{Z|koa}}: {{W-|koa|fafni}}
* {{Z|nai-knm}}: {{W-|nai-knm|kihinapxik|cuda=kihínàpxī́k}}
* {{Z|coe}}: {{W-|coe|pãi-o}}, {{W-|coe|'romi-o}}
* {{Z|ko}}: {{W+|ko|여성}}, {{W+|ko|계집}}, {{W+|ko|여자}}, {{W+|ko|녀성}}, {{W+|ko|녀자}}, {{W+|ko|여인}}, {{W+|ko|녀인}}
* {{Z|kw}}: {{W-|kw|benyn}}
* {{Z|bpr}}: {{W-|bpr|libun}}
* {{Z|co}}: {{W+|co|donna|m}}, {{W-|co|ronna|m}}, {{W-|co|lonna|m}}
* {{Z|zko}}: {{W-|zko|alat}}
* {{Z|lou}}: {{W-|lou|fam}}, {{W-|lou|fenm}}
* {{Z|icr}}: {{W-|icr|uman}}
* {{Z|vkp}}: {{W-|vkp|mulɛr}}
* {{Z|mcm}}: {{W-|mcm|muleh}}, {{W-|mcm|mulé}}
* {{Z|cr}}: {{W-|cr|ᐃᐢᑫᐧᐤ}}
* {{Z|mus}}: {{W-|mus|hoktē}}
* {{Z|kxb}}: {{W-|kxb|sì}}
* {{Z|ykn}}: {{W-|ykn|ʔɿ⁵⁵nɯ⁵⁵}}
* {{Z|yku}}: {{W-|yku|zua²¹ma²¹zu²¹}}
* {{Z|qua}}: {{W-|qua|waxˀó}}
* {{Z|qyp}}: {{W-|qyp|squah}}
* {{Z|nee}}: {{W-|nee|thaamwa}}
* {{Z|kue}}: {{W-|kue|ambu}}
* {{Z|kut}}: {{W-|kut|paⱡki}}
* {{Z|qui}}: {{W-|qui|wisatʼsopat|cuda=wisatʼsó·pat}}
* {{Z|kwd}}: {{W-|kwd|geni}}
* {{Z|xwa}}: {{W-|xwa|tay}}
* {{Z|kwe}}: {{W-|kwe|is}}
* {{Z|kmo}}: {{W-|kmo|miːma}}
* {{Z|lbb}}: {{W-|lbb|hane}}
* {{Z|lld}}: {{W-|lld|femena|m}}, {{W-|lld|ëila|m}}
* {{Z|lad}}: {{W-|lad|mujer|m}}
* {{Z|lhu}}: {{W-|lhu|mâ}}
* {{Z|lkt}}: {{W-|lkt|wíŋyaŋ}}
* {{Z|lay}}: {{W-|lay|jɯ̃³³jĩ²¹}}
* {{Z|lmy}}: {{W-|lmy|lawai}}
* {{Z|lev}}: {{W-|lev|manne}}
* {{Z|ljp}}: {{W-|ljp|bɑi}}
* {{Z|alo}}: {{W-|alo|rupae}}
* {{Z|ltg}}: {{W-|ltg|sīvīte|m}}
* {{Z|la}}: {{W+|la|fēmina|m}}, {{W+|la|mulier|m}}
* {{Z|lv}}: {{W+|lv|sieviete|m}}
* {{Z|lvk}}: {{W-|lvk|aira}}
* {{Z|lbx}}: {{W-|lbx|bawe}}
* {{Z|lo}}: {{W+|lo|ຜູ້ຍິງ}}
* {{Z|roa-ole}}: {{W-|roa-ole|muyer}}
* {{Z|roa-leo}}: {{W-|roa-leo|muyer|m}}
* {{Z|lep}}: {{W-|lep|ᰊᰣᰤᰪ}}
* {{Z|lez}}: {{W-|lez|паб}}
* {{Z|ljl}}: {{W-|ljl|fai}}
* {{Z|lil}}: {{W-|lil|s-yáqcaˀ}}, {{W-|lil|s-múɬac}}
* {{Z|lmc}}: {{W-|lmc|uginy}}
* {{Z|ln}}: {{W+|ln|mwasi}}
* {{Z|lij}}: {{W-|lij|donna|m}}
* {{Z|li}}: {{W+|li|vrouw|m}}, {{W-|li|vrommesj|nt}}
* {{Z|lsd}}: {{W-|lsd|בכתא}}
* {{Z|lt}}: {{W+|lt|moteris|m}}
* {{Z|liv}}: {{W-|liv|nai}}
* {{Z|lht}}: {{W-|lht|leqëvine}}
* {{Z|lmo}}: {{W-|lmo|dona|m}}, {{W-|lmo|femna|m}}
* {{Z|los}}: {{W-|los|pihin}}
* {{Z|roa-lor}}: {{W-|roa-lor|fomme}}
* {{Z|uvl}}: {{W-|uvl|héi}}
* {{Z|loj}}: {{W-|loj|pein}}
* {{Z|vnk}}: {{W-|vnk|nene}}
* {{Z|khb}}: {{W-|khb|ᦍᦲᧂ}}
* {{Z|lg}}: {{W-|lg|omukazi|c1}}
* {{Z|lgg}}: {{W-|lgg|oku}}
* {{Z|lb}}: {{W+|lb|Fra|m}}
* {{Z|mkz}}: {{W-|mkz|tufurae}}
* {{Z|mk}}: {{W+|mk|же́на|m}}
* {{Z|mg}}: {{W+|mg|barera}}
* {{Z|sai-mal}}: {{W-|sai-mal|ajente}}
* {{Z|ml}}: {{W+|ml|സ്ത്രീ}}, {{W+|ml|പെണ്ണ്}}, {{W+|ml|വനിത}}, {{W+|ml|മഹിള}}
* {{Z|pqm}}: {{W-|pqm|ehpit}}
* {{Z|ms}}: {{W+|ms|wanita}}
* {{Z|mgq}}: {{W-|mgq|lyantanda}}
* {{Z|mt}}: {{W+|mt|mara}}
* {{Z|gv}}: {{W-|gv|ben|m}}
* {{Z|zmr}}: {{W-|zmr|peku}}
* {{Z|sai-mar}}: {{W-|sai-mar|chiguat}}
* {{Z|mr}}: {{W-|mr|बाइको|m}}, {{W+|mr|स्त्री|m}}
* {{Z|mrt}}: {{W-|mrt|mala}}
* {{Z|mrc}}: {{W-|mrc|sny'ak}}
* {{Z|mrq}}: {{W-|mrq|vehine}}
* {{Z|mqm}}: {{W-|mqm|vehine}}
* {{Z|sai-msk}}: {{W-|sai-msk|ihntá}}
* {{Z|wam}}: {{W-|wam|squàws}}
* {{Z|mat}}: {{W-|mat|xúwi}}
* {{Z|met}}: {{W-|met|hain}}
* {{Z|mcf}}: {{W-|mcf|chido}}
* {{Z|mjk}}: {{W-|mjk|pain}}
* {{Z|mhl}}: {{W-|mhl|emeria}}
* {{Z|mbl}}: {{W-|mbl|ũn}}
* {{Z|mop}}: {{W-|mop|chʼup}}
* {{Z|yua}}: {{W-|yua|koʼolel}}, {{W-|yua|chʼuup}}
* {{Z|ayz}}: {{W-|ayz|fai}}
* {{Z|mzn}}: {{W-|mzn|زنا|tr=zenā}}
* {{Z|mna}}: {{W-|mna|waine}}
* {{Z|gun}}: {{W-|gun|kunha}}
* {{Z|hu}}: {{W+|hu|nő}}, {{W+|hu|asszony}}
* {{Z|mei}}: {{W-|mei|ìddì}}
* {{Z|hna}}: {{W-|hna|wàl}}
* {{Z|hto}}: {{W-|hto|rɯ́-ŋo}}
* {{Z|vmg}}: {{W-|vmg|vavina}}
* {{Z|egy}}: {{W-egy|zt|m|h=z:t*B1}}, {{W-egy|ḥmt|m|h=N41:t-B1}}, {{W-egy|zt-ḥmt|m|h=z:t:N41*t-B1}}
* {{Z|lmw}}: {{W-|lmw|pôtsi}}, {{W-|lmw|p̓ócci}}
* {{Z|mxb}}: {{W-|mxb|ñaha}}
* {{Z|mvi}}: {{W-|mvi|midun}}
* {{Z|crg}}: {{W-|crg|faam}}
* {{Z|mic}}: {{W-|mic|e'pit}}, {{W-|mic|ebit}}
* {{Z|min}}: {{W-|min|padusi}}
* {{Z|mwl}}: {{W-|mwl|mulhier}}
* {{Z|mjg-mgl}}: {{W-|mjg-mgl|[[nine]] [[kun]]}}
* {{Z|buy}}: {{W-|buy|nɔ̀làkán}}
* {{Z|omc}}: {{W-|omc|mecherque}}
* {{Z|xpq}}: {{W-|xpq|sqá}}
* {{Z|mox}}: {{W-|mox|vavine}}
* {{Z|mnd}}: {{W-|mnd|wanzet}}
* {{Z|mn}}: {{W+|mn|эм}}, {{W+|mn|эхнэр}}, {{W-|mn|эмэгтэй хүн}}, {{W+|mn|эмэгтэй}}
* Nahwatlî:
*: Klasîk: {{W-|nci|cihuātl}}
*: {{Z|nhx}}: {{W-|nhx|sihua̱'}}
*: {{Z|ncj}}: {{W-|ncj|sihuatl}}
* {{Z|wkd}}: {{W-|wkd|mafani}}
* {{Z|npl}}: {{W-|npl|tekomare}}
* {{Z|nak}}: {{W-|nak|tavile}}
* {{Z|nss}}: {{W-|nss|pihin}}
* {{Z|naq}}: {{W-|naq|darekhues}}
* {{Z|nab}}: {{W-|nab|txu¹su²}}
* {{Z|gld}}: {{W-|gld|эктэнӣ}}
* {{Z|nnt}}: {{W-|nnt|ochquau}}
* {{Z|nap}}: {{W-|nap|femmena|m}}
* {{Z|xnt}}: {{W-|xnt|squaw}}
* {{Z|ncn}}: {{W-|ncn|pehin}}
* {{Z|nv}}: {{W-|nv|asdzáán}}, {{W-|nv|asdzą́ą́}}
* {{Z|nwr}}: {{W-|nwr|aweta}}
* {{Z|nwa}}: {{W-|nwa|hihi'i}}
* {{Z|nsn}}: {{W-|nsn|kuah}}
* {{Z|yrk}}: {{W-|yrk|не}}
* {{Z|ne}}: {{W+|ne|आइमाई|m}}, {{W+|ne|स्त्री|m}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|kvinne|n|m}}, {{W+|nb|dame|n|m}}
*: {{Z|nn}}: {{W+|nn|kvinne|m}}, {{W+|nn|dame|m}}
* {{Z|ntw}}: {{W-|ntw|ekening}}
* {{Z|onw}}: {{W-|onw|ⲉⲧ̅ⲧ-}}
* {{Z|kcn}}: {{W-|kcn|marya}}
* {{Z|mbr}}: {{W-|mbr|nɨ⁴mat¹}}
* {{Z|nkr}}: {{W-|nkr|hahine}}
* {{Z|paa-nun}}: {{W-|paa-nun|oe}}
* {{Z|nyn}}: {{W-|nyn|omukazi|c1}}
* {{Z|nzd}}: {{W-|nzd|okaar|cuda=okáàr}}
* {{Z|ood}}: {{W-|ood|'oks}}, {{W-|ood|'uwĭ}}
* {{Z|obi}}: {{W-|obi|tsiyuʟ}}
* {{Z|oca}}: {{W-|oca|maami}}
* {{Z|cst}}: {{W-|cst|mukurma}}
* {{Z|css}}: {{W-|css|mucurma}}
* {{Z|oj}}: {{W-|oj|ikwe}}
* {{Z|okn}}: {{W-|okn|女子|tr=をぅなぐ, wunagu, いぃなぐ, yinagu}}
* {{Z|ryu}}: {{W-|ryu|女子|tr=ゐなぐ, winagu}}
* {{Z|pro}}: {{W-|pro|domna}}
* {{Z|oc}}: {{W+|oc|femna|m}}
* {{Z|ong}}: {{W-|ong|moːto}}
* {{Z|one}}: {{W-|one|yakukwé}}
* {{Z|bxe}}: {{W-|bxe|ˀayma}}
* {{Z|onn}}: {{W-|onn|ido}}
* {{Z|ore}}: {{W-|ore|dõbĩ-o}}, {{W-|ore|nomio ago}}
* {{Z|or}}: {{W-|or|ଯୁବା}}, {{W-|or|ସ୍ତ୍ରୀ}}
* {{Z|om}}: {{W-|om|dubarti}}
* {{Z|osa}}: {{W-|osa|wakˀó}}
* {{Z|os}}: {{W-|os|ус}}
* {{Z|ota}}: {{W-|ota|خاتون|tr=hatun}}, {{W-|ota|قادین|tr=qadin}}, {{W-|ota|زن|tr=zen}}, {{W-|ota|عورت|tr=avret}}
* {{Z|uta}}: {{W-|uta|ɔkwɑs}}
* {{Z|sai-oto}}: {{W-|sai-oto|ugua}}, {{W-|sai-oto|ondua}}
* {{Z|ug}}: {{W+|ug|ئايال}}
* {{Z|uz}}: {{W+|uz|ayol}}
* {{Z|pma}}: {{W-|pma|ahin}}
* {{Z|pbb}}: {{W-|pbb|uʔj}}
* {{Z|lgt}}: {{W-|lgt|tawa}}
* {{Z|pwn}}: {{W-|pwn|vavayan}}
* {{Z|pln}}: {{W-|pln|mujé}}
* {{Z|pi}}: {{W-|pi|itthi|m}}
* {{Z|ple}}: {{W-|ple|wai}}
* {{Z|hih}}: {{W-|hih|epiov}}
* {{Z|pbh}}: {{W-|pbh|wïnkïj}}
* {{Z|pnr}}: {{W-|pnr|aid}}
* {{Z|ppn}}: {{W-|ppn|maunu}}
* {{Z|ppu}}: {{W-|ppu|pai}}
* {{Z|pap}}: {{W-|pap|muhé}}, {{W-|pap|muher}}
* {{Z|aap}}: {{W-|aap|pumiɛ}}
* {{Z|pak}}: {{W-|pak|koxoa}}
* {{Z|asa}}: {{W-|asa|mche}}
* {{Z|pab}}: {{W-|pab|ohiro}}
* {{Z|gfk}}: {{W-|gfk|hahin}}
* {{Z|pad}}: {{W-|pad|gamo}}
* {{Z|paw}}: {{W-|paw|capaat}}, {{W-|paw|capat}}
* {{Z|ata}}: {{W-|ata|sema}}
* {{Z|aoc}}: {{W-|aoc|wiɾiʔ}}
* {{Z|pek}}: {{W-|pek|pehin}}
* {{Z|aaq}}: {{W-|aaq|phanem}}
* {{Z|pip}}: {{W-|pip|kpeemun|cuda=kpéemùn}}
* {{Z|ps}}: {{W+|ps|ښځه|m|tr=ṧëża}}
* {{Z|pok}}: {{W-|pok|bóhó-kó}}, {{W-|pok|dõbĩ́ṍ}}, {{W-|pok|dũbĩ'õ}}
* {{Z|pl}}: {{W+|pl|kobieta|m}}, {{W+|pl|żona|m}}, {{W+|pl|kobiecina|m}}, {{W+|pl|baba}}, {{W+|pl|babka|m}}
* {{Z|roa-opt}}: {{W-|roa-opt|moller|m}}
* {{Z|pt}}: {{W+|pt|mulher|m}}
* {{Z|pot}}: {{W-|pot|kwé}}
* {{Z|pim}}: {{W-|pim|krenepo}}
* Prakrîtî:
*: {{Z|pra-sau}}: {{W-|pra-sau|इत्थी}}
* {{Z|pre}}: {{W-|pre|mye}}
* {{Z|prg}}: {{W-|prg|genno}}
* {{Z|pui}}: {{W-|pui|den}}
* Puncabî:
*: Şaxmuxî: {{W-|pa|عورت}}
*: Gurmuxî: {{W+|pa|ਤਰੀਮਤ|m}}, {{W+|pa|ਔਰਤ|m}}, {{W-|pa|ਜ਼ਨਾਨੀ|m}}
* {{Z|pua}}: {{W-|pua|uárhi}}, {{W-|pua|warhi}}
* {{Z|pyu}}: {{W-|pyu|babayan}}
* {{Z|kk}}: {{W-|kk|қатын}}, {{W+|kk|әйел}}
* {{Z|cop}}: {{W-|cop|ⲥϩⲓⲙⲉ}}
* {{Z|rah}}: {{W-|rah|méca}}
* {{Z|lml}}: {{W-|lml|vavine}}
* {{Z|rma}}: {{W-|rma|kuma}}
* {{Z|rai}}: {{W-|rai|tabuan}}
* {{Z|rap}}: {{W-|rap|vahine}}
* {{Z|rar}}: {{W-|rar|va'ine}}
* {{Z|rac}}: {{W-|rac|kuru}}
* {{Z|rel}}: {{W-|rel|arame}}
* {{Z|mnv}}: {{W-|mnv|hahine}}
* {{Z|rgr}}: {{W-|rgr|ináadó}}
* {{Z|res}}: {{W-|res|u-dono}}
* {{Z|rkb}}: {{W-|rkb|wytyk}}
* {{Z|rgn}}: {{W-|rgn|dona}}, {{W-|rgn|dòna|m}}, {{W-|rgn|dóna|m}}
* {{Z|rm}}: {{W-|rm|duonna|m}}, {{W-|rm|femna|m}}
* {{Z|ru}}: {{W+|ru|же́нщина|m}}, {{W+|ru|жена́|m}}, {{W+|ru|ба́ба|m}}
* Samî:
*: {{Z|smn}}: {{W-|smn|nissoon}}
*: {{Z|se}}: {{W-|se|nisu}}
* {{Z|sm}}: {{W-|sm|fafine}}
* {{Z|smq}}: {{W-|smq|sobo}}
* {{Z|skd}}: {{W-|skd|ˀoh·a-}}, {{W-|skd|pócci}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|жена|m}}, {{W-|sh|ба̏ба|m}}
*: Latînî: {{W+|sh|žena|m}}, {{W+|sh|bȁba|m}}
* {{Z|sri}}: {{W-|sri|bã'sá-kó}}, {{W-|sri|dõ'bẽ́-ṍ}}
* {{Z|ssd}}: {{W-|ssd|pino}}
* {{Z|sso}}: {{W-|sso|tamein}}
* {{Z|syl}}: {{W-|syl|ꠛꠦꠐꠤ}}
* {{Z|sco}}: {{W-|sco|wumman}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|жена|m}}, {{W-|sh|ба̏ба|m}}
*: Glagolîtîk: {{W-|cu|ⰶⰵⱀⰰ|m}}
* {{Z|orv}}: {{W-|orv|жена|m}}
* {{Z|sk}}: {{W+|sk|žena|m}}
* {{Z|sl}}: {{W+|sl|ženska|m}}, {{W+|sl|žena|m}}
* {{Z|sob}}: {{W-|sob|mefne}}
* {{Z|cso}}: {{W-|cso|cá²mɨ³}}
* {{Z|so}}: {{W+|so|afo}}, {{W+|so|naag}}
* {{Z|ysg}}: {{W-|ysg|zo²¹ma²¹}}
* {{Z|ses}}: {{W-|ses|woy}}
* {{Z|teu}}: {{W-|teu|gwas-at}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|žeńska|m}}, {{W-|dsb|žona|m}}
*: {{Z|hsb}}: {{W+|hsb|žona|m}}, {{W-|hsb|žónska|m}}
* {{Z|sbh}}: {{W-|sbh|bibiŋ}}
* {{Z|st}}: {{W+|st|mosadi}}
* {{Z|es}}: {{W+|es|mujer|m}}
*: {{Z|osp}}: {{W-|osp|mugier|m}}
* {{Z|szp}}: {{W-|szp|órewo}}
* {{Z|swp}}: {{W-|swp|waihin}}
* {{Z|su}}: {{W+|su|awewe}}, {{W+|su|istri}}, {{W+|su|wanoja}}
* {{Z|suz}}: {{W-|suz|मिश}}
* {{Z|sux}}: {{W-|sux|𒊩|ts=munus}}
* {{Z|sw}}: {{W+|sw|mwanamke}}
* {{Z|sv}}: {{W+|sv|kvinna|g}}
* {{Z|roa-cha}}: {{W-|roa-cha|fanme}}, {{W-|roa-cha|fonme}}, {{W-|roa-cha|fomme}}
* {{Z|shn}}: {{W-|shn|ယိင်း}}
* {{Z|zdj}}: {{W-|zdj|mzaɗe|c1|c2}}
* {{Z|sn}}: {{W-|sn|mukadzi}}
* {{Z|shh}}: {{W-|shh|waipe}}
* {{Z|knv}}: {{W-|knv|kamena}}
* {{Z|tg}}: {{W+|tg|зан}}
* {{Z|tl}}: {{W+|tl|babae}}
* {{Z|ty}}: {{W-|ty|vahine}}
* {{Z|nho}}: {{W-|nho|ffine}}
* {{Z|tbc}}: {{W-|tbc|pein}}
* {{Z|tly}}: {{W-|tly|ژن|tr=žen}}, {{W-|tly|ژن|tr=žen}}
* {{Z|tlr}}: {{W-|tlr|vaivine}}
* {{Z|ta}}: {{W+|ta|பெண்}}
* {{Z|txn}}: {{W-|txn|konar}}
* {{Z|nai-taw}}: {{W-|nai-taw|néăh}}
* {{Z|th}}: {{W+|th|ผู้หญิง}}, {{W+|th|ญิง}}
* {{Z|te}}: {{W+|te|ఆడది}}, {{W+|te|స్త్రీ}}, {{W+|te|మహిళ}}
* {{Z|pah}}: {{W-|pah|kunha}}
* {{Z|stp}}: {{W-|stp|'uví}}
* {{Z|tfr}}: {{W-|tfr|walë}}
* {{Z|tft}}: {{W-|tft|foheka}}
* {{Z|crh}}: {{W-|crh|bike}}, {{W-|crh|qadın}}
* {{Z|tt}}: {{W+|tt|хатын}}
* {{Z|tet}}: {{W-|tet|feto}}
* {{Z|tbj}}: {{W-|tbj|ten}}
* {{Z|tvo}}: {{W-|tvo|fayaa}}
* {{Z|ti}}: {{W-|ti|ሰበይቲ}}, {{W-|ti|ሴት}}
* {{Z|tjm}}: {{W-|tjm|nia}}
* {{Z|nai-tip}}: {{W-|nai-tip|nyech'ak}}
* {{Z|cir}}: {{W-|cir|mwie|cuda=mwîê}}
* {{Z|tr}}: {{W+|tr|kadın}}
* {{Z|tk}}: {{W-|tk|aýaal}}, {{W-|tk|heleý}}, {{W-|tk|zenaan}}
* {{Z|tiy}}: {{W-|tiy|libun}}
* {{Z|ttv}}: {{W-|ttv|pein}}
* {{Z|tiv}}: {{W-|tiv|kwɑse}}
* {{Z|bo}}: {{W-|bo|སྐྱེས་དམན}}, {{W-|bo|བུད་མེད}}, {{W-|bo|ཉག་མོ}}
* {{Z|ocu}}: {{W-|ocu|wuetxu}}
* {{Z|tli}}: {{W-|tli|ša'wát}}, {{W-|tli|shawút}}
* {{Z|mlu}}: {{W-|mlu|kini}}
* {{Z|asu}}: {{W-|asu|kósoa}}, {{W-|asu|hée}}
* {{Z|tkl}}: {{W-|tkl|fafine}}
* {{Z|tpi}}: {{W-|tpi|meri}}
* {{Z|ksd}}: {{W-|ksd|vavina}}
* {{Z|dto}}: {{W-|dto|yàaná}}
* {{Z|to}}: {{W-|to|fefine}}
* {{Z|tqw}}: {{W-|tqw|gwa·n}}
* {{Z|ttu}}: {{W-|ttu|baine}}
* {{Z|tdv}}: {{W-|tdv|afiya}}
* {{Z|tos}}: {{W-|tos|puscāt}}
* {{Z|tlc}}: {{W-|tlc|sinaat}}
* {{Z|bag}}: {{W-|bag|okótó}}
* {{Z|rak}}: {{W-|rak|pihin}}
* {{Z|tmq}}: {{W-|tmq|tamen}}
* {{Z|lcm}}: {{W-|lcm|aina}}
* {{Z|tun}}: {{W-|tun|nuxtci}}
* {{Z|tjg}}: {{W-|tjg|wawe}}
* {{Z|tpn}}: {{W-|tpn|kunhã}}
, {{W+|tr|karı}}
* {{Z|tus}}: {{W-|tus|kanę̀·węˀ}}
* {{Z|tvl}}: {{W-|tvl|fafine}}
* {{Z|tyv}}: {{W-|tyv|херээжен}}, {{W-|tyv|кадай}}, {{W-|tyv|эшпи}}
* {{Z|tue}}: {{W-|tue|baso-'kó}}, {{W-|tue|dũbĩ'ṍ}}
* {{Z|tpw}}: {{W-|tpw|kunhã}}
* {{Z|tzh}}: {{W-|tzh|'anc}}
* {{Z|tzo}}: {{W-|tzo|ants}}
* {{Z|tzj}}: {{W-|tzj|ixoq}}
* {{Z|ubr}}: {{W-|ubr|jever}}
* {{Z|ude}}: {{W-|ude|анта}}
* {{Z|udm}}: {{W-|udm|кышномурт}}
* {{Z|uga}}: {{W-|uga|𐎀𐎘𐎚}}
* {{Z|svb}}: {{W-|svb|tein}}
* {{Z|unm}}: {{W-|unm|xkwe}}
* {{Z|bbn}}: {{W-|bbn|tavine}}
* {{Z|uln}}: {{W-|uln|Frau}}
* {{Z|ura}}: {{W-|ura|eene}}
* {{Z|urt}}: {{W-|urt|tuwei}}
* {{Z|uur}}: {{W-|uur|yarvin}}
* {{Z|ur}}: {{W-|ur|عَوْرَت|m|tr='aurat}}, {{W-|ur|خاتُون|m|tr=xātūn}}, {{W+|ur|زَنانی|m|tr=zanānī}}, {{W-|ur|زَن|m|tr=zan}}
* {{Z|urz}}: {{W-|urz|kunhangwera}}, {{W-|urz|kunha}}
* {{Z|urb}}: {{W-|urb|kunjã}}, {{W-|urb|mirixo}}
* {{Z|duk}}: {{W-|duk|ajau}}
* {{Z|uk}}: {{W+|uk|жі́нка|m}}, {{W-|uk|жона́|m}}, {{W+|uk|ба́ба|m}}
* {{Z|ve}}: {{W-|ve|musadzi}}
* {{Z|vec}}: {{W+|vec|fémena|m}}, {{W+|vec|siora|m}}
* {{Z|vep}}: {{W-|vep|naine}}
* {{Z|vi}}: {{W+|vi|phụ nữ}}, {{W+|vi|đàn bà}}
* {{Z|wiv}}: {{W-|wiv|tavine}}
* {{Z|vo}}: {{W-|vo|jimen}}, {{W+|vo|vom}}
* {{Z|msn}}: {{W-|msn|reqe}}
* {{Z|wab}}: {{W-|wab|pain}}
* {{Z|fad}}: {{W-|fad|as}}
* {{Z|lgl}}: {{W-|lgl|geli}}
* {{Z|wls}}: {{W-|wls|fafine}}
* {{Z|wa}}: {{W+|wa|kimere|m}}, {{W+|wa|feme|m}}
* {{Z|wad}}: {{W-|wad|babin}}
* {{Z|war}}: {{W-|war|babaye|cuda=babáye}}
* {{Z|wrr}}: {{W-|wrr|bangbun}}
* {{Z|gae}}: {{W-|gae|neyawa}}
* {{Z|wrs}}: {{W-|wrs|ungevlirini}}
* {{Z|wbp}}: {{W-|wbp|karnta}}
* {{Z|wrg}}: {{W-|wrg|warrngo}}
* {{Z|wau}}: {{W-|wau|toneju}}
* {{Z|wbl}}: {{W-|wbl|könd}}
* {{Z|oym}}: {{W-|oym|wajwĩ}}, {{W-|oym|waĩwĩ}}
* {{Z|guc}}: {{W-|guc|hiérɨ}}
* {{Z|wed}}: {{W-|wed|wavine}}
* {{Z|cy}}: {{W+|cy|benyw|m}}, {{W+|cy|dynes|m}}
* {{Z|wic}}: {{W-|wic|kaahiik'a}}
* {{Z|mbp}}: {{W-|mbp|mena}}
* {{Z|wym}}: {{W-|wym|fraoj|m}}, {{W-|wym|bōv}}
* {{Z|woc}}: {{W-|woc|veine}}
* {{Z|woe}}: {{W-|woe|faifil}}
* {{Z|wlo}}: {{W-|wlo|bawine}}
* {{Z|wo}}: {{W-|wo|jigéen}}
* {{Z|wro}}: {{W-|wro|wangayinya}}
* {{Z|noa}}: {{W-|noa|ɯɯi}}
* {{Z|wuv}}: {{W-|wuv|pifine}}
* {{Z|kca}}: {{W-|kca|ими}}, {{W-|kca|нє}}, {{W-|kca|нєхуят}}
* {{Z|km}}: {{W+|km|ស្រី|tr=srəy}}, {{W+|km|ឃរណី}}
* {{Z|asn}}: {{W-|asn|kuñỹ}}, {{W-|asn|mirika}}
* {{Z|xh}}: {{W-|xh|umfazi}}
* {{Z|iyx}}: {{W-|iyx|ǹ-khéĕto}}, {{W-|iyx|ǹ-khéĕtu}}
* {{Z|ygr}}: {{W-|ygr|a'}}
* {{Z|ykm}}: {{W-|ykm|tamiŋ}}
* {{Z|ybh}}: {{W-|ybh|mamu}}
* {{Z|yag}}: {{W-|yag|kípa}}
* {{Z|ame}}: {{W-|ame|coyanesha'}}
* {{Z|guu}}: {{W-|guu|suwë}}
* {{Z|yaq}}: {{W-|yaq|hámut}}
* {{Z|yrb}}: {{W-|yrb|aweta}}
* {{Z|ywr}}: {{W-|ywr|jarndu}}
* {{Z|ylg}}: {{W-|ylg|mijowi}}
* {{Z|yey}}: {{W-|yey|kazi}}
* {{Z|yii}}: {{W-|yii|buɲa}}
* {{Z|yi}}: {{W-|yi|פֿרוי|m}}
* {{Z|yee}}: {{W-|yee|narmaŋ}}
* {{Z|yol}}: {{W-|yol|mawen}}
* {{Z|yox}}: {{W-|yox|女子|tr=ふなぐ, funagu, をぅなぐ, wunagu}}
* {{Z|xyy}}: {{W-|xyy|marrai}}
*: {{Z|el}}: {{W+|el|γυναίκα|m}}
*: Kevn: {{W-|grc|γυνή|m}}
* {{Z|yo}}: {{W-|yo|obìnrin}}
* {{Z|ycn}}: {{W-|ycn|inanáru}}
* {{Z|yux}}: {{W-|yux|paj}}
* {{Z|yup}}: {{W-|yup|woréʔpa}}
* {{Z|esu}}: {{W-|esu|arnaq}}
* {{Z|sai-yur}}: {{W-|sai-yur|quitina}}
* {{Z|yui}}: {{W-|yui|baso'kó}}, {{W-|yui|'dṍbĩõ}}
* {{Z|zag}}: {{W-|zag|bago}}
* {{Z|zne}}: {{W-|zne|de}}
* {{Z|zau}}: {{W-|zau|པུམོ}}
* {{Z|zae}}: {{W-|zae|nuila}}
* {{Z|zpq}}: {{W-|zpq|no'ol}}, {{W-|zpq|nool}}
* {{Z|zea}}: {{W-|zea|vrouwe|m}}, {{W-|zea|wuuf|nt}}
* {{Z|za}}: {{W-|za|caeuzyah}}, {{W-|za|dihmeh}}, {{W-|za|dozyah}}
* {{Z|zu}}: {{W+|zu|umfazi|c1|c2}}
* {{Z|khi-kun}}: {{W-|khi-kun|de}}, {{W-|khi-kun|zau}}
* {{Z|nmn}}: {{W-|nmn|tâa qáe}}
{{werger-bin}}
:{{werger çavkanî|en|woman|oldid=75613105|beş=Ev qismê Wergerê}}
{{werger-ser|jina mêrekî}}
* {{Z|ab}}: {{W-|ab|аҳәса}}, {{W-|ab|аԥҳәыс}}
* {{Z|af}}: {{W+|af|vrou}}
* {{Z|akk}}: {{W-|akk|𒁮|m|tr=aššatu}}
* {{Z|sq}}: {{W+|sq|grua|m}}
* {{Z|de}}: {{W+|de|Ehefrau|m}}, {{W+|de|Frau|m}}, {{W+|de|Eheweib|nt}}, {{W+|de|Weib|nt}}, {{W+|de|Gemahlin|m}}, {{W+|de|Gattin|m}}
* {{Z|abs}}: {{W-|abs|maitua}}
* {{Z|am}}: {{W+|am|ሚስት}}
* {{Z|rup}}: {{W-|rup|ãnveastã|m}}, {{W-|rup|sutsãlji}}, {{W-|rup|nicuchirã|m}}
* {{Z|as}}: {{W-|as|ঘৈণী}}, {{W-|as|পত্নী}}
* {{Z|ast}}: {{W+|ast|muyer|m}}, {{W+|ast|esposa|m}}
* {{Z|av}}: {{W-|av|лъади|csecond}}
* {{Z|ain}}: {{W-|ain|マチ|tr=maci}}
* {{Z|az}}: {{W+|az|arvad}}, {{W-|az|zövcə}}, {{W-|az|əyal}}
* {{Z|eu}}: {{W+|eu|emazte}}
* {{Z|ba}}: {{W-|ba|ҡатын}}
* {{Z|bbl}}: {{W-|bbl|ფსტუ}}
* {{Z|be}}: {{W-|be|жо́нка|m}}
* {{Z|bn}}: {{W+|bn|বিবি}}, {{W+|bn|বেগম}}, {{W+|bn|বউ}}, {{W+|bn|আহলিয়া}}, {{W+|bn|আওরত}}, {{W+|bn|জরু}}, {{W+|bn|স্ত্রী}}, {{W+|bn|পত্নী}}
* {{Z|bew}}: {{W-|bew|bini}}
* {{Z|br}}: {{W+|br|gwreg|m}}
* {{Z|bg}}: {{W+|bg|жена́|m}}, {{W+|bg|съпру́га|m}}
* {{Z|my}}: {{W+|my|မယား}}, {{W+|my|ဇနီး}}
* {{Z|bua}}: {{W-|bua|һамган}}
* {{Z|cjm}}: {{W-|cjm|ꨨꨕꨳꨪꩇ|tr=hadi`ip}}
* {{Z|ce}}: {{W-|ce|зуда}}
* {{Z|cs}}: {{W+|cs|manželka|m}}, {{W+|cs|žena|m}}, {{W+|cs|choť|m}}
* {{Z|cic}}: {{W-|cic|imihoo}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|妻子}}, {{W-|yue|老婆}}, {{W-|yue|太太}}
*: {{Z|dng}}: {{W-|dng|чижын}}, {{W-|dng|чи}}, {{W-|dng|пәе}}
*: {{Z|hak}}: {{W-|hak|餔娘|tr=pû-ngiòng}}, {{W-|hak|太太|tr=thai-thai}}, {{W-|hak|老姐|tr=ló-chiá}}
*: {{Z|cmn}}: {{W+|cmn|妻子|tr=qīzi}}, {{W+|cmn|老婆|tr=lǎopo}}, {{W+|cmn|愛人}}, {{W+|cmn|太太}}, {{W+|cmn|內人}}
*: {{Z|nan}}: {{W+|nan|某|tr=bóo}}, {{W+|nan|某囝|tr=bó͘-kiáⁿ}}, {{W+|nan|家後|tr=ke-āu}}, {{W+|nan|牽手|tr=khan-chhiú}}, {{W-|nan|牽的|tr=khan--ê}}, {{W+|nan|太太|tr=thài-thài}}, {{W+|nan|查某人|tr=cha-bó͘-lâng}}
*:: Teochew: {{W+|nan|某|tr=bhou2}}, {{W-|nan|老婆|tr=lao6 pua5}}
* {{Z|ckt}}: {{W-|ckt|ӈэвъэн|tr=ṇėvʺėn}}
* {{Z|dlm}}: {{W-|dlm|mojer|m}}, {{W-|dlm|molier|m}}, {{W-|dlm|mulir|n}}
* {{Z|da}}: {{W+|da|hustru|g}}, {{W+|da|kone|g}}, {{W+|da|frue|g}}
* {{Z|avd}}: {{W-|avd|زینه|tr=zine}}
* {{Z|id}}: {{W+|id|istri}}
* {{Z|ar}}: {{W-|ar|زَوْجَة|m}}, {{W+|ar|اِمْرَأَة|m}}
*: {{Z|arz}}: {{W-|arz|زوجَة|m|tr=zōga}}, {{W-|arz|مرات|m|tr=merāt}}
*: {{Z|acw}}: {{W-|acw|زُوجَة|m|tr=zōja}}
*: {{Z|ajp}}: {{W-|ajp|مرا|m|tr=mara}}, {{W-|ajp|زوجَة|m|tr=zōje}}
* {{Z|hy}}: {{W+|hy|կին}}
* {{Z|myv}}: {{W-|myv|ни}}
* {{Z|eo}}: {{W+|eo|edzino}}
* {{Z|et}}: {{W+|et|naine}}
* {{Z|evn}}: {{W-|evn|аси}}
* {{Z|xfa}}: {{W-|xfa|uxo}}
* {{Z|fa}}: {{W+|fa|زَن|tr=zan}}, {{W+|fa|زُوجِه|tr=zowje}}
* {{Z|fo}}: {{W+|fo|kona|m}}, {{W-|fo|vív|nt}}
* {{Z|fi}}: {{W+|fi|vaimo}}, {{W+|fi|aviovaimo}}
* {{Z|fro}}: {{W-|fro|fame|m}}, {{W-|fro|fam|m}}
* {{Z|fr}}: {{W+|fr|femme|m}}, {{W+|fr|épouse|m}}
* {{Z|fur}}: {{W-|fur|femine|m}}, {{W-|fur|muîr|m}}, {{W-|fur|cristiane|m}}
* {{Z|fy}}: {{W+|fy|wiif}}, {{W+|fy|frou}}
* {{Z|gd}}: {{W-|gd|bean-chèile|m}}, {{W+|gd|bean-phòsda|m}}
* {{Z|gl}}: {{W+|gl|esposa|m}}, {{W+|gl|muller|m}}, {{W-|gl|dona|m}}
* {{Z|got}}: {{W-|got|𐌵𐌴𐌽𐍃|m}}
* {{Z|gu}}: {{W-|gu|પત્ની|m}}
* {{Z|ka}}: {{W-|ka|ცოლი}}
* {{Z|gn}}: {{W-|gn|embireko}}
* {{Z|haw}}: {{W-|haw|wahine}}
* {{Z|ha}}: {{W-|ha|matar aure}}
* {{Z|mba}}: {{W-|mba|asawa}}
* {{Z|hi}}: {{W+|hi|पत्नी|m}}, {{W+|hi|बीवी|m}}, {{W+|hi|गृहणी|m}}, {{W+|hi|भार्या|m}}, {{W+|hi|वल्लभा|m}}, {{W+|hi|वधू|m}}, {{W+|hi|स्त्री|m}}, {{W+|hi|गृहिणी|m}}, {{W+|hi|जाया|m}}, {{W+|hi|जनि|m}}, {{W+|hi|जन|m}}, {{W+|hi|जौजा|m}}, {{W+|hi|जोरू|m}}, {{W+|hi|घरवाली|m}}
* {{Z|mww}}: {{W-|mww|pojniam}}
* {{Z|nl}}: {{W+|nl|vrouw|m}}, {{W+|nl|echtgenote|m}}
* {{Z|he}}: {{W+|he|אִשָּׁה|m|tr=ishá}}, {{W+|he|בַּת זוּג|m|tr=bat zúg}}
* {{Z|io}}: {{W+|io|spozino}}
* {{Z|ang}}: {{W-|ang|wīf|nt}}
* {{Z|en}}: {{W+|en|wife}}
* {{Z|ia}}: {{W-|ia|sponsa}}, {{W-|ia|sposa}}, {{W-|ia|uxor}}
* {{Z|ga}}: {{W+|ga|bean|m}}, {{W-|ga|bean chéile|m}}
*: {{Z|sga}}: {{W-|sga|ben|m}}, {{W-|sga|séitig|m}}
* {{Z|ist}}: {{W-|ist|muier|m}}
* {{Z|it}}: {{W+|it|sposa|m}}, {{W+|it|moglie|m}}
* {{Z|is}}: {{W+|is|eiginkona|m}}, {{W+|is|kona|m}}
* {{Z|ja}}: {{W+|ja|妻|tr=つま, tsuma}}, {{W+|ja|家内|tr=かない, kanai}}, {{W+|ja|ワイフ|tr=waifu}}, {{W+|ja|奥さん|tr=おくさん, okusan}}, {{W+|ja|奥様|tr=おくさま, okusama}}, {{W+|ja|夫人|tr=ふじん, fujin}}, {{W-|ja|ご夫人|tr=ごふじん, go-fujin}}
* {{Z|jv}}: {{W+|jv|rabi}}, {{W-|jv|bojo wadon}}, {{W-|jv|garwa putri}}
* {{Z|kl}}: {{W-|kl|nuliaq}}
* {{Z|kam}}: {{W-|kam|kiveti}}
* {{Z|kn}}: {{W+|kn|ಪತ್ನಿ}}
* {{Z|krc}}: {{W-|krc|юй бийче}}, {{W-|krc|юйдеги}}, {{W-|krc|къатын}}
* {{Z|ca}}: {{W+|ca|dona|m}}, {{W+|ca|muller|m}}
* {{Z|kgp}}: {{W-|kgp|mré nĩ fi}}
* {{Z|ks}}: {{W+|ks|آشَنؠ|tr=āśan'}}, {{W-|ks|آشێنؠ|tr=āśen'}}, {{W+|ks|کۄلَے}}, {{W-|ks|خانہٕ دارێنؠ|tr=xānụdāren'}}, {{W+|ks|رٔنؠ|tr=rạn'}}, {{W-|ks|زَنان}}, {{W+|ks|گَرواجیٚنؠ|tr=garvājen'}}
* {{Z|ky}}: {{W+|ky|аял}}, {{W-|ky|катын}}
* {{Z|ki}}: {{W-|ki|mũka|c1}}, {{W-|ki|mũtumia|c1}}
* {{Z|si}}: {{W-|si|බිරිඳ}}, {{W-|si|භාර්යාව}}, {{W+|si|පවුල}}
* {{Z|ko}}: {{W+|ko|아내}}, {{W+|ko|집사람}}, {{W+|ko|안사람}}, {{W+|ko|안해}}, {{W+|ko|마누라}}, {{W-|ko|와이프}}, {{W+|ko|부인}}
* {{Z|kw}}: {{W-|kw|gwreg}}
* {{Z|kri}}: {{W-|kri|wef}}
* {{Z|ltg}}: {{W-|ltg|sīva|m}}
* {{Z|la}}: {{W+|la|uxor|m}}, {{W-|la|nupta|m}}, {{W+|la|femina|m}}, {{W+|la|mulier|m}}, {{W-|la|marita|m}}, {{W+|la|coniunx|m}}, {{W-|la|matrona}}
* {{Z|lv}}: {{W+|lv|sieva}}, {{W-|lv|dzīvesbiedre|m}}, {{W-|lv|dzīvesbiedrene|m}}
* {{Z|lo}}: {{W-|lo|ເມຍ}}
* {{Z|lzz}}: {{W-|lzz|ჩილი}}
* {{Z|xlc}}: {{W-|xlc|𐊍𐊀𐊅𐊀}}
* {{Z|lt}}: {{W+|lt|pati|m}}, {{W+|lt|žmona|m}}
* {{Z|khb}}: {{W-|khb|ᦵᦙ}}
* {{Z|lg}}: {{W-|lg|mukyala wange}}
* {{Z|mk}}: {{W+|mk|же́на|m}}, {{W-|mk|со́пруга|m}}
* {{Z|mg}}: {{W+|mg|andefimandry}}, {{W+|mg|tokantrano}}
* {{Z|ml}}: {{W+|ml|ഭാര്യ}}, {{W+|ml|പത്നി|m}}
* {{Z|ms}}: {{W+|ms|isteri}}, {{W+|ms|bini}}
* {{Z|mt}}: {{W+|mt|mara|m}}
* {{Z|mnc}}: {{W-|mnc|ᠰᠠᡵᡤᠠᠨ}}
* {{Z|gv}}: {{W-|gv|ben-phoost}}
* {{Z|mi}}: {{W-|mi|hoa wahine}}, {{W+|mi|wahine}}, {{W-|mi|hoa rangatira}}
* {{Z|mr}}: {{W-|mr|नवरी|m}}
* {{Z|xmf}}: {{W-|xmf|ოსური}}, {{W-|xmf|ჩილი}}
* {{Z|egy}}: {{W-egy|ḥmt|m|h=N41:t-B1}}, {{W-egy|ḥbsyt|m|h=H-b-s-i-i-t-S28-B1}}, {{W-egy|snt|m|h=sn-n:t-B1}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|гэргий}}, {{W+|mn|эхнэр}}
* {{Z|nv}}: {{W-|nv|hweʼesdzáán}}
* {{Z|nds}}:
*: {{Z|nds-de}}: {{W-|nds-de|Ehfro|m}}, {{W-|nds-de|Fro|m}}, {{W-|nds-de|Ehfru|m}}, {{W-|nds-de|Fru|m}}
* {{Z|ne}}: {{W-|ne|पत्नी}}
* {{Z|nrf}}: {{W-|nrf|faume|m}}, {{W-|nrf|bouônnefemme|m}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|hustru|n|m}}, {{W+|nb|kone|n|m}}, {{W+|nb|frue|n|m}}
*: {{Z|nn}}: {{W-|nn|hustru|m}}, {{W-|nn|kone|m}}, {{W-|nn|frue|m}}
* {{Z|cst}}: {{W-|cst|háw̄a}}
* {{Z|oj}}: {{W-|oj|niwiidigemaagan}}
* {{Z|oc}}: {{W+|oc|femna|m}}
* {{Z|or}}: {{W-|or|ସ୍ତ୍ରୀ}}
* {{Z|om}}: {{W+|om|niitii}}
* {{Z|os}}: {{W-|os|бинойнаг}}, {{W-|os|ус}}
* {{Z|ug}}: {{W-|ug|خوتۇن}}
* {{Z|uz}}: {{W+|uz|xotin}}
* {{Z|blk}}: {{W-|blk|မာ}}
* {{Z|ps}}: {{W+|ps|ښځه|m|tr=ӽᶕja}}, {{W+|ps|زوجه|m|tr=zawja}}, {{W-|ps|ورتينه|m|tr=wərtina}}
* {{Z|pdt}}: {{W-|pdt|Wief|m}}
* {{Z|pl}}: {{W+|pl|żona|m}}, {{W+|pl|małżonka|m}}
* {{Z|pt}}: {{W+|pt|esposa|m}}, {{W+|pt|mulher|m}}
* {{Z|pa}}: {{W-|pa|ਪਤਨੀ}}
* {{Z|kk}}: {{W+|kk|әйел}}, {{W-|kk|жар}}, {{W-|kk|қатын}}
* {{Z|cop}}:
*: Bohaîrî: {{W-|cop|ⲥϩⲓⲙⲉ|m}}
*: Sahîdî: {{W-|cop|ϩⲓⲙⲉ|m}}
* {{Z|rhg}}: {{W-|rhg|bou}}
* {{Z|rm}}: {{W-|rm|dunna|m}}, {{W-|rm|duonna|m}}, {{W-|rm|cunsorta|m}}, {{W-|rm|duna|m}}, {{W-|rm|donna|m}}
* {{Z|rom}}: {{W-|rom|rromni|m}}
* {{Z|ro}}: {{W+|ro|soție|m}}, {{W+|ro|nevastă|m}}, {{W+|ro|muiere}}
* {{Z|ru}}: {{W+|ru|жена́|m}}, {{W+|ru|супру́га|m}}, {{W+|ru|жёнка|m}}
* {{Z|ksw}}: {{W-|ksw|မါ}}
* {{Z|sa}}: {{W+|sa|पत्नी|m}}, {{W+|sa|भार्या|m}}, {{W+|sa|दयिता|m}}, {{W+|sa|जाया|m}}, {{W+|sa|वल्लभा|m}}
* {{Z|sat}}: {{W-|sat|ᱨᱤᱱᱤᱡ}}, {{W-|sat|ᱮᱨᱚ}}
* {{Z|sc}}: {{W-|sc|mugere|m}}, {{W-|sc|mullei|m}}, {{W-|sc|mulleri|m}}, {{W-|sc|mutzere|m}}, {{W-|sc|muzere|m}}
* {{Z|scn}}: {{W+|scn|mugghieri|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|жѐна|m}}, {{W-|sh|су̏пруга|m}}
*: Latînî: {{W+|sh|žèna|m}}, {{W+|sh|sȕpruga|m}}
* {{Z|sco}}: {{W-|sco|guidwife}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|жена|m}}
*: Glagolîtîk: {{W-|cu|ⰶⰵⱀⰰ|m}}
* {{Z|orv}}: {{W-|orv|жена|m}}
* {{Z|sk}}: {{W+|sk|manželka|m}}, {{W+|sk|žena|m}}
* {{Z|sl}}: {{W+|sl|žéna|m}}, {{W-|sl|soproga|m}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|žeńska|m}}, {{W-|dsb|žona|m}}
*: {{Z|hsb}}: {{W+|hsb|žona|m}}
* {{Z|es}}: {{W+|es|esposa|m}}, {{W+|es|mujer|m}}
* {{Z|su}}: {{W-|su|garwa}}, {{W-|su|bojo}}, {{W+|su|pamajikan}}
* {{Z|sva}}: {{W-|sva|ხეხუ̂}}
* {{Z|sw}}: {{W+|sw|mke}}
* {{Z|sv}}: {{W+|sv|hustru}}, {{W+|sv|maka}}, {{W+|sv|fru}}
* {{Z|tab}}: {{W-|tab|хпиб}}
* {{Z|tg}}: {{W+|tg|зан}}, {{W-|tg|завҷа}}
* {{Z|tl}}: {{W+|tl|esposa}}, {{W-|tl|babaeng asawa}}
* {{Z|tly}}: {{W-|tly|ژن|tr=žen}}
* {{Z|ta}}: {{W+|ta|மனைவி}}, {{W+|ta|பெண்டாட்டி}}
* {{Z|twf}}: {{W-|twf|łȉwéna}}
* {{Z|roa-tar}}: {{W-|roa-tar|mugghìere|m}}
* {{Z|rif}}: {{W-|rif|tamɣart|m}}
* {{Z|tsg}}: {{W-|tsg|asawa}}
* {{Z|blt}}: {{W-|blt|ꪣꪸ}}
* {{Z|th}}: {{W+|th|ภริยา}}, {{W+|th|ภรรยา}}, {{W+|th|เมีย}}
* {{Z|te}}: {{W+|te|పెళ్ళాం}}, {{W+|te|భార్య}}, {{W+|te|ఆలి}}
* {{Z|tt}}: {{W+|tt|хатын}}
* {{Z|tet}}: {{W-|tet|feen}}
* {{Z|ti}}: {{W-|ti|ሰበይቲ}}, {{W-|ti|ብዓልቲ ቤት}}
* {{Z|tr}}: {{W+|tr|karı}}, {{W+|tr|avrat}}
* {{Z|tk}}: {{W+|tk|aýal}}
* {{Z|bo}}: {{W-|bo|སྐྱེ་དམན}}
* {{Z|uga}}: {{W-|uga|𐎀𐎘𐎚}}
* {{Z|ur}}: {{W-|ur|بیوی|m|tr=bīvī}}, {{W-|ur|پَتْنی|m|tr=patnī}}, {{W-|ur|بیگم|tr=begam}}, {{W-|ur|اہلیہ|tr=ahliya}}, {{W-|ur|زوجہ|tr=zoja}}, {{W-|ur|خاتون خانہ|tr=xātūn-e-xāna}}, {{W-|ur|خانم|tr=xānam}}
* {{Z|uk}}: {{W+|uk|дружи́на|m}}, {{W+|uk|жі́нка|m}}, {{W-|uk|супру́га|m}}
* {{Z|vec}}: {{W-|vec|mojer|m}}, {{W-|vec|mojere|m}}
* {{Z|vi}}: {{W+|vi|vợ}}
* {{Z|vo}}: {{W+|vo|jimatan}}
* {{Z|wa}}: {{W+|wa|feme|m}}
* {{Z|cy}}: {{W+|cy|gwraig|m}}, {{W+|cy|gwragedd|m-p}}
* {{Z|wo}}: {{W-|wo|jabar ji}}, {{W-|wo|iyawo}}
* {{Z|km}}: {{W+|km|ប្រពន្ធ}}, {{W+|km|ភរិយា}}, {{W+|km|ឃរណី}}
* {{Z|yi}}: {{W-|yi|ווײַב|nt}}, {{W-|yi|פֿרוי|m}}
* {{Z|ii}}: {{W-|ii|ꀋꃀꀉꑳ}}
* {{Z|yo}}: {{W-|yo|iyawo}}, {{W-|yo|aya}}
* {{Z|el}}: {{W+|el|σύζυγος|m}}, {{W+|el|γυναίκα|m}}, {{W+|el|συμβία|m}}
*: Kevn: {{W-|grc|γαμετή|m}}, {{W-|grc|δάμαρ|m}}, {{W-|grc|ὄαρ|m}}
* {{Z|zea}}: {{W-|zea|vrouwe|m}}, {{W-|zea|wuuf|nt}}
* {{Z|za}}: {{W-|za|baz}}, {{W-|za|yah}}
* {{Z|zu}}: {{W-|zu|umka|cuda=umka-|c1a|c2a}}, {{W+|zu|inkosikazi|c9|c6}}, {{W-|zu|unkosikazi|c1a|c2a}}
{{werger-bin}}
:{{werger çavkanî|en|wife|oldid=75626502|beş=Ev qismê Wergerê}}
505und3yb6hgmrrk5ewgyy6lisfkz2w
kurdî
0
3096
6329665
6329271
2026-08-12T16:41:03Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329665
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|-î}}.
==== Herwiha binêre ====
{{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}}
sm5tlgfq616sj35mekv20b0ueg3pmtf
6329828
6329665
2026-08-12T23:19:58Z
Wikihez
7344
zimanê "kurdî" ne sifet e zimanê bi navê kurdî ye.
6329828
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/}}
#* {{jêder-kovar|ku|nivîskar=Clamence Scalbert-yücel|sernav=Perspektîfek dîrokî ji bo lêkolînên li ser Kurdan: Hevpeyvîn li gel Joyce Blau|kovar=The Journal of Mesopotamian Studies|terciman=Yılmaz Özdil|cild=3|hejmar=1|sal=2018|rûpel=203|url=https://dergipark.org.tr/tr/pub/jms/article/386434|jêgirtin=JB{{j-îzah|Joyce Blau}} : Kursiya zimanê '''kurdî''' di sala 1945an de ji aliyê Roger Lescot (1914-1975( ve hate avakirin. Di sala 1947an de Mîr Kamuran Bedir Xan (1895-1978(bû serokê Kursiyê. Wî heta sala 1970yan serokatiya Kursiya zimanê kurdî kir. Paşî ji sala 1970yan heta dema teqawutbûna xwe ya di sala 2000an de min serokatî kir.}}
#* {{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}}
==== 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|-î}}.
==== Herwiha binêre ====
{{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}}
# 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}}
rdixb9p3bj1sw70qqfrlkuygykrsiet
kurmancî
0
3101
6329820
6329036
2026-08-12T23:08:45Z
Wikihez
7344
6329820
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şanxane=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}}
4a6gkgflbmrmqjemrhh9pj9u09zejss
çûn
0
3143
6329716
6322232
2026-08-12T20:38:54Z
Wikihez
7344
/* Lêker */
6329716
wikitext
text/x-wiki
{{bnr-h|cun|cûn|cün|çun|çûn|çün}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/t͡ʃʰuːn/}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-çûn.wav|dever=Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-çûn.wav|Deng|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çûn|form=negerguhêz|niha=her-er-r|niha2=ç|borî=çû}}
[[Wêne:Elephant_Walking_animated.gif|thumb|Fîlek bi rê ve '''diçe'''/'''tere'''.]]
{{lêker|ku|c=x-ngh}}
# Ji [[der]]ekê [[dûr ketin]], [[cih]]ek [[bi cih hêlan]] / [[bi cih hiştin]], [[dûr]]î derekê bûn.
#: {{hevmane|ku|herîn|rewtin|bi rê ketin}}
#: {{dijmane|ku|hatin}}
#* {{jêder-pirtûk|ku|jêgirtin=Nezer ji mala dewatê der tê û di riya xwe de '''diçe'''.|nivîskar=Têmûrê Xelîl Mûradov|sernav=Nezerê Mêrxas|sal=1937|rûpel=}}
#* {{jêder|ku|jêgirtin=Gor gotina apê min, ew '''terin''' di mêrga Şêx da gihê diçinin.|İkram Oğuz, ''Jîyan bi kurdî xweş e'', '''2022''', ''Weşanên NavKurd'', r.187}}
#* {{jêder|ku|jêgirtin=Jinikê digote xelkê: Ev mêrê min Boẍoçêf e. Berê xwe dide Pêtro û digot-ê: Boẍoçêf, tu '''çûyî''' kû; ez û zarowên xwe tazî û birçî hiştin...|{{w|Ronahî}}, hj.25, '''1944''', Boẍoçef an Petroyê siseyan''}}
# [[hinda|Hinda]] bûn, [[neman]], [[berze bûn]], [[rabûn]].
#* {{jêder-websîte|ku|jêgirtin=Xelk pir kenî bi me tama<br>Genim '''çû''' ewîr û ka ma<br>Têvedan kevirê dama<br>Me derda û wan vexwarî|nivîskar=Mihemedê Cezawîr|url=https://www.xelat.org/welato-2201|sernav=Welato (helbest)|sal=2014}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin='''Çûn''' ji behrê me'rîfet ew hate der<br>[[qetre|Qetre]] jêr werya bi ilham ew qeder}}
* {{jêder|ku|{{Jêgirtin/Feqiyê Teyran}}|jêgirtin=Taziyê uryan im ez<br>Perde '''çû''' ez mame tazî<br>Dil sera mehbûb dixwazî}}
==== Bi alfabeyên din ====
* {{ku-ar|چوون}}
* {{ku-kr|ч'ӧн}}
==== Formên alternatîv ====
* {{g|ku|çûndin}}
* {{g|ku|çûyin}}
* {{g|ku|çûyîn}}
==== Jê ====
{{kol3|ku
| çûn anîn
| çûnanîn
| çûyî
| derçûn
| jê çûn
| ji ber çûn
| ji bîrê çûn
| ji dest çûn
| jihev çûn
| pev çûn
}}
==== Têkildar ====
{{kol3|ku
| bezîn
| gerîn
| livîn
| meşîn
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*ḱey-}}. Guherîna ''*ḱ''-ya [[proto-hindûewropî]] bi /ç/ di zimanên [[hindûîranî]] de diyardeyeke berbelav e, binêrin bo nimûne: ''[[çar]], [[çav]], [[çend]], [[çi]]''...
Hevreha {{hv|ckb|چوون}}, [[kurdiya başûrî]] ''[[çûn]]'', [[şêxbizinî]] ''[[cigin]]'', zazakî ''[[şiyayene]]'', goranî/hewramî ''[[şiyay]]'', osetî [[цӕуын]] (çæwyn), {{hv|fa|شدن|tr=berê /şuden/ bi wateya ''çûn'', niha /şoden/ bi manaya ''bûn, bûn tiştek''}}, tacikî [[шудан]] (şudan), {{hv|pal||şuten|sc=Latn}}, hexamenişî [[𐎠𐏁𐎡𐎹𐎺𐎶]] (š(i)yav-, /şiyev/), peştûyî {{g|ps|شول|tr=şwəl}}, {{hv|ae||ş(ii)aw-|sc=Latn}} (/şyew-/), {{hv|sa|च्य्अवते}} (cyávate: [[ketin]]), {{hv|grc|σεύω}} (seúō: [[dan pey]], li [[pey]] çûn; [[lezîn]]) û [[κῐ́ω]] (kíō: çûn) û [[κῑνέω]] (kīnéō: [[livandin]]), latînî ''[[cieō]]'' ([[livandin]]), albanî ''[[qoj]]'' (bixwîne: /çoy/, [[hişyar]] kirin)... Bêjeka kurdî ketiye ermenî wek {{hv|xcl|չուեմ|w=çûn}} û {{hv|hy|չու|w=rêwîtî}}, {{q|hy|չվել|w=bar kirin, koç kirin}}.
Peyva {{hv|grc|κῑνέω}} (kīnéō: [[livandin]]) wek [[kîne-]] û [[sîne-]] ketiye gelek zimanan û kurdî jî, bo nimûne: ''[[kînetîk]], [[sînema]]''.
;{{biçûk|Çavkanî:
* {{Cheung}}
* {{Chyet}}
* {{Lubotsky}}
* {{Tsabolov}}
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|چوون}}
* {{Z|zza}}: {{W-|zza|şîyayene}}
==== Werger ====
{{werger-ser|dûr ketin}}
* {{Z|de}}: {{W+|de|gehen}}, {{W+|de|fahren}}
* {{Z|az}}: {{W+|az|getmək}}
* {{Z|ba}}: {{W-|ba|барыу}}
* {{Z|br}}: {{W+|br|mont}}, {{W+|br|monet}}
* {{Z|bg}}: {{W+|bg|отивам|n}}
* {{Z|cs}}: {{W+|cs|jít}}
* {{Z|zh}}: {{W+|zh|去|tr=qǜ}}
* {{Z|da}}: {{W+|da|gå}}
* {{Z|ar}}: {{W+|ar|راح|tr=raḧe|cuda=راحَ}}, {{W+|ar|ذهب|tr=ḏehebe}}
* {{Z|eo}}: {{W+|eo|iri}}
* {{Z|fa}}: {{W+|fa|رفتن|tr=reften}}
* {{Z|fi}}: {{W+|fi|mennä}}, {{W+|fi|lähteä}}
* {{Z|vls}}: {{W-|vls|goan}}
* {{Z|fr}}: {{W+|fr|aller}}, {{W+|fr|partir}}
* {{Z|gag}}: {{W-|gag|gitmää}}
* {{Z|roa-gal}}: {{W-|roa-gal|aler}}, {{W-|roa-gal|alae}}
* {{Z|got}}: {{W-|got|𐌲𐌰𐌲𐌲𐌰𐌽|tr=gaggan}}
* {{Z|en}}: {{W+|en|go}}
* {{Z|ga}}: {{W-|ga|dul}}
* {{Z|it}}: {{W+|it|andare}}
* {{Z|ja}}: {{W+|ja|行く|tr=iku}}
* {{Z|krc}}: {{W-|krc|барыргъа}}
* {{Z|ca}}: {{W+|ca|anar}}
* {{Z|ky}}: {{W+|ky|баруу}}
* {{Z|ki}}: {{W-|ki|thie}}
* {{Z|ko}}: {{W+|ko|가다|tr=gada}}
* {{Z|kum}}: {{W-|kum|бармакъ}}
* {{Z|lb}}: {{W+|lb|goen}}
* {{Z|mk}}: {{W-|mk|оди|tr=ódi}}
* {{Z|mi}}: {{W-|mi|haere}}
* {{Z|hu}}: {{W+|hu|megy}}
* {{Z|nrf}}: {{W-|nrf|marchi}}
* {{Z|oc}}: {{W+|oc|anar}}
* {{Z|oia}}: {{W-|oia|mara}}
* {{Z|pt}}: {{W+|pt|ir}}
* {{Z|kk}}: {{W+|kk|бару|tr=baruw}}
* {{Z|ro}}: {{W+|ro|merge}}, se {{W+|ro|duce}}
* {{Z|se}}: {{W-|se|mannat}}, {{W-|se|johtit}}, {{W-|se|fitnat}}
* {{Z|sh}}: {{W+|sh|ići}}, {{W-|sh|ићи}}
* {{Z|sk}}: {{W+|sk|ísť}}
* {{Z|es}}: {{W+|es|ir}}
* {{Z|sv}}: {{W+|sv|gå}}, {{W+|sv|åka}}
* {{Z|zdj}}: {{W-|zdj|hwenɗa}}, {{W-|zdj|henɗa}}
* {{Z|tt}}: {{W-|tt|бару}}
* {{Z|tr}}: {{W+|tr|gitmek}}
* {{Z|tk}}: {{W-|tk|gitmek}}
* {{Z|vi}}: {{W+|vi|đi}}
* {{Z|kjh}}: {{W-|kjh|парарға}}
* {{Z|sah}}: {{W-|sah|бар}}
* {{Z|el}}: {{W+|el|πάω|tr=páo}}, {{W+|el|πηγαίνω|tr=piyéno}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[birêketin]], [[dûrketin]], [[dûr]]bûn, [[royîştin]], [[rewtin]], [[sefer]]kirin
#: {{mk|ku|'''Çûna''' we bixêr be!|Hûn bixêr biçin!|rêz=1}}
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi zaravayên din ====
* {{Z|zza}}: {{W-|zza|şiyayiş}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|gitme}}
{{werger-bin}}
{{bend}}
=== Hoker ===
{{hoker|ku}}
# [[wek|Wek]], [[mîna]], [[şibî]], [[nola]], [[fena]] (li [[pey]] peyvan bi kar tê).
#: {{mk|ku|Mirov '''çûn'''.|Wek mirovan.|rêz=1}}
#* {{bêmînak|ku}}
==== Etîmolojî ====
Têkilî {{q|ku|çawa}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Lêker ===
{{lêker|ckb|sc=Latn}}
# {{ckb-Arab|چوون}}
mn47al93rie26mlxzy1xhh91475o5qn
6329717
6329716
2026-08-12T20:39:10Z
Wikihez
7344
6329717
wikitext
text/x-wiki
{{bnr-h|cun|cûn|cün|çun|çûn|çün}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/t͡ʃʰuːn/}}
* {{deng|ku|LL-Q36368 (kur)-Dildadil-çûn.wav|dever=Amed}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-çûn.wav|Deng|dever=Bidlîs}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|çûn|form=negerguhêz|niha=her-er-r|niha2=ç|borî=çû}}
[[Wêne:Elephant_Walking_animated.gif|thumb|Fîlek bi rê ve '''diçe'''/'''tere'''.]]
{{lêker|ku|c=x-ngh}}
# Ji [[der]]ekê [[dûr ketin]], [[cih]]ek [[bi cih hêlan]] / [[bi cih hiştin]], [[dûr]]î derekê bûn.
#: {{hevmane|ku|herîn|rewtin|bi rê ketin}}
#: {{dijmane|ku|hatin}}
#* {{jêder-pirtûk|ku|jêgirtin=Nezer ji mala dewatê der tê û di riya xwe de '''diçe'''.|nivîskar=Têmûrê Xelîl Mûradov|sernav=Nezerê Mêrxas|sal=1937|rûpel=}}
#* {{jêder|ku|jêgirtin=Gor gotina apê min, ew '''terin''' di mêrga Şêx da gihê diçinin.|İkram Oğuz, ''Jîyan bi kurdî xweş e'', '''2022''', ''Weşanên NavKurd'', r.187}}
#* {{jêder|ku|jêgirtin=Jinikê digote xelkê: Ev mêrê min Boẍoçêf e. Berê xwe dide Pêtro û digot-ê: Boẍoçêf, tu '''çûyî''' kû; ez û zarowên xwe tazî û birçî hiştin...|{{w|Ronahî}}, hj.25, '''1944''', Boẍoçef an Petroyê siseyan''}}
# [[hinda|Hinda]] bûn, [[neman]], [[berze bûn]], [[rabûn]].
#* {{jêder-websîte|ku|jêgirtin=Xelk pir kenî bi me tama<br>Genim '''çû''' ewîr û ka ma<br>Têvedan kevirê dama<br>Me derda û wan vexwarî|nivîskar=Mihemedê Cezawîr|url=https://www.xelat.org/welato-2201|malper=xelat.org|sernav=Welato (helbest)|sal=2014}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin='''Çûn''' ji behrê me'rîfet ew hate der<br>[[qetre|Qetre]] jêr werya bi ilham ew qeder}}
* {{jêder|ku|{{Jêgirtin/Feqiyê Teyran}}|jêgirtin=Taziyê uryan im ez<br>Perde '''çû''' ez mame tazî<br>Dil sera mehbûb dixwazî}}
==== Bi alfabeyên din ====
* {{ku-ar|چوون}}
* {{ku-kr|ч'ӧн}}
==== Formên alternatîv ====
* {{g|ku|çûndin}}
* {{g|ku|çûyin}}
* {{g|ku|çûyîn}}
==== Jê ====
{{kol3|ku
| çûn anîn
| çûnanîn
| çûyî
| derçûn
| jê çûn
| ji ber çûn
| ji bîrê çûn
| ji dest çûn
| jihev çûn
| pev çûn
}}
==== Têkildar ====
{{kol3|ku
| bezîn
| gerîn
| livîn
| meşîn
}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*ḱey-}}. Guherîna ''*ḱ''-ya [[proto-hindûewropî]] bi /ç/ di zimanên [[hindûîranî]] de diyardeyeke berbelav e, binêrin bo nimûne: ''[[çar]], [[çav]], [[çend]], [[çi]]''...
Hevreha {{hv|ckb|چوون}}, [[kurdiya başûrî]] ''[[çûn]]'', [[şêxbizinî]] ''[[cigin]]'', zazakî ''[[şiyayene]]'', goranî/hewramî ''[[şiyay]]'', osetî [[цӕуын]] (çæwyn), {{hv|fa|شدن|tr=berê /şuden/ bi wateya ''çûn'', niha /şoden/ bi manaya ''bûn, bûn tiştek''}}, tacikî [[шудан]] (şudan), {{hv|pal||şuten|sc=Latn}}, hexamenişî [[𐎠𐏁𐎡𐎹𐎺𐎶]] (š(i)yav-, /şiyev/), peştûyî {{g|ps|شول|tr=şwəl}}, {{hv|ae||ş(ii)aw-|sc=Latn}} (/şyew-/), {{hv|sa|च्य्अवते}} (cyávate: [[ketin]]), {{hv|grc|σεύω}} (seúō: [[dan pey]], li [[pey]] çûn; [[lezîn]]) û [[κῐ́ω]] (kíō: çûn) û [[κῑνέω]] (kīnéō: [[livandin]]), latînî ''[[cieō]]'' ([[livandin]]), albanî ''[[qoj]]'' (bixwîne: /çoy/, [[hişyar]] kirin)... Bêjeka kurdî ketiye ermenî wek {{hv|xcl|չուեմ|w=çûn}} û {{hv|hy|չու|w=rêwîtî}}, {{q|hy|չվել|w=bar kirin, koç kirin}}.
Peyva {{hv|grc|κῑνέω}} (kīnéō: [[livandin]]) wek [[kîne-]] û [[sîne-]] ketiye gelek zimanan û kurdî jî, bo nimûne: ''[[kînetîk]], [[sînema]]''.
;{{biçûk|Çavkanî:
* {{Cheung}}
* {{Chyet}}
* {{Lubotsky}}
* {{Tsabolov}}
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|چوون}}
* {{Z|zza}}: {{W-|zza|şîyayene}}
==== Werger ====
{{werger-ser|dûr ketin}}
* {{Z|de}}: {{W+|de|gehen}}, {{W+|de|fahren}}
* {{Z|az}}: {{W+|az|getmək}}
* {{Z|ba}}: {{W-|ba|барыу}}
* {{Z|br}}: {{W+|br|mont}}, {{W+|br|monet}}
* {{Z|bg}}: {{W+|bg|отивам|n}}
* {{Z|cs}}: {{W+|cs|jít}}
* {{Z|zh}}: {{W+|zh|去|tr=qǜ}}
* {{Z|da}}: {{W+|da|gå}}
* {{Z|ar}}: {{W+|ar|راح|tr=raḧe|cuda=راحَ}}, {{W+|ar|ذهب|tr=ḏehebe}}
* {{Z|eo}}: {{W+|eo|iri}}
* {{Z|fa}}: {{W+|fa|رفتن|tr=reften}}
* {{Z|fi}}: {{W+|fi|mennä}}, {{W+|fi|lähteä}}
* {{Z|vls}}: {{W-|vls|goan}}
* {{Z|fr}}: {{W+|fr|aller}}, {{W+|fr|partir}}
* {{Z|gag}}: {{W-|gag|gitmää}}
* {{Z|roa-gal}}: {{W-|roa-gal|aler}}, {{W-|roa-gal|alae}}
* {{Z|got}}: {{W-|got|𐌲𐌰𐌲𐌲𐌰𐌽|tr=gaggan}}
* {{Z|en}}: {{W+|en|go}}
* {{Z|ga}}: {{W-|ga|dul}}
* {{Z|it}}: {{W+|it|andare}}
* {{Z|ja}}: {{W+|ja|行く|tr=iku}}
* {{Z|krc}}: {{W-|krc|барыргъа}}
* {{Z|ca}}: {{W+|ca|anar}}
* {{Z|ky}}: {{W+|ky|баруу}}
* {{Z|ki}}: {{W-|ki|thie}}
* {{Z|ko}}: {{W+|ko|가다|tr=gada}}
* {{Z|kum}}: {{W-|kum|бармакъ}}
* {{Z|lb}}: {{W+|lb|goen}}
* {{Z|mk}}: {{W-|mk|оди|tr=ódi}}
* {{Z|mi}}: {{W-|mi|haere}}
* {{Z|hu}}: {{W+|hu|megy}}
* {{Z|nrf}}: {{W-|nrf|marchi}}
* {{Z|oc}}: {{W+|oc|anar}}
* {{Z|oia}}: {{W-|oia|mara}}
* {{Z|pt}}: {{W+|pt|ir}}
* {{Z|kk}}: {{W+|kk|бару|tr=baruw}}
* {{Z|ro}}: {{W+|ro|merge}}, se {{W+|ro|duce}}
* {{Z|se}}: {{W-|se|mannat}}, {{W-|se|johtit}}, {{W-|se|fitnat}}
* {{Z|sh}}: {{W+|sh|ići}}, {{W-|sh|ићи}}
* {{Z|sk}}: {{W+|sk|ísť}}
* {{Z|es}}: {{W+|es|ir}}
* {{Z|sv}}: {{W+|sv|gå}}, {{W+|sv|åka}}
* {{Z|zdj}}: {{W-|zdj|hwenɗa}}, {{W-|zdj|henɗa}}
* {{Z|tt}}: {{W-|tt|бару}}
* {{Z|tr}}: {{W+|tr|gitmek}}
* {{Z|tk}}: {{W-|tk|gitmek}}
* {{Z|vi}}: {{W+|vi|đi}}
* {{Z|kjh}}: {{W-|kjh|парарға}}
* {{Z|sah}}: {{W-|sah|бар}}
* {{Z|el}}: {{W+|el|πάω|tr=páo}}, {{W+|el|πηγαίνω|tr=piyéno}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[birêketin]], [[dûrketin]], [[dûr]]bûn, [[royîştin]], [[rewtin]], [[sefer]]kirin
#: {{mk|ku|'''Çûna''' we bixêr be!|Hûn bixêr biçin!|rêz=1}}
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi zaravayên din ====
* {{Z|zza}}: {{W-|zza|şiyayiş}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|gitme}}
{{werger-bin}}
{{bend}}
=== Hoker ===
{{hoker|ku}}
# [[wek|Wek]], [[mîna]], [[şibî]], [[nola]], [[fena]] (li [[pey]] peyvan bi kar tê).
#: {{mk|ku|Mirov '''çûn'''.|Wek mirovan.|rêz=1}}
#* {{bêmînak|ku}}
==== Etîmolojî ====
Têkilî {{q|ku|çawa}}.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Lêker ===
{{lêker|ckb|sc=Latn}}
# {{ckb-Arab|چوون}}
hzpp474ai6h0nb6llwbvz2jkhdcs1vn
min
0
3458
6329846
6312354
2026-08-12T23:52:06Z
Wikihez
7344
/* Kurmancî */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329846
wikitext
text/x-wiki
{{bnr-h|mîn|mìn|miñ}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163_(kmr)-Key Mîrza-min.wav|dever=Wan}}
* {{ku-kîte}}
=== Cînav ===
{{ku-zayend|MNY=min|MNP=me}}
{{cînav|ku}}
# ''Forma [[tewandî]] ji [[cînav]]ê'' '''[[ez]]'''.
#: {{mk|ku|Ew '''min''' dinase.}}
#: {{mk|ku|Ev jî hevalê '''min''' e.}}
#: {{mk|ku|Ev pirtûk li nik '''min''' peyda nabe.}}
#: {{mk|ku|Te bihîst ku '''min''' çi got?}}
==== Bi alfabeyên din ====
* {{ku-ar|من}}
* {{ku-kr|мьн}}
==== Formên alternatîv ====
* {{mj|Devkî}} {{g|ku|mi}}
* {{mj|Klasîk}} {{g|ku|sc=Arab|مه|tr=-}} / {{g|ku|sc=Arab|من|tr=-}}
==== Têkildar ====
{{cînav/ku}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*(e)me-n-}}, hevreha avestayî ''mene'', parsî ''mene'', farisî {{g|fa|من|tr=men}}, sanskrîtî ''ma, mam'', yûnaniya kevn {{g|grc|με|tr=me}} / {{g|grc|εμέ|tr=emê}}, îngilîzî {{q|en|me}}, {{q|en|mine}}, {{q|en|my}}, latînî {{q|la|me}}, fransî {{q|fr|me}}, {{q|fr|moi}}, rusî {{q|ru|меня|tr=minya}}... Hêjayî gotinê ye ku nêzîkiya navbera {{q|ku||min}} ya kurdî û lêzimên wê yên hindûewropî li gel {{q|tr||men|tr=ez}} ya zimanên tirkîkî (bi tirkiya stenbolî {{q|tr|ben}}) tenê tiştek tesedifî ye.
*{{ji|ira-pro||-}}:
**{{ae}}: '''mene''' ("min")
**{{peo}}: '''mene''' ("min")
***{{fa}}: '''men''' ("ez; min")
**[[partî]]: '''men''' ("min")
**{{kmr}}: '''min''' ("min")
**[[soranî]]: '''min''' ("ez; min")
**{{zza}}: '''mi''', [[min]]
*{{sa}}: '''ma, mam''' ("min")
*{{el}}: '''me, emê''' ("min")
*{{la}}: '''me''' ("min")
*{{de}}: '''mich''' ("min")
*{{en}}: '''me''' ("min") ...
;{{biçûk|Çavkanî:
* {{Horn|r=222}}
* {{Watkins|p=51}}
* {{Etymonline}}
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|-im|sc=Latn}}, {{W-|ckb|-m|sc=Latn}} ({{q|ckb||min|sc=Latn}} / {{q|ckb|emin|sc=Latn}} yên soranî hevwateyên {{q|ku||ez}} ya kurmancî ye!)
* {{Z|zza}}: {{W-|zza|mi}}, {{W-|zza|min}}
==== Werger ====
{{werger-ser|wek objeya [[yekser]] (bo nimûne: Tu min dibînî.)}}
* {{Z|de}}: {{W|de|mich}}, {{W|de|mein|guman=erê}}
* {{Z|zh}}: {{W|zh|我}}
* {{Z|da}}: {{W|da|mig}}
* {{Z|ar}}: {{W|ar|ـني|tr=-nî}}, {{W|ar|ـي|tr=-î}}
* {{Z|hy}}: [[ինձ]] (inc)
* {{Z|fa}}: {{W|fa|من|tr=men}}, {{W|fa|م -|guman=erê}}
* {{Z|fi}}: {{W|fi|minut}}, {{W|fi|minua}}
* {{Z|fr}}: {{W|fr|me}}
* {{Z|gu}}: {{W|gu|მე}}
* {{Z|nl}}: {{W|nl|me}}, {{W|nl|mij}}
* {{Z|io}}: {{W|io|me}}
* {{Z|ang}}: {{W-|ang|mē}}
* {{Z|en}}: {{W|en|me}}, {{W|en|I|guman=erê}}
* {{Z|ga}}: {{W|ga|mé}}, {{W|ga|mise}}
* {{Z|it}}: {{W|it|mi}}, {{W|it|me}}
* {{Z|gv}}: {{W|gv|mee}}, {{W|gv|mish}}
* {{Z|no}}: {{W|no|meg}}
* {{Z|sv}}: {{W|sv|mig}}
* [[tetumî]]: [[ha'u]]
* {{Z|tr}}: {{W|tr|beni}}, {{W|tr|bana|guman=erê}}, {{W|tr|ben|guman=erê}}
* {{Z|uk}}: [[мене]] (mene)
* {{Z|vi}}: {{W|vi|tôi}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[pîvan|Pîvanek]] [[dexlûdan]]î ye û [[nêz]]î 3 [[kg]] e.
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|men}}
* {{g|ku|mine}}
==== Etîmolojî ====
Hevreha farisî {{g|fa|من|tr=men}}, erebî {{g|ar|من|tr=menn}}, îbranî {{q|he|מנה|tr=menih}}, yûnanî {{q|el|μνᾶ|tr=mnâ}}, sanskrîtî {{g|sa|मान|tr=men}} ihtimalen ji {{ji|sa|ku|मा|tr=me-|w=[[pîvan]]}}. Ji heman rehî herwiha portugalî {{q|pt|mane}}, rusî {{g|ru|ман|tr=man}} û {{g|ru|ма́унд|tr=máund}}, îngilîzî {{q|en|maund}}...
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Cînav ===
{{cînav|ckb|sc=Latn}}
# {{ckb-Arab|من|w=min}}
#: {{mk|ckb|sc=Latn|'''Min''' naçim.|tr=-|w=Ez naçim.|birêz=1}}
# (ya/yê/yên) {{g|ku|min}}
#: {{mk|ckb|sc=Latn|Ew hî '''min''' e.|tr=-|w=Ew ya / yê min e.|birêz=1}}
==== Têkildar ====
{{cînav/ckb}}
== {{ziman|zza}} ==
=== Cînav ===
{{cînav|zza}}
# {{g|ku|min}}
#* {{bêmînak|zza}}
== {{ziman|eu}} ==
=== Bilêvkirin ===
* {{deng|eu|LL-Q8752 (eus)-Xabier Cañas-min.wav|Deng|dever=Donostia-San Sebastián, Spanya}}
=== Navdêr ===
{{navdêr|eu}}
# [[êş]], [[jan]]
#* {{bêmînak|eu}}
== {{ziman|br}} ==
=== Navdêr ===
{{navdêr|br|z=n}}
# {{mijar|br|çek}} {{g|ku|mîn}}, {{g|ku|mayin}}
#* {{bêmînak|br}}
=== Çavkanî ===
{{rûpela wergerê|br|mîn}}
== {{ziman|da}} ==
=== Cînav ===
{{cînav|da}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|da}}
== {{ziman|eo}} ==
=== Bilêvkirin ===
* {{deng|eo|LL-Q143 (epo)-Robin van der Vliet-min.wav|Deng|dever=Wijchen, Holenda}}
* {{deng|eo|LL-Q143 (epo)-Lepticed7-min.wav|Deng|dever=Toulouse, Fransa}}
=== Cînav ===
{{cînav|eo}}
# {{g|ku|min}}
#* {{bêmînak|eo}}
== {{ziman|gd}} ==
=== Navdêr ===
{{navdêr|gd|z=m}}
# {{mijar|gd|xwarin}} {{g|ku|ar}}, {{g|ku|ard}}, {{g|ku|arvan}}
#* {{bêmînak|gd}}
=== Çavkanî ===
{{rûpela wergerê|gd|ar}}
== {{ziman|guo}} ==
=== Navdêr ===
{{navdêr|guo}}
# {{mijar|guo|vexwarin}} {{g|ku|av}}
#* {{bêmînak|guo}}
=== Çavkanî ===
{{rûpela wergerê|guo|av/Werger1}}
== {{ziman|nl}} ==
=== Bilêvkirin ===
* {{deng|nl|LL-Q7411 (nld)-Robin van der Vliet-min.wav|Deng|dever=Wijchen, Holenda}}
=== Navdêr ===
{{navdêr|nl}}
# [[kêmî]], [[mînûs]]
#* {{bêmînak|nl}}
# [[dayîn]], [[dêşîr]]
#* {{bêmînak|nl}}
=== Rengdêr ===
{{rengdêr|nl}}
# [[kêm]], ne [[bes]]
#* {{bêmînak|nl}}
== {{ziman|en}} ==
=== Kurtenav ===
{{kurtenav|en}}
# {{kurtkirin|en|minute}}
#* {{bêmînak|en}}
== {{ziman|ang}} ==
=== Cînav ===
{{cînav|ang}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|ang}}
== {{ziman|bij}} ==
=== Navdêr ===
{{navdêr|bij}}
# {{mijar|bij|vexwarin}} {{g|ku|av}}
#* {{bêmînak|bij}}
=== Çavkanî ===
{{rûpela wergerê|bij|av/Werger1}}
== {{ziman|mt}} ==
=== Cînav ===
{{cînav|mt}}
# [[kî]]
#* {{bêmînak|mt}}
# [[kê]]
#* {{bêmînak|mt}}
== {{ziman|no}} ==
=== Cînav ===
{{cînav|no}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|no}}
== {{ziman|pai}} ==
=== Navdêr ===
{{navdêr|pai}}
# {{mijar|pai|vexwarin}} {{g|ku|av}}
#* {{bêmînak|pai}}
=== Çavkanî ===
{{rûpela wergerê|pai|av/Werger2}}
== {{ziman|sv}} ==
=== Cînav ===
{{cînav|sv}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|sv}}
== {{ziman|tt}} ==
=== Cînav ===
{{cînav|tt}}
# [[ez]]
#* {{bêmînak|tt}}
== {{ziman|zea}} ==
=== Rengdêr ===
{{rengdêr|zea}}
# {{g|ku|xirab}}, {{g|ku|nebaş}}
#* {{bêmînak|zea}}
=== Çavkanî ===
{{rûpela wergerê|zea|xirab}}
ae1l4puxhf4b4zgcsnhbrn4knz24t8l
6329856
6329846
2026-08-13T00:06:12Z
Wikihez
7344
/* Etîmolojî */
6329856
wikitext
text/x-wiki
{{bnr-h|mîn|mìn|miñ}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163_(kmr)-Key Mîrza-min.wav|dever=Wan}}
* {{ku-kîte}}
=== Cînav ===
{{ku-zayend|MNY=min|MNP=me}}
{{cînav|ku}}
# ''Forma [[tewandî]] ji [[cînav]]ê'' '''[[ez]]'''.
#: {{mk|ku|Ew '''min''' dinase.}}
#: {{mk|ku|Ev jî hevalê '''min''' e.}}
#: {{mk|ku|Ev pirtûk li nik '''min''' peyda nabe.}}
#: {{mk|ku|Te bihîst ku '''min''' çi got?}}
==== Bi alfabeyên din ====
* {{ku-ar|من}}
* {{ku-kr|мьн}}
==== Formên alternatîv ====
* {{mj|Devkî}} {{g|ku|mi}}
* {{mj|Klasîk}} {{g|ku|sc=Arab|مه|tr=-}} / {{g|ku|sc=Arab|من|tr=-}}
==== Têkildar ====
{{cînav/ku}}
==== Etîmolojî ====
Ji {{ji|ine-pro|ku|*(e)me-n-}}, hevreha avestayî ''mene'', parsî ''mene'', farisî {{g|fa|من|tr=men}}, sanskrîtî ''ma, mam'', yûnaniya kevn {{g|grc|με|tr=me}} / {{g|grc|εμέ|tr=emê}}, îngilîzî {{q|en|me}}, {{q|en|mine}}, {{q|en|my}}, latînî {{q|la|me}}, fransî {{q|fr|me}}, {{q|fr|moi}}, rusî {{q|ru|меня|tr=minya}}... Hêjayî gotinê ye ku nêzîkiya navbera {{q|ku||min}} ya kurdî û lêzimên wê yên hindûewropî li gel {{q|tr||men|tr=ez}} ya zimanên tirkîkî (bi tirkiya stenbolî {{q|tr|ben}}) tenê tiştek tesedifî ye.
*{{ji|ira-pro||-}}:
**{{ae}}: '''mene''' ("min")
**{{peo}}: '''mene''' ("min")
***{{fa}}: '''men''' ("ez; min")
**[[partî]]: '''men''' ("min")
**{{kmr}}: '''min''' ("min")
**[[soranî]]: '''min''' ("ez; min")
**{{zza}}: '''mi''', [[min]]
*{{sa}}: '''ma, mam''' ("min")
*{{el}}: '''me, emê''' ("min")
*{{la}}: '''me''' ("min")
*{{de}}: '''mich''' ("min")
*{{en}}: '''me''' ("min") ...
;{{biçûk|Çavkanî:
* {{Horn|r=222}}
* {{Watkins|r=51}}
* {{Etymonline}}
}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|-im|sc=Latn}}, {{W-|ckb|-m|sc=Latn}} ({{q|ckb||min|sc=Latn}} / {{q|ckb|emin|sc=Latn}} yên soranî hevwateyên {{q|ku||ez}} ya kurmancî ye!)
* {{Z|zza}}: {{W-|zza|mi}}, {{W-|zza|min}}
==== Werger ====
{{werger-ser|wek objeya [[yekser]] (bo nimûne: Tu min dibînî.)}}
* {{Z|de}}: {{W|de|mich}}, {{W|de|mein|guman=erê}}
* {{Z|zh}}: {{W|zh|我}}
* {{Z|da}}: {{W|da|mig}}
* {{Z|ar}}: {{W|ar|ـني|tr=-nî}}, {{W|ar|ـي|tr=-î}}
* {{Z|hy}}: [[ինձ]] (inc)
* {{Z|fa}}: {{W|fa|من|tr=men}}, {{W|fa|م -|guman=erê}}
* {{Z|fi}}: {{W|fi|minut}}, {{W|fi|minua}}
* {{Z|fr}}: {{W|fr|me}}
* {{Z|gu}}: {{W|gu|მე}}
* {{Z|nl}}: {{W|nl|me}}, {{W|nl|mij}}
* {{Z|io}}: {{W|io|me}}
* {{Z|ang}}: {{W-|ang|mē}}
* {{Z|en}}: {{W|en|me}}, {{W|en|I|guman=erê}}
* {{Z|ga}}: {{W|ga|mé}}, {{W|ga|mise}}
* {{Z|it}}: {{W|it|mi}}, {{W|it|me}}
* {{Z|gv}}: {{W|gv|mee}}, {{W|gv|mish}}
* {{Z|no}}: {{W|no|meg}}
* {{Z|sv}}: {{W|sv|mig}}
* [[tetumî]]: [[ha'u]]
* {{Z|tr}}: {{W|tr|beni}}, {{W|tr|bana|guman=erê}}, {{W|tr|ben|guman=erê}}
* {{Z|uk}}: [[мене]] (mene)
* {{Z|vi}}: {{W|vi|tôi}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[pîvan|Pîvanek]] [[dexlûdan]]î ye û [[nêz]]î 3 [[kg]] e.
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|men}}
* {{g|ku|mine}}
==== Etîmolojî ====
Hevreha farisî {{g|fa|من|tr=men}}, erebî {{g|ar|من|tr=menn}}, îbranî {{q|he|מנה|tr=menih}}, yûnanî {{q|el|μνᾶ|tr=mnâ}}, sanskrîtî {{g|sa|मान|tr=men}} ihtimalen ji {{ji|sa|ku|मा|tr=me-|w=[[pîvan]]}}. Ji heman rehî herwiha portugalî {{q|pt|mane}}, rusî {{g|ru|ман|tr=man}} û {{g|ru|ма́унд|tr=máund}}, îngilîzî {{q|en|maund}}...
==== Werger ====
{{werger-ser}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Cînav ===
{{cînav|ckb|sc=Latn}}
# {{ckb-Arab|من|w=min}}
#: {{mk|ckb|sc=Latn|'''Min''' naçim.|tr=-|w=Ez naçim.|birêz=1}}
# (ya/yê/yên) {{g|ku|min}}
#: {{mk|ckb|sc=Latn|Ew hî '''min''' e.|tr=-|w=Ew ya / yê min e.|birêz=1}}
==== Têkildar ====
{{cînav/ckb}}
== {{ziman|zza}} ==
=== Cînav ===
{{cînav|zza}}
# {{g|ku|min}}
#* {{bêmînak|zza}}
== {{ziman|eu}} ==
=== Bilêvkirin ===
* {{deng|eu|LL-Q8752 (eus)-Xabier Cañas-min.wav|Deng|dever=Donostia-San Sebastián, Spanya}}
=== Navdêr ===
{{navdêr|eu}}
# [[êş]], [[jan]]
#* {{bêmînak|eu}}
== {{ziman|br}} ==
=== Navdêr ===
{{navdêr|br|z=n}}
# {{mijar|br|çek}} {{g|ku|mîn}}, {{g|ku|mayin}}
#* {{bêmînak|br}}
=== Çavkanî ===
{{rûpela wergerê|br|mîn}}
== {{ziman|da}} ==
=== Cînav ===
{{cînav|da}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|da}}
== {{ziman|eo}} ==
=== Bilêvkirin ===
* {{deng|eo|LL-Q143 (epo)-Robin van der Vliet-min.wav|Deng|dever=Wijchen, Holenda}}
* {{deng|eo|LL-Q143 (epo)-Lepticed7-min.wav|Deng|dever=Toulouse, Fransa}}
=== Cînav ===
{{cînav|eo}}
# {{g|ku|min}}
#* {{bêmînak|eo}}
== {{ziman|gd}} ==
=== Navdêr ===
{{navdêr|gd|z=m}}
# {{mijar|gd|xwarin}} {{g|ku|ar}}, {{g|ku|ard}}, {{g|ku|arvan}}
#* {{bêmînak|gd}}
=== Çavkanî ===
{{rûpela wergerê|gd|ar}}
== {{ziman|guo}} ==
=== Navdêr ===
{{navdêr|guo}}
# {{mijar|guo|vexwarin}} {{g|ku|av}}
#* {{bêmînak|guo}}
=== Çavkanî ===
{{rûpela wergerê|guo|av/Werger1}}
== {{ziman|nl}} ==
=== Bilêvkirin ===
* {{deng|nl|LL-Q7411 (nld)-Robin van der Vliet-min.wav|Deng|dever=Wijchen, Holenda}}
=== Navdêr ===
{{navdêr|nl}}
# [[kêmî]], [[mînûs]]
#* {{bêmînak|nl}}
# [[dayîn]], [[dêşîr]]
#* {{bêmînak|nl}}
=== Rengdêr ===
{{rengdêr|nl}}
# [[kêm]], ne [[bes]]
#* {{bêmînak|nl}}
== {{ziman|en}} ==
=== Kurtenav ===
{{kurtenav|en}}
# {{kurtkirin|en|minute}}
#* {{bêmînak|en}}
== {{ziman|ang}} ==
=== Cînav ===
{{cînav|ang}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|ang}}
== {{ziman|bij}} ==
=== Navdêr ===
{{navdêr|bij}}
# {{mijar|bij|vexwarin}} {{g|ku|av}}
#* {{bêmînak|bij}}
=== Çavkanî ===
{{rûpela wergerê|bij|av/Werger1}}
== {{ziman|mt}} ==
=== Cînav ===
{{cînav|mt}}
# [[kî]]
#* {{bêmînak|mt}}
# [[kê]]
#* {{bêmînak|mt}}
== {{ziman|no}} ==
=== Cînav ===
{{cînav|no}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|no}}
== {{ziman|pai}} ==
=== Navdêr ===
{{navdêr|pai}}
# {{mijar|pai|vexwarin}} {{g|ku|av}}
#* {{bêmînak|pai}}
=== Çavkanî ===
{{rûpela wergerê|pai|av/Werger2}}
== {{ziman|sv}} ==
=== Cînav ===
{{cînav|sv}}
# (ya / yê) {{g|ku|min}}
#* {{bêmînak|sv}}
== {{ziman|tt}} ==
=== Cînav ===
{{cînav|tt}}
# [[ez]]
#* {{bêmînak|tt}}
== {{ziman|zea}} ==
=== Rengdêr ===
{{rengdêr|zea}}
# {{g|ku|xirab}}, {{g|ku|nebaş}}
#* {{bêmînak|zea}}
=== Çavkanî ===
{{rûpela wergerê|zea|xirab}}
oir93ocrozz44t6ahsi2pa2vpp28fbn
kirin
0
3487
6329816
6310205
2026-08-12T23:03:34Z
Wikihez
7344
/* Navdêr */
6329816
wikitext
text/x-wiki
{{bnr-h|kirîn}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163_(kmr)-Key Mîrza-kirin.wav|dever=Wan}}
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|kirin|form=gerguhêz|niha=k|borî=kir}}
[[Wêne:Lewis_Hine_Power_house_mechanic_working_on_steam_pump.jpg|thumb|Kesek kar '''dike'''. Peyvên ''[[kar]]'' û ''[[kirin#Kurdî|kirin]]'' [[hevreh]] in.]]
{{lêker|ku|c=x-gh}}, {{bilêv|k|nerm}}
# [[bi cih anîn]], [[pêk anîn]], [[encam dan]]
#: {{mk|ku|Tu çi '''dikî'''?}}
#: {{mk|ku|'''Bikin'''! – '''Neke'''! – '''Meke'''!}}
#: {{mk|ku|Min hemû ev kar '''kiriye'''.}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Were nîşanê Nişanî de xwe bêperde seher<br />Lê ji xûnê '''bike''' perhîz ku şehîdan çi hisab}}
# [[niyet]] hebûn, [[li ber bûn]], [[biniyet]] bûn, [[hewl]] dan, [[armanc]] bûn
#: {{mk|ku|Min '''dikir''' bipirsim lê ez newêriyam.}}
# [[nêzîk]] bûn, [[kêm]] man ku tiştek [[qewimîn|biqewime]]
#: {{mk|ku|Ji qehran '''dike''' xwe bikuje.}}
# [[lîstin]], [[pê ve]] [[mijûl]] bûn
#: {{mk|ku|Ez futbolê '''dikim'''.|Ez futbolê dilîzim.|birêz=1}}
# [[zewicîn]], [[mêr]] kirin, [[şû]] kirin, [[jin anîn]], wek [[hevser]] [[qebûl]] kirin
#: {{mk|ku|Ez bêmêr bimirim jî, ez te '''nakim'''.}}
# [[gan]] kirin, [[seks]] kirin
#* {{bêmînak|ku}}
# [[xwestin]]
#* {{jêder-kitêb|ku|jêgirtin= '''Kir''' ku ji avê derbas bibe. |nivîskar={{w|Mela Mûsayê Hekarî}}|sernav=Durrû’l Mecalîs|amadekar=Hêmin Omer|sala weşandinê=2022|sal=1857|rûpel=116}}
# {{înm|wek [[lêkera sivik|lêkereke sivik]] bo çêkirina [[lêker]]ên [[nû]] ji [[navdêr]] û [[rengdêr]]an}}
#: {{mk|ku|[[qebûl kirin]], [[razî kirin]], [[xwedî kirin]], [[dest pê kirin]]}}
#: {{mk|ku|[[mezin kirin]], [[xurt kirin]], [[bihêz kirin]], [[perîşan kirin]]}}
==== Bi alfabeyên din ====
* {{ku-ar|کرن}}
* {{ku-kr|кьрьн}}
==== Jê ====
{{agadarî|Agadarî}}: Gelek peyv bi alîkariya [[lêkera sivik]] ya "kirin" tên çêkirin loma rêzkirina hemûyan li vir ne mimkin e. Bnr. '''[[:Kategorî:Tewandin:lêkerên pêkhatî yên kurmancî li gel "kirin"|Lêkerên li gel "kirin" (pêkhatî)]]''', '''[[:Kategorî:Peyvên kurmancî yên hevedudanî bi kirin|Peyvên kurmancî yên hevedudanî bi kirin]].
==== Etîmolojî ====
Hevreha soranî {{g|ckb|کردن}}, kurdiya başûrî {{q|sdh|kirdin|sc=Latn}}, lekî {{q|lki|kirdin|sc=Latn}}, goranî/hewramî {{q|hac|kerdey|sc=Latn}}, zazakî {{q|zza|kerdene}}, farisî {{g|fa|کردن|tr=kerden}}, tacikî {{g|tg|кардан|tr=kardan}}, partî {{g|xpr|𐭪𐭫𐭲|tr=kirt}}, pehlewî {{g|pal|𐭪𐭫𐭲|tr=kirt}}, avestayî {{g|ae|𐬐𐬆𐬭𐬆𐬙𐬀|tr=kərəta|w=[[kirî]]}} û {{g|ae|𐬐𐬆𐬭𐬆𐬥𐬀𐬊𐬌𐬙𐬌|tr=kərənaoiti|w=ew dike}}, hexamenişî {{g|peo|𐎠𐎤𐎢𐎫𐎠|tr=a-ku-u-t-a /akutā/|w=wî kir}}, sanskrîtî {{g|sa|कृणोति|tr=kṛṇóti}} û {{g|sa|करोति|tr=karóti}}, hindî {{g|hi|करना|tr=kerna}}, ûrdûyî {{g|ur|کرنا|tr=kerna}}, hîtîtî {{g|hit|𒆪𒂊𒅕𒋫|tr=ku-e-er-ta|w=kir}} û {{g|hit|𒆪𒅕𒈪|tr=ku-er-mi|w=dikim}}, lîtwanî {{q|lt|kùrti|w=kirin, çêkirin, ava kirin}} û {{q|lt|kerė́ti|w=[[sihr]] kirin}}, rûsî {{q|ru|ча́ры|tr=čáry|w=[[sihr]]kirin}}. hemû ji {{ji|ine-pro|ku|*kʷer-|w=kirin, [[çêkirin]], [[ava kirin]]}}.
Ji heman rehî herwiha peyva {{q|ku|kar}} û paşgirên {{q|ku|-kar}}, {{q|ku|-ker}}, {{q|ku|-gar}}, {{q|ku|-ger}} (''-ger'' wek bo nimûne di peyva {{q|ku|asinger}}, {{q|ku|hesinger}} de).
Peyv ji zimanekî [[hindûîranî]] ketiye hinek zimanên [[ûralî]] jî, bo nimûne: ûdmûrtî {{g|udm|карыны|tr=karini}} û komî-permyakî {{g|koi|керны|tr=kêrni}}.
Wek paşgirên {{q|ku|-kâr}}, {{q|ku|-ker}}, {{q|ku|-gâr}} ketiye tirkî û gelek zimanên din jî yên [[tirkîkî]], bo nimûne di van peyvên tirkî de: {{q|tr|muhafazakâr}}, {{q|tr|peyker}}, {{q|tr|rüzgâr}} û bi dehan an bi sedan peyvên din.
;{{biçûk|Çavkanî:
* {{Cheung}}
* {{Chyet}}
* {{Derksen}}
* {{Kloekhorst}}
* {{Lubotsky}}
* {{Mallory}}
* {{Tsabolov}}
}}
==== Bi zaravayên din ====
* {{Z|hac}}: {{W-|hac|kerdey|sc=Latn}}
* {{Z|sdh}}: {{W-|sdh|کردن}}, {{W-|sdh|kirdin|sc=Latn}}
* {{Z|lki}}: {{W-|lki|کردن}}, {{W-|lki|kirdin|sc=Latn}}
* {{Z|ckb}}: {{W-|ckb|کردن|tr=kirdin}}
* {{Z|zza}}: {{W-|zza|kerdene}}
==== Werger ====
{{werger-ser|bi cih anîn, encam dan, çêkirin (1)}}
* {{Z|af}}: {{W+|af|doen}}
* {{Z|sq}}: {{W+|sq|bëj}}
* {{Z|de}}: {{W+|de|tun}}, {{W+|de|machen}}
*: {{Z|gsw}}: {{W-|gsw|tue}}
* {{Z|am}}: {{W-|am|ማድረግ}}
* {{Z|an}}: {{W+|an|fer}}
* {{Z|aii}}: {{W-|aii|ܥܵܒ݂ܹܕ|tr=ʿawed}}
* {{Z|rup}}: {{W-|rup|fac}}
* {{Z|as}}: {{W-|as|কৰ}}
* {{Z|ast}}: {{W+|ast|facer}}
* {{Z|ask}}: {{W-|ask|ko}}
* {{Z|ain}}: {{W-|ain|キ|tr=ki}}
* {{Z|az}}: {{W-|az|eləmək}}, {{W+|az|etmək}}, {{W-|az|qılmaq}}
* {{Z|ban}}: {{W-|ban|gaé}}
* {{Z|eu}}: {{W-|eu|egin}}
* {{Z|be}}: {{W-|be|рабі́ць|impf}}, {{W-|be|зрабі́ць|pf}}
* {{Z|bn}}: {{W-|bn|করা}}
* {{Z|bqi}}: {{W-|bqi|کردن|tr=kerden}}
* {{Z|br}}: {{W+|br|ober}}
* {{Z|bg}}: {{W-|bg|пра́вя}}
* {{Z|my}}: {{W+|my|လုပ်}}, {{W+|my|ပြု}}
* {{Z|ce}}: {{W-|ce|да}}, {{W-|ce|дан}}
* {{Z|cs}}: {{W-|cs|dělat|impf}}, {{W-|cs|udělat|pf}}
* {{Z|chr}}: {{W-|chr|ᎾᏛᏁᎭ}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W-|cmn|做|tr=zuò}}, {{W+|cmn|作|tr=zuò}}
* {{Z|cv}}: {{W-|cv|ту}}
* {{Z|dlm}}: {{W-|dlm|fur}}
* {{Z|da}}: {{W+|da|gøre}}, {{W-|da|udføre}}
* {{Z|id}}: {{W+|id|buat}}, {{W+|id|laku}}, {{W+|id|melakukan}}
* {{Z|ar}}: {{W-|ar|فَعَلَ}}, {{W-|ar|عَمِلَ}}
*: {{Z|arq}}: {{W-|arq|دار}}
*: {{Z|arz}}: {{W-|arz|عمل|tr=ʕamal}}
*: {{Z|acw}}: {{W-|acw|سَوَّى|tr=sawwa}}
* {{Z|hy}}: {{W+|hy|անել}}
* {{Z|eo}}: {{W+|eo|fari}}
* {{Z|et}}: {{W+|et|tegema}}
* {{Z|ext}}: {{W-|ext|hazel}}
* {{Z|fa}}: {{W-|fa|کَردَن|tr=kardan}}
* {{Z|fi}}: {{W-|fi|tehdä}}
* {{Z|fr}}: {{W-|fr|faire}}
* {{Z|fur}}: {{W-|fur|fâ}}
* {{Z|frr}}: {{W-|frr|düünj}}, {{W-|frr|du}}
* {{Z|fy}}: {{W-|fy|dwaan}}
* {{Z|gd}}: {{W-|gd|dèan}}
* {{Z|gl}}: {{W+|gl|facer}}
* {{Z|got}}: {{W-|got|𐍄𐌰𐌿𐌾𐌰𐌽}}
* {{Z|ka}}: {{W+|ka|კეთება}}
* {{Z|gn}}: {{W+|gn|japo}}
* {{Z|ht}}: {{W-|ht|fè}}
* {{Z|hi}}: {{W+|hi|करना}}
* {{Z|hil}}: {{W-|hil|buhat}}, {{W-|hil|pagbuhat}}
* {{Z|mww}}: {{W-|mww|ua}}
* {{Z|nl}}: {{W+|nl|doen}}
* {{Z|he}}: {{W-|he|עָשָׂה|tr=asá}},{{W-|he|פָּעַל|tr=pa'al}}
* {{Z|io}}: {{W+|io|facar}}
* {{Z|ilo}}: {{W-|ilo|aramid}}
* {{Z|ang}}: {{W-|ang|dōn}}
* {{Z|en}}: {{W+|en|do}}, {{W+|en|perform}}, {{W+|en|execute}}
* {{Z|inh}}: {{W-|inh|де}}
* {{Z|ia}}: {{W-|ia|facer}}
* {{Z|ga}}: {{W-|ga|déan}}, {{W-|ga|dein}}
* {{Z|ist}}: {{W-|ist|fà}}
* {{Z|it}}: {{W+|it|fare}}
* {{Z|is}}: {{W+|is|gera}}, {{W-|is|gjöra}}
* {{Z|ja}}: {{W+|ja|する|tr=suru}}, {{W+|ja|やる|tr=yaru}}, {{W-|ja|なさる|tr=nasaru}}, {{W+|ja|致す|tr=いたす, itasu}}
* {{Z|jv}}: {{W+|jv|gawe}}, {{W+|jv|gawé}}
* {{Z|bsh}}: {{W-|bsh|ku}}
* {{Z|xnn}}: {{W-|xnn|ikkan}}
* {{Z|kn}}: {{W+|kn|ಮಾಡು}}
* {{Z|kea}}: {{W-|kea|faze}}
* {{Z|ca}}: {{W-|ca|fer}}
* {{Z|qu}}: {{W+|qu|ruray}}, {{W-|qu|rurai}}
* {{Z|ks}}: {{W-|ks|کَرُن}}
* {{Z|ky}}: {{W-|ky|этүү}}
* {{Z|si}}: {{W-|si|කරනවා}}
* {{Z|ko}}: {{W+|ko|하다}}
* {{Z|co}}: {{W-|co|fà}}
* {{Z|mfe}}: {{W-|mfe|fer}}
* {{Z|kum}}: {{W-|kum|этмек}}
* {{Z|lld}}: {{W-|lld|fé}}, {{W-|lld|fèr}}
* {{Z|ltg}}: {{W-|ltg|dareit}}
* {{Z|la}}: {{W+|la|faciō}}, {{W+|la|agō}}
* {{Z|lv}}: {{W+|lv|darīt}}, {{W-|lv|veikt}}
* {{Z|lo}}: {{W+|lo|ເຮັດ}}, {{W-|lo|ທຳ}}
* {{Z|lez}}: {{W-|lez|авун}}
* {{Z|lt}}: {{W+|lt|daryti}}
* {{Z|lmo}}: {{W-|lmo|fà}}
* {{Z|mhn}}: {{W-|mhn|mòchen}}
* {{Z|mk}}: {{W+|mk|прави}}, {{W-|mk|врши}}, {{W+|mk|направи}}
* {{Z|ml}}: {{W+|ml|ചെയ്യുക}}
* {{Z|ms}}: {{W+|ms|buat}}
* {{Z|mt}}: {{W-|mt|għamel}}
* {{Z|mzn}}: {{W-|mzn|هاکردن|tr=hâkërden}}
* {{Z|gun}}: {{W-|gun|japo}}
* {{Z|hu}}: {{W+|hu|tesz}}, {{W+|hu|csinál}}
* {{Z|egy}}: {{W-egy|jrj|h=ir}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|хийх}}
* {{Z|nci}}: {{W-|nci|chīhua}}
* {{Z|nah}}: {{W+|nah|chīhua}}
* {{Z|gld}}: {{W-|gld|анго-}}
* {{Z|nap}}: {{W-|nap|fà}}
* {{Z|nds}}:
*: {{Z|nds-nl}}: {{W-|nds-nl|doan}}
*: {{Z|nds-de}}: {{W-|nds-de|doon}}
* {{Z|ne}}: {{W+|ne|गर्नु}}
* {{Z|nrf}}: {{W-|nrf|faithe}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|gjøre}}, {{W+|nb|utføre}}
*: {{Z|nn}}: {{W+|nn|gjere}}, {{W+|nn|utføre}}
* {{Z|pro}}: {{W-|pro|far}}
* {{Z|oc}}: {{W+|oc|far}}, {{W+|oc|har}}, {{W+|oc|faire}}
* {{Z|or}}: {{W+|or|କରିବା}}
* {{Z|os}}: {{W-|os|кӕнын}}
* {{Z|ug}}: {{W-|ug|قىلماق}}
* {{Z|uz}}: {{W+|uz|qilmoq}}
* {{Z|pi}}: {{W-|pi|karoti}}
* {{Z|pap}}: {{W-|pap|hasi}}
* {{Z|ps}}: {{W-|ps|کول|tr=kawël}}
* {{Z|ppl}}: {{W-|ppl|-chiwa}}, {{W-|ppl|-chihua}}
* {{Z|pl}}: {{W+|pl|robić|impf}}, {{W+|pl|zrobić|pf}}, {{W+|pl|czynić|impf}}, {{W+|pl|uczynić|pf}}
* {{Z|roa-opt}}: {{W-|roa-opt|fazer}}
* {{Z|pt}}: {{W+|pt|fazer}}, {{W+|pt|realizar}}
* {{Z|pa}}: {{W-|pa|ਕਰਨਾ}}
* {{Z|kk}}: {{W+|kk|істеу}}
* {{Z|cop}}: {{W-|cop|ⲉⲓⲣⲉ}}
* {{Z|rap}}: {{W-|rap|haka}}
* {{Z|rgn}}: {{W-|rgn|fêr}}
* {{Z|rm}}: {{W-|rm|far}}
* {{Z|ro}}: {{W+|ro|face}}
* {{Z|ru}}: {{W-|ru|де́лать|impf}}, {{W-|ru|сде́лать|pf}}
* {{Z|rue}}: {{W-|rue|роби́ти|impf}}
* {{Z|osx}}: {{W-|osx|dôn}}, {{W-|osx|fremmian}}, {{W-|osx|gifrummian}}
* {{Z|sgs}}: {{W-|sgs|darītė}}, {{W-|sgs|dėrbtė}}
* {{Z|sa}}: {{W+|sa|करोति|tr=karóti}}
*: {{Z|sa}}: {{W+|sa|कृणोति|tr=kṛṇóti}}
* {{Z|sc}}: {{W-|sc|fàchere}}
*: {{Z|sc}}: {{W-|sc|fai}}
* {{Z|ceb}}: {{W-|ceb|buhat}}, {{W-|ceb|buhaton}}
* {{Z|scn}}: {{W+|scn|fari}}
* {{Z|sd}}: {{W+|sd|ڪَرَڻُ}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|радити}}
*: Latînî: {{W+|sh|raditi}}, {{W+|sh|činiti}}
* {{Z|syl}}: {{W-|syl|ꠇꠞꠣ}}
* {{Z|sco}}: {{W-|sco|dae}}
* {{Z|orv}}: {{W-|orv|робити|impf}}
* {{Z|sk}}: {{W+|sk|robiť|impf}}, {{W-|sk|urobiť|pf}}
* {{Z|sl}}: {{W-|sl|storiti}},{{W-|sl|ukreniti}}, {{W-|sl|narediti}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|cyniś|impf}}
*: {{Z|hsb}}: {{W-|hsb|činić|impf}}, {{W-|hsb|sčinić|pf}}
* {{Z|es}}: {{W-|es|hacer}}
* {{Z|sv}}: {{W+|sv|göra}}
* {{Z|shn}}: {{W-|shn|ႁဵတ်း}}
* {{Z|tab}}: {{W-|tab|апӏуб}}
* {{Z|tg}}: {{W+|tg|кардан}}
* {{Z|tl}}: {{W-|tl|gawin}}, {{W-|tl|gumawa}}, {{W-|tl|isagawa}}
* {{Z|ta}}: {{W+|ta|செய்}}, {{W+|ta|பண்ணு}}
* {{Z|nod}}: {{W-|nod|ᩁᩮᩢ᩠ᨯ}}, {{W-|nod|ᨿᩮ᩠ᨿᩡ}}, {{W-|nod|ᨿᩡ}}, {{W-|nod|ᨿ}}
* {{Z|th}}: {{W+|th|ทำ}}
* {{Z|te}}: {{W+|te|చేయు}}
* {{Z|tt}}: {{W-|tt|эшләү}}
* {{Z|tet}}: {{W-|tet|halo}}
* {{Z|tr}}: {{W+|tr|yapmak}}, {{W+|tr|etmek}}, {{W+|tr|kılmak}}
* {{Z|tk}}: {{W+|tk|etmek}}
* {{Z|tpi}}: {{W+|tpi|mekim}}, {{W-|tpi|wokim}}
* {{Z|txb}}: {{W-|txb|yām-}}
* {{Z|tyv}}: {{W-|tyv|кылыр}}
* {{Z|udm}}: {{W-|udm|карыны}}
* {{Z|ur}}: {{W-|ur|کَرْنا|tr=karnā}}
* {{Z|uk}}: {{W-|uk|роби́ти|impf}}, {{W-|uk|зроби́ти|pf}}
* {{Z|vec}}: {{W+|vec|far}}
* {{Z|vi}}: {{W+|vi|làm}}
* {{Z|wbk}}: {{W-|wbk|ća}}
* {{Z|wa}}: {{W+|wa|fé}}
* {{Z|wbl}}: {{W-|wbl|car-}}
* {{Z|cy}}: {{W-|cy|gwneud}}
* {{Z|km}}: {{W+|km|ធ្វើ}}
* {{Z|yai}}: {{W-|yai|карак}}
* {{Z|yi}}: {{W-|yi|טאָן}}
* {{Z|yoi}}: {{W-|yoi|きるん|tr=kirun}}
* {{Z|el}}: {{W+|el|κάνω}}
*: Kevn: {{W-|grc|πράσσω}}, {{W-|grc|ποιέω}}, {{W-|grc|ῥέζω}}, {{W-|grc|ἔρδω}}, {{W-|grc|δράω}}, {{W-|grc|τελέω}}
* {{Z|ase}}: {{W-|ase|C@SideTrunkhigh-PalmDown-C@SideTrunkhigh-PalmDown RoundVertSidetoside-RoundVertSidetoside}}, {{W-|ase|Claw5@SideTrunkhigh-PalmDown-Claw5@SideTrunkhigh-PalmDown RoundVertSidetoside-RoundVertSidetoside}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|z=m|ku}}
# [[kar]], [[kiryar]], [[emel]], [[fêl]], [[fealiyet]], [[xebat]], [[şol]], [[encamdan]], [[bicihanîn]], [[çêkirin]]
#: {{mk|ku|'''Kirina''' wî karî ne hêsan e.}}
#: {{mk|ku|Divê mirov ji '''kirinê''' netirse.}}
#* {{jêder-malper|ku|jêgirtin=Di berhemên Fiqih û Usûlu’l-Fiqhê derbas dibe; fermaneke ku '''kirina''' tiştekî/’îbadeketekê di wextê wê lazim bike, qezakirina vê peywira ku di dema xwe nehatiye edakirin jî pêwîst didêre. Ma ev tişt ne rast e? Hûn dikarin di çarçoveya nimêja qeza de vê şîrove bikin?|malper=fetwayenkurdi.com|url=http://www.fetwayenkurdi.com/?p=3995|dîrok=21.07.2019}}
#* {{jêder-malper|ku|jêgirtin=Lêkera netêger an jî întransîtîv ew tewre lêker e ku tevger an '''kirina''' wê yekser tesîrê li objektekê nake. Ew çalakî an bûyer bê objekt çêdibe û dema ku ew çalakî pêk tê, tesîreke yekser li tişt an kesekî nayê.|url=https://sites.google.com/a/baranrizgar.co.cc/azadiya-kurdistane/home/lekeren-transitiv--intransitiv-ci-cudati-hene-cawa-ji-hev-veqetinin?tmpl=%2Fsystem%2Fapp%2Ftemplates%2Fprint%2F&showPrintDialog=1|malper=bloga Baran Rizgar|dîrok=21.07.2019}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* {{g|ku|kirinî}}
==== Etîmolojî ====
Li jortir [[kirin#Etîmolojî|binêrin]].
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|kar|sc=Latn}}, {{W-|ckb|kirdewe|sc=Latn}}
* {{Z|zza}}: {{W-|zza|kerdiş}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Tat|m}}, {{W+|de|Akt|n}}, {{W+|de|Werk|nt}}
* {{Z|ba}}: {{W|ba|ғәмәл}}
* {{Z|be}}: {{W|be|дзе́янне|nt}}, {{W|be|акт|n}}
* {{Z|bg}}: {{W+|bg|де́йствие|nt}}, {{W+|bg|постъпка|m}}, {{W+|bg|акт|n}}
* {{Z|cs}}: {{W+|cs|skutek|n}}, {{W+|cs|čin|n}}
* {{Z|zh}}: {{W+|cmn|行為|sc=Hani}}, {{W+|cmn|行为|tr=xíngwéi|sc=Hani}}
* {{Z|da}}: {{W|da|gerning|c}}, {{W+|da|handling|c}}
* {{Z|ar}}: {{W+|ar|عَمَل|n}}, {{W+|ar|فِعْل|n}}
* {{Z|hy}}: {{W+|hy|արարք}}
* {{Z|eo}}: {{W+|eo|faro}}, {{W|eo|ago}}
* {{Z|ee}}: {{W|ee|dɔwɔwɔ}}
* {{Z|fa}}: {{W+|fa|کردار|tr=kirdar}}, {{W+|fa|کار|tr=kâr}}, {{W+|fa|اعمال|p|tr=e'mal}}
* {{Z|fi}}: {{W+|fi|teko}}, {{W+|fi|toimi}}
* {{Z|fr}}: {{W+|fr|acte|n}}, {{W+|fr|action|m}}, {{W+|fr|œuvre|m}}
* {{Z|fy}}: {{W|fy|died|nt}}
* {{Z|gd}}: {{W|gd|gnìomh|n}}
* {{Z|nl}}: {{W+|nl|daad|m}}
* {{Z|he}}: {{W+|he|מעשה|m|tr=ma'ase|sc=Hebr}}
* {{Z|en}}: {{W|en|deed}}, {{W|en|action}}, {{W|en|disposition}}, {{W|en|doing}}, {{W|en|execution}}, {{W|en|performance}}, {{W|en|executing}}
* {{Z|it}}: {{W+|it|fatto|n}}, {{W+|it|gesto}}, {{W+|it|gesta}}
* {{Z|is}}: {{W+|is|dáð|m}}
* {{Z|ja}}: {{W+|ja|行為|tr=こうい, kōi|sc=Jpan}}
* {{Z|ca}}: {{W+|ca|fet|n}}, {{W+|ca|acte|n}}
* {{Z|ko}}: {{W+|ko|행위}}
* {{Z|la}}: {{W+|la|āctus|n}}
* {{Z|lb}}: {{W|lb|Dot|m}}
* {{Z|mk}}: {{W|mk|дело|nt}}, {{W|mk|постапка|m}}
* {{Z|hu}}: {{W+|hu|tett}}
* {{Z|no}}: {{W+|no|dåd}}, {{W|no|gjerning}}
* {{Z|pt}}: {{W+|pt|ação|m}}, {{W+|pt|feito|n}}
* {{Z|pt}}: {{W+|ro|faptă}}
* {{Z|ru}}: {{W+|ru|посту́пок|n}}, {{W+|ru|де́йствие|nt}}, {{W+|ru|дея́ние|nt}}, {{W+|ru|акт|n}}
* {{Z|sa}}: {{W+|sa|कार्य|nt}}
* {{Z|sh}}: {{W|sh|чи̑н|n}}
*: {{Z|sh}}: {{W+|sh|čȋn|n}}
* {{Z|sk}}: {{W|sk|skutok|n}}, {{W+|sk|čin|n}}
* {{Z|sl}}: {{W+|sl|dejanje|nt}}
* {{Z|es}}: {{W+|es|hecho|n}}, {{W+|es|acto|n}}, {{W+|es|acción|m}}, {{W+|es|obra|m}}
* {{Z|sv}}: {{W+|sv|gärning}}, {{W+|sv|dåd}}
* {{Z|te}}: {{W+|te|చర్య|sc=Telu}}
* {{Z|tr}}: {{W+|tr|iş}}, {{W|tr|yapma}}, {{W|tr|etme}}, {{W|tr|koyma}}, {{W+|tr|hareket}}, {{W|tr|eylem}}, {{W|tr|fiiliyat}}, {{W|tr|icra}}, {{W|tr|ika}}, {{W|tr|iştira}}, {{W|tr|gezdirme}}
* {{Z|uk}}: {{W+|uk|ді́я|m}}, {{W+|uk|ді́яння|nt}}, {{W+|uk|акт|n}}
* {{Z|el}}: {{W+|el|πράξη|m}}
*: {{Z|grc}}: {{W|grc|πρᾶξις|m}}
{{werger-bin}}
o7lprk6iyplrrfl4jrsk53tmrh358sw
kitêb
0
3503
6329666
6310263
2026-08-12T16:43:33Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329666
wikitext
text/x-wiki
{{bnr-h|kiteb|Kitêb}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|k(h)itêb}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kitêb.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Latin_dictionary.jpg|thumb|Kitêb]]
{{navdêr|ku|z=m}}
# [[kom|Komeke]] [[kaxez]]ên bi [[nivîs]] û / yan [[resm]] yên di nav [[berg]]ekî de hatine [[çap]]kirin.
#: {{hevmane|ku|pirtûk}}
#: {{mk|ku|Wê rûpela 50 ya '''kitêbê''' vekir û dest bi xwendinê kir.}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizirî/Dîwan/2004|r=44}}|jêgirtin=Me ji ser çeşmeyê ḥeywan qedeḥek ṣafî vexwar<br>Nagihî lez̤z̤et û z̤ewqa me bi ṣed cildê '''kitab'''}}
#* {{Jêgirtin/Feqiyê Teyran|sernav=Feqiyê Teyran jiyan berhem û helbestên wî|sal=2013|weşanxane=Nûbihar|çap=7|rûpel=130|amadekar=M. Xalid Sadinî|jêgirtin=Agir û pêta di dil da<br>Me„neya daxan ku hilda<br>Ew '''kitab''' naçit tu cilda<br>Hafîzê medhan im ez}}
#* {{jêder-kitêb|ku|jêgirtin=We neẓertu fîl-kîtabî, yanî ez daxilê xanî bûm û min neẓer li '''kitêbê''' kir.|sernav=Tesrîfa Teremaxî|nivîskar={{w|Elî Teremaxî}}|r=64|amadekar=Aydın Üneşi|sal=~1600|sala weşandinê=2016|cih=Mêrdin}}
#* {{jêder-kitêb|ku|jêgirtin=Ji şaîrê Kurmancan, bi zimanê Kurmancî, di tarîxa hezar û şeşsedî de di qeseba Bayezîdê de, hezretî Ehmedê Xanî '''kitêba''' ku telîf kiriye bi wezn bi nave Mem û Zînê, aşiq û maşûq, li weche muxtesr beyana wan dike.|sal=~1850|nivîskar={{w|Mele Mehmûdê Bazîdî}}|sernav=Mem û Zîn|sala weşandinê=2007|weşanxane=Lîs|r=23|amadekar=Xelîl Duhokî}}
#* {{jêder-kitêb|ku|jêgirtin=Mirovek xwenda, alim hebî, nave wî "Ehmede Xanî" bî{{sic}}. Xwedê jê razî be, rehmeta Xwedê lê be, vî mirovî hin '''kitêbên''' Kurmancî nivîsîne.|sernav=Kurdistan|sal=1898|r=123|amadekar=M. Emîn Bozarslan|nivîskar={{w|Miqdad Midhet Bedirxan}}|sala weşandinê=1991|cild=1}}
#* {{jêder|ku|jêgirtin=- Ma lê, ji te xeyidîme, ma çawan ji te naxeyidim. Te ez avêtim nav '''kitêb''' û kaxizan, te ez kirim hogir û hevala bermayên [[qaşûl]]ên dar û qirş û [[hevser]]a [[caw]] û [[potik]]ên [[zibilgeh]]ê.|''Gazinda Xencera Min, Hawar'', [[w:Celadet Alî Bedir-Xan|Celadet Alî Bedir-Xan]], hejmar 12}}
# Her kitêba [[miqeddes]] wekî [[Qur'an]] an [[Încîl]].
#* {{jêder-kitêb|ku|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê|sernav=Încîl|sal=1872|r=105|nivîskar=Madteos|amadekar=İlyas Sayım|sala weşandinê=2024}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din====
* {{ku-ar|کتێب}}
* {{ku-kr|к'ьтеб}}
==== Jê ====
{{kol3|ku|cure=Jê
|kitêbdank
|kitêbdost
|kitêbdostî
|kitêbfiroş
|kitêbfiroşgeh
|kitêbfiroşxane
|kitêbgeh
|kitêbhez
|kitêbhezî
|kitêbik
|kitêbî
|kitêbk
|kitêbxane
|kitêbxanevan
|kitêbxanevanî
|kitêbyar
|kitêbyarî
}}
==== Etîmolojî ====
{{root|ku|ar|ك ت ب}}
Ji {{deyn|ar|ku|كِتَاب}} ji reha {{ar-reh|ك ت ب|nekat=1}} ''têkilî rêzkirinê û çêkirina rêzikan ji wê yekê jî têkilî nivîsînê'', ji {{mîr|sem-wes-pro|ar|*katab-|w=xurandin, xeritandin}}. Ev reh koka peyvin din jî ne weku: {{q|ku|katib}}, {{q|ku|mekteb}}, {{q|ku|ketîbe}}.
==== Bide ber ====
{{kol3|ku
|belavok
|defter
|kovar
|namilke
|rojname
}}
==== Werger ====
{{werger-ser|koma kaxezan}}
* {{Z|abq}}: {{W-|abq|книга}}, {{W-|abq|апхьага}}, {{W-|abq|кьтап}}
* {{Z|ab}}: {{W-|ab|ашәҟәы}}
* {{Z|ady}}: {{W-|ady|тхылъ}}
* {{Z|aa}}: {{W-|aa|kitab}}
* {{Z|af}}: {{W+|af|boek}}
* {{Z|xag}}: {{W-|xag|𐕁𐔼𐕗}}
* {{Z|akz}}: {{W-|akz|holisso}}
* {{Z|sq}}: {{W+|sq|libër|n}}
* {{Z|de}}: {{W+|de|Buch|nt}}
*: {{Z|gsw}}: {{W-|gsw|Buech|nt}}
*: {{Z|gmw-cfr}}: {{W-|gmw-cfr|Boch|nt}}
*: {{Z|pdc}}: {{W-|pdc|Buch|nt}}
* {{Z|alt}}: {{W-|alt|бичик}}, {{W-|alt|книга}}
* {{Z|abs}}: {{W-|abs|buku}}
* {{Z|am}}: {{W-|am|መጽሃፍ}}
* Apaçî:
*: {{Z|apw}}: {{W-|apw|nałtsoos}}
* {{Z|an}}: {{W-|an|libro|n}}
* {{Z|rup}}: {{W-|rup|vivlie}}, {{W-|rup|carte}}
* {{Z|as}}: {{W-|as|কিতাপ}}, {{W-|as|পুথি}}
* {{Z|ast}}: {{W+|ast|llibru|n}}
* {{Z|tay}}: {{W-|tay|biru'}}
* {{Z|aot}}: {{W-|aot|kitap}}
* {{Z|av}}: {{W-|av|тӏехь}}, {{W-|av|таптар}}, {{W-|av|тӏахьал}}
* {{Z|ay}}: {{W-|ay|panka}}
* {{Z|ain}}: {{W-|ain|カㇺビソㇱ|tr=kambisosh}}
* {{Z|az}}: {{W+|az|kitab}}
* {{Z|bm}}: {{W-|bm|gafɛ}}
* {{Z|eu}}: {{W+|eu|liburu}}
* {{Z|ba}}: {{W-|ba|китап}}
* {{Z|be}}: {{W+|be|кні́га|m}}, {{W-|be|кні́жка|m}}
* {{Z|bn}}: {{W+|bn|বই}}, {{W+|bn|কিতাব}}, {{W+|bn|গ্রন্থ}}, {{W+|bn|পুস্তক}}
* {{Z|bth}}: {{W-|bth|buk}}
* {{Z|bi}}: {{W-|bi|buk}}
* {{Z|br}}: {{W+|br|levr|n}}
* {{Z|bg}}: {{W+|bg|кни́га|m}}
* {{Z|my}}: {{W+|my|စာအုပ်}}
* {{Z|bua}}: {{W-|bua|ном}}
* {{Z|kac}}: {{W-|kac|laika buk}}
* {{Z|ch}}: {{W-|ch|lepblo}}
* {{Z|chg}}: {{W-|chg|كتاب|tr=kitab}}
* {{Z|ce}}: {{W-|ce|кинишка}}, {{W-|ce|китаб}}, {{W-|ce|книга}}, {{W-|ce|книшка}}, {{W-|ce|кинчка}}, {{W-|ce|жайна}}
* {{Z|cs}}: {{W+|cs|kniha|m}}
* {{Z|chr}}: {{W-|chr|ᏗᎪᏪᎵ}}, {{W+|chr|ᎪᏪᎵ}}
* {{Z|chy}}: {{W-|chy|mȯxe'ėstoo'e}}
* {{Z|ny}}: {{W-|ny|buku}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|書}}
*: {{Z|dng}}: {{W-|dng|фу}}
*: {{Z|gan}}: {{W-|gan|書}}
*: {{Z|hak}}: {{W-|hak|書|tr=sû}}
*: {{Z|cjy}}: {{W-|cjy|書}}
*: {{Z|cmn}}: {{W+|cmn|書}}
*: {{Z|mnp}}: {{W-|mnp|書}}
*: {{Z|cdo}}: {{W-|cdo|書}}
*: {{Z|nan}}: {{W+|nan|冊|tr=chheh}}, {{W+|nan|書|tr=chu}}
*: {{Z|wuu}}: {{W-|wuu|書}}
*: {{Z|hsn}}: {{W-|hsn|書}}
* {{Z|cv}}: {{W-|cv|кӗнеке}}
* {{Z|dlm}}: {{W-|dlm|lebro|n}}
* {{Z|da}}: {{W+|da|bog|g}}
* {{Z|dv}}: {{W-|dv|ފޮތް}}
* {{Z|dtp}}: {{W-|dtp|buuk}}
* {{Z|ovd}}: {{W-|ovd|buok|m}}
* {{Z|id}}: {{W+|id|buku}}, {{W+|id|kitab}}
* {{Z|ar}}: {{W+|ar|كِتَاب|n}}
*: {{Z|arq}}: {{W-|arq|كتاب|n|tr=ktāb}}
*: {{Z|arz}}: {{W-|arz|كتاب|n|tr=ketāb}}
*: {{Z|acm}}: {{W-|acm|كِتَاب|n}}
*: {{Z|ary}}: {{W-|ary|كتاب|n|tr=ktāb}}
*: {{Z|apc}}: {{W-|apc|كتاب|tr=ktāb, ktēb}}
*: {{Z|aeb}}: {{W-|aeb|كتاب|n|tr=ktēb}}
* {{Z|hy}}: {{W+|hy|գիրք}}
* {{Z|myv}}: {{W-|myv|конёвкс}}, {{W-|myv|кинига}}
* {{Z|eo}}: {{W+|eo|libro}}
* {{Z|et}}: {{W+|et|raamat}}
* {{Z|gez}}: {{W-|gez|መጽሐፍ}}
* {{Z|evn}}: {{W-|evn|книга}}
* {{Z|ee}}: {{W-|ee|agbalẽ}}
* {{Z|ext}}: {{W-|ext|llibru|n}}
* {{Z|fax}}: {{W-|fax|libru|n}}
* {{Z|fa}}: {{W+|fa|کِتاب|tr=ketâb}}, {{W+|fa|نَسک|tr=nask}}, {{W+|fa|نامِه|tr=nâme}}
* {{Z|fo}}: {{W+|fo|bók|m}}
* {{Z|fj}}: {{W+|fj|vola}}, {{W-|fj|ivola}}
* {{Z|fi}}: {{W+|fi|kirja}}
* {{Z|fr}}: {{W+|fr|livre|n}}, {{W+|fr|bouquin|n}}
* {{Z|fur}}: {{W-|fur|libri|n}}
* {{Z|frr}}: {{W-|frr|bök|nt}}, {{W-|frr|buk|nt}}
* {{Z|stq}}: {{W-|stq|Bouk|nt}}
* {{Z|fy}}: {{W+|fy|boek|nt}}
* {{Z|ff}}:
*: Adlamî: {{W-|ff|𞤣𞤫𞤬𞤼𞤫𞤪𞤫}}
*: Latînî: {{W-|ff|deftere}}
* {{Z|gd}}: {{W+|gd|leabhar|n}}
* {{Z|gag}}: {{W-|gag|kitap}}
* {{Z|gl}}: {{W+|gl|libro|n}}
* {{Z|glk}}: {{W-|glk|کیتاب|tr=kitāb}}
* {{Z|got}}: {{W-|got|𐌱𐍉𐌺𐍉𐍃|m-p}}
* {{Z|gu}}: {{W+|gu|પુસ્તક|m}}, {{W-|gu|ચોપડી}}
* {{Z|ka}}: {{W+|ka|წიგნი}}
* {{Z|gn}}: {{W+|gn|kuatiañe'ẽ}}, {{W-|gn|[[aranduka]]}}
* {{Z|ht}}: {{W-|ht|liv}}
* {{Z|haw}}: {{W-|haw|puke}}, {{W-|haw|liwele}}
* {{Z|ha}}: {{W+|ha|littafi}}
* {{Z|hi}}: {{W+|hi|पुस्तक|m}}, {{W+|hi|किताब|m}}, {{W+|hi|बुक|m}}, {{W+|hi|ग्रंथ|n}}, {{W+|hi|बही|m}}, {{W+|hi|पोथी|m}}, {{W+|hi|पोथा|n}}, {{W+|hi|पुस्तिका|m}}, {{W+|hi|सिफर}}
* {{Z|hil}}: {{W-|hil|tulún-an}}
* {{Z|meu}}: {{W-|meu|buka}}
* {{Z|hnj}}: {{W-|hnj|phoo}}, {{W-|hnj|phoo ntawv}}
* {{Z|mww}}: {{W-|mww|ntawv}}
* {{Z|nl}}: {{W+|nl|boek|nt}}
* {{Z|hrx}}: {{W-|hrx|Buch|nt}}
* {{Z|tts}}: {{W-|tts|ปึ้ง|tr=pụ̂ng}}
* {{Z|iba}}: {{W-|iba|surat}}, {{W-|iba|bup}}
* {{Z|he}}: {{W+|he|סֵפֶר|n|tr=séfer}}
* {{Z|io}}: {{W+|io|libro}}
* {{Z|ig}}: {{W-|ig|akwụkwọ}}
* {{Z|ang}}: {{W-|ang|bōc|m}}
* {{Z|enm}}: {{W-|enm|bok}}
* {{Z|en}}: {{W+|en|book}}
* {{Z|izh}}: {{W-|izh|kirja}}
* {{Z|inh}}: {{W-|inh|китаб}}
* {{Z|ia}}: {{W+|ia|libro}}
* {{Z|iu}}: {{W+|iu|ᕿᒥᕐᕈᐊᑦ}}
*: {{Z|iu}}: {{W-|iu|unikkausik}}
* {{Z|sga}}: {{W-|sga|lebor|n}}
* {{Z|ga}}: {{W+|ga|leabhar|n}}
* {{Z|ist}}: {{W-|ist|leîbro|n}}
* {{Z|it}}: {{W+|it|libro|n}}
* {{Z|is}}: {{W+|is|bók|m}}
* {{Z|ja}}: {{W+|ja|本|tr=ほん, hon}}, {{W+|ja|書籍|tr=しょせき, shoseki}}, {{W+|ja|ブック|tr=bukku}}
* {{Z|kaw}}: {{W-|kaw|tulis}}
* {{Z|jv}}: {{W+|jv|buku}}, {{W+|jv|layang}}, {{W-|jv|serat}}
* {{Z|kbd}}: {{W-|kbd|тхылъ}}
* {{Z|kab}}: {{W-|kab|adlis}}
* {{Z|kl}}: {{W-|kl|atuagaq}}
* {{Z|xal}}: {{W-|xal|дегтр}}
* {{Z|kn}}: {{W+|kn|ಪುಸ್ತಕ}}
* {{Z|krc}}: {{W-|krc|китап}}
* {{Z|kaa}}: {{W-|kaa|kitap}}
* {{Z|krl}}: {{W-|krl|kirju}}
* {{Z|csb}}: {{W-|csb|knéga|m}}, {{W-|csb|knyga|m}}, {{W-|csb|knëga|m}}, {{W-|csb|ksążka|m}}
* {{Z|ca}}: {{W+|ca|llibre|n}}
* {{Z|qu}}: {{W+|qu|liwru}}, {{W+|qu|p'anqa}}
* {{Z|ky}}: {{W+|ky|китеп}}
* {{Z|kg}}: {{W-|kg|dibuku}}
* {{Z|ki}}: {{W-|ki|rifuku}}
* {{Z|si}}: {{W+|si|පොත}}
* {{Z|rw}}: {{W-|rw|igitabo|c7|c8}}
* {{Z|gil}}: {{W-|gil|boki}}
* {{Z|kis}}: {{W-|kis|egetabu}}
* {{Z|kpv}}: {{W-|kpv|небӧг}}, {{W-|kpv|книга}}
* {{Z|kok}}: {{W-|kok|पुस्तक}}
* {{Z|ko}}: {{W-|ko|책(冊)}}, {{W-|ko|도서(圖書)}}
* {{Z|kw}}: {{W-|kw|lyver|n}}
* {{Z|co}}: {{W+|co|libru|n}}
* {{Z|lou}}: {{W-|lou|liv}}
* {{Z|mfe}}: {{W-|mfe|liv}}
* {{Z|crs}}: {{W-|crs|liv}}
* {{Z|kum}}: {{W-|kum|китап}}
* {{Z|fkv}}: {{W-|fkv|kirja}}
* {{Z|kj}}: {{W-|kj|embo}}
* {{Z|lad}}:
*: Îbranî: {{W-|lad|ליב׳רו|n}}
*: Latînî: {{W-|lad|livro|n}}
* {{Z|lbe}}: {{W-|lbe|лу}}
* {{Z|lkt}}: {{W-|lkt|wówapi}}
* {{Z|la}}: {{W+|la|liber|n}}, {{W-|la|caudex|n}}
* {{Z|lv}}: {{W+|lv|grāmata|m}}
* {{Z|lo}}: {{W+|lo|ປຶ້ມ}}, {{W+|lo|ປຶ້ມຂຽນ}}, {{W-|lo|ຫນັງສື}}, {{W-|lo|ສັດຖະ}}, {{W-|lo|ພັບ}}
* {{Z|lzz}}: {{W-|lzz|სუპარა}}
* {{Z|lez}}: {{W-|lez|улуб}}, {{W-|lez|ктаб}}, {{W-|lez|дафтар}}
* {{Z|mhx}}: {{W-|mhx|mug sug' paug'}}, {{W-|mhx|tung" paug'}}, {{W-|mhx|paug'}}
* {{Z|ln}}: {{W-|ln|búku|c9a|c10a}}
* {{Z|lij}}: {{W-|lij|lìbbro|n}}, {{W-|lij|libbro}}
* {{Z|li}}: {{W+|li|book|m}}
* {{Z|lt}}: {{W+|lt|knyga|m}}
* {{Z|liv}}: {{W-|liv|rōntõz}}
* {{Z|lmo}}: {{W-|lmo|liber}}
* {{Z|lg}}: {{W-|lg|ekitabo}}
* {{Z|luy}}: {{W-|luy|sitabu}}
* {{Z|lb}}: {{W+|lb|Buch|nt}}
* {{Z|mk}}: {{W+|mk|книга|m}}
* {{Z|mg}}: {{W+|mg|boky}}
* {{Z|ml}}: {{W+|ml|പുസ്തകം}}
* {{Z|pqm}}: {{W-|pqm|wikhikon}}
* {{Z|ms}}: {{W+|ms|buku}}, {{W+|ms|kitab}}, {{W+|ms|pustaka}}
* {{Z|mt}}: {{W+|mt|ktieb|n}}
* {{Z|mnc}}: {{W-|mnc|ᠪᡳᡨᡥᡝ}}, {{W-|mnc|ᠴᠠᡤᠠᠨ}}, {{W-|mnc|ᠨᠣᠮᡠᠨ}}
* {{Z|gv}}: {{W-|gv|lioar|n}}
* {{Z|mns-nor}}: {{W-|mns-nor|кнӣга}}
* {{Z|mi}}: {{W+|mi|pukapuka}}
* {{Z|mr}}: {{W+|mr|पुस्तक|m}}
* {{Z|mhr}}: {{W-|mhr|книга}}
* {{Z|mrc}}: {{W-|mrc|onyor}}
* {{Z|yua}}: {{W-|yua|juʼun}}
* {{Z|hu}}: {{W+|hu|könyv}}
* {{Z|xmf}}: {{W-|xmf|სუფარა|n}}, {{W-|xmf|წინგი}}
* {{Z|egy}}: {{W-egy|mḏꜣt|m|h=Y1:t*Z1-V12:Z1}}, {{W-egy|šfdw|n|h=S:f-d-w-V12}}
* {{Z|mvi}}: {{W-|mvi|書物|tr=すぃむくㇲ, simuks}}
* {{Z|mwl}}: {{W-|mwl|lhibro|n}}
* {{Z|mdf}}: {{W-|mdf|книга}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|ном}}, {{W+|mn|бичиг}}
*: Mongolî: {{W-|mn|ᠨᠣᠮ}}, {{W-|mn|ᠪᠢᠴᠢᠭ᠋}}
* {{Z|mnw}}: {{W-|mnw|လိက် အုပ်|tr=lòik up}}
* {{Z|wmw}}: {{W-|wmw|kitabu}}, {{W-|wmw|buku}}, {{W-|wmw|livro}}
* {{Z|nah}}: {{W+|nah|amoxtli}}
*: {{Z|nci}}: {{W-|nci|āmoxtli}}
* {{Z|gld}}: {{W-|gld|дангса}}
* {{Z|nap}}: {{W-|nap|lìbbro|n}}
* {{Z|nv}}: {{W-|nv|naaltsoos}}
* {{Z|nds}}:
*: {{Z|nds-nl}}: {{W-|nds-nl|book|nt}}
*: {{Z|nds-de}}: {{W-|nds-de|Book|nt}}
* {{Z|yrk}}: {{W-|yrk|книга}}, {{W-|yrk|толаӈгобць’}}
* {{Z|ne}}: {{W-|ne|पुस्तक}}, {{W+|ne|किताप}}
* {{Z|new}}: {{W-|new|सफू}}
* {{Z|niv}}: {{W-|niv|питғы}}
* {{Z|nog}}: {{W-|nog|китап}}
* {{Z|no}}:
*: {{Z|no}}: {{W+|no|bok|n|m}}
*: {{Z|nn}}: {{W+|nn|bok|m}}
* {{Z|ood}}: {{W-|ood|ʼoʼohana}}
* {{Z|ojw}}: {{W-|ojw|masinahikan}}
* {{Z|oj}}: {{W-|oj|mazina'igan}}
* {{Z|ryu}}: {{W-|ryu|書物|tr=すむち, sumuchi, しむち, shimuchi}}
* {{Z|pro}}: {{W-|pro|libre}}
* {{Z|oc}}: {{W+|oc|libre|n}}
* {{Z|or}}: {{W+|or|ବହି}}
* {{Z|oaa}}: {{W-|oaa|бичихэ}}
* {{Z|os}}: {{W-|os|чиныг}}
* {{Z|ota}}: {{W-|ota|كتاب|tr=kitâb}}
* {{Z|ug}}: {{W+|ug|كىتاب}}
* {{Z|uz}}: {{W+|uz|kitob}}
* {{Z|pi}}: {{W-|pi|potthaka}}
*: {{Z|pi}}: {{W-|pi|पोत्थक}}
*: {{Z|pi}}: {{W-|pi|โปตถะกะ}}
* {{Z|pap}}: {{W-|pap|buki}}
* {{Z|paw}}: {{W-|paw|raáwihaakaraaʾit}}, {{W-|paw|raáwihaakaraaʾiitusuʾ}}
* {{Z|ps}}: {{W+|ps|کتاب|n|tr=ketāb}}
* {{Z|pms}}: {{W-|pms|lìber}}
* {{Z|pdt}}: {{W-|pdt|Buak|nt}}
* {{Z|pox}}: {{W-|pox|bükvoi|p}}
* {{Z|pl}}: {{W+|pl|książka|m}}, {{W+|pl|księga|m}}
* {{Z|pt}}: {{W+|pt|livro|n}}
* {{Z|prg}}: {{W-|prg|lāiskas|n}}
* {{Z|pkp}}: {{W-|pkp|lau}}, {{W-|pkp|puka}}
* Puncabî:
*: Şaxmuxî: {{W+|pa|پستک|n}}, {{W+|pa|کتاب|m|tr=ktāb}}
*: Gurmuxî: {{W-|pa|ਪੁਸਤਕ|n}}, {{W-|pa|ਕਿਤਾਬ}}
* {{Z|kk}}: {{W+|kk|кітап}}
*: {{Z|kk}}: {{W-|kk|كىتاپ}}
* {{Z|cop}}: {{W-|cop|ϫⲱⲙ|n}}
* {{Z|rah}}: {{W-|rah|কাওছা|tr=káosa}}
* {{Z|mwr}}: {{W-|mwr|पोथी|tr=pothī|m}}
* {{Z|rgn}}: {{W-|rgn|lìvar|n}}
* {{Z|rm}}: {{W-|rm|cudesch}}
* {{Z|rom}}: {{W-|rom|ginadyi|m}}
* {{Z|ro}}: {{W+|ro|carte|m}}
* {{Z|ru}}: {{W+|ru|кни́га|m}}, {{W+|ru|кни́жка|m}}
* {{Z|rue}}: {{W-|rue|кни́га|m}}
* {{Z|se}}: {{W-|se|girji}}
* {{Z|sma}}: {{W-|sma|gærja}}
* {{Z|smn}}: {{W-|smn|kirje}}
* {{Z|sjd}}: {{W-|sjd|кыррьй}}, {{W-|sjd|кнӣга}}
* {{Z|smj}}: {{W-|smj|girjje}}
* {{Z|sms}}: {{W-|sms|ǩeʹrjj}}
* {{Z|sgs}}: {{W-|sgs|kninga|m}}
* {{Z|sa}}: {{W+|sa|पुस्तक|nt}}, {{W+|sa|ग्रन्थ|nt}}
* {{Z|scn}}: {{W+|scn|libbru|n}}
* {{Z|sky}}: {{W-|sky|laumea}}
* {{Z|szl}}: {{W-|szl|kniga|m}}
* {{Z|sd}}: {{W+|sd|ڪتاب|n|tr=kitāb|cuda=ڪِتابُ}}
* {{Z|srn}}: {{W-|srn|buku}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|књи̏га|m}}
*: Latînî: {{W+|sh|knjȉga|m}}
* {{Z|syc}}: {{W-|syc|ܟܬܒܐ|n|tr=kṯāḇā}}
* {{Z|syl}}: {{W-|syl|ꠛꠂ}}
* {{Z|sco}}: {{W-|sco|beuk}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|боукꙑ|m}}, {{W-|cu|кънигꙑ|m-p}}
* {{Z|orv}}: {{W-|orv|кънига|m}}
* {{Z|sk}}: {{W+|sk|kniha|m}}
* {{Z|sl}}: {{W+|sl|knjíga|m}}
* {{Z|zlw-slv}}: {{W-|zlw-slv|knega|m}}
* {{Z|so}}: {{W+|so|buug|n}}, {{W-|so|kitaab|n}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|knigły|m-p}}
*: {{Z|hsb}}: {{W-|hsb|kniha|m}}
* {{Z|st}}: {{W+|st|buka}}
* {{Z|es}}: {{W+|es|libro|n}}
* {{Z|su}}: {{W-|su|ᮘᮥᮊᮥ}}
* {{Z|xsv}}: {{W-|xsv|laiskas|n}}
* {{Z|sva}}: {{W-|sva|ლა̈ირ}}
* {{Z|sw}}: {{W+|sw|kitabu}}, {{W+|sw|vitabu|p}}
* {{Z|ss}}: {{W-|ss|íncwadzí|c9|c10}}
* {{Z|sv}}: {{W+|sv|bok|g}}
* {{Z|shn}}: {{W-|shn|ပပ်ႉ}}, {{W-|shn|ၸႃႇဢုၵ်ႉ}}
* {{Z|sn}}: {{W-|sn|bhuku}}
* {{Z|cjs}}: {{W-|cjs|ном|tr=nom}}, {{W-|cjs|книга}}
* {{Z|tab}}: {{W-|tab|китаб}}
* {{Z|tg}}: {{W+|tg|китоб}}
* {{Z|tl}}: {{W+|tl|libro}}, {{W+|tl|aklat}}
* {{Z|ta}}: {{W+|ta|நூல்}}, {{W+|ta|புத்தகம்}}
* {{Z|roa-tar}}: {{W-|roa-tar|libbre|n}}
* {{Z|shi}}: {{W-|shi|ⴰⵔⵔⴰ|n}}
* {{Z|th}}: {{W+|th|หนังสือ}}, {{W+|th|สมุด}}
* {{Z|te}}: {{W+|te|పుస్తకం}}, {{W-|te|పొత్తం}}
* {{Z|crh}}: {{W-|crh|kitap}}
* {{Z|tt}}: {{W+|tt|китап}}
* {{Z|tet}}: {{W-|tet|livru}}
* {{Z|tig}}: {{W-|tig|ክታብ}}
* {{Z|ti}}: {{W-|ti|መጽሓፍ}}, {{W-|ti|መጽሐፍ}}
* {{Z|otk}}: {{W-|otk|𐰋𐰃𐱅𐰏}}
* {{Z|tr}}: {{W+|tr|kitap}}, {{W+|tr|betik}}
* {{Z|tk}}: {{W-|tk|kitap}}
* {{Z|bo}}: {{W-|bo|དེབ}}, {{W-|bo|ཕྱག་དེབ}}
* {{Z|tli}}: {{W-|tli|x’úx’}}
* {{Z|tpi}}: {{W-|tpi|buk}}
* {{Z|txb}}: {{W-|txb|postak}}
* {{Z|tn}}: {{W+|tn|buka}}
* {{Z|tum}}: {{W-|tum|buku}}
* {{Z|tvl}}: {{W-|tvl|tusi}}
* {{Z|tyv}}: {{W-|tyv|ном}}
* {{Z|udi}}: {{W-|udi|ҝирк}}
* {{Z|udm}}: {{W-|udm|книга}}
* {{Z|unm}}: {{W-|unm|lekhikàn}}
* {{Z|ur}}: {{W+|ur|کِتاب|m|tr=kitāb}}, {{W-|ur|پُسْتَک|m|tr=pustak}}, {{W-|ur|بُک|m|tr=buk}}
* {{Z|urh}}: {{W-|urh|e̖be}}
* {{Z|uk}}: {{W-|uk|кни́жка|m}}, {{W+|uk|кни́га|m}}
* {{Z|vec}}: {{W-|vec|łìbro|n}}
* {{Z|vep}}: {{W-|vep|kirj}}
* {{Z|vi}}: {{W+|vi|sách}}, {{W+|vi|sổ}}, {{W+|vi|sách giáo khoa}}
* {{Z|vo}}: {{W+|vo|buk}}
* {{Z|vot}}: {{W-|vot|tširjõ}}
* {{Z|wa}}: {{W+|wa|live|n}}
* {{Z|war}}: {{W-|war|basahon}}, {{W-|war|barasahon}}
* {{Z|cy}}: {{W+|cy|llyfr|n}}
* {{Z|wrh}}: {{W-|wrh|garrandarang}}
* {{Z|wym}}: {{W-|wym|bihła|nt}}, {{W-|wym|büch}}
* {{Z|wo}}: {{W-|wo|[[tééré]] bi}}, {{W+|wo|téere}}
* {{Z|wuh}}: {{W-|wuh|huaiqa}}
* {{Z|kjh}}: {{W-|kjh|кинде}}
* {{Z|km}}: {{W+|km|សៀវភៅ}}
* {{Z|xh}}: {{W-|xh|incwadi|c9|c10}}
* {{Z|yai}}: {{W-|yai|китоб}}
* {{Z|sah}}: {{W-|sah|кинигэ}}
* {{Z|tao}}: {{W-|tao|vakong}}
* {{Z|yi}}: {{W-|yi|בוך|nt}}, {{W-|yi|ספֿר|n|tr=seyfer}}, {{W-|yi|חיבור|n|tr=khiber}}
* {{Z|yo}}: {{W-|yo|ìwé}}
* {{Z|el}}: {{W+|el|βιβλίο|nt}}, {{W+|el|τόμος|n}}
*: Kevn: {{W-|grc|βιβλίον|nt}}
* {{Z|za}}: {{W-|za|saw}}
* {{Z|zu}}: {{W+|zu|ibhuku|c5|c6}}, {{W+|zu|incwadi|c9|c10}}
{{werger-bin}}
:{{werger çavkanî|en|book|oldid=75472768|beş=Ev qismê Wergerê}}
ncnm7f6xfegknkziwfso7es7j2fmgt6
6329667
6329666
2026-08-12T16:44:09Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329667
wikitext
text/x-wiki
{{bnr-h|kiteb|Kitêb}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|k(h)itêb}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kitêb.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Latin_dictionary.jpg|thumb|Kitêb]]
{{navdêr|ku|z=m}}
# [[kom|Komeke]] [[kaxez]]ên bi [[nivîs]] û / yan [[resm]] yên di nav [[berg]]ekî de hatine [[çap]]kirin.
#: {{hevmane|ku|pirtûk}}
#: {{mk|ku|Wê rûpela 50 ya '''kitêbê''' vekir û dest bi xwendinê kir.}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizirî/Dîwan/2004|r=44}}|jêgirtin=Me ji ser çeşmeyê ḥeywan qedeḥek ṣafî vexwar<br>Nagihî lez̤z̤et û z̤ewqa me bi ṣed cildê '''kitab'''}}
#* {{Jêgirtin/Feqiyê Teyran|sernav=Feqiyê Teyran jiyan berhem û helbestên wî|sala-weşandinê=2013|weşanxane=Nûbihar|çap=7|rûpel=130|amadekar=M. Xalid Sadinî|jêgirtin=Agir û pêta di dil da<br>Me„neya daxan ku hilda<br>Ew '''kitab''' naçit tu cilda<br>Hafîzê medhan im ez}}
#* {{jêder-kitêb|ku|jêgirtin=We neẓertu fîl-kîtabî, yanî ez daxilê xanî bûm û min neẓer li '''kitêbê''' kir.|sernav=Tesrîfa Teremaxî|nivîskar={{w|Elî Teremaxî}}|r=64|amadekar=Aydın Üneşi|sal=~1600|sala weşandinê=2016|cih=Mêrdin}}
#* {{jêder-kitêb|ku|jêgirtin=Ji şaîrê Kurmancan, bi zimanê Kurmancî, di tarîxa hezar û şeşsedî de di qeseba Bayezîdê de, hezretî Ehmedê Xanî '''kitêba''' ku telîf kiriye bi wezn bi nave Mem û Zînê, aşiq û maşûq, li weche muxtesr beyana wan dike.|sal=~1850|nivîskar={{w|Mele Mehmûdê Bazîdî}}|sernav=Mem û Zîn|sala weşandinê=2007|weşanxane=Lîs|r=23|amadekar=Xelîl Duhokî}}
#* {{jêder-kitêb|ku|jêgirtin=Mirovek xwenda, alim hebî, nave wî "Ehmede Xanî" bî{{sic}}. Xwedê jê razî be, rehmeta Xwedê lê be, vî mirovî hin '''kitêbên''' Kurmancî nivîsîne.|sernav=Kurdistan|sal=1898|r=123|amadekar=M. Emîn Bozarslan|nivîskar={{w|Miqdad Midhet Bedirxan}}|sala weşandinê=1991|cild=1}}
#* {{jêder|ku|jêgirtin=- Ma lê, ji te xeyidîme, ma çawan ji te naxeyidim. Te ez avêtim nav '''kitêb''' û kaxizan, te ez kirim hogir û hevala bermayên [[qaşûl]]ên dar û qirş û [[hevser]]a [[caw]] û [[potik]]ên [[zibilgeh]]ê.|''Gazinda Xencera Min, Hawar'', [[w:Celadet Alî Bedir-Xan|Celadet Alî Bedir-Xan]], hejmar 12}}
# Her kitêba [[miqeddes]] wekî [[Qur'an]] an [[Încîl]].
#* {{jêder-kitêb|ku|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê|sernav=Încîl|sal=1872|r=105|nivîskar=Madteos|amadekar=İlyas Sayım|sala weşandinê=2024}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din====
* {{ku-ar|کتێب}}
* {{ku-kr|к'ьтеб}}
==== Jê ====
{{kol3|ku|cure=Jê
|kitêbdank
|kitêbdost
|kitêbdostî
|kitêbfiroş
|kitêbfiroşgeh
|kitêbfiroşxane
|kitêbgeh
|kitêbhez
|kitêbhezî
|kitêbik
|kitêbî
|kitêbk
|kitêbxane
|kitêbxanevan
|kitêbxanevanî
|kitêbyar
|kitêbyarî
}}
==== Etîmolojî ====
{{root|ku|ar|ك ت ب}}
Ji {{deyn|ar|ku|كِتَاب}} ji reha {{ar-reh|ك ت ب|nekat=1}} ''têkilî rêzkirinê û çêkirina rêzikan ji wê yekê jî têkilî nivîsînê'', ji {{mîr|sem-wes-pro|ar|*katab-|w=xurandin, xeritandin}}. Ev reh koka peyvin din jî ne weku: {{q|ku|katib}}, {{q|ku|mekteb}}, {{q|ku|ketîbe}}.
==== Bide ber ====
{{kol3|ku
|belavok
|defter
|kovar
|namilke
|rojname
}}
==== Werger ====
{{werger-ser|koma kaxezan}}
* {{Z|abq}}: {{W-|abq|книга}}, {{W-|abq|апхьага}}, {{W-|abq|кьтап}}
* {{Z|ab}}: {{W-|ab|ашәҟәы}}
* {{Z|ady}}: {{W-|ady|тхылъ}}
* {{Z|aa}}: {{W-|aa|kitab}}
* {{Z|af}}: {{W+|af|boek}}
* {{Z|xag}}: {{W-|xag|𐕁𐔼𐕗}}
* {{Z|akz}}: {{W-|akz|holisso}}
* {{Z|sq}}: {{W+|sq|libër|n}}
* {{Z|de}}: {{W+|de|Buch|nt}}
*: {{Z|gsw}}: {{W-|gsw|Buech|nt}}
*: {{Z|gmw-cfr}}: {{W-|gmw-cfr|Boch|nt}}
*: {{Z|pdc}}: {{W-|pdc|Buch|nt}}
* {{Z|alt}}: {{W-|alt|бичик}}, {{W-|alt|книга}}
* {{Z|abs}}: {{W-|abs|buku}}
* {{Z|am}}: {{W-|am|መጽሃፍ}}
* Apaçî:
*: {{Z|apw}}: {{W-|apw|nałtsoos}}
* {{Z|an}}: {{W-|an|libro|n}}
* {{Z|rup}}: {{W-|rup|vivlie}}, {{W-|rup|carte}}
* {{Z|as}}: {{W-|as|কিতাপ}}, {{W-|as|পুথি}}
* {{Z|ast}}: {{W+|ast|llibru|n}}
* {{Z|tay}}: {{W-|tay|biru'}}
* {{Z|aot}}: {{W-|aot|kitap}}
* {{Z|av}}: {{W-|av|тӏехь}}, {{W-|av|таптар}}, {{W-|av|тӏахьал}}
* {{Z|ay}}: {{W-|ay|panka}}
* {{Z|ain}}: {{W-|ain|カㇺビソㇱ|tr=kambisosh}}
* {{Z|az}}: {{W+|az|kitab}}
* {{Z|bm}}: {{W-|bm|gafɛ}}
* {{Z|eu}}: {{W+|eu|liburu}}
* {{Z|ba}}: {{W-|ba|китап}}
* {{Z|be}}: {{W+|be|кні́га|m}}, {{W-|be|кні́жка|m}}
* {{Z|bn}}: {{W+|bn|বই}}, {{W+|bn|কিতাব}}, {{W+|bn|গ্রন্থ}}, {{W+|bn|পুস্তক}}
* {{Z|bth}}: {{W-|bth|buk}}
* {{Z|bi}}: {{W-|bi|buk}}
* {{Z|br}}: {{W+|br|levr|n}}
* {{Z|bg}}: {{W+|bg|кни́га|m}}
* {{Z|my}}: {{W+|my|စာအုပ်}}
* {{Z|bua}}: {{W-|bua|ном}}
* {{Z|kac}}: {{W-|kac|laika buk}}
* {{Z|ch}}: {{W-|ch|lepblo}}
* {{Z|chg}}: {{W-|chg|كتاب|tr=kitab}}
* {{Z|ce}}: {{W-|ce|кинишка}}, {{W-|ce|китаб}}, {{W-|ce|книга}}, {{W-|ce|книшка}}, {{W-|ce|кинчка}}, {{W-|ce|жайна}}
* {{Z|cs}}: {{W+|cs|kniha|m}}
* {{Z|chr}}: {{W-|chr|ᏗᎪᏪᎵ}}, {{W+|chr|ᎪᏪᎵ}}
* {{Z|chy}}: {{W-|chy|mȯxe'ėstoo'e}}
* {{Z|ny}}: {{W-|ny|buku}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|書}}
*: {{Z|dng}}: {{W-|dng|фу}}
*: {{Z|gan}}: {{W-|gan|書}}
*: {{Z|hak}}: {{W-|hak|書|tr=sû}}
*: {{Z|cjy}}: {{W-|cjy|書}}
*: {{Z|cmn}}: {{W+|cmn|書}}
*: {{Z|mnp}}: {{W-|mnp|書}}
*: {{Z|cdo}}: {{W-|cdo|書}}
*: {{Z|nan}}: {{W+|nan|冊|tr=chheh}}, {{W+|nan|書|tr=chu}}
*: {{Z|wuu}}: {{W-|wuu|書}}
*: {{Z|hsn}}: {{W-|hsn|書}}
* {{Z|cv}}: {{W-|cv|кӗнеке}}
* {{Z|dlm}}: {{W-|dlm|lebro|n}}
* {{Z|da}}: {{W+|da|bog|g}}
* {{Z|dv}}: {{W-|dv|ފޮތް}}
* {{Z|dtp}}: {{W-|dtp|buuk}}
* {{Z|ovd}}: {{W-|ovd|buok|m}}
* {{Z|id}}: {{W+|id|buku}}, {{W+|id|kitab}}
* {{Z|ar}}: {{W+|ar|كِتَاب|n}}
*: {{Z|arq}}: {{W-|arq|كتاب|n|tr=ktāb}}
*: {{Z|arz}}: {{W-|arz|كتاب|n|tr=ketāb}}
*: {{Z|acm}}: {{W-|acm|كِتَاب|n}}
*: {{Z|ary}}: {{W-|ary|كتاب|n|tr=ktāb}}
*: {{Z|apc}}: {{W-|apc|كتاب|tr=ktāb, ktēb}}
*: {{Z|aeb}}: {{W-|aeb|كتاب|n|tr=ktēb}}
* {{Z|hy}}: {{W+|hy|գիրք}}
* {{Z|myv}}: {{W-|myv|конёвкс}}, {{W-|myv|кинига}}
* {{Z|eo}}: {{W+|eo|libro}}
* {{Z|et}}: {{W+|et|raamat}}
* {{Z|gez}}: {{W-|gez|መጽሐፍ}}
* {{Z|evn}}: {{W-|evn|книга}}
* {{Z|ee}}: {{W-|ee|agbalẽ}}
* {{Z|ext}}: {{W-|ext|llibru|n}}
* {{Z|fax}}: {{W-|fax|libru|n}}
* {{Z|fa}}: {{W+|fa|کِتاب|tr=ketâb}}, {{W+|fa|نَسک|tr=nask}}, {{W+|fa|نامِه|tr=nâme}}
* {{Z|fo}}: {{W+|fo|bók|m}}
* {{Z|fj}}: {{W+|fj|vola}}, {{W-|fj|ivola}}
* {{Z|fi}}: {{W+|fi|kirja}}
* {{Z|fr}}: {{W+|fr|livre|n}}, {{W+|fr|bouquin|n}}
* {{Z|fur}}: {{W-|fur|libri|n}}
* {{Z|frr}}: {{W-|frr|bök|nt}}, {{W-|frr|buk|nt}}
* {{Z|stq}}: {{W-|stq|Bouk|nt}}
* {{Z|fy}}: {{W+|fy|boek|nt}}
* {{Z|ff}}:
*: Adlamî: {{W-|ff|𞤣𞤫𞤬𞤼𞤫𞤪𞤫}}
*: Latînî: {{W-|ff|deftere}}
* {{Z|gd}}: {{W+|gd|leabhar|n}}
* {{Z|gag}}: {{W-|gag|kitap}}
* {{Z|gl}}: {{W+|gl|libro|n}}
* {{Z|glk}}: {{W-|glk|کیتاب|tr=kitāb}}
* {{Z|got}}: {{W-|got|𐌱𐍉𐌺𐍉𐍃|m-p}}
* {{Z|gu}}: {{W+|gu|પુસ્તક|m}}, {{W-|gu|ચોપડી}}
* {{Z|ka}}: {{W+|ka|წიგნი}}
* {{Z|gn}}: {{W+|gn|kuatiañe'ẽ}}, {{W-|gn|[[aranduka]]}}
* {{Z|ht}}: {{W-|ht|liv}}
* {{Z|haw}}: {{W-|haw|puke}}, {{W-|haw|liwele}}
* {{Z|ha}}: {{W+|ha|littafi}}
* {{Z|hi}}: {{W+|hi|पुस्तक|m}}, {{W+|hi|किताब|m}}, {{W+|hi|बुक|m}}, {{W+|hi|ग्रंथ|n}}, {{W+|hi|बही|m}}, {{W+|hi|पोथी|m}}, {{W+|hi|पोथा|n}}, {{W+|hi|पुस्तिका|m}}, {{W+|hi|सिफर}}
* {{Z|hil}}: {{W-|hil|tulún-an}}
* {{Z|meu}}: {{W-|meu|buka}}
* {{Z|hnj}}: {{W-|hnj|phoo}}, {{W-|hnj|phoo ntawv}}
* {{Z|mww}}: {{W-|mww|ntawv}}
* {{Z|nl}}: {{W+|nl|boek|nt}}
* {{Z|hrx}}: {{W-|hrx|Buch|nt}}
* {{Z|tts}}: {{W-|tts|ปึ้ง|tr=pụ̂ng}}
* {{Z|iba}}: {{W-|iba|surat}}, {{W-|iba|bup}}
* {{Z|he}}: {{W+|he|סֵפֶר|n|tr=séfer}}
* {{Z|io}}: {{W+|io|libro}}
* {{Z|ig}}: {{W-|ig|akwụkwọ}}
* {{Z|ang}}: {{W-|ang|bōc|m}}
* {{Z|enm}}: {{W-|enm|bok}}
* {{Z|en}}: {{W+|en|book}}
* {{Z|izh}}: {{W-|izh|kirja}}
* {{Z|inh}}: {{W-|inh|китаб}}
* {{Z|ia}}: {{W+|ia|libro}}
* {{Z|iu}}: {{W+|iu|ᕿᒥᕐᕈᐊᑦ}}
*: {{Z|iu}}: {{W-|iu|unikkausik}}
* {{Z|sga}}: {{W-|sga|lebor|n}}
* {{Z|ga}}: {{W+|ga|leabhar|n}}
* {{Z|ist}}: {{W-|ist|leîbro|n}}
* {{Z|it}}: {{W+|it|libro|n}}
* {{Z|is}}: {{W+|is|bók|m}}
* {{Z|ja}}: {{W+|ja|本|tr=ほん, hon}}, {{W+|ja|書籍|tr=しょせき, shoseki}}, {{W+|ja|ブック|tr=bukku}}
* {{Z|kaw}}: {{W-|kaw|tulis}}
* {{Z|jv}}: {{W+|jv|buku}}, {{W+|jv|layang}}, {{W-|jv|serat}}
* {{Z|kbd}}: {{W-|kbd|тхылъ}}
* {{Z|kab}}: {{W-|kab|adlis}}
* {{Z|kl}}: {{W-|kl|atuagaq}}
* {{Z|xal}}: {{W-|xal|дегтр}}
* {{Z|kn}}: {{W+|kn|ಪುಸ್ತಕ}}
* {{Z|krc}}: {{W-|krc|китап}}
* {{Z|kaa}}: {{W-|kaa|kitap}}
* {{Z|krl}}: {{W-|krl|kirju}}
* {{Z|csb}}: {{W-|csb|knéga|m}}, {{W-|csb|knyga|m}}, {{W-|csb|knëga|m}}, {{W-|csb|ksążka|m}}
* {{Z|ca}}: {{W+|ca|llibre|n}}
* {{Z|qu}}: {{W+|qu|liwru}}, {{W+|qu|p'anqa}}
* {{Z|ky}}: {{W+|ky|китеп}}
* {{Z|kg}}: {{W-|kg|dibuku}}
* {{Z|ki}}: {{W-|ki|rifuku}}
* {{Z|si}}: {{W+|si|පොත}}
* {{Z|rw}}: {{W-|rw|igitabo|c7|c8}}
* {{Z|gil}}: {{W-|gil|boki}}
* {{Z|kis}}: {{W-|kis|egetabu}}
* {{Z|kpv}}: {{W-|kpv|небӧг}}, {{W-|kpv|книга}}
* {{Z|kok}}: {{W-|kok|पुस्तक}}
* {{Z|ko}}: {{W-|ko|책(冊)}}, {{W-|ko|도서(圖書)}}
* {{Z|kw}}: {{W-|kw|lyver|n}}
* {{Z|co}}: {{W+|co|libru|n}}
* {{Z|lou}}: {{W-|lou|liv}}
* {{Z|mfe}}: {{W-|mfe|liv}}
* {{Z|crs}}: {{W-|crs|liv}}
* {{Z|kum}}: {{W-|kum|китап}}
* {{Z|fkv}}: {{W-|fkv|kirja}}
* {{Z|kj}}: {{W-|kj|embo}}
* {{Z|lad}}:
*: Îbranî: {{W-|lad|ליב׳רו|n}}
*: Latînî: {{W-|lad|livro|n}}
* {{Z|lbe}}: {{W-|lbe|лу}}
* {{Z|lkt}}: {{W-|lkt|wówapi}}
* {{Z|la}}: {{W+|la|liber|n}}, {{W-|la|caudex|n}}
* {{Z|lv}}: {{W+|lv|grāmata|m}}
* {{Z|lo}}: {{W+|lo|ປຶ້ມ}}, {{W+|lo|ປຶ້ມຂຽນ}}, {{W-|lo|ຫນັງສື}}, {{W-|lo|ສັດຖະ}}, {{W-|lo|ພັບ}}
* {{Z|lzz}}: {{W-|lzz|სუპარა}}
* {{Z|lez}}: {{W-|lez|улуб}}, {{W-|lez|ктаб}}, {{W-|lez|дафтар}}
* {{Z|mhx}}: {{W-|mhx|mug sug' paug'}}, {{W-|mhx|tung" paug'}}, {{W-|mhx|paug'}}
* {{Z|ln}}: {{W-|ln|búku|c9a|c10a}}
* {{Z|lij}}: {{W-|lij|lìbbro|n}}, {{W-|lij|libbro}}
* {{Z|li}}: {{W+|li|book|m}}
* {{Z|lt}}: {{W+|lt|knyga|m}}
* {{Z|liv}}: {{W-|liv|rōntõz}}
* {{Z|lmo}}: {{W-|lmo|liber}}
* {{Z|lg}}: {{W-|lg|ekitabo}}
* {{Z|luy}}: {{W-|luy|sitabu}}
* {{Z|lb}}: {{W+|lb|Buch|nt}}
* {{Z|mk}}: {{W+|mk|книга|m}}
* {{Z|mg}}: {{W+|mg|boky}}
* {{Z|ml}}: {{W+|ml|പുസ്തകം}}
* {{Z|pqm}}: {{W-|pqm|wikhikon}}
* {{Z|ms}}: {{W+|ms|buku}}, {{W+|ms|kitab}}, {{W+|ms|pustaka}}
* {{Z|mt}}: {{W+|mt|ktieb|n}}
* {{Z|mnc}}: {{W-|mnc|ᠪᡳᡨᡥᡝ}}, {{W-|mnc|ᠴᠠᡤᠠᠨ}}, {{W-|mnc|ᠨᠣᠮᡠᠨ}}
* {{Z|gv}}: {{W-|gv|lioar|n}}
* {{Z|mns-nor}}: {{W-|mns-nor|кнӣга}}
* {{Z|mi}}: {{W+|mi|pukapuka}}
* {{Z|mr}}: {{W+|mr|पुस्तक|m}}
* {{Z|mhr}}: {{W-|mhr|книга}}
* {{Z|mrc}}: {{W-|mrc|onyor}}
* {{Z|yua}}: {{W-|yua|juʼun}}
* {{Z|hu}}: {{W+|hu|könyv}}
* {{Z|xmf}}: {{W-|xmf|სუფარა|n}}, {{W-|xmf|წინგი}}
* {{Z|egy}}: {{W-egy|mḏꜣt|m|h=Y1:t*Z1-V12:Z1}}, {{W-egy|šfdw|n|h=S:f-d-w-V12}}
* {{Z|mvi}}: {{W-|mvi|書物|tr=すぃむくㇲ, simuks}}
* {{Z|mwl}}: {{W-|mwl|lhibro|n}}
* {{Z|mdf}}: {{W-|mdf|книга}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|ном}}, {{W+|mn|бичиг}}
*: Mongolî: {{W-|mn|ᠨᠣᠮ}}, {{W-|mn|ᠪᠢᠴᠢᠭ᠋}}
* {{Z|mnw}}: {{W-|mnw|လိက် အုပ်|tr=lòik up}}
* {{Z|wmw}}: {{W-|wmw|kitabu}}, {{W-|wmw|buku}}, {{W-|wmw|livro}}
* {{Z|nah}}: {{W+|nah|amoxtli}}
*: {{Z|nci}}: {{W-|nci|āmoxtli}}
* {{Z|gld}}: {{W-|gld|дангса}}
* {{Z|nap}}: {{W-|nap|lìbbro|n}}
* {{Z|nv}}: {{W-|nv|naaltsoos}}
* {{Z|nds}}:
*: {{Z|nds-nl}}: {{W-|nds-nl|book|nt}}
*: {{Z|nds-de}}: {{W-|nds-de|Book|nt}}
* {{Z|yrk}}: {{W-|yrk|книга}}, {{W-|yrk|толаӈгобць’}}
* {{Z|ne}}: {{W-|ne|पुस्तक}}, {{W+|ne|किताप}}
* {{Z|new}}: {{W-|new|सफू}}
* {{Z|niv}}: {{W-|niv|питғы}}
* {{Z|nog}}: {{W-|nog|китап}}
* {{Z|no}}:
*: {{Z|no}}: {{W+|no|bok|n|m}}
*: {{Z|nn}}: {{W+|nn|bok|m}}
* {{Z|ood}}: {{W-|ood|ʼoʼohana}}
* {{Z|ojw}}: {{W-|ojw|masinahikan}}
* {{Z|oj}}: {{W-|oj|mazina'igan}}
* {{Z|ryu}}: {{W-|ryu|書物|tr=すむち, sumuchi, しむち, shimuchi}}
* {{Z|pro}}: {{W-|pro|libre}}
* {{Z|oc}}: {{W+|oc|libre|n}}
* {{Z|or}}: {{W+|or|ବହି}}
* {{Z|oaa}}: {{W-|oaa|бичихэ}}
* {{Z|os}}: {{W-|os|чиныг}}
* {{Z|ota}}: {{W-|ota|كتاب|tr=kitâb}}
* {{Z|ug}}: {{W+|ug|كىتاب}}
* {{Z|uz}}: {{W+|uz|kitob}}
* {{Z|pi}}: {{W-|pi|potthaka}}
*: {{Z|pi}}: {{W-|pi|पोत्थक}}
*: {{Z|pi}}: {{W-|pi|โปตถะกะ}}
* {{Z|pap}}: {{W-|pap|buki}}
* {{Z|paw}}: {{W-|paw|raáwihaakaraaʾit}}, {{W-|paw|raáwihaakaraaʾiitusuʾ}}
* {{Z|ps}}: {{W+|ps|کتاب|n|tr=ketāb}}
* {{Z|pms}}: {{W-|pms|lìber}}
* {{Z|pdt}}: {{W-|pdt|Buak|nt}}
* {{Z|pox}}: {{W-|pox|bükvoi|p}}
* {{Z|pl}}: {{W+|pl|książka|m}}, {{W+|pl|księga|m}}
* {{Z|pt}}: {{W+|pt|livro|n}}
* {{Z|prg}}: {{W-|prg|lāiskas|n}}
* {{Z|pkp}}: {{W-|pkp|lau}}, {{W-|pkp|puka}}
* Puncabî:
*: Şaxmuxî: {{W+|pa|پستک|n}}, {{W+|pa|کتاب|m|tr=ktāb}}
*: Gurmuxî: {{W-|pa|ਪੁਸਤਕ|n}}, {{W-|pa|ਕਿਤਾਬ}}
* {{Z|kk}}: {{W+|kk|кітап}}
*: {{Z|kk}}: {{W-|kk|كىتاپ}}
* {{Z|cop}}: {{W-|cop|ϫⲱⲙ|n}}
* {{Z|rah}}: {{W-|rah|কাওছা|tr=káosa}}
* {{Z|mwr}}: {{W-|mwr|पोथी|tr=pothī|m}}
* {{Z|rgn}}: {{W-|rgn|lìvar|n}}
* {{Z|rm}}: {{W-|rm|cudesch}}
* {{Z|rom}}: {{W-|rom|ginadyi|m}}
* {{Z|ro}}: {{W+|ro|carte|m}}
* {{Z|ru}}: {{W+|ru|кни́га|m}}, {{W+|ru|кни́жка|m}}
* {{Z|rue}}: {{W-|rue|кни́га|m}}
* {{Z|se}}: {{W-|se|girji}}
* {{Z|sma}}: {{W-|sma|gærja}}
* {{Z|smn}}: {{W-|smn|kirje}}
* {{Z|sjd}}: {{W-|sjd|кыррьй}}, {{W-|sjd|кнӣга}}
* {{Z|smj}}: {{W-|smj|girjje}}
* {{Z|sms}}: {{W-|sms|ǩeʹrjj}}
* {{Z|sgs}}: {{W-|sgs|kninga|m}}
* {{Z|sa}}: {{W+|sa|पुस्तक|nt}}, {{W+|sa|ग्रन्थ|nt}}
* {{Z|scn}}: {{W+|scn|libbru|n}}
* {{Z|sky}}: {{W-|sky|laumea}}
* {{Z|szl}}: {{W-|szl|kniga|m}}
* {{Z|sd}}: {{W+|sd|ڪتاب|n|tr=kitāb|cuda=ڪِتابُ}}
* {{Z|srn}}: {{W-|srn|buku}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|књи̏га|m}}
*: Latînî: {{W+|sh|knjȉga|m}}
* {{Z|syc}}: {{W-|syc|ܟܬܒܐ|n|tr=kṯāḇā}}
* {{Z|syl}}: {{W-|syl|ꠛꠂ}}
* {{Z|sco}}: {{W-|sco|beuk}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|боукꙑ|m}}, {{W-|cu|кънигꙑ|m-p}}
* {{Z|orv}}: {{W-|orv|кънига|m}}
* {{Z|sk}}: {{W+|sk|kniha|m}}
* {{Z|sl}}: {{W+|sl|knjíga|m}}
* {{Z|zlw-slv}}: {{W-|zlw-slv|knega|m}}
* {{Z|so}}: {{W+|so|buug|n}}, {{W-|so|kitaab|n}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|knigły|m-p}}
*: {{Z|hsb}}: {{W-|hsb|kniha|m}}
* {{Z|st}}: {{W+|st|buka}}
* {{Z|es}}: {{W+|es|libro|n}}
* {{Z|su}}: {{W-|su|ᮘᮥᮊᮥ}}
* {{Z|xsv}}: {{W-|xsv|laiskas|n}}
* {{Z|sva}}: {{W-|sva|ლა̈ირ}}
* {{Z|sw}}: {{W+|sw|kitabu}}, {{W+|sw|vitabu|p}}
* {{Z|ss}}: {{W-|ss|íncwadzí|c9|c10}}
* {{Z|sv}}: {{W+|sv|bok|g}}
* {{Z|shn}}: {{W-|shn|ပပ်ႉ}}, {{W-|shn|ၸႃႇဢုၵ်ႉ}}
* {{Z|sn}}: {{W-|sn|bhuku}}
* {{Z|cjs}}: {{W-|cjs|ном|tr=nom}}, {{W-|cjs|книга}}
* {{Z|tab}}: {{W-|tab|китаб}}
* {{Z|tg}}: {{W+|tg|китоб}}
* {{Z|tl}}: {{W+|tl|libro}}, {{W+|tl|aklat}}
* {{Z|ta}}: {{W+|ta|நூல்}}, {{W+|ta|புத்தகம்}}
* {{Z|roa-tar}}: {{W-|roa-tar|libbre|n}}
* {{Z|shi}}: {{W-|shi|ⴰⵔⵔⴰ|n}}
* {{Z|th}}: {{W+|th|หนังสือ}}, {{W+|th|สมุด}}
* {{Z|te}}: {{W+|te|పుస్తకం}}, {{W-|te|పొత్తం}}
* {{Z|crh}}: {{W-|crh|kitap}}
* {{Z|tt}}: {{W+|tt|китап}}
* {{Z|tet}}: {{W-|tet|livru}}
* {{Z|tig}}: {{W-|tig|ክታብ}}
* {{Z|ti}}: {{W-|ti|መጽሓፍ}}, {{W-|ti|መጽሐፍ}}
* {{Z|otk}}: {{W-|otk|𐰋𐰃𐱅𐰏}}
* {{Z|tr}}: {{W+|tr|kitap}}, {{W+|tr|betik}}
* {{Z|tk}}: {{W-|tk|kitap}}
* {{Z|bo}}: {{W-|bo|དེབ}}, {{W-|bo|ཕྱག་དེབ}}
* {{Z|tli}}: {{W-|tli|x’úx’}}
* {{Z|tpi}}: {{W-|tpi|buk}}
* {{Z|txb}}: {{W-|txb|postak}}
* {{Z|tn}}: {{W+|tn|buka}}
* {{Z|tum}}: {{W-|tum|buku}}
* {{Z|tvl}}: {{W-|tvl|tusi}}
* {{Z|tyv}}: {{W-|tyv|ном}}
* {{Z|udi}}: {{W-|udi|ҝирк}}
* {{Z|udm}}: {{W-|udm|книга}}
* {{Z|unm}}: {{W-|unm|lekhikàn}}
* {{Z|ur}}: {{W+|ur|کِتاب|m|tr=kitāb}}, {{W-|ur|پُسْتَک|m|tr=pustak}}, {{W-|ur|بُک|m|tr=buk}}
* {{Z|urh}}: {{W-|urh|e̖be}}
* {{Z|uk}}: {{W-|uk|кни́жка|m}}, {{W+|uk|кни́га|m}}
* {{Z|vec}}: {{W-|vec|łìbro|n}}
* {{Z|vep}}: {{W-|vep|kirj}}
* {{Z|vi}}: {{W+|vi|sách}}, {{W+|vi|sổ}}, {{W+|vi|sách giáo khoa}}
* {{Z|vo}}: {{W+|vo|buk}}
* {{Z|vot}}: {{W-|vot|tširjõ}}
* {{Z|wa}}: {{W+|wa|live|n}}
* {{Z|war}}: {{W-|war|basahon}}, {{W-|war|barasahon}}
* {{Z|cy}}: {{W+|cy|llyfr|n}}
* {{Z|wrh}}: {{W-|wrh|garrandarang}}
* {{Z|wym}}: {{W-|wym|bihła|nt}}, {{W-|wym|büch}}
* {{Z|wo}}: {{W-|wo|[[tééré]] bi}}, {{W+|wo|téere}}
* {{Z|wuh}}: {{W-|wuh|huaiqa}}
* {{Z|kjh}}: {{W-|kjh|кинде}}
* {{Z|km}}: {{W+|km|សៀវភៅ}}
* {{Z|xh}}: {{W-|xh|incwadi|c9|c10}}
* {{Z|yai}}: {{W-|yai|китоб}}
* {{Z|sah}}: {{W-|sah|кинигэ}}
* {{Z|tao}}: {{W-|tao|vakong}}
* {{Z|yi}}: {{W-|yi|בוך|nt}}, {{W-|yi|ספֿר|n|tr=seyfer}}, {{W-|yi|חיבור|n|tr=khiber}}
* {{Z|yo}}: {{W-|yo|ìwé}}
* {{Z|el}}: {{W+|el|βιβλίο|nt}}, {{W+|el|τόμος|n}}
*: Kevn: {{W-|grc|βιβλίον|nt}}
* {{Z|za}}: {{W-|za|saw}}
* {{Z|zu}}: {{W+|zu|ibhuku|c5|c6}}, {{W+|zu|incwadi|c9|c10}}
{{werger-bin}}
:{{werger çavkanî|en|book|oldid=75472768|beş=Ev qismê Wergerê}}
1zcm29f1g981g5xo754shri3pqv98kq
6329787
6329667
2026-08-12T22:18:00Z
Wikihez
7344
6329787
wikitext
text/x-wiki
{{bnr-h|kiteb|Kitêb}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA|k(h)itêb}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kitêb.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Latin_dictionary.jpg|thumb|Kitêb]]
{{navdêr|ku|z=m}}
# [[kom|Komeke]] [[kaxez]]ên bi [[nivîs]] û / yan [[resm]] yên di nav [[berg]]ekî de hatine [[çap]]kirin.
#: {{hevmane|ku|pirtûk}}
#: {{mk|ku|Wê rûpela 50 ya '''kitêbê''' vekir û dest bi xwendinê kir.}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizirî/Dîwan/2004|r=44}}|jêgirtin=Me ji ser çeşmeyê ḥeywan qedeḥek ṣafî vexwar<br>Nagihî lez̤z̤et û z̤ewqa me bi ṣed cildê '''kitab'''}}
#* {{Jêgirtin/Feqiyê Teyran|sernav=Feqiyê Teyran jiyan berhem û helbestên wî|sala-weşandinê=2013|weşanxane=Nûbihar|çap=7|rûpel=130|amadekar=M. Xalid Sadinî|jêgirtin=Agir û pêta di dil da<br>Me„neya daxan ku hilda<br>Ew '''kitab''' naçit tu cilda<br>Hafîzê medhan im ez}}
#* {{jêder-kitêb|ku|jêgirtin=We neẓertu fîl-kîtabî, yanî ez daxilê xanî bûm û min neẓer li '''kitêbê''' kir.|sernav=Tesrîfa Teremaxî|nivîskar={{w|Elî Teremaxî}}|r=64|amadekar=Aydın Üneşi|sal=~1600|sala weşandinê=2016|cih=Mêrdin}}
#* {{jêder-kitêb|ku|jêgirtin=Ji şaîrê Kurmancan, bi zimanê Kurmancî, di tarîxa hezar û şeşsedî de di qeseba Bayezîdê de, hezretî Ehmedê Xanî '''kitêba''' ku telîf kiriye bi wezn bi nave Mem û Zînê, aşiq û maşûq, li weche muxtesr beyana wan dike.|sal=~1850|nivîskar={{w|Mele Mehmûdê Bazîdî}}|sernav=Mem û Zîn|sala weşandinê=2007|weşanxane=Lîs|r=23|amadekar=Xelîl Duhokî}}
#* {{jêder-kitêb|ku|jêgirtin=Mirovek xwenda, alim hebî, nave wî "Ehmede Xanî" bî{{sic}}. Xwedê jê razî be, rehmeta Xwedê lê be, vî mirovî hin '''kitêbên''' Kurmancî nivîsîne.|sernav=Kurdistan|sal=1898|r=123|amadekar=M. Emîn Bozarslan|nivîskar={{w|Miqdad Midhet Bedirxan}}|sala weşandinê=1991|cild=1}}
#* {{jêder|ku|jêgirtin=- Ma lê, ji te xeyidîme, ma çawan ji te naxeyidim. Te ez avêtim nav '''kitêb''' û kaxizan, te ez kirim hogir û hevala bermayên [[qaşûl]]ên dar û qirş û [[hevser]]a [[caw]] û [[potik]]ên [[zibilgeh]]ê.|''Gazinda Xencera Min, Hawar'', [[w:Celadet Alî Bedir-Xan|Celadet Alî Bedir-Xan]], hejmar 12}}
# Her kitêba [[miqeddes]] wekî [[Qur'an]] an [[Încîl]].
#* {{J:Încîl:1872:Sayim|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê|r=105}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din====
* {{ku-ar|کتێب}}
* {{ku-kr|к'ьтеб}}
==== Jê ====
{{kol3|ku|cure=Jê
|kitêbdank
|kitêbdost
|kitêbdostî
|kitêbfiroş
|kitêbfiroşgeh
|kitêbfiroşxane
|kitêbgeh
|kitêbhez
|kitêbhezî
|kitêbik
|kitêbî
|kitêbk
|kitêbxane
|kitêbxanevan
|kitêbxanevanî
|kitêbyar
|kitêbyarî
}}
==== Etîmolojî ====
{{root|ku|ar|ك ت ب}}
Ji {{deyn|ar|ku|كِتَاب}} ji reha {{ar-reh|ك ت ب|nekat=1}} ''têkilî rêzkirinê û çêkirina rêzikan ji wê yekê jî têkilî nivîsînê'', ji {{mîr|sem-wes-pro|ar|*katab-|w=xurandin, xeritandin}}. Ev reh koka peyvin din jî ne weku: {{q|ku|katib}}, {{q|ku|mekteb}}, {{q|ku|ketîbe}}.
==== Bide ber ====
{{kol3|ku
|belavok
|defter
|kovar
|namilke
|rojname
}}
==== Werger ====
{{werger-ser|koma kaxezan}}
* {{Z|abq}}: {{W-|abq|книга}}, {{W-|abq|апхьага}}, {{W-|abq|кьтап}}
* {{Z|ab}}: {{W-|ab|ашәҟәы}}
* {{Z|ady}}: {{W-|ady|тхылъ}}
* {{Z|aa}}: {{W-|aa|kitab}}
* {{Z|af}}: {{W+|af|boek}}
* {{Z|xag}}: {{W-|xag|𐕁𐔼𐕗}}
* {{Z|akz}}: {{W-|akz|holisso}}
* {{Z|sq}}: {{W+|sq|libër|n}}
* {{Z|de}}: {{W+|de|Buch|nt}}
*: {{Z|gsw}}: {{W-|gsw|Buech|nt}}
*: {{Z|gmw-cfr}}: {{W-|gmw-cfr|Boch|nt}}
*: {{Z|pdc}}: {{W-|pdc|Buch|nt}}
* {{Z|alt}}: {{W-|alt|бичик}}, {{W-|alt|книга}}
* {{Z|abs}}: {{W-|abs|buku}}
* {{Z|am}}: {{W-|am|መጽሃፍ}}
* Apaçî:
*: {{Z|apw}}: {{W-|apw|nałtsoos}}
* {{Z|an}}: {{W-|an|libro|n}}
* {{Z|rup}}: {{W-|rup|vivlie}}, {{W-|rup|carte}}
* {{Z|as}}: {{W-|as|কিতাপ}}, {{W-|as|পুথি}}
* {{Z|ast}}: {{W+|ast|llibru|n}}
* {{Z|tay}}: {{W-|tay|biru'}}
* {{Z|aot}}: {{W-|aot|kitap}}
* {{Z|av}}: {{W-|av|тӏехь}}, {{W-|av|таптар}}, {{W-|av|тӏахьал}}
* {{Z|ay}}: {{W-|ay|panka}}
* {{Z|ain}}: {{W-|ain|カㇺビソㇱ|tr=kambisosh}}
* {{Z|az}}: {{W+|az|kitab}}
* {{Z|bm}}: {{W-|bm|gafɛ}}
* {{Z|eu}}: {{W+|eu|liburu}}
* {{Z|ba}}: {{W-|ba|китап}}
* {{Z|be}}: {{W+|be|кні́га|m}}, {{W-|be|кні́жка|m}}
* {{Z|bn}}: {{W+|bn|বই}}, {{W+|bn|কিতাব}}, {{W+|bn|গ্রন্থ}}, {{W+|bn|পুস্তক}}
* {{Z|bth}}: {{W-|bth|buk}}
* {{Z|bi}}: {{W-|bi|buk}}
* {{Z|br}}: {{W+|br|levr|n}}
* {{Z|bg}}: {{W+|bg|кни́га|m}}
* {{Z|my}}: {{W+|my|စာအုပ်}}
* {{Z|bua}}: {{W-|bua|ном}}
* {{Z|kac}}: {{W-|kac|laika buk}}
* {{Z|ch}}: {{W-|ch|lepblo}}
* {{Z|chg}}: {{W-|chg|كتاب|tr=kitab}}
* {{Z|ce}}: {{W-|ce|кинишка}}, {{W-|ce|китаб}}, {{W-|ce|книга}}, {{W-|ce|книшка}}, {{W-|ce|кинчка}}, {{W-|ce|жайна}}
* {{Z|cs}}: {{W+|cs|kniha|m}}
* {{Z|chr}}: {{W-|chr|ᏗᎪᏪᎵ}}, {{W+|chr|ᎪᏪᎵ}}
* {{Z|chy}}: {{W-|chy|mȯxe'ėstoo'e}}
* {{Z|ny}}: {{W-|ny|buku}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|書}}
*: {{Z|dng}}: {{W-|dng|фу}}
*: {{Z|gan}}: {{W-|gan|書}}
*: {{Z|hak}}: {{W-|hak|書|tr=sû}}
*: {{Z|cjy}}: {{W-|cjy|書}}
*: {{Z|cmn}}: {{W+|cmn|書}}
*: {{Z|mnp}}: {{W-|mnp|書}}
*: {{Z|cdo}}: {{W-|cdo|書}}
*: {{Z|nan}}: {{W+|nan|冊|tr=chheh}}, {{W+|nan|書|tr=chu}}
*: {{Z|wuu}}: {{W-|wuu|書}}
*: {{Z|hsn}}: {{W-|hsn|書}}
* {{Z|cv}}: {{W-|cv|кӗнеке}}
* {{Z|dlm}}: {{W-|dlm|lebro|n}}
* {{Z|da}}: {{W+|da|bog|g}}
* {{Z|dv}}: {{W-|dv|ފޮތް}}
* {{Z|dtp}}: {{W-|dtp|buuk}}
* {{Z|ovd}}: {{W-|ovd|buok|m}}
* {{Z|id}}: {{W+|id|buku}}, {{W+|id|kitab}}
* {{Z|ar}}: {{W+|ar|كِتَاب|n}}
*: {{Z|arq}}: {{W-|arq|كتاب|n|tr=ktāb}}
*: {{Z|arz}}: {{W-|arz|كتاب|n|tr=ketāb}}
*: {{Z|acm}}: {{W-|acm|كِتَاب|n}}
*: {{Z|ary}}: {{W-|ary|كتاب|n|tr=ktāb}}
*: {{Z|apc}}: {{W-|apc|كتاب|tr=ktāb, ktēb}}
*: {{Z|aeb}}: {{W-|aeb|كتاب|n|tr=ktēb}}
* {{Z|hy}}: {{W+|hy|գիրք}}
* {{Z|myv}}: {{W-|myv|конёвкс}}, {{W-|myv|кинига}}
* {{Z|eo}}: {{W+|eo|libro}}
* {{Z|et}}: {{W+|et|raamat}}
* {{Z|gez}}: {{W-|gez|መጽሐፍ}}
* {{Z|evn}}: {{W-|evn|книга}}
* {{Z|ee}}: {{W-|ee|agbalẽ}}
* {{Z|ext}}: {{W-|ext|llibru|n}}
* {{Z|fax}}: {{W-|fax|libru|n}}
* {{Z|fa}}: {{W+|fa|کِتاب|tr=ketâb}}, {{W+|fa|نَسک|tr=nask}}, {{W+|fa|نامِه|tr=nâme}}
* {{Z|fo}}: {{W+|fo|bók|m}}
* {{Z|fj}}: {{W+|fj|vola}}, {{W-|fj|ivola}}
* {{Z|fi}}: {{W+|fi|kirja}}
* {{Z|fr}}: {{W+|fr|livre|n}}, {{W+|fr|bouquin|n}}
* {{Z|fur}}: {{W-|fur|libri|n}}
* {{Z|frr}}: {{W-|frr|bök|nt}}, {{W-|frr|buk|nt}}
* {{Z|stq}}: {{W-|stq|Bouk|nt}}
* {{Z|fy}}: {{W+|fy|boek|nt}}
* {{Z|ff}}:
*: Adlamî: {{W-|ff|𞤣𞤫𞤬𞤼𞤫𞤪𞤫}}
*: Latînî: {{W-|ff|deftere}}
* {{Z|gd}}: {{W+|gd|leabhar|n}}
* {{Z|gag}}: {{W-|gag|kitap}}
* {{Z|gl}}: {{W+|gl|libro|n}}
* {{Z|glk}}: {{W-|glk|کیتاب|tr=kitāb}}
* {{Z|got}}: {{W-|got|𐌱𐍉𐌺𐍉𐍃|m-p}}
* {{Z|gu}}: {{W+|gu|પુસ્તક|m}}, {{W-|gu|ચોપડી}}
* {{Z|ka}}: {{W+|ka|წიგნი}}
* {{Z|gn}}: {{W+|gn|kuatiañe'ẽ}}, {{W-|gn|[[aranduka]]}}
* {{Z|ht}}: {{W-|ht|liv}}
* {{Z|haw}}: {{W-|haw|puke}}, {{W-|haw|liwele}}
* {{Z|ha}}: {{W+|ha|littafi}}
* {{Z|hi}}: {{W+|hi|पुस्तक|m}}, {{W+|hi|किताब|m}}, {{W+|hi|बुक|m}}, {{W+|hi|ग्रंथ|n}}, {{W+|hi|बही|m}}, {{W+|hi|पोथी|m}}, {{W+|hi|पोथा|n}}, {{W+|hi|पुस्तिका|m}}, {{W+|hi|सिफर}}
* {{Z|hil}}: {{W-|hil|tulún-an}}
* {{Z|meu}}: {{W-|meu|buka}}
* {{Z|hnj}}: {{W-|hnj|phoo}}, {{W-|hnj|phoo ntawv}}
* {{Z|mww}}: {{W-|mww|ntawv}}
* {{Z|nl}}: {{W+|nl|boek|nt}}
* {{Z|hrx}}: {{W-|hrx|Buch|nt}}
* {{Z|tts}}: {{W-|tts|ปึ้ง|tr=pụ̂ng}}
* {{Z|iba}}: {{W-|iba|surat}}, {{W-|iba|bup}}
* {{Z|he}}: {{W+|he|סֵפֶר|n|tr=séfer}}
* {{Z|io}}: {{W+|io|libro}}
* {{Z|ig}}: {{W-|ig|akwụkwọ}}
* {{Z|ang}}: {{W-|ang|bōc|m}}
* {{Z|enm}}: {{W-|enm|bok}}
* {{Z|en}}: {{W+|en|book}}
* {{Z|izh}}: {{W-|izh|kirja}}
* {{Z|inh}}: {{W-|inh|китаб}}
* {{Z|ia}}: {{W+|ia|libro}}
* {{Z|iu}}: {{W+|iu|ᕿᒥᕐᕈᐊᑦ}}
*: {{Z|iu}}: {{W-|iu|unikkausik}}
* {{Z|sga}}: {{W-|sga|lebor|n}}
* {{Z|ga}}: {{W+|ga|leabhar|n}}
* {{Z|ist}}: {{W-|ist|leîbro|n}}
* {{Z|it}}: {{W+|it|libro|n}}
* {{Z|is}}: {{W+|is|bók|m}}
* {{Z|ja}}: {{W+|ja|本|tr=ほん, hon}}, {{W+|ja|書籍|tr=しょせき, shoseki}}, {{W+|ja|ブック|tr=bukku}}
* {{Z|kaw}}: {{W-|kaw|tulis}}
* {{Z|jv}}: {{W+|jv|buku}}, {{W+|jv|layang}}, {{W-|jv|serat}}
* {{Z|kbd}}: {{W-|kbd|тхылъ}}
* {{Z|kab}}: {{W-|kab|adlis}}
* {{Z|kl}}: {{W-|kl|atuagaq}}
* {{Z|xal}}: {{W-|xal|дегтр}}
* {{Z|kn}}: {{W+|kn|ಪುಸ್ತಕ}}
* {{Z|krc}}: {{W-|krc|китап}}
* {{Z|kaa}}: {{W-|kaa|kitap}}
* {{Z|krl}}: {{W-|krl|kirju}}
* {{Z|csb}}: {{W-|csb|knéga|m}}, {{W-|csb|knyga|m}}, {{W-|csb|knëga|m}}, {{W-|csb|ksążka|m}}
* {{Z|ca}}: {{W+|ca|llibre|n}}
* {{Z|qu}}: {{W+|qu|liwru}}, {{W+|qu|p'anqa}}
* {{Z|ky}}: {{W+|ky|китеп}}
* {{Z|kg}}: {{W-|kg|dibuku}}
* {{Z|ki}}: {{W-|ki|rifuku}}
* {{Z|si}}: {{W+|si|පොත}}
* {{Z|rw}}: {{W-|rw|igitabo|c7|c8}}
* {{Z|gil}}: {{W-|gil|boki}}
* {{Z|kis}}: {{W-|kis|egetabu}}
* {{Z|kpv}}: {{W-|kpv|небӧг}}, {{W-|kpv|книга}}
* {{Z|kok}}: {{W-|kok|पुस्तक}}
* {{Z|ko}}: {{W-|ko|책(冊)}}, {{W-|ko|도서(圖書)}}
* {{Z|kw}}: {{W-|kw|lyver|n}}
* {{Z|co}}: {{W+|co|libru|n}}
* {{Z|lou}}: {{W-|lou|liv}}
* {{Z|mfe}}: {{W-|mfe|liv}}
* {{Z|crs}}: {{W-|crs|liv}}
* {{Z|kum}}: {{W-|kum|китап}}
* {{Z|fkv}}: {{W-|fkv|kirja}}
* {{Z|kj}}: {{W-|kj|embo}}
* {{Z|lad}}:
*: Îbranî: {{W-|lad|ליב׳רו|n}}
*: Latînî: {{W-|lad|livro|n}}
* {{Z|lbe}}: {{W-|lbe|лу}}
* {{Z|lkt}}: {{W-|lkt|wówapi}}
* {{Z|la}}: {{W+|la|liber|n}}, {{W-|la|caudex|n}}
* {{Z|lv}}: {{W+|lv|grāmata|m}}
* {{Z|lo}}: {{W+|lo|ປຶ້ມ}}, {{W+|lo|ປຶ້ມຂຽນ}}, {{W-|lo|ຫນັງສື}}, {{W-|lo|ສັດຖະ}}, {{W-|lo|ພັບ}}
* {{Z|lzz}}: {{W-|lzz|სუპარა}}
* {{Z|lez}}: {{W-|lez|улуб}}, {{W-|lez|ктаб}}, {{W-|lez|дафтар}}
* {{Z|mhx}}: {{W-|mhx|mug sug' paug'}}, {{W-|mhx|tung" paug'}}, {{W-|mhx|paug'}}
* {{Z|ln}}: {{W-|ln|búku|c9a|c10a}}
* {{Z|lij}}: {{W-|lij|lìbbro|n}}, {{W-|lij|libbro}}
* {{Z|li}}: {{W+|li|book|m}}
* {{Z|lt}}: {{W+|lt|knyga|m}}
* {{Z|liv}}: {{W-|liv|rōntõz}}
* {{Z|lmo}}: {{W-|lmo|liber}}
* {{Z|lg}}: {{W-|lg|ekitabo}}
* {{Z|luy}}: {{W-|luy|sitabu}}
* {{Z|lb}}: {{W+|lb|Buch|nt}}
* {{Z|mk}}: {{W+|mk|книга|m}}
* {{Z|mg}}: {{W+|mg|boky}}
* {{Z|ml}}: {{W+|ml|പുസ്തകം}}
* {{Z|pqm}}: {{W-|pqm|wikhikon}}
* {{Z|ms}}: {{W+|ms|buku}}, {{W+|ms|kitab}}, {{W+|ms|pustaka}}
* {{Z|mt}}: {{W+|mt|ktieb|n}}
* {{Z|mnc}}: {{W-|mnc|ᠪᡳᡨᡥᡝ}}, {{W-|mnc|ᠴᠠᡤᠠᠨ}}, {{W-|mnc|ᠨᠣᠮᡠᠨ}}
* {{Z|gv}}: {{W-|gv|lioar|n}}
* {{Z|mns-nor}}: {{W-|mns-nor|кнӣга}}
* {{Z|mi}}: {{W+|mi|pukapuka}}
* {{Z|mr}}: {{W+|mr|पुस्तक|m}}
* {{Z|mhr}}: {{W-|mhr|книга}}
* {{Z|mrc}}: {{W-|mrc|onyor}}
* {{Z|yua}}: {{W-|yua|juʼun}}
* {{Z|hu}}: {{W+|hu|könyv}}
* {{Z|xmf}}: {{W-|xmf|სუფარა|n}}, {{W-|xmf|წინგი}}
* {{Z|egy}}: {{W-egy|mḏꜣt|m|h=Y1:t*Z1-V12:Z1}}, {{W-egy|šfdw|n|h=S:f-d-w-V12}}
* {{Z|mvi}}: {{W-|mvi|書物|tr=すぃむくㇲ, simuks}}
* {{Z|mwl}}: {{W-|mwl|lhibro|n}}
* {{Z|mdf}}: {{W-|mdf|книга}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|ном}}, {{W+|mn|бичиг}}
*: Mongolî: {{W-|mn|ᠨᠣᠮ}}, {{W-|mn|ᠪᠢᠴᠢᠭ᠋}}
* {{Z|mnw}}: {{W-|mnw|လိက် အုပ်|tr=lòik up}}
* {{Z|wmw}}: {{W-|wmw|kitabu}}, {{W-|wmw|buku}}, {{W-|wmw|livro}}
* {{Z|nah}}: {{W+|nah|amoxtli}}
*: {{Z|nci}}: {{W-|nci|āmoxtli}}
* {{Z|gld}}: {{W-|gld|дангса}}
* {{Z|nap}}: {{W-|nap|lìbbro|n}}
* {{Z|nv}}: {{W-|nv|naaltsoos}}
* {{Z|nds}}:
*: {{Z|nds-nl}}: {{W-|nds-nl|book|nt}}
*: {{Z|nds-de}}: {{W-|nds-de|Book|nt}}
* {{Z|yrk}}: {{W-|yrk|книга}}, {{W-|yrk|толаӈгобць’}}
* {{Z|ne}}: {{W-|ne|पुस्तक}}, {{W+|ne|किताप}}
* {{Z|new}}: {{W-|new|सफू}}
* {{Z|niv}}: {{W-|niv|питғы}}
* {{Z|nog}}: {{W-|nog|китап}}
* {{Z|no}}:
*: {{Z|no}}: {{W+|no|bok|n|m}}
*: {{Z|nn}}: {{W+|nn|bok|m}}
* {{Z|ood}}: {{W-|ood|ʼoʼohana}}
* {{Z|ojw}}: {{W-|ojw|masinahikan}}
* {{Z|oj}}: {{W-|oj|mazina'igan}}
* {{Z|ryu}}: {{W-|ryu|書物|tr=すむち, sumuchi, しむち, shimuchi}}
* {{Z|pro}}: {{W-|pro|libre}}
* {{Z|oc}}: {{W+|oc|libre|n}}
* {{Z|or}}: {{W+|or|ବହି}}
* {{Z|oaa}}: {{W-|oaa|бичихэ}}
* {{Z|os}}: {{W-|os|чиныг}}
* {{Z|ota}}: {{W-|ota|كتاب|tr=kitâb}}
* {{Z|ug}}: {{W+|ug|كىتاب}}
* {{Z|uz}}: {{W+|uz|kitob}}
* {{Z|pi}}: {{W-|pi|potthaka}}
*: {{Z|pi}}: {{W-|pi|पोत्थक}}
*: {{Z|pi}}: {{W-|pi|โปตถะกะ}}
* {{Z|pap}}: {{W-|pap|buki}}
* {{Z|paw}}: {{W-|paw|raáwihaakaraaʾit}}, {{W-|paw|raáwihaakaraaʾiitusuʾ}}
* {{Z|ps}}: {{W+|ps|کتاب|n|tr=ketāb}}
* {{Z|pms}}: {{W-|pms|lìber}}
* {{Z|pdt}}: {{W-|pdt|Buak|nt}}
* {{Z|pox}}: {{W-|pox|bükvoi|p}}
* {{Z|pl}}: {{W+|pl|książka|m}}, {{W+|pl|księga|m}}
* {{Z|pt}}: {{W+|pt|livro|n}}
* {{Z|prg}}: {{W-|prg|lāiskas|n}}
* {{Z|pkp}}: {{W-|pkp|lau}}, {{W-|pkp|puka}}
* Puncabî:
*: Şaxmuxî: {{W+|pa|پستک|n}}, {{W+|pa|کتاب|m|tr=ktāb}}
*: Gurmuxî: {{W-|pa|ਪੁਸਤਕ|n}}, {{W-|pa|ਕਿਤਾਬ}}
* {{Z|kk}}: {{W+|kk|кітап}}
*: {{Z|kk}}: {{W-|kk|كىتاپ}}
* {{Z|cop}}: {{W-|cop|ϫⲱⲙ|n}}
* {{Z|rah}}: {{W-|rah|কাওছা|tr=káosa}}
* {{Z|mwr}}: {{W-|mwr|पोथी|tr=pothī|m}}
* {{Z|rgn}}: {{W-|rgn|lìvar|n}}
* {{Z|rm}}: {{W-|rm|cudesch}}
* {{Z|rom}}: {{W-|rom|ginadyi|m}}
* {{Z|ro}}: {{W+|ro|carte|m}}
* {{Z|ru}}: {{W+|ru|кни́га|m}}, {{W+|ru|кни́жка|m}}
* {{Z|rue}}: {{W-|rue|кни́га|m}}
* {{Z|se}}: {{W-|se|girji}}
* {{Z|sma}}: {{W-|sma|gærja}}
* {{Z|smn}}: {{W-|smn|kirje}}
* {{Z|sjd}}: {{W-|sjd|кыррьй}}, {{W-|sjd|кнӣга}}
* {{Z|smj}}: {{W-|smj|girjje}}
* {{Z|sms}}: {{W-|sms|ǩeʹrjj}}
* {{Z|sgs}}: {{W-|sgs|kninga|m}}
* {{Z|sa}}: {{W+|sa|पुस्तक|nt}}, {{W+|sa|ग्रन्थ|nt}}
* {{Z|scn}}: {{W+|scn|libbru|n}}
* {{Z|sky}}: {{W-|sky|laumea}}
* {{Z|szl}}: {{W-|szl|kniga|m}}
* {{Z|sd}}: {{W+|sd|ڪتاب|n|tr=kitāb|cuda=ڪِتابُ}}
* {{Z|srn}}: {{W-|srn|buku}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|књи̏га|m}}
*: Latînî: {{W+|sh|knjȉga|m}}
* {{Z|syc}}: {{W-|syc|ܟܬܒܐ|n|tr=kṯāḇā}}
* {{Z|syl}}: {{W-|syl|ꠛꠂ}}
* {{Z|sco}}: {{W-|sco|beuk}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|боукꙑ|m}}, {{W-|cu|кънигꙑ|m-p}}
* {{Z|orv}}: {{W-|orv|кънига|m}}
* {{Z|sk}}: {{W+|sk|kniha|m}}
* {{Z|sl}}: {{W+|sl|knjíga|m}}
* {{Z|zlw-slv}}: {{W-|zlw-slv|knega|m}}
* {{Z|so}}: {{W+|so|buug|n}}, {{W-|so|kitaab|n}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|knigły|m-p}}
*: {{Z|hsb}}: {{W-|hsb|kniha|m}}
* {{Z|st}}: {{W+|st|buka}}
* {{Z|es}}: {{W+|es|libro|n}}
* {{Z|su}}: {{W-|su|ᮘᮥᮊᮥ}}
* {{Z|xsv}}: {{W-|xsv|laiskas|n}}
* {{Z|sva}}: {{W-|sva|ლა̈ირ}}
* {{Z|sw}}: {{W+|sw|kitabu}}, {{W+|sw|vitabu|p}}
* {{Z|ss}}: {{W-|ss|íncwadzí|c9|c10}}
* {{Z|sv}}: {{W+|sv|bok|g}}
* {{Z|shn}}: {{W-|shn|ပပ်ႉ}}, {{W-|shn|ၸႃႇဢုၵ်ႉ}}
* {{Z|sn}}: {{W-|sn|bhuku}}
* {{Z|cjs}}: {{W-|cjs|ном|tr=nom}}, {{W-|cjs|книга}}
* {{Z|tab}}: {{W-|tab|китаб}}
* {{Z|tg}}: {{W+|tg|китоб}}
* {{Z|tl}}: {{W+|tl|libro}}, {{W+|tl|aklat}}
* {{Z|ta}}: {{W+|ta|நூல்}}, {{W+|ta|புத்தகம்}}
* {{Z|roa-tar}}: {{W-|roa-tar|libbre|n}}
* {{Z|shi}}: {{W-|shi|ⴰⵔⵔⴰ|n}}
* {{Z|th}}: {{W+|th|หนังสือ}}, {{W+|th|สมุด}}
* {{Z|te}}: {{W+|te|పుస్తకం}}, {{W-|te|పొత్తం}}
* {{Z|crh}}: {{W-|crh|kitap}}
* {{Z|tt}}: {{W+|tt|китап}}
* {{Z|tet}}: {{W-|tet|livru}}
* {{Z|tig}}: {{W-|tig|ክታብ}}
* {{Z|ti}}: {{W-|ti|መጽሓፍ}}, {{W-|ti|መጽሐፍ}}
* {{Z|otk}}: {{W-|otk|𐰋𐰃𐱅𐰏}}
* {{Z|tr}}: {{W+|tr|kitap}}, {{W+|tr|betik}}
* {{Z|tk}}: {{W-|tk|kitap}}
* {{Z|bo}}: {{W-|bo|དེབ}}, {{W-|bo|ཕྱག་དེབ}}
* {{Z|tli}}: {{W-|tli|x’úx’}}
* {{Z|tpi}}: {{W-|tpi|buk}}
* {{Z|txb}}: {{W-|txb|postak}}
* {{Z|tn}}: {{W+|tn|buka}}
* {{Z|tum}}: {{W-|tum|buku}}
* {{Z|tvl}}: {{W-|tvl|tusi}}
* {{Z|tyv}}: {{W-|tyv|ном}}
* {{Z|udi}}: {{W-|udi|ҝирк}}
* {{Z|udm}}: {{W-|udm|книга}}
* {{Z|unm}}: {{W-|unm|lekhikàn}}
* {{Z|ur}}: {{W+|ur|کِتاب|m|tr=kitāb}}, {{W-|ur|پُسْتَک|m|tr=pustak}}, {{W-|ur|بُک|m|tr=buk}}
* {{Z|urh}}: {{W-|urh|e̖be}}
* {{Z|uk}}: {{W-|uk|кни́жка|m}}, {{W+|uk|кни́га|m}}
* {{Z|vec}}: {{W-|vec|łìbro|n}}
* {{Z|vep}}: {{W-|vep|kirj}}
* {{Z|vi}}: {{W+|vi|sách}}, {{W+|vi|sổ}}, {{W+|vi|sách giáo khoa}}
* {{Z|vo}}: {{W+|vo|buk}}
* {{Z|vot}}: {{W-|vot|tširjõ}}
* {{Z|wa}}: {{W+|wa|live|n}}
* {{Z|war}}: {{W-|war|basahon}}, {{W-|war|barasahon}}
* {{Z|cy}}: {{W+|cy|llyfr|n}}
* {{Z|wrh}}: {{W-|wrh|garrandarang}}
* {{Z|wym}}: {{W-|wym|bihła|nt}}, {{W-|wym|büch}}
* {{Z|wo}}: {{W-|wo|[[tééré]] bi}}, {{W+|wo|téere}}
* {{Z|wuh}}: {{W-|wuh|huaiqa}}
* {{Z|kjh}}: {{W-|kjh|кинде}}
* {{Z|km}}: {{W+|km|សៀវភៅ}}
* {{Z|xh}}: {{W-|xh|incwadi|c9|c10}}
* {{Z|yai}}: {{W-|yai|китоб}}
* {{Z|sah}}: {{W-|sah|кинигэ}}
* {{Z|tao}}: {{W-|tao|vakong}}
* {{Z|yi}}: {{W-|yi|בוך|nt}}, {{W-|yi|ספֿר|n|tr=seyfer}}, {{W-|yi|חיבור|n|tr=khiber}}
* {{Z|yo}}: {{W-|yo|ìwé}}
* {{Z|el}}: {{W+|el|βιβλίο|nt}}, {{W+|el|τόμος|n}}
*: Kevn: {{W-|grc|βιβλίον|nt}}
* {{Z|za}}: {{W-|za|saw}}
* {{Z|zu}}: {{W+|zu|ibhuku|c5|c6}}, {{W+|zu|incwadi|c9|c10}}
{{werger-bin}}
:{{werger çavkanî|en|book|oldid=75472768|beş=Ev qismê Wergerê}}
mk1cat2r6q3izz9s8j8ig31pig1ozzl
kar
0
3754
6329799
6309601
2026-08-12T22:46:03Z
Wikihez
7344
/* Navdêr 2 */
6329799
wikitext
text/x-wiki
{{bnr-h|kâr|Kar|-kar|-kâr}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{beş|Navdêr 1|Navdêr 2}} {{ku-IPA|k(h)ar}}
** {{deng|ku|LL-Q36368 (kur)-Dildadil-kar (xebat).wav|dever=Amed}}
** {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kar.wav|dever=Bidlîs}}
* {{beş|Navdêr 3}} {{IPA|ku|/kʌːɾ/}}
** {{deng|ku|LL-Q36368 (kur)-Dildadil-kar.wav|dever=Amed}}
** {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kar (Navdêr 3).wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}} {{k-ya req}}
# Tiştê mirov dike.
#: {{hevmane|ku|xebat|ked|şol|şuxl|îş|çalakî|erk|vatinî}}.
#* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin=Ma remeyte îz remeyte" goşîdar<br />Destê wî destê Xuda der '''kar''' û bar}}
# [[amadekarî]], [[amadehî]], [[hazirî]]
#: {{mk|ku|Me xwe bo çûnê '''kar''' kiriye.}}
# [[sûde]], [[kelk]], [[feyde]], [[qazanc]], [[qezenc]], [[kêr]], [[mifa]], [[berjewendî]].
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|كار}}
==== Formên alternatîv ====
* {{g|ku|karûkisb}}
==== Jê ====
{{kol|ku|cure=Jê
|bêkar
|bêkarî
|bêkarîtî
|bêkartî
|bikar
|bikarî
|bikarîtî
|bikartî
|-kar
|kardar
|kardarî
|kardarîtî
|kardartî
|karder
|karderî
|karderîtî
|kardertî
|kardêr
|kardêrî
|kardêrîtî
|kardêrtî
|kargêr
|kargêrî
|karî
|-karî
|karîgêr
|karîgêrî
|karîgêrîtî
|karîgêrtî
|kargir
|kargirî
|kargirîtî
|kargirtî
|karker
|karkerî
|karkerîtî
|karkertî
}}
==== Etîmolojî ====
Têkilî {{q|ku|kirin}}, {{q|ku|-ker}}. Ji {{mîr|ira-pro|ku|*kar-|w=kirin}} ji {{mîr|ine-pro|ku|*kʷer-|w=kirin}}.
Hevreha {{hv|ckb|کار|tr=kar|w=kar}}, {{hv|hac|kar|sc=Latn|w=kar}}, {{hv|zza|kar|w=kar}}, {{hv|fa|کار|tr=kâr|w=kar}}, {{hv|sa|कर्मन्|tr=karma|w=[[bizav]], [[hereket]], kar}}.
;{{biçûk|Çavkanî:
* {{Cheung|r=237}}
* {{Watkins|r=45}}
}}
==== Bide ber ====
{{kol3|ku
| ker
| kêr
| kir
| kîr
| kor
| kûr
}}
==== Binêre herwiha ====
{{kol2|ku
|ar
|bar
|car
|çar
|dar
|gar
|har
|jar
|lar
|mar
|nar
|par
|qar
|sar
|şar
|war
|zar
|xar
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|werk}}, {{W+|af|arbeid}}
* {{Z|xag}}: {{W-|xag|𐔰𐕐}}
* {{Z|sq}}: {{W+|sq|punë|m}}
* {{Z|gmw-ecg}}: {{W-|gmw-ecg|Arbitt|m}}, {{W-|gmw-ecg|Arb|m}}
* {{Z|de}}: {{W+|de|Arbeit|m}}
* {{Z|am}}: {{W-|am|ሥራ}}
* {{Z|ani}}: {{W-|ani|гьалтӏи}}
* {{Z|an}}: {{W-|an|treball}}, {{W+|an|treballo|n}}
* {{Z|aii}}: {{W-|aii|ܦܘܼܠܚܵܢܵܐ|tr=pulḳana|n}}, {{W-|aii|ܫܘܼܠܵܐ|tr=šula|n}}
* {{Z|as}}: {{W-|as|কাম}}
* {{Z|ast}}: {{W-|ast|trabayu|n}}
* {{Z|tay}}: {{W-|tay|mtzaw}}
* {{Z|av}}: {{W-|av|хӏалтӏи}}
* {{Z|az}}: {{W+|az|əmək}}, {{W+|az|iş}}, {{W-|az|zəhmət}}
* {{Z|eu}}: {{W-|eu|lan}}
* {{Z|ba}}: {{W-|ba|эш}}
* {{Z|be}}: {{W-|be|пра́ца|m}}, {{W-|be|рабо́та|m}}
* {{Z|bn}}: {{W+|bn|কাজ}}, {{W+|bn|চাকরি}}
* {{Z|bg}}: {{W-|bg|ра́бота|m}}, {{W+|bg|труд|n}}
* {{Z|my}}: {{W+|my|လုပ်အား}}, {{W+|my|အလုပ်}}
* {{Z|cia}}: {{W-|cia|까라자아}}
* {{Z|ce}}: {{W-|ce|болх}}
* {{Z|cs}}: {{W+|cs|práce|m}}, {{W+|cs|zaměstnání|nt}}
* {{Z|ny}}: {{W-|ny|ntchito}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|工作|tr=gung1 zok3}}
*: {{Z|dng}}: {{W-|dng|гунзуә}}
*: {{Z|cmn}}: {{W+|cmn|工作|tr=gōngzuò}}, {{W+|cmn|勞動|tr=láodòng}}, {{W+|cmn|職業|tr=zhíyè}}
*: {{Z|nan}}: {{W+|nan|工作|tr=kang-chok / kong-chok}}
*: {{Z|wuu}}: {{W-|wuu|工作}}
* {{Z|da}}: {{W+|da|arbejde|nt}}, {{W+|da|job|nt}}
* {{Z|id}}: {{W+|id|kerjaan}}, {{W+|id|pekerjaan}}
* {{Z|ar}}: {{W+|ar|عَمَل|n}}, {{W-|ar|شُغْل|n}}, {{W-|ar|خِدْمَة|m}}, {{W-|ar|وَظِيفَة|m}}
*: {{Z|arz}}: {{W-|arz|شغل|n|tr=šuḡl}}
*: {{Z|acw}}: {{W-|acw|شغل|n|tr=šuḡul}}
*: {{Z|ary}}: {{W-|ary|خدمة|m|tr=ḵedma}}, {{W-|ary|وظيفة|m|tr=waḍīfa}}
* {{Z|hy}}: {{W+|hy|աշխատանք}}, {{W+|hy|գործ}}
* {{Z|eo}}: {{W+|eo|laboro}}
* {{Z|et}}: {{W+|et|töö}}
* {{Z|ee}}: {{W-|ee|dɔwɔwɔ}}
* {{Z|ext}}: {{W-|ext|trebahu}}
* {{Z|fa}}: {{W+|fa|کار|tr=kâr}}, {{W+|fa|شغل|tr=šoğl}}
* {{Z|fi}}: {{W+|fi|työ}}
* {{Z|fur}}: {{W-|fur|vore|m}}
* {{Z|fy}}: {{W-|fy|wurk|nt}}
* {{Z|gd}}: {{W-|gd|cosnadh|n}}, {{W+|gd|obair|m}}, {{W-|gd|dreuchd|m}}
* {{Z|gl}}: {{W+|gl|traballo|n}}, {{W+|gl|choio|n}}
* {{Z|got}}: {{W-|got|𐌰𐍂𐌱𐌰𐌹𐌸𐍃|m}}
* {{Z|ka}}: {{W-|ka|მუშაობა}}
* {{Z|ht}}: {{W-|ht|travay}}
* {{Z|ha}}: {{W+|ha|aiki}}
* {{Z|hi}}: {{W+|hi|काम|n}}, {{W+|hi|श्रम|n}}, {{W+|hi|उद्योग|n}}, {{W+|hi|वृत्ति|m}}, {{W+|hi|कार्य|n}}, {{W+|hi|कार|n}}, {{W+|hi|कर्म|n}}, {{W+|hi|अमल}}, {{W+|hi|वजीफा|m}}
* {{Z|nl}}: {{W+|nl|werk|nt}}, {{W+|nl|job|m}}, {{W+|nl|arbeid|n}}
* {{Z|he}}: {{W-|he|עֲבוֹדָה|m|tr=avodá}}, {{W-|he|מְלָאכָה|m|tr=melakhá}}, {{W-|he|עָמָל|n|tr=amál}}
* {{Z|ang}}: {{W-|ang|weorc|nt}}, {{W-|ang|earfoþe|nt}}
* {{Z|en}}: {{W+|en|work}}
* {{Z|izh}}: {{W-|izh|töö}}, {{W-|izh|raae}}
* {{Z|inh}}: {{W-|inh|болх}}
* {{Z|ga}}: {{W-|ga|obair|m}}, {{W-|ga|saothar|n}}
* {{Z|ist}}: {{W-|ist|lavur}}
* {{Z|it}}: {{W+|it|lavoro|n}}, {{W+|it|impiego|n}}, {{W+|it|occupazione|m}}
* {{Z|is}}: {{W+|is|vinna|m}}
* {{Z|ja}}: {{W+|ja|仕事|tr=しごと, shigoto}}, {{W+|ja|労働|tr=ろうどう, rōdō}}, {{W+|ja|職業|tr=しょくぎょう, shokugyō}}, {{W+|ja|ワーク|tr=wāku}}
* {{Z|kl}}: {{W-|kl|suliaq}}
* {{Z|kam}}: {{W-|kam|wia}}
* {{Z|ca}}: {{W+|ca|treball|n}}, {{W+|ca|feina}}
* {{Z|kgp}}: {{W-|kgp|rãnhrãj}}
* {{Z|ky}}: {{W+|ky|жумуш}}, {{W+|ky|иш}}, {{W+|ky|эмгек}}, {{W+|ky|кызмат}}
* {{Z|ki}}: {{W-|ki|wira}}
* {{Z|si}}: {{W-|si|වැඩ}}
* {{Z|koi}}: {{W-|koi|удж}}
* {{Z|ko}}: {{W+|ko|일}}, {{W+|ko|노동}}, {{W+|ko|로동}}, {{W+|ko|직업}}
* {{Z|lad}}: {{W-|lad|ovra}}, {{W-|lad|lavoro}}
* {{Z|ltg}}: {{W-|ltg|dorbs}}
* {{Z|la}}: {{W+|la|labor|n}}
* {{Z|lv}}: {{W+|lv|darbs|n}}
* {{Z|lo}}: {{W-|lo|ງານ}}, {{W-|lo|ນັກງານ}}
* {{Z|olo}}: {{W-|olo|ruado}}
* {{Z|lij}}: {{W-|lij|travàggio}}, {{W-|lij|lou}}
* {{Z|lt}}: {{W+|lt|darbas|n}}
* {{Z|lmo}}: {{W-|lmo|lavor}}, {{W-|lmo|laur}}
* {{Z|luy}}: {{W-|luy|ekasi}}
* {{Z|lb}}: {{W+|lb|Aarbecht|m}}
* {{Z|mhn}}: {{W-|mhn|òrbet|m}}
* {{Z|mk}}: {{W+|mk|работа|m}}
* {{Z|ml}}: {{W+|ml|ജോലി}}, {{W+|ml|പണി}}
* {{Z|ms}}: {{W+|ms|kerja}}
* {{Z|mt}}: {{W-|mt|xogħol|n}}
* {{Z|yua}}: {{W-|yua|meyaj}}
* {{Z|hu}}: {{W+|hu|munka}}, {{W+|hu|dolog}}, {{W+|hu|feladat}}
* {{Z|min}}: {{W-|min|karajo}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|ажил}}
* {{Z|wmw}}: {{W-|wmw|kazi}}
* {{Z|nap}}: {{W-|nap|lavoro|n}}
* {{Z|nv}}: {{W-|nv|naashnish}}
* {{Z|nrf}}: {{W-|nrf|travas|n}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|arbeid|nt}}, {{W+|nb|jobb|n}}, {{W+|nb|verk|nt}}
*: {{Z|nn}}: {{W+|nn|arbeid|nt}}, {{W+|nn|jobb|n}}, {{W+|nn|verk|nt}}
* {{Z|oc}}: {{W+|oc|trabalh|n}}
* {{Z|or}}: {{W+|or|କାମ}}
* {{Z|om}}: {{W-|om|hojii}}
* {{Z|os}}: {{W-|os|куыст}}
* {{Z|ug}}: {{W-|ug|خىزمەت}}, {{W-|ug|ئىش}}
* {{Z|uz}}: {{W+|uz|ishlash}}, {{W+|uz|mehnat}}, {{W+|uz|ish}}, {{W+|uz|xizmat}}
* {{Z|pap}}: {{W-|pap|trabou}}
* {{Z|ps}}: {{W+|ps|کار|n|tr=kār}}
* {{Z|pms}}: {{W-|pms|travaj|n}}
* {{Z|pis}}: {{W-|pis|waka}}
* {{Z|ppl}}: {{W-|ppl|tekit}}
* {{Z|pdt}}: {{W-|pdt|Oabeit|m}}, {{W-|pdt|Woakj|nt}}
* {{Z|pl}}: {{W+|pl|praca|m}}, {{W+|pl|robota|m}}
* {{Z|pt}}: {{W+|pt|trabalho|n}}, {{W+|pt|emprego|n}}
* {{Z|pa}}: {{W-|pa|ਕੰਮ|n}}
* {{Z|kk}}: {{W-|kk|еңбек}}, {{W+|kk|жұмыс}}, {{W-|kk|іс}}, {{W-|kk|қызмет}}, {{W-|kk|шаруа}}
* {{Z|rm}}: {{W-|rm|lavur|m}}, {{W-|rm|lavour|m}}
* {{Z|rom}}: {{W-|rom|butǐ|m}}
* {{Z|ro}}: {{W+|ro|muncă|m}}, {{W+|ro|serviciu|nt}}, {{W+|ro|ocupație|m}}, {{W+|ro|îndeletnicire|m}}
* {{Z|ru}}: {{W-|ru|рабо́та|m}}, {{W+|ru|труд|n}}
* {{Z|rue}}: {{W-|rue|пра́ца|m}}, {{W-|rue|робо́та|m}}
* {{Z|se}}: {{W-|se|bargu}}
* {{Z|sm}}: {{W-|sm|galus}}
* {{Z|sa}}: {{W+|sa|कर्मन्|nt}}, {{W+|sa|कार्य}}
* {{Z|sc}}: {{W-|sc|trabadhu}}, {{W-|sc|traballu}}
* {{Z|scn}}: {{W+|scn|lavuru|n}}, {{W+|scn|travagghiu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|по̀сао|n}}, {{W-|sh|ра̑д|n}}
*: Latînî: {{W+|sh|pòsao|n}}, {{W+|sh|rȃd|n}}
* {{Z|syl}}: {{W-|syl|ꠇꠣꠝ}}
* {{Z|sco}}: {{W-|sco|wark}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|работа|m}}, {{W-|cu|троудъ|n}}
*: Glagolîtîk: {{W-|cu|ⱃⰰⰱⱁⱅⰰ|m}}, {{W-|cu|ⱅⱃⱆⰴⱏ|n}}
* {{Z|orv}}: {{W-|orv|робота|m}}, {{W-|orv|трудъ|n}}
* {{Z|sk}}: {{W+|sk|práca|m}}
* {{Z|sl}}: {{W+|sl|delo|nt}}
* {{Z|so}}: {{W+|so|shaqo}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|źěło|nt}}
* {{Z|st}}: {{W+|st|mosebetsi}}
* {{Z|es}}: {{W+|es|trabajo|n}}, {{W+|es|curro|n}}, {{W+|es|laburo|n}}
* {{Z|sw}}: {{W+|sw|kazi}}
* {{Z|sv}}: {{W+|sv|arbete|nt}}, {{W+|sv|jobb|nt}}
* {{Z|cjs}}: {{W-|cjs|иш}}
* {{Z|tg}}: {{W+|tg|кор}}, {{W-|tg|шуғл}}
* {{Z|tl}}: {{W-|tl|isi}}, {{W+|tl|trabaho}}
* {{Z|ta}}: {{W+|ta|வேலை}}
* {{Z|th}}: {{W-|th|การงาน}}, {{W+|th|งาน}}, {{W+|th|แรงงาน}}
* {{Z|te}}: {{W-|te|కూలీపని}}, {{W+|te|ఉద్యోగము}}, {{W+|te|వృత్తి}}
* {{Z|tt}}: {{W+|tt|эш}}, {{W+|tt|хезмәт}}
* {{Z|tet}}: {{W-|tet|serbisu}}
* {{Z|ti}}: {{W-|ti|ስራሕ}}
* {{Z|tr}}: {{W+|tr|iş}}, {{W+|tr|meslek}}, {{W+|tr|emek}}
* {{Z|tk}}: {{W-|tk|iş}}, {{W+|tk|zähmet}}
* {{Z|bo}}: {{W-|bo|ལས་ཀ}}
* {{Z|to}}: {{W-|to|ngāue}}
* {{Z|tum}}: {{W-|tum|nchito}}
* {{Z|udi}}: {{W-|udi|аш}}, {{W-|udi|аьш}}
* {{Z|udm}}: {{W-|udm|уж}}
* {{Z|ur}}: {{W-|ur|کام|n|tr=kām}}
* {{Z|uk}}: {{W-|uk|робо́та|m}}, {{W-|uk|пра́ця|m}}
* {{Z|vec}}: {{W+|vec|laoro|n}}, {{W-|vec|laóro|n}}
* {{Z|vi}}: {{W+|vi|việc làm}}, {{W+|vi|công việc}}
* {{Z|vot}}: {{W-|vot|töö}}
* {{Z|wa}}: {{W+|wa|ovraedje|n|m}}, {{W+|wa|boutaedje|n}}, {{W+|wa|djob|n}}
* {{Z|cy}}: {{W+|cy|gwaith|n}}
* {{Z|km}}: {{W+|km|ការងារ}}
* {{Z|yi}}: {{W-|yi|אַרבעט|m}}
* {{Z|yo}}: {{W-|yo|iṣẹ́}}
* {{Z|el}}: {{W+|el|έργο|nt}}, {{W+|el|εργασία|m}}, {{W+|el|δουλειά|m}}
*: Kevn: {{W-|grc|ἔργον|nt}}
* {{Z|za}}: {{W-|za|gunghcoz}}
* {{Z|nmn}}: {{W-|nmn|ǀgáã}}
{{werger-bin}}
:{{werger çavkanî|en|work|oldid=75572707|beş=Ev qismê Wergerê}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}} {{k-ya req}}
# [[sûde]], [[kelk]], [[feyde]], [[qazanc]], [[kêr]], [[mifa]], [[berjewendî]]
#* {{jêder-malper|ku|jêgirtin=Çimkî qezenca wê ji zîv zêdetir e, '''kara''' wê ji zêrê xas çêtir e.|sernav=Şîretên Silêman 3:14 / Kitêba Pîroz|nivîskar=Bible Society in Turkey|sal=2005|websîte=bible.com|url=https://www.bible.com/bible/251/PRO.3.KURNT}}
# [[nêçîr|Nêçîr]]a [[heywan]]an (bi taybetî [[firinde]]yan) li [[zivistan]]ê yan dema ku [[berf]] [[barîn|bariye]] û [[heywan]] [[qerimîn]]e<br>([[nêçîrvan]] [[tomik]]î [[avêtin|diavêtin]] ber wan û heywan nêzîk dibin û nêçîrvan wan digire yan [[kuştin|dikuje]])
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
(wate 2) Ji {{ji|ira}}, hevreha farisî {{g|fa|شکار|tr=şikar}}. Bo ketina ''şi-'' ji destpêka peyvê, bidin ber [[nasîn]], bi farisî û zazakî {{q|zza||şinas-}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: (1) {{W+|en|benefit}}, {{W+|en|profit}}, (2) winter hunting
{{werger-bin}}
{{bend}}
=== Navdêr 3 ===
{{navdêr|ku|z=m}} {{k-ya nerm}}
# ''Binêre'': '''[[karik]]'''
#* {{bênimûne|ku}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
== {{ziman|hac}} ==
=== Navdêr ===
{{navdêr|hac|sc=Latn}}
# {{g|en|kar}}
#* {{bênimûne|hac}}
# [[lêker]]
#* {{bênimûne|hac}}
== {{ziman|nay}} ==
=== Cînav ===
{{cînav|nay}}
# [[ew#ku|ew]] (pirjimar), [[wan#ku|wan]]
#* {{bênimûne|nay}}
== {{ziman|rel}} ==
=== Navdêr ===
{{navdêr|rel}}
# {{f|rel|heywan}} [[kûçik#ku|kûçik]], [[se#ku|se]]
#* {{bênimûne|rel}}
== {{ziman|quc}} ==
=== Navdêr ===
{{navdêr|quc}}
# {{f|quc|heywan}} [[masî#ku|masî]]
#* {{bênimûne|quc}}
== {{ziman|af}} ==
=== Navdêr ===
{{navdêr|af}}
# {{f|af|navgîn}} {{g|ku|tirimpêl}}, {{g|ku|otomobîl}}, {{g|ku|erebe}}, {{g|ku|seyare}}, {{g|ku|maşîn}}
#* {{bênimûne|af}}
=== Çavkanî ===
{{rûpela wergerê|af|tirimpêl}}
== {{ziman|az}} ==
=== Rengdêr ===
{{rengdêr|az}}
# {{g|ku|ker}} (kerr, nebihîz, guhgiran)
#* {{bênimûne|az}}
=== Çavkanî ===
{{rûpela wergerê|az|ker}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-ToprakM-kar.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# [[berf|Berf]], [[befr]].
#* {{bênimûne|tr}}
oenu1yowcqz0o27ug4e8t1sfgg6rh1i
6329841
6329799
2026-08-12T23:41:13Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329841
wikitext
text/x-wiki
{{bnr-h|kâr|Kar|-kar|-kâr}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{beş|Navdêr 1|Navdêr 2}} {{ku-IPA|k(h)ar}}
** {{deng|ku|LL-Q36368 (kur)-Dildadil-kar (xebat).wav|dever=Amed}}
** {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kar.wav|dever=Bidlîs}}
* {{beş|Navdêr 3}} {{IPA|ku|/kʌːɾ/}}
** {{deng|ku|LL-Q36368 (kur)-Dildadil-kar.wav|dever=Amed}}
** {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kar (Navdêr 3).wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}} {{k-ya req}}
# Tiştê mirov dike.
#: {{hevmane|ku|xebat|ked|şol|şuxl|îş|çalakî|erk|vatinî}}.
#* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin=Ma remeyte îz remeyte" goşîdar<br />Destê wî destê Xuda der '''kar''' û bar}}
# [[amadekarî]], [[amadehî]], [[hazirî]]
#: {{mk|ku|Me xwe bo çûnê '''kar''' kiriye.}}
# [[sûde]], [[kelk]], [[feyde]], [[qazanc]], [[qezenc]], [[kêr]], [[mifa]], [[berjewendî]].
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|كار}}
==== Formên alternatîv ====
* {{g|ku|karûkisb}}
==== Jê ====
{{kol|ku|cure=Jê
|bêkar
|bêkarî
|bêkarîtî
|bêkartî
|bikar
|bikarî
|bikarîtî
|bikartî
|-kar
|kardar
|kardarî
|kardarîtî
|kardartî
|karder
|karderî
|karderîtî
|kardertî
|kardêr
|kardêrî
|kardêrîtî
|kardêrtî
|kargêr
|kargêrî
|karî
|-karî
|karîgêr
|karîgêrî
|karîgêrîtî
|karîgêrtî
|kargir
|kargirî
|kargirîtî
|kargirtî
|karker
|karkerî
|karkerîtî
|karkertî
}}
==== Etîmolojî ====
Têkilî {{q|ku|kirin}}, {{q|ku|-ker}}. Ji {{mîr|ira-pro|ku|*kar-|w=kirin}} ji {{mîr|ine-pro|ku|*kʷer-|w=kirin}}.
Hevreha {{hv|ckb|کار|tr=kar|w=kar}}, {{hv|hac|kar|sc=Latn|w=kar}}, {{hv|zza|kar|w=kar}}, {{hv|fa|کار|tr=kâr|w=kar}}, {{hv|sa|कर्मन्|tr=karma|w=[[bizav]], [[hereket]], kar}}.
;{{biçûk|Çavkanî:
* {{Cheung|r=237}}
* {{Watkins|r=45}}
}}
==== Bide ber ====
{{kol3|ku
| ker
| kêr
| kir
| kîr
| kor
| kûr
}}
==== Herwiha binêre ====
{{kol2|ku
|ar
|bar
|car
|çar
|dar
|gar
|har
|jar
|lar
|mar
|nar
|par
|qar
|sar
|şar
|war
|zar
|xar
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|werk}}, {{W+|af|arbeid}}
* {{Z|xag}}: {{W-|xag|𐔰𐕐}}
* {{Z|sq}}: {{W+|sq|punë|m}}
* {{Z|gmw-ecg}}: {{W-|gmw-ecg|Arbitt|m}}, {{W-|gmw-ecg|Arb|m}}
* {{Z|de}}: {{W+|de|Arbeit|m}}
* {{Z|am}}: {{W-|am|ሥራ}}
* {{Z|ani}}: {{W-|ani|гьалтӏи}}
* {{Z|an}}: {{W-|an|treball}}, {{W+|an|treballo|n}}
* {{Z|aii}}: {{W-|aii|ܦܘܼܠܚܵܢܵܐ|tr=pulḳana|n}}, {{W-|aii|ܫܘܼܠܵܐ|tr=šula|n}}
* {{Z|as}}: {{W-|as|কাম}}
* {{Z|ast}}: {{W-|ast|trabayu|n}}
* {{Z|tay}}: {{W-|tay|mtzaw}}
* {{Z|av}}: {{W-|av|хӏалтӏи}}
* {{Z|az}}: {{W+|az|əmək}}, {{W+|az|iş}}, {{W-|az|zəhmət}}
* {{Z|eu}}: {{W-|eu|lan}}
* {{Z|ba}}: {{W-|ba|эш}}
* {{Z|be}}: {{W-|be|пра́ца|m}}, {{W-|be|рабо́та|m}}
* {{Z|bn}}: {{W+|bn|কাজ}}, {{W+|bn|চাকরি}}
* {{Z|bg}}: {{W-|bg|ра́бота|m}}, {{W+|bg|труд|n}}
* {{Z|my}}: {{W+|my|လုပ်အား}}, {{W+|my|အလုပ်}}
* {{Z|cia}}: {{W-|cia|까라자아}}
* {{Z|ce}}: {{W-|ce|болх}}
* {{Z|cs}}: {{W+|cs|práce|m}}, {{W+|cs|zaměstnání|nt}}
* {{Z|ny}}: {{W-|ny|ntchito}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|工作|tr=gung1 zok3}}
*: {{Z|dng}}: {{W-|dng|гунзуә}}
*: {{Z|cmn}}: {{W+|cmn|工作|tr=gōngzuò}}, {{W+|cmn|勞動|tr=láodòng}}, {{W+|cmn|職業|tr=zhíyè}}
*: {{Z|nan}}: {{W+|nan|工作|tr=kang-chok / kong-chok}}
*: {{Z|wuu}}: {{W-|wuu|工作}}
* {{Z|da}}: {{W+|da|arbejde|nt}}, {{W+|da|job|nt}}
* {{Z|id}}: {{W+|id|kerjaan}}, {{W+|id|pekerjaan}}
* {{Z|ar}}: {{W+|ar|عَمَل|n}}, {{W-|ar|شُغْل|n}}, {{W-|ar|خِدْمَة|m}}, {{W-|ar|وَظِيفَة|m}}
*: {{Z|arz}}: {{W-|arz|شغل|n|tr=šuḡl}}
*: {{Z|acw}}: {{W-|acw|شغل|n|tr=šuḡul}}
*: {{Z|ary}}: {{W-|ary|خدمة|m|tr=ḵedma}}, {{W-|ary|وظيفة|m|tr=waḍīfa}}
* {{Z|hy}}: {{W+|hy|աշխատանք}}, {{W+|hy|գործ}}
* {{Z|eo}}: {{W+|eo|laboro}}
* {{Z|et}}: {{W+|et|töö}}
* {{Z|ee}}: {{W-|ee|dɔwɔwɔ}}
* {{Z|ext}}: {{W-|ext|trebahu}}
* {{Z|fa}}: {{W+|fa|کار|tr=kâr}}, {{W+|fa|شغل|tr=šoğl}}
* {{Z|fi}}: {{W+|fi|työ}}
* {{Z|fur}}: {{W-|fur|vore|m}}
* {{Z|fy}}: {{W-|fy|wurk|nt}}
* {{Z|gd}}: {{W-|gd|cosnadh|n}}, {{W+|gd|obair|m}}, {{W-|gd|dreuchd|m}}
* {{Z|gl}}: {{W+|gl|traballo|n}}, {{W+|gl|choio|n}}
* {{Z|got}}: {{W-|got|𐌰𐍂𐌱𐌰𐌹𐌸𐍃|m}}
* {{Z|ka}}: {{W-|ka|მუშაობა}}
* {{Z|ht}}: {{W-|ht|travay}}
* {{Z|ha}}: {{W+|ha|aiki}}
* {{Z|hi}}: {{W+|hi|काम|n}}, {{W+|hi|श्रम|n}}, {{W+|hi|उद्योग|n}}, {{W+|hi|वृत्ति|m}}, {{W+|hi|कार्य|n}}, {{W+|hi|कार|n}}, {{W+|hi|कर्म|n}}, {{W+|hi|अमल}}, {{W+|hi|वजीफा|m}}
* {{Z|nl}}: {{W+|nl|werk|nt}}, {{W+|nl|job|m}}, {{W+|nl|arbeid|n}}
* {{Z|he}}: {{W-|he|עֲבוֹדָה|m|tr=avodá}}, {{W-|he|מְלָאכָה|m|tr=melakhá}}, {{W-|he|עָמָל|n|tr=amál}}
* {{Z|ang}}: {{W-|ang|weorc|nt}}, {{W-|ang|earfoþe|nt}}
* {{Z|en}}: {{W+|en|work}}
* {{Z|izh}}: {{W-|izh|töö}}, {{W-|izh|raae}}
* {{Z|inh}}: {{W-|inh|болх}}
* {{Z|ga}}: {{W-|ga|obair|m}}, {{W-|ga|saothar|n}}
* {{Z|ist}}: {{W-|ist|lavur}}
* {{Z|it}}: {{W+|it|lavoro|n}}, {{W+|it|impiego|n}}, {{W+|it|occupazione|m}}
* {{Z|is}}: {{W+|is|vinna|m}}
* {{Z|ja}}: {{W+|ja|仕事|tr=しごと, shigoto}}, {{W+|ja|労働|tr=ろうどう, rōdō}}, {{W+|ja|職業|tr=しょくぎょう, shokugyō}}, {{W+|ja|ワーク|tr=wāku}}
* {{Z|kl}}: {{W-|kl|suliaq}}
* {{Z|kam}}: {{W-|kam|wia}}
* {{Z|ca}}: {{W+|ca|treball|n}}, {{W+|ca|feina}}
* {{Z|kgp}}: {{W-|kgp|rãnhrãj}}
* {{Z|ky}}: {{W+|ky|жумуш}}, {{W+|ky|иш}}, {{W+|ky|эмгек}}, {{W+|ky|кызмат}}
* {{Z|ki}}: {{W-|ki|wira}}
* {{Z|si}}: {{W-|si|වැඩ}}
* {{Z|koi}}: {{W-|koi|удж}}
* {{Z|ko}}: {{W+|ko|일}}, {{W+|ko|노동}}, {{W+|ko|로동}}, {{W+|ko|직업}}
* {{Z|lad}}: {{W-|lad|ovra}}, {{W-|lad|lavoro}}
* {{Z|ltg}}: {{W-|ltg|dorbs}}
* {{Z|la}}: {{W+|la|labor|n}}
* {{Z|lv}}: {{W+|lv|darbs|n}}
* {{Z|lo}}: {{W-|lo|ງານ}}, {{W-|lo|ນັກງານ}}
* {{Z|olo}}: {{W-|olo|ruado}}
* {{Z|lij}}: {{W-|lij|travàggio}}, {{W-|lij|lou}}
* {{Z|lt}}: {{W+|lt|darbas|n}}
* {{Z|lmo}}: {{W-|lmo|lavor}}, {{W-|lmo|laur}}
* {{Z|luy}}: {{W-|luy|ekasi}}
* {{Z|lb}}: {{W+|lb|Aarbecht|m}}
* {{Z|mhn}}: {{W-|mhn|òrbet|m}}
* {{Z|mk}}: {{W+|mk|работа|m}}
* {{Z|ml}}: {{W+|ml|ജോലി}}, {{W+|ml|പണി}}
* {{Z|ms}}: {{W+|ms|kerja}}
* {{Z|mt}}: {{W-|mt|xogħol|n}}
* {{Z|yua}}: {{W-|yua|meyaj}}
* {{Z|hu}}: {{W+|hu|munka}}, {{W+|hu|dolog}}, {{W+|hu|feladat}}
* {{Z|min}}: {{W-|min|karajo}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|ажил}}
* {{Z|wmw}}: {{W-|wmw|kazi}}
* {{Z|nap}}: {{W-|nap|lavoro|n}}
* {{Z|nv}}: {{W-|nv|naashnish}}
* {{Z|nrf}}: {{W-|nrf|travas|n}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|arbeid|nt}}, {{W+|nb|jobb|n}}, {{W+|nb|verk|nt}}
*: {{Z|nn}}: {{W+|nn|arbeid|nt}}, {{W+|nn|jobb|n}}, {{W+|nn|verk|nt}}
* {{Z|oc}}: {{W+|oc|trabalh|n}}
* {{Z|or}}: {{W+|or|କାମ}}
* {{Z|om}}: {{W-|om|hojii}}
* {{Z|os}}: {{W-|os|куыст}}
* {{Z|ug}}: {{W-|ug|خىزمەت}}, {{W-|ug|ئىش}}
* {{Z|uz}}: {{W+|uz|ishlash}}, {{W+|uz|mehnat}}, {{W+|uz|ish}}, {{W+|uz|xizmat}}
* {{Z|pap}}: {{W-|pap|trabou}}
* {{Z|ps}}: {{W+|ps|کار|n|tr=kār}}
* {{Z|pms}}: {{W-|pms|travaj|n}}
* {{Z|pis}}: {{W-|pis|waka}}
* {{Z|ppl}}: {{W-|ppl|tekit}}
* {{Z|pdt}}: {{W-|pdt|Oabeit|m}}, {{W-|pdt|Woakj|nt}}
* {{Z|pl}}: {{W+|pl|praca|m}}, {{W+|pl|robota|m}}
* {{Z|pt}}: {{W+|pt|trabalho|n}}, {{W+|pt|emprego|n}}
* {{Z|pa}}: {{W-|pa|ਕੰਮ|n}}
* {{Z|kk}}: {{W-|kk|еңбек}}, {{W+|kk|жұмыс}}, {{W-|kk|іс}}, {{W-|kk|қызмет}}, {{W-|kk|шаруа}}
* {{Z|rm}}: {{W-|rm|lavur|m}}, {{W-|rm|lavour|m}}
* {{Z|rom}}: {{W-|rom|butǐ|m}}
* {{Z|ro}}: {{W+|ro|muncă|m}}, {{W+|ro|serviciu|nt}}, {{W+|ro|ocupație|m}}, {{W+|ro|îndeletnicire|m}}
* {{Z|ru}}: {{W-|ru|рабо́та|m}}, {{W+|ru|труд|n}}
* {{Z|rue}}: {{W-|rue|пра́ца|m}}, {{W-|rue|робо́та|m}}
* {{Z|se}}: {{W-|se|bargu}}
* {{Z|sm}}: {{W-|sm|galus}}
* {{Z|sa}}: {{W+|sa|कर्मन्|nt}}, {{W+|sa|कार्य}}
* {{Z|sc}}: {{W-|sc|trabadhu}}, {{W-|sc|traballu}}
* {{Z|scn}}: {{W+|scn|lavuru|n}}, {{W+|scn|travagghiu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|по̀сао|n}}, {{W-|sh|ра̑д|n}}
*: Latînî: {{W+|sh|pòsao|n}}, {{W+|sh|rȃd|n}}
* {{Z|syl}}: {{W-|syl|ꠇꠣꠝ}}
* {{Z|sco}}: {{W-|sco|wark}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|работа|m}}, {{W-|cu|троудъ|n}}
*: Glagolîtîk: {{W-|cu|ⱃⰰⰱⱁⱅⰰ|m}}, {{W-|cu|ⱅⱃⱆⰴⱏ|n}}
* {{Z|orv}}: {{W-|orv|робота|m}}, {{W-|orv|трудъ|n}}
* {{Z|sk}}: {{W+|sk|práca|m}}
* {{Z|sl}}: {{W+|sl|delo|nt}}
* {{Z|so}}: {{W+|so|shaqo}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|źěło|nt}}
* {{Z|st}}: {{W+|st|mosebetsi}}
* {{Z|es}}: {{W+|es|trabajo|n}}, {{W+|es|curro|n}}, {{W+|es|laburo|n}}
* {{Z|sw}}: {{W+|sw|kazi}}
* {{Z|sv}}: {{W+|sv|arbete|nt}}, {{W+|sv|jobb|nt}}
* {{Z|cjs}}: {{W-|cjs|иш}}
* {{Z|tg}}: {{W+|tg|кор}}, {{W-|tg|шуғл}}
* {{Z|tl}}: {{W-|tl|isi}}, {{W+|tl|trabaho}}
* {{Z|ta}}: {{W+|ta|வேலை}}
* {{Z|th}}: {{W-|th|การงาน}}, {{W+|th|งาน}}, {{W+|th|แรงงาน}}
* {{Z|te}}: {{W-|te|కూలీపని}}, {{W+|te|ఉద్యోగము}}, {{W+|te|వృత్తి}}
* {{Z|tt}}: {{W+|tt|эш}}, {{W+|tt|хезмәт}}
* {{Z|tet}}: {{W-|tet|serbisu}}
* {{Z|ti}}: {{W-|ti|ስራሕ}}
* {{Z|tr}}: {{W+|tr|iş}}, {{W+|tr|meslek}}, {{W+|tr|emek}}
* {{Z|tk}}: {{W-|tk|iş}}, {{W+|tk|zähmet}}
* {{Z|bo}}: {{W-|bo|ལས་ཀ}}
* {{Z|to}}: {{W-|to|ngāue}}
* {{Z|tum}}: {{W-|tum|nchito}}
* {{Z|udi}}: {{W-|udi|аш}}, {{W-|udi|аьш}}
* {{Z|udm}}: {{W-|udm|уж}}
* {{Z|ur}}: {{W-|ur|کام|n|tr=kām}}
* {{Z|uk}}: {{W-|uk|робо́та|m}}, {{W-|uk|пра́ця|m}}
* {{Z|vec}}: {{W+|vec|laoro|n}}, {{W-|vec|laóro|n}}
* {{Z|vi}}: {{W+|vi|việc làm}}, {{W+|vi|công việc}}
* {{Z|vot}}: {{W-|vot|töö}}
* {{Z|wa}}: {{W+|wa|ovraedje|n|m}}, {{W+|wa|boutaedje|n}}, {{W+|wa|djob|n}}
* {{Z|cy}}: {{W+|cy|gwaith|n}}
* {{Z|km}}: {{W+|km|ការងារ}}
* {{Z|yi}}: {{W-|yi|אַרבעט|m}}
* {{Z|yo}}: {{W-|yo|iṣẹ́}}
* {{Z|el}}: {{W+|el|έργο|nt}}, {{W+|el|εργασία|m}}, {{W+|el|δουλειά|m}}
*: Kevn: {{W-|grc|ἔργον|nt}}
* {{Z|za}}: {{W-|za|gunghcoz}}
* {{Z|nmn}}: {{W-|nmn|ǀgáã}}
{{werger-bin}}
:{{werger çavkanî|en|work|oldid=75572707|beş=Ev qismê Wergerê}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}} {{k-ya req}}
# [[sûde]], [[kelk]], [[feyde]], [[qazanc]], [[kêr]], [[mifa]], [[berjewendî]]
#* {{jêder-malper|ku|jêgirtin=Çimkî qezenca wê ji zîv zêdetir e, '''kara''' wê ji zêrê xas çêtir e.|sernav=Şîretên Silêman 3:14 / Kitêba Pîroz|nivîskar=Bible Society in Turkey|sal=2005|websîte=bible.com|url=https://www.bible.com/bible/251/PRO.3.KURNT}}
# [[nêçîr|Nêçîr]]a [[heywan]]an (bi taybetî [[firinde]]yan) li [[zivistan]]ê yan dema ku [[berf]] [[barîn|bariye]] û [[heywan]] [[qerimîn]]e<br>([[nêçîrvan]] [[tomik]]î [[avêtin|diavêtin]] ber wan û heywan nêzîk dibin û nêçîrvan wan digire yan [[kuştin|dikuje]])
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
(wate 2) Ji {{ji|ira}}, hevreha farisî {{g|fa|شکار|tr=şikar}}. Bo ketina ''şi-'' ji destpêka peyvê, bidin ber [[nasîn]], bi farisî û zazakî {{q|zza||şinas-}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: (1) {{W+|en|benefit}}, {{W+|en|profit}}, (2) winter hunting
{{werger-bin}}
{{bend}}
=== Navdêr 3 ===
{{navdêr|ku|z=m}} {{k-ya nerm}}
# ''Binêre'': '''[[karik]]'''
#* {{bênimûne|ku}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
== {{ziman|hac}} ==
=== Navdêr ===
{{navdêr|hac|sc=Latn}}
# {{g|en|kar}}
#* {{bênimûne|hac}}
# [[lêker]]
#* {{bênimûne|hac}}
== {{ziman|nay}} ==
=== Cînav ===
{{cînav|nay}}
# [[ew#ku|ew]] (pirjimar), [[wan#ku|wan]]
#* {{bênimûne|nay}}
== {{ziman|rel}} ==
=== Navdêr ===
{{navdêr|rel}}
# {{f|rel|heywan}} [[kûçik#ku|kûçik]], [[se#ku|se]]
#* {{bênimûne|rel}}
== {{ziman|quc}} ==
=== Navdêr ===
{{navdêr|quc}}
# {{f|quc|heywan}} [[masî#ku|masî]]
#* {{bênimûne|quc}}
== {{ziman|af}} ==
=== Navdêr ===
{{navdêr|af}}
# {{f|af|navgîn}} {{g|ku|tirimpêl}}, {{g|ku|otomobîl}}, {{g|ku|erebe}}, {{g|ku|seyare}}, {{g|ku|maşîn}}
#* {{bênimûne|af}}
=== Çavkanî ===
{{rûpela wergerê|af|tirimpêl}}
== {{ziman|az}} ==
=== Rengdêr ===
{{rengdêr|az}}
# {{g|ku|ker}} (kerr, nebihîz, guhgiran)
#* {{bênimûne|az}}
=== Çavkanî ===
{{rûpela wergerê|az|ker}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-ToprakM-kar.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# [[berf|Berf]], [[befr]].
#* {{bênimûne|tr}}
2u487nu45a79gti328wahnatvadfe3d
6329864
6329841
2026-08-13T00:12:11Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329864
wikitext
text/x-wiki
{{bnr-h|kâr|Kar|-kar|-kâr}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{beş|Navdêr 1|Navdêr 2}} {{ku-IPA|k(h)ar}}
** {{deng|ku|LL-Q36368 (kur)-Dildadil-kar (xebat).wav|dever=Amed}}
** {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kar.wav|dever=Bidlîs}}
* {{beş|Navdêr 3}} {{IPA|ku|/kʌːɾ/}}
** {{deng|ku|LL-Q36368 (kur)-Dildadil-kar.wav|dever=Amed}}
** {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-kar (Navdêr 3).wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=n}} {{k-ya req}}
# Tiştê mirov dike.
#: {{hevmane|ku|xebat|ked|şol|şuxl|îş|çalakî|erk|vatinî}}.
#* {{jêder|ku|{{Jêgirtin/Mela Hisênê Bateyî/Mewlûda Kurdî}}|jêgirtin=Ma remeyte îz remeyte" goşîdar<br />Destê wî destê Xuda der '''kar''' û bar}}
# [[amadekarî]], [[amadehî]], [[hazirî]]
#: {{mk|ku|Me xwe bo çûnê '''kar''' kiriye.}}
# [[sûde]], [[kelk]], [[feyde]], [[qazanc]], [[qezenc]], [[kêr]], [[mifa]], [[berjewendî]].
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|كار}}
==== Formên alternatîv ====
* {{g|ku|karûkisb}}
==== Jê ====
{{kol|ku|cure=Jê
|bêkar
|bêkarî
|bêkarîtî
|bêkartî
|bikar
|bikarî
|bikarîtî
|bikartî
|-kar
|kardar
|kardarî
|kardarîtî
|kardartî
|karder
|karderî
|karderîtî
|kardertî
|kardêr
|kardêrî
|kardêrîtî
|kardêrtî
|kargêr
|kargêrî
|karî
|-karî
|karîgêr
|karîgêrî
|karîgêrîtî
|karîgêrtî
|kargir
|kargirî
|kargirîtî
|kargirtî
|karker
|karkerî
|karkerîtî
|karkertî
}}
==== Etîmolojî ====
Têkilî {{q|ku|kirin}}, {{q|ku|-ker}}. Ji {{mîr|ira-pro|ku|*kar-|w=kirin}} ji {{mîr|ine-pro|ku|*kʷer-|w=kirin}}.
Hevreha {{hv|ckb|کار|tr=kar|w=kar}}, {{hv|hac|kar|sc=Latn|w=kar}}, {{hv|zza|kar|w=kar}}, {{hv|fa|کار|tr=kâr|w=kar}}, {{hv|sa|कर्मन्|tr=karma|w=[[bizav]], [[hereket]], kar}}.
;{{biçûk|Çavkanî:
* {{Cheung|r=237}}
* {{Watkins|r=45}}
}}
==== Bide ber ====
{{kol3|ku
| ker
| kêr
| kir
| kîr
| kor
| kûr
}}
==== Herwiha binêre ====
{{kol2|ku
|ar
|bar
|car
|çar
|dar
|gar
|har
|jar
|lar
|mar
|nar
|par
|qar
|sar
|şar
|war
|zar
|xar
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|werk}}, {{W+|af|arbeid}}
* {{Z|xag}}: {{W-|xag|𐔰𐕐}}
* {{Z|sq}}: {{W+|sq|punë|m}}
* {{Z|gmw-ecg}}: {{W-|gmw-ecg|Arbitt|m}}, {{W-|gmw-ecg|Arb|m}}
* {{Z|de}}: {{W+|de|Arbeit|m}}
* {{Z|am}}: {{W-|am|ሥራ}}
* {{Z|ani}}: {{W-|ani|гьалтӏи}}
* {{Z|an}}: {{W-|an|treball}}, {{W+|an|treballo|n}}
* {{Z|aii}}: {{W-|aii|ܦܘܼܠܚܵܢܵܐ|tr=pulḳana|n}}, {{W-|aii|ܫܘܼܠܵܐ|tr=šula|n}}
* {{Z|as}}: {{W-|as|কাম}}
* {{Z|ast}}: {{W-|ast|trabayu|n}}
* {{Z|tay}}: {{W-|tay|mtzaw}}
* {{Z|av}}: {{W-|av|хӏалтӏи}}
* {{Z|az}}: {{W+|az|əmək}}, {{W+|az|iş}}, {{W-|az|zəhmət}}
* {{Z|eu}}: {{W-|eu|lan}}
* {{Z|ba}}: {{W-|ba|эш}}
* {{Z|be}}: {{W-|be|пра́ца|m}}, {{W-|be|рабо́та|m}}
* {{Z|bn}}: {{W+|bn|কাজ}}, {{W+|bn|চাকরি}}
* {{Z|bg}}: {{W-|bg|ра́бота|m}}, {{W+|bg|труд|n}}
* {{Z|my}}: {{W+|my|လုပ်အား}}, {{W+|my|အလုပ်}}
* {{Z|cia}}: {{W-|cia|까라자아}}
* {{Z|ce}}: {{W-|ce|болх}}
* {{Z|cs}}: {{W+|cs|práce|m}}, {{W+|cs|zaměstnání|nt}}
* {{Z|ny}}: {{W-|ny|ntchito}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|工作|tr=gung1 zok3}}
*: {{Z|dng}}: {{W-|dng|гунзуә}}
*: {{Z|cmn}}: {{W+|cmn|工作|tr=gōngzuò}}, {{W+|cmn|勞動|tr=láodòng}}, {{W+|cmn|職業|tr=zhíyè}}
*: {{Z|nan}}: {{W+|nan|工作|tr=kang-chok / kong-chok}}
*: {{Z|wuu}}: {{W-|wuu|工作}}
* {{Z|da}}: {{W+|da|arbejde|nt}}, {{W+|da|job|nt}}
* {{Z|id}}: {{W+|id|kerjaan}}, {{W+|id|pekerjaan}}
* {{Z|ar}}: {{W+|ar|عَمَل|n}}, {{W-|ar|شُغْل|n}}, {{W-|ar|خِدْمَة|m}}, {{W-|ar|وَظِيفَة|m}}
*: {{Z|arz}}: {{W-|arz|شغل|n|tr=šuḡl}}
*: {{Z|acw}}: {{W-|acw|شغل|n|tr=šuḡul}}
*: {{Z|ary}}: {{W-|ary|خدمة|m|tr=ḵedma}}, {{W-|ary|وظيفة|m|tr=waḍīfa}}
* {{Z|hy}}: {{W+|hy|աշխատանք}}, {{W+|hy|գործ}}
* {{Z|eo}}: {{W+|eo|laboro}}
* {{Z|et}}: {{W+|et|töö}}
* {{Z|ee}}: {{W-|ee|dɔwɔwɔ}}
* {{Z|ext}}: {{W-|ext|trebahu}}
* {{Z|fa}}: {{W+|fa|کار|tr=kâr}}, {{W+|fa|شغل|tr=šoğl}}
* {{Z|fi}}: {{W+|fi|työ}}
* {{Z|fur}}: {{W-|fur|vore|m}}
* {{Z|fy}}: {{W-|fy|wurk|nt}}
* {{Z|gd}}: {{W-|gd|cosnadh|n}}, {{W+|gd|obair|m}}, {{W-|gd|dreuchd|m}}
* {{Z|gl}}: {{W+|gl|traballo|n}}, {{W+|gl|choio|n}}
* {{Z|got}}: {{W-|got|𐌰𐍂𐌱𐌰𐌹𐌸𐍃|m}}
* {{Z|ka}}: {{W-|ka|მუშაობა}}
* {{Z|ht}}: {{W-|ht|travay}}
* {{Z|ha}}: {{W+|ha|aiki}}
* {{Z|hi}}: {{W+|hi|काम|n}}, {{W+|hi|श्रम|n}}, {{W+|hi|उद्योग|n}}, {{W+|hi|वृत्ति|m}}, {{W+|hi|कार्य|n}}, {{W+|hi|कार|n}}, {{W+|hi|कर्म|n}}, {{W+|hi|अमल}}, {{W+|hi|वजीफा|m}}
* {{Z|nl}}: {{W+|nl|werk|nt}}, {{W+|nl|job|m}}, {{W+|nl|arbeid|n}}
* {{Z|he}}: {{W-|he|עֲבוֹדָה|m|tr=avodá}}, {{W-|he|מְלָאכָה|m|tr=melakhá}}, {{W-|he|עָמָל|n|tr=amál}}
* {{Z|ang}}: {{W-|ang|weorc|nt}}, {{W-|ang|earfoþe|nt}}
* {{Z|en}}: {{W+|en|work}}
* {{Z|izh}}: {{W-|izh|töö}}, {{W-|izh|raae}}
* {{Z|inh}}: {{W-|inh|болх}}
* {{Z|ga}}: {{W-|ga|obair|m}}, {{W-|ga|saothar|n}}
* {{Z|ist}}: {{W-|ist|lavur}}
* {{Z|it}}: {{W+|it|lavoro|n}}, {{W+|it|impiego|n}}, {{W+|it|occupazione|m}}
* {{Z|is}}: {{W+|is|vinna|m}}
* {{Z|ja}}: {{W+|ja|仕事|tr=しごと, shigoto}}, {{W+|ja|労働|tr=ろうどう, rōdō}}, {{W+|ja|職業|tr=しょくぎょう, shokugyō}}, {{W+|ja|ワーク|tr=wāku}}
* {{Z|kl}}: {{W-|kl|suliaq}}
* {{Z|kam}}: {{W-|kam|wia}}
* {{Z|ca}}: {{W+|ca|treball|n}}, {{W+|ca|feina}}
* {{Z|kgp}}: {{W-|kgp|rãnhrãj}}
* {{Z|ky}}: {{W+|ky|жумуш}}, {{W+|ky|иш}}, {{W+|ky|эмгек}}, {{W+|ky|кызмат}}
* {{Z|ki}}: {{W-|ki|wira}}
* {{Z|si}}: {{W-|si|වැඩ}}
* {{Z|koi}}: {{W-|koi|удж}}
* {{Z|ko}}: {{W+|ko|일}}, {{W+|ko|노동}}, {{W+|ko|로동}}, {{W+|ko|직업}}
* {{Z|lad}}: {{W-|lad|ovra}}, {{W-|lad|lavoro}}
* {{Z|ltg}}: {{W-|ltg|dorbs}}
* {{Z|la}}: {{W+|la|labor|n}}
* {{Z|lv}}: {{W+|lv|darbs|n}}
* {{Z|lo}}: {{W-|lo|ງານ}}, {{W-|lo|ນັກງານ}}
* {{Z|olo}}: {{W-|olo|ruado}}
* {{Z|lij}}: {{W-|lij|travàggio}}, {{W-|lij|lou}}
* {{Z|lt}}: {{W+|lt|darbas|n}}
* {{Z|lmo}}: {{W-|lmo|lavor}}, {{W-|lmo|laur}}
* {{Z|luy}}: {{W-|luy|ekasi}}
* {{Z|lb}}: {{W+|lb|Aarbecht|m}}
* {{Z|mhn}}: {{W-|mhn|òrbet|m}}
* {{Z|mk}}: {{W+|mk|работа|m}}
* {{Z|ml}}: {{W+|ml|ജോലി}}, {{W+|ml|പണി}}
* {{Z|ms}}: {{W+|ms|kerja}}
* {{Z|mt}}: {{W-|mt|xogħol|n}}
* {{Z|yua}}: {{W-|yua|meyaj}}
* {{Z|hu}}: {{W+|hu|munka}}, {{W+|hu|dolog}}, {{W+|hu|feladat}}
* {{Z|min}}: {{W-|min|karajo}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|ажил}}
* {{Z|wmw}}: {{W-|wmw|kazi}}
* {{Z|nap}}: {{W-|nap|lavoro|n}}
* {{Z|nv}}: {{W-|nv|naashnish}}
* {{Z|nrf}}: {{W-|nrf|travas|n}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|arbeid|nt}}, {{W+|nb|jobb|n}}, {{W+|nb|verk|nt}}
*: {{Z|nn}}: {{W+|nn|arbeid|nt}}, {{W+|nn|jobb|n}}, {{W+|nn|verk|nt}}
* {{Z|oc}}: {{W+|oc|trabalh|n}}
* {{Z|or}}: {{W+|or|କାମ}}
* {{Z|om}}: {{W-|om|hojii}}
* {{Z|os}}: {{W-|os|куыст}}
* {{Z|ug}}: {{W-|ug|خىزمەت}}, {{W-|ug|ئىش}}
* {{Z|uz}}: {{W+|uz|ishlash}}, {{W+|uz|mehnat}}, {{W+|uz|ish}}, {{W+|uz|xizmat}}
* {{Z|pap}}: {{W-|pap|trabou}}
* {{Z|ps}}: {{W+|ps|کار|n|tr=kār}}
* {{Z|pms}}: {{W-|pms|travaj|n}}
* {{Z|pis}}: {{W-|pis|waka}}
* {{Z|ppl}}: {{W-|ppl|tekit}}
* {{Z|pdt}}: {{W-|pdt|Oabeit|m}}, {{W-|pdt|Woakj|nt}}
* {{Z|pl}}: {{W+|pl|praca|m}}, {{W+|pl|robota|m}}
* {{Z|pt}}: {{W+|pt|trabalho|n}}, {{W+|pt|emprego|n}}
* {{Z|pa}}: {{W-|pa|ਕੰਮ|n}}
* {{Z|kk}}: {{W-|kk|еңбек}}, {{W+|kk|жұмыс}}, {{W-|kk|іс}}, {{W-|kk|қызмет}}, {{W-|kk|шаруа}}
* {{Z|rm}}: {{W-|rm|lavur|m}}, {{W-|rm|lavour|m}}
* {{Z|rom}}: {{W-|rom|butǐ|m}}
* {{Z|ro}}: {{W+|ro|muncă|m}}, {{W+|ro|serviciu|nt}}, {{W+|ro|ocupație|m}}, {{W+|ro|îndeletnicire|m}}
* {{Z|ru}}: {{W-|ru|рабо́та|m}}, {{W+|ru|труд|n}}
* {{Z|rue}}: {{W-|rue|пра́ца|m}}, {{W-|rue|робо́та|m}}
* {{Z|se}}: {{W-|se|bargu}}
* {{Z|sm}}: {{W-|sm|galus}}
* {{Z|sa}}: {{W+|sa|कर्मन्|nt}}, {{W+|sa|कार्य}}
* {{Z|sc}}: {{W-|sc|trabadhu}}, {{W-|sc|traballu}}
* {{Z|scn}}: {{W+|scn|lavuru|n}}, {{W+|scn|travagghiu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|по̀сао|n}}, {{W-|sh|ра̑д|n}}
*: Latînî: {{W+|sh|pòsao|n}}, {{W+|sh|rȃd|n}}
* {{Z|syl}}: {{W-|syl|ꠇꠣꠝ}}
* {{Z|sco}}: {{W-|sco|wark}}
* {{Z|cu}}:
*: Kirîlî: {{W-|cu|работа|m}}, {{W-|cu|троудъ|n}}
*: Glagolîtîk: {{W-|cu|ⱃⰰⰱⱁⱅⰰ|m}}, {{W-|cu|ⱅⱃⱆⰴⱏ|n}}
* {{Z|orv}}: {{W-|orv|робота|m}}, {{W-|orv|трудъ|n}}
* {{Z|sk}}: {{W+|sk|práca|m}}
* {{Z|sl}}: {{W+|sl|delo|nt}}
* {{Z|so}}: {{W+|so|shaqo}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|źěło|nt}}
* {{Z|st}}: {{W+|st|mosebetsi}}
* {{Z|es}}: {{W+|es|trabajo|n}}, {{W+|es|curro|n}}, {{W+|es|laburo|n}}
* {{Z|sw}}: {{W+|sw|kazi}}
* {{Z|sv}}: {{W+|sv|arbete|nt}}, {{W+|sv|jobb|nt}}
* {{Z|cjs}}: {{W-|cjs|иш}}
* {{Z|tg}}: {{W+|tg|кор}}, {{W-|tg|шуғл}}
* {{Z|tl}}: {{W-|tl|isi}}, {{W+|tl|trabaho}}
* {{Z|ta}}: {{W+|ta|வேலை}}
* {{Z|th}}: {{W-|th|การงาน}}, {{W+|th|งาน}}, {{W+|th|แรงงาน}}
* {{Z|te}}: {{W-|te|కూలీపని}}, {{W+|te|ఉద్యోగము}}, {{W+|te|వృత్తి}}
* {{Z|tt}}: {{W+|tt|эш}}, {{W+|tt|хезмәт}}
* {{Z|tet}}: {{W-|tet|serbisu}}
* {{Z|ti}}: {{W-|ti|ስራሕ}}
* {{Z|tr}}: {{W+|tr|iş}}, {{W+|tr|meslek}}, {{W+|tr|emek}}
* {{Z|tk}}: {{W-|tk|iş}}, {{W+|tk|zähmet}}
* {{Z|bo}}: {{W-|bo|ལས་ཀ}}
* {{Z|to}}: {{W-|to|ngāue}}
* {{Z|tum}}: {{W-|tum|nchito}}
* {{Z|udi}}: {{W-|udi|аш}}, {{W-|udi|аьш}}
* {{Z|udm}}: {{W-|udm|уж}}
* {{Z|ur}}: {{W-|ur|کام|n|tr=kām}}
* {{Z|uk}}: {{W-|uk|робо́та|m}}, {{W-|uk|пра́ця|m}}
* {{Z|vec}}: {{W+|vec|laoro|n}}, {{W-|vec|laóro|n}}
* {{Z|vi}}: {{W+|vi|việc làm}}, {{W+|vi|công việc}}
* {{Z|vot}}: {{W-|vot|töö}}
* {{Z|wa}}: {{W+|wa|ovraedje|n|m}}, {{W+|wa|boutaedje|n}}, {{W+|wa|djob|n}}
* {{Z|cy}}: {{W+|cy|gwaith|n}}
* {{Z|km}}: {{W+|km|ការងារ}}
* {{Z|yi}}: {{W-|yi|אַרבעט|m}}
* {{Z|yo}}: {{W-|yo|iṣẹ́}}
* {{Z|el}}: {{W+|el|έργο|nt}}, {{W+|el|εργασία|m}}, {{W+|el|δουλειά|m}}
*: Kevn: {{W-|grc|ἔργον|nt}}
* {{Z|za}}: {{W-|za|gunghcoz}}
* {{Z|nmn}}: {{W-|nmn|ǀgáã}}
{{werger-bin}}
:{{werger çavkanî|en|work|oldid=75572707|beş=Ev qismê Wergerê}}
=== Navdêr 2 ===
{{navdêr|ku|z=m}} {{k-ya req}}
# [[sûde]], [[kelk]], [[feyde]], [[qazanc]], [[kêr]], [[mifa]], [[berjewendî]]
#* {{jêder-malper|ku|jêgirtin=Çimkî qezenca wê ji zîv zêdetir e, '''kara''' wê ji zêrê xas çêtir e.|sernav=Şîretên Silêman 3:14 / Kitêba Pîroz|nivîskar=Bible Society in Turkey|sal=2005|websîte=bible.com|url=https://www.bible.com/bible/251/PRO.3.KURNT}}
# [[nêçîr|Nêçîra]] [[heywan]]an (bi taybetî [[firinde]]yan) li [[zivistan]]ê yan dema ku [[berf]] [[barîn|bariye]] û [[heywan]] [[qerimîn]]e<br>([[nêçîrvan]] [[tomik]]î [[avêtin|diavêtin]] ber wan û heywan nêzîk dibin û nêçîrvan wan digire yan [[kuştin|dikuje]])
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
(wate 2) Ji {{ji|ira}}, hevreha farisî {{g|fa|شکار|tr=şikar}}. Bo ketina ''şi-'' ji destpêka peyvê, bidin ber [[nasîn]], bi farisî û zazakî {{q|zza||şinas-}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: (1) {{W+|en|benefit}}, {{W+|en|profit}}, (2) winter hunting
{{werger-bin}}
{{bend}}
=== Navdêr 3 ===
{{navdêr|ku|z=m}} {{k-ya nerm}}
# ''Binêre'': '''[[karik]]'''
#* {{bênimûne|ku}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
== {{ziman|hac}} ==
=== Navdêr ===
{{navdêr|hac|sc=Latn}}
# {{g|en|kar}}
#* {{bênimûne|hac}}
# [[lêker]]
#* {{bênimûne|hac}}
== {{ziman|nay}} ==
=== Cînav ===
{{cînav|nay}}
# [[ew#ku|ew]] (pirjimar), [[wan#ku|wan]]
#* {{bênimûne|nay}}
== {{ziman|rel}} ==
=== Navdêr ===
{{navdêr|rel}}
# {{f|rel|heywan}} [[kûçik#ku|kûçik]], [[se#ku|se]]
#* {{bênimûne|rel}}
== {{ziman|quc}} ==
=== Navdêr ===
{{navdêr|quc}}
# {{f|quc|heywan}} [[masî#ku|masî]]
#* {{bênimûne|quc}}
== {{ziman|af}} ==
=== Navdêr ===
{{navdêr|af}}
# {{f|af|navgîn}} {{g|ku|tirimpêl}}, {{g|ku|otomobîl}}, {{g|ku|erebe}}, {{g|ku|seyare}}, {{g|ku|maşîn}}
#* {{bênimûne|af}}
=== Çavkanî ===
{{rûpela wergerê|af|tirimpêl}}
== {{ziman|az}} ==
=== Rengdêr ===
{{rengdêr|az}}
# {{g|ku|ker}} (kerr, nebihîz, guhgiran)
#* {{bênimûne|az}}
=== Çavkanî ===
{{rûpela wergerê|az|ker}}
== {{ziman|tr}} ==
=== Bilêvkirin ===
* {{deng|tr|LL-Q256 (tur)-ToprakM-kar.wav|Deng|dever=}}
=== Navdêr ===
{{navdêr|tr}}
# [[berf|Berf]], [[befr]].
#* {{bênimûne|tr}}
ie96hkgnvd0asfzn14k3r4p5n21x1o2
herî
0
5168
6329781
6293047
2026-08-12T22:03:11Z
Wikihez
7344
/* Navdêr 2 */
6329781
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{beş|Hoker}}: {{IPA|ku|/'hɛɾiː/}} (herî, ههری)
* {{beş|Hoker}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-herî (Hoker).wav|dever=Bidlîs}}
* {{beş|Navdêr 1}}: {{IPA|ku|/hɛ'riː/}} (he[[ř]]î, herrî, حهڕی)
* {{beş|Navdêr 1}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-herî (Navdêr 1).wav|dever=Bidlîs}}
* {{beş|Navdêr 2}}: {{IPA|ku|/hɛ'ɾiː/}} (herî, ههری)
* {{beş|Navdêr 2}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-herî (Navdêr 2).wav|dever=Bidlîs}}
* {{beş|Lêker}}: {{IPA|ku|/'hɛriː/}} (he[[ř]]î, herrî, ههڕی)
* {{beş|Lêker}}: {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-herî (Lêker).wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[hoker|Hokerek]] e bo [[diyarkirin]]a ku tiştek yan kesek [[xwedî]] [[taybetmendî|taybetmendiyekê]] ye ji hemî tiştên yan kesên [[din]] [[zêdetir]].
#: {{mk|ku|Pirtûka '''herî''' xweş''.|Xweştirîn pirtûk; pirtûka ji hemî pirtûkên din xweştir.|rêz=1}}
#: {{mk|ku|Mirovê '''herî''' dirêj''.|Dirêjtirîn mirov; mirovê ji hemiyan dirêjtir.|rêz=1}}
# Hokerek e dikeve berî [[kêm]] yan [[zêde]] yan hin peyvên din û wateya "bi kêmî" yan "bi zêdeyî" û hwd.
#: {{mk|ku|'''Herî''' kêm 100 kes hatin civînê.|Hejmara yên hatin civînê ne ji 100an kêmtir e lê belkî zêdetir be.|rêz=1}}
#: {{mk|ku|Ez dê '''herî''' dereng seet 10 bigihim wê derê.|Ez ji seet 10ê derengtir nabim lê belkî berî 10ê jî bigihim wir.|rêz=1}}
==== Bi alfabeyên din ====
* {{ku-ar|هەری}}
==== Hevmane ====
{{kol3|ku
| here
| hele
| helî
| tewr
| tewre
| tewrî
| tevrî
| tevî
| xele
| xelî
| anga
| hîn
}}
==== Etîmolojî ====
Hevreha {{q|ku|tewrî}}, ji {{paş|ku|her|-î|w1=hergav, herdem}}, bi ramana "tiştê/a ku (bêvan)tirîn a her demê heta niha ye". Bide ber {{hv|en|ever}} ku ji bo heman ramanê bi kar tê.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W-|de|-ster|n}}, {{W-|de|-ste|m}}, {{W-|de|am ...-sten}}
* {{Z|alt}}: {{W-|alt|эҥ}}
* Spanish: el/la/lo {{W+|es|más}}
* {{Z|be}}: {{W-|be|найбо́льш}}, {{W-|be|най-}}
* {{Z|bg}}: {{W-|bg|най-}}
* {{Z|cs}}: {{W+|cs|nejvíce}}, {{W-|cs|nej-}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|最|tr=zeoi3}}
*: {{Z|dng}}: {{W-|dng|цзуй}}
*: {{Z|cmn}}: {{W+|cmn|最|tr=zuì}}
* {{Z|da}}: {{W+|da|mest}}, {{W-|da|-st}}, {{W-|da|-est}}
* {{Z|ar}}: {{W+|ar|ال|cuda=اَلـ}}
* {{Z|hy}}: {{W-|hy|ամենա-}}, {{W-|hy|-գույն}}
* {{Z|eo}}: {{W+|eo|plej}}
* {{Z|et}}: {{W+|et|kõige}}
* {{Z|fr}}: {{W-|fr|le plus|n}}, {{W-|fr|la plus|m}}, {{W-|fr|les plus|p}}
* {{Z|hi}}: {{W-|hi|सबसे}}, {{W-|hi|सब से}}
* {{Z|he}}: {{W+|he|הכי|tr=ha'khi}}
* {{Z|io}}: {{W+|io|maxim}}
* {{Z|en}}: {{W+|en|most}}
* {{Z|it}}: {{W-|it|il [[più]]}}
* {{Z|ja}}: {{W+|ja|最も|tr=もっとも, mottomo}}, {{W+|ja|最|tr=さい-, sai-}}, {{W+|ja|一番|tr=いちばん, ichiban|sc=Jpan}}
* {{Z|kl}}: {{W-|kl|-nerpaaq}}
* {{Z|krc}}: {{W-|krc|эм}}
* {{Z|krc}}: {{W-|krc|eng}}
* {{Z|kdr}}: {{W-|kdr|ėnk}}
* {{Z|ca}}: {{W-|ca|el/la/els/les [[més]]}}
* {{Z|ky}}: {{W+|ky|эң}}
* {{Z|ko}}: {{W+|ko|가장}}, {{W+|ko|제일}}, {{W-|ko|[[최-]]}}
* {{Z|kum}}: {{W-|kum|инг}}
* {{Z|la}}: {{W+|la|plurime}}, {{W-|la|-issime}}, {{W-|la|-issime}}
* {{Z|lo}}: {{W-|lo|ທີ່ສຸດ|cuda=...ທີ່ສຸດ}}
* {{Z|mk}}: {{W-|mk|нај-}}
* {{Z|hu}}: {{W-|hu|[[leg-]] [[-bb]]}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|mest}}
*: {{Z|nn}}: {{W+|nn|mest}}
* {{Z|ug}}: {{W-|ug|ئەڭ}}
* {{Z|uz}}: {{W+|uz|eng}}
* {{Z|pl}}: {{W+|pl|naj-}}
* {{Z|pt}}: {{W-|pt|o/a/os/as [[mais]]}}
* {{Z|kk}}: {{W-|kk|ең}}
* {{Z|ru}}: {{W+|ru|наи-}}, {{W-|ru|са́мый}}, {{W-|ru|наибо́лее}}, {{W-|ru|-е́йший}}, {{W-|ru|-а́йший}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|нај-}}
*: Latînî: {{W-|sh|naj-}}
* {{Z|sco}}: {{W-|sco|maist}}
* {{Z|sk}}: {{W-|sk|naj-}}
* {{Z|sl}}: {{W+|sl|nàjbolj}}, {{W+|sl|naj-}}
* {{Z|sv}}: {{W+|sv|mest}}
* {{Z|cjs}}: {{W-|cjs|эң|tr=eň}}
* {{Z|th}}: {{W+|th|ที่สุด|cuda=...ที่สุด|tr=...tîi-sùt}}
* {{Z|tr}}: {{W+|tr|en}}
* {{Z|kim}}: {{W-|kim|эӈ|tr=eň}}
* {{Z|tyv}}: {{W-|tyv|эң}}
* {{Z|ur}}: {{W-|ur|سب سے|tr=sab se}}
* {{Z|uk}}: {{W-|uk|най-}}, {{W-|uk|найбі́льш}}
* {{Z|uum}}: {{W-|uum|эн}}
* {{Z|vi}}: {{W+|vi|nhất|cuda=... nhất}}
* {{Z|kjh}}: {{W-|kjh|инъ}}, {{W-|kjh|иң}}
* {{Z|km}}: {{W-|km|ជាងគេ|tr=cieŋ kee|sc=Khmr}}
{{werger-bin}}
:{{werger çavkanî|en|most|beş=Ev qismê Wergerê|oldid=75849117}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# (axa têrav) ''Baştir'': '''[[herrî]]''' (1)
=== Navdêr 2 ===
{{navdêr|ku|z=m}}
# {{guharto|ku|hirî|w=mûyê pezî}}
#* {{J:Încîl:1872:Sayim|jg=Û serê wî û pora wî, weka '''herî''' sipî û û weka berf, û çahvêt wî weka alevê agir.|r=417}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# {{ku-dema-bê|çûn|duyem|yekjimar}}
#: {{hevmane|ku|biçî}}
==== Formên alternatîv ====
* {{g|ku|herrî}} (2)
8tha2qf9y91c6jbvbyx1u0bna2lslmm
wer
0
5738
6329880
6293086
2026-08-13T00:28:42Z
Balyozbot
7867
/* Hoker 2 */ sererastkirin
6329880
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}, {{bilêv|r|req}}
# bi [[wî]] [[awa|awayî]], bi [[wî]] [[şêwe|şêweyî]], bi [[wî]] [[şikl|şiklî]], bi [[wî]] [[reng|rengî]], bi [[wê]] [[rê]]yê; bersiva [[çer]]
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Dilê ew xefletê lê dit</br>Dibêjim '''wer''' cebel bit ew</br>Bi ker bit wê di gavê da}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|wa<pos:1>
|wanî<pos:2>
|wesa
|wesan
|welê
|wisan
|wilo
|wisa
|wisan
|wirg
|werg
|weng
|wiha
}}
==== Bide ber ====
{{kol3|ku
|hosa
|vanî
|va ye
|usa
|weha
|wiha
}}
==== Etîmolojî ====
Bide ber devokî {{q|ku|wereng|werreng}}, ji {{q|ku|ew}} + {{q|ku|reng}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|اگر|guman=erê}}, {{W+|fa|اگه|guman=erê}}
* {{Z|en}}: {{W+|en|perplexity}}, {{W+|en|so|guman=erê}}
* {{Z|tr}}: {{W+|tr|öyle}}, {{W+|tr|şöyle}}, {{W+|tr|böyle}}
{{werger-bin}}
=== Hoker 2 ===
{{hoker|ku}}, {{bilêv|r|req}}
# [[misêwa]], [[hertim]]
#* {{jêder-kovar|ku|jêgirtin=Tu '''wer''' dereng dimînî jixwe.|kovar=Kurde Çîrok|sernav=Zarokên Li Ser Rê|url=|nivîskar=Franz Kafka|wergêr=Hesen Ildiz|hejmar=1|sal=2021|dîrok=|rûpel=8}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürekli}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# [[forma fermanî]] ji lêkera [[hatin]] (''Baştir'': [[were]])
#: ''Li ser piyan nemîne, '''wer''' rûne!''
===Pêşdaçek===
{{daçek|ku}}
# {{f|ku|[[dêrîn]]}} [[li dor]], [[dorberî]], bi alî ve
#* {{jêder-kitêb|ku|jêgirtin=Bera birc u barû da pêşî, ji dujmin stand.<br>Li şah hate '''wer''', rex u ferzîn kirin hêsîr.|sal=1942|nivîskar=Roger Lescot|sernav=Memê Alan|rûpel=316}}
====Etîmolojî====
Bibîne {{q|ku|wer-}}.
== {{ziman|de}} ==
=== Bilêvkirin ===
* {{deng|de|De-wer.ogg}}
* {{deng|de|De-wer2.ogg}}
* {{deng|de|LL-Q188 (deu)-Lucas Werkmeister-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-Nattes à chat-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Sebastian Wallroth-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-teste (Pamputt)-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Student16 de-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Natschoba-wer.wav|Deng|dever=Almanya}}
=== Cînav ===
{{cînav|de}}
# [[kî]], [[kê]]
== {{ziman|fy}} ==
=== Hoker ===
{{hoker|fy}}
# [[dîsa#ku|dîsa]], [[cardin#ku|cardin]], [[dubare#ku|dubare]]
== {{ziman|ang}} ==
=== Navdêr ===
{{navdêr|ang|z=n}}
# {{f|ang|malbat}} {{g|ku|mêr}}, {{g|ku|şû}}, (mêrê jinekê)
== {{ziman|nbn}} ==
=== Navdêr ===
{{navdêr|nbn}}
# {{mijar|nbn|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|nbn|av/Werger1}}
== {{ziman|slu}} ==
=== Navdêr ===
{{navdêr|slu}}
# {{mijar|slu|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|slu|av/Werger3}}
bxhf64qq1cmzajyswbc1ynwl7u3h0pj
6329896
6329880
2026-08-13T00:41:16Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329896
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}, {{bilêv|r|req}}
# bi [[wî]] [[awa|awayî]], bi [[wî]] [[şêwe|şêweyî]], bi [[wî]] [[şikl|şiklî]], bi [[wî]] [[reng|rengî]], bi [[wê]] [[rê]]yê; bersiva [[çer]]
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Dilê ew xefletê lê dit</br>Dibêjim '''wer''' cebel bit ew</br>Bi ker bit wê di gavê da}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|wa<pos:1>
|wanî<pos:2>
|wesa
|wesan
|welê
|wisan
|wilo
|wisa
|wisan
|wirg
|werg
|weng
|wiha
}}
==== Etîmolojî ====
Bide ber devokî {{q|ku|wereng|werreng}}, ji {{q|ku|ew}} + {{q|ku|reng}}.
==== Bide ber ====
{{kol3|ku
|hosa
|vanî
|va ye
|usa
|weha
|wiha
}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|اگر|guman=erê}}, {{W+|fa|اگه|guman=erê}}
* {{Z|en}}: {{W+|en|perplexity}}, {{W+|en|so|guman=erê}}
* {{Z|tr}}: {{W+|tr|öyle}}, {{W+|tr|şöyle}}, {{W+|tr|böyle}}
{{werger-bin}}
=== Hoker 2 ===
{{hoker|ku}}, {{bilêv|r|req}}
# [[misêwa]], [[hertim]]
#* {{jêder-kovar|ku|jêgirtin=Tu '''wer''' dereng dimînî jixwe.|kovar=Kurde Çîrok|sernav=Zarokên Li Ser Rê|url=|nivîskar=Franz Kafka|wergêr=Hesen Ildiz|hejmar=1|sal=2021|dîrok=|rûpel=8}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürekli}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# [[forma fermanî]] ji lêkera [[hatin]] (''Baştir'': [[were]])
#: ''Li ser piyan nemîne, '''wer''' rûne!''
===Pêşdaçek===
{{daçek|ku}}
# {{f|ku|[[dêrîn]]}} [[li dor]], [[dorberî]], bi alî ve
#* {{jêder-kitêb|ku|jêgirtin=Bera birc u barû da pêşî, ji dujmin stand.<br>Li şah hate '''wer''', rex u ferzîn kirin hêsîr.|sal=1942|nivîskar=Roger Lescot|sernav=Memê Alan|rûpel=316}}
====Etîmolojî====
Bibîne {{q|ku|wer-}}.
== {{ziman|de}} ==
=== Bilêvkirin ===
* {{deng|de|De-wer.ogg}}
* {{deng|de|De-wer2.ogg}}
* {{deng|de|LL-Q188 (deu)-Lucas Werkmeister-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-Nattes à chat-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Sebastian Wallroth-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-teste (Pamputt)-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Student16 de-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Natschoba-wer.wav|Deng|dever=Almanya}}
=== Cînav ===
{{cînav|de}}
# [[kî]], [[kê]]
== {{ziman|fy}} ==
=== Hoker ===
{{hoker|fy}}
# [[dîsa#ku|dîsa]], [[cardin#ku|cardin]], [[dubare#ku|dubare]]
== {{ziman|ang}} ==
=== Navdêr ===
{{navdêr|ang|z=n}}
# {{f|ang|malbat}} {{g|ku|mêr}}, {{g|ku|şû}}, (mêrê jinekê)
== {{ziman|nbn}} ==
=== Navdêr ===
{{navdêr|nbn}}
# {{mijar|nbn|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|nbn|av/Werger1}}
== {{ziman|slu}} ==
=== Navdêr ===
{{navdêr|slu}}
# {{mijar|slu|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|slu|av/Werger3}}
6xso0l6yjrihbv7k8kx7fxdvedd39cj
6329918
6329896
2026-08-13T02:12:11Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir, Valahiya beşan rast kir, --Valahiyên nehewce.)
6329918
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}, {{bilêv|r|req}}
# bi [[wî]] [[awa]]yî, bi [[wî]] [[şêwe]]yî, bi [[wî]] [[şikl]]î, bi [[wî]] [[reng]]î, bi [[wê]] [[rê]]yê; bersiva [[çer]]
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Dilê ew xefletê lê dit</br>Dibêjim '''wer''' cebel bit ew</br>Bi ker bit wê di gavê da}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|wa<pos:1>
|wanî<pos:2>
|wesa
|wesan
|welê
|wisan
|wilo
|wisa
|wisan
|wirg
|werg
|weng
|wiha
}}
==== Etîmolojî ====
Bide ber devokî {{q|ku|wereng|werreng}}, ji {{q|ku|ew}} + {{q|ku|reng}}.
==== Bide ber ====
{{kol3|ku
|hosa
|vanî
|va ye
|usa
|weha
|wiha
}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|اگر|guman=erê}}, {{W+|fa|اگه|guman=erê}}
* {{Z|en}}: {{W+|en|perplexity}}, {{W+|en|so|guman=erê}}
* {{Z|tr}}: {{W+|tr|öyle}}, {{W+|tr|şöyle}}, {{W+|tr|böyle}}
{{werger-bin}}
=== Hoker 2 ===
{{hoker|ku}}, {{bilêv|r|req}}
# [[misêwa]], [[hertim]]
#* {{jêder-kovar|ku|jêgirtin=Tu '''wer''' dereng dimînî jixwe.|kovar=Kurde Çîrok|sernav=Zarokên Li Ser Rê|url=|nivîskar=Franz Kafka|wergêr=Hesen Ildiz|hejmar=1|sal=2021|dîrok=|rûpel=8}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürekli}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# [[forma fermanî]] ji lêkera [[hatin]] (''Baştir'': [[were]])
#: ''Li ser piyan nemîne, '''wer''' rûne!''
=== Pêşdaçek ===
{{daçek|ku}}
# {{f|ku|[[dêrîn]]}} [[li dor]], [[dorberî]], bi alî ve
#* {{jêder-kitêb|ku|jêgirtin=Bera birc u barû da pêşî, ji dujmin stand.<br>Li şah hate '''wer''', rex u ferzîn kirin hêsîr.|sal=1942|nivîskar=Roger Lescot|sernav=Memê Alan|rûpel=316}}
==== Etîmolojî ====
Bibîne {{q|ku|wer-}}.
== {{ziman|de}} ==
=== Bilêvkirin ===
* {{deng|de|De-wer.ogg}}
* {{deng|de|De-wer2.ogg}}
* {{deng|de|LL-Q188 (deu)-Lucas Werkmeister-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-Nattes à chat-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Sebastian Wallroth-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-teste (Pamputt)-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Student16 de-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Natschoba-wer.wav|Deng|dever=Almanya}}
=== Cînav ===
{{cînav|de}}
# [[kî]], [[kê]]
== {{ziman|fy}} ==
=== Hoker ===
{{hoker|fy}}
# [[dîsa#ku|dîsa]], [[cardin#ku|cardin]], [[dubare#ku|dubare]]
== {{ziman|ang}} ==
=== Navdêr ===
{{navdêr|ang|z=n}}
# {{f|ang|malbat}} {{g|ku|mêr}}, {{g|ku|şû}}, (mêrê jinekê)
== {{ziman|nbn}} ==
=== Navdêr ===
{{navdêr|nbn}}
# {{mijar|nbn|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|nbn|av/Werger1}}
== {{ziman|slu}} ==
=== Navdêr ===
{{navdêr|slu}}
# {{mijar|slu|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|slu|av/Werger3}}
9g2ke59zzqjzgnyd88xrc7bukxej586
6329923
6329918
2026-08-13T04:04:36Z
Keyomerd
8814
/* Pêşdaçek */
6329923
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}, {{bilêv|r|req}}
# bi [[wî]] [[awa]]yî, bi [[wî]] [[şêwe]]yî, bi [[wî]] [[şikl]]î, bi [[wî]] [[reng]]î, bi [[wê]] [[rê]]yê; bersiva [[çer]]
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Dilê ew xefletê lê dit</br>Dibêjim '''wer''' cebel bit ew</br>Bi ker bit wê di gavê da}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|wa<pos:1>
|wanî<pos:2>
|wesa
|wesan
|welê
|wisan
|wilo
|wisa
|wisan
|wirg
|werg
|weng
|wiha
}}
==== Etîmolojî ====
Bide ber devokî {{q|ku|wereng|werreng}}, ji {{q|ku|ew}} + {{q|ku|reng}}.
==== Bide ber ====
{{kol3|ku
|hosa
|vanî
|va ye
|usa
|weha
|wiha
}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|اگر|guman=erê}}, {{W+|fa|اگه|guman=erê}}
* {{Z|en}}: {{W+|en|perplexity}}, {{W+|en|so|guman=erê}}
* {{Z|tr}}: {{W+|tr|öyle}}, {{W+|tr|şöyle}}, {{W+|tr|böyle}}
{{werger-bin}}
=== Hoker 2 ===
{{hoker|ku}}, {{bilêv|r|req}}
# [[misêwa]], [[hertim]]
#* {{jêder-kovar|ku|jêgirtin=Tu '''wer''' dereng dimînî jixwe.|kovar=Kurde Çîrok|sernav=Zarokên Li Ser Rê|url=|nivîskar=Franz Kafka|wergêr=Hesen Ildiz|hejmar=1|sal=2021|dîrok=|rûpel=8}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürekli}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# [[forma fermanî]] ji lêkera [[hatin]] (''Baştir'': [[were]])
#: ''Li ser piyan nemîne, '''wer''' rûne!''
=== Pêşdaçek ===
{{daçek|ku}}
# {{f|ku|kevnare}} [[li dor]], [[dorberî]], bi alî ve
#* {{jêder-kitêb|ku|jêgirtin=Bera birc u barû da pêşî, ji dujmin stand.<br>Li şah hate '''wer''', rex u ferzîn kirin hêsîr.|sal=1942|nivîskar=Roger Lescot|sernav=Memê Alan|rûpel=316}}
==== Etîmolojî ====
Bibîne {{q|ku|wer-}}.
== {{ziman|de}} ==
=== Bilêvkirin ===
* {{deng|de|De-wer.ogg}}
* {{deng|de|De-wer2.ogg}}
* {{deng|de|LL-Q188 (deu)-Lucas Werkmeister-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-Nattes à chat-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Sebastian Wallroth-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-teste (Pamputt)-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Student16 de-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Natschoba-wer.wav|Deng|dever=Almanya}}
=== Cînav ===
{{cînav|de}}
# [[kî]], [[kê]]
== {{ziman|fy}} ==
=== Hoker ===
{{hoker|fy}}
# [[dîsa#ku|dîsa]], [[cardin#ku|cardin]], [[dubare#ku|dubare]]
== {{ziman|ang}} ==
=== Navdêr ===
{{navdêr|ang|z=n}}
# {{f|ang|malbat}} {{g|ku|mêr}}, {{g|ku|şû}}, (mêrê jinekê)
== {{ziman|nbn}} ==
=== Navdêr ===
{{navdêr|nbn}}
# {{mijar|nbn|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|nbn|av/Werger1}}
== {{ziman|slu}} ==
=== Navdêr ===
{{navdêr|slu}}
# {{mijar|slu|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|slu|av/Werger3}}
qq1k9bke7ewwag6scvzadrn23aituk7
6329924
6329923
2026-08-13T04:04:51Z
Keyomerd
8814
/* Hoker 2 */
6329924
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Hoker ===
{{hoker|ku}}, {{bilêv|r|req}}
# bi [[wî]] [[awa]]yî, bi [[wî]] [[şêwe]]yî, bi [[wî]] [[şikl]]î, bi [[wî]] [[reng]]î, bi [[wê]] [[rê]]yê; bersiva [[çer]]
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Dilê ew xefletê lê dit</br>Dibêjim '''wer''' cebel bit ew</br>Bi ker bit wê di gavê da}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|wa<pos:1>
|wanî<pos:2>
|wesa
|wesan
|welê
|wisan
|wilo
|wisa
|wisan
|wirg
|werg
|weng
|wiha
}}
==== Etîmolojî ====
Bide ber devokî {{q|ku|wereng|werreng}}, ji {{q|ku|ew}} + {{q|ku|reng}}.
==== Bide ber ====
{{kol3|ku
|hosa
|vanî
|va ye
|usa
|weha
|wiha
}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|اگر|guman=erê}}, {{W+|fa|اگه|guman=erê}}
* {{Z|en}}: {{W+|en|perplexity}}, {{W+|en|so|guman=erê}}
* {{Z|tr}}: {{W+|tr|öyle}}, {{W+|tr|şöyle}}, {{W+|tr|böyle}}
{{werger-bin}}
=== Hoker 2 ===
{{hoker|ku}}, {{bilêv|r|req}}
# [[misêwa]], [[hertim]], [[sivde]]
#* {{jêder-kovar|ku|jêgirtin=Tu '''wer''' dereng dimînî jixwe.|kovar=Kurde Çîrok|sernav=Zarokên Li Ser Rê|url=|nivîskar=Franz Kafka|wergêr=Hesen Ildiz|hejmar=1|sal=2021|dîrok=|rûpel=8}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|sürekli}}
{{werger-bin}}
=== Formeke lêkerê ===
{{lêker|ku|form=erê}}
# [[forma fermanî]] ji lêkera [[hatin]] (''Baştir'': [[were]])
#: ''Li ser piyan nemîne, '''wer''' rûne!''
=== Pêşdaçek ===
{{daçek|ku}}
# {{f|ku|kevnare}} [[li dor]], [[dorberî]], bi alî ve
#* {{jêder-kitêb|ku|jêgirtin=Bera birc u barû da pêşî, ji dujmin stand.<br>Li şah hate '''wer''', rex u ferzîn kirin hêsîr.|sal=1942|nivîskar=Roger Lescot|sernav=Memê Alan|rûpel=316}}
==== Etîmolojî ====
Bibîne {{q|ku|wer-}}.
== {{ziman|de}} ==
=== Bilêvkirin ===
* {{deng|de|De-wer.ogg}}
* {{deng|de|De-wer2.ogg}}
* {{deng|de|LL-Q188 (deu)-Lucas Werkmeister-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-Nattes à chat-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Sebastian Wallroth-wer.wav|Deng|dever=Berlîn, Almanya}}
* {{deng|de|LL-Q188 (deu)-teste (Pamputt)-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Student16 de-wer.wav|Deng|dever=}}
* {{deng|de|LL-Q188 (deu)-Natschoba-wer.wav|Deng|dever=Almanya}}
=== Cînav ===
{{cînav|de}}
# [[kî]], [[kê]]
== {{ziman|fy}} ==
=== Hoker ===
{{hoker|fy}}
# [[dîsa#ku|dîsa]], [[cardin#ku|cardin]], [[dubare#ku|dubare]]
== {{ziman|ang}} ==
=== Navdêr ===
{{navdêr|ang|z=n}}
# {{f|ang|malbat}} {{g|ku|mêr}}, {{g|ku|şû}}, (mêrê jinekê)
== {{ziman|nbn}} ==
=== Navdêr ===
{{navdêr|nbn}}
# {{mijar|nbn|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|nbn|av/Werger1}}
== {{ziman|slu}} ==
=== Navdêr ===
{{navdêr|slu}}
# {{mijar|slu|vexwarin}} {{g|ku|av}}
=== Çavkanî ===
{{rûpela wergerê|slu|av/Werger3}}
nj6zqrsuplikuurht6ayk8v13r4niyh
kursî
0
6008
6329821
6310791
2026-08-12T23:10:17Z
Wikihez
7344
/* Etîmolojî */
6329821
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{jêder|ku|jêgirtin="Nîveka dî çêkirin ji çarî çîz</br>'Erş û '''kursî''' û qelem lewhe temîz</br>Hate emrê Padîşahê [[Layezal]]"'' |Mela Hisênê Bateyî: ''Mewlûd''}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#: {{nm|ku|'''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975) ve hate avakirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Hevreha soranî {{g|ckb|کورسی}}, zazakî {{q|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, tirkî {{q|tr|kürsü}} (bi tirkiya osmanî {{g|ota|كرسى|ts=kursî}}), erebî {{g|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), siryanî {{g|syc|ܟܘܪܣܝܐ|tr=kursiya}}, [[aramî]] {{g|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, îbranî {{ge|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)... hemû ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
inv3byhkly1m3bee7f3yip3ddll1vqr
6329822
6329821
2026-08-12T23:11:16Z
Wikihez
7344
/* Etîmolojî */
6329822
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{jêder|ku|jêgirtin="Nîveka dî çêkirin ji çarî çîz</br>'Erş û '''kursî''' û qelem lewhe temîz</br>Hate emrê Padîşahê [[Layezal]]"'' |Mela Hisênê Bateyî: ''Mewlûd''}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#: {{nm|ku|'''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975) ve hate avakirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha soranî {{g|ckb|کورسی}}, zazakî {{q|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, tirkî {{q|tr|kürsü}} (bi tirkiya osmanî {{g|ota|كرسى|ts=kursî}}), erebî {{g|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), siryanî {{g|syc|ܟܘܪܣܝܐ|tr=kursiya}}, [[aramî]] {{g|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, îbranî {{ge|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
nv6k8sb64uhbzzz6d7yyjwl9dpx0kew
6329823
6329822
2026-08-12T23:12:16Z
Wikihez
7344
/* Etîmolojî */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329823
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{jêder|ku|jêgirtin="Nîveka dî çêkirin ji çarî çîz</br>'Erş û '''kursî''' û qelem lewhe temîz</br>Hate emrê Padîşahê [[Layezal]]"'' |Mela Hisênê Bateyî: ''Mewlûd''}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#: {{nm|ku|'''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975) ve hate avakirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
qvupaihxnwam5sfavbigps7i21uq5vc
6329824
6329823
2026-08-12T23:12:57Z
Wikihez
7344
/* Navdêr */
6329824
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|rêz=1|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{jêder|ku|jêgirtin="Nîveka dî çêkirin ji çarî çîz</br>'Erş û '''kursî''' û qelem lewhe temîz</br>Hate emrê Padîşahê [[Layezal]]"'' |Mela Hisênê Bateyî: ''Mewlûd''}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#: {{nm|ku|'''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975) ve hate avakirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
4adhqev392xi8j64woefyo5qmhd5y40
6329825
6329824
2026-08-12T23:15:56Z
Wikihez
7344
+nimûneya bikaranînê bi amûra « [[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]] » (v1.7).
6329825
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|rêz=1|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{jêder|ku|jêgirtin="Nîveka dî çêkirin ji çarî çîz</br>'Erş û '''kursî''' û qelem lewhe temîz</br>Hate emrê Padîşahê [[Layezal]]"'' |Mela Hisênê Bateyî: ''Mewlûd''}}
#* {{jêder-kovar|ku|nivîskar=Clamence Scalbert-yücel|sernav=Perspektîfek dîrokî ji bo lêkolînên li ser Kurdan: Hevpeyvîn li gel Joyce Blau|kovar=The Journal of Mesopotamian Studies|terciman=Yılmaz Özdil|cild=3|hejmar=1|sal=2018|rûpel=203|url=https://dergipark.org.tr/tr/pub/jms/article/386434|jêgirtin=JB{{j-îzah|Joyce Blau}} : Kursiya zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975( ve hate avakirin. Di sala 1947an de Mîr Kamuran Bedir Xan (1895-1978(bû serokê Kursiyê. Wî heta sala 1970yan serokatiya Kursiya zimanê kurdî kir. Paşî ji sala 1970yan heta dema teqawutbûna xwe ya di sala 2000an de min serokatî kir.}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#: {{nm|ku|'''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975) ve hate avakirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
k2d7hkjidq4310aa2tpjua3mt0a3k0u
6329826
6329825
2026-08-12T23:16:19Z
Wikihez
7344
6329826
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|rêz=1|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{jêder|ku|jêgirtin="Nîveka dî çêkirin ji çarî çîz</br>'Erş û '''kursî''' û qelem lewhe temîz</br>Hate emrê Padîşahê [[Layezal]]"'' |Mela Hisênê Bateyî: ''Mewlûd''}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#* {{jêder-kovar|ku|nivîskar=Clamence Scalbert-yücel|sernav=Perspektîfek dîrokî ji bo lêkolînên li ser Kurdan: Hevpeyvîn li gel Joyce Blau|kovar=The Journal of Mesopotamian Studies|terciman=Yılmaz Özdil|cild=3|hejmar=1|sal=2018|rûpel=203|url=https://dergipark.org.tr/tr/pub/jms/article/386434|jêgirtin=JB{{j-îzah|Joyce Blau}} : '''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975( ve hate avakirin. Di sala 1947an de Mîr Kamuran Bedir Xan (1895-1978(bû serokê Kursiyê. Wî heta sala 1970yan serokatiya Kursiya zimanê kurdî kir. Paşî ji sala 1970yan heta dema teqawutbûna xwe ya di sala 2000an de min serokatî kir.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
20m7q3zvkofp3bz5bnjztu6lgzhzn61
6329827
6329826
2026-08-12T23:17:43Z
Wikihez
7344
6329827
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|rêz=1|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{mewlûd|jêgirtin=Nîveka dî çêkirin ji çarî çîz<br>'Erş û '''kursî''' û qelem lewhe temîz<br>Hate emrê Padîşahê Layezal}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#* {{jêder-kovar|ku|nivîskar=Clamence Scalbert-yücel|sernav=Perspektîfek dîrokî ji bo lêkolînên li ser Kurdan: Hevpeyvîn li gel Joyce Blau|kovar=The Journal of Mesopotamian Studies|terciman=Yılmaz Özdil|cild=3|hejmar=1|sal=2018|rûpel=203|url=https://dergipark.org.tr/tr/pub/jms/article/386434|jêgirtin=JB{{j-îzah|Joyce Blau}} : '''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975( ve hate avakirin. Di sala 1947an de Mîr Kamuran Bedir Xan (1895-1978(bû serokê Kursiyê. Wî heta sala 1970yan serokatiya Kursiya zimanê kurdî kir. Paşî ji sala 1970yan heta dema teqawutbûna xwe ya di sala 2000an de min serokatî kir.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Binêre herwiha ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
hnt2ncopweo9yf313ptd2rffs3d585i
6329839
6329827
2026-08-12T23:41:07Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329839
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diran]]ên [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]]ê [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqam]]ê [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|rêz=1|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{mewlûd|jêgirtin=Nîveka dî çêkirin ji çarî çîz<br>'Erş û '''kursî''' û qelem lewhe temîz<br>Hate emrê Padîşahê Layezal}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte|unîversîteyan]] de ku [[li ser]] [[mesele|meseleyeke]] [[diyarkirî]] [[lêkolîn]] û [[ders|dersan]] [[dan|dide]].
#* {{jêder-kovar|ku|nivîskar=Clamence Scalbert-yücel|sernav=Perspektîfek dîrokî ji bo lêkolînên li ser Kurdan: Hevpeyvîn li gel Joyce Blau|kovar=The Journal of Mesopotamian Studies|terciman=Yılmaz Özdil|cild=3|hejmar=1|sal=2018|rûpel=203|url=https://dergipark.org.tr/tr/pub/jms/article/386434|jêgirtin=JB{{j-îzah|Joyce Blau}} : '''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975( ve hate avakirin. Di sala 1947an de Mîr Kamuran Bedir Xan (1895-1978(bû serokê Kursiyê. Wî heta sala 1970yan serokatiya Kursiya zimanê kurdî kir. Paşî ji sala 1970yan heta dema teqawutbûna xwe ya di sala 2000an de min serokatî kir.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Herwiha binêre ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
s67ts60nw46sfkbhsgltjur0u1qnnh8
6329863
6329839
2026-08-13T00:12:07Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329863
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Chair.png|thumb|kursiyek]]
{{navdêr|ku|z=m}}, {{k-ya nerm}}, {{r-ya nerm}}
# {{f|ku|mobîlya}} Alavên bi[[pişt]] û bi[[pêpik]] yên bi [[giştî]] bo [[rûniştin]]a kesekî.
#: {{mk|ku|Rûne ser '''kursiyê'''.}}
#: {{mk|ku|Li ser '''kursiyê''' rûniştim.}}
#: {{mk|ku|Ji ser '''kursiyê''' rabû.}}
#: {{mk|ku|Hemû '''kursî''' girtî bûn.|Li ser her yekê kesek hebû û ti yên vala tine bûn.|rêz=1}}
# [[diran|Diranên]] [[paşîn]].
#* {{bêmînak|ku}}
# [[meqam|Meqam]], [[cih]].
#* {{bêmînak|ku}}
# [[meqam|Meqamê]] [[paşa]]yan/[[desthilatdar]]an.
#: {{hevmane|ku|text}}
#: {{mk|ku|text û '''kursî'''}}
# [[meqam|Meqamê]] [[Xwedê]].
#: {{hevmane|ku|erş}}
#: {{mk|ku|Ayeta '''Kursî'''|rêz=1|[[ayet]]a 2:255 a [[Qur'an]]ê ye û behsa bê[[hevta]]yiya [[Xwedê]] dike}}
#* {{mewlûd|jêgirtin=Nîveka dî çêkirin ji çarî çîz<br>'Erş û '''kursî''' û qelem lewhe temîz<br>Hate emrê Padîşahê Layezal}}
# {{e|ku|tehsîl}} [[îdare|Îdareya]] di [[nav]] [[unîversîte]]yan de ku [[li ser]] [[mesele]]yeke [[diyarkirî]] [[lêkolîn]] û [[ders]]an [[dan|dide]].
#* {{jêder-kovar|ku|nivîskar=Clamence Scalbert-yücel|sernav=Perspektîfek dîrokî ji bo lêkolînên li ser Kurdan: Hevpeyvîn li gel Joyce Blau|kovar=The Journal of Mesopotamian Studies|terciman=Yılmaz Özdil|cild=3|hejmar=1|sal=2018|rûpel=203|url=https://dergipark.org.tr/tr/pub/jms/article/386434|jêgirtin=JB{{j-îzah|Joyce Blau}} : '''Kursiya''' zimanê kurdî di sala 1945an de ji aliyê Roger Lescot (1914-1975( ve hate avakirin. Di sala 1947an de Mîr Kamuran Bedir Xan (1895-1978(bû serokê Kursiyê. Wî heta sala 1970yan serokatiya Kursiya zimanê kurdî kir. Paşî ji sala 1970yan heta dema teqawutbûna xwe ya di sala 2000an de min serokatî kir.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|کورسی}}
* {{ku-kr|курси}}
==== Formên alternatîv ====
* {{g|ku|kursîk}}
==== Hevmane ====
* {{g|ku|sendelî}}
* {{g|ku|sendelye}}
* {{g|ku|rûniştek}}
==== Jê ====
* {{g|ku|rûniştin}} ser kursiyê
* li ser kursiyê [[rûniştin]]
* ji ser kursiyê [[rabûn]]
* {{g|ku|kursîk}}
==== Etîmolojî ====
Taliyê ji {{ji|sux|ku|𒄖𒍝|tr=gu.za}}.
Hevreha {{hv|ckb|کورسی}}, {{hv|zza|kursî}}, {{hv|fa|کورسی|tr=berê "kursî", niha "korsî"}}, {{hv|tr|kürsü}} (bi {{hv|ota|كرسى|ts=kursî}}), {{hv|ar|كرسي}} (bi erebiya standard "kursiyy", bi erebiya devkî "kursî, kirsî"), {{hv|syc|ܟܘܪܣܝܐ|tr=kursiya}}, {{hv|arc|כרסא|tr=kursa}} û {{g|arc|כסא|tr=kusa}}, {{hv|he|כיסא|tr=kissê}}, ugarîtî [[𐎋𐎒𐎜]] (kisủ), akadî [[𒄖𒍝]] / [[𒄑𒄖𒍝]] (kussû, kursû)...
Peyv ji Rojhilata Navîn belav bûye Başûrê Asyayê jî: ûrdûyî {{g|ur|کرسی|tr=kursī}}, peştûyî {{g|ps|کورسۍ|tr=kursiy}}, hindî [[कुरसी]] (kursī), punjabî [[ਕੁਰਸੀ]] (kursī)...
;{{biçûk|Çavkanî:
* {{kitêb|en|sernav=The Pennsylvania Sumerian Dictionary<t:Ferhenga sûmerî ya Pennsylvaniayê>|url=http://psd.museum.upenn.edu/nepsd-frame.html}}
* {{kitêb|fr|url=http://www.assyrianlanguages.org/akkadian/dosearch.php?searchkey=16&language=id|sernav=Association Assyrophile de France: Dictionnaire akkadien<t:Rêkxistina Aşûrîdostan ya Fransayê: Ferhenga akadî>}}
}}
==== Herwiha binêre ====
{{kol3|ku
|balguh
|balîf
|doşek
|doşk
|lihêf
|mobîlya
|nivîn
|palpişt
|qaîdok
|qenepe
|rûniştek
|sofa
|text
}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|stoel}}
* {{Z|sq}}: {{W-|sq|karrike|m}}, {{W+|sq|karrige}}
* {{Z|de}}: {{W+|de|Stuhl|n}}
* {{Z|ast}}: {{W+|ast|siella}}
* {{Z|az}}: {{W+|az|stul}}
* {{Z|eu}}: {{W+|eu|aulki}}
* {{Z|bar}}: {{W--|bar|Sessl|n}}
* {{Z|be}}: {{W-|be|стул|tr=stul}}
* {{Z|br}}: {{W+|br|kador|m}}
* {{Z|bg}}: {{W+|bg|стол|tr=stol}}
* {{Z|cs}}: {{W+|cs|židle}}
* {{Z|zh}}: {{W+|zh|椅子|tr=yǐzi}}
* {{Z|da}}: {{W+|da|stol}}
* {{Z|id}}: {{W+|id|kursi}}
* {{Z|ary}}: {{W--|ary|كرسي}}, {{W--|ary|شلية}}
*: {{Z|arz}}: {{W|arz|كرسي|tr=kursî}} {{n}}
* {{Z|ar}}: {{W|ar|كرسي|tr=kursiyy}} {{n}}, {{W|ar|مقعد|tr=meq'ed}} {{n}}
* {{Z|hy}}: {{W+|hy|աթոռ|tr=atʿoṙ}}
* {{Z|eo}}: {{W+|eo|seĝo}}
* {{Z|et}}: {{W+|et|tool}}
* {{Z|ewo}}: {{W--|ewo|etoa}}
* {{Z|fa}}: {{W+|fa|صندلی|tr=sendelî}}, {{W|fa|کرسی|tr=korsî}}
* {{Z|fo}}: {{W-|fo|stólur}}
* {{Z|fi}}: {{W+|fi|tuoli}}, {{W|fi|istuin}}
* {{Z|frp}}: ''(savoyard)'' {{W--|frp|sala}}
* {{Z|fr}}: {{W|fr|chaise}}
* {{Z|fy}}: {{W-|fy|stoel}}, {{W-|fy|belech}}
* {{Z|gd}}: {{W-|gd|suidheachan}}, {{W-|gd|cathair}}
* {{Z|gl}}: {{W+|gl|cadeira|m}}
* {{Z|ka}}: {{W+|ka|სკამი|tr=sḳami}}
* {{Z|hi}}: {{W+|hi|कुरसी|tr=kursī}}
* {{Z|nl}}: {{W+|nl|stoel}}, {{W+|nl|zetel}}
* {{Z|he}}: {{W+|he|כיסא|tr=kisé}}
* {{Z|io}}: {{W+|io|stulo}}
* {{Z|ang}}: {{W-|ang|stol}}
* {{Z|en}}: {{W+|en|chair}}, {{W+|en|seat}}
* {{Z|ga}}: {{W+|ga|cathaoir}}
* {{Z|it}}: {{W+|it|assedio}}, {{W+|it|sedia}}, {{W+|it|seggiola}}
* {{Z|is}}: {{W+|is|stóll}}
* {{Z|ja}}: {{W+|ja|椅子|tr=isu}}, {{W+|ja|いす|tr=isu}}
* {{Z|ca}}: {{W+|ca|cadira}}
* {{Z|ki}}: {{W--|ki|giti}}
* {{Z|ko}}: {{W+|ko|의자|tr=uija}}
* {{Z|kw}}: {{W-|kw|cadar}}
* {{Z|co}}: {{W+|co|sedia}}, {{W-|co|carreca}}
* {{Z|mfe}}: {{W--|mfe|sez}}
* {{Z|la}}: {{W-|la|sella}}, {{W-|la|cathedra}}, {{W-|la|solium}}
* {{Z|lv}}: {{W+|lv|krēsls}}
* {{Z|lo}}: {{W+|lo|ຕັ່ງ}}
* {{Z|lt}}: {{W+|lt|kėdė}}
* {{Z|mk}}: {{W-|mk|стол|tr=stol}}, {{W-|mk|столица|tr=stolica}}
* {{Z|mg}}: {{W+|mg|seza}}
* {{Z|ms}}: {{W+|ms|kursi}}
* {{Z|mt}}: {{W+|mt|siġġu}}
* {{Z|gv}}: {{W-|gv|caair}}
* {{Z|yua}}: {{W--|yua|k’anche’}}
* {{Z|hu}}: {{W+|hu|szék}}
* {{Z|mn}}: {{W+|mn|сандал|tr=sandal}}
* {{Z|nrf}}: {{W--|nrf|caire}}
* {{Z|no}}: {{W+|no|stol|nt}}
* {{Z|oc}}: {{W+|oc|cadièra|m}}
* {{Z|uz}}: {{W+|uz|o`rindiq}}
* {{Z|uz}}: {{W|uz|o`rindiq}}
* {{Z|pap}}: {{W--|pap|stul}}
* {{Z|pl}}: {{W+|pl|krzesło}}
* {{Z|pt}}: {{W+|pt|cadeira|m}}, {{W+|pt|assento}}
* {{Z|kk}}: {{W+|kk|орындық|tr=orındıq}}, {{W-|kk|отырғыш|tr=otırğış}}
* {{Z|ro}}: {{W+|ro|scaun}}
* {{Z|ru}}: {{W+|ru|стул}}
* {{Z|se}}: {{W--|se|stuollu}}
* {{Z|srn}}: {{W--|srn|sturu}}
* {{Z|sh}}:
:* Latînî: {{W+|sh|stolac}}, {{W+|sh|stolica}}
:* Kirîlî: {{W-|sh|столац}}, {{W+|sh|столица}}
* {{Z|sk}}: {{W-|sk|stolička}}
* {{Z|sl}}: {{W+|sl|stol}}
* {{Z|dsb}}: {{W--|dsb|stoł}}
* {{Z|hsb}}: {{W-|hsb|stólc}}
* {{Z|es}}: {{W+|es|silla|m}}
* {{Z|sw}}: {{W+|sw|kiti}}
* {{Z|sv}}: {{W+|sv|stol}}
* {{Z|shy}}: {{W--|shy|amɣim}}
* {{Z|zdj}}: {{W--|zdj|hiri}}
* {{Z|tg}}: {{W-|tg|сандали|tr=sandali}}, {{W+|tg|курсӣ|tr=kursī}}
* {{Z|tl}}: {{W-|tl|sílya}}, {{W-|tl|úpuan}}
* {{Z|ta}}: {{W+|ta|நாற்காலி|tr=nāṟkāli}}
* {{Z|th}}: {{W+|th|เก้าอี้|tr=gâo-îi}}
* {{Z|tr}}: {{W+|tr|sandalye}}, {{W|tr|sandalye}}, {{W|tr|kürsü}}, {{W|tr|koltuk}}, {{W|tr|iskemle}}, {{W|tr|oturak}}, {{W|tr|tabure}}, {{W|tr|sekmen}}
* {{Z|tk}}: {{W-|tk|oturgyç}}
* {{Z|ur}}: {{W-|ur|کرسی|tr=kursī}}
* {{Z|ur}}: {{W|ur|کرسی|tr=kursī}} {{n}}
* {{Z|uk}}: {{W+|uk|стілець|tr=stilécʹ}}, {{W-|uk|крісло|tr=kríslo}}
* {{Z|vec}}: {{W|vec|carega}}
* {{Z|vi}}: {{W|vi|ghế}}
* {{Z|cy}}: {{W+|cy|cadair}}
* {{Z|cy}}: {{W|cy|cadair}}, {{W|cy|ystôl}}
* {{Z|km}}: {{W+|km|កៅអី|tr=kav ’əy}}
* {{Z|yi}}: {{W|yi|שטול}}
* {{Z|el}}: {{W+|el|καρέκλα|tr=karékla}}
* {{Z|el}}: {{W|el|καρέκλα}} {{n}} (karékla)
* {{Z|zu}}: {{W+|zu|isihlalo}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|کورسی}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza}}
# [[kursî#Kurmancî|kursî]]
#* {{bêmînak|zza}}
55sg6et974pr4slxyvsjton3077gmzp
delîve
0
6941
6329649
6304809
2026-08-12T15:35:53Z
Wikihez
7344
+nimûneya bikaranînê bi amûra « [[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]] » (v1.7).
6329649
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dem]] yan [[dirav]] ya [[şiyan]] hebûn ku kirina tiştekê/î
#* {{jêder-malper|ku|jêgirtin=Li dinyaya niha duzimanîtî yan pirzimanîtî ne tiştekî ecêb e lê gelekî normal e. Ji niha pêve yekzimanîtî hêdî-hêdî dibe tiştekî nadir. Ya giring ew e ku derfet û '''delîve''' hebin ku her kurdek bibe xwedî bingeheke xurt yê kurdîzanînê. Ev jî tenê û tenê bi rêya perwerdeya bi zimanê kurdî mimkin e. Lê heta ku em bigihin rojeke wisa, divê ku hemû derfetên heyî bo xwehînkirina kurdî hem bi nivîskî û hem jî bi axiftinê bên bikaranîn.|nivîskar= Zekî Gurur|sernav= Neheqî li vî zarê zêrîn bûne|malper=xwebun.org|url=https://xwebun.org/neheqi-li-vi-zare-zerin-bune|dîrok=07.09.2020}}
#* {{jêder-kovar|ku|nivîskar=Kerem Engin|sernav=Narînk li Herêma Culemêrgê|kovar=Kurdiyat|hejmar=13|sal=2026|rûpel=60|url=https://dergipark.org.tr/tr/pub/kurdiyat/article/1818418|jêgirtin=Ji ber ku dewletên ku kurd di nava sinorên wan de dijiyan, '''delîve''' nedaye ku kurd bi dînamîkên xwe ve muzîka xwe îcra bikin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê|guherto=hemû}}
==== Hevmane ====
{{kol3|ku
|derfet
|delîv
|firset
|gengazî
|îmkan
|mical
}}
==== Jê ====
{{kol3|ku|cure=Jê
|[[delîve dan]] kesekê/î yan tiştekê/î<pos:lêker>
|(kesekê/î) [[delîve hebûn]]
| delîve [[ji dest dan]]
| delîve [[peyda kirin]]
| delîve [[winda kirin]]
|delîvedan<pos:navdêr>
|delîvehebûn<pos:navdêr>
| delîve[[jidestdan]]
| delîve[[peyda]]kirin
| delîve[[winda]]kirin
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|mundësi|m}}, {{W-|sq|shans|n}}, {{W+|sq|nge|m}}
* {{Z|de}}: {{W+|de|Gelegenheit|m}}, {{W+|de|Chance|m}}, {{W+|de|Möglichkeit|m}}
* {{Z|ast}}: {{W-|ast|oportunidá|m}}
* {{Z|az}}: {{W+|az|imkan}}, {{W+|az|fürsət}}
* {{Z|ba}}: {{W-|ba|форсат}}
* {{Z|be}}: {{W-|be|магчы́масць|m}}, {{W-|be|шанс|n}}, {{W-|be|шанц|n}}
* {{Z|bn}}: {{W+|bn|মওকা}}
* {{Z|bg}}: {{W+|bg|възмо́жност|m}}, {{W+|bg|шанс|n}}
* {{Z|my}}: {{W+|my|အခွင့်အရေး}}
* {{Z|cs}}: {{W+|cs|příležitost|m}}, {{W+|cs|šance|m}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|機會|tr=gei1 wui6}}
*: {{Z|cmn}}: {{W+|cmn|機會|tr=jīhuì}}
*: {{Z|nan}}: {{W+|nan|機會|tr=ki-hōe}}
* {{Z|da}}: {{W+|da|mulighed|g}}, {{W+|da|chance|g}}
* {{Z|ar}}: {{W-|ar|فُرْصَة|m}}
*: {{Z|arz}}: {{W-|arz|فرصة|m|tr=furṣa}}
* {{Z|hy}}: {{W+|hy|հնարավորություն}}
* {{Z|eo}}: {{W-|eo|okazo}}, {{W-|eo|oportuno}}
* {{Z|et}}: {{W-|et|võimalus}}
* {{Z|fa}}: {{W+|fa|فرصت|tr=forsat}}, {{W+|fa|شانس|tr=šâns}}
* {{Z|fi}}: {{W+|fi|tilaisuus}}, {{W+|fi|mahdollisuus}}
* {{Z|fr}}: {{W+|fr|occasion|m}}, {{W+|fr|opportunité|m}}
* {{Z|gl}}: {{W+|gl|oportunidade|m}}, {{W+|gl|vagar|n}}, {{W-|gl|emposta|m}}
* {{Z|got}}: {{W-|got|𐌻𐌴𐍅|nt}}
* {{Z|ka}}: {{W-|ka|შესაძლებლობა}}, {{W+|ka|შანსი}}
* {{Z|hi}}: {{W+|hi|अवसर|n}}, {{W-|hi|मौक़ा|n}}
* {{Z|nl}}: {{W+|nl|kans|m}}, {{W+|nl|mogelijkheid|m}}
* {{Z|hrx}}: {{W-|hrx|Gelechenheet|m}}, {{W-|hrx|Gelechenheit|m}}
* {{Z|he}}: {{W+|he|הִזְדַּמְנוּת|m|tr=hizdamnut}}
* {{Z|en}}: {{W|en|opportunity}}
* {{Z|ga}}: {{W-|ga|faill|m}}, {{W+|ga|deis|m}}
* {{Z|it}}: {{W+|it|occasione|m}}, {{W+|it|opportunità|m}}, {{W+|it|possibilità|m}}, {{W+|it|chance|m}}
* {{Z|is}}: {{W-|is|færi|nt}}
* {{Z|ja}}: {{W+|ja|機会|tr=きかい, kikai}}, {{W+|ja|チャンス|tr=chansu}}
* {{Z|kea}}: {{W-|kea|txansa}}, {{W-|kea|xanse}}
* {{Z|ca}}: {{W+|ca|oportunitat|m}}, {{W+|ca|ocasió|m}}
* {{Z|ky}}: {{W+|ky|мүмкүндүк}}, {{W+|ky|мүмкүнчүлүк}}
* {{Z|ko}}: {{W+|ko|기회}}, {{W+|ko|찬스}}
* {{Z|la}}: {{W-|la|opportūnitās|m}}, {{W-|la|ampla|m}}
* {{Z|lv}}: {{W-|lv|iespēja|m}}
* {{Z|lo}}: {{W-|lo|ໂອກາດ}}
* {{Z|lt}}: {{W-|lt|próga|m}}
* {{Z|mk}}: {{W-|mk|можност|m}}, {{W-|mk|шанса|m}}
* {{Z|ml}}: {{W+|ml|അവസരം}}, {{W+|ml|തക്കം}}
* {{Z|mt}}: {{W-|mt|opportunità|m}}
* {{Z|hu}}: {{W+|hu|alkalom}}, {{W+|hu|lehetőség}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|боломж}}
* {{Z|nv}}: {{W-|nv|ashja}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|mulighet|n|m}}, {{W+|nb|sjanse|m}}
* {{Z|oc}}: {{W+|oc|oportunitat|m}}
* {{Z|ug}}: {{W-|ug|پۇرسەت}}
* {{Z|uz}}: {{W+|uz|imkoniyat}}, {{W+|uz|fursat}}
* {{Z|ps}}: {{W+|ps|فرصت|n|tr=fersát}}
* {{Z|pl}}: {{W-|pl|gratka|m}}, {{W+|pl|możliwość|m}}, {{W+|pl|okazja|m}}, {{W+|pl|pretekst|n}}, {{W+|pl|sposobność|m}}, {{W+|pl|szansa|m}}
* {{Z|pt}}: {{W+|pt|oportunidade|m}}
* {{Z|kk}}: {{W+|kk|мүмкіндік}}
* {{Z|rm}}: {{W-|rm|pussaivladad|m}}
* {{Z|ro}}: {{W+|ro|oportunitate|m}}
* {{Z|ru}}: {{W+|ru|возмо́жность|m}}, {{W+|ru|шанс|n}}
* {{Z|se}}: {{W-|se|vejolašvuohta}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|могу́ћно̄ст|m}}, {{W-|sh|при́лика|m}}, {{W-|sh|при̏года|m}}, {{W-|sh|ша̏нса|m}}
*: Latînî: {{W-|sh|mogúćnōst|m}}, {{W+|sh|prílika|m}}, {{W+|sh|prȉgoda|m}}, {{W+|sh|šȁnsa|m}}
* {{Z|sk}}: {{W-|sk|príležitosť|m}}, {{W-|sk|šanca|m}}
* {{Z|sl}}: {{W+|sl|priložnost|m}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|góźba|m}}
* {{Z|es}}: {{W+|es|oportunidad|m}}
* {{Z|sw}}: {{W+|sw|fursa}}
* {{Z|sv}}: {{W+|sv|tillfälle}}, {{W+|sv|möjlighet|g}}
* {{Z|tg}}: {{W-|tg|фурсат}}, {{W+|tg|имконият}}, {{W-|tg|имкон}}
* {{Z|th}}: {{W+|th|โอกาส}}
* {{Z|te}}: {{W+|te|అవకాశం}}
* {{Z|tt}}: {{W+|tt|форсат}}
* {{Z|tr}}: {{W+|tr|fırsat}}
* {{Z|tk}}: {{W-|tk|pursat}}
* {{Z|ur}}: {{W-|ur|فرصت|m|tr=fursat}}, {{W-|ur|موقع|n|tr=mauqa'}}
* {{Z|uk}}: {{W-|uk|можли́вість|m}}, {{W-|uk|шанс|n}}
* {{Z|vi}}: {{W+|vi|cơ hội}}
* {{Z|km}}: {{W+|km|ឱកាស}}
* {{Z|el}}: {{W+|el|ευκαιρία|m}}
*: Kevn: {{W-|grc|εὐκαιρία|m}}, {{W-|grc|καιρός|n}}
* {{Z|za}}: {{W-|za|gihvei}}
{{werger-bin}}
:{{werger çavkanî|en|opportunity|beş=Ev qismê Wergerê|oldid=75698445}}
rymusa0ro3p5s4ffytt855u3uq6c2sr
poşman bûn
0
7164
6329900
6290500
2026-08-13T00:48:03Z
Wikihez
7344
/* Lêker */
6329900
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku}}
# {{mane?|ku}}
#* {{jêder-pirtûk|ku|jêgirtin=Xort ji bo ku diwestin dizewicin, keç ji bo ku meraq dikin dizewicin, dawîyê hemû jî '''poşman dibin'''.|sernav=Gotinên Navdaran|nivîskar=Firat Cewerî|sal=1995|rûpel=69}}
7dlcedd5gg9qjbtdxckf6guajvc6ufc
derbare
0
12948
6329845
6293624
2026-08-12T23:50:55Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6329845
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{deng|ku|LL-Q36163 (kmr)-Ebulfîda-derbare.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[nizbet]], [[sebaret]], li [[ser]], li [[dor]], [[derheq]], di [[heq]]ê kesekê/î yan [[tişt]]ekê/î de
#: {{nimûne|ku|Me ti agahî '''derbareyî''' wan wernegirtiye.}}
#* {{jêder|ku|jêgirtin=Li ser agahiyên di '''derbarê''' navê Bateyî de Babê Zerevanî wiha gotiye; ‘Navê wî yê rast û dûrist Huseyn e, kurê Mistefa ye.’|''[[w:Di Helbestên Melayê Bateyî de Evîn û Hezkirin|Di Helbestên Melayê Bateyî de Evîn û Hezkirin]]'', [[w:Reşît Rojdar Yildiz|Reşît Rojdar Yildiz]], Bingöl Üniversitesi Yaşayan Diller Enstitüsü Dergisi}}
# [[dermaf]]
#* {{bêmînak|ku}}
==== Jê ====
* {{g|ku|derbarey}}
* {{g|ku|derbareyê}}
* {{g|ku|derbareyî}}
* {{g|ku|derbarê}}
* {{g|ku|derbarî}}
==== Etîmolojî ====
Ji {{ji|fa|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|über}}, {{W|de|betreffend}}, {{W|de|anlässlich|guman=erê}}
* {{Z|ar}}: {{W+|ar|بخصوص}}, {{W+|ar|حول}}, {{W+|ar|فيما يتعلق ب}}, {{W+|ar|بالنسبة ل}}, {{W|ar|بمناسبة|guman=erê}}
* {{Z|fa}}: {{W|fa|دربارهء}}, {{W|fa|درباره}}, {{W|fa|راجع به}}, {{W|fa|به مناسبت}}
* {{Z|fr}}: {{W|fr|au sujet de}}
* {{Z|en}}: {{W|en|about}}, {{W|en|concerning}}, {{W|en|as regards}}, {{W|en|anent}}, {{W|en|regarding}}
* {{Z|es}}: {{W|es|sobre}}, {{W|es|acerca de}}, {{W|en|concerniente}}
* {{Z|sv}}: {{W+|sv|om}}, {{W+|sv|angående}}, {{W+|sv|rörande}}, {{W+|sv|gällande}}, {{W+|sv|beträffande}}
* {{Z|tr}}: {{W|tr|dair}}, {{W|tr|ilişkin}}, {{W|tr|ilişik}}, {{W|tr|değgin}}
{{werger-bin}}
bojsdlobo1aasf25dmk2a7d3fndby7f
qewirandin
0
15102
6329908
6315775
2026-08-13T01:00:22Z
Wikihez
7344
6329908
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker 1 ===
{{ku-tewîn-lk|qewirandin|form=gerguhêz|niha=qewirîn|borî=qewirand}}
{{lêker|ku|c=x-gh}}
# [[qewitandin]], [[derxistin]], [[dûr]] xistin, [[derkirin]], [[dûr]] kirin
#* {{jêder|ku|jêgirtin=(...) boteke serbazî hat û li ber wan sekinî, ew ji wir '''qewirandin'''.|{{Jêgirtin/Zeynelabidîn Zinar/Balafira Jînê}}}}
#* {{jêder-pirtûk|ku|jêgirtin=Her çend min lavahî Memedî kir ku insafê bike, ji hindê malê tiştekî bide min. Memedî çêre min kirî. Ez '''qewirandim'''.|nivîskar=Mele Mehmûdê Bazîdî|sernav=Cami’eya Riseleyan û Hikayetan Bi Zimanê Kurmancî|cîh=Stembol|weşanxane={{w|Weşanên Lîs|Lîs}}|sal=2010|çap=1|rûpel=61|isbn=978-605-5683-27-6}}
#* {{jêder-pirtûk|ku|jêgirtin=Lê piştî xwerina genim zikê Adem werimî, û Tawusî Melek ew ji buhuştê '''qewirand''', anî ser rûyê dinyayê.|sernav=Rola û Girîngiya Êzdiyatiyê li Kurdistanê|nivîskar=Çerkezê Reş|cih=Yêrêvan|sal=1998}}
==== Notên bikaranînê ====
Li Efrînê maneya wê "qelandin" e.
Herwiha ji bo derxistin û dûrkirin peyva "qewitandin" tê bikaranîn.
==== Bi alfabeyên din ====
* {{ku-ar|قەوراندن}}
==== Formên alternatîv ====
* {{g|ku|qewartin}}
* {{g|ku|qewrandin}}
==== Jê ====
* {{g|ku|qewirandî}}
* {{g|ku|qewirîner}}
* {{g|ku|qewirînk}}
==== Têkildar ====
* {{g|ku|qewirîn}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|bannen}}, {{W-|de|ins Exil schicken}}, {{W+|de|verbannen}}, {{W-|de|ausdörren|guman=erê}}, {{W-|de|forttreiben|guman=erê}}, {{W-|de|in der Pfanne braten|guman=erê}}, {{W+|de|rösten|guman=erê}}, {{W+|de|schnitzen|guman=erê}}, {{W+|de|verjagen|guman=erê}}, {{W+|de|versengen|guman=erê}}, {{W+|de|verstoßen|guman=erê}}, {{W+|de|vertreiben|guman=erê}}, {{W-|de|Versengen|guman=erê}}
* {{Z|ar}}: {{W-|ar|الخرم|guman=erê}}
* {{Z|eo}}: {{W-|eo|ekzili}}
* {{Z|fa}}: {{W+|fa|بیرون کردن|guman=erê}}, {{W+|fa|دک کردن|guman=erê}}, {{W+|fa|گشاد کردن|guman=erê}}
* {{Z|fi}}: {{W+|fi|karkottaa}}
* {{Z|fr}}: {{W+|fr|bannir}}
* {{Z|nl}}: {{W+|nl|uitbannen}}, {{W+|nl|verbannen}}
* {{Z|io}}: {{W+|io|exilar}}
* {{Z|en}}: to {{W+|en|banish}}, to {{W+|en|exile}}, {{W-|en|beat off the attack|guman=erê}}, {{W+|en|discard|guman=erê}}, {{W+|en|dispel|guman=erê}}, {{W+|en|displace|guman=erê}}, {{W+|en|doff|guman=erê}}, {{W+|en|drive away|guman=erê}}, {{W+|en|drive out|guman=erê}}, {{W+|en|excavation|guman=erê}}, {{W+|en|gouging|guman=erê}}, {{W+|en|hackle|guman=erê}}, {{W+|en|hollowing|guman=erê}}, {{W-|en|kick sb out|guman=erê}}, {{W+|en|rebuff|guman=erê}}
* {{Z|it}}: {{W+|it|bandire}}, {{W+|it|esiliare}}
* {{Z|pt}}: {{W+|pt|banir}}, {{W+|pt|degredar}}, {{W+|pt|desterrar}}, {{W+|pt|exilar}}
* {{Z|es}}: {{W+|es|banir}}, {{W+|es|exilar}}, {{W+|es|desterrar}}
* {{Z|tr}}: {{W+|tr|sürgün}} etmek, {{W+|tr|uzaklaştırmak}}, {{W+|tr|kovmak}}, [[sürgün]]e [[göndermek]], {{W+|tr|atlatmak|guman=erê}}, {{W+|tr|def|guman=erê}}, {{W+|tr|defetme|guman=erê}}, {{W+|tr|defetmek|guman=erê}}, {{W+|tr|dehlemek|guman=erê}}, {{W+|tr|deşme|guman=erê}}, {{W+|tr|deşmek|guman=erê}}, {{W+|tr|kavurmak|guman=erê}}, {{W+|tr|kovalama|guman=erê}}, {{W+|tr|kovalamak|guman=erê}}, {{W+|tr|kovalayış|guman=erê}}, {{W+|tr|kovma|guman=erê}}
* {{Z|el}}: {{W+|el|εξορίζω|R=exorízo}}
{{werger-bin}}
=== Lêker 2 ===
{{lêker|ku|c=x-gh}}
# [[kun]] kirin, [[qul]] kirin, [[qewar]] kirin
#* {{bênimûne|ku}}
==== Formên alternatîv ====
* {{g|ku|qewartin}}
* {{g|ku|qewrandin}}
==== Jê ====
* {{g|ku|qewirandî}}
* {{g|ku|qewirîner}}
* {{g|ku|qewirînk}}
==== Têkildar ====
* {{g|ku|qewirîn}}
==== Etîmolojî ====
Ji {{paş|ku|qewar|-andin}}.
==== Werger ====
{{werger-ser}}
* {{Z|ar}}: {{W+|ar|حفر}}
* {{Z|en}}: {{W+|en|dig}}, {{W+|en|drill}}, {{W+|en|crave}}, {{W+|en|dig a hole}}
* {{Z|tr}}: {{W+|tr|oymak|guman=erê}}, {{W+|tr|püskürtmek|guman=erê}}, {{W+|tr|savmak|guman=erê}}, {{W+|tr|sepetlemek|guman=erê}}, {{W+|tr|süpürmek|guman=erê}}, {{W+|tr|tart etmek|guman=erê}}, {{W+|tr|uğratmak|guman=erê}}, {{W+|tr|ütmek|guman=erê}}
{{werger-bin}}
=== Lêker 3 ===
{{lêker|ku|c=x-gh}}
# [[qelandin]]a tiştan wek goşt, [[îsot]], temetoz
#* {{bênimûne|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|braten}}
* {{Z|tr}}: {{W+|tr|kavurma}}
{{werger-bin}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mane?|ku}}
#* {{bênimûne|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
1egcmonzd2ckry08t3j9d7ky5bw5vzl
qerepere
0
15554
6329905
6315678
2026-08-13T00:57:18Z
Wikihez
7344
6329905
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[qerebalix]], [[zingivor]], [[dengûdor]], [[heytûhot]], [[heysûbeys]], [[hêwirze]], [[helehela]], [[helehel]], [[hêlemêl]], <br>[[elalet]], [[gilûr]], [[boşayî]], [[ajawe]], [[bitom]], [[zirpe]], [[gurimtî]], [[gerxêl]], [[irbet]], [[şîşiltax]], [[geremol]], [[xepse]], [[heleloş]]
#* {{jêder-pirtûk|ku|jêgirtin=Apê min î ku di xewna xwe de, di dema xwe ya eskeriyeyê de dijiya, xuya bû ku bi '''qerepera''' me şiyar bûbû.|nivîskar={{w|Azîz Nesîn}}|wergêr={{w|Mustafa Aydogan}}|sernav=Fîl Hemdî|orjînal=Fil Hamdi|cîh={{w|Stenbol}}|weşanxane={{w|Weşanên Doz}}|sal=1999|rûpel=71|isbn=975-6876-10-7}}
#* {{jêder-pirtûk|ku|jêgirtin=Bi qasek şûn de '''qerepere''' li ber çavên wî çêbû, gêj bû û di cîh de ket. |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=41|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Heya serê sibehan tu dibûyî '''qerepere'''<br>Ne ez ji te re bûm yar, ne jî te devji min berda|malper=helbestakurdi.com|url=https://www.helbestakurdi.com/helbest/m-zahir-kayan--sehida-yekemin.html|sernav=Şehîda Yekemîn|nivîskar=M. Zahir Kayan}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|clamor}}
* {{Z|tr}}: {{W+|tr|har gür}}, {{W+|tr|gürültü}}, {{W+|tr|şamata}}
{{werger-bin}}
l5mzrxv9zfh9ondyuglcaou5gzqqm67
cînav
0
17543
6329636
6304438
2026-08-12T15:06:16Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329636
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/d͡ʒiˈːnɑːv/}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-cînav.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|rêziman}} [[peyv|Peyvên]] li [[şûn]]a [[navdêr]]an tên [[bikaranîn]] daku [[navdêr]] neyên [[dubarekirin]].
#: {{hevmaneyên peyvê|ku|zemîr|şûnnav}}
#: {{nm|ku|Bo nimûne vana '''cînav''' in: [[ez]], [[tu]], [[ew]], [[em]], [[hûn]], [[ew]], [[ev]], [[çi]], [[kî]], û [[form]]ên wan yên [[tewandî]].''
#* {{nimûne?|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|جیناڤ}}
==== Formên alternatîv ====
* [[cînavk]]
==== Jê ====
* [[cînavên nîşander]]
* [[cînavên kesîn]]
* [[cînavên xwedanî]]
==== Etîmolojî ====
Ji {{heve|ku|cî|nav}}.
==== Bide ber ====
{{birren peyvan}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|voornaamwoord}}
* {{Z|sq}}: {{W+|sq|përemri|n}}
* {{Z|de}}: {{W+|de|Fürwort|nt}}, {{W-|de|Personwort|nt}}, {{W-|de|Personenwort|nt}}, {{W+|de|Pronomen|nt}}, {{W+|de|Pronom|nt}}
*: {{Z|gmh}}: {{W-|gmh|vornam}}
* {{Z|alt}}: {{W-|alt|солума}}
* {{Z|am}}: {{W-|am|ተውላጠ ስም}}
* {{Z|ast}}: {{W+|ast|pronome}}
* {{Z|az}}: {{W-|az|əvəzlik}}
* {{Z|eu}}: {{W-|eu|izenordain}}
* {{Z|ba}}: {{W-|ba|алмаш|sc=Cyrl}}
* {{Z|be}}: {{W-|be|займе́ннік|n|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|সর্বনাম}}
* {{Z|bcl}}: {{W-|bcl|panangli}}
* {{Z|br}}: {{W+|br|raganv|n}}
* {{Z|bg}}: {{W+|bg|местоиме́ние|nt}}
* {{Z|my}}: {{W+|my|နာမ်စား|sc=Mymr}}
* {{Z|ch}}: {{W-|ch|klå'an}}
* {{Z|ce}}: {{W-|ce|цӏерметдош}}
* {{Z|cs}}: {{W+|cs|zájmeno|nt}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|代詞|tr=doi6 ci4}}
*: {{Z|cmn}}: {{W+|cmn|代詞|tr=dàicí}}, {{W+|cmn|代名詞|tr=dàimíngcí}}
*: {{Z|nan}}: {{W-|nan|代詞|tr=tāi-sû}}
* {{Z|cv}}: {{W-|cv|местоимени|sc=Cyrl}}, {{W-|cv|ылмаш}}
* {{Z|da}}: {{W+|da|pronomen}}, {{W+|da|stedord}}
* {{Z|id}}: {{W+|id|pronomina}}, {{W+|id|kata ganti}}
* {{Z|ar}}: {{W+|ar|ضَمِير|n}}, {{W+|ar|ضَمَائِرُ|n-p}}
* {{Z|hy}}: {{W+|hy|դերանուն}}
* {{Z|myv}}: {{W-|myv|таркасвал}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|et}}: {{W+|et|asesõna}}, {{W+|et|pronoomen}}
* {{Z|ee}}: {{W-|ee|nuŋkɔteƒenɔnya}}
* {{Z|fa}}: {{W+|fa|ضمیر|tr=zamir}}, {{W-|fa|پیشنام|tr=pišnâm}}
* {{Z|fo}}: {{W+|fo|fornavn|nt}}
* {{Z|fi}}: {{W+|fi|asemo}}, {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom|n}}
* {{Z|fy}}: {{W+|fy|foarnamwurd|nt}}
* {{Z|gd}}: {{W-|gd|riochdair}}
* {{Z|gl}}: {{W+|gl|pronome}}
* {{Z|ka}}: {{W-|ka|ნაცვალსახელი}}
* {{Z|hi}}: {{W+|hi|सर्वनाम|n|sc=Deva}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|nt}}
* {{Z|he}}: {{W+|he|כנוי גוף|n|tr=kinoi guf|cuda=כִּנּוּי גּוּף / כנוי גוף}}, {{W-|he|שם הגוף|tr=shem hagúf}}
* {{Z|io}}: {{W+|io|pronomo}}
* {{Z|ang}}: {{W-|ang|bīnama|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|izh}}: {{W-|izh|pronomina}}, {{W-|izh|nimensihalliin}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|ga}}: {{W+|ga|forainm|n}}
* {{Z|it}}: {{W+|it|pronome|n}}
* {{Z|is}}: {{W+|is|fornafn|nt}}
* {{Z|ja}}: {{W+|ja|代名詞|tr=だいめいし, daimeishi|sc=Jpan}}
* {{Z|xal}}: {{W-|xal|орч нерн}}
* {{Z|pam}}: {{W-|pam|panalili}}
* {{Z|ca}}: {{W+|ca|pronom|n}}
* {{Z|qu}}: {{W-|qu|sutip rantin}}, {{W-|qu|sutiranti}}
* {{Z|ky}}: {{W+|ky|жактама|sc=Cyrl}}
* {{Z|ko}}: {{W+|ko|대명사}}
* {{Z|kum}}: {{W-|kum|орунча|tr=orunça}}
* {{Z|la}}: {{W-|la|prōnōmen|nt}}, {{W-|la|prōvocābulum}}
* {{Z|lv}}: {{W+|lv|vietniekvārds|n}}
* {{Z|lo}}: {{W-|lo|ສັບພະນາມ}}
* {{Z|ln}}: {{W-|ln|likitana}}
* {{Z|li}}: {{W+|li|veurnaamwaord|nt}}
* {{Z|lt}}: {{W+|lt|įvardis|n}}
* {{Z|mk}}: {{W-|mk|заменка|m}}
* {{Z|ml}}: {{W+|ml|സര്വ്വനാമം|sc=Mlym}}
* {{Z|ms}}: {{W-|ms|kata ganti diri}}
* {{Z|mt}}: {{W+|mt|pronom|n}}
* {{Z|mi}}: {{W-|mi|tūkapi}}, {{W-|mi|kupu tūkapi}}
* {{Z|hu}}: {{W+|hu|névmás}}
* {{Z|mn}}: {{W-|mn|төлөөний нэр|sc=Cyrl}}, {{W-|mn|төлөөний үг}}
* {{Z|nah}}: {{W-|nah|tlācatōcāitl}}
* {{Z|ne}}: {{W-|ne|सर्वनाम}}
* {{Z|nrf}}: {{W-|nrf|pronom|n}}
* {{Z|non}}: {{W-|non|fornafn|nt}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|pronomen}}
*: {{Z|nn}}: {{W+|nn|pronomen}}
* {{Z|oc}}: {{W+|oc|pronom|n}}
* {{Z|om}}: {{W-|om|maqdhaala}}
* {{Z|os}}: {{W-|os|номивӕг|sc=Cyrl}}
* {{Z|ota}}: {{W-|ota|ضمیر|tr=zamir}}
* {{Z|ug}}: {{W-|ug|ئالماش}}
* {{Z|uz}}: {{W+|uz|olmosh}}
* {{Z|ps}}: {{W+|ps|ضمير|n|tr=zamír}}
* {{Z|pms}}: {{W-|pms|pronòm|n}}
* {{Z|pdt}}: {{W-|pdt|Fawuat|nt}}
* {{Z|pl}}: {{W+|pl|zaimek|n}}
* {{Z|pt}}: {{W+|pt|pronome|n}}
* {{Z|kk}}: {{W-|kk|есімдік|sc=Cyrl}}
* {{Z|ro}}: {{W+|ro|pronume|nt}}
* {{Z|ru}}: {{W+|ru|местоиме́ние|nt}}
* {{Z|rue}}: {{W-|rue|містоназывник|n}}
* {{Z|se}}: {{W-|se|pronomen}}
* {{Z|sa}}: {{W+|sa|सर्वनामन्|nt}}
* {{Z|scn}}: {{W+|scn|prunomu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|заменица|m|sc=Cyrl}}
*: Latînî: {{W-|sh|zamenica|m}}
* {{Z|sco}}: {{W-|sco|pronoun}}
* {{Z|sk}}: {{W+|sk|zámeno|nt}}
* {{Z|sl}}: {{W+|sl|zaímek|n}}
* {{Z|es}}: {{W+|es|pronombre|n}}
* {{Z|sw}}: {{W-|sw|kiwakilishi}}
* {{Z|sv}}: {{W+|sv|pronomen|nt}}
* {{Z|tg}}: {{W+|tg|ҷонишин|sc=Cyrl}}, {{W-|tg|замир|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|panghalip}}
* {{Z|ta}}: {{W+|ta|பெயர்ச்சொல்}}
* {{Z|th}}: {{W+|th|สรรพนาม}}
* {{Z|te}}: {{W+|te|సర్వనామము}}
* {{Z|crh}}: {{W-|crh|zamir}}
* {{Z|tt}}: {{W+|tt|алмашлык|sc=Cyrl}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W-|tr|ivazlık}}, {{W+|tr|almaş}}
* {{Z|tk}}: {{W+|tk|çalyşma}}
* {{Z|bo}}: {{W-|bo|མིང་ཚབ}}
* {{Z|ur}}: {{W+|ur|ضمیر|n|tr=zamīr|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|займе́нник|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|đại từ}}
* {{Z|vo}}: {{W+|vo|pönop}}
* {{Z|wa}}: {{W+|wa|prono}}
* {{Z|war}}: {{W-|war|imbesngaran}}, {{W-|war|taligngaran}}, {{W-|war|talingaran}}, {{W-|war|talingáran}}
* {{Z|cy}}: {{W-|cy|rhagenw|n}}
* {{Z|km}}: {{W+|km|សព្វនាម}}
* {{Z|yi}}: {{W-|yi|פּראָנאָם|n}}
* {{Z|el}}: {{W+|el|αντωνυμία|m}}
*: Kevn: {{W-|grc|ἀντωνυμία|m}}, {{W-|grc|ἀντώνυμον|nt}}
* {{Z|zu}}: {{W-|zu|isabizwana|c7|c8}}
{{werger-bin}}
:{{werger çavkanî|en|pronoun|beş=Ev qismê Wergerê|oldid=75397330}}
d726cuojopddewto5nlxwjmozvfdp95
6329637
6329636
2026-08-12T15:06:28Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329637
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/d͡ʒiˈːnɑːv/}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-cînav.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|rêziman}} [[peyv|Peyvên]] li [[şûn]]a [[navdêr]]an tên [[bikaranîn]] daku [[navdêr]] neyên [[dubarekirin]].
#: {{hevmaneyên peyvê|ku|zemîr|şûnnav}}
#: {{nm|ku|Bo nimûne vana '''cînav''' in: [[ez]], [[tu]], [[ew]], [[em]], [[hûn]], [[ew]], [[ev]], [[çi]], [[kî]], û [[form]]ên wan yên [[tewandî]].}}
#* {{nimûne?|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|جیناڤ}}
==== Formên alternatîv ====
* [[cînavk]]
==== Jê ====
* [[cînavên nîşander]]
* [[cînavên kesîn]]
* [[cînavên xwedanî]]
==== Etîmolojî ====
Ji {{heve|ku|cî|nav}}.
==== Bide ber ====
{{birren peyvan}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|voornaamwoord}}
* {{Z|sq}}: {{W+|sq|përemri|n}}
* {{Z|de}}: {{W+|de|Fürwort|nt}}, {{W-|de|Personwort|nt}}, {{W-|de|Personenwort|nt}}, {{W+|de|Pronomen|nt}}, {{W+|de|Pronom|nt}}
*: {{Z|gmh}}: {{W-|gmh|vornam}}
* {{Z|alt}}: {{W-|alt|солума}}
* {{Z|am}}: {{W-|am|ተውላጠ ስም}}
* {{Z|ast}}: {{W+|ast|pronome}}
* {{Z|az}}: {{W-|az|əvəzlik}}
* {{Z|eu}}: {{W-|eu|izenordain}}
* {{Z|ba}}: {{W-|ba|алмаш|sc=Cyrl}}
* {{Z|be}}: {{W-|be|займе́ннік|n|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|সর্বনাম}}
* {{Z|bcl}}: {{W-|bcl|panangli}}
* {{Z|br}}: {{W+|br|raganv|n}}
* {{Z|bg}}: {{W+|bg|местоиме́ние|nt}}
* {{Z|my}}: {{W+|my|နာမ်စား|sc=Mymr}}
* {{Z|ch}}: {{W-|ch|klå'an}}
* {{Z|ce}}: {{W-|ce|цӏерметдош}}
* {{Z|cs}}: {{W+|cs|zájmeno|nt}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|代詞|tr=doi6 ci4}}
*: {{Z|cmn}}: {{W+|cmn|代詞|tr=dàicí}}, {{W+|cmn|代名詞|tr=dàimíngcí}}
*: {{Z|nan}}: {{W-|nan|代詞|tr=tāi-sû}}
* {{Z|cv}}: {{W-|cv|местоимени|sc=Cyrl}}, {{W-|cv|ылмаш}}
* {{Z|da}}: {{W+|da|pronomen}}, {{W+|da|stedord}}
* {{Z|id}}: {{W+|id|pronomina}}, {{W+|id|kata ganti}}
* {{Z|ar}}: {{W+|ar|ضَمِير|n}}, {{W+|ar|ضَمَائِرُ|n-p}}
* {{Z|hy}}: {{W+|hy|դերանուն}}
* {{Z|myv}}: {{W-|myv|таркасвал}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|et}}: {{W+|et|asesõna}}, {{W+|et|pronoomen}}
* {{Z|ee}}: {{W-|ee|nuŋkɔteƒenɔnya}}
* {{Z|fa}}: {{W+|fa|ضمیر|tr=zamir}}, {{W-|fa|پیشنام|tr=pišnâm}}
* {{Z|fo}}: {{W+|fo|fornavn|nt}}
* {{Z|fi}}: {{W+|fi|asemo}}, {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom|n}}
* {{Z|fy}}: {{W+|fy|foarnamwurd|nt}}
* {{Z|gd}}: {{W-|gd|riochdair}}
* {{Z|gl}}: {{W+|gl|pronome}}
* {{Z|ka}}: {{W-|ka|ნაცვალსახელი}}
* {{Z|hi}}: {{W+|hi|सर्वनाम|n|sc=Deva}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|nt}}
* {{Z|he}}: {{W+|he|כנוי גוף|n|tr=kinoi guf|cuda=כִּנּוּי גּוּף / כנוי גוף}}, {{W-|he|שם הגוף|tr=shem hagúf}}
* {{Z|io}}: {{W+|io|pronomo}}
* {{Z|ang}}: {{W-|ang|bīnama|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|izh}}: {{W-|izh|pronomina}}, {{W-|izh|nimensihalliin}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|ga}}: {{W+|ga|forainm|n}}
* {{Z|it}}: {{W+|it|pronome|n}}
* {{Z|is}}: {{W+|is|fornafn|nt}}
* {{Z|ja}}: {{W+|ja|代名詞|tr=だいめいし, daimeishi|sc=Jpan}}
* {{Z|xal}}: {{W-|xal|орч нерн}}
* {{Z|pam}}: {{W-|pam|panalili}}
* {{Z|ca}}: {{W+|ca|pronom|n}}
* {{Z|qu}}: {{W-|qu|sutip rantin}}, {{W-|qu|sutiranti}}
* {{Z|ky}}: {{W+|ky|жактама|sc=Cyrl}}
* {{Z|ko}}: {{W+|ko|대명사}}
* {{Z|kum}}: {{W-|kum|орунча|tr=orunça}}
* {{Z|la}}: {{W-|la|prōnōmen|nt}}, {{W-|la|prōvocābulum}}
* {{Z|lv}}: {{W+|lv|vietniekvārds|n}}
* {{Z|lo}}: {{W-|lo|ສັບພະນາມ}}
* {{Z|ln}}: {{W-|ln|likitana}}
* {{Z|li}}: {{W+|li|veurnaamwaord|nt}}
* {{Z|lt}}: {{W+|lt|įvardis|n}}
* {{Z|mk}}: {{W-|mk|заменка|m}}
* {{Z|ml}}: {{W+|ml|സര്വ്വനാമം|sc=Mlym}}
* {{Z|ms}}: {{W-|ms|kata ganti diri}}
* {{Z|mt}}: {{W+|mt|pronom|n}}
* {{Z|mi}}: {{W-|mi|tūkapi}}, {{W-|mi|kupu tūkapi}}
* {{Z|hu}}: {{W+|hu|névmás}}
* {{Z|mn}}: {{W-|mn|төлөөний нэр|sc=Cyrl}}, {{W-|mn|төлөөний үг}}
* {{Z|nah}}: {{W-|nah|tlācatōcāitl}}
* {{Z|ne}}: {{W-|ne|सर्वनाम}}
* {{Z|nrf}}: {{W-|nrf|pronom|n}}
* {{Z|non}}: {{W-|non|fornafn|nt}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|pronomen}}
*: {{Z|nn}}: {{W+|nn|pronomen}}
* {{Z|oc}}: {{W+|oc|pronom|n}}
* {{Z|om}}: {{W-|om|maqdhaala}}
* {{Z|os}}: {{W-|os|номивӕг|sc=Cyrl}}
* {{Z|ota}}: {{W-|ota|ضمیر|tr=zamir}}
* {{Z|ug}}: {{W-|ug|ئالماش}}
* {{Z|uz}}: {{W+|uz|olmosh}}
* {{Z|ps}}: {{W+|ps|ضمير|n|tr=zamír}}
* {{Z|pms}}: {{W-|pms|pronòm|n}}
* {{Z|pdt}}: {{W-|pdt|Fawuat|nt}}
* {{Z|pl}}: {{W+|pl|zaimek|n}}
* {{Z|pt}}: {{W+|pt|pronome|n}}
* {{Z|kk}}: {{W-|kk|есімдік|sc=Cyrl}}
* {{Z|ro}}: {{W+|ro|pronume|nt}}
* {{Z|ru}}: {{W+|ru|местоиме́ние|nt}}
* {{Z|rue}}: {{W-|rue|містоназывник|n}}
* {{Z|se}}: {{W-|se|pronomen}}
* {{Z|sa}}: {{W+|sa|सर्वनामन्|nt}}
* {{Z|scn}}: {{W+|scn|prunomu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|заменица|m|sc=Cyrl}}
*: Latînî: {{W-|sh|zamenica|m}}
* {{Z|sco}}: {{W-|sco|pronoun}}
* {{Z|sk}}: {{W+|sk|zámeno|nt}}
* {{Z|sl}}: {{W+|sl|zaímek|n}}
* {{Z|es}}: {{W+|es|pronombre|n}}
* {{Z|sw}}: {{W-|sw|kiwakilishi}}
* {{Z|sv}}: {{W+|sv|pronomen|nt}}
* {{Z|tg}}: {{W+|tg|ҷонишин|sc=Cyrl}}, {{W-|tg|замир|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|panghalip}}
* {{Z|ta}}: {{W+|ta|பெயர்ச்சொல்}}
* {{Z|th}}: {{W+|th|สรรพนาม}}
* {{Z|te}}: {{W+|te|సర్వనామము}}
* {{Z|crh}}: {{W-|crh|zamir}}
* {{Z|tt}}: {{W+|tt|алмашлык|sc=Cyrl}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W-|tr|ivazlık}}, {{W+|tr|almaş}}
* {{Z|tk}}: {{W+|tk|çalyşma}}
* {{Z|bo}}: {{W-|bo|མིང་ཚབ}}
* {{Z|ur}}: {{W+|ur|ضمیر|n|tr=zamīr|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|займе́нник|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|đại từ}}
* {{Z|vo}}: {{W+|vo|pönop}}
* {{Z|wa}}: {{W+|wa|prono}}
* {{Z|war}}: {{W-|war|imbesngaran}}, {{W-|war|taligngaran}}, {{W-|war|talingaran}}, {{W-|war|talingáran}}
* {{Z|cy}}: {{W-|cy|rhagenw|n}}
* {{Z|km}}: {{W+|km|សព្វនាម}}
* {{Z|yi}}: {{W-|yi|פּראָנאָם|n}}
* {{Z|el}}: {{W+|el|αντωνυμία|m}}
*: Kevn: {{W-|grc|ἀντωνυμία|m}}, {{W-|grc|ἀντώνυμον|nt}}
* {{Z|zu}}: {{W-|zu|isabizwana|c7|c8}}
{{werger-bin}}
:{{werger çavkanî|en|pronoun|beş=Ev qismê Wergerê|oldid=75397330}}
rbufu4dc7kmed7yg4xa0j8s1ehuj9qg
6329638
6329637
2026-08-12T15:08:43Z
Wikihez
7344
+nimûneya bikaranînê bi amûra « [[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]] » (v1.7).
6329638
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/d͡ʒiˈːnɑːv/}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-cînav.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|rêziman}} [[peyv|Peyvên]] li [[şûn]]a [[navdêr]]an tên [[bikaranîn]] daku [[navdêr]] neyên [[dubarekirin]].
#: {{hevmaneyên peyvê|ku|zemîr|şûnnav}}
#: {{nm|ku|Bo nimûne vana '''cînav''' in: [[ez]], [[tu]], [[ew]], [[em]], [[hûn]], [[ew]], [[ev]], [[çi]], [[kî]], û [[form]]ên wan yên [[tewandî]].}}
#* {{jêder-kovar|ku|nivîskar=Zafer Açar|sernav=Wergera ji Tirkî bo Kurdî û Bikaranîna Hin Peyv û Qalibên Girîng ên Kurdî
di Wergerê de|kovar=Kurdiyat|hejmar=1|sal=2020|rûpel=101|url=https://zenodo.org/record/3895077|jêgirtin='''Cînav''' ew beşa axaftinê ye ku cihê navdêrekê digire ku di axaftinê de qala wê hatiye kirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|جیناڤ}}
==== Formên alternatîv ====
* [[cînavk]]
==== Jê ====
* [[cînavên nîşander]]
* [[cînavên kesîn]]
* [[cînavên xwedanî]]
==== Etîmolojî ====
Ji {{heve|ku|cî|nav}}.
==== Bide ber ====
{{birren peyvan}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|voornaamwoord}}
* {{Z|sq}}: {{W+|sq|përemri|n}}
* {{Z|de}}: {{W+|de|Fürwort|nt}}, {{W-|de|Personwort|nt}}, {{W-|de|Personenwort|nt}}, {{W+|de|Pronomen|nt}}, {{W+|de|Pronom|nt}}
*: {{Z|gmh}}: {{W-|gmh|vornam}}
* {{Z|alt}}: {{W-|alt|солума}}
* {{Z|am}}: {{W-|am|ተውላጠ ስም}}
* {{Z|ast}}: {{W+|ast|pronome}}
* {{Z|az}}: {{W-|az|əvəzlik}}
* {{Z|eu}}: {{W-|eu|izenordain}}
* {{Z|ba}}: {{W-|ba|алмаш|sc=Cyrl}}
* {{Z|be}}: {{W-|be|займе́ннік|n|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|সর্বনাম}}
* {{Z|bcl}}: {{W-|bcl|panangli}}
* {{Z|br}}: {{W+|br|raganv|n}}
* {{Z|bg}}: {{W+|bg|местоиме́ние|nt}}
* {{Z|my}}: {{W+|my|နာမ်စား|sc=Mymr}}
* {{Z|ch}}: {{W-|ch|klå'an}}
* {{Z|ce}}: {{W-|ce|цӏерметдош}}
* {{Z|cs}}: {{W+|cs|zájmeno|nt}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|代詞|tr=doi6 ci4}}
*: {{Z|cmn}}: {{W+|cmn|代詞|tr=dàicí}}, {{W+|cmn|代名詞|tr=dàimíngcí}}
*: {{Z|nan}}: {{W-|nan|代詞|tr=tāi-sû}}
* {{Z|cv}}: {{W-|cv|местоимени|sc=Cyrl}}, {{W-|cv|ылмаш}}
* {{Z|da}}: {{W+|da|pronomen}}, {{W+|da|stedord}}
* {{Z|id}}: {{W+|id|pronomina}}, {{W+|id|kata ganti}}
* {{Z|ar}}: {{W+|ar|ضَمِير|n}}, {{W+|ar|ضَمَائِرُ|n-p}}
* {{Z|hy}}: {{W+|hy|դերանուն}}
* {{Z|myv}}: {{W-|myv|таркасвал}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|et}}: {{W+|et|asesõna}}, {{W+|et|pronoomen}}
* {{Z|ee}}: {{W-|ee|nuŋkɔteƒenɔnya}}
* {{Z|fa}}: {{W+|fa|ضمیر|tr=zamir}}, {{W-|fa|پیشنام|tr=pišnâm}}
* {{Z|fo}}: {{W+|fo|fornavn|nt}}
* {{Z|fi}}: {{W+|fi|asemo}}, {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom|n}}
* {{Z|fy}}: {{W+|fy|foarnamwurd|nt}}
* {{Z|gd}}: {{W-|gd|riochdair}}
* {{Z|gl}}: {{W+|gl|pronome}}
* {{Z|ka}}: {{W-|ka|ნაცვალსახელი}}
* {{Z|hi}}: {{W+|hi|सर्वनाम|n|sc=Deva}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|nt}}
* {{Z|he}}: {{W+|he|כנוי גוף|n|tr=kinoi guf|cuda=כִּנּוּי גּוּף / כנוי גוף}}, {{W-|he|שם הגוף|tr=shem hagúf}}
* {{Z|io}}: {{W+|io|pronomo}}
* {{Z|ang}}: {{W-|ang|bīnama|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|izh}}: {{W-|izh|pronomina}}, {{W-|izh|nimensihalliin}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|ga}}: {{W+|ga|forainm|n}}
* {{Z|it}}: {{W+|it|pronome|n}}
* {{Z|is}}: {{W+|is|fornafn|nt}}
* {{Z|ja}}: {{W+|ja|代名詞|tr=だいめいし, daimeishi|sc=Jpan}}
* {{Z|xal}}: {{W-|xal|орч нерн}}
* {{Z|pam}}: {{W-|pam|panalili}}
* {{Z|ca}}: {{W+|ca|pronom|n}}
* {{Z|qu}}: {{W-|qu|sutip rantin}}, {{W-|qu|sutiranti}}
* {{Z|ky}}: {{W+|ky|жактама|sc=Cyrl}}
* {{Z|ko}}: {{W+|ko|대명사}}
* {{Z|kum}}: {{W-|kum|орунча|tr=orunça}}
* {{Z|la}}: {{W-|la|prōnōmen|nt}}, {{W-|la|prōvocābulum}}
* {{Z|lv}}: {{W+|lv|vietniekvārds|n}}
* {{Z|lo}}: {{W-|lo|ສັບພະນາມ}}
* {{Z|ln}}: {{W-|ln|likitana}}
* {{Z|li}}: {{W+|li|veurnaamwaord|nt}}
* {{Z|lt}}: {{W+|lt|įvardis|n}}
* {{Z|mk}}: {{W-|mk|заменка|m}}
* {{Z|ml}}: {{W+|ml|സര്വ്വനാമം|sc=Mlym}}
* {{Z|ms}}: {{W-|ms|kata ganti diri}}
* {{Z|mt}}: {{W+|mt|pronom|n}}
* {{Z|mi}}: {{W-|mi|tūkapi}}, {{W-|mi|kupu tūkapi}}
* {{Z|hu}}: {{W+|hu|névmás}}
* {{Z|mn}}: {{W-|mn|төлөөний нэр|sc=Cyrl}}, {{W-|mn|төлөөний үг}}
* {{Z|nah}}: {{W-|nah|tlācatōcāitl}}
* {{Z|ne}}: {{W-|ne|सर्वनाम}}
* {{Z|nrf}}: {{W-|nrf|pronom|n}}
* {{Z|non}}: {{W-|non|fornafn|nt}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|pronomen}}
*: {{Z|nn}}: {{W+|nn|pronomen}}
* {{Z|oc}}: {{W+|oc|pronom|n}}
* {{Z|om}}: {{W-|om|maqdhaala}}
* {{Z|os}}: {{W-|os|номивӕг|sc=Cyrl}}
* {{Z|ota}}: {{W-|ota|ضمیر|tr=zamir}}
* {{Z|ug}}: {{W-|ug|ئالماش}}
* {{Z|uz}}: {{W+|uz|olmosh}}
* {{Z|ps}}: {{W+|ps|ضمير|n|tr=zamír}}
* {{Z|pms}}: {{W-|pms|pronòm|n}}
* {{Z|pdt}}: {{W-|pdt|Fawuat|nt}}
* {{Z|pl}}: {{W+|pl|zaimek|n}}
* {{Z|pt}}: {{W+|pt|pronome|n}}
* {{Z|kk}}: {{W-|kk|есімдік|sc=Cyrl}}
* {{Z|ro}}: {{W+|ro|pronume|nt}}
* {{Z|ru}}: {{W+|ru|местоиме́ние|nt}}
* {{Z|rue}}: {{W-|rue|містоназывник|n}}
* {{Z|se}}: {{W-|se|pronomen}}
* {{Z|sa}}: {{W+|sa|सर्वनामन्|nt}}
* {{Z|scn}}: {{W+|scn|prunomu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|заменица|m|sc=Cyrl}}
*: Latînî: {{W-|sh|zamenica|m}}
* {{Z|sco}}: {{W-|sco|pronoun}}
* {{Z|sk}}: {{W+|sk|zámeno|nt}}
* {{Z|sl}}: {{W+|sl|zaímek|n}}
* {{Z|es}}: {{W+|es|pronombre|n}}
* {{Z|sw}}: {{W-|sw|kiwakilishi}}
* {{Z|sv}}: {{W+|sv|pronomen|nt}}
* {{Z|tg}}: {{W+|tg|ҷонишин|sc=Cyrl}}, {{W-|tg|замир|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|panghalip}}
* {{Z|ta}}: {{W+|ta|பெயர்ச்சொல்}}
* {{Z|th}}: {{W+|th|สรรพนาม}}
* {{Z|te}}: {{W+|te|సర్వనామము}}
* {{Z|crh}}: {{W-|crh|zamir}}
* {{Z|tt}}: {{W+|tt|алмашлык|sc=Cyrl}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W-|tr|ivazlık}}, {{W+|tr|almaş}}
* {{Z|tk}}: {{W+|tk|çalyşma}}
* {{Z|bo}}: {{W-|bo|མིང་ཚབ}}
* {{Z|ur}}: {{W+|ur|ضمیر|n|tr=zamīr|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|займе́нник|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|đại từ}}
* {{Z|vo}}: {{W+|vo|pönop}}
* {{Z|wa}}: {{W+|wa|prono}}
* {{Z|war}}: {{W-|war|imbesngaran}}, {{W-|war|taligngaran}}, {{W-|war|talingaran}}, {{W-|war|talingáran}}
* {{Z|cy}}: {{W-|cy|rhagenw|n}}
* {{Z|km}}: {{W+|km|សព្វនាម}}
* {{Z|yi}}: {{W-|yi|פּראָנאָם|n}}
* {{Z|el}}: {{W+|el|αντωνυμία|m}}
*: Kevn: {{W-|grc|ἀντωνυμία|m}}, {{W-|grc|ἀντώνυμον|nt}}
* {{Z|zu}}: {{W-|zu|isabizwana|c7|c8}}
{{werger-bin}}
:{{werger çavkanî|en|pronoun|beş=Ev qismê Wergerê|oldid=75397330}}
bpmqrg5b3ya3sxbfjdd2i6px5i5ly7j
6329639
6329638
2026-08-12T15:09:24Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329639
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/d͡ʒiˈːnɑːv/}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-cînav.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|rêziman}} [[peyv|Peyvên]] li [[şûn]]a [[navdêr]]an tên [[bikaranîn]] daku [[navdêr]] neyên [[dubarekirin]].
#: {{hevmaneyên peyvê|ku|zemîr|şûnnav}}
#: {{nm|ku|Bo nimûne vana '''cînav''' in: [[ez]], [[tu]], [[ew]], [[em]], [[hûn]], [[ew]], [[ev]], [[çi]], [[kî]], û [[form]]ên wan yên [[tewandî]].}}
#* {{jêder-kovar|ku|nivîskar=Zafer Açar|sernav=Wergera ji Tirkî bo Kurdî û Bikaranîna Hin Peyv û Qalibên Girîng ên Kurdî di Wergerê de|kovar=Kurdiyat|hejmar=1|sal=2020|rûpel=101|url=https://zenodo.org/record/3895077|jêgirtin='''Cînav''' ew beşa axaftinê ye ku cihê navdêrekê digire ku di axaftinê de qala wê hatiye kirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|جیناڤ}}
==== Formên alternatîv ====
* [[cînavk]]
==== Jê ====
* [[cînavên nîşander]]
* [[cînavên kesîn]]
* [[cînavên xwedanî]]
==== Etîmolojî ====
Ji {{heve|ku|cî|nav}}.
==== Bide ber ====
{{birren peyvan}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|voornaamwoord}}
* {{Z|sq}}: {{W+|sq|përemri|n}}
* {{Z|de}}: {{W+|de|Fürwort|nt}}, {{W-|de|Personwort|nt}}, {{W-|de|Personenwort|nt}}, {{W+|de|Pronomen|nt}}, {{W+|de|Pronom|nt}}
*: {{Z|gmh}}: {{W-|gmh|vornam}}
* {{Z|alt}}: {{W-|alt|солума}}
* {{Z|am}}: {{W-|am|ተውላጠ ስም}}
* {{Z|ast}}: {{W+|ast|pronome}}
* {{Z|az}}: {{W-|az|əvəzlik}}
* {{Z|eu}}: {{W-|eu|izenordain}}
* {{Z|ba}}: {{W-|ba|алмаш|sc=Cyrl}}
* {{Z|be}}: {{W-|be|займе́ннік|n|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|সর্বনাম}}
* {{Z|bcl}}: {{W-|bcl|panangli}}
* {{Z|br}}: {{W+|br|raganv|n}}
* {{Z|bg}}: {{W+|bg|местоиме́ние|nt}}
* {{Z|my}}: {{W+|my|နာမ်စား|sc=Mymr}}
* {{Z|ch}}: {{W-|ch|klå'an}}
* {{Z|ce}}: {{W-|ce|цӏерметдош}}
* {{Z|cs}}: {{W+|cs|zájmeno|nt}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|代詞|tr=doi6 ci4}}
*: {{Z|cmn}}: {{W+|cmn|代詞|tr=dàicí}}, {{W+|cmn|代名詞|tr=dàimíngcí}}
*: {{Z|nan}}: {{W-|nan|代詞|tr=tāi-sû}}
* {{Z|cv}}: {{W-|cv|местоимени|sc=Cyrl}}, {{W-|cv|ылмаш}}
* {{Z|da}}: {{W+|da|pronomen}}, {{W+|da|stedord}}
* {{Z|id}}: {{W+|id|pronomina}}, {{W+|id|kata ganti}}
* {{Z|ar}}: {{W+|ar|ضَمِير|n}}, {{W+|ar|ضَمَائِرُ|n-p}}
* {{Z|hy}}: {{W+|hy|դերանուն}}
* {{Z|myv}}: {{W-|myv|таркасвал}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|et}}: {{W+|et|asesõna}}, {{W+|et|pronoomen}}
* {{Z|ee}}: {{W-|ee|nuŋkɔteƒenɔnya}}
* {{Z|fa}}: {{W+|fa|ضمیر|tr=zamir}}, {{W-|fa|پیشنام|tr=pišnâm}}
* {{Z|fo}}: {{W+|fo|fornavn|nt}}
* {{Z|fi}}: {{W+|fi|asemo}}, {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom|n}}
* {{Z|fy}}: {{W+|fy|foarnamwurd|nt}}
* {{Z|gd}}: {{W-|gd|riochdair}}
* {{Z|gl}}: {{W+|gl|pronome}}
* {{Z|ka}}: {{W-|ka|ნაცვალსახელი}}
* {{Z|hi}}: {{W+|hi|सर्वनाम|n|sc=Deva}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|nt}}
* {{Z|he}}: {{W+|he|כנוי גוף|n|tr=kinoi guf|cuda=כִּנּוּי גּוּף / כנוי גוף}}, {{W-|he|שם הגוף|tr=shem hagúf}}
* {{Z|io}}: {{W+|io|pronomo}}
* {{Z|ang}}: {{W-|ang|bīnama|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|izh}}: {{W-|izh|pronomina}}, {{W-|izh|nimensihalliin}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|ga}}: {{W+|ga|forainm|n}}
* {{Z|it}}: {{W+|it|pronome|n}}
* {{Z|is}}: {{W+|is|fornafn|nt}}
* {{Z|ja}}: {{W+|ja|代名詞|tr=だいめいし, daimeishi|sc=Jpan}}
* {{Z|xal}}: {{W-|xal|орч нерн}}
* {{Z|pam}}: {{W-|pam|panalili}}
* {{Z|ca}}: {{W+|ca|pronom|n}}
* {{Z|qu}}: {{W-|qu|sutip rantin}}, {{W-|qu|sutiranti}}
* {{Z|ky}}: {{W+|ky|жактама|sc=Cyrl}}
* {{Z|ko}}: {{W+|ko|대명사}}
* {{Z|kum}}: {{W-|kum|орунча|tr=orunça}}
* {{Z|la}}: {{W-|la|prōnōmen|nt}}, {{W-|la|prōvocābulum}}
* {{Z|lv}}: {{W+|lv|vietniekvārds|n}}
* {{Z|lo}}: {{W-|lo|ສັບພະນາມ}}
* {{Z|ln}}: {{W-|ln|likitana}}
* {{Z|li}}: {{W+|li|veurnaamwaord|nt}}
* {{Z|lt}}: {{W+|lt|įvardis|n}}
* {{Z|mk}}: {{W-|mk|заменка|m}}
* {{Z|ml}}: {{W+|ml|സര്വ്വനാമം|sc=Mlym}}
* {{Z|ms}}: {{W-|ms|kata ganti diri}}
* {{Z|mt}}: {{W+|mt|pronom|n}}
* {{Z|mi}}: {{W-|mi|tūkapi}}, {{W-|mi|kupu tūkapi}}
* {{Z|hu}}: {{W+|hu|névmás}}
* {{Z|mn}}: {{W-|mn|төлөөний нэр|sc=Cyrl}}, {{W-|mn|төлөөний үг}}
* {{Z|nah}}: {{W-|nah|tlācatōcāitl}}
* {{Z|ne}}: {{W-|ne|सर्वनाम}}
* {{Z|nrf}}: {{W-|nrf|pronom|n}}
* {{Z|non}}: {{W-|non|fornafn|nt}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|pronomen}}
*: {{Z|nn}}: {{W+|nn|pronomen}}
* {{Z|oc}}: {{W+|oc|pronom|n}}
* {{Z|om}}: {{W-|om|maqdhaala}}
* {{Z|os}}: {{W-|os|номивӕг|sc=Cyrl}}
* {{Z|ota}}: {{W-|ota|ضمیر|tr=zamir}}
* {{Z|ug}}: {{W-|ug|ئالماش}}
* {{Z|uz}}: {{W+|uz|olmosh}}
* {{Z|ps}}: {{W+|ps|ضمير|n|tr=zamír}}
* {{Z|pms}}: {{W-|pms|pronòm|n}}
* {{Z|pdt}}: {{W-|pdt|Fawuat|nt}}
* {{Z|pl}}: {{W+|pl|zaimek|n}}
* {{Z|pt}}: {{W+|pt|pronome|n}}
* {{Z|kk}}: {{W-|kk|есімдік|sc=Cyrl}}
* {{Z|ro}}: {{W+|ro|pronume|nt}}
* {{Z|ru}}: {{W+|ru|местоиме́ние|nt}}
* {{Z|rue}}: {{W-|rue|містоназывник|n}}
* {{Z|se}}: {{W-|se|pronomen}}
* {{Z|sa}}: {{W+|sa|सर्वनामन्|nt}}
* {{Z|scn}}: {{W+|scn|prunomu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|заменица|m|sc=Cyrl}}
*: Latînî: {{W-|sh|zamenica|m}}
* {{Z|sco}}: {{W-|sco|pronoun}}
* {{Z|sk}}: {{W+|sk|zámeno|nt}}
* {{Z|sl}}: {{W+|sl|zaímek|n}}
* {{Z|es}}: {{W+|es|pronombre|n}}
* {{Z|sw}}: {{W-|sw|kiwakilishi}}
* {{Z|sv}}: {{W+|sv|pronomen|nt}}
* {{Z|tg}}: {{W+|tg|ҷонишин|sc=Cyrl}}, {{W-|tg|замир|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|panghalip}}
* {{Z|ta}}: {{W+|ta|பெயர்ச்சொல்}}
* {{Z|th}}: {{W+|th|สรรพนาม}}
* {{Z|te}}: {{W+|te|సర్వనామము}}
* {{Z|crh}}: {{W-|crh|zamir}}
* {{Z|tt}}: {{W+|tt|алмашлык|sc=Cyrl}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W-|tr|ivazlık}}, {{W+|tr|almaş}}
* {{Z|tk}}: {{W+|tk|çalyşma}}
* {{Z|bo}}: {{W-|bo|མིང་ཚབ}}
* {{Z|ur}}: {{W+|ur|ضمیر|n|tr=zamīr|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|займе́нник|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|đại từ}}
* {{Z|vo}}: {{W+|vo|pönop}}
* {{Z|wa}}: {{W+|wa|prono}}
* {{Z|war}}: {{W-|war|imbesngaran}}, {{W-|war|taligngaran}}, {{W-|war|talingaran}}, {{W-|war|talingáran}}
* {{Z|cy}}: {{W-|cy|rhagenw|n}}
* {{Z|km}}: {{W+|km|សព្វនាម}}
* {{Z|yi}}: {{W-|yi|פּראָנאָם|n}}
* {{Z|el}}: {{W+|el|αντωνυμία|m}}
*: Kevn: {{W-|grc|ἀντωνυμία|m}}, {{W-|grc|ἀντώνυμον|nt}}
* {{Z|zu}}: {{W-|zu|isabizwana|c7|c8}}
{{werger-bin}}
:{{werger çavkanî|en|pronoun|beş=Ev qismê Wergerê|oldid=75397330}}
tl68ki21fr1vyxamd0lczwtchxpk59t
6329640
6329639
2026-08-12T15:11:15Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329640
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/d͡ʒiˈːnɑːv/}}
* {{deng|ku|LL-Q36163 (kmr)-Key Mîrza-cînav.wav|dever=Bidlîs}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|rêziman}} [[peyv|Peyvên]] li [[şûn]]a [[navdêr]]an tên [[bikaranîn]] daku [[navdêr]] neyên [[dubarekirin]].
#: {{hevmaneyên peyvê|ku|zemîr|şûnnav}}
#: {{nm|ku|Bo nimûne vana '''cînav''' in: [[ez]], [[tu]], [[ew]], [[em]], [[hûn]], [[ew]], [[ev]], [[çi]], [[kî]], û [[form]]ên wan yên [[tewandî]].}}
#* {{jêder-kovar|ku|nivîskar=Zafer Açar|sernav=Wergera ji Tirkî bo Kurdî û Bikaranîna Hin Peyv û Qalibên Girîng ên Kurdî di Wergerê de|kovar=Kurdiyat|hejmar=1|sal=2020|rûpel=101|url=https://zenodo.org/record/3895077|jêgirtin='''Cînav''' ew beşa axaftinê ye ku cihê navdêrekê digire ku di axaftinê de qala wê hatiye kirin.}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|جیناڤ}}
==== Formên alternatîv ====
* [[cînavk]]
* {{alt|ku|cihnav}}
==== Jê ====
* [[cînavên nîşander]]
* [[cînavên kesîn]]
* [[cînavên xwedanî]]
==== Etîmolojî ====
Ji {{heve|ku|cî|nav}}.
==== Bide ber ====
{{birren peyvan}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|voornaamwoord}}
* {{Z|sq}}: {{W+|sq|përemri|n}}
* {{Z|de}}: {{W+|de|Fürwort|nt}}, {{W-|de|Personwort|nt}}, {{W-|de|Personenwort|nt}}, {{W+|de|Pronomen|nt}}, {{W+|de|Pronom|nt}}
*: {{Z|gmh}}: {{W-|gmh|vornam}}
* {{Z|alt}}: {{W-|alt|солума}}
* {{Z|am}}: {{W-|am|ተውላጠ ስም}}
* {{Z|ast}}: {{W+|ast|pronome}}
* {{Z|az}}: {{W-|az|əvəzlik}}
* {{Z|eu}}: {{W-|eu|izenordain}}
* {{Z|ba}}: {{W-|ba|алмаш|sc=Cyrl}}
* {{Z|be}}: {{W-|be|займе́ннік|n|sc=Cyrl}}
* {{Z|bn}}: {{W+|bn|সর্বনাম}}
* {{Z|bcl}}: {{W-|bcl|panangli}}
* {{Z|br}}: {{W+|br|raganv|n}}
* {{Z|bg}}: {{W+|bg|местоиме́ние|nt}}
* {{Z|my}}: {{W+|my|နာမ်စား|sc=Mymr}}
* {{Z|ch}}: {{W-|ch|klå'an}}
* {{Z|ce}}: {{W-|ce|цӏерметдош}}
* {{Z|cs}}: {{W+|cs|zájmeno|nt}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|代詞|tr=doi6 ci4}}
*: {{Z|cmn}}: {{W+|cmn|代詞|tr=dàicí}}, {{W+|cmn|代名詞|tr=dàimíngcí}}
*: {{Z|nan}}: {{W-|nan|代詞|tr=tāi-sû}}
* {{Z|cv}}: {{W-|cv|местоимени|sc=Cyrl}}, {{W-|cv|ылмаш}}
* {{Z|da}}: {{W+|da|pronomen}}, {{W+|da|stedord}}
* {{Z|id}}: {{W+|id|pronomina}}, {{W+|id|kata ganti}}
* {{Z|ar}}: {{W+|ar|ضَمِير|n}}, {{W+|ar|ضَمَائِرُ|n-p}}
* {{Z|hy}}: {{W+|hy|դերանուն}}
* {{Z|myv}}: {{W-|myv|таркасвал}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|et}}: {{W+|et|asesõna}}, {{W+|et|pronoomen}}
* {{Z|ee}}: {{W-|ee|nuŋkɔteƒenɔnya}}
* {{Z|fa}}: {{W+|fa|ضمیر|tr=zamir}}, {{W-|fa|پیشنام|tr=pišnâm}}
* {{Z|fo}}: {{W+|fo|fornavn|nt}}
* {{Z|fi}}: {{W+|fi|asemo}}, {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom|n}}
* {{Z|fy}}: {{W+|fy|foarnamwurd|nt}}
* {{Z|gd}}: {{W-|gd|riochdair}}
* {{Z|gl}}: {{W+|gl|pronome}}
* {{Z|ka}}: {{W-|ka|ნაცვალსახელი}}
* {{Z|hi}}: {{W+|hi|सर्वनाम|n|sc=Deva}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|nt}}
* {{Z|he}}: {{W+|he|כנוי גוף|n|tr=kinoi guf|cuda=כִּנּוּי גּוּף / כנוי גוף}}, {{W-|he|שם הגוף|tr=shem hagúf}}
* {{Z|io}}: {{W+|io|pronomo}}
* {{Z|ang}}: {{W-|ang|bīnama|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|izh}}: {{W-|izh|pronomina}}, {{W-|izh|nimensihalliin}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|ga}}: {{W+|ga|forainm|n}}
* {{Z|it}}: {{W+|it|pronome|n}}
* {{Z|is}}: {{W+|is|fornafn|nt}}
* {{Z|ja}}: {{W+|ja|代名詞|tr=だいめいし, daimeishi|sc=Jpan}}
* {{Z|xal}}: {{W-|xal|орч нерн}}
* {{Z|pam}}: {{W-|pam|panalili}}
* {{Z|ca}}: {{W+|ca|pronom|n}}
* {{Z|qu}}: {{W-|qu|sutip rantin}}, {{W-|qu|sutiranti}}
* {{Z|ky}}: {{W+|ky|жактама|sc=Cyrl}}
* {{Z|ko}}: {{W+|ko|대명사}}
* {{Z|kum}}: {{W-|kum|орунча|tr=orunça}}
* {{Z|la}}: {{W-|la|prōnōmen|nt}}, {{W-|la|prōvocābulum}}
* {{Z|lv}}: {{W+|lv|vietniekvārds|n}}
* {{Z|lo}}: {{W-|lo|ສັບພະນາມ}}
* {{Z|ln}}: {{W-|ln|likitana}}
* {{Z|li}}: {{W+|li|veurnaamwaord|nt}}
* {{Z|lt}}: {{W+|lt|įvardis|n}}
* {{Z|mk}}: {{W-|mk|заменка|m}}
* {{Z|ml}}: {{W+|ml|സര്വ്വനാമം|sc=Mlym}}
* {{Z|ms}}: {{W-|ms|kata ganti diri}}
* {{Z|mt}}: {{W+|mt|pronom|n}}
* {{Z|mi}}: {{W-|mi|tūkapi}}, {{W-|mi|kupu tūkapi}}
* {{Z|hu}}: {{W+|hu|névmás}}
* {{Z|mn}}: {{W-|mn|төлөөний нэр|sc=Cyrl}}, {{W-|mn|төлөөний үг}}
* {{Z|nah}}: {{W-|nah|tlācatōcāitl}}
* {{Z|ne}}: {{W-|ne|सर्वनाम}}
* {{Z|nrf}}: {{W-|nrf|pronom|n}}
* {{Z|non}}: {{W-|non|fornafn|nt}}
* {{Z|no}}:
*: {{Z|nb}}: {{W+|nb|pronomen}}
*: {{Z|nn}}: {{W+|nn|pronomen}}
* {{Z|oc}}: {{W+|oc|pronom|n}}
* {{Z|om}}: {{W-|om|maqdhaala}}
* {{Z|os}}: {{W-|os|номивӕг|sc=Cyrl}}
* {{Z|ota}}: {{W-|ota|ضمیر|tr=zamir}}
* {{Z|ug}}: {{W-|ug|ئالماش}}
* {{Z|uz}}: {{W+|uz|olmosh}}
* {{Z|ps}}: {{W+|ps|ضمير|n|tr=zamír}}
* {{Z|pms}}: {{W-|pms|pronòm|n}}
* {{Z|pdt}}: {{W-|pdt|Fawuat|nt}}
* {{Z|pl}}: {{W+|pl|zaimek|n}}
* {{Z|pt}}: {{W+|pt|pronome|n}}
* {{Z|kk}}: {{W-|kk|есімдік|sc=Cyrl}}
* {{Z|ro}}: {{W+|ro|pronume|nt}}
* {{Z|ru}}: {{W+|ru|местоиме́ние|nt}}
* {{Z|rue}}: {{W-|rue|містоназывник|n}}
* {{Z|se}}: {{W-|se|pronomen}}
* {{Z|sa}}: {{W+|sa|सर्वनामन्|nt}}
* {{Z|scn}}: {{W+|scn|prunomu|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|заменица|m|sc=Cyrl}}
*: Latînî: {{W-|sh|zamenica|m}}
* {{Z|sco}}: {{W-|sco|pronoun}}
* {{Z|sk}}: {{W+|sk|zámeno|nt}}
* {{Z|sl}}: {{W+|sl|zaímek|n}}
* {{Z|es}}: {{W+|es|pronombre|n}}
* {{Z|sw}}: {{W-|sw|kiwakilishi}}
* {{Z|sv}}: {{W+|sv|pronomen|nt}}
* {{Z|tg}}: {{W+|tg|ҷонишин|sc=Cyrl}}, {{W-|tg|замир|sc=Cyrl}}
* {{Z|tl}}: {{W+|tl|panghalip}}
* {{Z|ta}}: {{W+|ta|பெயர்ச்சொல்}}
* {{Z|th}}: {{W+|th|สรรพนาม}}
* {{Z|te}}: {{W+|te|సర్వనామము}}
* {{Z|crh}}: {{W-|crh|zamir}}
* {{Z|tt}}: {{W+|tt|алмашлык|sc=Cyrl}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W-|tr|ivazlık}}, {{W+|tr|almaş}}
* {{Z|tk}}: {{W+|tk|çalyşma}}
* {{Z|bo}}: {{W-|bo|མིང་ཚབ}}
* {{Z|ur}}: {{W+|ur|ضمیر|n|tr=zamīr|sc=ur-Arab}}
* {{Z|uk}}: {{W+|uk|займе́нник|n|sc=Cyrl}}
* {{Z|vi}}: {{W+|vi|đại từ}}
* {{Z|vo}}: {{W+|vo|pönop}}
* {{Z|wa}}: {{W+|wa|prono}}
* {{Z|war}}: {{W-|war|imbesngaran}}, {{W-|war|taligngaran}}, {{W-|war|talingaran}}, {{W-|war|talingáran}}
* {{Z|cy}}: {{W-|cy|rhagenw|n}}
* {{Z|km}}: {{W+|km|សព្វនាម}}
* {{Z|yi}}: {{W-|yi|פּראָנאָם|n}}
* {{Z|el}}: {{W+|el|αντωνυμία|m}}
*: Kevn: {{W-|grc|ἀντωνυμία|m}}, {{W-|grc|ἀντώνυμον|nt}}
* {{Z|zu}}: {{W-|zu|isabizwana|c7|c8}}
{{werger-bin}}
:{{werger çavkanî|en|pronoun|beş=Ev qismê Wergerê|oldid=75397330}}
dcl8nf9a10z8y0fwv4n25s1gwe8g9b4
kifş
0
18270
6329815
6243090
2026-08-12T23:02:28Z
Wikihez
7344
6329815
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|kifş}}
{{rengdêr|ku}}
# [[diyar]], [[berçav]], [[xuya]], [[eşkere]], [[averû]], [[zelal]], [[aşkira]]
#* {{jêder-pirtûk|ku|jêgirtin=Lê îro kifş e pir êşiyaye, '''kifş''' e heya tiştekî xirab neke jî nasekine.|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=52|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Di vî halî de, navdêr li gor hejmar û zayendê paşgirên cida werdigirin. Ferqên ji hemûyan '''kifştir''' di paşgirên navdêrên pirhejmar û yên yekhejmar yên nebinavkirî de diyar dibin.|nivîskar=Newzad Hirorî|sernav=Behdînî û kurmancî: Navdêr|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=10&RubricNr=24&ArticleNr=1433|malper=nefel.com|dîrok=22.08.2006}}
#* {{jêder-malper|ku|jêgirtin=Şahiya Newroz, kîso gerî, Zêw û sersal mînakên herî '''kifş''' yên hatina Demsala Biharê û dawî hatina mercên zehmet ya Zivistanê ne.|nivîskar=Hewar Gabar|sernav=Dîroka Şano|url=http://candname.com/diroka-sano/|malper=candname.com|dîrok=11.03.2016}}
==== Formên alternatîv ====
* {{g|ku|kefş}}
* {{g|ku|kivş}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Lê hê li uslûba berê</br>Lê '''kifş''' bibîte ji pencerê</br>Bê û biçit teşbîhê ba}}
==== Jê ====
{{kol3|ku|cure=Jê
|kifş bûn<pos:lêker>
|kifş kirin<pos:lêker>
|kifşbûn<pos:navdêr>
|kifşkirin<pos:navdêr>
|kifşbûyî<pos:rengdêr>
|kifşkirî<pos:rengdêr>
|kifşî
|kifşîtî
|kifşker
}}
==== Etîmolojî ====
Têkildarî ''[[keşf]]''.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|bekannt}}, {{W|de|ganz klar}}, {{W|de|klar}}, {{W|de|offensichtlich}}, {{W|de|öffentlich}}, {{W|de|sichtbar}}, {{W|de|Entdeckung|f}}, {{W|de|Erscheinung|f}}, {{W|de|Expedition|f}}, {{W|de|Prominenz|f}}, {{W|de|bezeichnet}}, {{W|de|Erkundung|f|guman=erê}}, {{W|de|Rekognoszierung|f|guman=erê}}, {{W|de|ausgeprägt|guman=erê}}
* {{Z|ar}}: {{W|ar|اختراع|guman=erê}}, {{W|ar|سافر|guman=erê}}, {{W|ar|منجلى|guman=erê}}
* {{Z|fa}}: {{W+|fa|ابتکار}}, {{W+|fa|مشخص}}, {{W+|fa|نشانه}}, {{W+|fa|قابل دیدن}}
* {{Z|en}}: {{W+|en|apparent}}, {{W+|en|known}}, {{W+|en|obvious}}
* {{Z|tr}}: {{W+|tr|belli}}, {{W+|tr|açıkta}}
{{werger-bin}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# {{rastnivîs|keşf}}
#* {{jêder-malper|ku|jêgirtin=NASA’yê bi daxuyaniyeke taybet '''kifşa''' herî dawî ya li Marsê ragihand.|sernav=LI MARSÊ BI AWAYEKÎ TEQEZ AV HATE DÎTIN|url=https://www.parzemin.com/li-marse-bi-awayeki-teqez-av-hate-ditin/|malper=parzemin.com|dîrok=29.09.2015}}
#* {{jêder-malper|ku|jêgirtin=Li Diyarbekirê bi rêbaza nû '''kifşa''' neftê|nivîskar=Türkan Tosun|sernav=Li Diyarbekirê bi rêbaza nû kifşa neftê|url=https://www.aa.com.tr/kk/abor%C3%AE/li-diyarbekir%C3%AA-bi-r%C3%AAbaza-n%C3%BB-kifsa-neft%C3%AA/1424927|malper=aa.com.tr/kk|dîrok=21.03.2019}}
#* {{jêder-malper|ku|jêgirtin=Li bajarê Kurdan '''kifşa''' mezin!|sernav=FLAŞ – Li bajarê Kurdan kifşa mezin!|url=https://www.rudaw.net/kurmanci/people-places/07072016|malper=rudaw.net|dîrok=07.07.2016}}
=== Navdêr 2 ===
{{navdêr|ku|z=n}}
# (mil, çeng, bal, bask) {{rastnivîs|kefş}}
58k05zn9g6hov73638e5pdnfim8hcbf
6329840
6329815
2026-08-12T23:41:10Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329840
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|kifş}}
{{rengdêr|ku}}
# [[diyar]], [[berçav]], [[xuya]], [[eşkere]], [[averû]], [[zelal]], [[aşkira]]
#* {{jêder-pirtûk|ku|jêgirtin=Lê îro kifş e pir êşiyaye, '''kifş''' e heya tiştekî xirab neke jî nasekine.|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=52|isbn=978-605-5585-41-9}}
#* {{jêder-malper|ku|jêgirtin=Di vî halî de, navdêr li gor hejmar û zayendê paşgirên cida werdigirin. Ferqên ji hemûyan '''kifştir''' di paşgirên navdêrên pirhejmar û yên yekhejmar yên nebinavkirî de diyar dibin.|nivîskar=Newzad Hirorî|sernav=Behdînî û kurmancî: Navdêr|url=http://www.nefel.com/kolumnists/kolumnist_detail.asp?MemberNr=10&RubricNr=24&ArticleNr=1433|malper=nefel.com|dîrok=22.08.2006}}
#* {{jêder-malper|ku|jêgirtin=Şahiya Newroz, kîso gerî, Zêw û sersal mînakên herî '''kifş''' yên hatina Demsala Biharê û dawî hatina mercên zehmet ya Zivistanê ne.|nivîskar=Hewar Gabar|sernav=Dîroka Şano|url=http://candname.com/diroka-sano/|malper=candname.com|dîrok=11.03.2016}}
==== Ji wêjeya klasîk ====
* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Lê hê li uslûba berê</br>Lê '''kifş''' bibîte ji pencerê</br>Bê û biçit teşbîhê ba}}
==== Formên alternatîv ====
* {{g|ku|kefş}}
* {{g|ku|kivş}}
==== Jê ====
{{kol3|ku|cure=Jê
|kifş bûn<pos:lêker>
|kifş kirin<pos:lêker>
|kifşbûn<pos:navdêr>
|kifşkirin<pos:navdêr>
|kifşbûyî<pos:rengdêr>
|kifşkirî<pos:rengdêr>
|kifşî
|kifşîtî
|kifşker
}}
==== Etîmolojî ====
Têkildarî ''[[keşf]]''.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|bekannt}}, {{W|de|ganz klar}}, {{W|de|klar}}, {{W|de|offensichtlich}}, {{W|de|öffentlich}}, {{W|de|sichtbar}}, {{W|de|Entdeckung|f}}, {{W|de|Erscheinung|f}}, {{W|de|Expedition|f}}, {{W|de|Prominenz|f}}, {{W|de|bezeichnet}}, {{W|de|Erkundung|f|guman=erê}}, {{W|de|Rekognoszierung|f|guman=erê}}, {{W|de|ausgeprägt|guman=erê}}
* {{Z|ar}}: {{W|ar|اختراع|guman=erê}}, {{W|ar|سافر|guman=erê}}, {{W|ar|منجلى|guman=erê}}
* {{Z|fa}}: {{W+|fa|ابتکار}}, {{W+|fa|مشخص}}, {{W+|fa|نشانه}}, {{W+|fa|قابل دیدن}}
* {{Z|en}}: {{W+|en|apparent}}, {{W+|en|known}}, {{W+|en|obvious}}
* {{Z|tr}}: {{W+|tr|belli}}, {{W+|tr|açıkta}}
{{werger-bin}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# {{rastnivîs|keşf}}
#* {{jêder-malper|ku|jêgirtin=NASA’yê bi daxuyaniyeke taybet '''kifşa''' herî dawî ya li Marsê ragihand.|sernav=LI MARSÊ BI AWAYEKÎ TEQEZ AV HATE DÎTIN|url=https://www.parzemin.com/li-marse-bi-awayeki-teqez-av-hate-ditin/|malper=parzemin.com|dîrok=29.09.2015}}
#* {{jêder-malper|ku|jêgirtin=Li Diyarbekirê bi rêbaza nû '''kifşa''' neftê|nivîskar=Türkan Tosun|sernav=Li Diyarbekirê bi rêbaza nû kifşa neftê|url=https://www.aa.com.tr/kk/abor%C3%AE/li-diyarbekir%C3%AA-bi-r%C3%AAbaza-n%C3%BB-kifsa-neft%C3%AA/1424927|malper=aa.com.tr/kk|dîrok=21.03.2019}}
#* {{jêder-malper|ku|jêgirtin=Li bajarê Kurdan '''kifşa''' mezin!|sernav=FLAŞ – Li bajarê Kurdan kifşa mezin!|url=https://www.rudaw.net/kurmanci/people-places/07072016|malper=rudaw.net|dîrok=07.07.2016}}
=== Navdêr 2 ===
{{navdêr|ku|z=n}}
# (mil, çeng, bal, bask) {{rastnivîs|kefş}}
0lxco86cuee1abk2he19opakos2gqhg
wetrê
0
19263
6329633
6252043
2026-08-12T14:48:25Z
Bibliophile
1215
/* Hoker */ kirî bi wateya wetrê, dever Sêrt, ji wî kirî (ji wî wetrê)
6329633
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#:''Ji te wetrê ku ez nikarim biçim lê ez dikarim.''
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
==== Reşwendî ====
# [[berê]], [[jê berê]]
#:''Ji wî berê ku kesî ji wî rindtir li ser dinê tune.''
#:''Ji min berê ku ez mirim,çûm .''
==== Formên alternatîv ====
* [[wetirê]]
* [[tirê]]
==== Jê ====
* [[wetrêtî]]
* [[wetrêyî]]
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
5dt212neimzd4yaukvere38iw3zcnbe
6329651
6329633
2026-08-12T15:41:11Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329651
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#:''Ji te wetrê ku ez nikarim biçim lê ez dikarim.''
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
==== Formên alternatîv ====
* [[wetirê]]
* [[tirê]]
==== Jê ====
* [[wetrêtî]]
* [[wetrêyî]]
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Reşwendî ====
# [[berê]], [[jê berê]]
#:''Ji wî berê ku kesî ji wî rindtir li ser dinê tune.''
#:''Ji min berê ku ez mirim,çûm .''
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
imlu0557daav6ifiagbpys8flvtgahi
6329653
6329651
2026-08-12T15:43:13Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6329653
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#: {{nimûne|ku|Ji te wetrê ku ez nikarim biçim lê ez dikarim.}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
# {{e|ku|Reşwendî}} [[berê]], [[jê berê]]
#: {{nimûne|ku|Ji wî wetrê ku kesî ji wî rindtir li ser dinê tune.}}
#: {{nimûne|ku|Ji min wetrê ku ez mirim, çûm.}}
==== Formên alternatîv ====
* {{g|ku|wetirê}}
* {{g|ku|tirê}}
==== Jê ====
* {{g|ku|wetrêtî}}
* {{g|ku|wetrêyî}}
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
ick03gb1pbys8w5m2f6iun90vh0yyze
6329654
6329653
2026-08-12T15:43:25Z
Wikihez
7344
6329654
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#: {{nimûne|ku|Ji te wetrê ku ez nikarim biçim lê ez dikarim.}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
# {{e|ku|Reşwendî}} [[berê]], [[jê berê]]
#: {{nimûne|ku|Ji wî '''wetrê''' ku kesî ji wî rindtir li ser dinê tune.}}
#: {{nimûne|ku|Ji min '''wetrê''' ku ez mirim, çûm.}}
==== Formên alternatîv ====
* {{g|ku|wetirê}}
* {{g|ku|tirê}}
==== Jê ====
* {{g|ku|wetrêtî}}
* {{g|ku|wetrêyî}}
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
sndtu301pedhw7qis0g0smkfoil4v1s
6329656
6329654
2026-08-12T15:54:25Z
Wikihez
7344
+nimûneya bikaranînê bi amûra « [[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]] » (v1.7).
6329656
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#: {{nimûne|ku|Ji te wetrê ku ez nikarim biçim lê ez dikarim.}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
#* {{jêder-websîte|ku|nivîskar=Yakup Gunes|sernav=@GuenesGunes li ser X|websîte=X (berê Twitter)|url=https://x.com/GuenesGunes/status/1871254309079228905|tarîx=2024-12-23|jêgirtin=Dema hat girtin teslîmbu{{sic}}.Ji wî '''wetrê''' herkes lazime teslîm.Ma nizane kurd li zîndana Amedê teslim nebû.}}
# {{e|ku|Reşwendî}} [[berê]], [[jê berê]]
#: {{nimûne|ku|Ji wî '''wetrê''' ku kesî ji wî rindtir li ser dinê tune.}}
#: {{nimûne|ku|Ji min '''wetrê''' ku ez mirim, çûm.}}
==== Formên alternatîv ====
* {{g|ku|wetirê}}
* {{g|ku|tirê}}
==== Jê ====
* {{g|ku|wetrêtî}}
* {{g|ku|wetrêyî}}
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
nnjsnos2h71e087s3e4vjqpftmwh7ng
6329657
6329656
2026-08-12T15:55:06Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329657
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#: {{nimûne|ku|Ji te wetrê ku ez nikarim biçim lê ez dikarim.}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
#* {{jêder-websîte|ku|nivîskar=Yakup Gunes|sernav=@GuenesGunes li ser X|websîte=X (berê Twitter)|url=https://x.com/GuenesGunes/status/1871254309079228905|tarîx=2024-12-23|jêgirtin=Dema hat girtin teslîmbu{{sic}}.Ji wî '''wetrê''' herkes lazime teslîm bîbe.Ma nizane kurd li zîndana Amedê teslim nebû.}}
# {{e|ku|Reşwendî}} [[berê]], [[jê berê]]
#: {{nimûne|ku|Ji wî '''wetrê''' ku kesî ji wî rindtir li ser dinê tune.}}
#: {{nimûne|ku|Ji min '''wetrê''' ku ez mirim, çûm.}}
==== Formên alternatîv ====
* {{g|ku|wetirê}}
* {{g|ku|tirê}}
==== Jê ====
* {{g|ku|wetrêtî}}
* {{g|ku|wetrêyî}}
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
h5iug5lli7i7f03axpdfmh6r14prqy4
6329658
6329657
2026-08-12T16:08:44Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329658
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Hoker ===
{{hoker|ku}}
# [[goya]], [[li gor]], [[kirî]], [[angorî]], li gor [[bawerî|baweriya]] wî
#: {{nimûne|ku|Ji te wetrê ku ez nikarim biçim lê ez dikarim.}}
#* {{jêder-pirtûk|ku|jêgirtin=Ji min '''wetrê''' qulekê pir mezin e.|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=28|isbn=9786257724838}}
#* {{jêder-websîte|ku|nivîskar=Yakup Gunes|sernav=@GuenesGunes|websîte=X (berê Twitter)|url=https://x.com/GuenesGunes/status/1871254309079228905|tarîx=2024-12-23|jêgirtin=Dema hat girtin teslîmbu{{sic}}.Ji wî '''wetrê''' herkes lazime teslîm bîbe.Ma nizane kurd li zîndana Amedê teslim nebû.}}
# {{e|ku|Reşwendî}} [[berê]], [[jê berê]]
#: {{nimûne|ku|Ji wî '''wetrê''' ku kesî ji wî rindtir li ser dinê tune.}}
#: {{nimûne|ku|Ji min '''wetrê''' ku ez mirim, çûm.}}
==== Formên alternatîv ====
* {{g|ku|wetirê}}
* {{g|ku|tirê}}
==== Jê ====
* {{g|ku|wetrêtî}}
* {{g|ku|wetrêyî}}
==== Etîmolojî ====
Ji {{paş|ku|we|-tir}}. Bide ber {{q|ku|jê we bûn}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|anderer}}, {{W+|de|andere}}
* {{Z|fi}}: {{W+|fi|muka}}, {{W+|fi|ikään kuin}}
* {{Z|en}}: {{W+|en|as if}}, {{W+|en|supposedly}}
* {{Z|tr}}: {{W+|tr|sanki}}, {{W+|tr|başka}}
{{werger-bin}}
5p511dmh9d8a5w2purae9wswoipq577
Wîkîferheng:ceribandin
4
23016
6329755
6328211
2026-08-12T21:22:19Z
Wikihez
7344
/* Lêker */
6329755
wikitext
text/x-wiki
{{/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|tr|t=-|jêgirtin=Jêgirtinek ji kitêbekê.|nivîskar=Rojen Barnas|sernav=Sîlvan/ Silîvan / FARQÎN|dîrok=2013|weşanxane=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.
sr0zaxsgy86k54jpx197mtj49rmnfop
6329756
6329755
2026-08-12T21:22:35Z
Wikihez
7344
/* Lêker */
6329756
wikitext
text/x-wiki
{{/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|tr|t=-|jêgirtin=Jêgirtinek ji kitêbekê.|nivîskar=Rojen Barnas|sernav=Sîlvan/ Silîvan / FARQÎN|sal=2013|weşanxane=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.
d08qa5d6rmmauhm6lznltp0fsdl7egj
tarîx
0
23283
6329644
6326319
2026-08-12T15:26:29Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329644
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[hedîse|Hedîseyên]] [[dem]]ên [[berê]].
#: {{hevmane|ku|dîrok|mêjû}}
#: {{mk|ku|'''Tarîx''' xwe dubare dike.|Tiştên ku berê qewimîne dîsan diqewimin.|birêz=1}}
#* {{nimûne?|ku}}
# [[ilm|Ilmê]] li ser [[dem]]ên [[berê]].
#: {{hevmane|ku|dîrok|mêjû}}
#: {{mk|ku|Şerefxanê Bedlîsî wek bavê '''tarîxa''' kurdan tê nasîn.}}
#* {{nimûne?|ku}}
# Dema ku tiştek [[qewimîn|qewimiye]] yan hatiye kirin.
#: {{mk|ku|Ev name di '''tarîxa''' 1.8.2006 de hatiye nivîsîn.}}
#: {{mk|ku|'''Tarîxa''' derketina vê kitêbê ne diyar e.|Li ser vê kitêbê nehatiye nivîsîn ka kengî hatiye çapkirin.|birêz=1}}
#* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Lewra ko dema ji xeybê fek bû</br>'''Tarîx''' hezar û şêst û yek bû</br>Îsal gihişte çill û çaran}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|terîx}}
* {{g|ku|teirîx}}
==== Jê ====
{{kol3|ku|cure=Jê
|tarîxî
|tarîxçe
|tarîxnas
|tarîxnasî
|tarîxnivîs
|tarîxnivîsî
|tarîxvan
|tarîxvanî
|tarîxzan
|tarîxzanî
}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|تَارِيخ}}.
==== Bide ber ====
* {{g|ku|wext}}
* {{g|ku|dem}}
* {{g|ku|kêlîk}}
==== Werger ====
{{werger-ser|hedîseyên berê û ilmê li ser wan|id=ilmê hedîseyên berê}}
* {{Z|af}}: {{W+|af|geskiedenis}}
* {{Z|sq}}: {{W+|sq|histori|m}}
* {{Z|de}}: {{W+|de|Geschichte|m}}, {{W+|de|Historie|m}}
* {{Z|alt}}: {{W-|alt|тӱӱки}}, {{W-|alt|тарых}}
* {{Z|am}}: {{W-|am|ታሪክ}}
* {{Z|an}}: {{W-|an|istoria|m}}
* {{Z|arc}}:
*: {{Z|syc}}: {{W-|syc|ܬܫܥܝܬܐ|m|tr=tašʿīṯā}}
* {{Z|as}}: {{W-|as|ইতিহাস}}
* {{Z|ast}}: {{W+|ast|historia|m}}, {{W+|ast|hestoria|m}}
* {{Z|aot}}: {{W-|aot|itihas}}
* {{Z|av}}: {{W-|av|тарих}}
* {{Z|az}}:
*: Latînî: {{W+|az|tarix}}
*: {{Z|az}}: {{W-|az|تاریخ|tr=tārikh}}
* {{Z|eu}}: {{W+|eu|historia}}
* {{Z|ba}}: {{W-|ba|тарих}}
* {{Z|be}}: {{W-|be|гісто́рыя|m}}
* {{Z|bn}}: {{W+|bn|ইতিহাস}}
* {{Z|bcl}}: {{W-|bcl|uusipon}}
* {{Z|br}}: {{W+|br|istor|m}}
* {{Z|bg}}: {{W-|bg|исто́рия|m}}
* {{Z|my}}: {{W+|my|သမိုင်း}}
* {{Z|bua}}: {{W-|bua|түүхэ}}
* {{Z|cs}}: {{W+|cs|dějiny|m-p}}, {{W+|cs|historie|m}}
* {{Z|chr}}: {{W-|chr|ᎧᏃᎮᏍᎩ}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|歷史|tr=lik6 si2}}
*: {{Z|dng}}: {{W-|dng|лисы}}
*: {{Z|gan}}: {{W-|gan|歷史|tr=lit6 'si3}}
*: {{Z|hak}}: {{W-|hak|歷史|tr=li̍t-sṳ́}}
*: {{Z|cmn}}: {{W+|cmn|歷史|tr=lìshǐ}}
*: {{Z|cdo}}: {{W-|cdo|歷史|tr=lĭk-sṳ̄}}
*: {{Z|nan}}: {{W+|nan|歷史|tr=le̍k-sú}}
*: {{Z|wuu}}: {{W-|wuu|歷史|tr=liq sr}}
* {{Z|cv}}: {{W-|cv|истори}}
* {{Z|da}}: {{W+|da|historie|g}}
* {{Z|id}}: {{W+|id|sejarah}}, {{W+|id|histori}}
* {{Z|ar}}: {{W+|ar|تَارِيخ|n}}
*: {{Z|arz}}: {{W-|arz|تاريخ|n|tr=tarīḵ}}
* {{Z|hy}}: {{W+|hy|պատմություն}}
* {{Z|eo}}: {{W+|eo|historio}}
* {{Z|et}}: {{W+|et|ajalugu}}
* {{Z|fa}}: {{W+|fa|تاریخ|tr=târix}}
* {{Z|fo}}: {{W-|fo|søga|m}}
* {{Z|fi}}: {{W+|fi|historia}}
* {{Z|fr}}: {{W+|fr|histoire|m}}
* {{Z|fur}}: {{W-|fur|istorie|m}}, {{W-|fur|storie|m}}
* {{Z|fy}}: {{W+|fy|skiednis|g}}
* {{Z|gd}}: {{W-|gd|eachdraidh|m}}
* {{Z|gag}}: {{W-|gag|istoriya}}
* {{Z|gl}}: {{W+|gl|historia|m}}
* {{Z|gu}}: {{W+|gu|ઇતિહાસ|n}}
* {{Z|ka}}: {{W-|ka|ისტორია}}
* {{Z|ht}}: {{W-|ht|istwa}}
* {{Z|mba}}: {{W-|mba|lasaysayan}}
* {{Z|hi}}: {{W+|hi|इतिहास|n}}, {{W-|hi|तारीख़|m}}
* {{Z|hil}}: {{W-|hil|kasaysayan}}, {{W-|hil|historya}}
* {{Z|nl}}: {{W+|nl|geschiedenis|m}}, {{W+|nl|historie|m}}
* {{Z|he}}: {{W+|he|היסטוריה|m|tr=história|cuda=הִסְטוֹרְיָה / היסטוריה}}
* {{Z|io}}: {{W+|io|historio}}
* {{Z|ilo}}: {{W-|ilo|pakasaritaan}}
* {{Z|ang}}: {{W-|ang|stǣr|nt}}
* {{Z|en}}: {{W+|en|history}}
* {{Z|ia}}: {{W-|ia|historia}}
* {{Z|ga}}: {{W+|ga|stair|m}}
* {{Z|ist}}: {{W-|ist|stuoria|m}}
* {{Z|it}}: {{W+|it|storia|m}}
* {{Z|is}}: {{W+|is|saga|m}}
* {{Z|ja}}: {{W+|ja|歴史|tr=れきし, rekishi}}, {{W+|ja|沿革|tr=えんかく, enkaku}}
* {{Z|xal}}: {{W-|xal|тууҗ}}
* {{Z|kn}}: {{W+|kn|ಇತಿಹಾಸ}}
* {{Z|pam}}: {{W-|pam|amlat}}
* {{Z|ca}}: {{W+|ca|història|m}}
* {{Z|ky}}: {{W+|ky|тарых}}
* {{Z|si}}: {{W+|si|ඉතිහාසය}}, {{W-|si|පුරාවෘත්තය}}
* {{Z|ko}}: {{W+|ko|역사}}, {{W+|ko|력사}}
* {{Z|co}}: {{W+|co|storia}}
* {{Z|kum}}: {{W-|kum|тарих|tr=tarix}}
* {{Z|la}}: {{W+|la|historia|m}}
* {{Z|lv}}: {{W-|lv|vēsture|m}}
* {{Z|lo}}: {{W+|lo|ປະຫວັດສາດ}}, {{W-|lo|ປະຫວັດ}}
* {{Z|lez}}: {{W-|lez|тарих}}
* {{Z|lij}}: {{W-|lij|stöia}}
* {{Z|lt}}: {{W+|lt|istorija|m}}
* {{Z|lg}}: {{W-|lg|ebyafaayo}}
* {{Z|mk}}: {{W-|mk|историја|m}}
* {{Z|ml}}: {{W+|ml|ചരിത്രം}}
* {{Z|ms}}: {{W+|ms|sejarah}}
* {{Z|mt}}: {{W-|mt|storja|m}}
* {{Z|mnc}}: {{W-|mnc|ᠰᡠᡩᡠᡵᡳ}}
* {{Z|mr}}: {{W+|mr|इतिहास}}
* {{Z|hu}}: {{W+|hu|történelem}}, {{W+|hu|múlt}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|түүх}}
*: Mongolî: {{W-|mn|ᠲᠡᠦᠬᠡ}}
* {{Z|na}}: {{W+|na|ekadaedaenigawae}}
* {{Z|ne}}: {{W+|ne|इतिहास}}
* {{Z|no}}: {{W+|no|historie|m}}
* {{Z|oc}}: {{W+|oc|istòria|m}}
* {{Z|or}}: {{W-|or|ଇତିହାସ}}
* {{Z|om}}: {{W-|om|seenaa}}
* {{Z|os}}: {{W-|os|истори}}
* {{Z|ota}}: {{W-|ota|تاریخ|tr=tarih}}
* {{Z|ug}}: {{W-|ug|تارىخ}}
* {{Z|uz}}: {{W+|uz|tarix}}
* {{Z|pwn}}: {{W-|pwn|likisi}}
* {{Z|ps}}: {{W+|ps|تاريخ|n|tr=tāríx}}
* {{Z|pih}}: {{W-|pih|histrei}}
* {{Z|pl}}: {{W+|pl|historia|m}}, {{W+|pl|dzieje}}
* {{Z|pt}}: {{W+|pt|histórico|n}}
* {{Z|prg}}: {{W-|prg|istōrija}}
* {{Z|pa}}: {{W+|pa|ਇਤਿਹਾਸ}}
* {{Z|kk}}: {{W+|kk|тарих}}
* {{Z|rm}}: {{W-|rm|istorgia|m}}
* {{Z|ro}}: {{W+|ro|istorie}}
* {{Z|ru}}: {{W-|ru|исто́рия|m}}
* {{Z|rue}}: {{W-|rue|істо́рія|m}}
* {{Z|sgs}}: {{W-|sgs|istuorėjė|m}}
* {{Z|sa}}: {{W+|sa|इतिहास|n}}
* {{Z|ceb}}: {{W-|ceb|kasaysayan}}
* {{Z|scn}}: {{W+|scn|storia|m}}
* {{Z|szl}}: {{W-|szl|gyszichta|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|хѝсто̄рија|m}}, {{W-|sh|ѝсто̄рија|m}}, {{W-|sh|по̏вије̄ст|m}}, {{W-|sh|по̏ве̄ст|m}}
*: Latînî: {{W+|sh|hìstōrija|m}}, {{W+|sh|ìstōrija|m}}, {{W+|sh|pȍvijēst|m}}, {{W+|sh|pȍvēst|m}}
* {{Z|sk}}: {{W-|sk|dejiny|m-p}}, {{W-|sk|história|m}}
* {{Z|sl}}: {{W+|sl|zgodovina|m}}, {{W+|sl|preteklost|m}}
* {{Z|so}}: {{W-|so|taariikh}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|stawizny|p}}
* {{Z|es}}: {{W+|es|historia|m}}
* {{Z|sw}}: {{W+|sw|historia}}
* {{Z|sv}}: {{W+|sv|historia|g}}
* {{Z|shn}}: {{W-|shn|ပိုၼ်း}}
* {{Z|tab}}: {{W-|tab|тарих}}
* {{Z|tg}}: {{W+|tg|таърих}}
* {{Z|tl}}: {{W+|tl|kasaysayan}}
* {{Z|ta}}: {{W+|ta|வரலாறு}}, {{W+|ta|சரித்திரம்}}
* {{Z|th}}: {{W+|th|ประวัติศาสตร์}}, {{W+|th|ประวัติ}}
* {{Z|te}}: {{W+|te|చరిత్ర}}, {{W-|te|చరితం}}, {{W+|te|చరిత}}
* {{Z|crh}}: {{W-|crh|tarih}}
* {{Z|tt}}: {{W+|tt|тарих}}
* {{Z|ti}}: {{W+|ti|ታሪኽ}}
* {{Z|tr}}: {{W+|tr|tarih}}, {{W+|tr|ötük}}
* {{Z|tk}}: {{W-|tk|taryh}}
* {{Z|bo}}: {{W-|bo|ལོ་རྒྱུས}}
* {{Z|tpi}}: {{W-|tpi|histori}}
* {{Z|tyv}}: {{W-|tyv|төөгү}}
* {{Z|ur}}: {{W+|ur|اتہاس|n|tr=itihās}}, {{W+|ur|تاریخ|m|tr=tārīx}}
* {{Z|uk}}: {{W-|uk|істо́рія|m}}
* {{Z|vec}}: {{W-|vec|istoria|m}}, {{W+|vec|storia|m}}
* {{Z|vi}}: {{W+|vi|lịch sử}}
* {{Z|war}}: {{W-|war|kasaysayan}}
* {{Z|cy}}: {{W+|cy|hanes}}
* {{Z|wym}}: {{W-|wym|gyśicht|m}}
* {{Z|wo}}: {{W+|wo|taariix}}
* {{Z|km}}: {{W-|km|ប្រវត្តិសាស្ត្រ}}, {{W+|km|ប្រវត្តិ}}
* {{Z|sah}}: {{W-|sah|история}}, {{W-|sah|остуоруйа}}
* {{Z|yi}}: {{W+|yi|געשיכטע|m}}
* {{Z|el}}: {{W+|el|ιστορία|m}}
*: Kevn: {{W-|grc|ἱστορία|m}}
{{werger-bin}}
:{{werger çavkanî|en|history|beş=Ev qismê Wergerê|oldid=75799073}}
{{werger-ser|dema ku tiştek [[qewimîn|qewimiye]] yan hatiye kirin}}
* {{Z|de}}: {{W+|de|Datum|n}}, {{W+|de|Zeitpunkt|m}}
* {{Z|br}}: {{W+|br|deiziad|m}}, deiziadoù {{p}}
* {{Z|id}}: {{W+|id|tanggal}}
* {{Z|fi}}: {{W+|fi|päiväys}}, {{W+|fi|päivämäärä}}
* {{Z|fr}}: {{W+|fr|date|f}}
* {{Z|nl}}: {{W+|nl|datum|m}}
* {{Z|en}}: {{W-|en|date|tr=time}}
* {{Z|ja}}: {{W+|ja|日付|tr=ひづけ, hitzuke}}
* {{Z|pl}}: {{W+|pl|data|f}}
* {{Z|ro}}: {{W+|ro|dată|f}}
* {{Z|sh}}: {{W+|sh|datum|m}}
* {{Z|sh}}:
*: Kirîlî: [[датум]] {{mê}}
*: Latînî: {{W+|la|datum|m}}
* {{Z|sv}}: {{W+|sv|datum|m}}
* {{Z|te}}: {{W-|te|తేది|tr=taedi}}
* {{Z|tr}}: {{W+|tr|tarih}}, {{W+|tr|gün}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|تاریخ}}
losovy948gpjgkeru2f9f2oicp5tfdz
6329645
6329644
2026-08-12T15:27:36Z
Wikihez
7344
+nimûneya bikaranînê bi amûra « [[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]] » (v1.7).
6329645
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[hedîse|Hedîseyên]] [[dem]]ên [[berê]].
#: {{hevmane|ku|dîrok|mêjû}}
#: {{mk|ku|'''Tarîx''' xwe dubare dike.|Tiştên ku berê qewimîne dîsan diqewimin.|birêz=1}}
#* {{jêder-kovar|ku|nivîskar=Hayreddin Kızıl|sernav=Bawerîyên Gelêrî di Adat û Rusûmatnameê Tewayifê Ekradiye ya Mela Mehmûdê Bazîdî da|kovar=Kurdiyat|hejmar=13|sal=2026|rûpel=37|url=https://dergipark.org.tr/tr/pub/kurdiyat/article/1849076|jêgirtin=Mela Mehmûdê Bazîdî li ser ziman, '''tarîx''' û civaka Kurdan, folklor û edebiyata wan berhem nivîsîne yan jî wergerandine.}}
# [[ilm|Ilmê]] li ser [[dem]]ên [[berê]].
#: {{hevmane|ku|dîrok|mêjû}}
#: {{mk|ku|Şerefxanê Bedlîsî wek bavê '''tarîxa''' kurdan tê nasîn.}}
#* {{nimûne?|ku}}
# Dema ku tiştek [[qewimîn|qewimiye]] yan hatiye kirin.
#: {{mk|ku|Ev name di '''tarîxa''' 1.8.2006 de hatiye nivîsîn.}}
#: {{mk|ku|'''Tarîxa''' derketina vê kitêbê ne diyar e.|Li ser vê kitêbê nehatiye nivîsîn ka kengî hatiye çapkirin.|birêz=1}}
#* {{jêder|ku|{{Jêgirtin/Ehmedê Xanî/Mem û Zîn}}|jêgirtin=Lewra ko dema ji xeybê fek bû</br>'''Tarîx''' hezar û şêst û yek bû</br>Îsal gihişte çill û çaran}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|terîx}}
* {{g|ku|teirîx}}
==== Jê ====
{{kol3|ku|cure=Jê
|tarîxî
|tarîxçe
|tarîxnas
|tarîxnasî
|tarîxnivîs
|tarîxnivîsî
|tarîxvan
|tarîxvanî
|tarîxzan
|tarîxzanî
}}
==== Etîmolojî ====
Ji {{deyn|ar|ku|تَارِيخ}}.
==== Bide ber ====
* {{g|ku|wext}}
* {{g|ku|dem}}
* {{g|ku|kêlîk}}
==== Werger ====
{{werger-ser|hedîseyên berê û ilmê li ser wan|id=ilmê hedîseyên berê}}
* {{Z|af}}: {{W+|af|geskiedenis}}
* {{Z|sq}}: {{W+|sq|histori|m}}
* {{Z|de}}: {{W+|de|Geschichte|m}}, {{W+|de|Historie|m}}
* {{Z|alt}}: {{W-|alt|тӱӱки}}, {{W-|alt|тарых}}
* {{Z|am}}: {{W-|am|ታሪክ}}
* {{Z|an}}: {{W-|an|istoria|m}}
* {{Z|arc}}:
*: {{Z|syc}}: {{W-|syc|ܬܫܥܝܬܐ|m|tr=tašʿīṯā}}
* {{Z|as}}: {{W-|as|ইতিহাস}}
* {{Z|ast}}: {{W+|ast|historia|m}}, {{W+|ast|hestoria|m}}
* {{Z|aot}}: {{W-|aot|itihas}}
* {{Z|av}}: {{W-|av|тарих}}
* {{Z|az}}:
*: Latînî: {{W+|az|tarix}}
*: {{Z|az}}: {{W-|az|تاریخ|tr=tārikh}}
* {{Z|eu}}: {{W+|eu|historia}}
* {{Z|ba}}: {{W-|ba|тарих}}
* {{Z|be}}: {{W-|be|гісто́рыя|m}}
* {{Z|bn}}: {{W+|bn|ইতিহাস}}
* {{Z|bcl}}: {{W-|bcl|uusipon}}
* {{Z|br}}: {{W+|br|istor|m}}
* {{Z|bg}}: {{W-|bg|исто́рия|m}}
* {{Z|my}}: {{W+|my|သမိုင်း}}
* {{Z|bua}}: {{W-|bua|түүхэ}}
* {{Z|cs}}: {{W+|cs|dějiny|m-p}}, {{W+|cs|historie|m}}
* {{Z|chr}}: {{W-|chr|ᎧᏃᎮᏍᎩ}}
* {{Z|zh}}:
*: {{Z|yue}}: {{W-|yue|歷史|tr=lik6 si2}}
*: {{Z|dng}}: {{W-|dng|лисы}}
*: {{Z|gan}}: {{W-|gan|歷史|tr=lit6 'si3}}
*: {{Z|hak}}: {{W-|hak|歷史|tr=li̍t-sṳ́}}
*: {{Z|cmn}}: {{W+|cmn|歷史|tr=lìshǐ}}
*: {{Z|cdo}}: {{W-|cdo|歷史|tr=lĭk-sṳ̄}}
*: {{Z|nan}}: {{W+|nan|歷史|tr=le̍k-sú}}
*: {{Z|wuu}}: {{W-|wuu|歷史|tr=liq sr}}
* {{Z|cv}}: {{W-|cv|истори}}
* {{Z|da}}: {{W+|da|historie|g}}
* {{Z|id}}: {{W+|id|sejarah}}, {{W+|id|histori}}
* {{Z|ar}}: {{W+|ar|تَارِيخ|n}}
*: {{Z|arz}}: {{W-|arz|تاريخ|n|tr=tarīḵ}}
* {{Z|hy}}: {{W+|hy|պատմություն}}
* {{Z|eo}}: {{W+|eo|historio}}
* {{Z|et}}: {{W+|et|ajalugu}}
* {{Z|fa}}: {{W+|fa|تاریخ|tr=târix}}
* {{Z|fo}}: {{W-|fo|søga|m}}
* {{Z|fi}}: {{W+|fi|historia}}
* {{Z|fr}}: {{W+|fr|histoire|m}}
* {{Z|fur}}: {{W-|fur|istorie|m}}, {{W-|fur|storie|m}}
* {{Z|fy}}: {{W+|fy|skiednis|g}}
* {{Z|gd}}: {{W-|gd|eachdraidh|m}}
* {{Z|gag}}: {{W-|gag|istoriya}}
* {{Z|gl}}: {{W+|gl|historia|m}}
* {{Z|gu}}: {{W+|gu|ઇતિહાસ|n}}
* {{Z|ka}}: {{W-|ka|ისტორია}}
* {{Z|ht}}: {{W-|ht|istwa}}
* {{Z|mba}}: {{W-|mba|lasaysayan}}
* {{Z|hi}}: {{W+|hi|इतिहास|n}}, {{W-|hi|तारीख़|m}}
* {{Z|hil}}: {{W-|hil|kasaysayan}}, {{W-|hil|historya}}
* {{Z|nl}}: {{W+|nl|geschiedenis|m}}, {{W+|nl|historie|m}}
* {{Z|he}}: {{W+|he|היסטוריה|m|tr=história|cuda=הִסְטוֹרְיָה / היסטוריה}}
* {{Z|io}}: {{W+|io|historio}}
* {{Z|ilo}}: {{W-|ilo|pakasaritaan}}
* {{Z|ang}}: {{W-|ang|stǣr|nt}}
* {{Z|en}}: {{W+|en|history}}
* {{Z|ia}}: {{W-|ia|historia}}
* {{Z|ga}}: {{W+|ga|stair|m}}
* {{Z|ist}}: {{W-|ist|stuoria|m}}
* {{Z|it}}: {{W+|it|storia|m}}
* {{Z|is}}: {{W+|is|saga|m}}
* {{Z|ja}}: {{W+|ja|歴史|tr=れきし, rekishi}}, {{W+|ja|沿革|tr=えんかく, enkaku}}
* {{Z|xal}}: {{W-|xal|тууҗ}}
* {{Z|kn}}: {{W+|kn|ಇತಿಹಾಸ}}
* {{Z|pam}}: {{W-|pam|amlat}}
* {{Z|ca}}: {{W+|ca|història|m}}
* {{Z|ky}}: {{W+|ky|тарых}}
* {{Z|si}}: {{W+|si|ඉතිහාසය}}, {{W-|si|පුරාවෘත්තය}}
* {{Z|ko}}: {{W+|ko|역사}}, {{W+|ko|력사}}
* {{Z|co}}: {{W+|co|storia}}
* {{Z|kum}}: {{W-|kum|тарих|tr=tarix}}
* {{Z|la}}: {{W+|la|historia|m}}
* {{Z|lv}}: {{W-|lv|vēsture|m}}
* {{Z|lo}}: {{W+|lo|ປະຫວັດສາດ}}, {{W-|lo|ປະຫວັດ}}
* {{Z|lez}}: {{W-|lez|тарих}}
* {{Z|lij}}: {{W-|lij|stöia}}
* {{Z|lt}}: {{W+|lt|istorija|m}}
* {{Z|lg}}: {{W-|lg|ebyafaayo}}
* {{Z|mk}}: {{W-|mk|историја|m}}
* {{Z|ml}}: {{W+|ml|ചരിത്രം}}
* {{Z|ms}}: {{W+|ms|sejarah}}
* {{Z|mt}}: {{W-|mt|storja|m}}
* {{Z|mnc}}: {{W-|mnc|ᠰᡠᡩᡠᡵᡳ}}
* {{Z|mr}}: {{W+|mr|इतिहास}}
* {{Z|hu}}: {{W+|hu|történelem}}, {{W+|hu|múlt}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|түүх}}
*: Mongolî: {{W-|mn|ᠲᠡᠦᠬᠡ}}
* {{Z|na}}: {{W+|na|ekadaedaenigawae}}
* {{Z|ne}}: {{W+|ne|इतिहास}}
* {{Z|no}}: {{W+|no|historie|m}}
* {{Z|oc}}: {{W+|oc|istòria|m}}
* {{Z|or}}: {{W-|or|ଇତିହାସ}}
* {{Z|om}}: {{W-|om|seenaa}}
* {{Z|os}}: {{W-|os|истори}}
* {{Z|ota}}: {{W-|ota|تاریخ|tr=tarih}}
* {{Z|ug}}: {{W-|ug|تارىخ}}
* {{Z|uz}}: {{W+|uz|tarix}}
* {{Z|pwn}}: {{W-|pwn|likisi}}
* {{Z|ps}}: {{W+|ps|تاريخ|n|tr=tāríx}}
* {{Z|pih}}: {{W-|pih|histrei}}
* {{Z|pl}}: {{W+|pl|historia|m}}, {{W+|pl|dzieje}}
* {{Z|pt}}: {{W+|pt|histórico|n}}
* {{Z|prg}}: {{W-|prg|istōrija}}
* {{Z|pa}}: {{W+|pa|ਇਤਿਹਾਸ}}
* {{Z|kk}}: {{W+|kk|тарих}}
* {{Z|rm}}: {{W-|rm|istorgia|m}}
* {{Z|ro}}: {{W+|ro|istorie}}
* {{Z|ru}}: {{W-|ru|исто́рия|m}}
* {{Z|rue}}: {{W-|rue|істо́рія|m}}
* {{Z|sgs}}: {{W-|sgs|istuorėjė|m}}
* {{Z|sa}}: {{W+|sa|इतिहास|n}}
* {{Z|ceb}}: {{W-|ceb|kasaysayan}}
* {{Z|scn}}: {{W+|scn|storia|m}}
* {{Z|szl}}: {{W-|szl|gyszichta|m}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|хѝсто̄рија|m}}, {{W-|sh|ѝсто̄рија|m}}, {{W-|sh|по̏вије̄ст|m}}, {{W-|sh|по̏ве̄ст|m}}
*: Latînî: {{W+|sh|hìstōrija|m}}, {{W+|sh|ìstōrija|m}}, {{W+|sh|pȍvijēst|m}}, {{W+|sh|pȍvēst|m}}
* {{Z|sk}}: {{W-|sk|dejiny|m-p}}, {{W-|sk|história|m}}
* {{Z|sl}}: {{W+|sl|zgodovina|m}}, {{W+|sl|preteklost|m}}
* {{Z|so}}: {{W-|so|taariikh}}
* Sorbî:
*: {{Z|dsb}}: {{W-|dsb|stawizny|p}}
* {{Z|es}}: {{W+|es|historia|m}}
* {{Z|sw}}: {{W+|sw|historia}}
* {{Z|sv}}: {{W+|sv|historia|g}}
* {{Z|shn}}: {{W-|shn|ပိုၼ်း}}
* {{Z|tab}}: {{W-|tab|тарих}}
* {{Z|tg}}: {{W+|tg|таърих}}
* {{Z|tl}}: {{W+|tl|kasaysayan}}
* {{Z|ta}}: {{W+|ta|வரலாறு}}, {{W+|ta|சரித்திரம்}}
* {{Z|th}}: {{W+|th|ประวัติศาสตร์}}, {{W+|th|ประวัติ}}
* {{Z|te}}: {{W+|te|చరిత్ర}}, {{W-|te|చరితం}}, {{W+|te|చరిత}}
* {{Z|crh}}: {{W-|crh|tarih}}
* {{Z|tt}}: {{W+|tt|тарих}}
* {{Z|ti}}: {{W+|ti|ታሪኽ}}
* {{Z|tr}}: {{W+|tr|tarih}}, {{W+|tr|ötük}}
* {{Z|tk}}: {{W-|tk|taryh}}
* {{Z|bo}}: {{W-|bo|ལོ་རྒྱུས}}
* {{Z|tpi}}: {{W-|tpi|histori}}
* {{Z|tyv}}: {{W-|tyv|төөгү}}
* {{Z|ur}}: {{W+|ur|اتہاس|n|tr=itihās}}, {{W+|ur|تاریخ|m|tr=tārīx}}
* {{Z|uk}}: {{W-|uk|істо́рія|m}}
* {{Z|vec}}: {{W-|vec|istoria|m}}, {{W+|vec|storia|m}}
* {{Z|vi}}: {{W+|vi|lịch sử}}
* {{Z|war}}: {{W-|war|kasaysayan}}
* {{Z|cy}}: {{W+|cy|hanes}}
* {{Z|wym}}: {{W-|wym|gyśicht|m}}
* {{Z|wo}}: {{W+|wo|taariix}}
* {{Z|km}}: {{W-|km|ប្រវត្តិសាស្ត្រ}}, {{W+|km|ប្រវត្តិ}}
* {{Z|sah}}: {{W-|sah|история}}, {{W-|sah|остуоруйа}}
* {{Z|yi}}: {{W+|yi|געשיכטע|m}}
* {{Z|el}}: {{W+|el|ιστορία|m}}
*: Kevn: {{W-|grc|ἱστορία|m}}
{{werger-bin}}
:{{werger çavkanî|en|history|beş=Ev qismê Wergerê|oldid=75799073}}
{{werger-ser|dema ku tiştek [[qewimîn|qewimiye]] yan hatiye kirin}}
* {{Z|de}}: {{W+|de|Datum|n}}, {{W+|de|Zeitpunkt|m}}
* {{Z|br}}: {{W+|br|deiziad|m}}, deiziadoù {{p}}
* {{Z|id}}: {{W+|id|tanggal}}
* {{Z|fi}}: {{W+|fi|päiväys}}, {{W+|fi|päivämäärä}}
* {{Z|fr}}: {{W+|fr|date|f}}
* {{Z|nl}}: {{W+|nl|datum|m}}
* {{Z|en}}: {{W-|en|date|tr=time}}
* {{Z|ja}}: {{W+|ja|日付|tr=ひづけ, hitzuke}}
* {{Z|pl}}: {{W+|pl|data|f}}
* {{Z|ro}}: {{W+|ro|dată|f}}
* {{Z|sh}}: {{W+|sh|datum|m}}
* {{Z|sh}}:
*: Kirîlî: [[датум]] {{mê}}
*: Latînî: {{W+|la|datum|m}}
* {{Z|sv}}: {{W+|sv|datum|m}}
* {{Z|te}}: {{W-|te|తేది|tr=taedi}}
* {{Z|tr}}: {{W+|tr|tarih}}, {{W+|tr|gün}}
{{werger-bin}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# {{ckb-Arab|تاریخ}}
mxc3r0pcns876n3byczoqpcnjcqgju6
wawik
0
24606
6329727
6244612
2026-08-12T20:59:59Z
Dûrzan
875
6329727
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Golden_Jackal_sa02.jpg|thumb|Wawikek]]
{{navdêr|ku|z=n}}
# [[çeqel|Çeqel]], [[torî]], [[şeqel]], <br>[[cûn]]ek [[se]]yên [[kûvî]] ye.
#* {{bêmînak|ku}}
# {{f|ku|mecazî}} [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[lêbker]], [[pîs]], [[pespaye]], [[kone]], [[rûvî]]
#* {{bêmînak|ku}}
==== Formên alternatîv ====
* [[wawîk]]
* [[wawk]]
==== Navê zanistî ====
* ''[[Canis aureus]]''
==== Etîmolojî ====
Ji {{ji|ar|ku|واوي|tr=wawî}} + kurdî [[-ik]]
==== Jê ====
* [[çeqelane]]
* [[çeqelî]]
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|jakkals}}
* {{Z|de}}: {{W+|de|Schakal|m}}
* {{Z|ar}}: {{W-|ar|ابن اوی}}
* {{Z|eo}}: {{W-|eo|ŝakalo}}
* {{Z|fa}}: {{W+|fa|توره}}, {{W+|fa|شغال}}, {{W+|fa|کفتار}}
* {{Z|fi}}: {{W+|fi|sakaali}}
* {{Z|fr}}: {{W+|fr|chacal|m}}
* {{Z|nl}}: {{W+|nl|jakhals|m}}
* {{Z|en}}: {{W+|en|jackal}}
* {{Z|ca}}: {{W+|ca|xacal}}
* {{Z|pt}}: {{W+|pt|chacal}}
* {{Z|es}}: {{W+|es|chacal|m}}
* {{Z|sw}}: {{W+|sw|mbweha}}
* {{Z|sv}}: {{W+|sv|schakal}}
* {{Z|tr}}: {{W+|tr|çakal}}
{{werger-bin}}
{{mijar|ku|guhandar}}
i2jxxvvs1i5wylj005uqz12fxq64rju
6329759
6329727
2026-08-12T21:32:44Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6329759
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Golden_Jackal_sa02.jpg|thumb|Wawikek]]
{{navdêr|ku|z=n}}
# {{mijar|ku|guhandar}} [[cûn|Cûn]]ek [[se]]yên [[kûvî]] ye.
#: {{hevmane|ku|çeqel|torî|şeqel}}
#* {{bêmînak|ku}}
# {{f|ku|mecazî}} [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[lêbker]], [[pîs]], [[pespaye]], [[kone]], [[rûvî]]
#* {{bêmînak|ku}}
==== Formên alternatîv ====
* {{g|ku|wawîk}}
* {{g|ku|wawk}}
==== Navê zanistî ====
* ''[[Canis aureus]]''
==== Etîmolojî ====
Ji {{qf|ku|ar:واوي<tr:wawî>|-ik}}.
==== Jê ====
* {{g|ku|çeqelane}}
* {{g|ku|çeqelî}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|jakkals}}
* {{Z|de}}: {{W+|de|Schakal|m}}
* {{Z|ar}}: {{W-|ar|ابن اوی}}
* {{Z|eo}}: {{W-|eo|ŝakalo}}
* {{Z|fa}}: {{W+|fa|توره}}, {{W+|fa|شغال}}, {{W+|fa|کفتار}}
* {{Z|fi}}: {{W+|fi|sakaali}}
* {{Z|fr}}: {{W+|fr|chacal|m}}
* {{Z|nl}}: {{W+|nl|jakhals|m}}
* {{Z|en}}: {{W+|en|jackal}}
* {{Z|ca}}: {{W+|ca|xacal}}
* {{Z|pt}}: {{W+|pt|chacal}}
* {{Z|es}}: {{W+|es|chacal|m}}
* {{Z|sw}}: {{W+|sw|mbweha}}
* {{Z|sv}}: {{W+|sv|schakal}}
* {{Z|tr}}: {{W+|tr|çakal}}
{{werger-bin}}
a6u5glljimd69hj6kxjza96vs1lkukc
6329760
6329759
2026-08-12T21:33:15Z
Wikihez
7344
+{{ku-tewîn-nav|+{{ku-tewîn-nav|
6329760
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Golden_Jackal_sa02.jpg|thumb|Wawikek]]
{{navdêr|ku|z=n}}
# {{mijar|ku|guhandar}} [[cûn|Cûn]]ek [[se]]yên [[kûvî]] ye.
#: {{hevmane|ku|çeqel|torî|şeqel}}
#* {{bêmînak|ku}}
# {{f|ku|mecazî}} [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[lêbker]], [[pîs]], [[pespaye]], [[kone]], [[rûvî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav|nêr}}
==== Formên alternatîv ====
* {{g|ku|wawîk}}
* {{g|ku|wawk}}
==== Navê zanistî ====
* ''[[Canis aureus]]''
==== Etîmolojî ====
Ji {{qf|ku|ar:واوي<tr:wawî>|-ik}}.
==== Jê ====
* {{g|ku|çeqelane}}
* {{g|ku|çeqelî}}
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|jakkals}}
* {{Z|de}}: {{W+|de|Schakal|m}}
* {{Z|ar}}: {{W-|ar|ابن اوی}}
* {{Z|eo}}: {{W-|eo|ŝakalo}}
* {{Z|fa}}: {{W+|fa|توره}}, {{W+|fa|شغال}}, {{W+|fa|کفتار}}
* {{Z|fi}}: {{W+|fi|sakaali}}
* {{Z|fr}}: {{W+|fr|chacal|m}}
* {{Z|nl}}: {{W+|nl|jakhals|m}}
* {{Z|en}}: {{W+|en|jackal}}
* {{Z|ca}}: {{W+|ca|xacal}}
* {{Z|pt}}: {{W+|pt|chacal}}
* {{Z|es}}: {{W+|es|chacal|m}}
* {{Z|sw}}: {{W+|sw|mbweha}}
* {{Z|sv}}: {{W+|sv|schakal}}
* {{Z|tr}}: {{W+|tr|çakal}}
{{werger-bin}}
5s495bt53w1yqkvult7y1vhxo5dg41m
6329761
6329760
2026-08-12T21:33:36Z
Wikihez
7344
/* Jê */ ne sayfeya çeqel (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329761
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Golden_Jackal_sa02.jpg|thumb|Wawikek]]
{{navdêr|ku|z=n}}
# {{mijar|ku|guhandar}} [[cûn|Cûn]]ek [[se]]yên [[kûvî]] ye.
#: {{hevmane|ku|çeqel|torî|şeqel}}
#* {{bêmînak|ku}}
# {{f|ku|mecazî}} [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[lêbker]], [[pîs]], [[pespaye]], [[kone]], [[rûvî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav|nêr}}
==== Formên alternatîv ====
* {{g|ku|wawîk}}
* {{g|ku|wawk}}
==== Navê zanistî ====
* ''[[Canis aureus]]''
==== Etîmolojî ====
Ji {{qf|ku|ar:واوي<tr:wawî>|-ik}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|jakkals}}
* {{Z|de}}: {{W+|de|Schakal|m}}
* {{Z|ar}}: {{W-|ar|ابن اوی}}
* {{Z|eo}}: {{W-|eo|ŝakalo}}
* {{Z|fa}}: {{W+|fa|توره}}, {{W+|fa|شغال}}, {{W+|fa|کفتار}}
* {{Z|fi}}: {{W+|fi|sakaali}}
* {{Z|fr}}: {{W+|fr|chacal|m}}
* {{Z|nl}}: {{W+|nl|jakhals|m}}
* {{Z|en}}: {{W+|en|jackal}}
* {{Z|ca}}: {{W+|ca|xacal}}
* {{Z|pt}}: {{W+|pt|chacal}}
* {{Z|es}}: {{W+|es|chacal|m}}
* {{Z|sw}}: {{W+|sw|mbweha}}
* {{Z|sv}}: {{W+|sv|schakal}}
* {{Z|tr}}: {{W+|tr|çakal}}
{{werger-bin}}
ejfkx5asrsqctkvbr8sgl737qfta36u
6329784
6329761
2026-08-12T22:12:06Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329784
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Golden_Jackal_sa02.jpg|thumb|Wawikek]]
{{navdêr|ku|z=n}}
# {{mijar|ku|guhandar}} [[cûn|Cûnek]] [[se]]yên [[kûvî]] ye.
#: {{hevmane|ku|çeqel|torî|şeqel}}
#* {{bêmînak|ku}}
# {{f|ku|mecazî}} [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[lêbker]], [[pîs]], [[pespaye]], [[kone]], [[rûvî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav|nêr}}
==== Formên alternatîv ====
* {{g|ku|wawîk}}
* {{g|ku|wawk}}
==== Navê zanistî ====
* ''[[Canis aureus]]''
==== Etîmolojî ====
Ji {{qf|ku|ar:واوي<tr:wawî>|-ik}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|jakkals}}
* {{Z|de}}: {{W+|de|Schakal|m}}
* {{Z|ar}}: {{W-|ar|ابن اوی}}
* {{Z|eo}}: {{W-|eo|ŝakalo}}
* {{Z|fa}}: {{W+|fa|توره}}, {{W+|fa|شغال}}, {{W+|fa|کفتار}}
* {{Z|fi}}: {{W+|fi|sakaali}}
* {{Z|fr}}: {{W+|fr|chacal|m}}
* {{Z|nl}}: {{W+|nl|jakhals|m}}
* {{Z|en}}: {{W+|en|jackal}}
* {{Z|ca}}: {{W+|ca|xacal}}
* {{Z|pt}}: {{W+|pt|chacal}}
* {{Z|es}}: {{W+|es|chacal|m}}
* {{Z|sw}}: {{W+|sw|mbweha}}
* {{Z|sv}}: {{W+|sv|schakal}}
* {{Z|tr}}: {{W+|tr|çakal}}
{{werger-bin}}
iazuadcarzgw72pkumxgkfnoxpaip1p
6329794
6329784
2026-08-12T22:39:56Z
Wikihez
7344
/* Navdêr */ e (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329794
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Golden_Jackal_sa02.jpg|thumb|Wawikek]]
{{navdêr|ku|z=n}}
# {{e|ku|guhandar}} [[cûn|Cûnek]] [[se]]yên [[kûvî]] ye.
#: {{hevmane|ku|çeqel|torî|şeqel}}
#* {{bêmînak|ku}}
# {{f|ku|mecazî}} [[hîlebaz]], [[fêlbaz]], [[cambaz]], [[lêbker]], [[pîs]], [[pespaye]], [[kone]], [[rûvî]]
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav|nêr}}
==== Formên alternatîv ====
* {{g|ku|wawîk}}
* {{g|ku|wawk}}
==== Navê zanistî ====
* ''[[Canis aureus]]''
==== Etîmolojî ====
Ji {{qf|ku|ar:واوي<tr:wawî>|-ik}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|jakkals}}
* {{Z|de}}: {{W+|de|Schakal|m}}
* {{Z|ar}}: {{W-|ar|ابن اوی}}
* {{Z|eo}}: {{W-|eo|ŝakalo}}
* {{Z|fa}}: {{W+|fa|توره}}, {{W+|fa|شغال}}, {{W+|fa|کفتار}}
* {{Z|fi}}: {{W+|fi|sakaali}}
* {{Z|fr}}: {{W+|fr|chacal|m}}
* {{Z|nl}}: {{W+|nl|jakhals|m}}
* {{Z|en}}: {{W+|en|jackal}}
* {{Z|ca}}: {{W+|ca|xacal}}
* {{Z|pt}}: {{W+|pt|chacal}}
* {{Z|es}}: {{W+|es|chacal|m}}
* {{Z|sw}}: {{W+|sw|mbweha}}
* {{Z|sv}}: {{W+|sv|schakal}}
* {{Z|tr}}: {{W+|tr|çakal}}
{{werger-bin}}
reucapeskkuuynzsjjobtii5i0y5979
nifûz
0
30666
6329889
6313418
2026-08-13T00:31:41Z
Wikihez
7344
6329889
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[hêz|Hêz]] an jî [[kontrol]]a ku diyarker in bi taybetî di warê siyasî de.
#* {{jêder-malper|ku|jêgirtin=Emerîka dixwaze '''nifûza''' Îranê ya li Iraqê û Kurdistanê bişkêne.|malper=Nefel.com|sal=1/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|nufûz}}
==== Jê ====
{{kol3|ku|cure=Jê
|nifûz kirin<pos:lêker>
|nifûzkirin<pos:navdêr>
|nifûzkirî<pos:rengdêr>
|nifûzî}}
==== Etîmolojî ====
Ji {{deyn|ar|tr|نُفُوذ}}. Ji rehê {{ar-reh|ن ف ذ|nekat=1}}.
==== Bide ber ====
* {{g|ku|nifûs}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|نفوذ}}
* {{Z|tr}}: {{W+|tr|nüfuz}}
* {{Z|en}}: {{W+|en|influence}}, {{W+|en|sway}}
{{werger-bin}}
bq8kcbx8kjjncgr24xc6w4zr25vk9ef
bikêr
0
31810
6329676
6133371
2026-08-12T18:13:12Z
Wikihez
7344
xelet
6329676
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|bikêr}}
{{rengdêr|ku}}
# [[kêrhatî]], [[bimifa]], [[sûdmend]], [[bifêde]], [[bifeyde]], [[sûdder]], [[bisûd]], [[bikelk]], [[bixêr]], [[biber]], [[guncav]], [[bikar]]
#* {{jêder|ku|jêgirtin=Lê tiştekî '''bikêrtir''' bi dest min ket.|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=39}}}}
# {{kontrol|rêz=erê|[[minasib]], [[qenc]], [[rind]], [[mifadar]], [[baş]], [[xêrdar]]}}
==== Dijmane ====
* [[bêkêr]]
* [[kêrnehatî]]
==== Jê ====
{{stûn|
* {{mj|lêker}} [[bikêr bûn]]
* {{mj|lêker}} [[bikêr kirin]]
* {{mj|navdêr}} [[bikêrbûn]]
* {{mj|navdêr}} [[bikêrkirin]]
* {{mj|navdêr}} [[bikêranîn]]
* {{mj|rengdêr}} [[bikêrbûyî]]
* {{mj|rengdêr}} [[bikêrkirî]]
}}
==== Etîmolojî ====
Ji {{pêş|ku|bi-|kêr}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|geskikt}}
* {{Z|sq}}: {{W+|sq|dobishëm}}
* {{Z|de}}: {{W+|de|nützlich}}, {{W+|de|füglich}}, {{W+|de|gebührend}}, {{W+|de|gelegen}}, {{W+|de|gemächlich}}, {{W+|de|geziemend}}, {{W+|de|zusagend}}, {{W+|de|angebracht}}, {{W-|de|ausnutzbar|guman=erê}}, {{W+|de|zweckdienlich|guman=erê}}, {{W+|de|verwendbar|guman=erê}}
* {{Z|az}}: {{W-|az|lazımlı}}
* {{Z|bg}}: {{W-|bg|полезен|tr=polezen}}
* {{Z|cs}}: {{W+|cs|užitečný}}
* {{Z|zh}}: {{W-|zh|有用|tr=yǒuyòng}}
* {{Z|da}}: {{W-|da|nyttig}}
* {{Z|id}}: {{W+|id|berguna}}
* {{Z|ar}}: {{W-|ar|مفيد|tr=mufîd}}
* {{Z|eo}}: {{W-|eo|utila}}
* {{Z|et}}: {{W-|et|kasulik}}
* {{Z|fa}}: {{W-|fa|سودمند|tr=sûdmend}}, {{W+|fa|کارآمد}}, {{W+|fa|کارآمد}}
* {{Z|fo}}: {{W-|fo|nýttigur}}
* {{Z|fi}}: {{W+|fi|hyödyllinen}}
* {{Z|fr}}: {{W+|fr|utile}}
* {{Z|fy}}: {{W-|fy|nuttich}}
* {{Z|ka}}: {{W-|ka|სასარგებლო|tr=sasargeblo}}
* {{Z|hi}}: {{W-|hi|upayogi}}
* {{Z|nl}}: {{W+|nl|nuttig}}
* {{Z|he}}: {{W-|he|שִׁמּוּשִׁי|tr=šimuši}}
* {{Z|ang}}: {{W-|ang|nytt}}
* {{Z|en}}: {{W+|en|useful}}, {{W+|en|fit}}
* {{Z|ga}}: {{W-|ga|úsáideach}}
* {{Z|it}}: {{W+|it|utile}}
* {{Z|ja}}: {{W-|ja|有用|tr=[[ゆうよう]], yūyō}}, {{W-|ja|便利な|tr=べんりな, benrina}}
* {{Z|ca}}: {{W+|ca|útil}}
* {{Z|ko}}: {{W-|ko|유용한|tr=yuyonghan}}
* {{Z|lv}}: {{W-|lv|derīgs}}
* {{Z|lt}}: {{W+|lt|naudingas}}
* {{Z|ms}}: {{W+|ms|berguna}}
* {{Z|hu}}: {{W+|hu|hasznos}}
* {{Z|mn}}: {{W-|mn|хэрэгтэй|tr=heregtey}}
* {{Z|no}}: {{W+|no|nyttig}}
* [[oygurî]]: [[bolmaq]]
* {{Z|pap}}: {{W-|pap|útil}}
* {{Z|pl}}: {{W+|pl|pożyteczny}}
* {{Z|pt}}: {{W+|pt|útil}}
* {{Z|ro}}: {{W+|ro|folositor}}
* {{Z|ru}}: {{W-|ru|полезный|tr=poléznyj}}
* {{Z|sh}}: {{W-|az|употребљив|tr=[[upotrebljiv]]}}
* {{Z|sk}}: {{W-|sk|činný}}
* {{Z|sl}}: {{W-|sl|uporaben}}
* {{Z|es}}: {{W+|es|útil}}
* {{Z|sw}}: {{W+|sw|faida}}
* {{Z|sv}}: {{W+|sv|nyttig}}, {{W+|sv|användbar}}
* {{Z|tl}}: {{W-|tl|makabuluhan}}
* {{Z|th}}: {{W-|th|ที่มีประโยชน์|tr=têe mee bprà-yôte}}
* {{Z|te}}: {{W-|te|ఉపయోగకరము|tr=upayOgakaramu}}
* {{Z|tr}}: {{W+|tr|faydalı}}, {{W+|tr|yararlı}}, {{W+|tr|gözü açık}}, {{W+|tr|hayırlı}}, {{W+|tr|onat}}, {{W+|tr|tirendaz}}, {{W+|tr|uz}}, {{W+|tr|yatkın}}, {{W+|tr|yordamlı}}, {{W+|tr|olçum}}, {{W+|tr|varlık}}, {{W+|tr|işe yarar|guman=erê}}, {{W+|tr|yarayışlı|guman=erê}}
* {{Z|uk}}: [[корисний]] (korýsnyj)
* {{Z|vi}}: {{W+|vi|có ích}}
* {{Z|cy}}: {{W+|cy|buddiol}}
* {{Z|yi}}: {{W-|yi|nusik}}
* {{Z|el}}: {{W-|el|χρήσιμος|tr=khrēsimos}}
{{werger-bin}}
0h7j1q1vcxp5d794mh70o1ripw2hucp
6329677
6329676
2026-08-12T18:13:28Z
Wikihez
7344
/* Jê */
6329677
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|bikêr}}
{{rengdêr|ku}}
# [[kêrhatî]], [[bimifa]], [[sûdmend]], [[bifêde]], [[bifeyde]], [[sûdder]], [[bisûd]], [[bikelk]], [[bixêr]], [[biber]], [[guncav]], [[bikar]]
#* {{jêder|ku|jêgirtin=Lê tiştekî '''bikêrtir''' bi dest min ket.|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=39}}}}
# {{kontrol|rêz=erê|[[minasib]], [[qenc]], [[rind]], [[mifadar]], [[baş]], [[xêrdar]]}}
==== Dijmane ====
* [[bêkêr]]
* [[kêrnehatî]]
==== Jê ====
{{kol3|ku|cure=Jê
|bikêr bûn<q:lêker>
|bikêr kirin<q:lêker>
|bikêrbûn<q:navdêr>
|bikêrkirin<q:navdêr>
|bikêranîn<q:navdêr>
|bikêrbûyî<q:rengdêr>
|bikêrkirî<q:rengdêr>
}}
==== Etîmolojî ====
Ji {{pêş|ku|bi-|kêr}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|geskikt}}
* {{Z|sq}}: {{W+|sq|dobishëm}}
* {{Z|de}}: {{W+|de|nützlich}}, {{W+|de|füglich}}, {{W+|de|gebührend}}, {{W+|de|gelegen}}, {{W+|de|gemächlich}}, {{W+|de|geziemend}}, {{W+|de|zusagend}}, {{W+|de|angebracht}}, {{W-|de|ausnutzbar|guman=erê}}, {{W+|de|zweckdienlich|guman=erê}}, {{W+|de|verwendbar|guman=erê}}
* {{Z|az}}: {{W-|az|lazımlı}}
* {{Z|bg}}: {{W-|bg|полезен|tr=polezen}}
* {{Z|cs}}: {{W+|cs|užitečný}}
* {{Z|zh}}: {{W-|zh|有用|tr=yǒuyòng}}
* {{Z|da}}: {{W-|da|nyttig}}
* {{Z|id}}: {{W+|id|berguna}}
* {{Z|ar}}: {{W-|ar|مفيد|tr=mufîd}}
* {{Z|eo}}: {{W-|eo|utila}}
* {{Z|et}}: {{W-|et|kasulik}}
* {{Z|fa}}: {{W-|fa|سودمند|tr=sûdmend}}, {{W+|fa|کارآمد}}, {{W+|fa|کارآمد}}
* {{Z|fo}}: {{W-|fo|nýttigur}}
* {{Z|fi}}: {{W+|fi|hyödyllinen}}
* {{Z|fr}}: {{W+|fr|utile}}
* {{Z|fy}}: {{W-|fy|nuttich}}
* {{Z|ka}}: {{W-|ka|სასარგებლო|tr=sasargeblo}}
* {{Z|hi}}: {{W-|hi|upayogi}}
* {{Z|nl}}: {{W+|nl|nuttig}}
* {{Z|he}}: {{W-|he|שִׁמּוּשִׁי|tr=šimuši}}
* {{Z|ang}}: {{W-|ang|nytt}}
* {{Z|en}}: {{W+|en|useful}}, {{W+|en|fit}}
* {{Z|ga}}: {{W-|ga|úsáideach}}
* {{Z|it}}: {{W+|it|utile}}
* {{Z|ja}}: {{W-|ja|有用|tr=[[ゆうよう]], yūyō}}, {{W-|ja|便利な|tr=べんりな, benrina}}
* {{Z|ca}}: {{W+|ca|útil}}
* {{Z|ko}}: {{W-|ko|유용한|tr=yuyonghan}}
* {{Z|lv}}: {{W-|lv|derīgs}}
* {{Z|lt}}: {{W+|lt|naudingas}}
* {{Z|ms}}: {{W+|ms|berguna}}
* {{Z|hu}}: {{W+|hu|hasznos}}
* {{Z|mn}}: {{W-|mn|хэрэгтэй|tr=heregtey}}
* {{Z|no}}: {{W+|no|nyttig}}
* [[oygurî]]: [[bolmaq]]
* {{Z|pap}}: {{W-|pap|útil}}
* {{Z|pl}}: {{W+|pl|pożyteczny}}
* {{Z|pt}}: {{W+|pt|útil}}
* {{Z|ro}}: {{W+|ro|folositor}}
* {{Z|ru}}: {{W-|ru|полезный|tr=poléznyj}}
* {{Z|sh}}: {{W-|az|употребљив|tr=[[upotrebljiv]]}}
* {{Z|sk}}: {{W-|sk|činný}}
* {{Z|sl}}: {{W-|sl|uporaben}}
* {{Z|es}}: {{W+|es|útil}}
* {{Z|sw}}: {{W+|sw|faida}}
* {{Z|sv}}: {{W+|sv|nyttig}}, {{W+|sv|användbar}}
* {{Z|tl}}: {{W-|tl|makabuluhan}}
* {{Z|th}}: {{W-|th|ที่มีประโยชน์|tr=têe mee bprà-yôte}}
* {{Z|te}}: {{W-|te|ఉపయోగకరము|tr=upayOgakaramu}}
* {{Z|tr}}: {{W+|tr|faydalı}}, {{W+|tr|yararlı}}, {{W+|tr|gözü açık}}, {{W+|tr|hayırlı}}, {{W+|tr|onat}}, {{W+|tr|tirendaz}}, {{W+|tr|uz}}, {{W+|tr|yatkın}}, {{W+|tr|yordamlı}}, {{W+|tr|olçum}}, {{W+|tr|varlık}}, {{W+|tr|işe yarar|guman=erê}}, {{W+|tr|yarayışlı|guman=erê}}
* {{Z|uk}}: [[корисний]] (korýsnyj)
* {{Z|vi}}: {{W+|vi|có ích}}
* {{Z|cy}}: {{W+|cy|buddiol}}
* {{Z|yi}}: {{W-|yi|nusik}}
* {{Z|el}}: {{W-|el|χρήσιμος|tr=khrēsimos}}
{{werger-bin}}
jkmwg2t1b2ki1c30p1q0ebpwaj0vkne
6329678
6329677
2026-08-12T18:13:48Z
Wikihez
7344
6329678
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|bikêr}}
{{rengdêr|ku}}
# [[kêrhatî]], [[bimifa]], [[sûdmend]], [[bifêde]], [[bifeyde]], [[sûdder]], [[bisûd]], [[bikelk]], [[bixêr]], [[biber]], [[guncav]], [[bikar]]
#* {{jêder|ku|jêgirtin=Lê tiştekî '''bikêrtir''' bi dest min ket.|{{Jêgirtin/Robert Louis Stevenson/Meseleya Seyr a Dr. Jekyll û Mr. Hyde|r=39}}}}
# {{kontrol|rêz=erê|[[minasib]], [[qenc]], [[rind]], [[mifadar]], [[baş]], [[xêrdar]]}}
==== Dijmane ====
* [[bêkêr]]
* [[kêrnehatî]]
==== Jê ====
{{kol3|ku|cure=Jê
|bikêr bûn<crz:lêker>
|bikêr kirin<crz:lêker>
|bikêrbûn<crz:navdêr>
|bikêrkirin<crz:navdêr>
|bikêranîn<crz:navdêr>
|bikêrbûyî<crz:rengdêr>
|bikêrkirî<crz:rengdêr>
}}
==== Etîmolojî ====
Ji {{pêş|ku|bi-|kêr}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W-|af|geskikt}}
* {{Z|sq}}: {{W+|sq|dobishëm}}
* {{Z|de}}: {{W+|de|nützlich}}, {{W+|de|füglich}}, {{W+|de|gebührend}}, {{W+|de|gelegen}}, {{W+|de|gemächlich}}, {{W+|de|geziemend}}, {{W+|de|zusagend}}, {{W+|de|angebracht}}, {{W-|de|ausnutzbar|guman=erê}}, {{W+|de|zweckdienlich|guman=erê}}, {{W+|de|verwendbar|guman=erê}}
* {{Z|az}}: {{W-|az|lazımlı}}
* {{Z|bg}}: {{W-|bg|полезен|tr=polezen}}
* {{Z|cs}}: {{W+|cs|užitečný}}
* {{Z|zh}}: {{W-|zh|有用|tr=yǒuyòng}}
* {{Z|da}}: {{W-|da|nyttig}}
* {{Z|id}}: {{W+|id|berguna}}
* {{Z|ar}}: {{W-|ar|مفيد|tr=mufîd}}
* {{Z|eo}}: {{W-|eo|utila}}
* {{Z|et}}: {{W-|et|kasulik}}
* {{Z|fa}}: {{W-|fa|سودمند|tr=sûdmend}}, {{W+|fa|کارآمد}}, {{W+|fa|کارآمد}}
* {{Z|fo}}: {{W-|fo|nýttigur}}
* {{Z|fi}}: {{W+|fi|hyödyllinen}}
* {{Z|fr}}: {{W+|fr|utile}}
* {{Z|fy}}: {{W-|fy|nuttich}}
* {{Z|ka}}: {{W-|ka|სასარგებლო|tr=sasargeblo}}
* {{Z|hi}}: {{W-|hi|upayogi}}
* {{Z|nl}}: {{W+|nl|nuttig}}
* {{Z|he}}: {{W-|he|שִׁמּוּשִׁי|tr=šimuši}}
* {{Z|ang}}: {{W-|ang|nytt}}
* {{Z|en}}: {{W+|en|useful}}, {{W+|en|fit}}
* {{Z|ga}}: {{W-|ga|úsáideach}}
* {{Z|it}}: {{W+|it|utile}}
* {{Z|ja}}: {{W-|ja|有用|tr=[[ゆうよう]], yūyō}}, {{W-|ja|便利な|tr=べんりな, benrina}}
* {{Z|ca}}: {{W+|ca|útil}}
* {{Z|ko}}: {{W-|ko|유용한|tr=yuyonghan}}
* {{Z|lv}}: {{W-|lv|derīgs}}
* {{Z|lt}}: {{W+|lt|naudingas}}
* {{Z|ms}}: {{W+|ms|berguna}}
* {{Z|hu}}: {{W+|hu|hasznos}}
* {{Z|mn}}: {{W-|mn|хэрэгтэй|tr=heregtey}}
* {{Z|no}}: {{W+|no|nyttig}}
* [[oygurî]]: [[bolmaq]]
* {{Z|pap}}: {{W-|pap|útil}}
* {{Z|pl}}: {{W+|pl|pożyteczny}}
* {{Z|pt}}: {{W+|pt|útil}}
* {{Z|ro}}: {{W+|ro|folositor}}
* {{Z|ru}}: {{W-|ru|полезный|tr=poléznyj}}
* {{Z|sh}}: {{W-|az|употребљив|tr=[[upotrebljiv]]}}
* {{Z|sk}}: {{W-|sk|činný}}
* {{Z|sl}}: {{W-|sl|uporaben}}
* {{Z|es}}: {{W+|es|útil}}
* {{Z|sw}}: {{W+|sw|faida}}
* {{Z|sv}}: {{W+|sv|nyttig}}, {{W+|sv|användbar}}
* {{Z|tl}}: {{W-|tl|makabuluhan}}
* {{Z|th}}: {{W-|th|ที่มีประโยชน์|tr=têe mee bprà-yôte}}
* {{Z|te}}: {{W-|te|ఉపయోగకరము|tr=upayOgakaramu}}
* {{Z|tr}}: {{W+|tr|faydalı}}, {{W+|tr|yararlı}}, {{W+|tr|gözü açık}}, {{W+|tr|hayırlı}}, {{W+|tr|onat}}, {{W+|tr|tirendaz}}, {{W+|tr|uz}}, {{W+|tr|yatkın}}, {{W+|tr|yordamlı}}, {{W+|tr|olçum}}, {{W+|tr|varlık}}, {{W+|tr|işe yarar|guman=erê}}, {{W+|tr|yarayışlı|guman=erê}}
* {{Z|uk}}: [[корисний]] (korýsnyj)
* {{Z|vi}}: {{W+|vi|có ích}}
* {{Z|cy}}: {{W+|cy|buddiol}}
* {{Z|yi}}: {{W-|yi|nusik}}
* {{Z|el}}: {{W-|el|χρήσιμος|tr=khrēsimos}}
{{werger-bin}}
r42suo4sg9b72p72o8jrxg0rx6yj767
mîn
0
36775
6329847
6312828
2026-08-12T23:52:23Z
Wikihez
7344
/* Kurmancî */ {{bnr-h|mîn|mìn|miñ}} (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329847
wikitext
text/x-wiki
{{bnr-h|min|mìn|miñ}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|çek}} {{guharto|ku|mayin}}
#* {{bêmînak|ku}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
== {{ziman|ckb}} ==
=== Navdêr ===
{{navdêr|ckb|sc=Latn}}
# [[mayin]]
#* {{bêmînak|ckb}}
b61qoxhgdvtrsxcz6sq73p6cnaemzr7
kirû
0
39482
6329817
6310253
2026-08-12T23:05:47Z
Wikihez
7344
6329817
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{f|ku|xeyalet}} [[waqia]], [[heqîqet]]
#* {{jêder-kovar|ku|jêgirtin=Ev rewşa han ne tenê di dibistan û xwendegehan de heye; di zanîngehan de jî ev eynî wisa ye. Kirû ya{{sic}} bêtir nîşanker ev e ku meriv dikare li Fransayê bibe "pisporekî" felsefê, xwedîyê dîplomayên bilindtirînên ku zanîngehên fransizî didin {{...}}|url=https://bnk.institutkurde.org/catalogue/detail.php?pirtuk=540|kovar=Azadî|sal=1979|hj=6-7|r=18|nivîskar=S. Politzer|sernav=Bingehên Destpêkiyên Felsefê}}
#* {{jêder-kovar|ku|jêgirtin=ji hêlekê ve ev biryara ku piştgirtina Kurd a dida xwanî, bi rastî rûçkê wê îlhaq û daxûrîya kolonyalîst di çespand û dixwest ku têkoşîna dij van '''kirûyan''' jî mahkûm bik e.{{sic}} |kovar=Rizgarî|sernav=Sernivîs|r=7|sal=1992|hj=hejmara xisûsî}}
#* {{jêder|ku|jêgirtin=Rengdêra ‘baş’ê, ji bo bûyer an jî '''kirûyên''' erênî tê gotin. Heger bûyer, kirû an jî tiştek bi hişmendiyê re li hev be û ji alî êqil ve hatibe qebûlkirin di statuya “baş”ê de ye. Tiştên ku dûrî êqil û fêmkirinê bin û di çarçoveya lojîk de cih negirtibin nikarin baş bin. ‘Baş’ piştî muhakeme, qenaet û erêkirina êqil biwesif dibe.|Rênas Jiyan: '' Baş û xweş û hêja'', Azadiyawelat.com, 5/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ev peyv cara pêşî di kovara Azadî (1979) de tê dîtin û di ferhengoka vê hejmarê de bi {{q+|tr|olgu}}, {{q+|fr|fait}} tê manadarkirin. Bi ferhenga Îzolî berbelav dibe. Paşgireka wek "-û" di kurmancî da nîn e. Esilê peyvê {{q|ckb|کراو|tr=kiraw|t=kirî, îcrakirî}} ya soranî ye ku hêmana "-ra" di zaravayê soranî da ji bo avanîya pasîf tê bikaranîn. Mîna {{q|ku|rûdaw|t=rûdayî, qewimî}}. Ihtimalen cara ewil bi xwendina xelet a {{q|ckb|کراو|tr=kiraw}} weke ''*kirû'' peyveka weha [[peyva xeyalet|xeyalet]] hatiye wicûdê. Peyva {{q|ckb|کراو|tr=kiraw}} bi xurtî mihtemel e ku ji berdêla xwe ya {{yekser|en|ku|fact|nivîsna=1}} hatibe wergerandin.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W|de|Ereignis|n}}
* {{Z|fa}}: {{W+|fa|رویداد}}, {{W+|fa|اتفاق}}
* {{Z|fi}}: {{W+|fi|teko}}
* {{Z|en}}: {{W+|en|fact}}
* {{Z|tr}}: {{W+|tr|olgu}}, {{W+|tr|fenomen}}, {{W|tr|vakıa}}
{{werger-bin}}
flwv9cpggdgo79u837138xq9wcxnjz7
pêkhatî
0
40878
6329898
6124739
2026-08-13T00:46:34Z
Wikihez
7344
6329898
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Tiştê ku hatiye [[pêkanîn]]; [[lihevhatî]]; tam û bêqusûr.
#* {{jêder-pirtûk|ku|jêgirtin=Difikire ku ji dûr ve siwarekî '''pêkhatî''' bi libas û çek têtin.|nivîskar=Mele Mehmûdê Bazîdî|sernav=Cami’eya Riseleyan û Hikayetan Bi Zimanê Kurmancî|cîh=Stembol|weşanxane={{w|Weşanên Lîs|Lîs}}|sal=2010|çap=1|rûpel=119|isbn=978-605-5683-27-6}}
# {{f|ku|rêzimanî}} [[darişt|Dariştî]]; [[lêker]] û navên ku bi [[qertaf]]an temam û ava dibin.
#* {{jêder-pirtûk|ku|jêgirtin=Mijara herî berfireh mijara lêkerên '''pêkhatî''' ye.|sernav=Rêzimana Kurmancî|nivîskar={{w|Samî Tan}}|çap=nûkirî|sal=2015|weşanxane=Weşanên Enstîtuya Kurdî ya Stenbolêr|rûpel=257}}
# [[bicihhatî|Bicihhatî]]; [[qewimî]].
#* {{mk|ku|Daxwazên '''pêknehatî''' û dernebirrî dikarin bibin sedema nexweşiyên derûnî.}}
==== Bi alfabeyên din ====
* {{ku-ar|پێكهاتی}}
==== Herweha ====
* {{g|ku|pêkhate}}
==== Têkildar ====
* {{g|ku|pêkînayî}}
==== Etîmolojî ====
Ji {{qertaf|ku|pêk|hatin|-î}}.
==== Jê ====
{{kol3|ku|cure=Jê
|pêkhatî bûn<pos:lêker>
|pêkhatî kirin<pos:lêker>
|pêkhatîbûn<pos:navdêr>
|pêkhatîkirin<pos:navdêr>
|pêkhatîbûyî<pos:rengdêr>
|pêkhatîkirî<pos:rengdêr>
}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|hervorgebracht}}, {{W+|de|vollendet}}, {{W+|de|eingetreten}}, {{W+|de|vorgekommen|guman=erê}}, {{W+|de|entstanden|guman=erê}}, {{W+|de|zusammengesetzt|guman=erê}}, {{W+|de|Ableitung|guman=erê}}, {{W+|de|Zutat|guman=erê}}
* {{Z|ar}}: {{W-|ar|التركیب}}, {{W-|ar|الـوفق|guman=erê}}
* {{Z|fa}}: {{W+|fa|متشکل}}, {{W-|fa|بدست آمده}}, {{W-|fa|ایجاد شده}}, {{W-|fa|تحقق یافته}}
* {{Z|en}}: {{W+|en|contain}}, {{W+|en|derivative}}, {{W+|en|accordant}}, {{W+|en|built-up|guman=erê}}, {{W+|en|compact|guman=erê}}, {{W+|en|compliant|guman=erê}}, {{W+|en|compound|guman=erê}}, {{W+|en|compromised|guman=erê}}, {{W+|en|consentaneous|guman=erê}}, {{W+|en|decompound|guman=erê}}, {{W+|en|compliable|guman=erê}}, {{W-|en|composit|guman=erê}}, {{W-|en|compositive|guman=erê}}, {{W+|en|concordant|guman=erê}}, {{W+|en|concurred|guman=erê}}, {{W+|en|equitant|guman=erê}}, {{W+|en|fortuitous|guman=erê}}, {{W+|en|haphazard|guman=erê}}, {{W+|en|in line with|guman=erê}}, {{W+|en|reconciled|guman=erê}}
* {{Z|tr}}: {{W+|tr|becerikli}}, {{W+|tr|girgin}}, {{W+|tr|girişken}}, {{W+|tr|yatkın}}, {{W-|tr|cebar}}, {{W+|tr|oluşuk}}, {{W+|tr|müteşekkil}}, {{W-|tr|oluşmuş}}, {{W+|tr|çakır}}, {{W+|tr|çakır pençe|guman=erê}}
{{werger-bin}}
iiabey6csod89mlk1r7ge4u98jtarsa
6329916
6329898
2026-08-13T01:41:07Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329916
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Tiştê ku hatiye [[pêkanîn]]; [[lihevhatî]]; tam û bêqusûr.
#* {{jêder-pirtûk|ku|jêgirtin=Difikire ku ji dûr ve siwarekî '''pêkhatî''' bi libas û çek têtin.|nivîskar=Mele Mehmûdê Bazîdî|sernav=Cami’eya Riseleyan û Hikayetan Bi Zimanê Kurmancî|cîh=Stembol|weşanxane={{w|Weşanên Lîs|Lîs}}|sal=2010|çap=1|rûpel=119|isbn=978-605-5683-27-6}}
# {{f|ku|rêzimanî}} [[darişt|Dariştî]]; [[lêker]] û navên ku bi [[qertaf]]an temam û ava dibin.
#* {{jêder-pirtûk|ku|jêgirtin=Mijara herî berfireh mijara lêkerên '''pêkhatî''' ye.|sernav=Rêzimana Kurmancî|nivîskar={{w|Samî Tan}}|çap=nûkirî|sal=2015|weşanxane=Weşanên Enstîtuya Kurdî ya Stenbolêr|rûpel=257}}
# [[bicihhatî|Bicihhatî]]; [[qewimî]].
#* {{mk|ku|Daxwazên '''pêknehatî''' û dernebirrî dikarin bibin sedema nexweşiyên derûnî.}}
==== Bi alfabeyên din ====
* {{ku-ar|پێكهاتی}}
==== Formên alternatîv ====
* {{g|ku|pêkhate}}
==== Jê ====
{{kol3|ku|cure=Jê
|pêkhatî bûn<pos:lêker>
|pêkhatî kirin<pos:lêker>
|pêkhatîbûn<pos:navdêr>
|pêkhatîkirin<pos:navdêr>
|pêkhatîbûyî<pos:rengdêr>
|pêkhatîkirî<pos:rengdêr>
}}
==== Têkildar ====
* {{g|ku|pêkînayî}}
==== Etîmolojî ====
Ji {{qertaf|ku|pêk|hatin|-î}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|hervorgebracht}}, {{W+|de|vollendet}}, {{W+|de|eingetreten}}, {{W+|de|vorgekommen|guman=erê}}, {{W+|de|entstanden|guman=erê}}, {{W+|de|zusammengesetzt|guman=erê}}, {{W+|de|Ableitung|guman=erê}}, {{W+|de|Zutat|guman=erê}}
* {{Z|ar}}: {{W-|ar|التركیب}}, {{W-|ar|الـوفق|guman=erê}}
* {{Z|fa}}: {{W+|fa|متشکل}}, {{W-|fa|بدست آمده}}, {{W-|fa|ایجاد شده}}, {{W-|fa|تحقق یافته}}
* {{Z|en}}: {{W+|en|contain}}, {{W+|en|derivative}}, {{W+|en|accordant}}, {{W+|en|built-up|guman=erê}}, {{W+|en|compact|guman=erê}}, {{W+|en|compliant|guman=erê}}, {{W+|en|compound|guman=erê}}, {{W+|en|compromised|guman=erê}}, {{W+|en|consentaneous|guman=erê}}, {{W+|en|decompound|guman=erê}}, {{W+|en|compliable|guman=erê}}, {{W-|en|composit|guman=erê}}, {{W-|en|compositive|guman=erê}}, {{W+|en|concordant|guman=erê}}, {{W+|en|concurred|guman=erê}}, {{W+|en|equitant|guman=erê}}, {{W+|en|fortuitous|guman=erê}}, {{W+|en|haphazard|guman=erê}}, {{W+|en|in line with|guman=erê}}, {{W+|en|reconciled|guman=erê}}
* {{Z|tr}}: {{W+|tr|becerikli}}, {{W+|tr|girgin}}, {{W+|tr|girişken}}, {{W+|tr|yatkın}}, {{W-|tr|cebar}}, {{W+|tr|oluşuk}}, {{W+|tr|müteşekkil}}, {{W-|tr|oluşmuş}}, {{W+|tr|çakır}}, {{W+|tr|çakır pençe|guman=erê}}
{{werger-bin}}
j4cemx9ulx7cwxzjp4r15ttosfirdgb
nehs
0
43107
6329887
6285030
2026-08-13T00:30:49Z
Wikihez
7344
6329887
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|nehs}}
{{rengdêr|ku}}
# Kesê [[kar]]ên [[xirab]] dike yan li cihê xwe [[sekinîn|nasekine]] (bi taybetî [[zarok]]); ne [[vehewiyayî]], ne [[tebitî]], ne [[aram]], ne [[rehet]], ne [[hêmin]].
#: {{hevmane|ku|şûm|neqet|destmatî}}
#* {{jêder|ku|jêgirtin=Ez di zaroktiya xwe de yekî pir '''nehs''' bûme|{{Zana Farqînî|r=1277}}}}
#* {{jêder|ku|jêgirtin=...carinan zarokên '''nehs''' yên cîranan xwe li ber deriyê me dikirin [[teht]] ku bila porê wan jî kur bike...|{{Jêgirtin/Înan Eroglu/Têbîniyek/2019|r=34}}}}
#* {{jêder-kovar|ku|jêgirtin=Di vê rêzikê de karektereke bi navê Maya heye ku ew [[şûm]] û '''nehs''' e û li dijberê wê karakterekî bi navê Willy heye ku ew jî tirsonek û bi [[fikar]] e.|kovar=e-şarkiyat ilmi araştırmalar dergisi JOSR|sernav=Kurtedîroka Çapemenî û Medyaya Zarokan a Kurdî|url=http://acikerisim.artuklu.edu.tr/xmlui/bitstream/handle/20.500.12514/2129/KURTED%c3%8eROKA%20%c3%87APEMEN%c3%8e%20%c3%9b%20MEDYAYA%20ZAROKAN%20A%20KURD%c3%8e.pdf?sequence=1&isAllowed=y|nivîskar=Kenan Subaşı|cîld=9|hejmar=1|sal=2017|rûpel=113}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Spêde kifş-i bû dîsa<br />Merîxa '''nehs'''ê ava bû<br />Xwiya bû roj di şerqê da}}
==== Jê ====
{{kol3|ku|cure=Jê
|nehs bûn<pos:lêker>
|nehs kirin<pos:lêker>
|nehsbûn<pos:navdêr>
|nehskirin<pos:navdêr>
|nehsbûyî<pos:rengdêr>
|nehskirî<pos:rengdêr>
|nehsî
|nehsîtî
|nehistî
}}
==== Formên alternatîv ====
* {{g|ku|nehis}}
==== Bide ber ====
* {{g|ku|necis}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|بدسگالی}}, {{W+|fa|شوم}}, {{W+|fa|نحس}}
* {{Z|en}}: {{W+|en|obstreperous}}, {{W+|en|roguish}}, {{W+|en|naughty|guman=erê}}
* {{Z|tr}}: {{W+|tr|afacan}}, {{W+|tr|haşarı}}, {{W+|tr|uçarı}}, {{W+|tr|yaramaz}}, {{W+|tr|kurnaz}}, {{W+|tr|entrikacı}}, {{W+|tr|bastıbacak}}, {{W+|tr|haylaz}}, {{W+|tr|kuduruk}}, {{W+|tr|baylan|guman=erê}}, {{W+|tr|haydut|guman=erê}}, {{W+|tr|yumurcak|guman=erê}}
{{werger-bin}}
n28nh44wzh7yxzd9emgzra1ggs8sv22
6329894
6329887
2026-08-13T00:41:10Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329894
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|nehs}}
{{rengdêr|ku}}
# Kesê [[kar]]ên [[xirab]] dike yan li cihê xwe [[sekinîn|nasekine]] (bi taybetî [[zarok]]); ne [[vehewiyayî]], ne [[tebitî]], ne [[aram]], ne [[rehet]], ne [[hêmin]].
#: {{hevmane|ku|şûm|neqet|destmatî}}
#* {{jêder|ku|jêgirtin=Ez di zaroktiya xwe de yekî pir '''nehs''' bûme|{{Zana Farqînî|r=1277}}}}
#* {{jêder|ku|jêgirtin=...carinan zarokên '''nehs''' yên cîranan xwe li ber deriyê me dikirin [[teht]] ku bila porê wan jî kur bike...|{{Jêgirtin/Înan Eroglu/Têbîniyek/2019|r=34}}}}
#* {{jêder-kovar|ku|jêgirtin=Di vê rêzikê de karektereke bi navê Maya heye ku ew [[şûm]] û '''nehs''' e û li dijberê wê karakterekî bi navê Willy heye ku ew jî tirsonek û bi [[fikar]] e.|kovar=e-şarkiyat ilmi araştırmalar dergisi JOSR|sernav=Kurtedîroka Çapemenî û Medyaya Zarokan a Kurdî|url=http://acikerisim.artuklu.edu.tr/xmlui/bitstream/handle/20.500.12514/2129/KURTED%c3%8eROKA%20%c3%87APEMEN%c3%8e%20%c3%9b%20MEDYAYA%20ZAROKAN%20A%20KURD%c3%8e.pdf?sequence=1&isAllowed=y|nivîskar=Kenan Subaşı|cîld=9|hejmar=1|sal=2017|rûpel=113}}
#* {{jêder|ku|{{Jêgirtin/Melayê Cizîrî/Dîwana Melayê Cizirî}}|jêgirtin=Spêde kifş-i bû dîsa<br />Merîxa '''nehs'''ê ava bû<br />Xwiya bû roj di şerqê da}}
==== Formên alternatîv ====
* {{g|ku|nehis}}
==== Jê ====
{{kol3|ku|cure=Jê
|nehs bûn<pos:lêker>
|nehs kirin<pos:lêker>
|nehsbûn<pos:navdêr>
|nehskirin<pos:navdêr>
|nehsbûyî<pos:rengdêr>
|nehskirî<pos:rengdêr>
|nehsî
|nehsîtî
|nehistî
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* {{g|ku|necis}}
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|بدسگالی}}, {{W+|fa|شوم}}, {{W+|fa|نحس}}
* {{Z|en}}: {{W+|en|obstreperous}}, {{W+|en|roguish}}, {{W+|en|naughty|guman=erê}}
* {{Z|tr}}: {{W+|tr|afacan}}, {{W+|tr|haşarı}}, {{W+|tr|uçarı}}, {{W+|tr|yaramaz}}, {{W+|tr|kurnaz}}, {{W+|tr|entrikacı}}, {{W+|tr|bastıbacak}}, {{W+|tr|haylaz}}, {{W+|tr|kuduruk}}, {{W+|tr|baylan|guman=erê}}, {{W+|tr|haydut|guman=erê}}, {{W+|tr|yumurcak|guman=erê}}
{{werger-bin}}
ax6tyy5eu589pr66mcadvwbrez8rkmk
mereqdar
0
44763
6329836
6244560
2026-08-12T23:39:35Z
Wikihez
7344
6329836
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mereqdar}}
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştan [[zanîn|bizane]], kesa/ê ku [[bala xwe dan|bala xwe dide]] tiştan.
#* {{jêder-kovar|ku|jêgirtin=Rojekê ji hevalên Qasidê Xwedê yekî mîna me '''mereqdar''' jê pirsiye em ê li cenetê çi xwe bikin.|url=http://books.google.com.tr/books?id=H_-jDwAAQBAJ&pg=PA33&dq=%22mereqdar%22&hl=&cd=4&source=gbs_api|sernav=Cihê ku xeyala wê jî xweş e|nivîskarDilek Topaktaş|kovar=Siyer Dergisi|hejmar=6|weşanxane= SIYER BASIM YAYIN DAGITIM SAN. VE TIC. LTD. STI.|rûpel=33|sal=2018}}
# Kesa/ê ku dixwaze tiştek hebe yan tiştekî [[bibîne]].
#* {{bêmînak|ku}}
# Kesê ku dixwaze derbarê hin tiştan de xwedan agahî be herçend ku ew tişt ne têkidarî wî/wê ye.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|مەرەقدار}}
==== Formên alternatîv ====
* {{g|ku|meraqdar}}
==== Hevmane ====
* {{g|ku|bimereq}}
==== Jê ====
{{kol3|ku|cure=Jê
|mereqdarî
|mereqdarîtî
|mereqdartî
|mereqdar bûn<pos:lêker>
|mereqdar kirin<pos:lêker>
|mereqdarbûn<pos:navdêr>
|mereqdarkirin<pos:navdêr>
|mereqdarbûyî<pos:rengdêr>
|mereqdarkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|mereq|-dar}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|nuuskierig}}
* {{Z|de}}: {{W+|de|neugierig}}, {{W|de|versessen|guman=erê}}, {{W|de|wissbegierig|guman=erê}}, {{W|de|Dilettant|guman=erê}}
* {{Z|br}}: {{W+|br|kurius}}
* {{Z|da}}: {{W+|da|nysgerrig}}
* {{Z|eo}}: {{W+|eo|kurioza}}
* {{Z|fa}}: {{W+|fa|مشتاق}}, {{W+|fa|با حسرت}}
* {{Z|fi}}: {{W+|fi|utelias}}
* {{Z|fr}}: {{W|fr|curieux|m}}, {{W|fr|curieuse|f}}
* {{Z|nl}}: {{W+|nl|curieus}}, {{W+|nl|nieuwsgierig}}
* {{Z|en}}: {{W+|en|curious}}, {{W+|en|inquisitive}}, {{W+|en|interested}}, {{W+|en|eager}}, {{W+|en|juicy|guman=erê}}, 2 {{W+|en|keen}}, {{W+|en|desirous of}}, {{W|en|aspirant|guman=erê}}, {{W|en|overeager|guman=erê}}, {{W|en|tryhard|guman=erê}}, {{W|en|wannabe|guman=erê}}
* {{Z|it}}: {{W+|it|curioso}}
* {{Z|ca}}: {{W+|ca|curiós}}
* {{Z|qu}}: {{W+|qu|hañas}}
* {{Z|no}}: {{W+|no|kuriøs}}, {{W+|no|nysgjerrig}}
* {{Z|pt}}: {{W+|pt|curioso}}
* {{Z|ro}}: {{W+|ro|curios}}
* {{Z|scn}}: {{W+|scn|curiusa}}, {{W+|scn|curiusu}}
* {{Z|so}}: {{W+|so|barto}}
* {{Z|es}}: {{W+|es|curioso}}
* {{Z|sv}}: {{W+|sv|frågvis}}, {{W+|sv|nyfiken}}
* {{Z|tr}}: {{W+|tr|meraklı}}, {{W+|tr|bağımlı}}, {{W+|tr|düşkün}}, {{W+|tr|müptela}}, {{W+|tr|kırk merak}}, {{W|tr|araştırıcı|guman=erê}}
{{werger-bin}}
s6b28jtwotf45g7zmb1qixkwxoftbc7
6329837
6329836
2026-08-12T23:40:06Z
Wikihez
7344
6329837
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mereqdar}}
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştan [[zanîn|bizane]], kesa/ê ku [[bala xwe dan|bala xwe dide]] tiştan.
#* {{jêder-kovar|ku|jêgirtin=Rojekê ji hevalên Qasidê Xwedê yekî mîna me '''mereqdar''' jê pirsiye em ê li cenetê çi xwe bikin.|url=http://books.google.com.tr/books?id=H_-jDwAAQBAJ&pg=PA33&dq=%22mereqdar%22&hl=&cd=4&source=gbs_api|sernav=Cihê ku xeyala wê jî xweş e|nivîskar=Dilek Topaktaş|kovar=Siyer Dergisi|hejmar=6|weşanxane= Siyer Basim Yayin|rûpel=33|sal=2018}}
# Kesa/ê ku dixwaze tiştek hebe yan tiştekî [[bibîne]].
#* {{bêmînak|ku}}
# Kesê ku dixwaze derbarê hin tiştan de xwedan agahî be herçend ku ew tişt ne têkidarî wî/wê ye.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|مەرەقدار}}
==== Formên alternatîv ====
* {{g|ku|meraqdar}}
==== Hevmane ====
* {{g|ku|bimereq}}
==== Jê ====
{{kol3|ku|cure=Jê
|mereqdarî
|mereqdarîtî
|mereqdartî
|mereqdar bûn<pos:lêker>
|mereqdar kirin<pos:lêker>
|mereqdarbûn<pos:navdêr>
|mereqdarkirin<pos:navdêr>
|mereqdarbûyî<pos:rengdêr>
|mereqdarkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|mereq|-dar}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|nuuskierig}}
* {{Z|de}}: {{W+|de|neugierig}}, {{W|de|versessen|guman=erê}}, {{W|de|wissbegierig|guman=erê}}, {{W|de|Dilettant|guman=erê}}
* {{Z|br}}: {{W+|br|kurius}}
* {{Z|da}}: {{W+|da|nysgerrig}}
* {{Z|eo}}: {{W+|eo|kurioza}}
* {{Z|fa}}: {{W+|fa|مشتاق}}, {{W+|fa|با حسرت}}
* {{Z|fi}}: {{W+|fi|utelias}}
* {{Z|fr}}: {{W|fr|curieux|m}}, {{W|fr|curieuse|f}}
* {{Z|nl}}: {{W+|nl|curieus}}, {{W+|nl|nieuwsgierig}}
* {{Z|en}}: {{W+|en|curious}}, {{W+|en|inquisitive}}, {{W+|en|interested}}, {{W+|en|eager}}, {{W+|en|juicy|guman=erê}}, 2 {{W+|en|keen}}, {{W+|en|desirous of}}, {{W|en|aspirant|guman=erê}}, {{W|en|overeager|guman=erê}}, {{W|en|tryhard|guman=erê}}, {{W|en|wannabe|guman=erê}}
* {{Z|it}}: {{W+|it|curioso}}
* {{Z|ca}}: {{W+|ca|curiós}}
* {{Z|qu}}: {{W+|qu|hañas}}
* {{Z|no}}: {{W+|no|kuriøs}}, {{W+|no|nysgjerrig}}
* {{Z|pt}}: {{W+|pt|curioso}}
* {{Z|ro}}: {{W+|ro|curios}}
* {{Z|scn}}: {{W+|scn|curiusa}}, {{W+|scn|curiusu}}
* {{Z|so}}: {{W+|so|barto}}
* {{Z|es}}: {{W+|es|curioso}}
* {{Z|sv}}: {{W+|sv|frågvis}}, {{W+|sv|nyfiken}}
* {{Z|tr}}: {{W+|tr|meraklı}}, {{W+|tr|bağımlı}}, {{W+|tr|düşkün}}, {{W+|tr|müptela}}, {{W+|tr|kırk merak}}, {{W|tr|araştırıcı|guman=erê}}
{{werger-bin}}
k6xe7inn90ja93gxon3881gevs46o1c
6329838
6329837
2026-08-12T23:40:39Z
Wikihez
7344
6329838
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mereqdar}}
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştan [[zanîn|bizane]], kesa/ê ku [[bala xwe dan|bala xwe dide]] tiştan.
#* {{jêder-kovar|ku|jêgirtin=Rojekê ji hevalên Qasidê Xwedê yekî mîna me '''mereqdar''' jê pirsiye em ê li cenetê çi xwe bikin.|url=http://books.google.com.tr/books?id=H_-jDwAAQBAJ&pg=PA33&dq=%22mereqdar%22&hl=&cd=4&source=gbs_api|sernav=Cihê ku xeyala wê jî xweş e|nivîskar=Dilek Topaktaş|kovar=Siyer Dergisi|hejmar=6|weşanxane= Siyer Basim Yayin|rûpel=33|sal=2018}}
# Kesa/ê ku dixwaze tiştek hebe yan tiştekî [[bibîne]].
#* {{bêmînak|ku}}
# Kesê ku [[xwastin|dixwaze]] [[derbar|derbarê]] [[hin|hin]] [[tişt|tiştan]] de [[xwedan|xwedan]] [[agahî|agahî]] be [[herçend|herçend]] ku ew tişt ne [[têkidarî|têkidarî]] wî/wê ye.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|مەرەقدار}}
==== Formên alternatîv ====
* {{g|ku|meraqdar}}
==== Hevmane ====
* {{g|ku|bimereq}}
==== Jê ====
{{kol3|ku|cure=Jê
|mereqdarî
|mereqdarîtî
|mereqdartî
|mereqdar bûn<pos:lêker>
|mereqdar kirin<pos:lêker>
|mereqdarbûn<pos:navdêr>
|mereqdarkirin<pos:navdêr>
|mereqdarbûyî<pos:rengdêr>
|mereqdarkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|mereq|-dar}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|nuuskierig}}
* {{Z|de}}: {{W+|de|neugierig}}, {{W|de|versessen|guman=erê}}, {{W|de|wissbegierig|guman=erê}}, {{W|de|Dilettant|guman=erê}}
* {{Z|br}}: {{W+|br|kurius}}
* {{Z|da}}: {{W+|da|nysgerrig}}
* {{Z|eo}}: {{W+|eo|kurioza}}
* {{Z|fa}}: {{W+|fa|مشتاق}}, {{W+|fa|با حسرت}}
* {{Z|fi}}: {{W+|fi|utelias}}
* {{Z|fr}}: {{W|fr|curieux|m}}, {{W|fr|curieuse|f}}
* {{Z|nl}}: {{W+|nl|curieus}}, {{W+|nl|nieuwsgierig}}
* {{Z|en}}: {{W+|en|curious}}, {{W+|en|inquisitive}}, {{W+|en|interested}}, {{W+|en|eager}}, {{W+|en|juicy|guman=erê}}, 2 {{W+|en|keen}}, {{W+|en|desirous of}}, {{W|en|aspirant|guman=erê}}, {{W|en|overeager|guman=erê}}, {{W|en|tryhard|guman=erê}}, {{W|en|wannabe|guman=erê}}
* {{Z|it}}: {{W+|it|curioso}}
* {{Z|ca}}: {{W+|ca|curiós}}
* {{Z|qu}}: {{W+|qu|hañas}}
* {{Z|no}}: {{W+|no|kuriøs}}, {{W+|no|nysgjerrig}}
* {{Z|pt}}: {{W+|pt|curioso}}
* {{Z|ro}}: {{W+|ro|curios}}
* {{Z|scn}}: {{W+|scn|curiusa}}, {{W+|scn|curiusu}}
* {{Z|so}}: {{W+|so|barto}}
* {{Z|es}}: {{W+|es|curioso}}
* {{Z|sv}}: {{W+|sv|frågvis}}, {{W+|sv|nyfiken}}
* {{Z|tr}}: {{W+|tr|meraklı}}, {{W+|tr|bağımlı}}, {{W+|tr|düşkün}}, {{W+|tr|müptela}}, {{W+|tr|kırk merak}}, {{W|tr|araştırıcı|guman=erê}}
{{werger-bin}}
tao1yjq0h74cxs36ryhkgbl7q6mrs21
6329842
6329838
2026-08-12T23:42:41Z
Wikihez
7344
/* Rengdêr */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329842
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mereqdar}}
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştan [[zanîn|bizane]], kesa/ê ku [[bala xwe dan|bala xwe dide]] tiştan.
#* {{jêder-kovar|ku|jêgirtin=Rojekê ji hevalên Qasidê Xwedê yekî mîna me '''mereqdar''' jê pirsiye em ê li cenetê çi xwe bikin.|url=http://books.google.com.tr/books?id=H_-jDwAAQBAJ&pg=PA33&dq=%22mereqdar%22&hl=&cd=4&source=gbs_api|sernav=Cihê ku xeyala wê jî xweş e|nivîskar=Dilek Topaktaş|kovar=Siyer Dergisi|hejmar=6|weşanxane= Siyer Basim Yayin|rûpel=33|sal=2018}}
# Kesa/ê ku dixwaze tiştek hebe yan tiştekî [[bibîne]].
#* {{bêmînak|ku}}
# Kesê ku [[xwastin|dixwaze]] [[derbare|derbarê]] [[hin|hin]] [[tişt|tiştan]] de [[xwedan|xwedan]] [[agahî|agahî]] be [[herçend|herçend]] ku ew tişt ne [[têkidarî|têkidarî]] wî/wê ye.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|مەرەقدار}}
==== Formên alternatîv ====
* {{g|ku|meraqdar}}
==== Hevmane ====
* {{g|ku|bimereq}}
==== Jê ====
{{kol3|ku|cure=Jê
|mereqdarî
|mereqdarîtî
|mereqdartî
|mereqdar bûn<pos:lêker>
|mereqdar kirin<pos:lêker>
|mereqdarbûn<pos:navdêr>
|mereqdarkirin<pos:navdêr>
|mereqdarbûyî<pos:rengdêr>
|mereqdarkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|mereq|-dar}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|nuuskierig}}
* {{Z|de}}: {{W+|de|neugierig}}, {{W|de|versessen|guman=erê}}, {{W|de|wissbegierig|guman=erê}}, {{W|de|Dilettant|guman=erê}}
* {{Z|br}}: {{W+|br|kurius}}
* {{Z|da}}: {{W+|da|nysgerrig}}
* {{Z|eo}}: {{W+|eo|kurioza}}
* {{Z|fa}}: {{W+|fa|مشتاق}}, {{W+|fa|با حسرت}}
* {{Z|fi}}: {{W+|fi|utelias}}
* {{Z|fr}}: {{W|fr|curieux|m}}, {{W|fr|curieuse|f}}
* {{Z|nl}}: {{W+|nl|curieus}}, {{W+|nl|nieuwsgierig}}
* {{Z|en}}: {{W+|en|curious}}, {{W+|en|inquisitive}}, {{W+|en|interested}}, {{W+|en|eager}}, {{W+|en|juicy|guman=erê}}, 2 {{W+|en|keen}}, {{W+|en|desirous of}}, {{W|en|aspirant|guman=erê}}, {{W|en|overeager|guman=erê}}, {{W|en|tryhard|guman=erê}}, {{W|en|wannabe|guman=erê}}
* {{Z|it}}: {{W+|it|curioso}}
* {{Z|ca}}: {{W+|ca|curiós}}
* {{Z|qu}}: {{W+|qu|hañas}}
* {{Z|no}}: {{W+|no|kuriøs}}, {{W+|no|nysgjerrig}}
* {{Z|pt}}: {{W+|pt|curioso}}
* {{Z|ro}}: {{W+|ro|curios}}
* {{Z|scn}}: {{W+|scn|curiusa}}, {{W+|scn|curiusu}}
* {{Z|so}}: {{W+|so|barto}}
* {{Z|es}}: {{W+|es|curioso}}
* {{Z|sv}}: {{W+|sv|frågvis}}, {{W+|sv|nyfiken}}
* {{Z|tr}}: {{W+|tr|meraklı}}, {{W+|tr|bağımlı}}, {{W+|tr|düşkün}}, {{W+|tr|müptela}}, {{W+|tr|kırk merak}}, {{W|tr|araştırıcı|guman=erê}}
{{werger-bin}}
ecbqua9smu0obhmmeojtuwhapy8xrma
6329843
6329842
2026-08-12T23:43:35Z
Wikihez
7344
/* Rengdêr */
6329843
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mereqdar}}
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştan [[zanîn|bizane]], kesa/ê ku [[bala xwe dan|bala xwe dide]] tiştan.
#* {{jêder-kovar|ku|jêgirtin=Rojekê ji hevalên Qasidê Xwedê yekî mîna me '''mereqdar''' jê pirsiye em ê li cenetê çi xwe bikin.|url=http://books.google.com.tr/books?id=H_-jDwAAQBAJ&pg=PA33&dq=%22mereqdar%22&hl=&cd=4&source=gbs_api|sernav=Cihê ku xeyala wê jî xweş e|nivîskar=Dilek Topaktaş|kovar=Siyer Dergisi|hejmar=6|weşanxane= Siyer Basim Yayin|rûpel=33|sal=2018}}
# Kesa/ê ku dixwaze tiştek hebe yan tiştekî [[bibîne]].
#* {{bêmînak|ku}}
# Kesê ku [[xwastin|dixwaze]] [[derbare|derbarê]] [[hin|hin]] [[tişt|tiştan]] de [[xwedan|xwedan]] [[agahî|agahî]] be [[herçend|herçend]] ku ew tişt ne [[têkildar|têkildarî]] wî/wê ye.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|مەرەقدار}}
==== Formên alternatîv ====
* {{g|ku|meraqdar}}
==== Hevmane ====
* {{g|ku|bimereq}}
==== Jê ====
{{kol3|ku|cure=Jê
|mereqdarî
|mereqdarîtî
|mereqdartî
|mereqdar bûn<pos:lêker>
|mereqdar kirin<pos:lêker>
|mereqdarbûn<pos:navdêr>
|mereqdarkirin<pos:navdêr>
|mereqdarbûyî<pos:rengdêr>
|mereqdarkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|mereq|-dar}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|nuuskierig}}
* {{Z|de}}: {{W+|de|neugierig}}, {{W|de|versessen|guman=erê}}, {{W|de|wissbegierig|guman=erê}}, {{W|de|Dilettant|guman=erê}}
* {{Z|br}}: {{W+|br|kurius}}
* {{Z|da}}: {{W+|da|nysgerrig}}
* {{Z|eo}}: {{W+|eo|kurioza}}
* {{Z|fa}}: {{W+|fa|مشتاق}}, {{W+|fa|با حسرت}}
* {{Z|fi}}: {{W+|fi|utelias}}
* {{Z|fr}}: {{W|fr|curieux|m}}, {{W|fr|curieuse|f}}
* {{Z|nl}}: {{W+|nl|curieus}}, {{W+|nl|nieuwsgierig}}
* {{Z|en}}: {{W+|en|curious}}, {{W+|en|inquisitive}}, {{W+|en|interested}}, {{W+|en|eager}}, {{W+|en|juicy|guman=erê}}, 2 {{W+|en|keen}}, {{W+|en|desirous of}}, {{W|en|aspirant|guman=erê}}, {{W|en|overeager|guman=erê}}, {{W|en|tryhard|guman=erê}}, {{W|en|wannabe|guman=erê}}
* {{Z|it}}: {{W+|it|curioso}}
* {{Z|ca}}: {{W+|ca|curiós}}
* {{Z|qu}}: {{W+|qu|hañas}}
* {{Z|no}}: {{W+|no|kuriøs}}, {{W+|no|nysgjerrig}}
* {{Z|pt}}: {{W+|pt|curioso}}
* {{Z|ro}}: {{W+|ro|curios}}
* {{Z|scn}}: {{W+|scn|curiusa}}, {{W+|scn|curiusu}}
* {{Z|so}}: {{W+|so|barto}}
* {{Z|es}}: {{W+|es|curioso}}
* {{Z|sv}}: {{W+|sv|frågvis}}, {{W+|sv|nyfiken}}
* {{Z|tr}}: {{W+|tr|meraklı}}, {{W+|tr|bağımlı}}, {{W+|tr|düşkün}}, {{W+|tr|müptela}}, {{W+|tr|kırk merak}}, {{W|tr|araştırıcı|guman=erê}}
{{werger-bin}}
rin8l2xklhrevwu19v497bo8rxn7tob
6329909
6329843
2026-08-13T01:12:07Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329909
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|mereqdar}}
{{rengdêr|ku}}
# Kesa/ê ku [[xwestin|dixwaze]] tiştan [[zanîn|bizane]], kesa/ê ku [[bala xwe dan|bala xwe dide]] tiştan.
#* {{jêder-kovar|ku|jêgirtin=Rojekê ji hevalên Qasidê Xwedê yekî mîna me '''mereqdar''' jê pirsiye em ê li cenetê çi xwe bikin.|url=http://books.google.com.tr/books?id=H_-jDwAAQBAJ&pg=PA33&dq=%22mereqdar%22&hl=&cd=4&source=gbs_api|sernav=Cihê ku xeyala wê jî xweş e|nivîskar=Dilek Topaktaş|kovar=Siyer Dergisi|hejmar=6|weşanxane= Siyer Basim Yayin|rûpel=33|sal=2018}}
# Kesa/ê ku dixwaze tiştek hebe yan tiştekî [[bibîne]].
#* {{bêmînak|ku}}
# Kesê ku [[xwastin|dixwaze]] [[derbare|derbarê]] [[hin]] [[tişt]]an de [[xwedan]] [[agahî]] be [[herçend]] ku ew tişt ne [[têkildar]]î wî/wê ye.
#* {{bêmînak|ku}}
==== Bi alfabeyên din ====
* {{ku-ar|مەرەقدار}}
==== Formên alternatîv ====
* {{g|ku|meraqdar}}
==== Hevmane ====
* {{g|ku|bimereq}}
==== Jê ====
{{kol3|ku|cure=Jê
|mereqdarî
|mereqdarîtî
|mereqdartî
|mereqdar bûn<pos:lêker>
|mereqdar kirin<pos:lêker>
|mereqdarbûn<pos:navdêr>
|mereqdarkirin<pos:navdêr>
|mereqdarbûyî<pos:rengdêr>
|mereqdarkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{paş|ku|mereq|-dar}}.
==== Werger ====
{{werger-ser}}
* {{Z|af}}: {{W+|af|nuuskierig}}
* {{Z|de}}: {{W+|de|neugierig}}, {{W|de|versessen|guman=erê}}, {{W|de|wissbegierig|guman=erê}}, {{W|de|Dilettant|guman=erê}}
* {{Z|br}}: {{W+|br|kurius}}
* {{Z|da}}: {{W+|da|nysgerrig}}
* {{Z|eo}}: {{W+|eo|kurioza}}
* {{Z|fa}}: {{W+|fa|مشتاق}}, {{W+|fa|با حسرت}}
* {{Z|fi}}: {{W+|fi|utelias}}
* {{Z|fr}}: {{W|fr|curieux|m}}, {{W|fr|curieuse|f}}
* {{Z|nl}}: {{W+|nl|curieus}}, {{W+|nl|nieuwsgierig}}
* {{Z|en}}: {{W+|en|curious}}, {{W+|en|inquisitive}}, {{W+|en|interested}}, {{W+|en|eager}}, {{W+|en|juicy|guman=erê}}, 2 {{W+|en|keen}}, {{W+|en|desirous of}}, {{W|en|aspirant|guman=erê}}, {{W|en|overeager|guman=erê}}, {{W|en|tryhard|guman=erê}}, {{W|en|wannabe|guman=erê}}
* {{Z|it}}: {{W+|it|curioso}}
* {{Z|ca}}: {{W+|ca|curiós}}
* {{Z|qu}}: {{W+|qu|hañas}}
* {{Z|no}}: {{W+|no|kuriøs}}, {{W+|no|nysgjerrig}}
* {{Z|pt}}: {{W+|pt|curioso}}
* {{Z|ro}}: {{W+|ro|curios}}
* {{Z|scn}}: {{W+|scn|curiusa}}, {{W+|scn|curiusu}}
* {{Z|so}}: {{W+|so|barto}}
* {{Z|es}}: {{W+|es|curioso}}
* {{Z|sv}}: {{W+|sv|frågvis}}, {{W+|sv|nyfiken}}
* {{Z|tr}}: {{W+|tr|meraklı}}, {{W+|tr|bağımlı}}, {{W+|tr|düşkün}}, {{W+|tr|müptela}}, {{W+|tr|kırk merak}}, {{W|tr|araştırıcı|guman=erê}}
{{werger-bin}}
cf3xzbpj3suaj5ufe9k9qadztsur8g8
hişîn
0
45774
6329718
6328985
2026-08-12T20:42:17Z
Wikihez
7344
6329718
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-kitêb|ku|metna-orîjînal=ku:بحرا رجز بو چه خوش مرفل<br>اخضر چه کسکه احمر خو صوره<br>ازرق '''هشینه''' جورب چه گوره|jêgirtin=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î}}|sernav={{w|Nûbihara biçûkan}}|sal=1683}}
# {{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}}
5jrc5pwr4shqhl7tr118jhen4xukogc
6329719
6329718
2026-08-12T20:43:04Z
Wikihez
7344
/* Rengdêr */ ok?
6329719
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-kitêb|ku|metna-orîjînal=ku:<br>بحرا رجز بو چه خوش مرفل<br>اخضر چه کسکه احمر خو صوره<br>ازرق '''هشینه''' جورب چه گوره<br>|jêgirtin=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î}}|sernav={{w|Nûbihara biçûkan}}|sal=1683}}
# {{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}}
ld7zicqtvx2gn4ouk3kz04kzalrsjcp
6329720
6329719
2026-08-12T20:43:16Z
Wikihez
7344
6329720
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-kitêb|ku|metna-orîjînal=ku:<br>بحرا رجز بو چه خوش مرفل<br>اخضر چه کسکه احمر خو صوره<br>ازرق '''هشینه''' جورب چه گوره|jêgirtin=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î}}|sernav={{w|Nûbihara biçûkan}}|sal=1683}}
# {{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}}
sbl4imm01kroew5jnvv2z9x02d0ynop
6329721
6329720
2026-08-12T20:43:57Z
Wikihez
7344
/* Jê */
6329721
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-kitêb|ku|metna-orîjînal=ku:<br>بحرا رجز بو چه خوش مرفل<br>اخضر چه کسکه احمر خو صوره<br>ازرق '''هشینه''' جورب چه گوره|jêgirtin=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î}}|sernav={{w|Nûbihara biçûkan}}|sal=1683}}
# {{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ê ====
{{kol3|ku|cure=Jê
|hişîn bûn<crz:lêker>
|hişîn kirin<crz:lêker>
|hişînbûn<crz:navdêr>
|hişînkirin<crz:navdêr>
|hişînbûyî<crz:rengdêr>
|hişînkirî<crz:rengdêr>
}}
==== Têkildar ====
* {{g|ku|hişandin}}
==== Etîmolojî ====
Ji {{paş|ku|hiş|-în}}.
==== Bide ber ====
* {{g|ku|hisîn}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
1v0evuh6jp4ixiiojjd3qa5v0qg6v1u
manewî
0
46996
6329648
6244597
2026-08-12T15:32:43Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329648
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[arişî]], [[ruhî]], [[canî]], [[giyanî]], [[exlaqî]], [[moralî]], [[psîkolojî]], [[sincî]], <br>ne [[madî]] yan [[bedenî]]
#:''alîkariya madî û manewî'' (hem pare û hem jî [[sempatî]]), <br>''zarrokên manewî'' (zarrokên ku ne yên kesekî bi xwe ne lê wî xwedî kirine), <br>''Gelek kes Mistefa Barzanî wek babê manewî yê neteweya kurd dipejirînin.''
#* {{nimûne?|ku}}
==== Formên alternatîv ====
* [[mahnewî]]
* [[mehnewî]]
* [[me'newî]]
==== Ji wêjeyê ====
''Rewşenbîr û nivîskarên ku êş nekişandine hêjmara wan pir kêm e. M. Uzun herçend bi awayeke ferdî êş kişandibe jî, gelê Kurd bi xurtî xwedî lê derketiye û bi qasî ku hewce bûye zêdetir, qedir û qimetê nîşan dayê. Orhan Pamuk û Ahmet Altan dibêjin “Kurdan qîmeta Mehmed Uzun nezanî” Ev daxuyaniyên wan, an nîşan didin ku ew ji rastiyê ne hayedar in an jî ev yek gilî û gazincên asayî yên rewşenbîran in. Piştî ku nexweşiya wî ket rojevê, navê wî li pir deran hat lêkirin. Bi taybetî jî Şaredariya Amedê ji aliyê madî û manewî ve pir xizmet girtin ser xwe. Hem belediye bi xwe seferber bû hem jî ew şevbêrkên dengbêjan ên ku ji bo xatirê wî hatibûn amade kirin gelek watedar bûn. Herwiha hin rewşenbîrên Tirkiyeyî û hukumeta Kurdistanê jî xwedî lê derketin. Heta niha kîjan rewşenbîr bi merasimeke ewqas berbiçav û girseyî hatiye rêwî kirin. Ger mirov bibêje Kurd xwedî li M. Uzun derneketine, neheqî ye.''
(Aydin Dere: ''Pişti Mehmed Uzun rexneyên vekirî'', Amidakurd.com, 11/2007)
==== Etîmolojî ====
Ji {{ji|ar|ku}}
==== Jê ====
* [[manewîtî]]
* [[manewiyat]]
* [[manewiyet]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|geistig}}
* {{Z|fa}}: {{W+|fa|معنوی}}
* {{Z|fi}}: {{W+|fi|henkinen}}
* {{Z|en}}: {{W+|en|spiritual}}, {{W+|en|intangible}}, {{W+|en|immaterial}}, {{W+|en|moral}}, {{W+|en|pastoral}}, {{W+|en|psychological}}, {{W+|en|unworldly}}, {{W|en|manichean|guman=erê}}
* {{Z|tr}}: {{W+|tr|manevi}}, {{W+|tr|tinsel}}
{{werger-bin}}
hjj46oetliahdmfytkszlwko76mnbau
6329650
6329648
2026-08-12T15:41:08Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329650
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[arişî]], [[ruhî]], [[canî]], [[giyanî]], [[exlaqî]], [[moralî]], [[psîkolojî]], [[sincî]], <br>ne [[madî]] yan [[bedenî]]
#:''alîkariya madî û manewî'' (hem pare û hem jî [[sempatî]]), <br>''zarrokên manewî'' (zarrokên ku ne yên kesekî bi xwe ne lê wî xwedî kirine), <br>''Gelek kes Mistefa Barzanî wek babê manewî yê neteweya kurd dipejirînin.''
#* {{nimûne?|ku}}
==== Ji wêjeyê ====
''Rewşenbîr û nivîskarên ku êş nekişandine hêjmara wan pir kêm e. M. Uzun herçend bi awayeke ferdî êş kişandibe jî, gelê Kurd bi xurtî xwedî lê derketiye û bi qasî ku hewce bûye zêdetir, qedir û qimetê nîşan dayê. Orhan Pamuk û Ahmet Altan dibêjin “Kurdan qîmeta Mehmed Uzun nezanî” Ev daxuyaniyên wan, an nîşan didin ku ew ji rastiyê ne hayedar in an jî ev yek gilî û gazincên asayî yên rewşenbîran in. Piştî ku nexweşiya wî ket rojevê, navê wî li pir deran hat lêkirin. Bi taybetî jî Şaredariya Amedê ji aliyê madî û manewî ve pir xizmet girtin ser xwe. Hem belediye bi xwe seferber bû hem jî ew şevbêrkên dengbêjan ên ku ji bo xatirê wî hatibûn amade kirin gelek watedar bûn. Herwiha hin rewşenbîrên Tirkiyeyî û hukumeta Kurdistanê jî xwedî lê derketin. Heta niha kîjan rewşenbîr bi merasimeke ewqas berbiçav û girseyî hatiye rêwî kirin. Ger mirov bibêje Kurd xwedî li M. Uzun derneketine, neheqî ye.''
(Aydin Dere: ''Pişti Mehmed Uzun rexneyên vekirî'', Amidakurd.com, 11/2007)
==== Formên alternatîv ====
* [[mahnewî]]
* [[mehnewî]]
* [[me'newî]]
==== Jê ====
* [[manewîtî]]
* [[manewiyat]]
* [[manewiyet]]
==== Etîmolojî ====
Ji {{ji|ar|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|geistig}}
* {{Z|fa}}: {{W+|fa|معنوی}}
* {{Z|fi}}: {{W+|fi|henkinen}}
* {{Z|en}}: {{W+|en|spiritual}}, {{W+|en|intangible}}, {{W+|en|immaterial}}, {{W+|en|moral}}, {{W+|en|pastoral}}, {{W+|en|psychological}}, {{W+|en|unworldly}}, {{W|en|manichean|guman=erê}}
* {{Z|tr}}: {{W+|tr|manevi}}, {{W+|tr|tinsel}}
{{werger-bin}}
bytqcfmm04zmxhfq2raxwijilcxcy2e
online
0
47044
6329892
6329377
2026-08-13T00:33:40Z
Wikihez
7344
6329892
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
: {{ku-tîp|onlayn}}
* {{ku-IPA|onlayn}}
* {{kîte|ku|on|line}}
=== Rengdêr ===
{{rengdêr|ku}}
# {{f|ku|informatîk}} [[serhêl]], [[serxet]], [[liserxetê]], [[elektronîkî]], li ser [[Internet]]ê
#: {{dijmane|ku|offline|derhêl|derxet}}
#: {{nimûne|ku|Gelek kovarên kurdî yên '''online''' hene.|anku li ser Internetê derdikevin, ne li ser kaxezê|rêz=1}}
#* {{jêder|ku|jêgirtin=Malpera Kitêbxaneyê têt nû kirin. Gelek pirtûkên dijîtalîzekirî dê di malpera nû de bên bi cih kirin. Hinek agahiyên nû û babetên nû dê lê bên zêde kirin û madeyên kevin dê bên serast kirin. Herweha, îmkana lêgerînê di kataloga '''onlineyê''' ya Kitêbxaneyê de hêsantir dibe. Ez ji vê zêdetir behs nakim ta ko malper temam dibe û dikeve karî.|Newzad Hirorî di hevpeyivînekê de li gel Enwer Karahan, Nefel.com, 12/2007}}
==== Etîmolojî ====
Ji {{ji|en|ku|online}} ji {{q|en|on|w=li ser}} + {{q|en|line|w=hêl, xet}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|eingeschaltet}}, {{W+|de|verbunden}}, {{W+|de|online}}
* {{Z|fi}}: {{W+|fi|sähköinen}}, {{W+|fi|online}}
* {{Z|fr}}: {{W+|fr|en ligne}}
* {{Z|nl}}: {{W+|nl|online}}, {{W+|nl|verbonden}}
* {{Z|en}}: {{W+|en|online}}
* {{Z|pt}}: {{W+|pt|em linha}}, {{W+|pt|online}}
* {{Z|es}}: {{W+|es|en línea}}
* {{Z|tr}}: {{W+|tr|çevrim içi}}
{{werger-bin}}
== {{ziman|de}} ==
=== Bilêvkirin ===
* {{IPA|de|/ˈɔnlaɪ̯n/}}
* {{deng|de|De-online.ogg}}
* {{kîte|de|on|line}}
=== Rengdêr ===
{{rengdêr|de}}
# {{g|ku|online}}, [[serhêl]], [[serxet]]
#* {{bêmînak|de}}
jbqidf7h97lsas5akss1816839nvust
pronav
0
48156
6329902
6136239
2026-08-13T00:52:28Z
Wikihez
7344
6329902
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=?}}
# {{f|ku|rêziman}} [[cînav]], [[zemîr]], [[pronom]]
#* {{jêder-pirtûk|ku|jêgirtin='''Pronav''' ew bêje ye ko dikeve şûna navdêrê. Pronav, mêjer û carina jî zayendê navdêrê dide zanîn. Ji hêla din pronav wezîfeyên navdêra ko dinimîne li xwe digere û wan ditîne cih.|nivîskar=Celadet Alî Bedir-Xan|sernav=Elfabêya kurdî & Bingehên gramera kurdmancî|weşanxane=Nefel|cih=Stockholm|sal=2002|rûpel=72}}
# {{kontrol|rêz=erê|[[şûnnav]]}}
==== Etîmolojî ====
Ji {{qertaf|ku|pro-|nav}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Pronomen|n}}, {{W+|de|Fürwort|n}}, {{W+|de|Nomen|n}}
* {{Z|cs}}: {{W+|cs|zájmeno|n}}
* {{Z|ar}}: {{W+|ar|ضمير|guman=erê}}, {{W+|ar|ضمیر|guman=erê}}, {{W-|ar|الضمــیر|guman=erê}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|fa}}: {{W+|fa|ضمیر}} (zamir), {{W-|fa|پیشنام}} (pîşnam), {{W+|fa|ضمایر}}, {{W+|fa|ضمیر}}
* {{Z|fo}}: {{W+|fo|fornavn}}
* {{Z|fi}}: {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom}}
* {{Z|fy}}: {{W+|fy|foarnamwurd}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|it}}: {{W+|it|pronome|m}}
* {{Z|is}}: {{W+|is|fornafn}}
* {{Z|ja}}: {{W+|ja|代名詞}} (daimeishí)
* {{Z|ca}}: {{W+|ca|pronom}}
* {{Z|la}}: {{W-|la|pronomen|n}}
* {{Z|ln}}: {{W-|ln|mokitani-nkómbó}}
* {{Z|no}}:
* {{Z|pap}}: {{W-|pap|pronòmber}}
* {{Z|pl}}: {{W+|pl|zaimek|m}}
* {{Z|pt}}: {{W+|pt|pronome|m}}
* {{Z|ro}}: {{W+|ro|pronume|n}}
* {{Z|ru}}: {{W+|ru|местоимение}} (mestoiménije)
* {{Z|es}}: {{W+|es|pronombre|m}}
* {{Z|sv}}: {{W+|sv|pronomen}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W+|tr|adıl}}
* {{Z|grc}}: {{W-|grc|ἀντωνυμία}} (antōnymía)
* {{Z|el}}: {{W+|el|αντωνυμία}} (andonimía)
{{werger-bin}}
hfxm20jab60xc408g1imgzltw5yy6f5
6329903
6329902
2026-08-13T00:53:18Z
Wikihez
7344
/* Etîmolojî */
6329903
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=?}}
# {{f|ku|rêziman}} [[cînav]], [[zemîr]], [[pronom]]
#* {{jêder-pirtûk|ku|jêgirtin='''Pronav''' ew bêje ye ko dikeve şûna navdêrê. Pronav, mêjer û carina jî zayendê navdêrê dide zanîn. Ji hêla din pronav wezîfeyên navdêra ko dinimîne li xwe digere û wan ditîne cih.|nivîskar=Celadet Alî Bedir-Xan|sernav=Elfabêya kurdî & Bingehên gramera kurdmancî|weşanxane=Nefel|cih=Stockholm|sal=2002|rûpel=72}}
# {{kontrol|rêz=erê|[[şûnnav]]}}
==== Etîmolojî ====
{{yekser|fr|ku|pronom<t:zemîr>}}.{{anlz|ku|pro-|nav}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Pronomen|n}}, {{W+|de|Fürwort|n}}, {{W+|de|Nomen|n}}
* {{Z|cs}}: {{W+|cs|zájmeno|n}}
* {{Z|ar}}: {{W+|ar|ضمير|guman=erê}}, {{W+|ar|ضمیر|guman=erê}}, {{W-|ar|الضمــیر|guman=erê}}
* {{Z|eo}}: {{W+|eo|pronomo}}
* {{Z|fa}}: {{W+|fa|ضمیر}} (zamir), {{W-|fa|پیشنام}} (pîşnam), {{W+|fa|ضمایر}}, {{W+|fa|ضمیر}}
* {{Z|fo}}: {{W+|fo|fornavn}}
* {{Z|fi}}: {{W+|fi|pronomini}}
* {{Z|fr}}: {{W+|fr|pronom}}
* {{Z|fy}}: {{W+|fy|foarnamwurd}}
* {{Z|nl}}: {{W+|nl|voornaamwoord|n}}
* {{Z|en}}: {{W+|en|pronoun}}
* {{Z|ia}}: {{W+|ia|pronomine}}
* {{Z|it}}: {{W+|it|pronome|m}}
* {{Z|is}}: {{W+|is|fornafn}}
* {{Z|ja}}: {{W+|ja|代名詞}} (daimeishí)
* {{Z|ca}}: {{W+|ca|pronom}}
* {{Z|la}}: {{W-|la|pronomen|n}}
* {{Z|ln}}: {{W-|ln|mokitani-nkómbó}}
* {{Z|no}}:
* {{Z|pap}}: {{W-|pap|pronòmber}}
* {{Z|pl}}: {{W+|pl|zaimek|m}}
* {{Z|pt}}: {{W+|pt|pronome|m}}
* {{Z|ro}}: {{W+|ro|pronume|n}}
* {{Z|ru}}: {{W+|ru|местоимение}} (mestoiménije)
* {{Z|es}}: {{W+|es|pronombre|m}}
* {{Z|sv}}: {{W+|sv|pronomen}}
* {{Z|tr}}: {{W+|tr|zamir}}, {{W+|tr|adıl}}
* {{Z|grc}}: {{W-|grc|ἀντωνυμία}} (antōnymía)
* {{Z|el}}: {{W+|el|αντωνυμία}} (andonimía)
{{werger-bin}}
93keacd7521dkqjjn9wc6jwl485hyxb
benav
0
50857
6329701
6298645
2026-08-12T19:36:23Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329701
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Fraxinus excelsior 002.jpg|thumb|Darek '''benavê'''.]]
[[Wêne:Fraxinus excelsior.jpg|thumb|Pelên '''benavê'''.]]
{{navdêr|ku|z=m}}
# {{f|ku|dar}} [[dar|Dar]]ek e.
#* {{jêder|ku|jêgirtin=Ji min bihata min ê ji te re çi bi rê bikira, tu dizanî? Di serî de terhek dara mazî. Cotek kevokên spî. Hespekî kumêt î kapreş. Karxezaleke kovî. Xencereke destî û kalan zîv. Çiqulek dara kinêrê. Sewilek ava kaniya Girdeşîn. Destek şal û şapik. Goreyeke rîs a sê nix. Gopalek ji dara '''benavê'''. Bazbendek. Qevdek nêrgizan. Baqek şuşan. Tayek rihan. Bermilek beybûn. Gurzek qurnefîl. Pelek berfa serê çiyayê Mereto. Kulmek ax ji qebra Bermal û teyrekî baz.|Merdan Newayî: ''Ji bo roja me'', Canemcafem.com, 3/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[benavistan]]
* [[benavî]]
* [[darbenav]]
* [[darbenavistan]]
* [[darbenavî]]
{{bend}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[benaw]]
* [[bênav]]
* [[binav]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Esche|f}}
* {{Z|cs}}: {{W+|cs|jasan|m}}
* {{Z|zh}}: {{W-|zh|桉樹}}, [[桉树]] (ān shù)
* {{Z|ar}}: {{W-|ar|شجرة الدردار}} (şeceret ed-derdar)
* {{Z|et}}: {{W+|et|saar}}
* {{Z|fa}}: {{W-|fa|نوعی درخت}}
* {{Z|fi}}: {{W+|fi|saarni}}
* {{Z|fr}}: {{W+|fr|frêne|m}}
* {{Z|nl}}: {{W+|nl|es|m}}
* {{Z|en}}: {{W+|en|ash tree}}, {{W+|en|ash}}, {{W+|en|willow tree|guman=erê}}
* {{Z|it}}: {{W+|it|frassino|m}}
* {{Z|is}}: {{W+|is|askur|m}}
* {{Z|ja}}: {{W+|ja|トネリコ|tr=toneriko}}
* {{Z|ca}}: {{W-|ca|freixe|m}}
* {{Z|mk}}: {{W-|mk|јасен|tr=jasen}}
* {{Z|hu}}: {{W+|hu|kőris}}
* {{Z|pl}}: {{W+|pl|jesion|m}}
* {{Z|pt}}: {{W+|pt|freixo|m}}
* {{Z|ro}}: {{W+|ro|frasin|m}}
* {{Z|ru}}: [[ясень]] (jásen’)
* {{Z|sh}}: {{W+|sh|jasen|m}}
* {{Z|sco}}: {{W-|sco|uinnseann|m}}
* {{Z|es}}: {{W+|es|fresno|m}}
* {{Z|sv}}: {{W+|sv|ask}}
* {{Z|tr}}: {{W+|tr|dişbudak}}, {{W-|tr|zeytingiller}}
{{werger-bin}}
rfkqvro7w3nx8mmhsgno5efzc04ge5e
6329743
6329701
2026-08-12T21:12:08Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329743
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Fraxinus excelsior 002.jpg|thumb|Darek '''benavê'''.]]
[[Wêne:Fraxinus excelsior.jpg|thumb|Pelên '''benavê'''.]]
{{navdêr|ku|z=m}}
# {{f|ku|dar}} [[dar|Darek]] e.
#* {{jêder|ku|jêgirtin=Ji min bihata min ê ji te re çi bi rê bikira, tu dizanî? Di serî de terhek dara mazî. Cotek kevokên spî. Hespekî kumêt î kapreş. Karxezaleke kovî. Xencereke destî û kalan zîv. Çiqulek dara kinêrê. Sewilek ava kaniya Girdeşîn. Destek şal û şapik. Goreyeke rîs a sê nix. Gopalek ji dara '''benavê'''. Bazbendek. Qevdek nêrgizan. Baqek şuşan. Tayek rihan. Bermilek beybûn. Gurzek qurnefîl. Pelek berfa serê çiyayê Mereto. Kulmek ax ji qebra Bermal û teyrekî baz.|Merdan Newayî: ''Ji bo roja me'', Canemcafem.com, 3/2007}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Jê ====
* [[benavistan]]
* [[benavî]]
* [[darbenav]]
* [[darbenavistan]]
* [[darbenavî]]
{{bend}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bide ber ====
* [[benaw]]
* [[bênav]]
* [[binav]]
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Esche|f}}
* {{Z|cs}}: {{W+|cs|jasan|m}}
* {{Z|zh}}: {{W-|zh|桉樹}}, [[桉树]] (ān shù)
* {{Z|ar}}: {{W-|ar|شجرة الدردار}} (şeceret ed-derdar)
* {{Z|et}}: {{W+|et|saar}}
* {{Z|fa}}: {{W-|fa|نوعی درخت}}
* {{Z|fi}}: {{W+|fi|saarni}}
* {{Z|fr}}: {{W+|fr|frêne|m}}
* {{Z|nl}}: {{W+|nl|es|m}}
* {{Z|en}}: {{W+|en|ash tree}}, {{W+|en|ash}}, {{W+|en|willow tree|guman=erê}}
* {{Z|it}}: {{W+|it|frassino|m}}
* {{Z|is}}: {{W+|is|askur|m}}
* {{Z|ja}}: {{W+|ja|トネリコ|tr=toneriko}}
* {{Z|ca}}: {{W-|ca|freixe|m}}
* {{Z|mk}}: {{W-|mk|јасен|tr=jasen}}
* {{Z|hu}}: {{W+|hu|kőris}}
* {{Z|pl}}: {{W+|pl|jesion|m}}
* {{Z|pt}}: {{W+|pt|freixo|m}}
* {{Z|ro}}: {{W+|ro|frasin|m}}
* {{Z|ru}}: [[ясень]] (jásen’)
* {{Z|sh}}: {{W+|sh|jasen|m}}
* {{Z|sco}}: {{W-|sco|uinnseann|m}}
* {{Z|es}}: {{W+|es|fresno|m}}
* {{Z|sv}}: {{W+|sv|ask}}
* {{Z|tr}}: {{W+|tr|dişbudak}}, {{W-|tr|zeytingiller}}
{{werger-bin}}
7hbxfuxmt308lh9j3cfdgmlne6ddf06
avemast
0
51632
6329674
6328870
2026-08-12T18:04:14Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6329674
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
#* {{jêder-websîte|ku|jêgirtin=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.|nivîskar=Ehmed Qerenî|sernav=Girew û hevrikî di navbera mîrê Hekariya û paşayê Behdînan d|not=transkrîpsiyon ji hêla Hallocî Larê ve|websîte=Nefel.com|sal=2/2009}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|avmast}}
==== Jê ====
* {{g|ku|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}}
qlaugdwrqplpxqc74pr3oz5xtu51wyw
6329675
6329674
2026-08-12T18:04:43Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6329675
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{e|ku|vexwarin}} Vexwarina ku ji [[têkil]]kirina [[mast]]î û [[av]]ê hatiye çêkirin.
#: {{hevmane|ku|dew|mastav|çeqilmast}}
#* {{jêder-websîte|ku|jêgirtin=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.|nivîskar=Ehmed Qerenî|sernav=Girew û hevrikî di navbera mîrê Hekariya û paşayê Behdînan d|not=transkrîpsiyon ji hêla Hallocî Larê ve|websîte=Nefel.com|sal=2/2009}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Formên alternatîv ====
* {{g|ku|avmast}}
==== Jê ====
* {{g|ku|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}}
jr9o87dxvzngvi1dho74rd4smplykor
biyero
0
53379
6329854
5021852
2026-08-13T00:04:02Z
Wikihez
7344
/* Lêker */
6329854
wikitext
text/x-wiki
== {{ziman|zza}} ==
=== Lêker ===
{{lêker|zza}}
# [[bêt]], [[bêt]], [[were]]
#* {{jêder-malper|zza|jêgirtin=Netîceyê xebata standardîzekerdişê na lehçe de nê nameyan ra “kirmanckî” maqul ameya dîyayîş (8) û nika wareyê [[nuştiş]]î de no [[name]] [[yeno]] [[şuxulnayîş]]. Eke çekuya “zazakî” [[biyero|bîyero]] [[şuxulnayîş]] zî, zaf rey sey “kurdkîya zazakî” [[yena]] nuştiş.|nivîskar=w:Roşan Lezgîn|sernav=Kirmanckî, Kirdkî, Dimilkî, Zazakî|websîte=Zazaki.net|sal=9/2009}}
1evbbnvnklafn6d6a8q6wr0vc01jfkv
Şablon:jêder
10
59619
6329630
6241759
2026-08-12T14:34:50Z
Wikihez
7344
'<templatestyles src="jêder/style.css"/><includeonly>{{#invoke:jêder|jeder_t}}</includeonly><noinclude> [[Kategorî:Çavkanî|{{PAGENAME}}]] {{belgekirin}} </noinclude>' ket şûna rûpelê.
6329630
wikitext
text/x-wiki
<templatestyles src="jêder/style.css"/><includeonly>{{#invoke:jêder|jeder_t}}</includeonly><noinclude>
[[Kategorî:Çavkanî|{{PAGENAME}}]]
{{belgekirin}}
</noinclude>
hyg6yfjuwwwzy7abc9n164vsl5916ys
bikerî
0
60955
6329728
5845927
2026-08-12T21:01:46Z
Wikihez
7344
/* {{ziman|zza}} */
6329728
wikitext
text/x-wiki
== {{ziman|zza}} ==
=== Formeke lêkerê ===
{{lêker|zza|form=erê}}
# [[kirin|bikin]]
#* {{jêder-websîte|zza|jêgirtin=Bernameyî Mehmud Kizil ra pey rektorî Zanîngehî Hekarî Prof. Dr. Îbrahim Belenlî qisê kerd. Prof. Dr. Îbrahim Belenlî va, eger yew roj Tirkîya de kurdolojî sey yew şaxî îlmî bîyero akerdiş, ganî laboratuwarî nê Hekarî bo û qisêkerdişî xo inahawa rûmna, “kulturî şarî kurd, şeklî ciwîyayîşî şarî kurd hêna hol na mintiqa de ameyo qorî kerdiş. Semed ke no kultur vînî nebo, ganî cigêrayox hol xebat '''bikerî'''. Na xebat encax kesî zanayê eşkenî bikerî, no kar karî merdimanî zanayan o. Ma hewl danî ke ardimî na xebat bikerî. Verî ke merdim bieşko derheqî yew gel de, derheqî yew cemat de karo îlmî bikero, ganî no şar neyero înkar kerdiş. Wext ke yew gel bîyero înkar kerdiş merdim neşkeno na gelî ser xebata îlmî bikero. Ez îta de gazî pîyerê rojnamewananî mintiqa, pîyerê cigêrayoxan kena ke makînayanî xo yê fotograf, hacetanî xo yê vengqeydkerdişî bigerî, şîyerî dewan materyal top bikerî û ma re bîyarî. Ma hedreyî înan re her qede ardim bikeri. Ma heme materyalanî înan bierni û arşîvê xo de qorî bikeri. Ma inahawa eşkenî nê materyalan pêşkêşî kesanî cigêrayoxan û zanayan bikeri.”|nivîskar=[[Seyîdxan Kurij|Seyîdxan Kurij]]|sernav=Hekarî de Konferansa Kurdolojî|websîte=Zazaki.net|sal=6/2011}}
==== Etîmolojî ====
Ji {{qertaf|zza|bi-|kerdene}}.
tq8o42yjaopa9kg3e10iyrk8nw7a17c
6329729
6329728
2026-08-12T21:02:05Z
Wikihez
7344
/* Formeke lêkerê */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329729
wikitext
text/x-wiki
== {{ziman|zza}} ==
=== Formeke lêkerê ===
{{lêker|zza|form=erê}}
# [[kirin|bikin]]
#* {{jêder-websîte|zza|jêgirtin=Bernameyî Mehmud Kizil ra pey rektorî Zanîngehî Hekarî Prof. Dr. Îbrahim Belenlî qisê kerd. Prof. Dr. Îbrahim Belenlî va, eger yew roj Tirkîya de kurdolojî sey yew şaxî îlmî bîyero akerdiş, ganî laboratuwarî nê Hekarî bo û qisêkerdişî xo inahawa rûmna, “kulturî şarî kurd, şeklî ciwîyayîşî şarî kurd hêna hol na mintiqa de ameyo qorî kerdiş. Semed ke no kultur vînî nebo, ganî cigêrayox hol xebat '''bikerî'''. Na xebat encax kesî zanayê eşkenî bikerî, no kar karî merdimanî zanayan o. Ma hewl danî ke ardimî na xebat bikerî. Verî ke merdim bieşko derheqî yew gel de, derheqî yew cemat de karo îlmî bikero, ganî no şar neyero înkar kerdiş. Wext ke yew gel bîyero înkar kerdiş merdim neşkeno na gelî ser xebata îlmî bikero. Ez îta de gazî pîyerê rojnamewananî mintiqa, pîyerê cigêrayoxan kena ke makînayanî xo yê fotograf, hacetanî xo yê vengqeydkerdişî bigerî, şîyerî dewan materyal top bikerî û ma re bîyarî. Ma hedreyî înan re her qede ardim bikeri. Ma heme materyalanî înan bierni û arşîvê xo de qorî bikeri. Ma inahawa eşkenî nê materyalan pêşkêşî kesanî cigêrayoxan û zanayan bikeri.”|nivîskar=w:Seyîdxan Kurij|sernav=Hekarî de Konferansa Kurdolojî|websîte=Zazaki.net|sal=6/2011}}
==== Etîmolojî ====
Ji {{qertaf|zza|bi-|kerdene}}.
dw2ocdhlqd2cp9o6xj3z31hq9oiuyvx
kult
0
61607
6329819
6329031
2026-08-12T23:08:15Z
Wikihez
7344
6329819
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î|hejmar=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}}
5s4z6r0cf9zyfw1xc7yy7eciukkx6f4
xêvik
0
61964
6329883
6329247
2026-08-13T00:29:05Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6329883
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# [[aqilsivik]], [[dînik]], [[kêmaqil]], [[xirrexav]], [[geve]], [[lur]], [[hişsivik]], [[bodek]], [[peledîn]], [[tirredîn]], [[bûdele]], [[xêtik]], [[balûle]]
#* {{jêder-malper|ku|jêgirtin=Dibêje “Rastî tevlîheve û bê bêserûbere, aydolojî vê tevlîheviyê ji hole radikin û çareseriyên hesan pêşniyardikin. Bi vê sedemê kesen ne jîr û '''xêvik''' berê xwe didin van rêxistin û aydolojiyên parêzker an jî lîberal.|sernav=Encamê Lekolîna Zanistî. Kesên xêvik dibin nijadperest
|url=https://www.rojavanews.com/kurdish/index.php/cihan/item/2519-rojava-news|malper=rojavanews.com|sal=2015}}
#* {{jêder-malper|ku|jêgirtin='''Xêvik''' û bêhiş nebin, gotiye kurd, ez nabim Rewanduz Begê (yê ku teslîm bûye) duyem.|sernav=Rêberê Kurd ê herî çeleng, lê bênav|url=http://www.bitlisname.com/2016/02/15/rebere-kurd-e-heri-celeng-le-benav-3/|malper=bitlisname.com|sal=2016}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Herwiha binêre ====
{{stûn|
* {{g|ku|bomik}}
* {{g|ku|bêhiş}}
* {{g|ku|bodle}}
* {{g|ku|delodîn}}
* {{g|ku|cahil}}
* {{g|ku|naşî}}
* {{g|ku|nezan}}
* {{g|ku|ehmeq}}
* {{g|ku|dîn}}}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|dumm}}
* {{Z|fa}}: {{W+|fa|احمق}}, {{W+|fa|تفکر}}, {{W+|fa|اندیشه}}, {{W+|fa|ذهنیت}}
* {{Z|en}}: {{W+|en|asinine}}, {{W+|en|rocker}}, {{W-|en|off one, rocker|guman=erê}}
* {{Z|tr}}: {{W+|tr|alık}}, {{W+|tr|aptal}}, {{W+|tr|çatlak}}, {{W+|tr|unutkan}}, {{W+|tr|budala}}, {{W-|tr|hafızası zayıf}}
{{werger-bin}}
i8dn3gu92pldlggkx5falt08f7b2yph
sênc
0
63135
6329912
6329302
2026-08-13T01:17:02Z
Wikihez
7344
/* Navdêr */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329912
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/seːnd͡ʒ/}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dîwar|Dîwarê]] ji keviran li dor rez, [[bax]], baxçe an malan tê lêkirin, tê pêçan.
#: {{hevmaneyên peyvê|ku|tan|çeper|bend}}
#* {{jêder-kovar|ku|jêgirtin=Qada xwe em pê cudakin '''Sênc''' û Bendan bidne dor.|kovar=Kovara METÎN|hj=45|dîrok=Çirya pêşin 1995|url=http://www.welateme.net/kurdi/modules.php?name=News&file=article&sid=2407&mode=thread&order=0&thold=0}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|سێنج}}
==== Jê ====
{{kol3|ku|cure=Jê
|sênc kirin<pos:lêker>
|sênckirin<pos:navdêr>
|sênckirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji formeke berê *''sêc'', ji {{deyn|ar|ku|سیاج|tr=siyac}}. Ji bo peydabûna /n/ekê ya ber /c/ê, bide ber [[armanc]], [[derence]]...
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Hecke|f}}, {{W+|de|Mauer|f}}, {{W+|de|Schutzwall}}, {{W+|de|Zaun|m}}
* {{Z|ar}}: {{W-|ar|سياج}}, {{W+|ar|ساحة}}
* {{Z|fa}}: {{W+|fa|حرارت}}, {{W+|fa|دما}}, {{W+|fa|درد}}
* {{Z|en}}: {{W+|en|hector}}, {{W+|en|fence}}
* {{Z|tr}}: {{W+|tr|duvar}}, {{W+|tr|çit}}, {{W+|tr|çeper}}, {{W+|tr|diken}}, {{W+|tr|iğde}}, {{W+|tr|çalı}}, {{W+|tr|harım}}, {{W+|tr|barı|guman=erê}}
{{werger-bin}}
4kavwj50b5gg4i351rofnyam577ijpw
6329913
6329912
2026-08-13T01:17:24Z
Wikihez
7344
/* Navdêr */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329913
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{IPA|ku|/seːnd͡ʒ/}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[dîwar|Dîwarê]] ji keviran li dor rez, [[bax]], baxçe an malan tê lêkirin, tê pêçan.
#: {{hevmaneyên peyvê|ku|tan|çeper|bend}}
#* {{jêder-kovar|ku|jêgirtin=Qada xwe em pê cudakin '''Sênc''' û Bendan bidne dor.|kovar=Kovara METÎN|hj=45|sal=çiriya pêşin 1995|url=http://www.welateme.net/kurdi/modules.php?name=News&file=article&sid=2407&mode=thread&order=0&thold=0}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|سێنج}}
==== Jê ====
{{kol3|ku|cure=Jê
|sênc kirin<pos:lêker>
|sênckirin<pos:navdêr>
|sênckirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji formeke berê *''sêc'', ji {{deyn|ar|ku|سیاج|tr=siyac}}. Ji bo peydabûna /n/ekê ya ber /c/ê, bide ber [[armanc]], [[derence]]...
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Hecke|f}}, {{W+|de|Mauer|f}}, {{W+|de|Schutzwall}}, {{W+|de|Zaun|m}}
* {{Z|ar}}: {{W-|ar|سياج}}, {{W+|ar|ساحة}}
* {{Z|fa}}: {{W+|fa|حرارت}}, {{W+|fa|دما}}, {{W+|fa|درد}}
* {{Z|en}}: {{W+|en|hector}}, {{W+|en|fence}}
* {{Z|tr}}: {{W+|tr|duvar}}, {{W+|tr|çit}}, {{W+|tr|çeper}}, {{W+|tr|diken}}, {{W+|tr|iğde}}, {{W+|tr|çalı}}, {{W+|tr|harım}}, {{W+|tr|barı|guman=erê}}
{{werger-bin}}
5uun9idaydqv2errif1xl19kuug1sy7
MediaWiki:Gadgets-definition
8
118586
6329679
6325677
2026-08-12T18:17:22Z
Bikarhêner
3719
6329679
wikitext
text/x-wiki
Binêre [[Taybet:Gadgets]] ji bo belgekirina amûrên li jêr.
* LegacyScripts[ResourceLoader|default|dependencies=site,mediawiki.util,mediawiki.cookie,ext.gadget.LegacyScriptsNewNode,ext.gadget.StorageUtils|type=general]|legacy.js
==Rû==
* LiveClock[ResourceLoader|dependencies=mediawiki.util]|LiveClock.js
* charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css
* LanguagesAndScripts[ResourceLoader|default]|LanguagesAndScripts.css
* jeder[ResourceLoader|default]|jeder.css|jeder.js
* CodeLinks[ResourceLoader|default|dependencies=site,mediawiki.util]|CodeLinks.js
* Tabset[ResourceLoader|default]|Tabset.js|Tabset.css
* kuTewandin[ResourceLoader|default]|kuTewandin.js
==AmûrênGuhartinê==
* wikEd[ResourceLoader]|wikEd.js
* charinsert[ResourceLoader|default|peers=charinsert-styles]|charinsert.js
* translation_editor[ResourceLoader|default|dependencies=mediawiki.notification|type=general]|silent_fail_storage.js|editor.js|translation_editor.js|translation_editor.css
* QQ[ResourceLoader|dependencies=mediawiki.util,oojs-ui-core,oojs-ui-widgets|type=general]|QQ.js|QQ.css
* WiktAccFormCreation[ResourceLoader|dependencies=mediawiki.util]|WiktAccFormCreation.js
* AjaxEdit[ResourceLoader|dependencies=mediawiki.util,mediawiki.Uri,mediawiki.user,mediawiki.api]|AjaxEdit.js
* aWa[ResourceLoader|rights=autoconfirmed|dependencies=mediawiki.util,mediawiki.api,mediawiki.user,user.options,mediawiki.Uri,mediawiki.Title|type=general]|aWa.js|aWa.css
* purgetab[ResourceLoader|dependencies=mediawiki.api,mediawiki.util]|purgetab.js
* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper,oojs-ui-core,oojs-ui-widgets,oojs-ui-windows]|start.js|start.css|start/data.json
* wikt.add-examples[ResourceLoader|dependencies=oojs,oojs-ui,ext.gadget.citoid-helper,ext.gadget.StorageUtils|default]|wikt.add-examples.js|wikt.add-examples.css
* linkify[ResourceLoader|default|dependencies=mediawiki.api,jquery.textSelection,ext.wikiEditor]|linkify.js
==Kategorî==
* HotCat[ResourceLoader]|HotCat.js
* Cat-a-lot[ResourceLoader|rights=autoconfirmed]|Cat-a-lot.css|Cat-a-lot.js
==AmûrênVeşartî==
* LegacyScriptsNewNode[ResourceLoader|hidden|targets=desktop,mobile]|LegacyScriptsNewNode.js
* StorageUtils[ResourceLoader|hidden|dependencies=mediawiki.cookie,mediawiki.storage]|StorageUtils.js
* charinsert-core[ResourceLoader|hidden|dependencies=jquery.textSelection,user,mediawiki.storage]|charinsert-core.js
* VisibilityToggles[ResourceLoader|hidden|targets=desktop,mobile|dependencies=user,mediawiki.cookie]|VisibilityToggles.js
* defaultVisibilityToggles[ResourceLoader|hidden|default|targets=desktop,mobile|dependencies=ext.gadget.VisibilityToggles]|defaultVisibilityToggles.js
* Site[ResourceLoader|hidden|default]|Site.css
* catfix[ResourceLoader|hidden|default|dependencies=mediawiki.Title|categories=Pages using catfix]|catfix.js
* Palette[ResourceLoader|hidden|default]|Palette.css
* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js
pqoysxxn62jfo0sdl7p6s379ua6dref
6329696
6329679
2026-08-12T19:14:35Z
Bikarhêner
3719
6329696
wikitext
text/x-wiki
Binêre [[Taybet:Gadgets]] ji bo belgekirina amûrên li jêr.
* LegacyScripts[ResourceLoader|default|dependencies=site,mediawiki.util,mediawiki.cookie,ext.gadget.LegacyScriptsNewNode,ext.gadget.StorageUtils|type=general]|legacy.js
==Rû==
* LiveClock[ResourceLoader|dependencies=mediawiki.util]|LiveClock.js
* charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css
* LanguagesAndScripts[ResourceLoader|default]|LanguagesAndScripts.css
* jeder[ResourceLoader|dependencies=ext.gadget.VisibilityToggles|default]|jeder.css|jeder.js
* CodeLinks[ResourceLoader|default|dependencies=site,mediawiki.util]|CodeLinks.js
* Tabset[ResourceLoader|default]|Tabset.js|Tabset.css
* kuTewandin[ResourceLoader|default]|kuTewandin.js
==AmûrênGuhartinê==
* wikEd[ResourceLoader]|wikEd.js
* charinsert[ResourceLoader|default|peers=charinsert-styles]|charinsert.js
* translation_editor[ResourceLoader|default|dependencies=mediawiki.notification|type=general]|silent_fail_storage.js|editor.js|translation_editor.js|translation_editor.css
* QQ[ResourceLoader|dependencies=mediawiki.util,oojs-ui-core,oojs-ui-widgets|type=general]|QQ.js|QQ.css
* WiktAccFormCreation[ResourceLoader|dependencies=mediawiki.util]|WiktAccFormCreation.js
* AjaxEdit[ResourceLoader|dependencies=mediawiki.util,mediawiki.Uri,mediawiki.user,mediawiki.api]|AjaxEdit.js
* aWa[ResourceLoader|rights=autoconfirmed|dependencies=mediawiki.util,mediawiki.api,mediawiki.user,user.options,mediawiki.Uri,mediawiki.Title|type=general]|aWa.js|aWa.css
* purgetab[ResourceLoader|dependencies=mediawiki.api,mediawiki.util]|purgetab.js
* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper,oojs-ui-core,oojs-ui-widgets,oojs-ui-windows]|start.js|start.css|start/data.json
* wikt.add-examples[ResourceLoader|dependencies=oojs,oojs-ui,ext.gadget.citoid-helper,ext.gadget.StorageUtils|default]|wikt.add-examples.js|wikt.add-examples.css
* linkify[ResourceLoader|default|dependencies=mediawiki.api,jquery.textSelection,ext.wikiEditor]|linkify.js
==Kategorî==
* HotCat[ResourceLoader]|HotCat.js
* Cat-a-lot[ResourceLoader|rights=autoconfirmed]|Cat-a-lot.css|Cat-a-lot.js
==AmûrênVeşartî==
* LegacyScriptsNewNode[ResourceLoader|hidden|targets=desktop,mobile]|LegacyScriptsNewNode.js
* StorageUtils[ResourceLoader|hidden|dependencies=mediawiki.cookie,mediawiki.storage]|StorageUtils.js
* charinsert-core[ResourceLoader|hidden|dependencies=jquery.textSelection,user,mediawiki.storage]|charinsert-core.js
* VisibilityToggles[ResourceLoader|hidden|targets=desktop,mobile|dependencies=user,mediawiki.cookie]|VisibilityToggles.js
* defaultVisibilityToggles[ResourceLoader|hidden|default|targets=desktop,mobile|dependencies=ext.gadget.VisibilityToggles]|defaultVisibilityToggles.js
* Site[ResourceLoader|hidden|default]|Site.css
* catfix[ResourceLoader|hidden|default|dependencies=mediawiki.Title|categories=Pages using catfix]|catfix.js
* Palette[ResourceLoader|hidden|default]|Palette.css
* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js
6v0s3ntmlo055tpur25xsuyji54g5fi
6329707
6329696
2026-08-12T20:08:59Z
Bikarhêner
3719
6329707
wikitext
text/x-wiki
Binêre [[Taybet:Gadgets]] ji bo belgekirina amûrên li jêr.
* LegacyScripts[ResourceLoader|default|dependencies=site,mediawiki.util,mediawiki.cookie,ext.gadget.LegacyScriptsNewNode,ext.gadget.StorageUtils|type=general]|legacy.js
==Rû==
* LiveClock[ResourceLoader|dependencies=mediawiki.util]|LiveClock.js
* charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css
* LanguagesAndScripts[ResourceLoader|default]|LanguagesAndScripts.css
* jeder[ResourceLoader|dependencies=ext.gadget.VisibilityToggles|default]|jeder.css|jeder.js
* CodeLinks[ResourceLoader|default|dependencies=site,mediawiki.util]|CodeLinks.js
* Tabset[ResourceLoader|default]|Tabset.js|Tabset.css
* kuTewandin[ResourceLoader|default]|kuTewandin.js
==AmûrênGuhartinê==
* wikEd[ResourceLoader]|wikEd.js
* charinsert[ResourceLoader|default|peers=charinsert-styles]|charinsert.js
* translation_editor[ResourceLoader|default|dependencies=mediawiki.notification|type=general]|silent_fail_storage.js|editor.js|translation_editor.js|translation_editor.css
* QQ[ResourceLoader|dependencies=mediawiki.util,oojs-ui-core,oojs-ui-widgets|type=general]|QQ.js|QQ.css
* WiktAccFormCreation[ResourceLoader|dependencies=mediawiki.util]|WiktAccFormCreation.js
* AjaxEdit[ResourceLoader|dependencies=mediawiki.util,mediawiki.Uri,mediawiki.user,mediawiki.api]|AjaxEdit.js
* aWa[ResourceLoader|rights=autoconfirmed|dependencies=mediawiki.util,mediawiki.api,mediawiki.user,user.options,mediawiki.Title|type=general]|aWa.js|aWa.css
* purgetab[ResourceLoader|dependencies=mediawiki.api,mediawiki.util]|purgetab.js
* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper,oojs-ui-core,oojs-ui-widgets,oojs-ui-windows]|start.js|start.css|start/data.json
* wikt.add-examples[ResourceLoader|dependencies=oojs,oojs-ui,ext.gadget.citoid-helper,ext.gadget.StorageUtils|default]|wikt.add-examples.js|wikt.add-examples.css
* linkify[ResourceLoader|default|dependencies=mediawiki.api,jquery.textSelection,ext.wikiEditor]|linkify.js
==Kategorî==
* HotCat[ResourceLoader]|HotCat.js
* Cat-a-lot[ResourceLoader|rights=autoconfirmed]|Cat-a-lot.css|Cat-a-lot.js
==AmûrênVeşartî==
* LegacyScriptsNewNode[ResourceLoader|hidden|targets=desktop,mobile]|LegacyScriptsNewNode.js
* StorageUtils[ResourceLoader|hidden|dependencies=mediawiki.cookie,mediawiki.storage]|StorageUtils.js
* charinsert-core[ResourceLoader|hidden|dependencies=jquery.textSelection,user,mediawiki.storage]|charinsert-core.js
* VisibilityToggles[ResourceLoader|hidden|targets=desktop,mobile|dependencies=user,mediawiki.cookie]|VisibilityToggles.js
* defaultVisibilityToggles[ResourceLoader|hidden|default|targets=desktop,mobile|dependencies=ext.gadget.VisibilityToggles]|defaultVisibilityToggles.js
* Site[ResourceLoader|hidden|default]|Site.css
* catfix[ResourceLoader|hidden|default|dependencies=mediawiki.Title|categories=Pages using catfix]|catfix.js
* Palette[ResourceLoader|hidden|default]|Palette.css
* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js
m6p35xdfa58eb5yrmwdl4sangkk9c6u
6329712
6329707
2026-08-12T20:22:52Z
Bikarhêner
3719
6329712
wikitext
text/x-wiki
Binêre [[Taybet:Gadgets]] ji bo belgekirina amûrên li jêr.
* LegacyScripts[ResourceLoader|default|dependencies=site,mediawiki.util,mediawiki.cookie,ext.gadget.LegacyScriptsNewNode,ext.gadget.StorageUtils|type=general]|legacy.js
==Rû==
* LiveClock[ResourceLoader|dependencies=mediawiki.util]|LiveClock.js
* charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css
* LanguagesAndScripts[ResourceLoader|default]|LanguagesAndScripts.css
* jeder[ResourceLoader|dependencies=ext.gadget.VisibilityToggles|default]|jeder.css|jeder.js
* CodeLinks[ResourceLoader|default|dependencies=site,mediawiki.util]|CodeLinks.js
* Tabset[ResourceLoader|default]|Tabset.js|Tabset.css
* kuTewandin[ResourceLoader|default]|kuTewandin.js
==AmûrênGuhartinê==
* wikEd[ResourceLoader]|wikEd.js
* charinsert[ResourceLoader|default|peers=charinsert-styles]|charinsert.js
* translation_editor[ResourceLoader|default|dependencies=mediawiki.notification|type=general]|silent_fail_storage.js|editor.js|translation_editor.js|translation_editor.css
* QQ[ResourceLoader|dependencies=mediawiki.util,oojs-ui-core,oojs-ui-widgets|type=general]|QQ.js|QQ.css
* WiktAccFormCreation[ResourceLoader|dependencies=mediawiki.util]|WiktAccFormCreation.js
* AjaxEdit[ResourceLoader|dependencies=mediawiki.util,mediawiki.user,mediawiki.api]|AjaxEdit.js
* aWa[ResourceLoader|rights=autoconfirmed|dependencies=mediawiki.util,mediawiki.api,mediawiki.user,user.options,mediawiki.Title|type=general]|aWa.js|aWa.css
* purgetab[ResourceLoader|dependencies=mediawiki.api,mediawiki.util]|purgetab.js
* start[ResourceLoader|default|package|dependencies=mediawiki.util,ext.gadget.StorageUtils,ext.gadget.citoid-helper,oojs-ui-core,oojs-ui-widgets,oojs-ui-windows]|start.js|start.css|start/data.json
* wikt.add-examples[ResourceLoader|dependencies=oojs,oojs-ui,ext.gadget.citoid-helper,ext.gadget.StorageUtils|default]|wikt.add-examples.js|wikt.add-examples.css
* linkify[ResourceLoader|default|dependencies=mediawiki.api,jquery.textSelection,ext.wikiEditor]|linkify.js
==Kategorî==
* HotCat[ResourceLoader]|HotCat.js
* Cat-a-lot[ResourceLoader|rights=autoconfirmed]|Cat-a-lot.css|Cat-a-lot.js
==AmûrênVeşartî==
* LegacyScriptsNewNode[ResourceLoader|hidden|targets=desktop,mobile]|LegacyScriptsNewNode.js
* StorageUtils[ResourceLoader|hidden|dependencies=mediawiki.cookie,mediawiki.storage]|StorageUtils.js
* charinsert-core[ResourceLoader|hidden|dependencies=jquery.textSelection,user,mediawiki.storage]|charinsert-core.js
* VisibilityToggles[ResourceLoader|hidden|targets=desktop,mobile|dependencies=user,mediawiki.cookie]|VisibilityToggles.js
* defaultVisibilityToggles[ResourceLoader|hidden|default|targets=desktop,mobile|dependencies=ext.gadget.VisibilityToggles]|defaultVisibilityToggles.js
* Site[ResourceLoader|hidden|default]|Site.css
* catfix[ResourceLoader|hidden|default|dependencies=mediawiki.Title|categories=Pages using catfix]|catfix.js
* Palette[ResourceLoader|hidden|default]|Palette.css
* citoid-helper[ResourceLoader|hidden|default|dependencies=mediawiki.util]|citoid-helper.js
o1b4msa704ss909njtqm0i2ht0wi41d
parantez
0
158386
6329897
6329314
2026-08-13T00:45:31Z
Wikihez
7344
6329897
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[kevane]], [[kevanek]]
#* {{jêder-malper|ku|jêgirtin=Çend bêjeyên ku ez ji xwendina wan ne emîn im, min piştî wan, di nava '''parantezên''' goşedar da nîşana pirsê danî. Tîp û bêjeyên ku di nava '''parantêzên''' goşedar de ne, min lê zêdekirin da ku metn hêsantir bihê fêmkirin.|malper=pelkurd.com|nivîskar={{w|Mehemed Malmîsanij}}|sernav=Du nameyên Elîşêrê Qoçgîriyê (1920)|url=https://pelkurd.com/malmisanij/du-nameyen-elisere-qocgiriye-1920/|sal=2019 (?)}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{ji|fr|ku|parenthèse}} an ji {{ji|en|ku|parenthesis}}, ew jî ji {{ji|la|ku|parenthesis}}.
==== Werger ====
{{werger-bnr|kevanek}}
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# [[kevane]], [[kevanek]], {{g|ku|parantez}}
nv4ep98c37ozt75cw5ve2192g5ucduq
taşıma su ile değirmen dönmez
0
166391
6329627
4644328
2026-08-12T14:04:03Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329627
wikitext
text/x-wiki
== {{ziman|tr}} ==
=== Gotineke pêşiyan ===
{{gp|tr}}
# bi ava milan aş nagere
8taks4jv1jz9btpz6f24thamb0g8oea
pistepist
0
187134
6329899
6329094
2026-08-13T00:47:23Z
Wikihez
7344
6329899
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î}} [[pistîn]], [[pistandin]], li ber [[guh]]ên [[hev]] bi [[deng]]ê [[nizm]] [[peyivîn]] <br>([[bi taybetî]] daku hinekên din [[bîstin|nebîzin]])
#* {{jêder-kovar|ku|jêgirtin=Zazî jî di guhê kurê xwe de dike '''pistepist'''.|kovar=Mukaddime|sernav=Romanek û Fîlmê Xwe: Vegotin, Dîtin, Temsîl|nivîskar=Selîm Temo|url=https://dergipark.org.tr/tr/download/article-file/184104|hejmar=4|sal=2011|rûpel=78}}
#* {{jêder-malper|ku|jêgirtin=Bekir piştî meyt şuşt devê xwe kir guhê wî di guh da kir '''pistepist'''.|nivîskar=Zinarê Xamo|sernav=Çîroka Bekirê dîn|url=https://zinarexamo.blogspot.com/2013/12/ciroka-bekire-din.html|malper=zinarexamo.blogspot.com|dîrok=21.12.2013}}
#* {{jêder-malper|ku|jêgirtin=Di wê qerebalixiyê de bayekî hênik tê û li ber guhê te dike '''pistepist'''.|nivîskar=Sevda Orak Reşitoğlu|sernav=Tirs Zîl Didin|url=https://botantimes.com/tirs-zil-didin/|malper=Botan Times|dîrok=2024-03-27}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Bi alfabeyên din ====
* {{ku-ar|پستەپست}}
==== Formên alternatîv ====
{{kol3|ku|cure=Herwiha
|pist-pist
|pispist
}}
==== Jê ====
{{kol3|ku|cure=Jê
|pistepist kirin<pos:lêker>
|pistepistkirin<pos:navdêr>
|pistepistkirî<pos:rengdêr>
}}
==== Etîmolojî ====
Ji {{qertaf|ku|pist|-e-|pist}}.
==== Werger ====
'''piste-pist kirin''':
{{werger-ser}}
* {{Z|sq}}: {{W+|sq|pëshpërit}}
* {{Z|de}}: {{W+|de|flüstern}}, {{W-|de|Flüstern}}, {{W-|de|Munkeln}}, {{W+|de|Raunen|n}}, {{W+|de|Geflüster|m}}, {{W-|de|Tuscheln|guman=erê}}, {{W-|de|Gesäusel|guman=erê}}, {{W-|de|Wispern|guman=erê}}
* {{Z|da}}: {{W-|da|hviske}}
* {{Z|ar}}: {{W-|ar|النجوى}}, {{W-|ar|الهمس}}
* {{Z|eo}}: {{W+|eo|flustri}}
* {{Z|fa}}: {{W+|fa|غرولند}}, {{W-|fa|غر غرکردن}}
* {{Z|fo}}: {{W-|fo|teska}}
* {{Z|fi}}: {{W+|fi|kuiskata}}
* {{Z|fr}}: {{W+|fr|chuchoter}}
* {{Z|nl}}: {{W+|nl|fluisteren}}, {{W+|nl|smoezelen}}, {{W+|nl|smoezen}}
* {{Z|en}}: {{W+|en|whisper}}, (2) {{W+|en|rumor}}, {{W+|en|chirp}}
* {{Z|it}}: {{W+|it|sussurrare}}, {{W+|it|bisbigliare}}
* {{Z|is}}: {{W+|is|hvísla}}
* {{Z|ca}}: {{W+|ca|xiuxiuejar}}
* {{Z|ms}}: {{W-|ms|bisik … berbisik-bisik}}
* {{Z|hu}}: {{W+|hu|súg}}; {{W+|hu|susog}}
* {{Z|no}}: {{W+|no|hviske}}
* {{Z|pap}}: {{W-|pap|kuchikuchi}}
* {{Z|pt}}: {{W+|pt|cochichar}}, {{W+|pt|segredar}}
* {{Z|ro}}: {{W+|ro|șopti}}
* {{Z|srn}}: {{W-|srn|safri taki}}
* {{Z|es}}: {{W+|es|cuchichear}}
* {{Z|sv}}: {{W+|sv|tissla}}, {{W+|sv|viska}}
* {{Z|tr}}: {{W+|tr|fısıldamak}}, {{W+|tr|fiskos}}, {{W+|tr|fısır fısır}}, {{W+|tr|fıs fıs|guman=erê}}
{{werger-bin}}
eb3ha40b1cdxx988wivxdyridojzu53
qopik
0
187417
6329911
6325288
2026-08-13T01:15:52Z
Wikihez
7344
6329911
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:07. Camel Profile, near Silverton, NSW, 07.07.2007.jpg|thumb|Hêştirek bi '''qopikekî''' (2)]]
{{navdêr|ku|z=n}}
# {{maneid|ku|qozê ser pişta mirovan}} {{f|ku|anatomî}} [[qoz|Qozê]] ku ji ber tewîna hestiyên piştê li pişta mirovan çêdibe.<ref name = "Farqînî"/><ref>{{JBlau 1991|r=247}}</ref><ref>{{Chyet2020|cild=M-Z}}</ref>
#: {{hevmaneyên peyvê|ku|qilûz|milik|qiloz|kubik|qor|xûr}}
#* {{jêder-pirtûk
|ku| jêgirtin = Johnny rûniştîbû. '''Qopika''' pişta wî derketibû û li erdê dinihêrî.
| nivîskar = Jack London
| wergêr = {{w|Mustafa Aydogan}}
| sernav = ZAROKA ŞEVÊ
| weşanxane = Weşanên NÛDEM
| sal = 1995
| rûpel = 44
}}
# {{maneid|ku|girên li pişta hêştiran}} {{f|ku|heywannasî}} Yek an du [[gir]]ên bi av li pişta [[hêştir]]an.<ref name = "Farqînî">{{Zana Farqînî|r=1528}}</ref>
#* {{jêder-pirtûk
|ku|jêgirtin=Hêştirê mîna ku kevirek bixe şûna wî got:</br
>“Wisa be careke din xwe mezin mebîne û ji hedê xwe dernekeve!”</br
>Û gotina xwe berdewam kir, “Xwe bavê ser '''qopikê''' min em herin.”
|nivîskar=Sadık Yalsızuçanlar
|wergêr=Azîz Samûr
|sernav=Çiroken Mesnewiya Şerifa Hz. Mewlana
|url=https://sadikyalsizucanlar.dergibi.com/eskisite/PDF/mesnewi.pdf|weşanxane=Nûbihar
|sal=
}}
#* {{jêder-kovar|ku|jêgirtin=Gava ez li Aracatacê zarokekî biçûk bûm, tê bîra min ku kalikê min ez biribûm sîrkê, da em temaşeyî hêştireke yek '''qopikî''' bikin.|kovar=Nûdem|sernav=Bi Marquez re hevpeyvîn|nivîskar=Plino A. Mendoza|wergêr=Firat Cewerî|hejmar=1|sal=1996|rûpel=216}}
# {{maneid|ku|cigareya xilasbûyî}} [[cigare|Cigareya]] ku hatiye kişandin.<ref>{{Ferhenga Destî|r=324}}</ref><ref>{{Ferhenga Kamêran|r=559}}</ref><ref>{{malper|nivîskar=Husein Muhammed|url=https://zimannas.wordpress.com/2016/02/29/kurdizar-ferhenga-sorani-kurmanci-q/|sernav=KURDÎZAR: ferhenga soranî-kurmancî: Q|malper=zimannas.wordpress.com|sal=2016}}</ref>
#: {{hevmaneyên peyvê|ku|boçik|qotik|id1=cigareya xilasbûyî|id2=cigareya xilasbûyî}}
#* {{jêgirtin?|ku}}
# {{maneid|ku|serê kîr}} {{f|ku|argo|anatomî|Sirûc}} [[ser|Serikê]] [[kîr]].<ref>{{Ç:ku:Bedirxan:2009|r=233}}</ref>
#* {{jêgirtin?|ku}}
# {{f|ku|argo|anatomî}} [[kîr]]<ref>{{Ç:ku:Mehmet Oncu:2020|r=271}}</ref>
#* {{jêder-malper
|ku|jêgirtin=Li gundekî yek mir. Li ser piştê wefat kiribû. Destê wî yê rastê li ser dilê wî bû û destê çepê jî li ser "qamîşê/'''qopikê'''" wî bû.|nivîskar=Zinarê Xamo
|sernav=Mesaja merhûm
|url=https://zinarexamo.blogspot.com/2019/03/mesaja-merhum.html
|malper=zinarexamo.blogspot.com
|sal=2019
}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* {{mane|qozê ser pişta mirovan}} {{herwiha|ku|qozek}}
* {{mane|serikê kîr}} {{herwiha|ku|hopik||Semsûr}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|کۆپارە}} {{mane|girên li pişta hêştiran}}
==== Werger ====
{{werger-ser|qozê ser pişta mirovan|1|id=qozê ser pişta mirovan}}
* {{Z|sq}}: {{W+|sq|gungë|m}}
* {{Z|de}}: {{W+|de|Buckel|n}}
* {{Z|as}}: {{W-|as|কুঁজ}}
* {{Z|az}}: {{W-|az|donqa}}
* {{Z|be}}: {{W-|be|горб|n}}
* {{Z|bn}}: {{W-|bn|কুঁজ}}
* {{Z|bg}}: {{W-|bg|гъ́рбица|m}}
* {{Z|my}}: {{W+|my|လပို့}}
* {{Z|cs}}: {{W+|cs|hrb|n}}
* {{Z|da}}: {{W-|da|pukkel|g}}
* {{Z|ar}}: {{W+|ar|سَنَام|n}}
* {{Z|hy}}: {{W+|hy|կուզ}}
* {{Z|fa}}: {{W-|fa|غوز|tr=quz|sc=fa-Arab}}, {{W+|fa|گوژ|tr=guž|sc=fa-Arab}}
* {{Z|fi}}: {{W+|fi|kyttyrä}}
* {{Z|fr}}: {{W+|fr|bosse|m}}
* {{Z|ka}}: {{W-|ka|კუზი}}
* {{Z|hi}}: {{W+|hi|कूबड़}}
* {{Z|nl}}: {{W+|nl|bult|n}}, {{W+|nl|bochel|n}}
* {{Z|io}}: {{W+|io|gibozeso}}
* {{Z|ang}}: {{W-|ang|hofor|n}}
* {{Z|en}}: {{W+|en|hump}}
* {{Z|it}}: {{W+|it|gobba|m}}
* {{Z|ja}}: {{W+|ja|瘤|tr=こぶ, kobu}}
* {{Z|ca}}: {{W+|ca|gep|n}}
* {{Z|ky}}: {{W+|ky|бүкүр}}
* {{Z|ko}}: {{W-|ko|곱사}}, {{W-|ko|곱사등}}
* {{Z|la}}: {{W-|la|gibbus|n}}, {{W-|la|gibber|n}}
* {{Z|lo}}: {{W+|lo|ໜອກ}}, {{W-|lo|ອອງ}}
* {{Z|mk}}: {{W-|mk|грб|n}}, {{W-|mk|грпка|m}}
* {{Z|ms}}: {{W+|ms|bonggol}}
* {{Z|cmn}}: {{W+|cmn|駝背}}, {{W-|cmn|驼背|tr=tuóbèi}}
* {{Z|hu}}: {{W+|hu|púp}}, {{W+|hu|kinövés}}
* {{Z|mn}}: {{W+|mn|бөх}}
* {{Z|nb}}: {{W+|nb|pukkel|n}}
* {{Z|nn}}: {{W-|nn|pukkel|n}}
* {{Z|uz}}: {{W+|uz|bukur}}
* {{Z|pl}}: {{W+|pl|garb|n}}
* {{Z|pt}}: {{W+|pt|corcunda|m}}
* {{Z|kk}}: {{W-|kk|бүкір}}, {{W-|kk|дөңес}}
* {{Z|ro}}: {{W+|ro|cocoașă|m}}
* {{Z|ru}}: {{W+|ru|горб|n}}
* {{Z|scn}}: {{W+|scn|jimmu|n}}
* {{Z|sh}}: {{W-|sh|гр̏ба|m}}, {{W+|sh|gȑba|m}}
* {{Z|cu}}: {{W-|cu|гръбъ|n}}
* {{Z|orv}}: {{W-|orv|гръбъ|n}}
* {{Z|sk}}: {{W+|sk|hrb|n}}
* {{Z|sl}}: {{W+|sl|gŕba|m}}
* {{Z|dsb}}: {{W-|dsb|gjarb|n}}
* {{Z|hsb}}: {{W-|hsb|horb|n}}
* {{Z|es}}: {{W+|es|joroba|m}}, {{W+|es|corcova|m}}
* {{Z|sv}}: {{W+|sv|puckel|g}}
* {{Z|tg}}: {{W-|tg|кӯз}}, {{W-|tg|кӯж}}
* {{Z|th}}: {{W+|th|หนอก}}
* {{Z|te}}: {{W+|te|గూని}}
* {{Z|tr}}: {{W+|tr|kambur}}
* {{Z|ur}}: {{W-|ur|کوبڑ|tr=kūbaṛ}}
* {{Z|uk}}: {{W-|uk|горб|n}}
* {{Z|vi}}: {{W+|vi|bướu}}
* {{Z|gmq-bot}}: {{W-|gmq-bot|qwejs|m}}
* {{Z|km}}: {{W+|km|បូក}}
* {{Z|el}}: {{W+|el|καμπούρα|m}}
{{werger-bin}}
{{werger-ser|Girên li pişta hêştiran|2|id=girên li pişta hêştiran}}
* {{Z|de}}: {{W+|de|Höcker|n}}
* {{Z|as}}: {{W-|as|কুঁজ}}, {{W-|as|চুট}}
* {{Z|ba}}: {{W-|ba|үркәс|sc=Cyrl}}
* {{Z|be}}: {{W-|be|горб|n}}
* {{Z|bg}}: {{W-|bg|гърбица|m|sc=Cyrl}}
* {{Z|my}}: {{W+|my|လပို့}}
* {{Z|ar}}: {{W-|ar|حَدَبَة|m}}, {{W+|ar|سَنَام|n}}
* {{Z|hy}}: {{W+|hy|սապատ}}
* {{Z|eo}}: {{W-|eo|ĝibo}}
* {{Z|fi}}: {{W+|fi|kyttyrä}}
* {{Z|fr}}: {{W+|fr|bosse|m}}
* {{Z|ka}}: {{W-|ka|კუზი}}
* {{Z|ha}}: {{W+|ha|tozo}}
* {{Z|hi}}: {{W+|hi|कोहान|n}}, {{W+|hi|कूबड़|n}}, {{W+|hi|डिल्ला|n}}, {{W+|hi|कुब्बा|n}}
* {{Z|nl}}: {{W+|nl|bult|n}}
* {{Z|ang}}: {{W-|ang|hofor|n}}
* {{Z|en}}: {{W+|en|hump}}
* {{Z|it}}: {{W+|it|gobba|m}}, {{W-|it|gibbo|n}}
* {{Z|ja}}: {{W+|ja|こぶ|tr=kobu}}
* {{Z|ky}}: {{W+|ky|өркөч|sc=Cyrl}}
* {{Z|ki}}: {{W-|ki|iguku}}
* {{Z|cmn}}: {{W+|cmn|駝背}}, {{W-|cmn|驼背|tr=tuóbèi}}, {{W+|cmn|駝峰}}, {{W-|cmn|驼峰|tr=tuófēng}}, {{W+|cmn|峰|tr=fēng}}, {{W+|cmn|瘤|tr=liú}}
* {{Z|mi}}: {{W-|mi|hiwi}}
* {{Z|hu}}: {{W+|hu|púp}}
* {{Z|mn}}: {{W+|mn|бөх}}
* {{Z|nb}}: {{W+|nb|pukkel|n}}
* {{Z|nn}}: {{W-|nn|pukkel|n}}
* {{Z|ug}}: {{W-|ug|ئوركەچ}}
* {{Z|uz}}: {{W+|uz|oʻrkach}}
* {{Z|ps}}: {{W-|ps|بوکام|n|tr=bokām}}
* {{Z|pl}}: {{W+|pl|garb|n}}
* {{Z|pt}}: {{W+|pt|corcova|m}}
* {{Z|kk}}: {{W-|kk|өркеш|sc=Cyrl}}
* {{Z|ro}}: {{W+|ro|cocoașă|m}}
* {{Z|ru}}: {{W+|ru|горб|n}}
* {{Z|sh}}: {{W+|sh|kvrga|m}}
* {{Z|dsb}}: {{W-|dsb|gjarb|n}}
* {{Z|hsb}}: {{W-|hsb|horb|n}}
* {{Z|es}}: {{W+|es|joroba|m}}, {{W+|es|giba|m}}
* {{Z|sw}}: {{W+|sw|nundu}}
* {{Z|sv}}: {{W+|sv|puckel|g}}
* {{Z|th}}: {{W+|th|หนอก}}
* {{Z|tt}}: {{W+|tt|өркәч|sc=Cyrl}}
* {{Z|tr}}: {{W+|tr|hörgüç}}
* {{Z|tk}}: {{W-|tk|örküç}}
* {{Z|uk}}: {{W-|uk|горб|n}}
* {{Z|vo}}: {{W+|vo|gobad}}
* {{Z|km}}: {{W+|km|បូក}}
* {{Z|el}}: {{W+|el|ύβος|n}}, {{W+|el|καμπούρα|m}}
{{werger-bin}}
{{werger-ser|cigareya ku hatiye kişandin|3|id=cigareya xilasbûyî}}
* {{Z|de}}: {{W+|de|Stummel|n}}, {{W+|de|Zigarettenstummel|n}}, {{W+|de|Kippe|m}}, {{W-|de|Zigarettenkippe|m}}
* {{Z|be}}: {{W-|be|недаку́рак|n}}
* {{Z|bg}}: {{W+|bg|угарка|m}}, {{W+|bg|фас|n}}
* {{Z|my}}: {{W-|my|ก้นบุหรี่}}
* {{Z|cs}}: {{W-|cs|nedopalek|n}}, {{W+|cs|oharek|n}}, {{W+|cs|špaček|n}}, {{W+|cs|vajgl}}
* {{Z|da}}: {{W-|da|skod|nt}}
* {{Z|ar}}: {{W-|ar|عَقْب سِيجَارَة}}
* {{Z|hy}}: {{W+|hy|կճատ}}
* {{Z|fi}}: {{W+|fi|natsa}}, {{W+|fi|tumppi}}, {{W+|fi|tupakantumppi}}
* {{Z|fr}}: {{W+|fr|mégot|n}}
* {{Z|gd}}: {{W-|gd|bun|n}}
* {{Z|gl}}: {{W+|gl|cabicha|m}}
* {{Z|nl}}: {{W+|nl|peuk|n}}
* {{Z|en}}: {{W+|en|butt}} {{mane|of a cigarette}}
* {{Z|ga}}: {{W-|ga|bun|n}}, {{W-|ga|bun toitín|n}}
* {{Z|it}}: {{W+|it|mozzicone|n}}
* {{Z|is}}: {{W-|is|stubbur|n}}, {{W-|is|sígarettustubbur|n}}
* {{Z|ja}}: {{W+|ja|吸殻|tr=すいがら, suigara}}
* {{Z|ca}}: {{W+|ca|punta|m}}, {{W+|ca|burilla|m}}
* {{Z|ko}}: {{W-|ko|꽁초}}, {{W-|ko|담배꽁초}}
* {{Z|lv}}: {{W-|lv|izsmēķis|n}}
* {{Z|mk}}: {{W-|mk|отпушок|n}}, {{W-|mk|пикавец|n}}
* {{Z|ms}}: {{W-|ms|puntung rokok}}
* {{Z|cmn}}: {{W+|cmn|煙頭}}, {{W+|cmn|烟头|tr=yāntóu}}
* {{Z|gv}}: {{W-|gv|bun|n}}
* {{Z|hu}}: {{W+|hu|csikk}}
* {{Z|nb}}: {{W+|nb|sneip|n}}
* {{Z|pl}}: {{W+|pl|niedopałek|n}}, {{W+|pl|pet|n}}
* {{Z|pt}}: {{W+|pt|bituca|m}}, {{W-|pt|guimba|m}}, {{W+|pt|beata|m}}
* {{Z|ro}}: {{W+|ro|muc|nt}}, {{W+|ro|chiștoc|nt}}
* {{Z|ru}}: {{W+|ru|оку́рок|n}}, {{W+|ru|бычо́к|n}}
* {{Z|scn}}: {{W+|scn|muzzuni|n}}
* {{Z|sh}}: {{W-|sh|опушак|n|sc=Cyrl}}, {{W+|sh|opušak|n}}
* {{Z|sk}}: {{W-|sk|ohorok|n}}
* {{Z|sl}}: {{W-|sl|ogorek|n}}
* {{Z|es}}: {{W+|es|colilla|m}}, {{W+|es|bacha|m}}, {{W+|es|calilla|m}}, {{W-|es|chenca|m}}, {{W+|es|chicote|n}}, {{W+|es|chinga|m}}, {{W+|es|chiva|m}}, {{W+|es|pava|m}}, {{W+|es|pucho|n}}
* {{Z|sv}}: {{W+|sv|fimp|g}}, {{W+|sv|stump|g}}
* {{Z|th}}: {{W+|th|ก้นบุหรี่}}
* {{Z|tr}}: {{W+|tr|izmarit}}
* {{Z|uk}}: {{W-|uk|недо́палок|n}}
* {{Z|cy}}: {{W-|cy|stwmp|n}}, {{W-|cy|bonyn|n}}, {{W-|cy|stwmpyn|n}}
* {{Z|km}}: {{W-|km|កន្ទុយបារី|tr=kɑntuy baarəy}}
* {{Z|el}}: {{W+|el|αποτσίγαρο|nt}}
{{werger-bin}}
{{werger-ser|serikê kîr|4}}
{{werger-bin}}
{{werger-bnr|kîr (5)|kîr}}
{{werger-bin}}
=== Rengdêr ===
{{rengdêr|ku}}
# {{guharto|ku|qop|w=[[kulek]], [[seqet]]}}
==== Etîmolojî ====
Ji {{paş|ku|qop|-ik}}.
=== Çavkanî ===
{{çavkanî}}
9y50eri3989odhsqa2eih8mzqm494ka
vacant
0
201572
6329683
6088624
2026-08-12T18:22:08Z
~2026-39478-20
15145
/* {{ziman|en}} */ ji bo van mehnan hemuyan yek gotinek kurdi heye; vacate: betilandin > vacation: betilan, lewma vacant: betal
6329683
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-us-vacant.ogg|dever=DYA}}
=== Rengdêr ===
{{rengdêr|en}}
# [[betal]]
8isop24tx2gzgagq3qp7imjuox9rfby
6329689
6329683
2026-08-12T18:53:22Z
Wikihez
7344
Guhartinên [[Special:Contributions/~2026-39478-20|~2026-39478-20]] ([[User talk:~2026-39478-20|gotûbêj]]) hatine betalkirin, vegerand guhartoya dawî ya [[User:Balyozbot|Balyozbot]]
6088624
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-us-vacant.ogg|dever=DYA}}
=== Rengdêr ===
{{rengdêr|en}}
# [[vala]], [[vekirî]], [[bêkar]], bi nêrînên bêwate, (huk.) hatî terkirin, [[bêxwedî]], [[bêwêrîs]], [[bêmîratgir]]
ntrrfjxqq2wmjxw8fxws7c4dtxr47an
kefik
0
261287
6329616
6329615
2026-08-12T12:12:11Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329616
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Kefik.jpg|thumb|kefik]]
{{navdêr|ku|z=m}}
# [[amûr|Amûra]] ku ji bo [[carû]]kirinê, [[sewax]]kirinê tê [[bi kar anîn|bikaranîn]].
#: {{hevmaneyên peyvê|ku|malinc}}
# Cihê kevir tê xistin ê [[çeqelîk]]an.
==== Hevmane ====
* {{g|ku|male}}
==== Jê ====
{{kol3|ku|cure=Jê
|kefik kirin<pos:lêker>
|kefikkirin<pos:navdêr>
|kefikkirî<pos:rengdêr>
}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|maurerkelle}}
* {{Z|fa}}: {{W+|fa|برآمدگی}}, {{W+|fa|قوس}}, {{W+|fa|انحنا}}
* {{Z|en}}: {{W+|en|trowel}}, {{W|en|mould|guman=erê}}
* {{Z|tr}}: {{W+|tr|mala}}, {{W+|tr|dışık}}, {{W+|tr|küf}}, {{W|tr|köpük|guman=erê}}, {{W+|tr|aya}}
{{werger-bin}}
q0766j2mb1h4iww1fzaj9f68uz6yjtl
qîtik
0
265073
6329910
6329303
2026-08-13T01:12:09Z
Wikihez
7344
6329910
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr 1 ===
{{navdêr|ku|z=m}}
# {{maneid|ku|çiqilk}} [[girêk]], [[pirsik]]<ref>{{Ferhenga Kamêran}}</ref>, [[çiqilk]]<ref>{{Ferhenga Destî|r=324}}</ref>
#: '''''qîtika''' darê; ang girêkên liser qurmê daran''
#* {{jêder-malper|ku|jêgirtin=Hin şax û '''qîtikan''' li ber xwe dibîne, radibe dide hev û datîne ser barê xwe...|nivîskar=Ciwanê Abdal|sernav=Xêza Şîn|url=http://www.xoybun.com/modules.php?name=Sektions&op=printpage&artid=245|malper=xoybun.com|sal=}}
# {{f|ku|balinde}} {{q|navz|Phalacrocorax}}.<ref name="Farqînî" >{{Zana Farqînî|r=1525}}</ref>
#* {{jêder-malper|ku|metna-orîjînal=tr:Belki bir kuştur. Belki tosbağadır. Belki bir kirpidir. Belki de yakın denizden seslenen bir balık, bir canavardır. Karabataktır. Mihalaki kuşudur.|url2=http://derkenar.com/sait-faik-abasiyanik+hist-hist|orîjînal=Hişt, Hişt!|nivîskar=Sait Faik Abasıyanık|wergêr=Ömer Özbek|sernav=HİŞT HİŞT!|url=https://sehrengizdergisi.wordpress.com/|malper=sehrengizdergisi.wordpress|sal=2016|jêgirtin=Dibe ku çûkek e. Dibe ku kîsoyek e. Dibe ku jîjoyek e. Dibe ku ê badike ji behrekî nêzîk ve masîyek, cinawirek e. '''Qîtik''' e. Çûkê mihalakî ye.}}
# {{f|ku|sebze}} [[ecûr]], [[tirozî]]<ref name="Farqînî" />
# {{guharto|ku|gilik|w=klîtoris}}<ref name="Farqînî" />
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser|1}}
* {{Z|tr}}: {{W+|tr|budak}}<ref name="izolî">{{ferhenga izolî|r=344}}</ref>
{{werger-bin}}
{{werger-ser|2}}
* {{Z|tr}}: {{W+|tr|karabatak}}<ref name="Farqînî" />
{{werger-bin}}
{{werger-ser|3}}
* {{Z|tr}}: {{W+|tr|acur}}<ref name="Farqînî" />
{{werger-bin}}
{{werger-bnr|4|gilik}}
{{werger-ser|?}}
* {{Z|de}}: {{W+|de|Wadenbein}} {{n}}
* {{Z|fa}}: {{W+|fa|بست}}, {{W-|fa|خیلی سریع}}, {{W-|fa|ساقه کوچک}}, {{W+|fa|فوری}}
{{werger-bin}}
=== Navdêr 2 ===
{{navdêr|ku|z=n}}
# [[hestî|Hestiyekî]] [[ling]]ê.<ref name="yusuf paşa" >{{ferhenga yusuf paşa|r=185}}</ref>
#* {{jêder-kitêb|ku|jêgirtin=Em jî li ser vê gotina pêşiyên me gotî: "Mî (mêşin) û bizin her yekê bi '''qîtik(ling)ên''' xwe va têne dalqandin" bi hişmendî fikirin.|nivîskar=Kemal Tolan|sernav=Gengeşe û Sedemên Peyva ku Êzdî Bilêvnakin|weşanxane=Weşanên Na|sal=2013|rûpel=92|isbn=9786056392627}}
# {{f|ku|lîstik}} [[qîtê]]
#: {{hevmane|ku|tûtê|darqîtik}}<ref>{{kovara kurmancî|hejmar=61|sernav=Hin peyvên kêmnas – nenas|nivîskar=Reşo Zîlan|r=4}}</ref>
#* {{jêder-malper|ku|jêgirtin='''Qîtik''': Du kom dilîzin. Bi şiva tê lîstin. Ji komê dor bi dor yek qîtikê davêje. Şiv destekî da, parçekî darê ku jê ra dibêjin qîtik, didine ser qevda dest û şivê, wê qîtikê davêjin hewa û bi şivê lê dixin davêjin dûr.|nivîskar=Yaşar Eroğlu|sernav=Lîstikê zara yê gundê Qazî|url=https://gundeqazi.blogspot.com/2019/03/litike-zara-ye-gunde-qazi.html|malper=gundeqazi.blogspot.com|sal=2018}}
#* {{jêder-malper|ku|jêgirtin=Zarokan bi hindilk, '''qîtik''', heftok û xara dilîstin.|nivîskar=Xidir Ûso|sernav=Berpirsîyarîya Xerzan|url=https://portal.netewe.com/berpirsiyariya-xerzan/|malper=portal.netewe.com|sal=2016}}
# [[şiv|Şiva]] ku ev [[lîstik]] pê re tê [[lîstin]].<ref name="Farqînî" />
#: {{hevmane|ku|tirtîl|tût}}<ref>{{kovara kurmancî|hejmar=61|sernav=Hin peyvên hêla Bașûrê Wanê|nivîskar=Mele Şeban Turgut û Elîṣêr|r=1}}</ref>
#* {{jêder-malper|ku|jêgirtin=Qîtik: Du kom dilîzin. Bi şiva tê lîstin. Ji komê dor bi dor yek qîtikê davêje. Şiv destekî da, parçekî darê ku jê ra dibêjin '''qîtik''', didine ser qevda dest û şivê, wê qîtikê davêjin hewa û bi şivê lê dixin davêjin dûr.|nivîskar=Yaşar Eroğlu|sernav=Lîstikê zara yê gundê Qazî|url=https://gundeqazi.blogspot.com/2019/03/litike-zara-ye-gunde-qazi.html|malper=gundeqazi.blogspot.com|sal=2018}}
#* {{jêder-kitêb|ku|jêgirtin=Amûrên vê lîstikê darek 70-80 cm û '''qîtikek''' bi qasî 20-25 cm ye.|nivîskar=Aram Gernas|sernav=Folklor û Cıvat -Folklor, wêje, ziman, çand, xeyset, muzîk, urf û adet, dîrok-|url=https://www.google.com.tr/books/edition/Folklor_%C3%BB_C%C4%B1vat_Folklor_w%C3%AAje_ziman_%C3%A7/iUqeEAAAQBAJ?hl=en&gbpv=1&dq=%22q%C3%AEtikek%22&pg=PA573&printsec=frontcover|weşanxane=Pak Ajans|sal=2022|rûpel=573|isbn=9786257383578}}
# [[parçe]]<ref name="Farqînî" />
#* {{jêder-malper|ku|jêgirtin=Paşê jî rima xwe ya nola rima di destê Dewrêşê Evdî de, tedît ew rima dowazde movik û çarde '''qîtikî''', diziqitîne gewriya Chimeria.|nivîskar=Agîd Yazar|sernav=Bellerefon û dêwe sê serî chimeria|url=https://xwebun1.org/bellerefon-u-dewe-se-seri-chimeria/|malper=xwebun1.org|sal=2022}}
==== Tewandin ====
{{ku-tewîn-nav/nû|nêr}}
==== Formên alternatîv ====
* {{hw|ku|qîçik||hestiyê lingê}}<ref name="yusuf paşa" />
==== Werger ====
{{werger-ser|1}}
* {{Z|en}}: {{W+|en|fibula}}, {{W+|tr|calf bone}}
* {{Z|tr}}: {{W+|tr|baldır kemiği}},<ref name="izolî"/> {{W-|tr|bacak kemiği}},<ref name="Anter">{{Musa Anter|r=113}}</ref><ref name="Farqînî" /> {{W-|tr|paça kemiği}},<ref name="Anter"/>
{{werger-bin}}
{{werger-ser|2}}
* {{Z|tr}}: {{W+|tr|çelik çomak}}
{{werger-bin}}
{{werger-ser|3}}
{{werger-bin}}
{{werger-ser|4}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
== {{ziman|zza}} ==
=== Navdêr ===
{{navdêr|zza|z=n}}
# {{g|ku|qîtik|id=çiqilk}},<ref>{{kovar|kovar=Nüsha|url=https://dergipark.org.tr/en/download/article-file/1301542|sernav=TÜRKÇE-KİRMANCCA (ZAZACA) SÖZLÜK BAĞLAMINDA ZAZACADA EŞANLAMLI SÖZCÜKLER|nivîskar=Ahmet Kırkan|hejmar=51|sal=2020|rûpel=180}}</ref> [[çiqilk]]
#: {{hevmane|zza|qît|z1=n|toke|z2=m|girçike|z3=n}}
=== Çavkanî ===
{{çavkanî}}
7nhh41zzyg1o44gbr5ofxf8jfn15tdl
jinûvekirin
0
358079
6329797
6309365
2026-08-12T22:42:01Z
Wikihez
7344
6329797
wikitext
text/x-wiki
{{bnr-l|ji nû ve kirin}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m|lk=ji nû ve kirin}}
# kirina carekî din, [[dubarekirin]]
#* {{jêder-kovar|ku|jêgirtin=Ev studyoya çêkerên lîstikan ên ji Mîlanoyê, di sala 2003yan de hat damezrandin, bi awayekî zelal projeyeke '''jinûvekirina''' malê xwe ya lîstikên kompûterê bû û bangeke radîkalkirina çanda populer îfade dikir.|kovar=Le Monde diplomatique kurdî|sernav=Ruhê rexnegir û lîstika komputerê|url=https://diplo-kurdi.com/sites/default/files/2020-06/LMD-50-dlg.pdf|nivîskar=Vincent de Maupéou|wergêr=Luqman Guldivê|hejmar=50|sal=4/2020|rûpel=20}}
#* {{jêder-malper|ku|jêgirtin=Îtaliya '''jinûvekirina''' balyozxaneya xwe li Sûriyê gotûbêj dike|sernav=Îtaliya jinûvekirina balyozxaneya xwe li Sûriyê gotûbêj dike|url=https://www.arknews.net/ku/node/6730|malper=arknews.net|dîrok=14.01.2019}}
#* {{jêder-malper|ku|jêgirtin=Ev hejmar tên tomarkirin du rojan berî sistkirina bendan û '''jinûvekirina''' bazar û xwaringeh û navendên ayînî.|sernav=Hindistan bi Hejmara Keysên Korona Dikeve Pêş Îtalya|url=https://www.dengeamerika.com/a/india-coronavirus-new-cases/5451982.html|malper=dengeamerika.com|sal=6/2020}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{pêk|ku|ji nû ve|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|repeat}}, {{W|en|refresh}}
* {{Z|tr}}: {{W|tr|yenileme}}, {{W|tr|tekrarlama}}
{{werger-bin}}
=== Çavkanî ===
# {{Chyet|r=291}}
tq4xvfjn74cj4kf9k28eujy3dpu304k
vegotinnasî
0
380582
6329621
6270090
2026-08-12T13:44:07Z
Wikihez
7344
6329621
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[vegêrannasî]]
#* {{jêder-kitêb|ku|nivîskar=Nüket Esen; Ramazan Çeçen|sernav=Sempozyûma Edebiyata Berawirdî Ji Duh Heta Îro di Edebiyatên Tirkî û Kurdî de Texeyulên Nasnameyî|weşanxane=Unîversîteya Artukluyê|sal=2015|rûpel=7|isbn=978-605-4202-19-5|jêgirtin=Piştre li ser daweta Zanîngeha Mardîn Artukluyê, di Medreseya Zincîriyeyê de, ku avahiyeke şaheser e, bi navê "Destpêka '''Vegotinnasiyê'''" min konferansek da.}}
#* {{jêder-websîte|ku|nivîskar=Zinarê Xamo|sernav=Li ser hevpeyvîna Remezan Alan|websîte=zinarexamo.blogspot.com|url=https://zinarexamo.blogspot.com/2014/06/li-ser-hevpeyvina-remezan-alan.html|tarîx=2014-06-03|jêgirtin=Ew li zanîngeha Artukluyê dersên ”edebiyata kurdî ya modern, “rexneya edebî”, “'''vegotinnasî”''' û “zanista edebiyata modern” dide.}}
#* {{jêder-kovar|ku|jêgirtin=Li zanîngehê, li dersê, li xwaringehê, li qantînê wextê ku ez bi hevalan re diştexilîm jî min bi xwe digot gelo ez çawa dest bi çîrokekê bikim, hewce ye ez hin çîrokan bixwînim an jî hinek kitêbên teorîk ku mamoste di dersa '''vegotinnasiyê''' de rayî me dabû û me hin piratîk jî li ser wan kiribûn, bixwînim?|kovar=Bar|sernav=Pîrebokên Qubalekan - II|nivîskar=Mehmet Emîn Cîrîk|hejmar=4|sal=2020|rûpel=32}}
==== Etîmolojî ====
Ji {{qertaf|ku|vegotin|-nasî}}.
==== Werger ====
{{werger-ser|lêkolîna vegotinê ya akademîk|1}}
* {{Z|de}}: {{W-|de|Erzähltheorie|m}}, {{W+|de|Narratologie|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W-|cmn|敘事學|tr=xùshìxué}}
* {{Z|fi}}: {{W+|fi|narratologia}}
* {{Z|fr}}: {{W+|fr|narratologie|m}}
* {{Z|nl}}: {{W+|nl|narratologie|m}}
* {{Z|en}}: {{W+|en|narratology}}
* {{Z|it}}: {{W-|it|narratologia|m}}
* {{Z|ca}}: {{W-|ca|narratologia|m}}
* {{Z|ky}}: {{W-|ky|нарратология}}
* {{Z|lt}}: {{W-|lt|naratologija|m}}
* {{Z|hu}}: {{W+|hu|narratológia}}
* {{Z|pl}}: {{W+|pl|narratologia|m}}
* {{Z|pt}}: {{W-|pt|narratologia|m}}
* {{Z|kk}}: {{W-|kk|нарратология}}
* {{Z|ru}}: {{W+|ru|нарратоло́гия|m}}
* {{Z|es}}: {{W+|es|narratología|m}}
* {{Z|tr}}: {{W-|tr|naratoloji}}, {{W+|tr|anlatıbilim}}, {{W+|tr|anlatı bilimi}}
{{werger-bin}}
:{{werger çavkanî|en|narratology|beş=Ev qismê Wergerê|oldid=88652576}}
e93w91jjdfepr7sdrinmcp2c3id5i2p
kustex
0
450166
6329829
6245407
2026-08-12T23:25:57Z
Wikihez
7344
/* Rengdêr */
6329829
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesê [[qure]], [[qebe]] û [[bêedeb]].
#: {{hevmane|ku|qure|pozbilind|kanc|nefsmezin|mexrûr|bêar|bisteh|bêfedî}}
#* {{jêder-kovar|ku|jêgirtin=Ger zimên were sadekirin wê demê qîmeta rîsaleyan piçûk dibe û ew ên hewl didin ku vê karî bikin mirovên '''kustex''' in.|kovar=Muhakemat Uluslararası Risale-i Nur Araştırmaları Dergisi|sernav=Mela Îbrahîm Xelîlê Amedî û Rêbaza Wî di Wergera Rîsaleyên Nûrê da|nivîskar=Nesim SÖNMEZ|url=https://dergipark.org.tr/en/download/article-file/2767930|cîld=1|hejmar=2|dîrok=31.12.2022|rûpel=82}}
==== Formên alternatîv ====
* {{hw|ku|kustah}}
==== Etîmolojî ====
Ji {{ji|fa|ku|گستاخ|tr=gostâx}} (?).
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|frech}}, {{W+|de|anmassend}}, {{W+|de|keck}}, {{W|de|kess}}
* {{Z|fa}}: {{W+|fa|پرنخوت}}, {{W+|fa|فرومایه}}
* {{Z|en}}: {{W+|en|insolent}}, {{W+|en|impertinent}}, {{W+|en|arrogant}}, {{W+|en|immodest}}, {{W+|en|presumptuous}}, {{W+|en|cheeky}}, {{W+|en|brash}}, {{W+|en|flippant}}
* {{Z|tr}}: {{W+|tr|küstah}}
{{werger-bin}}
76f4waeln6ja3ubbk390myn778e9h7g
kartêk
0
459812
6329800
6309656
2026-08-12T22:46:42Z
Wikihez
7344
6329800
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[tesîr|Tesîr]], [[bandor]].
#* {{jêder|ku|jêgirtin=Van tiştên ku di nava kêliyekê de qewimîbûn '''kartêkeke''' mezin li ser Remezan hiştibûn.|{{Jêgirtin/Mîran Janbar/Qolyeya Cecileê|r=35}}}}
#* {{jêder-malper|ku|jêgirtin=Dengê Xalê Muzeferê ku ev 20 sal e çaverêya kurê xwe dike ne ku bi tenê gazî me dike em govaniyê li kurê wî yê winda û li jinavçûna mala wî bikin, lê herwiha em govaniyê li karesatekê jî bikin, a ku di mêjûya nêzîk de cemawerdane ber pêlên '''kartêka''' xwe.|sernav=Li bajêr binihêre, ji bo ku tu di bîr bînî û bibêjî|url=https://archive.org/details/revealingthecitythroughmemorykurdishenglish|malper=Anadolu Kultur.org|sal=01/2014}}
#* {{jêder-malper|ku|jêgirtin=Loma jî, di vê qonaxê de, ‘biyanek’ heye. Ev ‘biyan’ di qonaxa avakirina ‘xwebûnî’yê de, dibe sedem û '''kartêka''' ‘nebanbûnê’.|nivîskar=Dilawer Zeraq|sernav=‘Xwebûnî ya Wêjaya Kurdî’|url=https://web.archive.org/web/20200401134204/https://yeniozgurpolitika.net/xwebuni-ya-wejaya-kurdi/|malper=Yeni Özgür Politika|dîrok=20.07.2019}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Neologizmeke ji [[kar]] + [[tê]] + [[kirin]]
==== Werger ====
{{werger-ser|bandor}}
* {{Z|en}}: {{W+|en|effect}}
* {{Z|tr}}: {{W+|tr|etki}}
{{werger-bin}}
{{werger-ser|tevkirî}}
* {{Z|en}}: {{W+|en|contribution|guman=erê}}
* {{Z|tr}}: {{W+|tr|katkı|guman=erê}}
{{werger-bin}}
9sh48tnkhospkg51ev75bi3f2v21166
Şablon:werger-ser
10
517149
6329699
6111628
2026-08-12T19:29:45Z
Wikihez
7344
6329699
wikitext
text/x-wiki
<templatestyles src="Şablon:werger-ser/style.css"/><includeonly><div style="background-color: transparent; border-collapse: collapse;">
<div class="NavFrame werger-content" data-toggle-category="Wergerê" {{#if:{{{id|{{{1|}}}}}}|id="Werger-{{anchorencode:{{{id|{{{1|}}}}}}}}"}}>
<div class="NavHead"><i>{{{1|}}}</i>{{#if:{{{2|}}}| ({{{2|}}})}}</div>
<div class="NavContent">
<div style="{{#if: {{{stûn|}}} | column-count: {{{stûn}}}; -webkit-column-count: {{{stûn}}}; -moz-column-count: {{{stûn}}}; | {{#if: {{{firehî|}}} | column-width: {{{firehî}}}; -webkit-column-width: {{{firehî}}}; -moz-column-width: {{{firehî}}}; | column-width: 26em; -webkit-column-width: 26em; -moz-column-width: 26em; }}}} {{#if:{{{bgcolor|}}}|background-color: {{{bgcolor|}}}; | }} {{#if:{{{valign|}}}|vertical-align: {{{valign|}}}; |vertical-align: top; }} {{#if:{{{align|}}}|text-align: {{{align|}}};|text-align: left; }}"><div class="translations"></includeonly><noinclude>{{belgekirin}}</noinclude>
7626g1kir00ts9ak9vha1elp1d98jip
6329703
6329699
2026-08-12T19:37:40Z
Wikihez
7344
Guhartoya [[Special:Diff/6329699|6329699]] yê [[Special:Contributions/Wikihez|Wikihez]] ([[User talk:Wikihez|gotûbêj]]) şûnde kir
6329703
wikitext
text/x-wiki
<templatestyles src="Şablon:werger-ser/style.css"/><includeonly><div style="background-color: transparent; border-collapse: collapse;">
<div class="NavFrame werger-content" {{#if:{{{id|{{{1|}}}}}}|id="Werger-{{anchorencode:{{{id|{{{1|}}}}}}}}"}}>
<div class="NavHead"><i>{{{1|}}}</i>{{#if:{{{2|}}}| ({{{2|}}})}}</div>
<div class="NavContent">
<div style="{{#if: {{{stûn|}}} | column-count: {{{stûn}}}; -webkit-column-count: {{{stûn}}}; -moz-column-count: {{{stûn}}}; | {{#if: {{{firehî|}}} | column-width: {{{firehî}}}; -webkit-column-width: {{{firehî}}}; -moz-column-width: {{{firehî}}}; | column-width: 26em; -webkit-column-width: 26em; -moz-column-width: 26em; }}}} {{#if:{{{bgcolor|}}}|background-color: {{{bgcolor|}}}; | }} {{#if:{{{valign|}}}|vertical-align: {{{valign|}}}; |vertical-align: top; }} {{#if:{{{align|}}}|text-align: {{{align|}}};|text-align: left; }}"><div class="translations"></includeonly><noinclude>{{belgekirin}}</noinclude>
5vffqfgtzo4mziw4km2q6w0fo92owu8
kero, nemire heta qîvar şîn dibin
0
519628
6329801
6251730
2026-08-12T22:52:04Z
Wikihez
7344
6329801
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# [[tehemil|Tehemil]] kirin di [[dem]]ên [[teng]] de ku [[herdem]] [[nexweşî]] nabe, lê [[wext]]ê [[xweş]] wê bê
==== Bi alfabeyên din ====
* {{ku-ar|کەرو، نەمرە حەتا قیڤار شین دبن}}
==== Formên alternatîv ====
{{kol3|ku|cure=Formên alternatîv
|kero nemir heta qîvar şînbê
|kero nemir bihar hat, pîrê nemir qîvar hat
|kero nemire heya qîfar şîn dibin.<ref:{{malper|sernav=Kero nemire heya qîfar şîn dibin.|url=http://www.gotinenpesiyan.com/?p=5361|malper=gotinenpesiyan.com|ziman=ku}}>
|kero nemire heta biharê ku qîvar çêdibin<ref:{{malper|nivîskar=Zeynelabidîn Zinar|url=http://www.lotikxane.com/2020/11/11/qaso-gotinen-pesiyan-in/|sernav=Qaşo “Gotinên Pêşiyan“ in|malper=lotikxane.com|dîrok=2020|ziman=ku}}>
|kero nemıre buhare heta çêbin qîvare<ref:{{pirtûk|nekat=1|nivîskar=Michael L. Chyet|url=https://books.google.com.tr/books?id=ZDLPDwAAQBAJ&pg=PA176&lpg=PA176&dq=%22kero+nemire%22&source=bl&ots=mlKNXBV2QC&sig=ACfU3U0u6kxo_dIha9bPAz1osEkWiBTb9A&hl=tr&sa=X&ved=2ahUKEwjk4IOfrKPtAhVFxYUKHf-cCjA4ChDoATADegQIARAC#v=onepage&q=%22kero%20nemire%22&f=false|sernav=FERHENGA BIRÛSKÎ - Kurmanji-English Dictionary - Volume Two: M-Z|weşanxane=Transnational Press London|sal=2020|rûpel=176|isbn=9781912997077}}>
|kero nemire bihar e, heta qêvar heşîn dibe<ref:{{malper|nivîskar=MIRAD GUNDIKÎ|url=http://www.nefel.com/articles/article_detail.asp?RubricNr=1&ArticleNr=4104|sernav=Dewlemendiya îdyomên kurdî|malper=nefel.com|dîrok=2009|ziman=ku}}>
|kero nemire heta kîvar şînbît <ref:{{malper|nivîskar=VAHİT AKIN|url=http://guzeres.tv.tr/sayfa.asp?sayfaID=9|sernav=Gotinêt Mezinan|malper=guzeres.tv.tr|ziman=ku}}>
|kero nemire buhar e giya şîn bû qîfar e<ref:{{kovar|kovar=Agirî|url=https://kurdistanmedia.com/content/upload/1/newsletter/agiri-371.pdf|sernav=Kero nemire buhar e giya şîn bû qîfar e|nivîskar=Elî Munezemî|hejmar=371|dîrok=05.04.2020|rûpel=4|ziman=ku}}>
|kero nemire heta kîvar şîn dibin<ref:{{kovara kurmancî|hejmar=14-15|sernav=Hinek metelok û gotinên pês,iya ji hêla Hekarîya|nivîskar=Rojan HAZIM|r=147}}>
|pîrê memire bihar tê, kero nemire qîvar tê<ref:{{malper|url=http://www.xoybun.com/modules/Content/print.php?pid=860|sernav=Gotinên pêşiyan|malper=xoybun.com|ziman=ku}}>
|kero nemire heta qîfal şinbibin<ref:{{malper|nivîskar=dilazadart|url=https://dilazad.wordpress.com/2013/10/19/ji-kaniya-zanine-cend-tilop/|sernav=JI KANÎYA ZANÎNÊ ÇEND TILOP|malper=dilazad.wordpress.com|dîrok=2013|ziman=ku}}>
|kero nemire qîar şîn tê<ref:{{kovar|kovar=Pîne|url=http://www.arsivakurd.org/images/arsiva_kurd/kovar/pine/pine_29.pdf|sernav=Caşik|hejmar=29|sal=2000|rûpel=|ziman=ku}}>
}}
==== Hevmane ====
* [[kerê nemir bihar ê tê, pîrê nemir pincar î tê]]
==== Etîmolojî ====
Ji ''[[kero]] + [[nemire]] + [[heta]] + [[qîvar]] + [[şîn]] + [[dibin]]''
==== Werger ====
{{werger-ser|stûn=1}}
* {{Z|en}}: (lit) {{W|en|donkey, don't die until the thistles sprout}}, (dynamic equivalent) {{W|en|keep your chin up}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
[[Kategorî:Kurmanciya kolankî li Dihokê]]
0hydeeuidqqky4ia772r15dk73fc5xt
6329802
6329801
2026-08-12T22:52:40Z
Wikihez
7344
Guhartoya [[Special:Diff/6329801|6329801]] yê [[Special:Contributions/Wikihez|Wikihez]] ([[User talk:Wikihez|gotûbêj]]) şûnde kir
6329802
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# [[tehemil|Tehemil]] kirin di [[dem]]ên [[teng]] de ku [[herdem]] [[nexweşî]] nabe, lê [[wext]]ê [[xweş]] wê bê
==== Bi alfabeyên din ====
* {{ku-ar|کەرو، نەمرە حەتا قیڤار شین دبن}}
==== Formên alternatîv ====
{{stûn|
* [[kero nemir heta qîvar şînbê]]
* [[kero nemir bihar hat, pîrê nemir qîvar hat]]
* [[kero nemire heya qîfar şîn dibin.]]<ref>{{malper|sernav=Kero nemire heya qîfar şîn dibin.|url=http://www.gotinenpesiyan.com/?p=5361|malper=gotinenpesiyan.com|ziman=ku}}</ref>
* [[kero nemire heta biharê ku qîvar çêdibin]]<ref>{{malper|nivîskar=Zeynelabidîn Zinar|url=http://www.lotikxane.com/2020/11/11/qaso-gotinen-pesiyan-in/|sernav=Qaşo “Gotinên Pêşiyan“ in|malper=lotikxane.com|dîrok=2020|ziman=ku}}</ref>
* [[kero nemıre buhare heta çêbin qîvare]]<ref>{{pirtûk|nekat=1|nivîskar=Michael L. Chyet|url=https://books.google.com.tr/books?id=ZDLPDwAAQBAJ&pg=PA176&lpg=PA176&dq=%22kero+nemire%22&source=bl&ots=mlKNXBV2QC&sig=ACfU3U0u6kxo_dIha9bPAz1osEkWiBTb9A&hl=tr&sa=X&ved=2ahUKEwjk4IOfrKPtAhVFxYUKHf-cCjA4ChDoATADegQIARAC#v=onepage&q=%22kero%20nemire%22&f=false|sernav=FERHENGA BIRÛSKÎ - Kurmanji-English Dictionary - Volume Two: M-Z|weşanxane=Transnational Press London|sal=2020|rûpel=176|isbn=9781912997077}}</ref>
* [[kero nemire bihar e, heta qêvar heşîn dibe]]<ref>{{malper|nivîskar=MIRAD GUNDIKÎ|url=http://www.nefel.com/articles/article_detail.asp?RubricNr=1&ArticleNr=4104|sernav=Dewlemendiya îdyomên kurdî|malper=nefel.com|dîrok=2009|ziman=ku}}</ref>
* [[kero nemire heta kîvar şînbît]] <ref>{{malper|nivîskar=VAHİT AKIN|url=http://guzeres.tv.tr/sayfa.asp?sayfaID=9|sernav=Gotinêt Mezinan|malper=guzeres.tv.tr|ziman=ku}}</ref>
* [[kero nemire buhar e giya şîn bû qîfar e]]<ref>{{kovar|kovar=Agirî|url=https://kurdistanmedia.com/content/upload/1/newsletter/agiri-371.pdf|sernav=Kero nemire buhar e giya şîn bû qîfar e|nivîskar=Elî Munezemî|hejmar=371|dîrok=05.04.2020|rûpel=4|ziman=ku}}</ref>
* [[kero nemire heta kîvar şîn dibin]]<ref>{{kovara kurmancî|hejmar=14-15|sernav=Hinek metelok û gotinên pês,iya ji hêla Hekarîya|nivîskar=Rojan HAZIM|r=147}}</ref>
* [[pîrê memire bihar tê, kero nemire qîvar tê]]<ref>{{malper|url=http://www.xoybun.com/modules/Content/print.php?pid=860|sernav=Gotinên pêşiyan|malper=xoybun.com|ziman=ku}}</ref>
* [[kero nemire heta qîfal şinbibin]]<ref>{{malper|nivîskar=dilazadart|url=https://dilazad.wordpress.com/2013/10/19/ji-kaniya-zanine-cend-tilop/|sernav=JI KANÎYA ZANÎNÊ ÇEND TILOP|malper=dilazad.wordpress.com|dîrok=2013|ziman=ku}}</ref>
* [[kero nemire qîar şîn tê]]<ref>{{kovar|kovar=Pîne|url=http://www.arsivakurd.org/images/arsiva_kurd/kovar/pine/pine_29.pdf|sernav=Caşik|hejmar=29|sal=2000|rûpel=|ziman=ku}}</ref>
}}
==== Hevmane ====
* [[kerê nemir bihar ê tê, pîrê nemir pincar î tê]]
==== Etîmolojî ====
Ji ''[[kero]] + [[nemire]] + [[heta]] + [[qîvar]] + [[şîn]] + [[dibin]]''
==== Werger ====
{{werger-ser|stûn=1}}
* {{Z|en}}: (lit) {{W|en|donkey, don't die until the thistles sprout}}, (dynamic equivalent) {{W|en|keep your chin up}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
[[Kategorî:Kurmanciya kolankî li Dihokê]]
0lhj8d9c4t539zprea8j8vdp6lyu0ns
6329803
6329802
2026-08-12T22:53:29Z
Wikihez
7344
6329803
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# [[tehemil|Tehemil]] kirin di [[dem]]ên [[teng]] de ku [[herdem]] [[nexweşî]] nabe, lê [[wext]]ê [[xweş]] wê bê
==== Bi alfabeyên din ====
* {{ku-ar|کەرو، نەمرە حەتا قیڤار شین دبن}}
==== Formên alternatîv ====
{{stûn|
* [[kero nemir heta qîvar şînbê]]
* [[kero nemir bihar hat, pîrê nemir qîvar hat]]
* [[kero nemire heya qîfar şîn dibin.]]<ref>{{malper|sernav=Kero nemire heya qîfar şîn dibin.|url=http://www.gotinenpesiyan.com/?p=5361|malper=gotinenpesiyan.com|ziman=ku}}</ref>
* [[kero nemire heta biharê ku qîvar çêdibin]]<ref>{{malper|nivîskar=Zeynelabidîn Zinar|url=http://www.lotikxane.com/2020/11/11/qaso-gotinen-pesiyan-in/|sernav=Qaşo “Gotinên Pêşiyan“ in|malper=lotikxane.com|sal=2020|ziman=ku}}</ref>
* [[kero nemıre buhare heta çêbin qîvare]]<ref>{{pirtûk|nekat=1|nivîskar=Michael L. Chyet|url=https://books.google.com.tr/books?id=ZDLPDwAAQBAJ&pg=PA176&lpg=PA176&dq=%22kero+nemire%22&source=bl&ots=mlKNXBV2QC&sig=ACfU3U0u6kxo_dIha9bPAz1osEkWiBTb9A&hl=tr&sa=X&ved=2ahUKEwjk4IOfrKPtAhVFxYUKHf-cCjA4ChDoATADegQIARAC#v=onepage&q=%22kero%20nemire%22&f=false|sernav=FERHENGA BIRÛSKÎ - Kurmanji-English Dictionary - Volume Two: M-Z|weşanxane=Transnational Press London|sal=2020|rûpel=176|isbn=9781912997077}}</ref>
* [[kero nemire bihar e, heta qêvar heşîn dibe]]<ref>{{malper|nivîskar=MIRAD GUNDIKÎ|url=http://www.nefel.com/articles/article_detail.asp?RubricNr=1&ArticleNr=4104|sernav=Dewlemendiya îdyomên kurdî|malper=nefel.com|sal=2009|ziman=ku}}</ref>
* [[kero nemire heta kîvar şînbît]] <ref>{{malper|nivîskar=VAHİT AKIN|url=http://guzeres.tv.tr/sayfa.asp?sayfaID=9|sernav=Gotinêt Mezinan|malper=guzeres.tv.tr|ziman=ku}}</ref>
* [[kero nemire buhar e giya şîn bû qîfar e]]<ref>{{kovar|kovar=Agirî|url=https://kurdistanmedia.com/content/upload/1/newsletter/agiri-371.pdf|sernav=Kero nemire buhar e giya şîn bû qîfar e|nivîskar=Elî Munezemî|hejmar=371|dîrok=05.04.2020|rûpel=4|ziman=ku}}</ref>
* [[kero nemire heta kîvar şîn dibin]]<ref>{{kovara kurmancî|hejmar=14-15|sernav=Hinek metelok û gotinên pês,iya ji hêla Hekarîya|nivîskar=Rojan HAZIM|r=147}}</ref>
* [[pîrê memire bihar tê, kero nemire qîvar tê]]<ref>{{malper|url=http://www.xoybun.com/modules/Content/print.php?pid=860|sernav=Gotinên pêşiyan|malper=xoybun.com|ziman=ku}}</ref>
* [[kero nemire heta qîfal şinbibin]]<ref>{{malper|nivîskar=dilazadart|url=https://dilazad.wordpress.com/2013/10/19/ji-kaniya-zanine-cend-tilop/|sernav=JI KANÎYA ZANÎNÊ ÇEND TILOP|malper=dilazad.wordpress.com|sal=2013|ziman=ku}}</ref>
* [[kero nemire qîar şîn tê]]<ref>{{kovar|kovar=Pîne|url=http://www.arsivakurd.org/images/arsiva_kurd/kovar/pine/pine_29.pdf|sernav=Caşik|hejmar=29|sal=2000|rûpel=|ziman=ku}}</ref>
}}
==== Hevmane ====
* [[kerê nemir bihar ê tê, pîrê nemir pincar î tê]]
==== Etîmolojî ====
Ji ''[[kero]] + [[nemire]] + [[heta]] + [[qîvar]] + [[şîn]] + [[dibin]]''
==== Werger ====
{{werger-ser|stûn=1}}
* {{Z|en}}: (lit) {{W|en|donkey, don't die until the thistles sprout}}, (dynamic equivalent) {{W|en|keep your chin up}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
[[Kategorî:Kurmanciya kolankî li Dihokê]]
abtaueqv6s0snzqyiooy3ydbndqgunx
kêlsim
0
539985
6329813
6310896
2026-08-12T23:00:54Z
Wikihez
7344
6329813
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[xeml]]
#* {{jêder-kovar|ku|jêgirtin=Mensûrê Girgaşî nizanibû ku dê hewqas reşî û belengazî bi serê Neteweyê wî ve bêtin. Eger wî zanibiya, bêguman wî hewqas pesn û wesyetê delalî û '''kêlsima''' biharê nedida.|kovar=Nûbihar|sernav=Mela Mensure Gêrgaşî|url=http://bnk.institutkurde.org/images/pdf/MS1GC63EVP.pdf|urlya-arşîvê=https://web.archive.org/web/20210224111421/https://bnk.institutkurde.org/images/pdf/MS1GC63EVP.pdf |nivîskar=Zeynelabidîn Zinar|hejmar=10|sal=1994|rûpel=82}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|süs}}<ref>{{Zana Farqînî|r=1007}}</ref>
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
g57rdyuz1uffknfbofga0ape6hpsm92
6329814
6329813
2026-08-12T23:02:01Z
Wikihez
7344
6329814
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# [[xeml]]
#* {{jêder-kovar|ku|jêgirtin=Mensûrê Girgaşî nizanibû ku dê hewqas reşî û belengazî bi serê Neteweyê wî ve bêtin. Eger wî zanibiya, bêguman wî hewqas pesn û wesyetê delalî û '''kêlsima''' biharê nedida.|kovar=Nûdem|sernav=Mela Mensure Gêrgaşî|url=http://bnk.institutkurde.org/images/pdf/MS1GC63EVP.pdf|urlya-arşîvê=https://web.archive.org/web/20210224111421/https://bnk.institutkurde.org/images/pdf/MS1GC63EVP.pdf |nivîskar=Zeynelabidîn Zinar|hejmar=10|sal=1994|rûpel=82}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|süs}}<ref>{{Zana Farqînî|r=1007}}</ref>
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
am7ksed7tohtphxb3v9q8k5ixy9mm2g
rainbows and unicorns
0
628097
6329660
6094345
2026-08-12T16:20:02Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329660
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-au-rainbows and unicorns.ogg|dever=Awistralya}}
=== Navdêr ===
{{navdêr|en}}
# {{e|en|biwêjî}} [[senaryo]]yeke [[pir]] [[baş]]
#* {{jêder-malper|ku|jêgirtin=''Just a few days earlier, the president [Donald Trump] had remarked that "nobody knew that healthcare could be so complicated". Now he's promising '''rainbows and unicorns'''.''|nivîskar=Anthony Zurcher|sernav=Trump addresses Congress: A kinder, gentler president|url=http://www.bbc.com/news/world-us-canada-39124349|malper=BBC News|dîrok=2017-03-01|t=Tenê berî çend rojan serokdewlet [Donald Trump] vê îşaret kiribû ku "kes nedizanî ku tenduristî dikare ewqasî kompleks bibe". Ew vêga soza senaryoyeke niwaze dide.}}
==== Hevmane ====
* {{g|en|sunshine and rainbows}}
==== Dijmane ====
* {{g|en|doom and gloom}}
==== Etîmolojî ====
Ji ''[[rainbows]] + [[and]] + [[unicorns]]''.
glbz6cxbmpilm1xwgoor78zqccb7wrz
6329661
6329660
2026-08-12T16:21:11Z
Wikihez
7344
/* Navdêr */
6329661
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-au-rainbows and unicorns.ogg|dever=Awistralya}}
=== Navdêr ===
{{navdêr|en}}
# {{e|en|biwêjî}} [[senaryo]]yeke [[pir]] [[baş]]
#* {{jêder-malper|ku|jêgirtin=Just a few days earlier, the president {{j-îzah|1==Donald Trump}} had remarked that "nobody knew that healthcare could be so complicated". Now he's promising '''rainbows and unicorns'''.|nivîskar=Anthony Zurcher|sernav=Trump addresses Congress: A kinder, gentler president|url=http://www.bbc.com/news/world-us-canada-39124349|malper=BBC News|dîrok=2017-03-01|t=Tenê berî çend rojan serokdewlet {{j-îzah|1==Donald Trump}} vê îşaret kiribû ku "kes nedizanî ku tenduristî dikare ewqasî kompleks bibe". Ew vêga soza senaryoyeke niwaze dide.}}
==== Hevmane ====
* {{g|en|sunshine and rainbows}}
==== Dijmane ====
* {{g|en|doom and gloom}}
==== Etîmolojî ====
Ji ''[[rainbows]] + [[and]] + [[unicorns]]''.
brh667un3kwp331wq8pca3t83w4s4ce
6329662
6329661
2026-08-12T16:21:26Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329662
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-au-rainbows and unicorns.ogg|dever=Awistralya}}
=== Navdêr ===
{{navdêr|en|j=tp}}
# {{e|en|biwêjî}} [[senaryo]]yeke [[pir]] [[baş]]
#* {{jêder-malper|ku|jêgirtin=Just a few days earlier, the president {{j-îzah|1==Donald Trump}} had remarked that "nobody knew that healthcare could be so complicated". Now he's promising '''rainbows and unicorns'''.|nivîskar=Anthony Zurcher|sernav=Trump addresses Congress: A kinder, gentler president|url=http://www.bbc.com/news/world-us-canada-39124349|malper=BBC News|dîrok=2017-03-01|t=Tenê berî çend rojan serokdewlet {{j-îzah|1==Donald Trump}} vê îşaret kiribû ku "kes nedizanî ku tenduristî dikare ewqasî kompleks bibe". Ew vêga soza senaryoyeke niwaze dide.}}
==== Hevmane ====
* {{g|en|sunshine and rainbows}}
==== Dijmane ====
* {{g|en|doom and gloom}}
==== Etîmolojî ====
Ji ''[[rainbows]] + [[and]] + [[unicorns]]''.
cwu0h3gs1hr7dtmb032wkvhdzrcm6yf
6329663
6329662
2026-08-12T16:21:52Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329663
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
* {{deng|en|en-au-rainbows and unicorns.ogg|dever=Awistralya}}
=== Navdêr ===
{{navdêr|en|j=tp}}
# {{e|en|biwêjî}} [[senaryo]]yeke [[pir]] [[baş]]
#* {{jêder-malper|ku|jêgirtin=Just a few days earlier, the president {{j-îzah|Donald Trump}} had remarked that "nobody knew that healthcare could be so complicated". Now he's promising '''rainbows and unicorns'''.|nivîskar=Anthony Zurcher|sernav=Trump addresses Congress: A kinder, gentler president|url=http://www.bbc.com/news/world-us-canada-39124349|malper=BBC News|dîrok=2017-03-01|t=Tenê berî çend rojan serokdewlet {{j-îzah|Donald Trump}} vê îşaret kiribû ku "kes nedizanî ku tenduristî dikare ewqasî kompleks bibe". Ew vêga soza senaryoyeke niwaze dide.}}
==== Hevmane ====
* {{g|en|sunshine and rainbows}}
==== Dijmane ====
* {{g|en|doom and gloom}}
==== Etîmolojî ====
Ji ''[[rainbows]] + [[and]] + [[unicorns]]''.
sqx4jphojdxun8ewjm4lkf1qrbwe34n
nêrûmê
0
649877
6329888
5751531
2026-08-13T00:31:24Z
Wikihez
7344
6329888
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr 1 ===
{{rengdêr|ku}}
# Kesê ku tenê ji kesên bi heman zayendê hez dike.
#* {{jêder-malper|ku|jêgirtin=Wê çaxa go hê em û zarokên dînozoran nehatibûn qetilkirin, birrek zarokên ca min hebûn. Em malbateke pirrceleb bûn û tu zagonan navê me nekiribûn “Bênamûs.” Em: Lezbiyen, '''nêrûmê''', tog û ensest gişk bi şanazî di bin banekî de dijiyan. Me parîkê nanê tisî jî bi hev re par ve dikir, pevşabûn jî.|nivîskar=Kovan Baqî|sernav=CERIBÎN – 2|url=https://krd.riataza.com/2016/11/26/ceribin-2/|malper=riataza.com|dîrok=26.11.2016}}
#* {{jêder-kovar|ku|jêgirtin=Çavên tije hêsir, mirovên kelogirî, civakên hestyar û ciyewaz ên ku Almodovar bi jîrbûneke mezin ji nav wan çîrokên xwe lihev tine, her kes bi çavên şil hestên xwe tîne ziman, poşmanî û lixwemikurbûn, her dem prisgirêkên sêksî yên ku wek mijarek balkêş di hemû filimên wî de têne xuyan, bitaybet “aumo sexuel” û yên '''nêrûmê''' wek mirovên nerim û dilneya û xwedî nirxên taybet û bi ser civakê de vekirî.|kovar=Kovara Şar|sernav=ALMODOVAR DERHÊNEREKÎ NAYÊ.AVANYA.ÇAVÊN TIJE..HÊSIR.Û.MIROVÊN KELOGIRÎ|url=http://shar-magazine.com/wp-content/uploads/2018/06/Issue5_Kurdi.pdf|nivîskar=Şêro Hindê|weşanxane=Weşanên rêxistina ŞAR a geşpêdanê|hejmar=5|sal=2016|rûpel=22}}
#* {{jêder-malper|ku|jêgirtin=Bes bila Kurdayetî û Kurdistanîbûnê nekin, doza netew-dewletbûnê nekin bes e. Qûnek e, qûnde ye, lezbîyen e, trans e, '''nêrûmê''' ye, qey ferq nake, hêç e. Hewceyî cîrantî û mîrantîyê nake yaw, ji xwe em di bin konekî de dijîn“ filan û xeftan.|nivîskar=Miradê Torî|sernav=Gelo hûn cîranên qûnek û qûnde dixwazin?|url=http://www.lotikxane.com/2015/05/12/gelo-hun-ciranen-qunek-u-qunde-dixwazin/|malper=lotikxane.com|dîrok=2015-05-12}}
==== Hevmane ====
* [[hevzayend]]
* [[homoseksuel]]
==== Etîmolojî ====
[[nêr]] + [[û]] + [[mê]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|homosexual}}, {{W+|en|queer}}
{{werger-bin}}
=== Rengdêr 2 ===
{{rengdêr|ku}}
# {{bnr|nêremê}}
1nxlvl5cxiekapiycz4q2vmzn1gzifp
6329893
6329888
2026-08-13T00:41:07Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329893
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr 1 ===
{{rengdêr|ku}}
# Kesê ku tenê ji kesên bi heman zayendê hez dike.
#* {{jêder-malper|ku|jêgirtin=Wê çaxa go hê em û zarokên dînozoran nehatibûn qetilkirin, birrek zarokên ca min hebûn. Em malbateke pirrceleb bûn û tu zagonan navê me nekiribûn “Bênamûs.” Em: Lezbiyen, '''nêrûmê''', tog û ensest gişk bi şanazî di bin banekî de dijiyan. Me parîkê nanê tisî jî bi hev re par ve dikir, pevşabûn jî.|nivîskar=Kovan Baqî|sernav=CERIBÎN – 2|url=https://krd.riataza.com/2016/11/26/ceribin-2/|malper=riataza.com|dîrok=26.11.2016}}
#* {{jêder-kovar|ku|jêgirtin=Çavên tije hêsir, mirovên kelogirî, civakên hestyar û ciyewaz ên ku Almodovar bi jîrbûneke mezin ji nav wan çîrokên xwe lihev tine, her kes bi çavên şil hestên xwe tîne ziman, poşmanî û lixwemikurbûn, her dem prisgirêkên sêksî yên ku wek mijarek balkêş di hemû filimên wî de têne xuyan, bitaybet “aumo sexuel” û yên '''nêrûmê''' wek mirovên nerim û dilneya û xwedî nirxên taybet û bi ser civakê de vekirî.|kovar=Kovara Şar|sernav=ALMODOVAR DERHÊNEREKÎ NAYÊ.AVANYA.ÇAVÊN TIJE..HÊSIR.Û.MIROVÊN KELOGIRÎ|url=http://shar-magazine.com/wp-content/uploads/2018/06/Issue5_Kurdi.pdf|nivîskar=Şêro Hindê|weşanxane=Weşanên rêxistina ŞAR a geşpêdanê|hejmar=5|sal=2016|rûpel=22}}
#* {{jêder-malper|ku|jêgirtin=Bes bila Kurdayetî û Kurdistanîbûnê nekin, doza netew-dewletbûnê nekin bes e. Qûnek e, qûnde ye, lezbîyen e, trans e, '''nêrûmê''' ye, qey ferq nake, hêç e. Hewceyî cîrantî û mîrantîyê nake yaw, ji xwe em di bin konekî de dijîn“ filan û xeftan.|nivîskar=Miradê Torî|sernav=Gelo hûn cîranên qûnek û qûnde dixwazin?|url=http://www.lotikxane.com/2015/05/12/gelo-hun-ciranen-qunek-u-qunde-dixwazin/|malper=lotikxane.com|dîrok=2015-05-12}}
==== Hevmane ====
* [[hevzayend]]
* [[homoseksuel]]
==== Etîmolojî ====
[[nêr]] + [[û]] + [[mê]]
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|homosexual}}, {{W+|en|queer}}
{{werger-bin}}
=== Rengdêr 2 ===
{{rengdêr|ku}}
# {{bnr|nêremê}}
dnwzuxavf8jo5levepad3r3vxdkksym
qilfkerê
0
810083
6329715
4282103
2026-08-12T20:34:40Z
Wikihez
7344
/* {{ziman|ku}} */
6329715
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Formeke navdêrê ===
{{ku-tew-nav|qilfker|mê û nêr}}
{{navdêr|ku|form=erê}}
# {{ku-tewîna-nav|qilfker|mê û nêr}}
hjc12p7oo1yq63u346gl0son3fmdaiy
qepaçe kirin
0
837140
6329904
6286296
2026-08-13T00:55:41Z
Wikihez
7344
6329904
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=h-ngh}}
# {{mane?|ku}}
#* {{jêder-malper|ku|jêgirtin=Li devê dêrî xêrhatina me dike. Ew û Egîdê Cimo kêfxweşiyê didin hev. Hev '''qepaçe dikin'''.|nivîskar=Salihê Kevirbirî|sernav=Karapetê Xaço : ‘50 Milyon Kurmanc Nikare li min Xwedî Derkeve!..’|url=http://www.pdk-xoybun.com/modules/Content/print.php?pid=1419 |urlya-arşîvê=https://web.archive.org/web/20200218150215/http://www.pdk-xoybun.com/modules/Content/print.php?pid=1419|malper=PDK-XOYBUN|dîrok=15.01.2005}}
#* {{jêder|ku|jêgirtin=Ew ber pê ve diçû, wî '''qepaçe dikir''' û ji kêfa hem dikeniya û hem jî digiriya.|Kamil Geylanî: ''Wezîrê Zindanê'' Armanc, 1996, r. 13}}
#* {{jêder|ku|jêgirtin=Gava Xalê Hecî ez '''qepaçe kirim''' û dest pê kir bi mekîneyê porê min kur kir...|Înan Eroglu: ''Têbîniyek'', Avesta, 2019, r.35}}
==== Hevmane ====
* [[hembêz kirin]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|kucaklamak}}<ref>{{Zana Farqînî|r=1492}}</ref>, {{W+|tr|sarmak}}<ref>{{Zana Farqînî|r=1492}}</ref>
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
f1j6hjzueyda3xv1p0aw2rksmtka3jn
nikulsor
0
839520
6329891
5020618
2026-08-13T00:33:05Z
Wikihez
7344
6329891
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Rengdêr ===
{{rengdêr|ku}}
# {{rastnivîs|nikilsor}}
#* {{jêder-pirtûk|ku|jêgirtin=Em '''nikulsor''' in, basknexşîn in.|nivîskar={{w|Roşan Lezgîn}}|sernav=Serketina Kewan|weşanxane=Weşanên Roşna|sal=2020|rûpel=68}}
#* {{jêder-kovar|ku|jêgirtin=Dengê wê yê nazik û nermik di guhê min de mîna dengê Kewa '''nikulsor''' bû.|kovar=Kovara Bîrnebûn|url=http://birnebun.eu/hejmar/birnebunweb40.pdf|nivîskar=Xizan Şîlan|hejmar=40|sal=2009|r=41}}
9wzimmpim8ig35r37r5kjckjic6efao
nikilsor
0
839521
6329890
6195270
2026-08-13T00:32:27Z
Wikihez
7344
6329890
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|nikilsor}}
[[Wêne:Piwiya nikulsor.jpg|thumb|Pîwiyeke '''nikilsor'''.]]
{{rengdêr|ku}}
# [[heywan|Heywan]]ên ku [[nikil]]ên wan [[sor]] e.
#* {{jêder-pirtûk|ku|jêgirtin=Em '''nikulsor''' in, basknexşîn in.|nivîskar={{w|Roşan Lezgîn}}|sernav=Serketina Kewan|weşanxane=Weşanên Roşna|sal=2020|rûpel=68}}
#* {{jêder-kovar|ku|jêgirtin=Dengê wê yê nazik û nermik di guhê min de mîna dengê Kewa '''nikulsor''' bû.|kovar=Kovara Bîrnebûn|url=http://birnebun.eu/hejmar/birnebunweb40.pdf|nivîskar=Xizan Şîlan|hejmar=40|sal=2009|r=41}}
==== Jê ====
* [[pîwiya nikilsor]]
==== Etîmolojî ====
Ji {{qertaf|ku|nikil|sor}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|red-billed}}
* {{Z|tr}}: {{W-|tr|kırmızı gagalı}}
{{werger-bin}}
88pkywzvgnff9dh3z609vt03tw8sdpt
6329919
6329890
2026-08-13T02:12:14Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329919
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{ku-tewîn-rd|nikilsor}}
[[Wêne:Piwiya nikulsor.jpg|thumb|Pîwiyeke '''nikilsor'''.]]
{{rengdêr|ku}}
# [[heywan|Heywanên]] ku [[nikil]]ên wan [[sor]] e.
#* {{jêder-pirtûk|ku|jêgirtin=Em '''nikulsor''' in, basknexşîn in.|nivîskar={{w|Roşan Lezgîn}}|sernav=Serketina Kewan|weşanxane=Weşanên Roşna|sal=2020|rûpel=68}}
#* {{jêder-kovar|ku|jêgirtin=Dengê wê yê nazik û nermik di guhê min de mîna dengê Kewa '''nikulsor''' bû.|kovar=Kovara Bîrnebûn|url=http://birnebun.eu/hejmar/birnebunweb40.pdf|nivîskar=Xizan Şîlan|hejmar=40|sal=2009|r=41}}
==== Jê ====
* [[pîwiya nikilsor]]
==== Etîmolojî ====
Ji {{qertaf|ku|nikil|sor}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|red-billed}}
* {{Z|tr}}: {{W-|tr|kırmızı gagalı}}
{{werger-bin}}
jawewc0pos091rxdrz2kotin73ef2aq
mozvan
0
844588
6329871
6195372
2026-08-13T00:21:41Z
Wikihez
7344
/* Navdêr */
6329871
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{f|en|pîşe}} [[mêşok]], [[mêşvan]], [[kes]]ê ku ji bo bidestxistina [[hingiv]]ê [[mêş]]an [[xwedî kirin|xwedî dike]]
#* {{jêder-malper|ku|url=https://kurmanci.sahartv.ir/news/tirkiye-i317815|jêgirtin=Gelek '''mozvanên''' ji navçe û bajarên dorberê hatin Meletiyê kewarên xwe datînin zozanan.|sernav=Mozvanên gerok li zozanên Meletiyê ne|malper=kurmanci.sahartv.ir|dîrok=2020-07-18}}
==== Etîmolojî ====
* Ji {{paş|ku|moz|-van}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|arıcı}}
{{werger-bin}}
muyj1c8sgxg4jfw6k6b81e6g2nmz664
6329872
6329871
2026-08-13T00:21:50Z
Wikihez
7344
/* Etîmolojî */ (bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re)
6329872
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{f|en|pîşe}} [[mêşok]], [[mêşvan]], [[kes]]ê ku ji bo bidestxistina [[hingiv]]ê [[mêş]]an [[xwedî kirin|xwedî dike]]
#* {{jêder-malper|ku|url=https://kurmanci.sahartv.ir/news/tirkiye-i317815|jêgirtin=Gelek '''mozvanên''' ji navçe û bajarên dorberê hatin Meletiyê kewarên xwe datînin zozanan.|sernav=Mozvanên gerok li zozanên Meletiyê ne|malper=kurmanci.sahartv.ir|dîrok=2020-07-18}}
==== Etîmolojî ====
Ji {{paş|ku|moz|-van}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|arıcı}}
{{werger-bin}}
3cauq8ciqngq093wy2s9cbf5zk6kn9q
6329873
6329872
2026-08-13T00:22:11Z
Wikihez
7344
[[Bikarhêner:Wikihez/templateScript2.js|TS]]: sererastkirin
6329873
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{f|en|pîşe}} [[kes|Kes]]ê ku ji bo bidestxistina [[hingiv]]ê [[mêş]]an [[xwedî kirin|xwedî dike]].
#: {{hevmane|ku|mêşok|mêşvan}}
#* {{jêder-malper|ku|url=https://kurmanci.sahartv.ir/news/tirkiye-i317815|jêgirtin=Gelek '''mozvanên''' ji navçe û bajarên dorberê hatin Meletiyê kewarên xwe datînin zozanan.|sernav=Mozvanên gerok li zozanên Meletiyê ne|malper=kurmanci.sahartv.ir|dîrok=2020-07-18}}
==== Etîmolojî ====
Ji {{paş|ku|moz|-van}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|arıcı}}
{{werger-bin}}
jgrl2hny2xauwhf36u674u1bpcff9k2
6329921
6329873
2026-08-13T02:12:20Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir, --Valahiyên nehewce.)
6329921
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# {{f|en|pîşe}} [[kes|Kesê]] ku ji bo bidestxistina [[hingiv]]ê [[mêş]]an [[xwedî kirin|xwedî dike]].
#: {{hevmane|ku|mêşok|mêşvan}}
#* {{jêder-malper|ku|url=https://kurmanci.sahartv.ir/news/tirkiye-i317815|jêgirtin=Gelek '''mozvanên''' ji navçe û bajarên dorberê hatin Meletiyê kewarên xwe datînin zozanan.|sernav=Mozvanên gerok li zozanên Meletiyê ne|malper=kurmanci.sahartv.ir|dîrok=2020-07-18}}
==== Etîmolojî ====
Ji {{paş|ku|moz|-van}}.
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W+|tr|arıcı}}
{{werger-bin}}
ay3z8vlxeshg1ij8toi9hjy06ifk0a4
navcîtî
0
844589
6329875
6248187
2026-08-13T00:25:49Z
Balyozbot
7867
/* Navdêr */ sererastkirin
6329875
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[navbeynkarî]], [[qencnavbêjî]], [[navbêjî]], [[nav bêjî]], [[berhengarî]]
#* {{jêder-malper|ku|jêgirtin=''Îran amade ye jibo kêmkirina kêşeyê navbera Ermenistan û Komara Azerbaycanê '''navcîtiyê''' bike.''|url=https://kurmanci.sahartv.ir/news/%C3%8Eran-i317801|malper=kurmanci.sahartv.ir|dîrok=2020-07-18}}
==== Formên alternatîv ====
* [[navçîtî]]
==== Etîmolojî ====
Ji {{qertaf|ku|nav|cîtî}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|وساطت}}
* {{Z|en}}: {{W+|en|good office}}, {{W+|en|good offices}}, {{W+|en|intercession}}
* {{Z|tr}}: {{W|tr|ara buluculuk}}
{{werger-bin}}
38vyhfetkpbq2l8t27te15oxs3toi0r
6329886
6329875
2026-08-13T00:30:22Z
Wikihez
7344
6329886
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# [[navbeynkarî]], [[qencnavbêjî]], [[navbêjî]], [[nav bêjî]], [[berhengarî]]
#* {{jêder-malper|ku|jêgirtin=Îran amade ye jibo kêmkirina kêşeyê navbera Ermenistan û Komara Azerbaycanê '''navcîtiyê''' bike.|url=https://kurmanci.sahartv.ir/news/%C3%8Eran-i317801|malper=kurmanci.sahartv.ir|dîrok=2020-07-18}}
==== Formên alternatîv ====
* [[navçîtî]]
==== Etîmolojî ====
Ji {{qertaf|ku|nav|cîtî}}.
==== Werger ====
{{werger-ser}}
* {{Z|fa}}: {{W+|fa|وساطت}}
* {{Z|en}}: {{W+|en|good office}}, {{W+|en|good offices}}, {{W+|en|intercession}}
* {{Z|tr}}: {{W|tr|ara buluculuk}}
{{werger-bin}}
gf7d33n6l3hnzzyawpmckpfqcxtb2h3
wesil kirin
0
844615
6329882
6153508
2026-08-13T00:28:56Z
Balyozbot
7867
sererastkirin
6329882
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Lêker ===
{{ku-tewîn-lk|wesil kirin|form=gerguhêz|niha=k|borî=kir|pêşgir=wesil|valahî=erê}}
{{lêker|ku|c=h-gh}}
# [[gihandin]]
#* {{jêder-malper|ku|url=http://www.hawarnews.com/kr/haber/saredariy-av-gihand-kobanya-n-h10702.html|malper=ANHA|sernav=Şaredariyê Av Gihand Kobanêya Nû|dîrok=2018-12-07|jêgirtin=Ev tax nû tê avakirin, me av bi zehmet peyda dikir, hêdî hêdî pêdiviyên me tên bicîhanîn. Av ji me re '''wesil kirin''', em bi hêvî ne kanalazîsyonê jî ji me re çêkin.}}
==== Etîmolojî ====
Ji {{heve|ku|wesil|kirin}}.
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W+|en|deliver}}, {{W+|en|advance}}, {{W+|en|convey}}, {{W+|en|transmit}}
* {{Z|tr}}: {{W+|tr|eriştirmek}}, {{W+|tr|ulaştırmak}}
{{werger-bin}}
=== Çavkanî ===
* {{kovar|url=https://dilname.files.wordpress.com/2011/06/rojnameya-dilname-hijmar-73.pdf|jêgirtin=5- Wesil: hevdîtin, pêrgîn.|nivîskar=Ji danhevên Ebdil-Rehmanê Kurimî|kovar=Dilname|sal=2011|hejmar=7|dîrok=2011-06-10|sernav=Helbestek|rûpel=2}}
suwp1rg71tgyxu0xquka6gakvpoeqwf
Gotûbêj:wesil kirin
1
844618
6329881
5021764
2026-08-13T00:28:52Z
Balyozbot
7867
/* Çavkanî */ sererastkirin
6329881
wikitext
text/x-wiki
== Çavkanî ==
Çavkaniyeke ji bo peyva "wesil": {{jêder-kovar|ku|url=https://dilname.files.wordpress.com/2011/06/rojnameya-dilname-hijmar-73.pdf|jêgirtin=5- Wesil: hevdîtin, pêrgîn.|nivîskar=Ji danhevên Ebdil-Rehmanê Kurimî|kovar=Dilname|sal=2011|hejmar=7|dîrok=2011-06-10|sernav=Helbestek|rûpel=2}} -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 20:04, 20 tîrmeh 2020 (UTC)
rysayu6kgog2fklghxaki34o7q1ef36
MediaWiki:Gadget-jeder.js
8
845753
6329685
6069025
2026-08-12T18:33:21Z
Bikarhêner
3719
test
6329685
javascript
text/javascript
// 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');
});
});
hkchv58y5mnst3qk7t0f45qu26slf7r
6329695
6329685
2026-08-12T19:13:33Z
Bikarhêner
3719
6329695
javascript
text/javascript
// 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.
// Each jeder is registered under the "Jêderê" category in window.VisibilityToggles
// (from [[MediaWiki:Gadget-VisibilityToggles.js]]), so the "Jêderê veşêre / Jêderê nîşan bide"
// sidebar link can show or hide every jeder at once; each "+"/"↩" link toggles just its own entry.
$(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');
var jederKurt = $('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// defaultStatus = false: the category's initial status is "visible" (full
// citation shown), so the sidebar link starts as "Jêderê veşêre".
var toggle = window.VisibilityToggles.register("Jêderê", function show() {
sund.css('display', 'inline');
jederKurt.css('display', 'none');
}, function hide() {
sund.css('display', 'none');
jederKurt.css('display', 'inline');
}, false);
zede.add(kurt).on('click', function(e) {
e.preventDefault();
toggle();
});
}
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();
});
aa6lfvd1tx59sbzf70fv1lmpn2ndxu3
MediaWiki:Gadget-jeder.css
8
845754
6329686
4003801
2026-08-12T18:33:29Z
Bikarhêner
3719
6329686
css
text/css
.jeder {
/* display: revert !important;*/
}
lkmv67im47ojb210ipbbbiot7xunj9r
sîrqûnî
0
845804
6329879
6196137
2026-08-13T00:27:47Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6329879
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesa/ê ku zû [[hêrs bûn|hêrs dibe]].<ref>{{malper|ku|nivîskar=nijdevan1|sernav=Sîrqûnî|url=https://twitter.com/nijdevan1/status/1288509583875616768|malper=twitter.com|dîrok=29.07.2020}}</ref><br>Kesa/ê [[cirnexweş]], [[cirxerab]].<ref>{{malper|ku|nivîskar=mansurvk|url=https://twitter.com/mansurvk/status/1288507267239890948|sernav=Sîrqûnî|malper=twitter.com|dîrok=29.07.2020}}</ref>
#* {{jêder|ku|jêgirtin=...tu ji vî gedeyî re pîne dikî law go ev çi '''sîrqûnî''' ye...|{{Jêgirtin/Înan Eroglu/Têbîniyek/2019}}|r=35}}
#* {{jêder-malper|ku|jêgirtin=Li gora lêkolînerên Rêxistina Tendurîstiya Dinyayê World Health Organization (WHO), mêr ji jinan bêhtir '''sîrqûnî''' ne.|sernav=Jin ji mêran qewîntir derketin!!|url=http://www.lotikxane.com/arsiv/arsiv%2010-Dateien.htm|malper=lotikxane.com|dîrok=05.06.06}}
#* {{jêder-malper|ku|jêgirtin=Nizane ku rewşenbîr jî dê jina min a feqîr rexne bikin û îca wer û nebe benîştê devê xelkê, li vê Ewrupa han a ku heta niha heqê rûniştinê nedane me û lawê min ê ku ev çend roj in '''sîrqûnî''' bûye bi qaçaxî diçe welatan û tê.|nivîskar=Bavê Qeşmerok Xelek|sernav=Sîrwanê Hecî Virqo Yan Sîrqûnê Hecî Virikî|url=http://www.amude.net/kurdi/bave_qeshmerok.pdf|malper=Tefsho.com}}
==== Têkildar ====
* [[sîrqûn]]
==== Etîmolojî ====
Ji {{paş|ku|sîrqûn|-î}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|çabuk sinirlenip alınan çok alıngan}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
7r80ig3g47f2yj9t3jwke4cy9863hqw
6329914
6329879
2026-08-13T01:19:23Z
Wikihez
7344
6329914
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Kesa/ê ku zû [[hêrs bûn|hêrs dibe]].<ref>{{malper|ku|nivîskar=nijdevan1|sernav=Sîrqûnî|url=https://twitter.com/nijdevan1/status/1288509583875616768|malper=twitter.com|dîrok=29.07.2020}}</ref><br>Kesa/ê [[cirnexweş]], [[cirxerab]].<ref>{{malper|ku|nivîskar=mansurvk|url=https://twitter.com/mansurvk/status/1288507267239890948|sernav=Sîrqûnî|malper=twitter.com|dîrok=29.07.2020}}</ref>
#* {{jêder|ku|jêgirtin=...tu ji vî gedeyî re pîne dikî law go ev çi '''sîrqûnî''' ye...|{{Jêgirtin/Înan Eroglu/Têbîniyek/2019|r=35}}}}
#* {{jêder-malper|ku|jêgirtin=Li gora lêkolînerên Rêxistina Tendurîstiya Dinyayê World Health Organization (WHO), mêr ji jinan bêhtir '''sîrqûnî''' ne.|sernav=Jin ji mêran qewîntir derketin!!|url=http://www.lotikxane.com/arsiv/arsiv%2010-Dateien.htm|malper=lotikxane.com|dîrok=05.06.2006}}
#* {{jêder-malper|ku|jêgirtin=Nizane ku rewşenbîr jî dê jina min a feqîr rexne bikin û îca wer û nebe benîştê devê xelkê, li vê Ewrupa han a ku heta niha heqê rûniştinê nedane me û lawê min ê ku ev çend roj in '''sîrqûnî''' bûye bi qaçaxî diçe welatan û tê.|nivîskar=Bavê Qeşmerok Xelek|sernav=Sîrwanê Hecî Virqo Yan Sîrqûnê Hecî Virikî|url=http://www.amude.net/kurdi/bave_qeshmerok.pdf|malper=Tefsho.com}}
==== Têkildar ====
* [[sîrqûn]]
==== Etîmolojî ====
Ji {{paş|ku|sîrqûn|-î}}
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|çabuk sinirlenip alınan çok alıngan}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
49rk4to9fh5mc5130q3v7aqd9usmq60
kîjan ba were û tu bi ber bikevî, kîjan av were û tu bi ser bikevî, tu yê ji dinyayê derkevî
0
846336
6329818
6196346
2026-08-12T23:06:24Z
Wikihez
7344
/* Çavkanî */
6329818
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# Divê mirov bi her karî re têkildar nebe ji ber ku carinan hinek tişt pêwîst in û hinek tişt jî qet ne pêwîst in.
==== Werger ====
{{werger-ser|stûn=1}}
* {{Z|fr}}: {{W|fr|se mêler de ses affaires}}, {{W|fr|se mêler de ses oignons}}
* {{Z|tr}}: {{W|tr|her şeye maydanoz olmamak}}, {{W|tr|her şeye salça olmamak}}
{{werger-bin}}
=== Çavkanî ===
* {{malper|url=https://twitter.com/araratmemm/status/1292898761673519104|sernav=Gotina Pêşiyên Kurda|malper=twitter.com/araratmemm|sal=2020|ziman=ku}}
acf27swolz9y7bmpqdf1na9izzs5bgn
kafiroş
0
846406
6329798
6309493
2026-08-12T22:43:00Z
Wikihez
7344
6329798
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# kesê/a ku [[ka]] difiroşe
# kesê/a ku [[kar|karê]] wî/ê [[kafirotin]] e, [[firotin]]a [[ka|kayê]] ye
#* {{jêder-malper|ku|jêgirtin=Keça Kafiroş ji alîyê kurdan we bûye sîmbola bedewiyê, bi alîkî din eger di şaristaniya Ewrupî de çawa şanazî bi Monalîziya dikin, em jî wisa şanazî bi Keça '''Kafiroş '''dikin, ku jê ra dibêjin Madona Kurdan.|url=https://krd.riataza.com/2015/12/02/keca-kafiros-madona-kurdan/|malper=Riataza|nivîskar=Bêlla Stûrkî|dîrok=2015-11-02|sernav=“Keça Kafiroş” – Madona Kurdan…}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|کافرۆش}}
* {{ku-kr|кафьрош}}
==== Etîmolojî ====
Ji {{paş|ku|ka|-firoş}}.
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|کافرۆش|tr=kafiroş}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
tdc8x1jrahdvfycj0gghj1v3vorj99x
6329865
6329798
2026-08-13T00:12:14Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329865
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=mn}}
# kesê/a ku [[ka]] difiroşe
# kesê/a ku [[kar]]ê wî/ê [[kafirotin]] e, [[firotin]]a [[ka]]yê ye
#* {{jêder-malper|ku|jêgirtin=Keça Kafiroş ji alîyê kurdan we bûye sîmbola bedewiyê, bi alîkî din eger di şaristaniya Ewrupî de çawa şanazî bi Monalîziya dikin, em jî wisa şanazî bi Keça '''Kafiroş '''dikin, ku jê ra dibêjin Madona Kurdan.|url=https://krd.riataza.com/2015/12/02/keca-kafiros-madona-kurdan/|malper=Riataza|nivîskar=Bêlla Stûrkî|dîrok=2015-11-02|sernav=“Keça Kafiroş” – Madona Kurdan…}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Bi alfabeyên din ====
* {{ku-ar|کافرۆش}}
* {{ku-kr|кафьрош}}
==== Etîmolojî ====
Ji {{paş|ku|ka|-firoş}}.
==== Bi zaravayên din ====
* {{Z|ckb}}: {{W-|ckb|کافرۆش|tr=kafiroş}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
15rekmgnf3qvb4lmw0kpgmt09cmbcp5
li berdem
0
872848
6329832
6196441
2026-08-12T23:34:08Z
Wikihez
7344
6329832
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Daçek ===
{{daçek|ku}}
# [[li ber]], [[li pêşiya]]
#* {{jêder-malper|ku|jêgirtin='''Li berdem''' avahîya Neteweyên Yekgirtî li bajêrê Hewlêrê sedan kes li hev hatin û daxwaza dawîanîna êrîşên leşkerê Tirkiye bi ser mîlîtanên kurd kirin.|url=https://www.dengeamerika.com/a/3180480.html|malper=Dengê Amerîka|sernav=Xwe Nîşandan Dijî Tirkiye Li Herêma Kurdistanê Têne Darxistin|dîrok=2016-02-07}}
==== Etîmolojî ====
Ji ''[[li]] + [[ber]] + [[dem#Navdêr 1 2|dem]] (dev)''. "Berdem" bi soranî tê maneya "berdev". Bi mantiqa kurmancî divê wek ''"li ber devê ..."'' bûya.
==== Werger ====
{{werger-ser}}
{{werger-bin}}
cb3ip71uuk4ox12ecngaw9suk8kbnpa
prescriptionist
0
872916
6329901
5021034
2026-08-13T00:50:38Z
Wikihez
7344
6329901
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
: {{ku-tîp|prîskrîpşinîst}}
=== Navdêr ===
{{navdêr|en|p=prescriptionists}}
# [[preskrîptiyonîst]] <br/> kesa/ê ku alîgirê [[ekol|ekol]]a [[preskrîptîvîzm|preskrîptîvîzmê]] ye.
# [[pispor|Pispor]]ê [[hazirkirin]]a [[derman]]an.
# kesa/ê ku xwediyê [[meyl]]a [[pênasîn]]ê ye.
==== Hevmane ====
* [[prescriptivist]]
==== Dijmane ====
* [[descriptivist]]
==== Têkildar ====
* [[prescribe]]
* [[prescriptivism]]
* [[prescriptivistic]]
=== Rengdêr ===
{{rengdêr|en}}
# {{f|en|zimannasî}} [[preskrîptiyonîst]] {{îzah|kesê ku [[bawerî|baweriya]] [[xwe|xwe]] ji [[emsal|emsalên]] [[dîrokî|dîrokî]] [[zêde|zêdetir]] bi [[bikaranîn|bikaranîna]] [[mewcûd|mewcûd]] [[anîn|tîne]] ([[ji bo]] [[tesbîtkirin|tesbîtkirina]] [[rastî|rastî]] an [[rastbûn|rastbûnê]])}}
#* {{jêder-pirtûk|en|jêgirtin=Educators often come into the profession with a certain view of language that is more '''prescriptionist''' in nature (Edwards, 1982; Taylor, 1983; Trudgill, 1975; Williams, 1976).
|werger=Kesên perwerdekar ji ber karê xwe bi piranî xwedî nêrîneke qetî dibin ku zêdetir preskrîptiyonîst e, bi tabietê xwe
|nivîskar=Maria Elisa Paredes|sernav=Language Attitudes, Linguistic Knowledge, and the Multicultural Education of Pre-Service Teachers|sal=2008|isbn=9780549963042|url=https://pdfs.semanticscholar.org/2365/5fe520db4a080ce671d339c010ad601e79d8.pdf|rûpel=33}}
==== Etîmolojî ====
Ji {{paş|en|prescription|-ist}}.
h73jyj5jo9p7r9zewfnwihekdwl7btl
6329917
6329901
2026-08-13T02:12:08Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir, --Valahiyên nehewce.)
6329917
wikitext
text/x-wiki
== {{ziman|en}} ==
=== Bilêvkirin ===
: {{ku-tîp|prîskrîpşinîst}}
=== Navdêr ===
{{navdêr|en|p=prescriptionists}}
# [[preskrîptiyonîst]] <br/> kesa/ê ku alîgirê [[ekol]]a [[preskrîptîvîzm]]ê ye.
# [[pispor|Pisporê]] [[hazirkirin]]a [[derman]]an.
# kesa/ê ku xwediyê [[meyl]]a [[pênasîn]]ê ye.
==== Hevmane ====
* [[prescriptivist]]
==== Dijmane ====
* [[descriptivist]]
==== Têkildar ====
* [[prescribe]]
* [[prescriptivism]]
* [[prescriptivistic]]
=== Rengdêr ===
{{rengdêr|en}}
# {{f|en|zimannasî}} [[preskrîptiyonîst]] {{îzah|kesê ku [[bawerî|baweriya]] [[xwe]] ji [[emsal]]ên [[dîrokî]] [[zêde]]tir bi [[bikaranîn]]a [[mewcûd]] [[anîn|tîne]] ([[ji bo]] [[tesbîtkirin]]a [[rastî]] an [[rastbûn]]ê)}}
#* {{jêder-pirtûk|en|jêgirtin=Educators often come into the profession with a certain view of language that is more '''prescriptionist''' in nature (Edwards, 1982; Taylor, 1983; Trudgill, 1975; Williams, 1976).
|werger=Kesên perwerdekar ji ber karê xwe bi piranî xwedî nêrîneke qetî dibin ku zêdetir preskrîptiyonîst e, bi tabietê xwe
|nivîskar=Maria Elisa Paredes|sernav=Language Attitudes, Linguistic Knowledge, and the Multicultural Education of Pre-Service Teachers|sal=2008|isbn=9780549963042|url=https://pdfs.semanticscholar.org/2365/5fe520db4a080ce671d339c010ad601e79d8.pdf|rûpel=33}}
==== Etîmolojî ====
Ji {{paş|en|prescription|-ist}}.
90ltaav3330nui5fxv8w3ax7fdws15b
nerm û niyan
0
873052
6329876
5032295
2026-08-13T00:26:09Z
Balyozbot
7867
/* Rengdêr */ sererastkirin
6329876
wikitext
text/x-wiki
== {{ziman|ckb}} ==
=== Rengdêr ===
{{rengdêr|ckb|sc=Latn}}
# [[nerm û narîn]]<ref>{{malper|ku|nivîskar=HUSEIN MUHAMMED|url=https://zimannas.wordpress.com/2016/03/04/kurdizar-ferhenga-sorani-kurmanci-n/|sernav=KURDÎZAR: ferhenga soranî – kurmancî: N|malper=zimannas.wordpress.com|dîrok=2016}}</ref>
#: ''Wa piyaw debête dirinde û<br>Kîjoleyek nêçîrêkî '''nerm û niyan'''<br>Desa boçî çend ayetê<br>Be zimanî ew mîllete nefame<br>Danabezênîş''
=== Çavkanî ===
{{çavkanî}}
6u6pmj62zltcanayiwbge7y26hieah5
6329884
6329876
2026-08-13T00:29:41Z
Wikihez
7344
6329884
wikitext
text/x-wiki
== {{ziman|ckb}} ==
=== Rengdêr ===
{{rengdêr|ckb|sc=Latn}}
# [[nerm û narîn]]<ref>{{malper|ku|nivîskar=HUSEIN MUHAMMED|url=https://zimannas.wordpress.com/2016/03/04/kurdizar-ferhenga-sorani-kurmanci-n/|sernav=KURDÎZAR: ferhenga soranî – kurmancî: N|malper=zimannas.wordpress.com|sal=2016}}</ref>
#: ''Wa piyaw debête dirinde û<br>Kîjoleyek nêçîrêkî '''nerm û niyan'''<br>Desa boçî çend ayetê<br>Be zimanî ew mîllete nefame<br>Danabezênîş''
=== Çavkanî ===
{{çavkanî}}
t59h9t4vf48amxtf59qez00l1ntr93k
6329885
6329884
2026-08-13T00:29:49Z
Wikihez
7344
6329885
wikitext
text/x-wiki
== {{ziman|ckb}} ==
=== Rengdêr ===
{{rengdêr|ckb|sc=Latn}}
# [[nerm û narîn]]<ref>{{malper|ku|nivîskar=Husein Muhammed|url=https://zimannas.wordpress.com/2016/03/04/kurdizar-ferhenga-sorani-kurmanci-n/|sernav=KURDÎZAR: ferhenga soranî – kurmancî: N|malper=zimannas.wordpress.com|sal=2016}}</ref>
#: ''Wa piyaw debête dirinde û<br>Kîjoleyek nêçîrêkî '''nerm û niyan'''<br>Desa boçî çend ayetê<br>Be zimanî ew mîllete nefame<br>Danabezênîş''
=== Çavkanî ===
{{çavkanî}}
l33k9qkseni4okn9u848cukvbc5p4fz
kevçika dil
0
873234
6329804
6283502
2026-08-12T22:54:13Z
Wikihez
7344
/* Navdêr */
6329804
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# {{mane?|ku}}
#* {{jêder-pirtûk|ku|jêgirtin=Ga ji hewla canê xwe şaxekî li Siyahmed didetin û Siyahmed ji wê nizarê gêr dibitin. Li jêrê li binê nizarê darekî diriyê hişk serê tîj hebûye, rast ji jorve bi sing deverûyê Siyahmed dikeve ser wî darê tîj, serê darê rastê '''kevçikadilê''' têtin û ji piştê biderkeve, filhal ruh teslîm diketin.|nivîskar=Mele Mehmûdê Bazîdî|sernav=Cami’eya Riseleyan û Hikayetan Bi Zimanê Kurmancî|cîh=Stembol|weşanxane={{w|Weşanên Lîs|Lîs}}|sal=2010|çap=1|rûpel=77|isbn=978-605-5683-27-6}}
#* {{jêder-pirtûk|ku|jêgirtin=Tika kirim?<br>Ji '''kevçika dil''' rûxandim qut qutî kirim destên wê<br>Wekî kelha hilweşandim tenha hîştim li ber darê|nivîskar=Bêçare Kurd|sernav=Elestek ji koçberî|url=https://en.calameo.com/read/005270298e8dbf76761e9|sal=2019|rûpel=133}}
#* {{jêder-pirtûk|ku|jêgirtin=Ronahiyê di reşika çavan de hêlîna xwe çêkiriye<br>hemberî reştariyê diçirisîne<br>Mêrxasî di '''kevçika dil''' de rûniştiye<br>Lewra têlên tembûra evîna şikestî û tirs|nivîskar=Medenî ferho|sernav=zîlan, agir û stranên jiyanê|sal=1999|rûpel=105}}
==== Têkildar ====
* [[li kevçika dilê (yekî) xistin]]
* [[gule li ser kevçika dil ketin]]
* [[di kevçika dil de lêxistin]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W|fr|valve cardiaque}}, {{W|fr|point vital}}<ref name="kurmanci42">{{kovar|kovar=Kurmancî|url=https://www.institutkurde.org/publications/kurmanci/telechargement/ku42.pdf|sernav=Peyvên di stranan de|nivîskar=Emîn Narozî|hejmar=42|sal=2008|rûpel=3|ziman=ku}}</ref>
* {{Z|en|}}: {{W|en|heart valve}}, {{W|en|a vital spot}}<ref name="kurmanci42" />
* {{Z|tr}}: {{W|tr|kalp kapakçığı}}, {{W|tr|can evi}}<ref name="kurmanci42" />
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
324nb46708ijzc2b5o778mblx0upbk9
6329806
6329804
2026-08-12T22:55:31Z
Wikihez
7344
6329806
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# {{mane?|ku}}
#* {{jêder-pirtûk|ku|jêgirtin=Ga ji hewla canê xwe şaxekî li Siyahmed didetin û Siyahmed ji wê nizarê gêr dibitin. Li jêrê li binê nizarê darekî diriyê hişk serê tîj hebûye, rast ji jorve bi sing deverûyê Siyahmed dikeve ser wî darê tîj, serê darê rastê '''kevçikadilê''' têtin û ji piştê biderkeve, filhal ruh teslîm diketin.|nivîskar=Mele Mehmûdê Bazîdî|sernav=Cami’eya Riseleyan û Hikayetan Bi Zimanê Kurmancî|cîh=Stembol|weşanxane={{w|Weşanên Lîs|Lîs}}|sal=2010|çap=1|rûpel=77|isbn=978-605-5683-27-6}}
#* {{jêder-pirtûk|ku|jêgirtin=Tika kirim?<br>Ji '''kevçika dil''' rûxandim qut qutî kirim destên wê<br>Wekî kelha hilweşandim tenha hîştim li ber darê|nivîskar=Bêçare Kurd|sernav=Elestek ji koçberî|url=https://en.calameo.com/read/005270298e8dbf76761e9|sal=2019|rûpel=133}}
#* {{jêder-pirtûk|ku|jêgirtin=Ronahiyê di reşika çavan de hêlîna xwe çêkiriye<br>hemberî reştariyê diçirisîne<br>Mêrxasî di '''kevçika dil''' de rûniştiye<br>Lewra têlên tembûra evîna şikestî û tirs|nivîskar=Medenî ferho|sernav=zîlan, agir û stranên jiyanê|sal=1999|rûpel=105}}
==== Têkildar ====
* [[li kevçika dilê (yekî) xistin]]
* [[gule li ser kevçika dil ketin]]
* [[di kevçika dil de lêxistin]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|fr}}: {{W|fr|valve cardiaque}}, {{W|fr|point vital}}<ref name="kurmanci42">{{kovara kurmancî|sernav=Peyvên di stranan de|nivîskar=Emîn Narozî|hejmar=42|rûpel=3}}</ref>
* {{Z|en|}}: {{W|en|heart valve}}, {{W|en|a vital spot}}<ref name="kurmanci42" />
* {{Z|tr}}: {{W|tr|kalp kapakçığı}}, {{W|tr|can evi}}<ref name="kurmanci42" />
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
ipmo0taa5b6ha25ja86agnms1hd05m8
Şablon:kovara kurmancî
10
873281
6329805
6111508
2026-08-12T22:55:18Z
Wikihez
7344
6329805
wikitext
text/x-wiki
<includeonly>{{kovar|kovar={{w|Kurmancî (kovar)|Kurmancî}}|url={{replace|{{switch-url|{{{hejmar|}}}}}}}|sernav={{{sernav|}}}|nivîskar={{{nivîskar|}}}|weşanxane={{w|Enstîtuya Kurdî ya Parîsê|Weşanên Enstîtuya Kurdî ya Parîsê}}|hejmar={{{hejmar|}}}|sal={{replace|{{switch-url|s{{{hejmar|}}}}}}}|rûpel={{{r|{{{rûpel|}}}}}}|ziman=ku}}</includeonly><noinclude>{{belgekirin}}[[Kategorî:Çavkanî]]</noinclude>
l0pgooza0t8sher1o974toh3rirqphb
Şablon:kovara kurmancî/switch-url
10
873282
6329807
6111509
2026-08-12T22:57:55Z
Wikihez
7344
6329807
wikitext
text/x-wiki
{{#switch:{{{1}}}
|72=https://www.institutkurde.org/publications/kurmanci/telechargement/ku72.pdf
|71=https://www.institutkurde.org/publications/kurmanci/telechargement/ku71.pdf
|70=https://www.institutkurde.org/publications/kurmanci/telechargement/ku70.pdf
|69=https://www.institutkurde.org/publications/kurmanci/telechargement/ku69.pdf
|68=https://www.institutkurde.org/publications/kurmanci/telechargement/ku68.pdf
|67=https://www.institutkurde.org/publications/kurmanci/telechargement/ku67.pdf
|66=https://www.institutkurde.org/publications/kurmanci/telechargement/ku66.pdf
|65=https://www.institutkurde.org/publications/kurmanci/telechargement/ku65.pdf
|64=https://www.institutkurde.org/publications/kurmanci/telechargement/ku64.pdf
|63=https://www.institutkurde.org/publications/kurmanci/telechargement/ku63.pdf
|62=https://www.institutkurde.org/publications/kurmanci/telechargement/ku62.pdf
|61=https://www.institutkurde.org/publications/kurmanci/telechargement/ku61.pdf
|60=https://www.institutkurde.org/publications/kurmanci/telechargement/ku60.pdf
|59=https://www.institutkurde.org/publications/kurmanci/telechargement/ku59.pdf
|58=https://www.institutkurde.org/publications/kurmanci/telechargement/ku58.pdf
|57=https://www.institutkurde.org/publications/kurmanci/telechargement/ku57.pdf
|56=https://www.institutkurde.org/publications/kurmanci/telechargement/ku56.pdf
|55=https://www.institutkurde.org/publications/kurmanci/telechargement/ku55.pdf
|54=https://www.institutkurde.org/publications/kurmanci/telechargement/ku54.pdf
|53=https://www.institutkurde.org/publications/kurmanci/telechargement/ku53.pdf
|52=https://www.institutkurde.org/publications/kurmanci/telechargement/ku52.pdf
|51=https://www.institutkurde.org/publications/kurmanci/telechargement/ku51.pdf
|50=https://www.institutkurde.org/publications/kurmanci/telechargement/ku50.pdf
|49=https://www.institutkurde.org/publications/kurmanci/telechargement/ku49.pdf
|48=https://www.institutkurde.org/publications/kurmanci/telechargement/ku48.pdf
|47=https://www.institutkurde.org/publications/kurmanci/telechargement/ku47.pdf
|46=https://www.institutkurde.org/publications/kurmanci/telechargement/ku46.pdf
|45=https://www.institutkurde.org/publications/kurmanci/telechargement/ku45.pdf
|44=https://www.institutkurde.org/publications/kurmanci/telechargement/ku44.pdf
|43=https://www.institutkurde.org/publications/kurmanci/telechargement/ku43.pdf
|42=https://www.institutkurde.org/publications/kurmanci/telechargement/ku42.pdf
|41=https://www.institutkurde.org/publications/kurmanci/telechargement/ku41.pdf
|40=https://www.institutkurde.org/publications/kurmanci/telechargement/ku40.pdf
|39=https://www.institutkurde.org/publications/kurmanci/telechargement/ku39.pdf
|38=https://www.institutkurde.org/publications/kurmanci/telechargement/ku38.pdf
|37=https://www.institutkurde.org/publications/kurmanci/telechargement/ku37.pdf
|36=https://www.institutkurde.org/publications/kurmanci/telechargement/ku36.pdf
|35=https://www.institutkurde.org/publications/kurmanci/telechargement/ku35.pdf
|34=https://www.institutkurde.org/publications/kurmanci/telechargement/ku34.pdf
|33=https://www.institutkurde.org/publications/kurmanci/telechargement/ku33.pdf
|32=https://www.institutkurde.org/publications/kurmanci/telechargement/ku32.pdf
|31=https://www.institutkurde.org/publications/kurmanci/telechargement/ku31.pdf
|30=https://www.institutkurde.org/publications/kurmanci/telechargement/ku30.pdf
|29=https://www.institutkurde.org/publications/kurmanci/telechargement/ku29.pdf
|28=https://www.institutkurde.org/publications/kurmanci/telechargement/ku28.pdf
|27=https://www.institutkurde.org/publications/kurmanci/telechargement/ku27.pdf
|26=https://www.institutkurde.org/publications/kurmanci/telechargement/ku26.pdf
|25=https://www.institutkurde.org/publications/kurmanci/telechargement/ku25.pdf
|24=https://www.institutkurde.org/publications/kurmanci/telechargement/ku24.pdf
|23=https://www.institutkurde.org/publications/kurmanci/telechargement/ku23.pdf
|22=https://www.institutkurde.org/publications/kurmanci/telechargement/ku22.pdf
|21=https://www.institutkurde.org/publications/kurmanci/telechargement/ku21.pdf
|20=https://www.institutkurde.org/publications/kurmanci/telechargement/ku20.pdf
|19=https://www.institutkurde.org/publications/kurmanci/telechargement/ku19.pdf
|18=https://www.institutkurde.org/publications/kurmanci/telechargement/ku18.pdf
|17=https://www.institutkurde.org/publications/kurmanci/telechargement/ku17.pdf
|16=https://www.institutkurde.org/publications/kurmanci/telechargement/ku16.pdf
|14-15=https://www.institutkurde.org/publications/kurmanci/telechargement/ku1415.pdf
|13=https://www.institutkurde.org/publications/kurmanci/telechargement/ku13.pdf
|12=https://www.institutkurde.org/publications/kurmanci/telechargement/ku12.pdf
|11=https://www.institutkurde.org/publications/kurmanci/telechargement/ku11.pdf
|10=https://www.institutkurde.org/publications/kurmanci/telechargement/ku10.pdf
|9=https://www.institutkurde.org/publications/kurmanci/telechargement/ku9.pdf
|8=https://www.institutkurde.org/publications/kurmanci/telechargement/ku8.pdf
|7=https://www.institutkurde.org/publications/kurmanci/telechargement/ku7.pdf
|6=https://www.institutkurde.org/publications/kurmanci/telechargement/ku6.pdf
|5=https://www.institutkurde.org/publications/kurmanci/telechargement/ku5.pdf
|4=https://www.institutkurde.org/publications/kurmanci/telechargement/ku4.pdf
|3=https://www.institutkurde.org/publications/kurmanci/telechargement/ku3.pdf
|2=https://www.institutkurde.org/publications/kurmanci/telechargement/ku2.pdf
|1=https://www.institutkurde.org/publications/kurmanci/telechargement/ku1.pdf
|#default={{#switch:{{{1|}}}
|s69=2023
|s68=2022
|s67=2022
|s66=2021
|s65=2019
|s64=2019
|s63=2018
|s62=2018
|s61=2017
|s60=2017
|s59=2016
|s58=2016
|s57=2015
|s56=2015
|s55=2014
|s54=2014
|s53=2013
|s52=2013
|s51=2012
|s50=2012
|s49=2011
|s48=2011
|s47=2010
|s46=2010
|s45=2009
|s44=2009
|s43=2008
|s42=2008
|s41=2007
|s40=2007
|s39=2006
|s38=2006
|s37=2005
|s36=2005
|s35=2004
|s34=2004
|s33=2003
|s32=2002
|s31=2002
|s30=2001
|s29=2001
|s28=2001
|s27=2000
|s26=1999
|s25=1999
|s24=1998
|s23=1998
|s22=1998
|s21=1997
|s20=1996
|s19=1996
|s18=1996
|s17=1995
|s16=1995
|s14-15=1994
|s13=1993
|s12=1993
|s11=1992
|s10=1992
|s9=1991
|s8=1991
|s7=1990
|s6=1990
|s5=1989
|s4=1989
|s3=1988
|s2=1988
|s1=1987
|#default=}}}}<noinclude>{{belgekirin}}[[Kategorî:Çavkanî|şablon]]</noinclude>
2d29vjoviw8wanoeb2n75bpjedhs6on
6329808
6329807
2026-08-12T22:58:04Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:switch-url]] weke [[Şablon:kovara kurmancî/switch-url]] guhart
6329807
wikitext
text/x-wiki
{{#switch:{{{1}}}
|72=https://www.institutkurde.org/publications/kurmanci/telechargement/ku72.pdf
|71=https://www.institutkurde.org/publications/kurmanci/telechargement/ku71.pdf
|70=https://www.institutkurde.org/publications/kurmanci/telechargement/ku70.pdf
|69=https://www.institutkurde.org/publications/kurmanci/telechargement/ku69.pdf
|68=https://www.institutkurde.org/publications/kurmanci/telechargement/ku68.pdf
|67=https://www.institutkurde.org/publications/kurmanci/telechargement/ku67.pdf
|66=https://www.institutkurde.org/publications/kurmanci/telechargement/ku66.pdf
|65=https://www.institutkurde.org/publications/kurmanci/telechargement/ku65.pdf
|64=https://www.institutkurde.org/publications/kurmanci/telechargement/ku64.pdf
|63=https://www.institutkurde.org/publications/kurmanci/telechargement/ku63.pdf
|62=https://www.institutkurde.org/publications/kurmanci/telechargement/ku62.pdf
|61=https://www.institutkurde.org/publications/kurmanci/telechargement/ku61.pdf
|60=https://www.institutkurde.org/publications/kurmanci/telechargement/ku60.pdf
|59=https://www.institutkurde.org/publications/kurmanci/telechargement/ku59.pdf
|58=https://www.institutkurde.org/publications/kurmanci/telechargement/ku58.pdf
|57=https://www.institutkurde.org/publications/kurmanci/telechargement/ku57.pdf
|56=https://www.institutkurde.org/publications/kurmanci/telechargement/ku56.pdf
|55=https://www.institutkurde.org/publications/kurmanci/telechargement/ku55.pdf
|54=https://www.institutkurde.org/publications/kurmanci/telechargement/ku54.pdf
|53=https://www.institutkurde.org/publications/kurmanci/telechargement/ku53.pdf
|52=https://www.institutkurde.org/publications/kurmanci/telechargement/ku52.pdf
|51=https://www.institutkurde.org/publications/kurmanci/telechargement/ku51.pdf
|50=https://www.institutkurde.org/publications/kurmanci/telechargement/ku50.pdf
|49=https://www.institutkurde.org/publications/kurmanci/telechargement/ku49.pdf
|48=https://www.institutkurde.org/publications/kurmanci/telechargement/ku48.pdf
|47=https://www.institutkurde.org/publications/kurmanci/telechargement/ku47.pdf
|46=https://www.institutkurde.org/publications/kurmanci/telechargement/ku46.pdf
|45=https://www.institutkurde.org/publications/kurmanci/telechargement/ku45.pdf
|44=https://www.institutkurde.org/publications/kurmanci/telechargement/ku44.pdf
|43=https://www.institutkurde.org/publications/kurmanci/telechargement/ku43.pdf
|42=https://www.institutkurde.org/publications/kurmanci/telechargement/ku42.pdf
|41=https://www.institutkurde.org/publications/kurmanci/telechargement/ku41.pdf
|40=https://www.institutkurde.org/publications/kurmanci/telechargement/ku40.pdf
|39=https://www.institutkurde.org/publications/kurmanci/telechargement/ku39.pdf
|38=https://www.institutkurde.org/publications/kurmanci/telechargement/ku38.pdf
|37=https://www.institutkurde.org/publications/kurmanci/telechargement/ku37.pdf
|36=https://www.institutkurde.org/publications/kurmanci/telechargement/ku36.pdf
|35=https://www.institutkurde.org/publications/kurmanci/telechargement/ku35.pdf
|34=https://www.institutkurde.org/publications/kurmanci/telechargement/ku34.pdf
|33=https://www.institutkurde.org/publications/kurmanci/telechargement/ku33.pdf
|32=https://www.institutkurde.org/publications/kurmanci/telechargement/ku32.pdf
|31=https://www.institutkurde.org/publications/kurmanci/telechargement/ku31.pdf
|30=https://www.institutkurde.org/publications/kurmanci/telechargement/ku30.pdf
|29=https://www.institutkurde.org/publications/kurmanci/telechargement/ku29.pdf
|28=https://www.institutkurde.org/publications/kurmanci/telechargement/ku28.pdf
|27=https://www.institutkurde.org/publications/kurmanci/telechargement/ku27.pdf
|26=https://www.institutkurde.org/publications/kurmanci/telechargement/ku26.pdf
|25=https://www.institutkurde.org/publications/kurmanci/telechargement/ku25.pdf
|24=https://www.institutkurde.org/publications/kurmanci/telechargement/ku24.pdf
|23=https://www.institutkurde.org/publications/kurmanci/telechargement/ku23.pdf
|22=https://www.institutkurde.org/publications/kurmanci/telechargement/ku22.pdf
|21=https://www.institutkurde.org/publications/kurmanci/telechargement/ku21.pdf
|20=https://www.institutkurde.org/publications/kurmanci/telechargement/ku20.pdf
|19=https://www.institutkurde.org/publications/kurmanci/telechargement/ku19.pdf
|18=https://www.institutkurde.org/publications/kurmanci/telechargement/ku18.pdf
|17=https://www.institutkurde.org/publications/kurmanci/telechargement/ku17.pdf
|16=https://www.institutkurde.org/publications/kurmanci/telechargement/ku16.pdf
|14-15=https://www.institutkurde.org/publications/kurmanci/telechargement/ku1415.pdf
|13=https://www.institutkurde.org/publications/kurmanci/telechargement/ku13.pdf
|12=https://www.institutkurde.org/publications/kurmanci/telechargement/ku12.pdf
|11=https://www.institutkurde.org/publications/kurmanci/telechargement/ku11.pdf
|10=https://www.institutkurde.org/publications/kurmanci/telechargement/ku10.pdf
|9=https://www.institutkurde.org/publications/kurmanci/telechargement/ku9.pdf
|8=https://www.institutkurde.org/publications/kurmanci/telechargement/ku8.pdf
|7=https://www.institutkurde.org/publications/kurmanci/telechargement/ku7.pdf
|6=https://www.institutkurde.org/publications/kurmanci/telechargement/ku6.pdf
|5=https://www.institutkurde.org/publications/kurmanci/telechargement/ku5.pdf
|4=https://www.institutkurde.org/publications/kurmanci/telechargement/ku4.pdf
|3=https://www.institutkurde.org/publications/kurmanci/telechargement/ku3.pdf
|2=https://www.institutkurde.org/publications/kurmanci/telechargement/ku2.pdf
|1=https://www.institutkurde.org/publications/kurmanci/telechargement/ku1.pdf
|#default={{#switch:{{{1|}}}
|s69=2023
|s68=2022
|s67=2022
|s66=2021
|s65=2019
|s64=2019
|s63=2018
|s62=2018
|s61=2017
|s60=2017
|s59=2016
|s58=2016
|s57=2015
|s56=2015
|s55=2014
|s54=2014
|s53=2013
|s52=2013
|s51=2012
|s50=2012
|s49=2011
|s48=2011
|s47=2010
|s46=2010
|s45=2009
|s44=2009
|s43=2008
|s42=2008
|s41=2007
|s40=2007
|s39=2006
|s38=2006
|s37=2005
|s36=2005
|s35=2004
|s34=2004
|s33=2003
|s32=2002
|s31=2002
|s30=2001
|s29=2001
|s28=2001
|s27=2000
|s26=1999
|s25=1999
|s24=1998
|s23=1998
|s22=1998
|s21=1997
|s20=1996
|s19=1996
|s18=1996
|s17=1995
|s16=1995
|s14-15=1994
|s13=1993
|s12=1993
|s11=1992
|s10=1992
|s9=1991
|s8=1991
|s7=1990
|s6=1990
|s5=1989
|s4=1989
|s3=1988
|s2=1988
|s1=1987
|#default=}}}}<noinclude>{{belgekirin}}[[Kategorî:Çavkanî|şablon]]</noinclude>
2d29vjoviw8wanoeb2n75bpjedhs6on
6329812
6329808
2026-08-12T22:59:37Z
Wikihez
7344
6329812
wikitext
text/x-wiki
{{#switch:{{{1}}}
|72=https://www.institutkurde.org/publications/kurmanci/telechargement/ku72.pdf
|71=https://www.institutkurde.org/publications/kurmanci/telechargement/ku71.pdf
|70=https://www.institutkurde.org/publications/kurmanci/telechargement/ku70.pdf
|69=https://www.institutkurde.org/publications/kurmanci/telechargement/ku69.pdf
|68=https://www.institutkurde.org/publications/kurmanci/telechargement/ku68.pdf
|67=https://www.institutkurde.org/publications/kurmanci/telechargement/ku67.pdf
|66=https://www.institutkurde.org/publications/kurmanci/telechargement/ku66.pdf
|65=https://www.institutkurde.org/publications/kurmanci/telechargement/ku65.pdf
|64=https://www.institutkurde.org/publications/kurmanci/telechargement/ku64.pdf
|63=https://www.institutkurde.org/publications/kurmanci/telechargement/ku63.pdf
|62=https://www.institutkurde.org/publications/kurmanci/telechargement/ku62.pdf
|61=https://www.institutkurde.org/publications/kurmanci/telechargement/ku61.pdf
|60=https://www.institutkurde.org/publications/kurmanci/telechargement/ku60.pdf
|59=https://www.institutkurde.org/publications/kurmanci/telechargement/ku59.pdf
|58=https://www.institutkurde.org/publications/kurmanci/telechargement/ku58.pdf
|57=https://www.institutkurde.org/publications/kurmanci/telechargement/ku57.pdf
|56=https://www.institutkurde.org/publications/kurmanci/telechargement/ku56.pdf
|55=https://www.institutkurde.org/publications/kurmanci/telechargement/ku55.pdf
|54=https://www.institutkurde.org/publications/kurmanci/telechargement/ku54.pdf
|53=https://www.institutkurde.org/publications/kurmanci/telechargement/ku53.pdf
|52=https://www.institutkurde.org/publications/kurmanci/telechargement/ku52.pdf
|51=https://www.institutkurde.org/publications/kurmanci/telechargement/ku51.pdf
|50=https://www.institutkurde.org/publications/kurmanci/telechargement/ku50.pdf
|49=https://www.institutkurde.org/publications/kurmanci/telechargement/ku49.pdf
|48=https://www.institutkurde.org/publications/kurmanci/telechargement/ku48.pdf
|47=https://www.institutkurde.org/publications/kurmanci/telechargement/ku47.pdf
|46=https://www.institutkurde.org/publications/kurmanci/telechargement/ku46.pdf
|45=https://www.institutkurde.org/publications/kurmanci/telechargement/ku45.pdf
|44=https://www.institutkurde.org/publications/kurmanci/telechargement/ku44.pdf
|43=https://www.institutkurde.org/publications/kurmanci/telechargement/ku43.pdf
|42=https://www.institutkurde.org/publications/kurmanci/telechargement/ku42.pdf
|41=https://www.institutkurde.org/publications/kurmanci/telechargement/ku41.pdf
|40=https://www.institutkurde.org/publications/kurmanci/telechargement/ku40.pdf
|39=https://www.institutkurde.org/publications/kurmanci/telechargement/ku39.pdf
|38=https://www.institutkurde.org/publications/kurmanci/telechargement/ku38.pdf
|37=https://www.institutkurde.org/publications/kurmanci/telechargement/ku37.pdf
|36=https://www.institutkurde.org/publications/kurmanci/telechargement/ku36.pdf
|35=https://www.institutkurde.org/publications/kurmanci/telechargement/ku35.pdf
|34=https://www.institutkurde.org/publications/kurmanci/telechargement/ku34.pdf
|33=https://www.institutkurde.org/publications/kurmanci/telechargement/ku33.pdf
|32=https://www.institutkurde.org/publications/kurmanci/telechargement/ku32.pdf
|31=https://www.institutkurde.org/publications/kurmanci/telechargement/ku31.pdf
|30=https://www.institutkurde.org/publications/kurmanci/telechargement/ku30.pdf
|29=https://www.institutkurde.org/publications/kurmanci/telechargement/ku29.pdf
|28=https://www.institutkurde.org/publications/kurmanci/telechargement/ku28.pdf
|27=https://www.institutkurde.org/publications/kurmanci/telechargement/ku27.pdf
|26=https://www.institutkurde.org/publications/kurmanci/telechargement/ku26.pdf
|25=https://www.institutkurde.org/publications/kurmanci/telechargement/ku25.pdf
|24=https://www.institutkurde.org/publications/kurmanci/telechargement/ku24.pdf
|23=https://www.institutkurde.org/publications/kurmanci/telechargement/ku23.pdf
|22=https://www.institutkurde.org/publications/kurmanci/telechargement/ku22.pdf
|21=https://www.institutkurde.org/publications/kurmanci/telechargement/ku21.pdf
|20=https://www.institutkurde.org/publications/kurmanci/telechargement/ku20.pdf
|19=https://www.institutkurde.org/publications/kurmanci/telechargement/ku19.pdf
|18=https://www.institutkurde.org/publications/kurmanci/telechargement/ku18.pdf
|17=https://www.institutkurde.org/publications/kurmanci/telechargement/ku17.pdf
|16=https://www.institutkurde.org/publications/kurmanci/telechargement/ku16.pdf
|14-15=https://www.institutkurde.org/publications/kurmanci/telechargement/ku1415.pdf
|13=https://www.institutkurde.org/publications/kurmanci/telechargement/ku13.pdf
|12=https://www.institutkurde.org/publications/kurmanci/telechargement/ku12.pdf
|11=https://www.institutkurde.org/publications/kurmanci/telechargement/ku11.pdf
|10=https://www.institutkurde.org/publications/kurmanci/telechargement/ku10.pdf
|9=https://www.institutkurde.org/publications/kurmanci/telechargement/ku9.pdf
|8=https://www.institutkurde.org/publications/kurmanci/telechargement/ku8.pdf
|7=https://www.institutkurde.org/publications/kurmanci/telechargement/ku7.pdf
|6=https://www.institutkurde.org/publications/kurmanci/telechargement/ku6.pdf
|5=https://www.institutkurde.org/publications/kurmanci/telechargement/ku5.pdf
|4=https://www.institutkurde.org/publications/kurmanci/telechargement/ku4.pdf
|3=https://www.institutkurde.org/publications/kurmanci/telechargement/ku3.pdf
|2=https://www.institutkurde.org/publications/kurmanci/telechargement/ku2.pdf
|1=https://www.institutkurde.org/publications/kurmanci/telechargement/ku1.pdf
|#default={{#switch:{{{1|}}}
|s72=2025
|s71=2024
|s70=2023
|s69=2023
|s68=2022
|s67=2022
|s66=2021
|s65=2019
|s64=2019
|s63=2018
|s62=2018
|s61=2017
|s60=2017
|s59=2016
|s58=2016
|s57=2015
|s56=2015
|s55=2014
|s54=2014
|s53=2013
|s52=2013
|s51=2012
|s50=2012
|s49=2011
|s48=2011
|s47=2010
|s46=2010
|s45=2009
|s44=2009
|s43=2008
|s42=2008
|s41=2007
|s40=2007
|s39=2006
|s38=2006
|s37=2005
|s36=2005
|s35=2004
|s34=2004
|s33=2003
|s32=2002
|s31=2002
|s30=2001
|s29=2001
|s28=2001
|s27=2000
|s26=1999
|s25=1999
|s24=1998
|s23=1998
|s22=1998
|s21=1997
|s20=1996
|s19=1996
|s18=1996
|s17=1995
|s16=1995
|s14-15=1994
|s13=1993
|s12=1993
|s11=1992
|s10=1992
|s9=1991
|s8=1991
|s7=1990
|s6=1990
|s5=1989
|s4=1989
|s3=1988
|s2=1988
|s1=1987
|#default=}}}}<noinclude>{{belgekirin}}[[Kategorî:Çavkanî|şablon]]</noinclude>
6idn9brqpfeyn9100c9iomhr35d6dqo
mastê payîzan bidin ezîzan
0
873390
6329835
6196513
2026-08-12T23:37:52Z
Wikihez
7344
6329835
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# Mastê payîzê gelek tîr û xweş e û dewê bihare jî ne xweş e. Dema mirov bixwaze qîmeta mîvanên xwe bigire, wê demê mastê payîzê dide mêvanan, le dema mirov ji mevanê xwe ne memnûn be jî, dixwaze şîrê biharên jî dewe biharê bide mevanen xwe.<ref>{{pirtûk|ku|nivîskar=Amed Tîgrîs|sernav=Gotînên Pêşiyan|weşanxane=Rewşen|sal=2001|rûpel=170|isbn=91-88-444-78-3}}</ref><br>Gotineke pêşiyan e.<ref>{{malper|ku|nivîskar=Têmûrê Xelîl|url=https://krd.riataza.com/2017/09/17/gotinen-pesiyan-ji-pirtuka-xelile-cacan-9/|sernav=Gotinên pêşîyan ji pirtûka Xelîlê Çaçan|malper=riataza.com|sal=2017}}</ref><ref>{{kovar|kovar=Folklora Kurdan|url=https://issuu.com/ugurirendeli/docs/folklora_kurdan_4|sernav=Gotinên pêşiyan ên li ser payîzê|nivîskar=Ronya Bewran|hejmar=4|sal=2015|rûpel=31|ku}}</ref>
==== Hevmane ====
* [[şîrê payîzan bidin ezîzan]]
==== Têkildar ====
* [[mastê biharan bidin neyaran, mastê payîza bidin ezîza]]
==== Werger ====
{{werger-ser}}
{{werger-bin}}
=== Çavkanî ===
{{çavkanî}}
f17wvbaol7d9gialrmhcpsvuws4j432
Şablon:kovara kurmancî/switch-url/belge
10
873531
6329810
4220913
2026-08-12T22:58:04Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:switch-url/belge]] weke [[Şablon:kovara kurmancî/switch-url/belge]] guhart
4220913
wikitext
text/x-wiki
== Bikaranîn ==
* Ji bo {{ş|kovara kurmancî}} hatiye çêkirin. Hemû lînkên vê kovarê tê de hene.
gxlq4io2l4z47eyhjo1dnmsulqacfqc
Şablon:Belgekirin/preload
10
873533
6329739
4493248
2026-08-12T21:09:42Z
Wikihez
7344
6329739
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
=== Mînak ===
== TemplateData ==
<include<includeonly></includeonly>only>
[[Kategorî:Şablon]]
</include<includeonly></includeonly>only>
jp7s55fnakh7let9siig0lps7wj97u2
Bikarhêner:Wikihez/common.js
2
873671
6329691
6328612
2026-08-12T19:00:55Z
Wikihez
7344
6329691
javascript
text/javascript
/*---------Gadget-morebits.js-------------
[[Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.js]]
[[Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.css]]*/
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.js&action=raw&ctype=text/javascript');
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript');
( function () {
'use strict';
if ( [ 'Recentchanges', 'Watchlist' ].indexOf( mw.config.get( 'wgCanonicalSpecialPageName' ) ) === -1 ) {
return;
}
var style = document.createElement( 'style' );
style.textContent = '.mw-rollback-link { display: none !important; }';
document.head.appendChild( style );
}() );
//[[Bikarhêner:Wikihez/skrîpt/js/templateParamRenamer.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/templateParamRenamer.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/quicklinks.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/quicklinks.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/citeKurdifier.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/citeKurdifier.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Gadget-defaultVisibilityToggles.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-defaultVisibilityToggles.js&action=raw&ctype=text/javascript');
/*---------QQ.js-------------
[[Bikarhêner:Wikihez/Gadget-QQ.js]]
[[Bikarhêner:Wikihez/Gadget-QQ.css]]*/
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-QQ.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-QQ.js&action=raw&ctype=text/javascript');
/*---------add-examples.js-------------
[[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]]
[[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]]*/
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-wikt.add-examples.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-wikt.add-examples.js&action=raw&ctype=text/javascript');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/loader.js&action=raw&ctype=text/javascript')
importScript( 'Bikarhêner:Wikihez/skrîpt/js/copyTitle.js' ); // Backlink: [[Bikarhêner:Wikihez/skrîpt/js/copyTitle.js]]
// [[Bikarhêner:Wikihez/addAutoCat.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/addAutoCat.js&action=raw&ctype=text/javascript');
importScript( 'Bikarhêner:Wikihez/newentrywiz.js' ); // Backlink: [[Bikarhêner:Wikihez/newentrywiz.js]]
//[[Bikarhêner:Wikihez/CreateTranslation.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/CreateTranslation.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/wergerîne.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/wergerîne.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/getinflections.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/getinflections.js&action=raw&ctype=text/javascript');
//[[:w:Bikarhêner:Wikihez/skrîpt/js/OngletPurge.js]]
mw.loader.load('//ku.wikipedia.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/OngletPurge.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/templateScript2.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/templateScript2.js&action=raw&ctype=text/javascript');
// [[Bikarhêner:Wikihez/şablon-lêke.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/şablon-lêke.js&action=raw&ctype=text/javascript');
mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:BrandonXLF/TodoList.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/test.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/test.js&action=raw&ctype=text/javascript');
//================================================================================================================================
/*---------start.js-------------
[[Bikarhêner:Wikihez/Gadget-start.js]]
[[Bikarhêner:Wikihez/Gadget-start.css]]
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-start.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-start.js&action=raw&ctype=text/javascript');
*/
//importScript( 'Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js' ); // Backlink: [[Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]]
//importScript( 'Bikarhêner:Wikihez/Gadget-linkify.js' ); // Backlink: [[Bikarhêner:Wikihez/Gadget-linkify.js]]
//[[Bikarhêner:Wikihez/skrîpt/js/Gadget-catfix.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/Gadget-catfix.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/editor.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/editor.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/UpdateLanguageNameAndCode.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/UpdateLanguageNameAndCode.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/TranslationAdder-Data.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/TranslationAdder-Data.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/LanguageUtils.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/LanguageUtils.js&action=raw&ctype=text/javascript');
/*---------aWa.js-------------
[[Bikarhêner:Wikihez/Gadget-aWa.js]]
[[Bikarhêner:Wikihez/Gadget-aWa.css]]
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-aWa.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-aWa.js&action=raw&ctype=text/javascript');
*/
// This array of dependencies comes from [[MediaWiki:Gadgets-definition]].
// If the list of dependencies changes, copy the text after dependencies=
// for TranslationAdder and run console.log(JSON.stringify("paste dependencies here".split(/, ?/)))
// in your browser's JavaScript console. Put the resulting array as the first argument to mw.loader.using.
//[[User:Wikihez/skrîpt/js/TranslationAdder.js]]
//mw.loader.using(["ext.gadget.LegacyScriptsNewNode","mediawiki.cookie","mediawiki.util"],
//function() {
// importScript('User:Wikihez/skrîpt/js/TranslationAdder.js');
//});
/*
// [[:w:en:MediaWiki:Gadget-edittop.js]]
mw.loader.load('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-edittop.js&action=raw&ctype=text/javascript');
// [[Bikarhêner:Wikihez/addAutoCat.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/addAutoCat.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Balyozbot/Gadget-CommonWikt.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Balyozbot/Gadget-CommonWikt.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/hw-ceke.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/hw-ceke.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/sort-langheaders.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/sort-langheaders.js&action=raw&ctype=text/javascript');
//[[:en:User:Conrad.Irwin/Api.js]]
mw.loader.load('//en.wiktionary.org/w/index.php?title=User:Conrad.Irwin/Api.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/etîket-çêke.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/etîket-çêke.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/tagger.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/tagger.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Gadget-CatMaker.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-CatMaker.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/VisibilityToggles.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/VisibilityToggles.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Gadget-WiktAccFormCreation.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-WiktAccFormCreation.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/XMLize.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/XMLize.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/RhymesAdder.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/RhymesAdder.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Editor.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Editor.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/FilterTranslations.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/FilterTranslations.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/custom.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/custom.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/reformat.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/reformat.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/translateWiki.js]] ji aliyê [[Bikarhêner:Guherto]], [[Taybet:PermanentLink/4854098#Translatewiki.net]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/translateWiki.js&action=raw&ctype=text/javascript');
// Various fixes for the trees generated by [[Module:family tree]].
$(function () {
// Show the top toggle.
$('.familytree-toptoggle').css('display', '');
// Initialize the text of the toggles.
$('.familytree').get().forEach(function (tree) {
var isCollapsed = tree.classList.contains('mw-collapsed');
var toggles = $(tree).find('.familytree-toggle');
if (toggles[0]) {
var customToggleClass = Array.prototype.filter.call(toggles[0].classList, function (className) {
return className.indexOf('mw-customtoggle-familytree') === 0;
})[0];
if (customToggleClass) {
var toggledElement = $('#' + customToggleClass.replace('mw-customtoggle', 'mw-customcollapsible'));
if (toggledElement) {
toggles.html(toggledElement.data(isCollapsed ? 'expandtext' : 'collapsetext'));
}
}
}
});
// Change the text in the custom toggles generated by [[Module:family tree]]
// when they are clicked.
$('.mw-collapsible').on('beforeExpand.mw-collapsible beforeCollapse.mw-collapsible',
function (event) {
if (this.id.indexOf('mw-customcollapsible-familytree') === 0) {
var toggle = $('.' + this.id.replace('mw-customcollapsible', 'mw-customtoggle'));
if (event.type === 'beforeExpand') {
toggle.html(this.dataset.collapsetext);
} else { // beforeCollapse
toggle.html(this.dataset.expandtext);
}
event.stopPropagation();
}
});
});
*/
1cvizvfl0yi6lzqc8hhja404xq09969
6329714
6329691
2026-08-12T20:26:00Z
Wikihez
7344
6329714
javascript
text/javascript
/*---------Gadget-morebits.js-------------
[[Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.js]]
[[Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.css]]*/
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/Gadget/Gadget-morebits.js&action=raw&ctype=text/javascript');
mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Joeytje50/JWB.js/load.js&action=raw&ctype=text/javascript');
( function () {
'use strict';
if ( [ 'Recentchanges', 'Watchlist' ].indexOf( mw.config.get( 'wgCanonicalSpecialPageName' ) ) === -1 ) {
return;
}
var style = document.createElement( 'style' );
style.textContent = '.mw-rollback-link { display: none !important; }';
document.head.appendChild( style );
}() );
//[[Bikarhêner:Wikihez/skrîpt/js/templateParamRenamer.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/templateParamRenamer.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/quicklinks.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/quicklinks.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/citeKurdifier.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/citeKurdifier.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Gadget-defaultVisibilityToggles.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-defaultVisibilityToggles.js&action=raw&ctype=text/javascript');
/*---------QQ.js-------------
[[Bikarhêner:Wikihez/Gadget-QQ.js]]
[[Bikarhêner:Wikihez/Gadget-QQ.css]]
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-QQ.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-QQ.js&action=raw&ctype=text/javascript');
*/
/*---------add-examples.js-------------
[[Bikarhêner:Wikihez/Gadget-wikt.add-examples.js]]
[[Bikarhêner:Wikihez/Gadget-wikt.add-examples.css]]
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-wikt.add-examples.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-wikt.add-examples.js&action=raw&ctype=text/javascript');
*/
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/loader.js&action=raw&ctype=text/javascript')
importScript( 'Bikarhêner:Wikihez/skrîpt/js/copyTitle.js' ); // Backlink: [[Bikarhêner:Wikihez/skrîpt/js/copyTitle.js]]
// [[Bikarhêner:Wikihez/addAutoCat.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/addAutoCat.js&action=raw&ctype=text/javascript');
//importScript( 'Bikarhêner:Wikihez/newentrywiz.js' ); // Backlink: [[Bikarhêner:Wikihez/newentrywiz.js]]
//[[Bikarhêner:Wikihez/CreateTranslation.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/CreateTranslation.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/wergerîne.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/wergerîne.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/getinflections.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/getinflections.js&action=raw&ctype=text/javascript');
//[[:w:Bikarhêner:Wikihez/skrîpt/js/OngletPurge.js]]
mw.loader.load('//ku.wikipedia.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/OngletPurge.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/templateScript2.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/templateScript2.js&action=raw&ctype=text/javascript');
// [[Bikarhêner:Wikihez/şablon-lêke.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/şablon-lêke.js&action=raw&ctype=text/javascript');
mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:BrandonXLF/TodoList.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/test.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/test.js&action=raw&ctype=text/javascript');
//================================================================================================================================
/*---------start.js-------------
[[Bikarhêner:Wikihez/Gadget-start.js]]
[[Bikarhêner:Wikihez/Gadget-start.css]]
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-start.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-start.js&action=raw&ctype=text/javascript');
*/
//importScript( 'Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js' ); // Backlink: [[Bikarhêner:Wikihez/skrîpt/js/Gadget-citoid-helper.js]]
//importScript( 'Bikarhêner:Wikihez/Gadget-linkify.js' ); // Backlink: [[Bikarhêner:Wikihez/Gadget-linkify.js]]
//[[Bikarhêner:Wikihez/skrîpt/js/Gadget-catfix.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/Gadget-catfix.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/editor.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/editor.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/UpdateLanguageNameAndCode.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/UpdateLanguageNameAndCode.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/skrîpt/js/TranslationAdder-Data.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/skrîpt/js/TranslationAdder-Data.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/LanguageUtils.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/LanguageUtils.js&action=raw&ctype=text/javascript');
/*---------aWa.js-------------
[[Bikarhêner:Wikihez/Gadget-aWa.js]]
[[Bikarhêner:Wikihez/Gadget-aWa.css]]
mw.loader.load(mw.util.wikiScript() + '?title=Bikarhêner:Wikihez/Gadget-aWa.css&action=raw&ctype=text/css', 'text/css');
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-aWa.js&action=raw&ctype=text/javascript');
*/
// This array of dependencies comes from [[MediaWiki:Gadgets-definition]].
// If the list of dependencies changes, copy the text after dependencies=
// for TranslationAdder and run console.log(JSON.stringify("paste dependencies here".split(/, ?/)))
// in your browser's JavaScript console. Put the resulting array as the first argument to mw.loader.using.
//[[User:Wikihez/skrîpt/js/TranslationAdder.js]]
//mw.loader.using(["ext.gadget.LegacyScriptsNewNode","mediawiki.cookie","mediawiki.util"],
//function() {
// importScript('User:Wikihez/skrîpt/js/TranslationAdder.js');
//});
/*
// [[:w:en:MediaWiki:Gadget-edittop.js]]
mw.loader.load('//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-edittop.js&action=raw&ctype=text/javascript');
// [[Bikarhêner:Wikihez/addAutoCat.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/addAutoCat.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Balyozbot/Gadget-CommonWikt.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Balyozbot/Gadget-CommonWikt.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/hw-ceke.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/hw-ceke.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/sort-langheaders.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/sort-langheaders.js&action=raw&ctype=text/javascript');
//[[:en:User:Conrad.Irwin/Api.js]]
mw.loader.load('//en.wiktionary.org/w/index.php?title=User:Conrad.Irwin/Api.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/etîket-çêke.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/etîket-çêke.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/tagger.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/tagger.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Gadget-CatMaker.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-CatMaker.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/VisibilityToggles.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/VisibilityToggles.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Gadget-WiktAccFormCreation.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Gadget-WiktAccFormCreation.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/XMLize.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/XMLize.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/RhymesAdder.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/RhymesAdder.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/Editor.js]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/Editor.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/FilterTranslations.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/FilterTranslations.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/custom.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/custom.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/reformat.js]]
//mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/reformat.js&action=raw&ctype=text/javascript');
//[[Bikarhêner:Wikihez/translateWiki.js]] ji aliyê [[Bikarhêner:Guherto]], [[Taybet:PermanentLink/4854098#Translatewiki.net]]
mw.loader.load('//ku.wiktionary.org/w/index.php?title=Bikarhêner:Wikihez/translateWiki.js&action=raw&ctype=text/javascript');
// Various fixes for the trees generated by [[Module:family tree]].
$(function () {
// Show the top toggle.
$('.familytree-toptoggle').css('display', '');
// Initialize the text of the toggles.
$('.familytree').get().forEach(function (tree) {
var isCollapsed = tree.classList.contains('mw-collapsed');
var toggles = $(tree).find('.familytree-toggle');
if (toggles[0]) {
var customToggleClass = Array.prototype.filter.call(toggles[0].classList, function (className) {
return className.indexOf('mw-customtoggle-familytree') === 0;
})[0];
if (customToggleClass) {
var toggledElement = $('#' + customToggleClass.replace('mw-customtoggle', 'mw-customcollapsible'));
if (toggledElement) {
toggles.html(toggledElement.data(isCollapsed ? 'expandtext' : 'collapsetext'));
}
}
}
});
// Change the text in the custom toggles generated by [[Module:family tree]]
// when they are clicked.
$('.mw-collapsible').on('beforeExpand.mw-collapsible beforeCollapse.mw-collapsible',
function (event) {
if (this.id.indexOf('mw-customcollapsible-familytree') === 0) {
var toggle = $('.' + this.id.replace('mw-customcollapsible', 'mw-customtoggle'));
if (event.type === 'beforeExpand') {
toggle.html(this.dataset.collapsetext);
} else { // beforeCollapse
toggle.html(this.dataset.expandtext);
}
event.stopPropagation();
}
});
});
*/
dvtq5ctc64dp35wa3ipdjtrc4ir0ydw
kûçik bi qusandinê nabe tajî
0
874344
6329623
6252599
2026-08-12T13:57:04Z
Wikihez
7344
Werger: +tirkî : [[taşıma suyla değirmen dönmez]] (bi alîkarî)
6329623
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# Mirov tiştekî [[bêfêde]] [[bi zorê]] nikare bike [[kêrhatî]].
==== Formên alternatîv ====
* [[mirov kuçikê biqusîne nabe tajî]]<ref>{{pirtûk|nivîskar=Abdurrahman Aydoğdu|sernav=Gotinên Pêşiyan|weşanxane=Na Yayınları|rûpel=96|isbn=9786059017114}}</ref>
* [[kûçikan biqusînî nabin tajî]]<ref>{{pirtûk|nivîskar=Mehmet Oncu|sernav=Ferhenga Devoka Herêma Semsûrê|weşanxane=Sîtav|sal=2020|rûpel=189|isbn=9786057920607|ziman=ku}}</ref>
* [[kûçik çiqas biqusînî jî dîsa nabe tajî]]<ref>{{pirtûk|nivîskar=Amed Tîgrîs|sernav=Gotînên Pêşiyan|weşanxane=Rewşen|sal=2001|rûpel=156|isbn=91-88-444-78-3|ziman=ku}}</ref>
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|taşıma suyla değirmen dönmez}}
{{werger-bin}}
=== Çavkanî ===
* {{malper|nivîskar=Zinarê Xamo|url=http://zinarexamo.blogspot.com/2015/08/kucik-bi-qusandine-nabe-taji.html|sernav=Kûçik bi qusandinê nabe tajî!|malper=zinarexamo.blogspot.com|dîrok=2015|ziman=ku}}
* {{malper|nivîskar=Selman|url=https://www.ilkehaber.com/haber/kilicdaroglu-kurtlere-guven-vermedik-29206.htm|sernav=kurmê darê|malper=ilkehaber.com|dîrok=2014|ziman=ku}}
{{çavkanî}}
fuxv11c7cq4luz8h6234o001cjcwels
6329624
6329623
2026-08-12T13:59:19Z
Wikihez
7344
6329624
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# Mirov tiştekî [[bêfêde]] [[bi zorê]] nikare bike [[kêrhatî]].
#* {{jêder-malper|ku|jêgirtin=Em çi bibêjin jî bêfeyde ye, wek pêşiyan gotiye, ”kûçik bi qusandinê nabe tajî” û we selam…
|nivîskar=Zinarê Xamo|url=http://zinarexamo.blogspot.com/2015/08/kucik-bi-qusandine-nabe-taji.html|sernav=Kûçik bi qusandinê nabe tajî!|malper=zinarexamo.blogspot.com|sal=2015}}
==== Formên alternatîv ====
* [[mirov kuçikê biqusîne nabe tajî]]<ref>{{pirtûk|nivîskar=Abdurrahman Aydoğdu|sernav=Gotinên Pêşiyan|weşanxane=Na Yayınları|rûpel=96|isbn=9786059017114}}</ref>
* [[kûçikan biqusînî nabin tajî]]<ref>{{pirtûk|nivîskar=Mehmet Oncu|sernav=Ferhenga Devoka Herêma Semsûrê|weşanxane=Sîtav|sal=2020|rûpel=189|isbn=9786057920607|ziman=ku}}</ref>
* [[kûçik çiqas biqusînî jî dîsa nabe tajî]]<ref>{{pirtûk|nivîskar=Amed Tîgrîs|sernav=Gotînên Pêşiyan|weşanxane=Rewşen|sal=2001|rûpel=156|isbn=91-88-444-78-3|ziman=ku}}</ref>
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|taşıma suyla değirmen dönmez}}
{{werger-bin}}
=== Çavkanî ===
* {{malper|nivîskar=Selman|url=https://www.ilkehaber.com/haber/kilicdaroglu-kurtlere-guven-vermedik-29206.htm|sernav=kurmê darê|malper=ilkehaber.com|sal=2014|ku}}
{{çavkanî}}
gm98eh9vbu4375jf2e5j0bqqjna2ecf
6329625
6329624
2026-08-12T13:59:35Z
Wikihez
7344
6329625
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# Mirov tiştekî [[bêfêde]] [[bi zorê]] nikare bike [[kêrhatî]].
#* {{jêder-malper|ku|jêgirtin=Em çi bibêjin jî bêfeyde ye, wek pêşiyan gotiye, ”'''kûçik bi qusandinê nabe tajî'''” û we selam…
|nivîskar=Zinarê Xamo|url=http://zinarexamo.blogspot.com/2015/08/kucik-bi-qusandine-nabe-taji.html|sernav=Kûçik bi qusandinê nabe tajî!|malper=zinarexamo.blogspot.com|sal=2015}}
==== Formên alternatîv ====
* [[mirov kuçikê biqusîne nabe tajî]]<ref>{{pirtûk|nivîskar=Abdurrahman Aydoğdu|sernav=Gotinên Pêşiyan|weşanxane=Na Yayınları|rûpel=96|isbn=9786059017114}}</ref>
* [[kûçikan biqusînî nabin tajî]]<ref>{{pirtûk|nivîskar=Mehmet Oncu|sernav=Ferhenga Devoka Herêma Semsûrê|weşanxane=Sîtav|sal=2020|rûpel=189|isbn=9786057920607|ziman=ku}}</ref>
* [[kûçik çiqas biqusînî jî dîsa nabe tajî]]<ref>{{pirtûk|nivîskar=Amed Tîgrîs|sernav=Gotînên Pêşiyan|weşanxane=Rewşen|sal=2001|rûpel=156|isbn=91-88-444-78-3|ziman=ku}}</ref>
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|taşıma suyla değirmen dönmez}}
{{werger-bin}}
=== Çavkanî ===
* {{malper|nivîskar=Selman|url=https://www.ilkehaber.com/haber/kilicdaroglu-kurtlere-guven-vermedik-29206.htm|sernav=kurmê darê|malper=ilkehaber.com|sal=2014|ku}}
{{çavkanî}}
lhzaqjvbkueuhfn20t59ux082auh4ra
6329626
6329625
2026-08-12T14:03:27Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329626
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Gotineke pêşiyan ===
{{gp|ku}}
# Mirov tiştekî [[bêfêde]] [[bi zorê]] nikare bike [[kêrhatî]].
#* {{jêder-malper|ku|jêgirtin=Em çi bibêjin jî bêfeyde ye, wek pêşiyan gotiye, ”'''kûçik bi qusandinê nabe tajî'''” û we selam…
|nivîskar=Zinarê Xamo|url=http://zinarexamo.blogspot.com/2015/08/kucik-bi-qusandine-nabe-taji.html|sernav=Kûçik bi qusandinê nabe tajî!|malper=zinarexamo.blogspot.com|sal=2015}}
==== Formên alternatîv ====
* [[mirov kuçikê biqusîne nabe tajî]]<ref>{{pirtûk|nivîskar=Abdurrahman Aydoğdu|sernav=Gotinên Pêşiyan|weşanxane=Na Yayınları|rûpel=96|isbn=9786059017114}}</ref>
* [[kûçikan biqusînî nabin tajî]]<ref>{{pirtûk|nivîskar=Mehmet Oncu|sernav=Ferhenga Devoka Herêma Semsûrê|weşanxane=Sîtav|sal=2020|rûpel=189|isbn=9786057920607|ziman=ku}}</ref>
* [[kûçik çiqas biqusînî jî dîsa nabe tajî]]<ref>{{pirtûk|nivîskar=Amed Tîgrîs|sernav=Gotînên Pêşiyan|weşanxane=Rewşen|sal=2001|rûpel=156|isbn=91-88-444-78-3|ziman=ku}}</ref>
==== Werger ====
{{werger-ser}}
* {{Z|tr}}: {{W-|tr|taşıma su ile değirmen dönmez}}
{{werger-bin}}
=== Çavkanî ===
* {{malper|nivîskar=Selman|url=https://www.ilkehaber.com/haber/kilicdaroglu-kurtlere-guven-vermedik-29206.htm|sernav=kurmê darê|malper=ilkehaber.com|sal=2014|ku}}
{{çavkanî}}
fpgj09vc4js75rr0qsv4ou6855xeb24
Bikarhêner:Wikihez/common.css
2
874440
6329688
6328424
2026-08-12T18:35:45Z
Wikihez
7344
6329688
css
text/css
/* [[Şablon:manelazim]]: dema ku amûra "Pênaseyê temam bike" bi awayekî serkeftî were
barkirin, nivîsa cîgir a "manelazim" tê veşartin; ji bo bikarhênerên bêyî
JavaScript, ev nivîs xuya dibe (ji ber vê yekê em .manelazim bi xwe naşehitînin). */
.fill-definition-resolved > .manelazim {
display: none;
}
8v47cjnw570spsn71cmkoba0n2c2h14
Şablon:Ç:Dosikî:2016
10
934930
6329745
4856877
2026-08-12T21:14:04Z
Wikihez
7344
6329745
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:فەرهەنگا سپیرێز عەرەبی کوردی<t:Ferhenga Spîrêz Erebî-Kurdî>
|year=2016
|location=Dihok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{belgekirin}}</noinclude>
0o0t85tjdzgf0jfmkif88j9f9pnq1i8
6329747
6329745
2026-08-12T21:15:44Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Fer:ar-kur:spîrêz]] weke [[Şablon:Ç:Dosikî:2016]] guhart
6329745
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:فەرهەنگا سپیرێز عەرەبی کوردی<t:Ferhenga Spîrêz Erebî-Kurdî>
|year=2016
|location=Dihok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{belgekirin}}</noinclude>
0o0t85tjdzgf0jfmkif88j9f9pnq1i8
Şablon:Ç:Dosikî:2013
10
934933
6329722
4856876
2026-08-12T20:54:27Z
Wikihez
7344
6329722
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:قاموس سپیرێز كردي-عربي<t:Ferhenga Spîrêz Kurdî-Erebî>
|year=2013
|location=Duhok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{refcat|ar|ku}}<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"1"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n",
"format": "inline"
}
</templatedata></noinclude>
sf2x8w498iov6dha7wdyuvcvxp9s1wm
6329723
6329722
2026-08-12T20:54:55Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Fer:kur-ar:spîrêz]] weke [[Şablon:Ç:Doskî:2013]] guhart
6329722
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:قاموس سپیرێز كردي-عربي<t:Ferhenga Spîrêz Kurdî-Erebî>
|year=2013
|location=Duhok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{refcat|ar|ku}}<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"1"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n",
"format": "inline"
}
</templatedata></noinclude>
sf2x8w498iov6dha7wdyuvcvxp9s1wm
6329732
6329723
2026-08-12T21:07:25Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Ç:Doskî:2013]] weke [[Şablon:Ç:Dosikî:2013]] guhart
6329722
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:قاموس سپیرێز كردي-عربي<t:Ferhenga Spîrêz Kurdî-Erebî>
|year=2013
|location=Duhok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{refcat|ar|ku}}<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"1"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n",
"format": "inline"
}
</templatedata></noinclude>
sf2x8w498iov6dha7wdyuvcvxp9s1wm
6329738
6329732
2026-08-12T21:08:49Z
Wikihez
7344
6329738
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:قاموس سپیرێز كردي-عربي<t:Ferhenga Spîrêz Kurdî-Erebî>
|year=2013
|location=Duhok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{belgekirin}}</noinclude>
7gpxgjcwz4h5mplor9zzcoe98ylpuqb
6329744
6329738
2026-08-12T21:13:46Z
Wikihez
7344
6329744
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ku
|last=Dosikî
|first=Mihemed Emîn
|entry={{{ser|{{{1|}}}}}}
|title=ar:قاموس سپیرێز كردي-عربي<t:Ferhenga Spîrêz Kurdî-Erebî>
|year=2013
|location=Dihok
|publisher=Spîrêz
|textparam=jêgirtin
|pageparam=r,rûpel
|isbn=
|allowparams=ser,1,r,rûpel
}}<noinclude>{{belgekirin}}</noinclude>
jre94q1n6lvhjbxvh4r83gsn7jxrv6b
reemerge
0
934943
6329792
6255501
2026-08-12T22:37:56Z
Wikihez
7344
/* Lêker */
6329792
wikitext
text/x-wiki
{{bnr herwiha|re-emerge|reëmerge}}
== {{ziman|en}} ==
=== Bilêvkirin ===
: {{ku-tîp|rîemorc}}
* ''(DYA)'' {{IPA|en|/ɹi.i.ˈmɝdʒ/|/ɹi.i.ˈmɚdʒ/}}
=== Lêker ===
{{lêker|en}}
# [[ji nû ve]] [[derketin meydanê]], [[cardin]] [[derketin holê]]
#* {{jêder|en|Ji anîmeya bi navê ''Bungou Stray Dogs''|jêgirtin=We're investigating the rumor that the previous boss has '''re-emerged'''.|werger=Em li wê gotegotê dikolin ku dibêjin patronê berê ji nû ve derketiye holê.}}
==== Formên alternatîv ====
{{kol3|en
|re-emerge
|reëmerge
}}
==== Jê ====
{{kol3|en
|reemergence
|reemergent
}}
==== Etîmolojî ====
Ji {{pêş|en|re-|emerge}}.
mq4hsynl7hahuy2kws30az6d8hjeafv
mucîzewî
0
935406
6329874
6284839
2026-08-13T00:23:46Z
Wikihez
7344
6329874
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Yê wekî [[mucîze]]yê xwedî [[taybetî|taybeti]]yên [[niwaze|niwaze]].
#* {{jêder-malper|ku|jêgirtin=Xelkên wê demê, wisa bawer kirine ku ew xwediyê hêzên '''mucîzewî''' ye û xwe avêtiye nava alavên çiyayê agirîn ''(volkan)'' yên ''Etnayê''.|nivîskar=Alî Gurdilî|sernav=Çar elementên Empedokles|url=https://krd.riataza.com/2018/11/19/car-elementen-empedokles/|malper=RiaTaza|dîrok=2018-11-19}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|miraculous}}
* {{Z|tr}}: {{W|tr|mucizevi}}
{{werger-bin}}
k1wg6yefgpxbns7yel6c947stm3x61p
6329920
6329874
2026-08-13T02:12:17Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir.)
6329920
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Rengdêr ===
{{rengdêr|ku}}
# Yê wekî [[mucîze]]yê xwedî [[taybetî|taybetiyên]] [[niwaze]].
#* {{jêder-malper|ku|jêgirtin=Xelkên wê demê, wisa bawer kirine ku ew xwediyê hêzên '''mucîzewî''' ye û xwe avêtiye nava alavên çiyayê agirîn ''(volkan)'' yên ''Etnayê''.|nivîskar=Alî Gurdilî|sernav=Çar elementên Empedokles|url=https://krd.riataza.com/2018/11/19/car-elementen-empedokles/|malper=RiaTaza|dîrok=2018-11-19}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
* {{Z|en}}: {{W|en|miraculous}}
* {{Z|tr}}: {{W|tr|mucizevi}}
{{werger-bin}}
cdfw7qqvoih3p71diyg2pwheyuyrj98
qerxûş
0
935853
6329906
6286343
2026-08-13T00:58:33Z
Wikihez
7344
6329906
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# {{f|ku|balinde}} Yek ji cureyê [[eylo]] ye.
#* {{jêder-malper|ku|jêgirtin='''Qerxûş''': Teyrekî ji qertel biçûktir e, ji seyda korgî/kîroşk û hin teyran hez dike.|nivîskar=Zinarê Xamo|sernav=Ji devê dêya min çend tiştên pir hêja -1-|url=http://zinarexamo.blogspot.com/2018/05/ji-deve-deya-min-cend-tisten-pir-heja-1.html|malper=zinarexamo.blogspot.com|dîrok=2018}}
#* {{jêder-pirtûk|ku|jêgirtin=Bi ereban re, bi tirkmenan re bi osmanîyan re dibin yek, ji wan re dengê xwe nakin, ji me re '''qerxûş''' in.|nivîskar=Eyüp Kıran| sernav=Dewrêşê Evdî Kulîlka Bilbizêk û Rim|cîh=Stenbol|weşanxane={{w|Nûbihar}}|sal=2018|çap=4|rûpel=28 |isbn=978-9944-360-95-1}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
oypp7qvsga12lwa8ebqu9bui7x2ur3v
6329907
6329906
2026-08-13T00:58:58Z
Wikihez
7344
/* Navdêr */
6329907
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku}}
# {{f|ku|balinde}} Yek ji cureyê [[eylo]] ye.
#* {{jêder-malper|ku|jêgirtin='''Qerxûş''': Teyrekî ji qertel biçûktir e, ji seyda korgî/kîroşk û hin teyran hez dike.|nivîskar=Zinarê Xamo|sernav=Ji devê dêya min çend tiştên pir hêja -1-|url=http://zinarexamo.blogspot.com/2018/05/ji-deve-deya-min-cend-tisten-pir-heja-1.html|malper=zinarexamo.blogspot.com|sal=2018}}
#* {{jêder-pirtûk|ku|jêgirtin=Bi ereban re, bi tirkmenan re bi osmanîyan re dibin yek, ji wan re dengê xwe nakin, ji me re '''qerxûş''' in.|nivîskar=Eyüp Kıran| sernav=Dewrêşê Evdî Kulîlka Bilbizêk û Rim|cîh=Stenbol|weşanxane={{w|Nûbihar}}|sal=2018|çap=4|rûpel=28 |isbn=978-9944-360-95-1}}
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
acheiery0l53cf4c46thhqg8jo8h4dv
miqerer
0
936122
6329851
6329063
2026-08-12T23:57:12Z
Wikihez
7344
6329851
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:Mem û Zîn|jêgirtin=Yek şubhê Bekir, bitac û binper<br/> Westayî li ber derî, '''muqerrer'''}}
#* {{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|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}}
1z5qnaidsp071mtd5gxcd2hu7n9l7rs
manîkur
0
956231
6329833
6329356
2026-08-12T23:35:26Z
Wikihez
7344
6329833
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î|tiliyan]]
#* {{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|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|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/|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}}
tskin8tzeouymvvc7t99ytftaerzwzc
suçüstü mahkemesi
0
956369
6329915
6073205
2026-08-13T01:21:11Z
Wikihez
7344
/* Navdêr */
6329915
wikitext
text/x-wiki
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|hiqûq}} [[mehkeme|Mehkeme]]ya ku gava faîl [[li ser sûc girtin|li ser sûcê tê girtin]], [[di ser de girtin|di ser sûcê de girtin]] [[danişîn]]a wî lê tê dîtin. <ref>{{malper|url=https://sozluk.gov.tr/?kelime=su%C3%A7%C3%BCst%C3%BC%2Bmahkemesi|sernav=Güncel Türkçe Sözlük|ziman=tr|malper=Saziya Zimanê Tirkî|urlya-arşîvê=https://web.archive.org/web/20210225195202/https://sozluk.gov.tr/?kelime=su%C3%A7%C3%BCst%C3%BC%2Bmahkemesi}}</ref>
==== Hevmane ====
* {{g|tr|meşhut cürümler mahkemesi}}
==== Etîmolojî ====
Ji {{pêk|tr|suçüstü|[[mahkeme|mahkemesi]]}}.
=== Çavkanî ===
{{çavkanî}}
a50y11qsdqo81g2ermvopc5tuo82elm
6329922
6329915
2026-08-13T03:12:07Z
Balyozbot
7867
Bot: Paqijiyên kozmetîk (Lînk paqij kir, --Valahiyên nehewce.)
6329922
wikitext
text/x-wiki
== {{ziman|tr}} ==
=== Navdêr ===
{{navdêr|tr}}
# {{f|tr|hiqûq}} [[mehkeme|Mehkemeya]] ku gava faîl [[li ser sûc girtin|li ser sûcê tê girtin]], [[di ser de girtin|di ser sûcê de girtin]] [[danişîn]]a wî lê tê dîtin. <ref>{{malper|url=https://sozluk.gov.tr/?kelime=su%C3%A7%C3%BCst%C3%BC%2Bmahkemesi|sernav=Güncel Türkçe Sözlük|ziman=tr|malper=Saziya Zimanê Tirkî|urlya-arşîvê=https://web.archive.org/web/20210225195202/https://sozluk.gov.tr/?kelime=su%C3%A7%C3%BCst%C3%BC%2Bmahkemesi}}</ref>
==== Hevmane ====
* {{g|tr|meşhut cürümler mahkemesi}}
==== Etîmolojî ====
Ji {{pêk|tr|suçüstü|[[mahkeme]]si}}.
=== Çavkanî ===
{{çavkanî}}
1yn0j6j3shwy9ft2mmtuinlpvyroda2
qîl-
0
959939
6329878
6329112
2026-08-13T00:27:11Z
Balyozbot
7867
/* Pêşgir */ sererastkirin
6329878
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Pêşgir ===
{{pêşgir|ku}}
# Pêşbendikek ji bo [[superlatîv]]kirina [[reng]]an tê bikaranîn.
#: ''[[qîlsor]], [[qîlreş]] / [[qîlîsor]], [[qîlîreş]]''
#* {{jêder-kovar|ku|jêgirtin=Gava berbang dikene, bi keziya '''qîlreş''' dilîze û diqumîne canê westî, ta ku navnîşaneke şadî di sîngê hêviyên nûjen de bikute, hestên sotî bersiva bercandanê qut qut dide...|kovar=Newroz|sernav=Tajana xemsariyê|url=http://www.yek-dem.com/wp-content/uploads/2017/09/Newroz-133.pdf|nivîskar=Îlham Osman|rûpel=6|hejmar=133|sal=2017}}
#* {{jêder-malper|ku|jêgirtin=Li Lolanê, heft stêrkên perwînî tên xwarê; li ser çeman, ji serî de hetanî lingan kevokên '''qîlreş''', sih hêstirkên bêguneh bi avan re berdidin ji çavên xwe.|nivîskar=Abdullah Karabax|url=https://www.antoloji.com/gelawej-res-hilten-li-kendeqole-siiri/|sernav=Gelawêj Reş Hiltên Li Kendeqolê|malper=Antoloji.com|dîrok=2008-08-21|urlya-arşîvê=https://web.archive.org/web/20210314105046/https://www.antoloji.com/gelawej-res-hilten-li-kendeqole-siiri/}}
==== Formên alternatîv ====
* [[qîlî-]]
==== Etîmolojî ====
{{bêetîmolojî|ku}}
==== Werger ====
{{werger-ser}}
{{werger-bin}}
19aqu7mhmlz8mppb5a27kfe87uqkz3q
perîskop
0
964517
6329877
6314399
2026-08-13T00:26:44Z
Balyozbot
7867
/* Çavkanî */ sererastkirin
6329877
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
[[Wêne:Periscope rifle Gallipoli 1915.jpg|thumb|Bikaranîna '''perîskopê''' di dema Şerê Cîhanî yê Yekem de.]]
{{navdêr|ku|z=m}}
# {{f|ku|optîk}} [[amûr|Amûreke]] [[optîk]] e ku pê re [[pêkan]] e mirov tiştinan di [[bilindahî]] û [[rewş]]ên [[cuda]] de [[dîtin|bibîne]].
#* {{jêder-pirtûk|ku|jêgirtin=Êdî der û dor bi lez tarî dibû. Tenê serê çiyayê Gabîlanê ji şewqa roja ku ji newalê bi dûr ketibû dibiriqand. Marekî mîna '''perîskopê''' serê xwe derxistibû û pêl dibû. Ji herikandina avê qamîş dihejiyan. Ji dûr ve, ji ser rê zilamek bi dengê bilind.|sernav=Mişk û mirov|nivîskar=John Steinbeck|wergêr=Firat Cewerî|weşanxane=Nûdem|sal=1993|rûpel=12}}
#* {{jêder-pirtûk|ku|jêgirtin=Marekî avî hêdî bi nava avê de diçû. Serê wî mîna '''perîskopeke''' biçûk vir de û wê de li ba dibû, ew ji ava bêdeng derbas bû û li cihê ava nizim, xwe avête nava pencên çûkekî masîxwlr.|sernav=Mişk û mirov|nivîskar=John Steinbeck|wergêr=Firat Cewerî|weşanxane=Nûdem|sal=1993|rûpel=118}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Etîmolojî ====
Ji {{deyn|en|ku|periscope}}.
==== Werger ====
{{werger-ser}}
* {{Z|da}} : {{W-|da|periskop|nt}}
* {{Z|eo}} : {{W-|eo|periskopo}}
* {{Z|fr}} : {{W+|fr|périscope|n}}
* {{Z|en}} : {{W+|en|periscope}}
* {{Z|it}} : {{W+|it|periscopio|n}}
* {{Z|ca}} : {{W-|ca|periscopi|n}}
* {{Z|tr}} : {{W+|tr|periskop}}
* {{Z|el}} : {{W+|el|περισκόπιο|tr=periskopio}}
{{werger-bin}}
=== Çavkanî ===
* {{Zana Farqînî|r=1370}}
* {{ferhenga izolî|r=314}}
* {{kovar|ku|kovar=Nûpelda|url=https://www.kurdipedia.org/files/relatedfiles/2016/97457/0009.PDF?ver=131225474442003267|sernav=Bêjeya Perê|nivîskar=Ahmet Demir|hejmar=9|sal=2012|rûpel=8}}
eukqjw4yhelm1ca1yyvdv0cf2jv4i0g
MediaWiki:Gadget-AjaxEdit.js
8
968692
6329711
4939649
2026-08-12T20:20:53Z
Bikarhêner
3719
6329711
javascript
text/javascript
// AjaxEdit
// <nowiki>
"use strict";
// Çavkanî: [[en:MediaWiki:Gadget-AjaxEdit.js]]
// Description : With a new button "Æbiguherîne" one can edit specific sections without reloading the whole page, with an edit summary field and minor edit option.
// Ji bo aktîvkirina vê amûrê here [[Special:Preferences#mw-prefsection-gadgets|beşa Amûr ya Tercîhên mîn]] û li qutiya li gel "Amûrek e ku ji bo guhartina beşekê bi butona "Æbiguherîne" bêyî barkirina hemû rûpelê tê bikaranîn." bitikîne
// Supports TabbedLanguages gadget
// Dependencies: mediawiki.util, mediawiki.Uri, mediawiki.user, mediawiki.api
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, sub:true, esversion:5, esnext:false */
/* global mw, $ */
(function ajaxEditIife() {
window.AjaxEdit = {};
window.AjaxEdit.scriptLink = "";
if (mw.config.get("wgSiteName") !== "Wîkîferheng")
window.AjaxEdit.scriptLink += "wikt:";
if (mw.config.get("wgContentLanguage") !== "ku")
window.AjaxEdit.scriptLink += "ku:";
window.AjaxEdit.scriptLink += "MediaWiki:Gadget-AjaxEdit.js";
var $document = $(document);
window.AjaxEdit.FireEvents = function () {
// fire page load events like the [quotations ▼] thing
// see https://github.com/wikimedia/mediawiki/blob/master/resources/src/mediawiki.action/mediawiki.action.edit.preview.js
mw.hook("wikipage.content").fire($document);
mw.hook("wikipage.categories").fire($document);
};
var isVector2022 = mw.config.get("skin") === "vector-2022";
window.AjaxEdit.Click = function (ajaxEditAnchor) {
if (ajaxEditAnchor.hasEditBox) {
mw.notify("Ev qutiya guhertinê ya AjaxEdit jixwe vekirî ye.");
return;
} else if (document.getElementById("ajaxedit-wrapper")) {
mw.notify("Li ser vê rûpelê jixwe qutiyeke guhertina AjaxEdit vekirî ye.");
return;
} else {
ajaxEditAnchor.hasEditBox = true;
}
var elements = {};
var _query = new URL($(ajaxEditAnchor)
.parent()
.find("a[href*='action=edit']")
.attr("href"), location.href).searchParams,
title = _query.get("title"),
section = _query.get("section");
section = section.replace("T-", ""); //translcusions...
var hdr = $(ajaxEditAnchor).parent().parent();
var sectionName = hdr.children(":header").first().text();
if (window.tabbedLanguages && !hdr.is(":header")) {
sectionName = window.tabbedLanguages[window.currentLanguageTab];
}
var data = { action: 'raw', title: title, section: section };
$.get(mw.util.wikiScript('index'), data).then(function (wikitext) {
var rowHeight = Math.min(15, 1 + wikitext.split("\n").length);
elements.textarea = $("<textarea/>")
.attr({ rows: rowHeight })
.addClass("mw-editfont-monospace")
.text(wikitext);
elements.textareaSummary = $("<input/>")
.attr({
type: "text",
maxlength: 500,
spellcheck: true,
name: "wpSummary",
})
.keydown(event, function () {
if (event.keyCode == 13) { // on enter
elements.saveButton.click();
}
});
function checkboxAndLabel(id, text) {
var checkbox = $("<input/>")
.attr({
"id": id,
"type": "checkbox",
});
var label = $("<label/>")
.attr("for", id)
.text(text);
return [checkbox, label];
}
var minorEdit = checkboxAndLabel("ajaxedit-minor-edit-checkbox", "Guhertina piçûk");
elements.minorEditCheckbox = minorEdit[0], elements.minorEditLabel = minorEdit[1];
elements.saveButton = $("<button/>")
.text("Qeyd bike")
.click(function () {
elements.textarea.attr('disabled', true);
elements.textareaSummary.attr('disabled', true);
window.AjaxEdit.Save(section, sectionName, elements.textarea.val(), title, elements.textareaSummary.val(), elements.minorEditCheckbox.prop("checked"))
.then(function (apiSaveResponse) {
if (apiSaveResponse.error) return; //if abusefilter was triggered
new mw.Api().get({ page: mw.config.get("wgPageName"), action: "parse", prop: "text|categorieshtml" })
.then(function (newHtml) {
$("#ajaxedit-wrapper").remove();
$("#mw-content-text").html(newHtml.parse.text["*"]);
$("#catlinks").replaceWith(newHtml.parse.categorieshtml["*"]);
window.AjaxEdit.FireEvents();
mw.loader.moduleRegistry["site"].state = "registered";
//mw.loader.moduleRegistry["site"].version="generate-unique-guid-here";
mw.loader.moduleRegistry["site"].script = undefined;
mw.loader.using("site", function () { });
window.AjaxEdit.Submain();
});
});
})
.css("margin-left", "3px");
elements.cancelButton = $('<button/>')
.text("Betal bike")
.click(function () {
$("#ajaxedit-wrapper").remove();
ajaxEditAnchor.hasEditBox = false;
});
elements.previewDiv = $("<div/>")
.css({
"border-style": "solid", "border-width": "1px 1px 1px 4px",
"border-radius": "0.33em", "border-color": "#a3d3ff",
})
.hide();
function timestamp() {
return new Date().toISOString();
}
var previousText;
var previousTextTimestamp = timestamp();
function loadPreview() {
var newText = elements.textarea.val();
var textTimestamp = timestamp();
if (!previousText || previousText != newText) {
new mw.Api()
.parse(
newText,
{ title: mw.config.get("wgPageName"), pst: "true", preview: "true", sectionpreview: "true", disableeditsection: "true" }
)
.done(function (html) {
if (textTimestamp > previousTextTimestamp) {
elements.previewDiv.html(html);
window.AjaxEdit.FireEvents();
previousTextTimestamp = textTimestamp;
}
});
}
previousText = newText;
}
var livePreview = checkboxAndLabel("ajaxedit-live-preview-checkbox", "Pêşdîtina zindî");
elements.livePreviewCheckbox = livePreview[0], elements.livePreviewLabel = livePreview[1];
elements.livePreviewCheckbox.on("change", function () {
if ($(this).prop("checked")) {
elements.previewDiv.show("slow");
loadPreview();
this.previewIntervalId = setInterval(loadPreview, 500);
} else {
clearInterval(this.previewIntervalId);
elements.previewDiv.hide("fast");
elements.previewDiv.empty();
}
});
var wrapper = $("<div/>")
.attr("id", "ajaxedit-wrapper")
.css({ width: "auto", "margin": 0, "overflow": "hidden" })
.append(elements.textarea)
.append(elements.textareaSummary)
.append(elements.saveButton)
.append(elements.livePreviewCheckbox)
.append(elements.livePreviewLabel)
.append(elements.minorEditCheckbox)
.append(elements.minorEditLabel)
.append(elements.cancelButton)
.append(elements.previewDiv);
//tabbed languages support
if ($(ajaxEditAnchor).is("#tabstable .editlangsection a")) {
$(".languageContainer:not(:hidden)")
.first()
.prepend(wrapper);
} else {
hdr.after(wrapper);
}
});
};
/*
* Define edit summary template with window.AjaxEditSummary. For instance:
window.AjaxEditSummary = "Æ $sectionlink $summary";
*/
window.AjaxEdit.Save = function (sectionID, sectionName, sectionText, title, summary, minorEdit) {
var finalSummary;
if (typeof window.AjaxEditSummary === "string") {
var usedSummary = false;
finalSummary = window.AjaxEditSummary.replace(
/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,
function (fullMatch, name) {
switch (name) {
case "summary": {
usedSummary = true;
return summary;
}
case "scriptlink": return window.AjaxEdit.scriptLink;
case "sectionname": return sectionText;
case "sectionlink": return "/* " + sectionName + " */";
default: {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) guhêrbareke nenas dihewîne. Navê guhêrbarê: "
+ name + ". Ji van hilbijêre: summary, scriptlink, sectionname, sectionlink."
);
return "";
}
}
});
if (!usedSummary) {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) kurteya te ya guhertinê bi kar naîne, ji ber vê yekê kurteya te dê li dawiya şablonê were zêdekirin: "
+ window.AjaxEditSummary);
finalSummary += " " + summary;
}
} else {
finalSummary = "/* " + sectionName + " */ " + summary + " (bi [[" + window.AjaxEdit.scriptLink + "|AjaxEdit]]ê re)";
}
var data = {
format: 'json',
action: 'edit',
title: title,
section: sectionID,
summary: finalSummary,
text: sectionText,
token: mw.user.tokens.get('csrfToken'),
minor: minorEdit,
};
return new mw.Api().post(data).then(function (response) {
if (response && response.edit && response.edit.result == 'Success') {
mw.notify("serketî");
} else if (response && response.error) {
mw.notify('Xeletî: API koda xeletiyê ya "' + response.error.code + '" şand: ' + response.error.info);
}
return response;
}).fail(function (xhr) {
mw.notify('Xeletî: Daxwaz pêk neanî.');
$('#ajaxedit-wrapper *').attr('disabled', false);
});
};
window.AjaxEdit.Submain = function () {
$(".mw-body-content .mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
window.AjaxEdit.Main = function () {
$(".mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
if (mw.config.get('wgAction') == "view")
$(window.AjaxEdit.Main);
})();
// </nowiki>
0ar8xiasqdnc6tlf1oytsoar81ertmg
Bikarhêner:Wikihez/test.js
2
969083
6329687
6290820
2026-08-12T18:35:35Z
Wikihez
7344
Rûpel hat valakirin
6329687
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
6329690
6329687
2026-08-12T18:59:08Z
Wikihez
7344
6329690
javascript
text/javascript
// 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.
// Her jêderek li kategoriya "Jêderê" ya di window.VisibilityToggles de (ji [[MediaWiki:Gadget-VisibilityToggles.js]])
// tê tomarkirin, da ku bişkoka "Jêderê veşêre / Jêderê nîşan bide" ya di kêlekê de karibe hemû
// jêderan bi hev re veke an bigire; her lînka "+"/"↩" jî heman guherînê ji bo yekê ya xwe pêk tîne.
$(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');
var jederKurt = $('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// defaultStatus = true: statûya destpêkê ya kategoriyê "veşartî" ye
// (formata kurt tê nîşandan), wek ku berê bi CSS bû.
var toggle = window.VisibilityToggles.register("Jêderê", function show() {
sund.css('display', 'inline');
jederKurt.css('display', 'none');
}, function hide() {
sund.css('display', 'none');
jederKurt.css('display', 'inline');
}, true);
zede.add(kurt).on('click', function(e) {
e.preventDefault();
toggle();
});
}
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();
});
6fju8kpc1jfof7qdekmgabonooisffy
6329692
6329690
2026-08-12T19:07:25Z
Wikihez
7344
6329692
javascript
text/javascript
// 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.
// Each jeder is registered under the "Jêderê" category in window.VisibilityToggles
// (from [[MediaWiki:Gadget-VisibilityToggles.js]]), so the "Jêderê veşêre / Jêderê nîşan bide"
// sidebar link can show or hide every jeder at once; each "+"/"↩" link toggles just its own entry.
$(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');
var jederKurt = $('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// defaultStatus = true: the category's initial status is "hidden" (short
// form shown), matching what plain CSS did before.
var toggle = window.VisibilityToggles.register("Jêderê", function show() {
sund.css('display', 'inline');
jederKurt.css('display', 'none');
}, function hide() {
sund.css('display', 'none');
jederKurt.css('display', 'inline');
}, true);
zede.add(kurt).on('click', function(e) {
e.preventDefault();
toggle();
});
}
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();
});
4i8ry53q5ye47mcx3adli8jyht0m47b
6329693
6329692
2026-08-12T19:12:23Z
Wikihez
7344
6329693
javascript
text/javascript
// 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.
// Each jeder is registered under the "Jêderê" category in window.VisibilityToggles
// (from [[MediaWiki:Gadget-VisibilityToggles.js]]), so the "Jêderê veşêre / Jêderê nîşan bide"
// sidebar link can show or hide every jeder at once; each "+"/"↩" link toggles just its own entry.
$(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');
var jederKurt = $('<span>' + nivisKurt + '</span>')
.append(zede).append(')')
.addClass('jeder-kurt')
.css('font-size', '0.85em')
.insertAfter(sund);
sund.append(' ').append(kurt);
// defaultStatus = false: the category's initial status is "visible" (full
// citation shown), so the sidebar link starts as "Jêderê veşêre".
var toggle = window.VisibilityToggles.register("Jêderê", function show() {
sund.css('display', 'inline');
jederKurt.css('display', 'none');
}, function hide() {
sund.css('display', 'none');
jederKurt.css('display', 'inline');
}, false);
zede.add(kurt).on('click', function(e) {
e.preventDefault();
toggle();
});
}
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();
});
aa6lfvd1tx59sbzf70fv1lmpn2ndxu3
6329694
6329693
2026-08-12T19:13:14Z
Wikihez
7344
Rûpel hat valakirin
6329694
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
6329708
6329694
2026-08-12T20:17:20Z
Wikihez
7344
6329708
javascript
text/javascript
// AjaxEdit
// <nowiki>
"use strict";
// Çavkanî: [[en:MediaWiki:Gadget-AjaxEdit.js]]
// Description : With a new button "Æbiguherîne" one can edit specific sections without reloading the whole page, with an edit summary field and minor edit option.
// Ji bo çalakkirina vê amûrê here [[Special:Preferences#mw-prefsection-gadgets|beşa Amûr ya Tercîhên mîn]] û li qutiya li gel "Amûrek e ku ji bo guhartina beşekê bi butona "Æbiguherîne" bêyî barkirina hemû rûpelê tê bikaranîn." bitikîne
// Supports TabbedLanguages gadget
// Dependencies: mediawiki.util, mediawiki.Uri, mediawiki.user, mediawiki.api
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, sub:true, esversion:5, esnext:false */
/* global mw, $ */
(function ajaxEditIife() {
window.AjaxEdit = {};
window.AjaxEdit.scriptLink = "";
if (mw.config.get("wgSiteName") !== "Wîkîferheng")
window.AjaxEdit.scriptLink += "wikt:";
if (mw.config.get("wgContentLanguage") !== "ku")
window.AjaxEdit.scriptLink += "ku:";
window.AjaxEdit.scriptLink += "MediaWiki:Gadget-AjaxEdit.js";
var $document = $(document);
window.AjaxEdit.FireEvents = function () {
// fire page load events like the [quotations ▼] thing
// see https://github.com/wikimedia/mediawiki/blob/master/resources/src/mediawiki.action/mediawiki.action.edit.preview.js
mw.hook("wikipage.content").fire($document);
mw.hook("wikipage.categories").fire($document);
};
var isVector2022 = mw.config.get("skin") === "vector-2022";
window.AjaxEdit.Click = function (ajaxEditAnchor) {
if (ajaxEditAnchor.hasEditBox) {
mw.notify("Ev qutiya guhertinê ya AjaxEdit jixwe vekirî ye.");
return;
} else if (document.getElementById("ajaxedit-wrapper")) {
mw.notify("Li ser vê rûpelê jixwe qutiyeke guhertina AjaxEdit vekirî ye.");
return;
} else {
ajaxEditAnchor.hasEditBox = true;
}
var elements = {};
var _query = new URL($(ajaxEditAnchor)
.parent()
.find("a[href*='action=edit']")
.attr("href"), location.href).searchParams,
title = _query.get("title"),
section = _query.get("section");
section = section.replace("T-", ""); //translcusions...
var hdr = $(ajaxEditAnchor).parent().parent();
var sectionName = hdr.children(":header").first().text();
if (window.tabbedLanguages && !hdr.is(":header")) {
sectionName = window.tabbedLanguages[window.currentLanguageTab];
}
var data = { action: 'raw', title: title, section: section };
$.get(mw.util.wikiScript('index'), data).then(function (wikitext) {
var rowHeight = Math.min(15, 1 + wikitext.split("\n").length);
elements.textarea = $("<textarea/>")
.attr({ rows: rowHeight })
.addClass("mw-editfont-monospace")
.text(wikitext);
elements.textareaSummary = $("<input/>")
.attr({
type: "text",
maxlength: 500,
spellcheck: true,
name: "wpSummary",
})
.keydown(event, function () {
if (event.keyCode == 13) { // on enter
elements.saveButton.click();
}
});
function checkboxAndLabel(id, text) {
var checkbox = $("<input/>")
.attr({
"id": id,
"type": "checkbox",
});
var label = $("<label/>")
.attr("for", id)
.text(text);
return [checkbox, label];
}
var minorEdit = checkboxAndLabel("ajaxedit-minor-edit-checkbox", "Guhertina piçûk");
elements.minorEditCheckbox = minorEdit[0], elements.minorEditLabel = minorEdit[1];
elements.saveButton = $("<button/>")
.text("Tomar bike")
.click(function () {
elements.textarea.attr('disabled', true);
elements.textareaSummary.attr('disabled', true);
window.AjaxEdit.Save(section, sectionName, elements.textarea.val(), title, elements.textareaSummary.val(), elements.minorEditCheckbox.prop("checked"))
.then(function (apiSaveResponse) {
if (apiSaveResponse.error) return; //if abusefilter was triggered
new mw.Api().get({ page: mw.config.get("wgPageName"), action: "parse", prop: "text|categorieshtml" })
.then(function (newHtml) {
$("#ajaxedit-wrapper").remove();
$("#mw-content-text").html(newHtml.parse.text["*"]);
$("#catlinks").replaceWith(newHtml.parse.categorieshtml["*"]);
window.AjaxEdit.FireEvents();
mw.loader.moduleRegistry["site"].state = "registered";
//mw.loader.moduleRegistry["site"].version="generate-unique-guid-here";
mw.loader.moduleRegistry["site"].script = undefined;
mw.loader.using("site", function () { });
window.AjaxEdit.Submain();
});
});
})
.css("margin-left", "3px");
elements.cancelButton = $('<button/>')
.text("Betal bike")
.click(function () {
$("#ajaxedit-wrapper").remove();
ajaxEditAnchor.hasEditBox = false;
});
elements.previewDiv = $("<div/>")
.css({
"border-style": "solid", "border-width": "1px 1px 1px 4px",
"border-radius": "0.33em", "border-color": "#a3d3ff",
})
.hide();
function timestamp() {
return new Date().toISOString();
}
var previousText;
var previousTextTimestamp = timestamp();
function loadPreview() {
var newText = elements.textarea.val();
var textTimestamp = timestamp();
if (!previousText || previousText != newText) {
new mw.Api()
.parse(
newText,
{ title: mw.config.get("wgPageName"), pst: "true", preview: "true", sectionpreview: "true", disableeditsection: "true" }
)
.done(function (html) {
if (textTimestamp > previousTextTimestamp) {
elements.previewDiv.html(html);
window.AjaxEdit.FireEvents();
previousTextTimestamp = textTimestamp;
}
});
}
previousText = newText;
}
var livePreview = checkboxAndLabel("ajaxedit-live-preview-checkbox", "Pêşdîtina zindî");
elements.livePreviewCheckbox = livePreview[0], elements.livePreviewLabel = livePreview[1];
elements.livePreviewCheckbox.on("change", function () {
if ($(this).prop("checked")) {
elements.previewDiv.show("slow");
loadPreview();
this.previewIntervalId = setInterval(loadPreview, 500);
} else {
clearInterval(this.previewIntervalId);
elements.previewDiv.hide("fast");
elements.previewDiv.empty();
}
});
var wrapper = $("<div/>")
.attr("id", "ajaxedit-wrapper")
.css({ width: "auto", "margin": 0, "overflow": "hidden" })
.append(elements.textarea)
.append(elements.textareaSummary)
.append(elements.saveButton)
.append(elements.livePreviewCheckbox)
.append(elements.livePreviewLabel)
.append(elements.minorEditCheckbox)
.append(elements.minorEditLabel)
.append(elements.cancelButton)
.append(elements.previewDiv);
//tabbed languages support
if ($(ajaxEditAnchor).is("#tabstable .editlangsection a")) {
$(".languageContainer:not(:hidden)")
.first()
.prepend(wrapper);
} else {
hdr.after(wrapper);
}
});
};
/*
* Define edit summary template with window.AjaxEditSummary. For instance:
window.AjaxEditSummary = "Æ $sectionlink $summary";
*/
window.AjaxEdit.Save = function (sectionID, sectionName, sectionText, title, summary, minorEdit) {
var finalSummary;
if (typeof window.AjaxEditSummary === "string") {
var usedSummary = false;
finalSummary = window.AjaxEditSummary.replace(
/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,
function (fullMatch, name) {
switch (name) {
case "summary": {
usedSummary = true;
return summary;
}
case "scriptlink": return window.AjaxEdit.scriptLink;
case "sectionname": return sectionText;
case "sectionlink": return "/* " + sectionName + " */";
default: {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) guhêrbareke nenas dihewîne. Navê guhêrbarê: "
+ name + ". Ji van hilbijêre: summary, scriptlink, sectionname, sectionlink."
);
return "";
}
}
});
if (!usedSummary) {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) kurteya te ya guhertinê bi kar naîne, ji ber vê yekê kurteya te dê li dawiya şablonê were zêdekirin: "
+ window.AjaxEditSummary);
finalSummary += " " + summary;
}
} else {
finalSummary = "/* " + sectionName + " */ " + summary + " (bi [[" + window.AjaxEdit.scriptLink + "|AjaxEdit]]ê re)";
}
var data = {
format: 'json',
action: 'edit',
title: title,
section: sectionID,
summary: finalSummary,
text: sectionText,
token: mw.user.tokens.get('csrfToken'),
minor: minorEdit,
};
return new mw.Api().post(data).then(function (response) {
if (response && response.edit && response.edit.result == 'Success') {
mw.notify("serketî");
} else if (response && response.error) {
mw.notify('Xeletî: API koda xeletiyê ya "' + response.error.code + '" şand: ' + response.error.info);
}
return response;
}).fail(function (xhr) {
mw.notify('Xeletî: Daxwaz pêk neanî.');
$('#ajaxedit-wrapper *').attr('disabled', false);
});
};
window.AjaxEdit.Submain = function () {
$(".mw-body-content .mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
window.AjaxEdit.Main = function () {
$(".mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
if (mw.config.get('wgAction') == "view")
$(window.AjaxEdit.Main);
})();
// </nowiki>
e8we173yxohtiko5nl82qbsgyy0cc29
6329709
6329708
2026-08-12T20:20:26Z
Wikihez
7344
6329709
javascript
text/javascript
// AjaxEdit
// <nowiki>
"use strict";
// Çavkanî: [[en:MediaWiki:Gadget-AjaxEdit.js]]
// Description : With a new button "Æbiguherîne" one can edit specific sections without reloading the whole page, with an edit summary field and minor edit option.
// Ji bo aktîvkirina vê amûrê here [[Special:Preferences#mw-prefsection-gadgets|beşa Amûr ya Tercîhên mîn]] û li qutiya li gel "Amûrek e ku ji bo guhartina beşekê bi butona "Æbiguherîne" bêyî barkirina hemû rûpelê tê bikaranîn." bitikîne
// Supports TabbedLanguages gadget
// Dependencies: mediawiki.util, mediawiki.Uri, mediawiki.user, mediawiki.api
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, sub:true, esversion:5, esnext:false */
/* global mw, $ */
(function ajaxEditIife() {
window.AjaxEdit = {};
window.AjaxEdit.scriptLink = "";
if (mw.config.get("wgSiteName") !== "Wîkîferheng")
window.AjaxEdit.scriptLink += "wikt:";
if (mw.config.get("wgContentLanguage") !== "ku")
window.AjaxEdit.scriptLink += "ku:";
window.AjaxEdit.scriptLink += "MediaWiki:Gadget-AjaxEdit.js";
var $document = $(document);
window.AjaxEdit.FireEvents = function () {
// fire page load events like the [quotations ▼] thing
// see https://github.com/wikimedia/mediawiki/blob/master/resources/src/mediawiki.action/mediawiki.action.edit.preview.js
mw.hook("wikipage.content").fire($document);
mw.hook("wikipage.categories").fire($document);
};
var isVector2022 = mw.config.get("skin") === "vector-2022";
window.AjaxEdit.Click = function (ajaxEditAnchor) {
if (ajaxEditAnchor.hasEditBox) {
mw.notify("Ev qutiya guhertinê ya AjaxEdit jixwe vekirî ye.");
return;
} else if (document.getElementById("ajaxedit-wrapper")) {
mw.notify("Li ser vê rûpelê jixwe qutiyeke guhertina AjaxEdit vekirî ye.");
return;
} else {
ajaxEditAnchor.hasEditBox = true;
}
var elements = {};
var _query = new URL($(ajaxEditAnchor)
.parent()
.find("a[href*='action=edit']")
.attr("href"), location.href).searchParams,
title = _query.get("title"),
section = _query.get("section");
section = section.replace("T-", ""); //translcusions...
var hdr = $(ajaxEditAnchor).parent().parent();
var sectionName = hdr.children(":header").first().text();
if (window.tabbedLanguages && !hdr.is(":header")) {
sectionName = window.tabbedLanguages[window.currentLanguageTab];
}
var data = { action: 'raw', title: title, section: section };
$.get(mw.util.wikiScript('index'), data).then(function (wikitext) {
var rowHeight = Math.min(15, 1 + wikitext.split("\n").length);
elements.textarea = $("<textarea/>")
.attr({ rows: rowHeight })
.addClass("mw-editfont-monospace")
.text(wikitext);
elements.textareaSummary = $("<input/>")
.attr({
type: "text",
maxlength: 500,
spellcheck: true,
name: "wpSummary",
})
.keydown(event, function () {
if (event.keyCode == 13) { // on enter
elements.saveButton.click();
}
});
function checkboxAndLabel(id, text) {
var checkbox = $("<input/>")
.attr({
"id": id,
"type": "checkbox",
});
var label = $("<label/>")
.attr("for", id)
.text(text);
return [checkbox, label];
}
var minorEdit = checkboxAndLabel("ajaxedit-minor-edit-checkbox", "Guhertina piçûk");
elements.minorEditCheckbox = minorEdit[0], elements.minorEditLabel = minorEdit[1];
elements.saveButton = $("<button/>")
.text("Tomar bike")
.click(function () {
elements.textarea.attr('disabled', true);
elements.textareaSummary.attr('disabled', true);
window.AjaxEdit.Save(section, sectionName, elements.textarea.val(), title, elements.textareaSummary.val(), elements.minorEditCheckbox.prop("checked"))
.then(function (apiSaveResponse) {
if (apiSaveResponse.error) return; //if abusefilter was triggered
new mw.Api().get({ page: mw.config.get("wgPageName"), action: "parse", prop: "text|categorieshtml" })
.then(function (newHtml) {
$("#ajaxedit-wrapper").remove();
$("#mw-content-text").html(newHtml.parse.text["*"]);
$("#catlinks").replaceWith(newHtml.parse.categorieshtml["*"]);
window.AjaxEdit.FireEvents();
mw.loader.moduleRegistry["site"].state = "registered";
//mw.loader.moduleRegistry["site"].version="generate-unique-guid-here";
mw.loader.moduleRegistry["site"].script = undefined;
mw.loader.using("site", function () { });
window.AjaxEdit.Submain();
});
});
})
.css("margin-left", "3px");
elements.cancelButton = $('<button/>')
.text("Betal bike")
.click(function () {
$("#ajaxedit-wrapper").remove();
ajaxEditAnchor.hasEditBox = false;
});
elements.previewDiv = $("<div/>")
.css({
"border-style": "solid", "border-width": "1px 1px 1px 4px",
"border-radius": "0.33em", "border-color": "#a3d3ff",
})
.hide();
function timestamp() {
return new Date().toISOString();
}
var previousText;
var previousTextTimestamp = timestamp();
function loadPreview() {
var newText = elements.textarea.val();
var textTimestamp = timestamp();
if (!previousText || previousText != newText) {
new mw.Api()
.parse(
newText,
{ title: mw.config.get("wgPageName"), pst: "true", preview: "true", sectionpreview: "true", disableeditsection: "true" }
)
.done(function (html) {
if (textTimestamp > previousTextTimestamp) {
elements.previewDiv.html(html);
window.AjaxEdit.FireEvents();
previousTextTimestamp = textTimestamp;
}
});
}
previousText = newText;
}
var livePreview = checkboxAndLabel("ajaxedit-live-preview-checkbox", "Pêşdîtina zindî");
elements.livePreviewCheckbox = livePreview[0], elements.livePreviewLabel = livePreview[1];
elements.livePreviewCheckbox.on("change", function () {
if ($(this).prop("checked")) {
elements.previewDiv.show("slow");
loadPreview();
this.previewIntervalId = setInterval(loadPreview, 500);
} else {
clearInterval(this.previewIntervalId);
elements.previewDiv.hide("fast");
elements.previewDiv.empty();
}
});
var wrapper = $("<div/>")
.attr("id", "ajaxedit-wrapper")
.css({ width: "auto", "margin": 0, "overflow": "hidden" })
.append(elements.textarea)
.append(elements.textareaSummary)
.append(elements.saveButton)
.append(elements.livePreviewCheckbox)
.append(elements.livePreviewLabel)
.append(elements.minorEditCheckbox)
.append(elements.minorEditLabel)
.append(elements.cancelButton)
.append(elements.previewDiv);
//tabbed languages support
if ($(ajaxEditAnchor).is("#tabstable .editlangsection a")) {
$(".languageContainer:not(:hidden)")
.first()
.prepend(wrapper);
} else {
hdr.after(wrapper);
}
});
};
/*
* Define edit summary template with window.AjaxEditSummary. For instance:
window.AjaxEditSummary = "Æ $sectionlink $summary";
*/
window.AjaxEdit.Save = function (sectionID, sectionName, sectionText, title, summary, minorEdit) {
var finalSummary;
if (typeof window.AjaxEditSummary === "string") {
var usedSummary = false;
finalSummary = window.AjaxEditSummary.replace(
/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,
function (fullMatch, name) {
switch (name) {
case "summary": {
usedSummary = true;
return summary;
}
case "scriptlink": return window.AjaxEdit.scriptLink;
case "sectionname": return sectionText;
case "sectionlink": return "/* " + sectionName + " */";
default: {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) guhêrbareke nenas dihewîne. Navê guhêrbarê: "
+ name + ". Ji van hilbijêre: summary, scriptlink, sectionname, sectionlink."
);
return "";
}
}
});
if (!usedSummary) {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) kurteya te ya guhertinê bi kar naîne, ji ber vê yekê kurteya te dê li dawiya şablonê were zêdekirin: "
+ window.AjaxEditSummary);
finalSummary += " " + summary;
}
} else {
finalSummary = "/* " + sectionName + " */ " + summary + " (bi [[" + window.AjaxEdit.scriptLink + "|AjaxEdit]]ê re)";
}
var data = {
format: 'json',
action: 'edit',
title: title,
section: sectionID,
summary: finalSummary,
text: sectionText,
token: mw.user.tokens.get('csrfToken'),
minor: minorEdit,
};
return new mw.Api().post(data).then(function (response) {
if (response && response.edit && response.edit.result == 'Success') {
mw.notify("serketî");
} else if (response && response.error) {
mw.notify('Xeletî: API koda xeletiyê ya "' + response.error.code + '" şand: ' + response.error.info);
}
return response;
}).fail(function (xhr) {
mw.notify('Xeletî: Daxwaz pêk neanî.');
$('#ajaxedit-wrapper *').attr('disabled', false);
});
};
window.AjaxEdit.Submain = function () {
$(".mw-body-content .mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
window.AjaxEdit.Main = function () {
$(".mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
if (mw.config.get('wgAction') == "view")
$(window.AjaxEdit.Main);
})();
// </nowiki>
tn6qcpdnd49qmvlcl7rn06tkgds3f2j
6329710
6329709
2026-08-12T20:20:41Z
Wikihez
7344
6329710
javascript
text/javascript
// AjaxEdit
// <nowiki>
"use strict";
// Çavkanî: [[en:MediaWiki:Gadget-AjaxEdit.js]]
// Description : With a new button "Æbiguherîne" one can edit specific sections without reloading the whole page, with an edit summary field and minor edit option.
// Ji bo aktîvkirina vê amûrê here [[Special:Preferences#mw-prefsection-gadgets|beşa Amûr ya Tercîhên mîn]] û li qutiya li gel "Amûrek e ku ji bo guhartina beşekê bi butona "Æbiguherîne" bêyî barkirina hemû rûpelê tê bikaranîn." bitikîne
// Supports TabbedLanguages gadget
// Dependencies: mediawiki.util, mediawiki.Uri, mediawiki.user, mediawiki.api
/* jshint maxerr:1048576, strict:true, undef:true, latedef:true, sub:true, esversion:5, esnext:false */
/* global mw, $ */
(function ajaxEditIife() {
window.AjaxEdit = {};
window.AjaxEdit.scriptLink = "";
if (mw.config.get("wgSiteName") !== "Wîkîferheng")
window.AjaxEdit.scriptLink += "wikt:";
if (mw.config.get("wgContentLanguage") !== "ku")
window.AjaxEdit.scriptLink += "ku:";
window.AjaxEdit.scriptLink += "MediaWiki:Gadget-AjaxEdit.js";
var $document = $(document);
window.AjaxEdit.FireEvents = function () {
// fire page load events like the [quotations ▼] thing
// see https://github.com/wikimedia/mediawiki/blob/master/resources/src/mediawiki.action/mediawiki.action.edit.preview.js
mw.hook("wikipage.content").fire($document);
mw.hook("wikipage.categories").fire($document);
};
var isVector2022 = mw.config.get("skin") === "vector-2022";
window.AjaxEdit.Click = function (ajaxEditAnchor) {
if (ajaxEditAnchor.hasEditBox) {
mw.notify("Ev qutiya guhertinê ya AjaxEdit jixwe vekirî ye.");
return;
} else if (document.getElementById("ajaxedit-wrapper")) {
mw.notify("Li ser vê rûpelê jixwe qutiyeke guhertina AjaxEdit vekirî ye.");
return;
} else {
ajaxEditAnchor.hasEditBox = true;
}
var elements = {};
var _query = new URL($(ajaxEditAnchor)
.parent()
.find("a[href*='action=edit']")
.attr("href"), location.href).searchParams,
title = _query.get("title"),
section = _query.get("section");
section = section.replace("T-", ""); //translcusions...
var hdr = $(ajaxEditAnchor).parent().parent();
var sectionName = hdr.children(":header").first().text();
if (window.tabbedLanguages && !hdr.is(":header")) {
sectionName = window.tabbedLanguages[window.currentLanguageTab];
}
var data = { action: 'raw', title: title, section: section };
$.get(mw.util.wikiScript('index'), data).then(function (wikitext) {
var rowHeight = Math.min(15, 1 + wikitext.split("\n").length);
elements.textarea = $("<textarea/>")
.attr({ rows: rowHeight })
.addClass("mw-editfont-monospace")
.text(wikitext);
elements.textareaSummary = $("<input/>")
.attr({
type: "text",
maxlength: 500,
spellcheck: true,
name: "wpSummary",
})
.keydown(event, function () {
if (event.keyCode == 13) { // on enter
elements.saveButton.click();
}
});
function checkboxAndLabel(id, text) {
var checkbox = $("<input/>")
.attr({
"id": id,
"type": "checkbox",
});
var label = $("<label/>")
.attr("for", id)
.text(text);
return [checkbox, label];
}
var minorEdit = checkboxAndLabel("ajaxedit-minor-edit-checkbox", "Guhertina piçûk");
elements.minorEditCheckbox = minorEdit[0], elements.minorEditLabel = minorEdit[1];
elements.saveButton = $("<button/>")
.text("Qeyd bike")
.click(function () {
elements.textarea.attr('disabled', true);
elements.textareaSummary.attr('disabled', true);
window.AjaxEdit.Save(section, sectionName, elements.textarea.val(), title, elements.textareaSummary.val(), elements.minorEditCheckbox.prop("checked"))
.then(function (apiSaveResponse) {
if (apiSaveResponse.error) return; //if abusefilter was triggered
new mw.Api().get({ page: mw.config.get("wgPageName"), action: "parse", prop: "text|categorieshtml" })
.then(function (newHtml) {
$("#ajaxedit-wrapper").remove();
$("#mw-content-text").html(newHtml.parse.text["*"]);
$("#catlinks").replaceWith(newHtml.parse.categorieshtml["*"]);
window.AjaxEdit.FireEvents();
mw.loader.moduleRegistry["site"].state = "registered";
//mw.loader.moduleRegistry["site"].version="generate-unique-guid-here";
mw.loader.moduleRegistry["site"].script = undefined;
mw.loader.using("site", function () { });
window.AjaxEdit.Submain();
});
});
})
.css("margin-left", "3px");
elements.cancelButton = $('<button/>')
.text("Betal bike")
.click(function () {
$("#ajaxedit-wrapper").remove();
ajaxEditAnchor.hasEditBox = false;
});
elements.previewDiv = $("<div/>")
.css({
"border-style": "solid", "border-width": "1px 1px 1px 4px",
"border-radius": "0.33em", "border-color": "#a3d3ff",
})
.hide();
function timestamp() {
return new Date().toISOString();
}
var previousText;
var previousTextTimestamp = timestamp();
function loadPreview() {
var newText = elements.textarea.val();
var textTimestamp = timestamp();
if (!previousText || previousText != newText) {
new mw.Api()
.parse(
newText,
{ title: mw.config.get("wgPageName"), pst: "true", preview: "true", sectionpreview: "true", disableeditsection: "true" }
)
.done(function (html) {
if (textTimestamp > previousTextTimestamp) {
elements.previewDiv.html(html);
window.AjaxEdit.FireEvents();
previousTextTimestamp = textTimestamp;
}
});
}
previousText = newText;
}
var livePreview = checkboxAndLabel("ajaxedit-live-preview-checkbox", "Pêşdîtina zindî");
elements.livePreviewCheckbox = livePreview[0], elements.livePreviewLabel = livePreview[1];
elements.livePreviewCheckbox.on("change", function () {
if ($(this).prop("checked")) {
elements.previewDiv.show("slow");
loadPreview();
this.previewIntervalId = setInterval(loadPreview, 500);
} else {
clearInterval(this.previewIntervalId);
elements.previewDiv.hide("fast");
elements.previewDiv.empty();
}
});
var wrapper = $("<div/>")
.attr("id", "ajaxedit-wrapper")
.css({ width: "auto", "margin": 0, "overflow": "hidden" })
.append(elements.textarea)
.append(elements.textareaSummary)
.append(elements.saveButton)
.append(elements.livePreviewCheckbox)
.append(elements.livePreviewLabel)
.append(elements.minorEditCheckbox)
.append(elements.minorEditLabel)
.append(elements.cancelButton)
.append(elements.previewDiv);
//tabbed languages support
if ($(ajaxEditAnchor).is("#tabstable .editlangsection a")) {
$(".languageContainer:not(:hidden)")
.first()
.prepend(wrapper);
} else {
hdr.after(wrapper);
}
});
};
/*
* Define edit summary template with window.AjaxEditSummary. For instance:
window.AjaxEditSummary = "Æ $sectionlink $summary";
*/
window.AjaxEdit.Save = function (sectionID, sectionName, sectionText, title, summary, minorEdit) {
var finalSummary;
if (typeof window.AjaxEditSummary === "string") {
var usedSummary = false;
finalSummary = window.AjaxEditSummary.replace(
/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,
function (fullMatch, name) {
switch (name) {
case "summary": {
usedSummary = true;
return summary;
}
case "scriptlink": return window.AjaxEdit.scriptLink;
case "sectionname": return sectionText;
case "sectionlink": return "/* " + sectionName + " */";
default: {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) guhêrbareke nenas dihewîne. Navê guhêrbarê: "
+ name + ". Ji van hilbijêre: summary, scriptlink, sectionname, sectionlink."
);
return "";
}
}
});
if (!usedSummary) {
mw.notify(
"Şablona te ya kurteya guhertinê (window.AjaxEditSummary) kurteya te ya guhertinê bi kar naîne, ji ber vê yekê kurteya te dê li dawiya şablonê were zêdekirin: "
+ window.AjaxEditSummary);
finalSummary += " " + summary;
}
} else {
finalSummary = "/* " + sectionName + " */ " + summary + " (bi [[" + window.AjaxEdit.scriptLink + "|AjaxEdit]]ê re)";
}
var data = {
format: 'json',
action: 'edit',
title: title,
section: sectionID,
summary: finalSummary,
text: sectionText,
token: mw.user.tokens.get('csrfToken'),
minor: minorEdit,
};
return new mw.Api().post(data).then(function (response) {
if (response && response.edit && response.edit.result == 'Success') {
mw.notify("serketî");
} else if (response && response.error) {
mw.notify('Xeletî: API koda xeletiyê ya "' + response.error.code + '" şand: ' + response.error.info);
}
return response;
}).fail(function (xhr) {
mw.notify('Xeletî: Daxwaz pêk neanî.');
$('#ajaxedit-wrapper *').attr('disabled', false);
});
};
window.AjaxEdit.Submain = function () {
$(".mw-body-content .mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
window.AjaxEdit.Main = function () {
$(".mw-editsection > .mw-editsection-bracket:contains(']')").each(function () {
var btn = $('<a/>').text("Æbiguherîne").on("click", function () { window.AjaxEdit.Click(this) });
$(this).before(!isVector2022 ? ", " : "").before(btn);
});
};
if (mw.config.get('wgAction') == "view")
$(window.AjaxEdit.Main);
})();
// </nowiki>
0ar8xiasqdnc6tlf1oytsoar81ertmg
6329713
6329710
2026-08-12T20:23:46Z
Wikihez
7344
Rûpel hat valakirin
6329713
javascript
text/javascript
phoiac9h4m842xq45sp7s6u21eteeq1
MediaWiki:Gadget-defaultVisibilityToggles.js
8
970315
6329700
6119167
2026-08-12T19:34:26Z
Bikarhêner
3719
6329700
javascript
text/javascript
/* jshint undef: true, esversion: 5 */
/* globals $, jQuery, mw, window, getComputedStyle */
(function defaultVisibilityTogglesIIFE() {
"use strict";
if (window.noDefaultVisibilityToggles) return;
/* == NavBars == */
var NavigationBarHide;
var NavigationBarShow;
var pageLang = mw.config.get("wgPageContentLanguage");
if (pageLang === "ku-arab") {
NavigationBarHide = "▲ ڤەشێرە";
NavigationBarShow = "▼ نیشان بده";
}else{
NavigationBarHide = "veşêre ▲";
NavigationBarShow = "nîşan bide ▼";
}
function capitalize(s) {
if (typeof s !== 'string') return '';
return s.charAt(0).toUpperCase() + s.slice(1);
}
// Check if an element has been activated with a toggle.
// For convenience, this has the side effect of marking the element as having
// a toggle, if it is not already marked.
// Allows the functions to avoid toggleifying elements more than once, which
// can lead to multiple "show" buttons, for instance.
// The argument must be an Element, not a jQuery object.
function checkAndSetToggleified(element) {
if (element.isToggleified) {
return true;
}
element.isToggleified = true;
}
function getToggleCategory(element, defaultCategory) {
if ($(element).find("div").first().is(".translations"))
return "Wergeran";
if ($(element).is("table.inflection-table") || $(element).find("table.inflection-table").length)
return "Tewandinê";
var heading = element;
while ((heading = heading.previousElementSibling)) {
// tagName is always uppercase:
// https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName
var num = heading.tagName.match(/H(\d)/);
if (num)
num = Number(num[1]);
else
continue;
if (4 <= num && num <= 6) {
if (heading.getElementsByTagName("span")[1])
heading = heading.getElementsByTagName("span")[0];
var text = jQuery(heading).text()
.toLowerCase()
// jQuery's .text() is inconsistent about whitespace:
.replace(/^\s+|\s+$/g, "").replace(/\s+/g, " ")
// remove numbers added by the "Auto-number headings" pref:
.replace(/^[1-9][0-9.]+ ?/, "");
// Toggle category must be convertible to a valid CSS identifier so
// that it can be used in an id selector in jQuery in
// ToggleCategory.prototype.newSidebarToggle
// in [[MediaWiki:Gadget-VisibilityToggles.js]].
// Spaces must later be converted to hyphens or underscores.
// Reference: https://drafts.csswg.org/selectors-4/#id-selectors
if (/^[a-zA-Zêî0-9\s_-]+$/.test(text))
return capitalize(text) + "ê";
else
break;
} else if (num)
break;
}
return defaultCategory;
}
function createNavToggle(navFrame) {
if (checkAndSetToggleified(navFrame)) {
return;
}
var navHead, navContent;
for (var i = 0, children = navFrame.childNodes; i < children.length; ++i) {
var child = children[i];
if (child.nodeName === "DIV") {
var classList = child.classList;
if (classList.contains("NavHead"))
navHead = child;
if (classList.contains("NavContent"))
navContent = child;
}
}
if (!(navHead && navContent))
return;
// Step 1, don't react when a subitem is clicked.
$(navHead).find("a").on("click", function (e) {
e.stopPropagation();
e.stopImmediatePropagation();
});
// Step 2, toggle visibility when bar is clicked.
// NOTE This function was chosen due to some funny behaviour in Safari.
var $navToggle = $("<a>").attr("role", "button").attr("tabindex", "0");
$("<span>").addClass("NavToggle").attr("data-nosnippet", "")
.append($navToggle)
.prependTo(navHead);
navHead.style.cursor = "pointer";
var toggleCategory = $(navFrame).data("toggle-category")
|| getToggleCategory(navFrame, "Qutiyên din");
navHead.onclick = window.VisibilityToggles.register(toggleCategory,
function show() {
$navToggle.html(NavigationBarHide);
if (navContent)
navContent.style.display = "block";
},
function hide() {
$navToggle.html(NavigationBarShow);
if (navContent)
navContent.style.display = "none";
});
}
function createNavToggleForInflectionTable(it) {
if (checkAndSetToggleified(it)) {
return;
}
// The table caption is the clickable element
var itCaption = $(it).find("caption").get(0);
// Step 1, don't react when a subitem is clicked.
$(itCaption).find("a").on("click", function (e) {
e.stopPropagation();
e.stopImmediatePropagation();
});
// Step 2, toggle visibility when bar is clicked.
// NOTE This function was chosen due to some funny behaviour in Safari.
var $navToggle = $("<a>").attr("role", "button").attr("tabindex", "0");
$("<span>").addClass("NavToggle").attr("data-nosnippet", "")
.append($navToggle)
.prependTo(itCaption);
itCaption.style.cursor = "pointer";
var toggleCategory = $(it).data("toggle-category")
|| getToggleCategory(it, "Qutiyên din");
itCaption.onclick = window.VisibilityToggles.register(toggleCategory,
function show() {
$navToggle.html(NavigationBarHide);
if (it) {
it.classList.remove("inflection-table-collapsed");
}
},
function hide() {
$navToggle.html(NavigationBarShow);
if (it) {
it.classList.add("inflection-table-collapsed");
}
});
// Check to see if we are on a browser that is known to support
// visibility: collapse, which permits inflection table headings to wrap.
// WebKit needs to be special-cased, as technically it does support
// visibility: collapse, but it just implements it as a synonym for
// visibility: hidden, which is useless. (as of November 2024)
// Yes, I know User-Agent sniffing is so 2004... but WebKit is the new IE
if (
CSS && CSS.supports && CSS.supports("visibility:collapse") &&
// exclude WebKit/Safari, excepting Blink engines which have a frozen WebKit version number
(navigator.userAgent.indexOf("AppleWebKit/") === -1 || navigator.userAgent.indexOf("AppleWebKit/537.36") > -1)
) {
it.classList.remove("no-vc");
} else {
// Strange behaviour occurs when you set the table caption to nowrap
// The [show/hide] toggle crashes into the caption text
// This spacer element prevents that
$("<span>").addClass("no-vc-spacer").appendTo(itCaption);
}
}
/* ==Hidden Quotes== */
function setupHiddenQuotes(li) {
if (checkAndSetToggleified(li)) {
return;
}
var HQToggle, liComp, dl;
var HQShow;
var HQHide;
if (pageLang === "ku-arab") {
HQShow = '▼ ژێگرتن';
HQHide = '▲ ژێگرتن';
} else {
HQShow = 'jêgirtin ▼';
HQHide = 'jêgirtin ▲';
}
function show() {
HQToggle.html(HQHide);
$(li).children("ul").show();
}
function hide() {
HQToggle.html(HQShow);
$(li).children("ul").hide();
}
for (var k = 0; k < li.childNodes.length; k++) {
// Look at each component of the definition.
liComp = li.childNodes[k];
if (liComp.nodeName.toLowerCase() === "dl" && !dl) {
dl = liComp;
}
// If we find a ul or dl, we have quotes or example sentences, and thus need a button.
if (/^(ul|UL)$/.test(liComp.nodeName)) {
HQToggle = $("<a>").attr("role", "button").attr("tabindex", "0");
$(dl || liComp).before($("<span>").addClass("HQToggle").attr("data-nosnippet", "").append(HQToggle).css("margin-left", "5px"));
HQToggle.on("click", window.VisibilityToggles.register("Jêgirtinan", show, hide));
break;
}
}
}
/* == View Switching == */
function viewSwitching(rootElement) {
if (checkAndSetToggleified(rootElement)) {
return;
}
var $rootElement = $(rootElement);
var showButtonText;
var hideButtonText;
if (pageLang === "ku-arab") {
showButtonText = $rootElement.data("vs-showtext") || "▼ زێدهتر";
hideButtonText = $rootElement.data("vs-hidetext") || "▲ کێمتر";
}else{
showButtonText = $rootElement.data("vs-showtext") || "zêdetir ▼";
hideButtonText = $rootElement.data("vs-hidetext") || "kêmtir ▲";
}
var toSkip = $rootElement.find(".vsSwitcher").find("*");
var elemsToHide = $rootElement.find(".vsHide").not(toSkip);
var elemsToShow = $rootElement.find(".vsShow").not(toSkip);
// Find the element to place the toggle button in.
var toggleElement = $rootElement.find(".vsToggleElement").not(toSkip).first();
// The toggleElement becomes clickable in its entirety, but
// we need to prevent this if a contained link is clicked instead.
toggleElement.find("a").on("click", function (e) {
e.stopPropagation();
e.stopImmediatePropagation();
});
// Add the toggle button.
var toggleButton = $("<a>").attr("role", "button").attr("tabindex", "0");
$("<span>").addClass("NavToggle").attr("data-nosnippet", "").append(toggleButton).prependTo(toggleElement);
// Determine the visibility toggle category (for the links in the bar on the left).
var toggleCategory = $rootElement.data("toggle-category");
if (!toggleCategory) {
var classNames = $rootElement.attr("class").split(/\s+/);
for (var i = 0; i < classNames.length; ++i) {
var className = classNames[i].split("-");
if (className[0] == "vsToggleCategory") {
toggleCategory = className[1];
}
}
}
if (!toggleCategory)
toggleCategory = "others";
// Register the visibility toggle.
toggleElement.css("cursor", "pointer");
toggleElement.on("click", window.VisibilityToggles.register(toggleCategory,
function show() {
toggleButton.html(hideButtonText);
elemsToShow.hide();
elemsToHide.show();
},
function hide() {
toggleButton.html(showButtonText);
elemsToShow.show();
elemsToHide.hide();
}));
}
/* ==List switching== */
function enableListSwitchGeneric(rootElement) {
if (checkAndSetToggleified(rootElement)) {
return;
}
var $rootElement = $(rootElement);
// Create a toggle button.
var $toggleElement = $("<div>").addClass("list-switcher-element");
var $navToggle = $("<span>").addClass("NavToggle").attr("data-nosnippet", "");
var $toggleButton = $("<a>").attr("role", "button").attr("tabindex", "0");
// Add the toggle button to the DOM tree.
$navToggle.append($toggleButton).prependTo($toggleElement);
$toggleElement.insertBefore($rootElement);
$toggleElement.show();
// Determine the visibility toggle category (for the links in the bar on the
// left). It will either be the value of the "data-toggle-category"
// attribute or will be based on the text of the closest preceding
// fourth-to-sixth-level header.
var toggleCategory = $rootElement.data("toggle-category")
|| getToggleCategory($rootElement[0], "Lîsteyên din");
// Determine the text for the $toggleButton.
var showButtonText = "zêdetir ▼";
var hideButtonText = "kêmtir ▲";
var numLiElements = $rootElement.find("li").length;
if (numLiElements) {
showButtonText = "Her " + numLiElements + "an nîşan bide ▼";
hideButtonText = "kêmtir bibîne ▲";
}
// Register the visibility toggle.
$toggleElement.on("click", window.VisibilityToggles.register(toggleCategory,
function show() {
$toggleButton.html(hideButtonText);
if (rootElement) {
rootElement.classList.remove("list-switcher-collapsed");
}
},
function hide() {
$toggleButton.html(showButtonText);
if (rootElement) {
rootElement.classList.add("list-switcher-collapsed");
}
}));
// Register a resize observer to see if we need to keep the
// show/hide toggle visible
var termList = rootElement.querySelector(':scope > .term-list');
if (termList && window.ResizeObserver) {
var resizeObserver = new ResizeObserver(function(entries) {
if (entries[0] && entries[0].contentBoxSize[0]) {
// Work out what the max-height would be, in pixels
// As a hack, this value is stored in the CSS `bottom`
// property, as `max-height` is only in place when
// the list is collapsed, but we need to do this check
// even when the list is not collapsed
var maxHeightPx = parseFloat(getComputedStyle(rootElement).bottom);
// If box height is less than its max height + 20 px, suppress
// collapsibility. The 20 px buffer prevents the situation where
// clicking "show more" expands the box by just a few pixels
if (entries[0].contentBoxSize[0].blockSize <= maxHeightPx + 20) {
$toggleElement.hide();
if (rootElement.classList.contains("list-switcher-collapsed")) {
rootElement.classList.remove("list-switcher-collapsed");
rootElement.classList.add("list-switcher-collapsibility-suppressed");
}
} else {
$toggleElement.show();
if (rootElement.classList.contains("list-switcher-collapsibility-suppressed")) {
rootElement.classList.remove("list-switcher-collapsibility-suppressed");
rootElement.classList.add("list-switcher-collapsed");
}
}
}
});
resizeObserver.observe(termList);
}
}
window.createNavToggle = createNavToggle;
window.setupHiddenQuotes = setupHiddenQuotes;
window.viewSwitching = viewSwitching;
window.getToggleCategory = getToggleCategory;
/* == Apply four functions defined above == */
mw.hook("wikipage.content").add(function($content) {
// NavToggles
$(".NavFrame", $content).each(function(){
createNavToggle(this);
});
$(".inflection-table-collapsible", $content).each(function(){
createNavToggleForInflectionTable(this);
});
// order nyms -> usexes -> quotes, to match the conventional order in entries
// usage examples and collocations
var namespaceNumber = mw.config.get("wgNamespaceNumber");
// quotes
if (namespaceNumber === 0 || namespaceNumber === 100 || namespaceNumber === 108) {
// First, find all the ordered lists, i.e. all the series of definitions.
$("ol > li", $content).each(function(){
setupHiddenQuotes(this);
});
}
//view switching
$(".vsSwitcher", $content).each(function(){
viewSwitching(this);
});
// list switching
$(".list-switcher", $content).each(function () {
enableListSwitchGeneric(this);
});
});
jQuery(mw).on("LivePreviewDone", function (ev, sels) {
var ols = jQuery(sels.join(",")).find("ol");
for (var i = 0; i < ols.length; i++) {
for (var j = 0; j < ols[i].childNodes.length; j++) {
var li = ols[i].childNodes[j];
if (li.nodeName.toUpperCase() == "LI") {
setupHiddenQuotes(li);
}
}
}
});
})();
mxm391h3x2jozj8ppthk0kc8kmcmi19
6329702
6329700
2026-08-12T19:36:54Z
Bikarhêner
3719
6329702
javascript
text/javascript
/* jshint undef: true, esversion: 5 */
/* globals $, jQuery, mw, window, getComputedStyle */
(function defaultVisibilityTogglesIIFE() {
"use strict";
if (window.noDefaultVisibilityToggles) return;
/* == NavBars == */
var NavigationBarHide;
var NavigationBarShow;
var pageLang = mw.config.get("wgPageContentLanguage");
if (pageLang === "ku-arab") {
NavigationBarHide = "▲ ڤەشێرە";
NavigationBarShow = "▼ نیشان بده";
}else{
NavigationBarHide = "veşêre ▲";
NavigationBarShow = "nîşan bide ▼";
}
function capitalize(s) {
if (typeof s !== 'string') return '';
return s.charAt(0).toUpperCase() + s.slice(1);
}
// Check if an element has been activated with a toggle.
// For convenience, this has the side effect of marking the element as having
// a toggle, if it is not already marked.
// Allows the functions to avoid toggleifying elements more than once, which
// can lead to multiple "show" buttons, for instance.
// The argument must be an Element, not a jQuery object.
function checkAndSetToggleified(element) {
if (element.isToggleified) {
return true;
}
element.isToggleified = true;
}
function getToggleCategory(element, defaultCategory) {
if ($(element).find("div.translations").length)
return "Wergeran";
if ($(element).is("table.inflection-table") || $(element).find("table.inflection-table").length)
return "Tewandinê";
var heading = element;
while ((heading = heading.previousElementSibling)) {
// tagName is always uppercase:
// https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName
var num = heading.tagName.match(/H(\d)/);
if (num)
num = Number(num[1]);
else
continue;
if (4 <= num && num <= 6) {
if (heading.getElementsByTagName("span")[1])
heading = heading.getElementsByTagName("span")[0];
var text = jQuery(heading).text()
.toLowerCase()
// jQuery's .text() is inconsistent about whitespace:
.replace(/^\s+|\s+$/g, "").replace(/\s+/g, " ")
// remove numbers added by the "Auto-number headings" pref:
.replace(/^[1-9][0-9.]+ ?/, "");
// Toggle category must be convertible to a valid CSS identifier so
// that it can be used in an id selector in jQuery in
// ToggleCategory.prototype.newSidebarToggle
// in [[MediaWiki:Gadget-VisibilityToggles.js]].
// Spaces must later be converted to hyphens or underscores.
// Reference: https://drafts.csswg.org/selectors-4/#id-selectors
if (/^[a-zA-Zêî0-9\s_-]+$/.test(text))
return capitalize(text) + "ê";
else
break;
} else if (num)
break;
}
return defaultCategory;
}
function createNavToggle(navFrame) {
if (checkAndSetToggleified(navFrame)) {
return;
}
var navHead, navContent;
for (var i = 0, children = navFrame.childNodes; i < children.length; ++i) {
var child = children[i];
if (child.nodeName === "DIV") {
var classList = child.classList;
if (classList.contains("NavHead"))
navHead = child;
if (classList.contains("NavContent"))
navContent = child;
}
}
if (!(navHead && navContent))
return;
// Step 1, don't react when a subitem is clicked.
$(navHead).find("a").on("click", function (e) {
e.stopPropagation();
e.stopImmediatePropagation();
});
// Step 2, toggle visibility when bar is clicked.
// NOTE This function was chosen due to some funny behaviour in Safari.
var $navToggle = $("<a>").attr("role", "button").attr("tabindex", "0");
$("<span>").addClass("NavToggle").attr("data-nosnippet", "")
.append($navToggle)
.prependTo(navHead);
navHead.style.cursor = "pointer";
var toggleCategory = $(navFrame).data("toggle-category")
|| getToggleCategory(navFrame, "Qutiyên din");
navHead.onclick = window.VisibilityToggles.register(toggleCategory,
function show() {
$navToggle.html(NavigationBarHide);
if (navContent)
navContent.style.display = "block";
},
function hide() {
$navToggle.html(NavigationBarShow);
if (navContent)
navContent.style.display = "none";
});
}
function createNavToggleForInflectionTable(it) {
if (checkAndSetToggleified(it)) {
return;
}
// The table caption is the clickable element
var itCaption = $(it).find("caption").get(0);
// Step 1, don't react when a subitem is clicked.
$(itCaption).find("a").on("click", function (e) {
e.stopPropagation();
e.stopImmediatePropagation();
});
// Step 2, toggle visibility when bar is clicked.
// NOTE This function was chosen due to some funny behaviour in Safari.
var $navToggle = $("<a>").attr("role", "button").attr("tabindex", "0");
$("<span>").addClass("NavToggle").attr("data-nosnippet", "")
.append($navToggle)
.prependTo(itCaption);
itCaption.style.cursor = "pointer";
var toggleCategory = $(it).data("toggle-category")
|| getToggleCategory(it, "Qutiyên din");
itCaption.onclick = window.VisibilityToggles.register(toggleCategory,
function show() {
$navToggle.html(NavigationBarHide);
if (it) {
it.classList.remove("inflection-table-collapsed");
}
},
function hide() {
$navToggle.html(NavigationBarShow);
if (it) {
it.classList.add("inflection-table-collapsed");
}
});
// Check to see if we are on a browser that is known to support
// visibility: collapse, which permits inflection table headings to wrap.
// WebKit needs to be special-cased, as technically it does support
// visibility: collapse, but it just implements it as a synonym for
// visibility: hidden, which is useless. (as of November 2024)
// Yes, I know User-Agent sniffing is so 2004... but WebKit is the new IE
if (
CSS && CSS.supports && CSS.supports("visibility:collapse") &&
// exclude WebKit/Safari, excepting Blink engines which have a frozen WebKit version number
(navigator.userAgent.indexOf("AppleWebKit/") === -1 || navigator.userAgent.indexOf("AppleWebKit/537.36") > -1)
) {
it.classList.remove("no-vc");
} else {
// Strange behaviour occurs when you set the table caption to nowrap
// The [show/hide] toggle crashes into the caption text
// This spacer element prevents that
$("<span>").addClass("no-vc-spacer").appendTo(itCaption);
}
}
/* ==Hidden Quotes== */
function setupHiddenQuotes(li) {
if (checkAndSetToggleified(li)) {
return;
}
var HQToggle, liComp, dl;
var HQShow;
var HQHide;
if (pageLang === "ku-arab") {
HQShow = '▼ ژێگرتن';
HQHide = '▲ ژێگرتن';
} else {
HQShow = 'jêgirtin ▼';
HQHide = 'jêgirtin ▲';
}
function show() {
HQToggle.html(HQHide);
$(li).children("ul").show();
}
function hide() {
HQToggle.html(HQShow);
$(li).children("ul").hide();
}
for (var k = 0; k < li.childNodes.length; k++) {
// Look at each component of the definition.
liComp = li.childNodes[k];
if (liComp.nodeName.toLowerCase() === "dl" && !dl) {
dl = liComp;
}
// If we find a ul or dl, we have quotes or example sentences, and thus need a button.
if (/^(ul|UL)$/.test(liComp.nodeName)) {
HQToggle = $("<a>").attr("role", "button").attr("tabindex", "0");
$(dl || liComp).before($("<span>").addClass("HQToggle").attr("data-nosnippet", "").append(HQToggle).css("margin-left", "5px"));
HQToggle.on("click", window.VisibilityToggles.register("Jêgirtinan", show, hide));
break;
}
}
}
/* == View Switching == */
function viewSwitching(rootElement) {
if (checkAndSetToggleified(rootElement)) {
return;
}
var $rootElement = $(rootElement);
var showButtonText;
var hideButtonText;
if (pageLang === "ku-arab") {
showButtonText = $rootElement.data("vs-showtext") || "▼ زێدهتر";
hideButtonText = $rootElement.data("vs-hidetext") || "▲ کێمتر";
}else{
showButtonText = $rootElement.data("vs-showtext") || "zêdetir ▼";
hideButtonText = $rootElement.data("vs-hidetext") || "kêmtir ▲";
}
var toSkip = $rootElement.find(".vsSwitcher").find("*");
var elemsToHide = $rootElement.find(".vsHide").not(toSkip);
var elemsToShow = $rootElement.find(".vsShow").not(toSkip);
// Find the element to place the toggle button in.
var toggleElement = $rootElement.find(".vsToggleElement").not(toSkip).first();
// The toggleElement becomes clickable in its entirety, but
// we need to prevent this if a contained link is clicked instead.
toggleElement.find("a").on("click", function (e) {
e.stopPropagation();
e.stopImmediatePropagation();
});
// Add the toggle button.
var toggleButton = $("<a>").attr("role", "button").attr("tabindex", "0");
$("<span>").addClass("NavToggle").attr("data-nosnippet", "").append(toggleButton).prependTo(toggleElement);
// Determine the visibility toggle category (for the links in the bar on the left).
var toggleCategory = $rootElement.data("toggle-category");
if (!toggleCategory) {
var classNames = $rootElement.attr("class").split(/\s+/);
for (var i = 0; i < classNames.length; ++i) {
var className = classNames[i].split("-");
if (className[0] == "vsToggleCategory") {
toggleCategory = className[1];
}
}
}
if (!toggleCategory)
toggleCategory = "others";
// Register the visibility toggle.
toggleElement.css("cursor", "pointer");
toggleElement.on("click", window.VisibilityToggles.register(toggleCategory,
function show() {
toggleButton.html(hideButtonText);
elemsToShow.hide();
elemsToHide.show();
},
function hide() {
toggleButton.html(showButtonText);
elemsToShow.show();
elemsToHide.hide();
}));
}
/* ==List switching== */
function enableListSwitchGeneric(rootElement) {
if (checkAndSetToggleified(rootElement)) {
return;
}
var $rootElement = $(rootElement);
// Create a toggle button.
var $toggleElement = $("<div>").addClass("list-switcher-element");
var $navToggle = $("<span>").addClass("NavToggle").attr("data-nosnippet", "");
var $toggleButton = $("<a>").attr("role", "button").attr("tabindex", "0");
// Add the toggle button to the DOM tree.
$navToggle.append($toggleButton).prependTo($toggleElement);
$toggleElement.insertBefore($rootElement);
$toggleElement.show();
// Determine the visibility toggle category (for the links in the bar on the
// left). It will either be the value of the "data-toggle-category"
// attribute or will be based on the text of the closest preceding
// fourth-to-sixth-level header.
var toggleCategory = $rootElement.data("toggle-category")
|| getToggleCategory($rootElement[0], "Lîsteyên din");
// Determine the text for the $toggleButton.
var showButtonText = "zêdetir ▼";
var hideButtonText = "kêmtir ▲";
var numLiElements = $rootElement.find("li").length;
if (numLiElements) {
showButtonText = "Her " + numLiElements + "an nîşan bide ▼";
hideButtonText = "kêmtir bibîne ▲";
}
// Register the visibility toggle.
$toggleElement.on("click", window.VisibilityToggles.register(toggleCategory,
function show() {
$toggleButton.html(hideButtonText);
if (rootElement) {
rootElement.classList.remove("list-switcher-collapsed");
}
},
function hide() {
$toggleButton.html(showButtonText);
if (rootElement) {
rootElement.classList.add("list-switcher-collapsed");
}
}));
// Register a resize observer to see if we need to keep the
// show/hide toggle visible
var termList = rootElement.querySelector(':scope > .term-list');
if (termList && window.ResizeObserver) {
var resizeObserver = new ResizeObserver(function(entries) {
if (entries[0] && entries[0].contentBoxSize[0]) {
// Work out what the max-height would be, in pixels
// As a hack, this value is stored in the CSS `bottom`
// property, as `max-height` is only in place when
// the list is collapsed, but we need to do this check
// even when the list is not collapsed
var maxHeightPx = parseFloat(getComputedStyle(rootElement).bottom);
// If box height is less than its max height + 20 px, suppress
// collapsibility. The 20 px buffer prevents the situation where
// clicking "show more" expands the box by just a few pixels
if (entries[0].contentBoxSize[0].blockSize <= maxHeightPx + 20) {
$toggleElement.hide();
if (rootElement.classList.contains("list-switcher-collapsed")) {
rootElement.classList.remove("list-switcher-collapsed");
rootElement.classList.add("list-switcher-collapsibility-suppressed");
}
} else {
$toggleElement.show();
if (rootElement.classList.contains("list-switcher-collapsibility-suppressed")) {
rootElement.classList.remove("list-switcher-collapsibility-suppressed");
rootElement.classList.add("list-switcher-collapsed");
}
}
}
});
resizeObserver.observe(termList);
}
}
window.createNavToggle = createNavToggle;
window.setupHiddenQuotes = setupHiddenQuotes;
window.viewSwitching = viewSwitching;
window.getToggleCategory = getToggleCategory;
/* == Apply four functions defined above == */
mw.hook("wikipage.content").add(function($content) {
// NavToggles
$(".NavFrame", $content).each(function(){
createNavToggle(this);
});
$(".inflection-table-collapsible", $content).each(function(){
createNavToggleForInflectionTable(this);
});
// order nyms -> usexes -> quotes, to match the conventional order in entries
// usage examples and collocations
var namespaceNumber = mw.config.get("wgNamespaceNumber");
// quotes
if (namespaceNumber === 0 || namespaceNumber === 100 || namespaceNumber === 108) {
// First, find all the ordered lists, i.e. all the series of definitions.
$("ol > li", $content).each(function(){
setupHiddenQuotes(this);
});
}
//view switching
$(".vsSwitcher", $content).each(function(){
viewSwitching(this);
});
// list switching
$(".list-switcher", $content).each(function () {
enableListSwitchGeneric(this);
});
});
jQuery(mw).on("LivePreviewDone", function (ev, sels) {
var ols = jQuery(sels.join(",")).find("ol");
for (var i = 0; i < ols.length; i++) {
for (var j = 0; j < ols[i].childNodes.length; j++) {
var li = ols[i].childNodes[j];
if (li.nodeName.toUpperCase() == "LI") {
setupHiddenQuotes(li);
}
}
}
});
})();
doxyo941obbxikmkkxm91qeizoj73be
Modul:usex
828
971965
6329620
6329431
2026-08-12T13:43:08Z
Wikihez
7344
6329620
Scribunto
text/plain
local export = {}
local debug_track_module = "Module:debug/track"
local links_module = "Module:links"
local scripts_module = "Module:scripts"
local script_utilities_module = "Module:script utilities"
local string_utilities_module = "Module:string utilities"
local usex_data_module = "Module:usex/data"
local m_str_utils = require(string_utilities_module)
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local rfind = m_str_utils.find
local uupper = m_str_utils.upper
local ulen = m_str_utils.len
local u = m_str_utils.char
local ucfirst = m_str_utils.ucfirst
local translit_data = mw.loadData("Module:transliteration/data")
local needs_translit = translit_data[1]
local BRACKET_SUB = u(0xFFF0)
local original_text = "<small>''ya orîjînal:''</small> "
-- 100 more or less corresponds to the setting of 30 for the example text alone as formerly used in
-- {{hi-x}} and {{ur-x}}, taking into account transliteration, gloss and formatting characters.
-- FIXME: We should have different widths for desktop vs. mobile and generate the appropriate CSS so
-- both are handled correctly.
local MAX_INLINE_WIDTH = 100 -- In characters. HACK! FIXME! Do this a better way.
-- List of scripts whose characters are double-width/full-width.
local double_width_scripts = {"Hani", "Hrkt", "Hang"}
-- microformat2 classes, see https://phabricator.wikimedia.org/T138709
local css_classes = {
container_ux = 'h-usage-example',
container_quotation = 'h-quotation',
example = 'e-example',
quotation = 'e-quotation',
quotation_with_citation = 'e-quotation cited-passage',
translation = 'e-translation',
-- The following are added by [[Module:script utilities]], using [[Module:script utilities/data]]
-- transliteration = 'e-transliteration',
-- transcription = 'e-transcription',
normalization = 'e-normalization',
literally = 'e-literally',
qualifier = 'e-qualifier',
source = 'jeder',
footer = 'e-footer'
}
-- helper functions
local function track(page)
require(debug_track_module)("usex/" .. page)
return true
end
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function wrap(tag, class, text, lang, style)
if lang then
lang = ' lang="' .. lang .. '"'
else
lang = ""
end
if style then
style = ' style="' .. style .. '"'
else
style = ""
end
if text and class then
return table.concat{'<', tag, ' class="', class, '"', lang, style, '>', text, '</', tag, '>'}
else
return nil
end
end
local function span(class, text) return wrap('span', class, text) end
local function div(class, text) return wrap('div', class, text) end
-- Remove any HTML from the formatted text and resolve links, since the extra characters don't contribute to the
-- displayed length.
local function convert_to_raw_text(text)
text = rsub(text, "<.->", "")
if text:find("%[%[") then
text = require(links_module).remove_links(text)
end
return text
end
local function get_character_width(text)
local charsets = {}
for _, script in ipairs(double_width_scripts) do
table.insert(charsets, require(scripts_module).getByCode(script):getCharacters())
end
local single_width_chars = ulen(rsub(text, "[" .. table.concat(charsets) .. "]", ""))
local total_chars = ulen(text)
local double_width_chars = total_chars - single_width_chars
return single_width_chars + 2 * double_width_chars
end
--[==[
Apply the substitutions in `subst` (from the {{para|subst}} parameter or similar) to the example or quotation in
`usex` after removing links, returning the resulting text. `track`, if supplied, is a function of one argument that is
used to insert tracking categories: one for any call to this function, another if a single / is used in the `subst`
argument.
]==]
function export.apply_subst(usex, subst, track)
local subbed_usex = require(links_module).remove_links(usex)
local function do_track(page)
if track then
track(page)
end
return true
end
if subst then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst]]
do_track("subst")
subst = rsplit(subst, ",")
for _, subpair in ipairs(subst) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst-single-slash]]
local subsplit = rsplit(subpair, rfind(subpair, "//") and "//" or do_track("subst-single-slash") and "/")
subbed_usex = rsub(subbed_usex, subsplit[1], subsplit[2])
end
end
return subbed_usex
end
--[=[
Process parameters for usex text (either the primary text or the original text) and associated annotations. On input,
the following fields are recognized in `data` (all are optional except as marked):
* `lang`: Language object of text; may be an etymology language (REQUIRED).
* `termlang`: The language object of the term being illustrated, which may be different from the language of the main
quotation text and should always be based off of the main text, not the original text. Used for
categories. May be an etymology language (REQUIRED).
* `usex`: Text of usex/quotation.
* `sc`: Script object of text.
* `tr`: Manual transliteration.
* `ts`: Transcription.
* `norm`: Normalized version of text.
* `normsc`: Script object of normalized version of text, or "auto".
* `subst`: String of substitutions for transliteration purposes.
* `quote`: If non-nil, this is a quotation (using {{tl|quote}} or {{tl|quote-*}}) instead of a usage example (using
{{tl|usex}}). If it has the specific value "quote-meta", this is a quotation with citation (invoked from
{{tl|quote-*}}). This controls the CSS class used to display the quotation, as well as the face used to tag the usex
(which in turn results in the usex being upright text if a quotation, and italic text if a usage example).
* `title`: Title object of the current page (REQUIRED).
* `q`: List of left qualifiers.
* `qq`: List of right qualifiers.
* `ref`: String to display directly after any right qualifier, with no space. (FIXME: Should be converted into
an actual ref.)
* `nocat`: Overall `data.nocat` value.
* `categories`: List to insert categories into (REQUIRED).
* `example_type`: Either "quotation" (if `quote` specified) or "usage example" (otherwise) (REQUIRED).
On output, return an object with four fields:
* `usex`: Formatted usex, including qualifiers attached to both sides and `ref` attached to the right. Always specified.
* `tr`: Formatted transliteration; may be nil.
* `ts`: Formatted transcription; may be nil.
* `norm`: Formatted normalized version of usex; may be nil.
]=]
local function process_usex_text(data)
local lang = data.lang
local termlang = data.termlang
local usex = data.usex
local sc = data.sc
local sc_explicit = sc
local tr = data.tr
local ts = data.ts
local norm = data.norm
local normsc = data.normsc
local subst = data.subst
local quote = data.quote
local leftq = data.q
local rightq = data.qq
local ref = data.ref
local nocat = data.nocat
local categories = data.categories
local example_type = data.example_type
local title = data.title
if normsc == "auto" then
normsc = nil
elseif not normsc then
normsc = sc
end
if not sc then
sc = lang:findBestScript(usex)
end
if not normsc and norm then
normsc = lang:findBestScript(norm)
end
local langcode = lang:getFullCode()
-- tr=- means omit transliteration altogether
if tr == "-" then
tr = nil
else
-- Try to auto-transliterate.
if not tr then
-- First, try transliterating the normalization, if supplied.
if norm and normsc and not normsc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
local subbed_norm = export.apply_subst(norm, subst, track)
tr = (lang:transliterate(subbed_norm, normsc))
end
-- If no normalization, or the normalization is in a Latin script, or the transliteration of the
-- normalization failed, fall back to transliterating the usex.
if not tr then
local subbed_usex = export.apply_subst(usex, subst, track)
tr = (lang:transliterate(subbed_usex, sc))
end
-- If the language doesn't have capitalization and is specified in [[Module:usex/data]], then capitalize any sentences.
-- Exclamation marks and question marks need to be unescaped then re-escaped.
if tr and mw.loadData(usex_data_module).capitalize_sentences[langcode] then
tr = tr:gsub("!", "!")
:gsub("?", "?")
tr = rsub(tr, "%f[^%z%p%s](.)(.-[%.%?!‽])", function(m1, m2)
return uupper(m1) .. m2
end)
tr = tr:gsub("!", "!")
:gsub("%?", "?")
end
end
-- If there is still no transliteration, then add a cleanup category.
if not tr and needs_translit[langcode] and not sc:getCode():find("Lat") and sc:getCode() ~= "None" then
table.insert(categories, ("Daxwazên translîterasyona %syan bi %s"):format(example_type,
lang:getCanonicalName()))
end
end
if tr then
tr = require(script_utilities_module).tag_translit(tr, langcode, "usex")
end
if ts then
ts = require(script_utilities_module).tag_transcription(ts, langcode, "usex")
ts = "/" .. ts .. "/"
end
local function do_language_and_script_tagging(usex, lang, sc, css_class)
usex = require(links_module).embedded_language_links{term = usex, lang = lang, sc = sc}
local face
if quote then
face = nil
else
face = "term"
end
usex = require(script_utilities_module).tag_text(usex, lang, sc, face, css_class)
return usex
end
if usex then
usex = do_language_and_script_tagging(usex, lang, sc,
quote == "quote-meta" and css_classes.quotation_with_citation or
quote and css_classes.quotation or css_classes.example)
if not nocat then
-- 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
-- Here we don't want to use the subpage text because we check [[Citations:foo]] against [[foo]] and
-- if there's a slash in what follows 'Citations:', we want to check against the full page with the
-- slash.
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
-- Categories beginning with the language name should use full languages as that's what the poscat
-- system requires, but 'Requests for' categories can use etymology-only languages.
table.insert(categories, ("%s bi %s"):format(ucfirst(example_type), termlang:getFullName()))
end
end
else
if tr then
table.insert(categories, ("Daxwazên skrîpta nimûneyan bi %s"):format(lang:getCanonicalName()))
end
-- TODO: Trigger some kind of error here
usex = "<small>(ji kerema xwe metna orîjînal a vê nimûneyê binivîsin)</small>"
end
if norm then
-- Use brackets in HTML entity format just to make sure we don't interfere with links; add brackets before
-- script tagging so that if the script tagging increases the font size, the brackets get increased too.
norm = "[" .. norm .. "]"
norm = do_language_and_script_tagging(norm, lang, normsc, css_classes.normalization)
end
local result = {}
if leftq and #leftq > 0 then
table.insert(result, span(css_classes.qualifier, require("Module:qualifier").format_qualifier(leftq)) .. " ")
end
table.insert(result, usex)
if rightq and #rightq > 0 then
table.insert(result, " " .. span(css_classes.qualifier, require("Module:qualifier").format_qualifier(rightq)))
end
if ref and ref ~= "" then
track("ref")
table.insert(result, ref)
end
return {
usex = table.concat(result),
tr = tr,
ts = ts,
norm = norm
}
end
local function format_audio(audio)
if audio then
return " [[File:" .. audio .. "|25px]]"
else
return ""
end
end
--[==[
Format a usex or quotation. Implementation of {{tl|ux}}, {{tl|quote}} and {{tl|quote-*}} templates (e.g.
{{tl|quote-book}}, {{tl|quote-journal}}, {{tl|quote-web}}, etc.). FIXME: Should also be used by {{tl|Q}} and
[[Module:Quotations]].
Takes a single object `data`, containining the following fields:
* `usex`: The text of the usex or quotation to format. Semi-mandatory (a maintenance line is displayed if missing).
* `lang`: The language object of the text. Mandatory. May be an etymology language.
* `termlang`: The language object of the term, which may be different from the language of the text. Defaults to `lang`.
Used for categories. May be an etymology language.
* `sc`: The script object of the text. Autodetected if not given.
* `quote`: If specified, this is a quotation rather than a usex (uses a different CSS class that affects formatting).
* `inline`: If specified, format the usex or quotation inline (on one line).
* `translation`: Translation of the usex or quotation, if in a foreign language.
* `lit`: Literal translation (if the translation in `translation` is idiomatic and differs significantly from the
literal translation).
* `normalization`: Normalized version of the usex or quotation (esp. for older languages where nonstandard spellings
were common).
* `normsc`: Script object of the normalized text. If unspecified, use the script object given in `sc` if any, otherwise
do script detection on the normalized text. If "auto", do script detection on the normalized text even if
a script was specified in `sc`.
* `transliteration`: Transliteration of the usex. If unspecified, transliterate the normalization if specified and not
in a Latin script and transliterable, otherwise fall back to transliterating the usex text.
* `transcription`: Transcription of the usex, for languages where the transliteration differs significantly from the
pronunciation.
* `subst`: String indicating substitutions to perform on the usex/quotation and normalization prior to transliterating
them. Multiple substs are comma-separated and individual substs are of the form FROM//TO where FROM is a
Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is present in the
substitution.)
* `q`: If specified, a list of left qualifiers to display before the usex/quotation text.
* `qq`: If specified, a list of right qualifiers to display after the usex/quotation text.
* `qualifiers`: If specified, a list of right qualifiers to display after the usex/quotation text, for compatibility
purposes.
* `ref`: Reference text to display directly after the right qualifiers. (FIXME: Instead, this should be actual
references.)
* `audio`: Name of the audio file containing the usex in spoken form.
* `orig`: Original text, if the primary text of the usex or quotation is a translation.
* `origlang`: The language object of the original text. Mandatory if original text given. May be an etymology language.
* `origsc`: The script object of the original text. Autodetected if not given.
* `orignorm`: Normalized version of the original text (esp. for older languages where nonstandard spellings were
common).
* `orignormsc`: Script object of the normalized original text. If unspecified, use the script object given in `origsc`
if any, otherwise do script detection on the normalized original text. If "auto", do script detection
on the normalized text even if a script was specified in `origsc`.
* `origtr`: Transliteration of the original text. If unspecified, transliterate the normalized original text if
specified and not in a Latin script and transliterable, otherwise fall back to transliterating the original
text.
* `origts`: Transcription of the original text, for languages where the transliteration differs significantly from the
pronunciation.
* `origsubst`: String indicating substitutions to perform on the original text and normalization thereof prior to
transliterating them. Multiple substs are comma-separated and individual substs are of the form FROM//TO
where FROM is a Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is
present in the substitution.)
* `origq`: If specified, a list of left qualifiers to display before the original text.
* `origqq`: If specified, a list of right qualifiers to display after the original text.
* `origref`: Reference text to display directly after the right qualifiers of the original text. (FIXME: Instead, this
should be actual references.)
* `source`: Source of the quotation, displayed in parens after the quotation text.
* `footer`: Footer displaying miscellaneous information, shown after the quotation. (Typically this should be in a
small font.)
* `nocat`: Suppress categorization.
* `noreq`: Suppress request for translation when no translation provided.
* `sortkey`: Sort key for categories.
* `brackets`: If specified, show a bracket at the end (used with brackets= in {{tl|quote-*}} templates, which show the
bracket at the beginning, to indicate a mention rather than a use).
* `class`: Additional CSS class surrounding the entire formatted text.
]==]
function export.format_usex(data)
local lang = data.lang
local termlang = data.termlang or lang
local translation = data.translation
local quote = data.quote
local lit = data.lit
local audio = data.audio
local source = data.source
local brackets = data.brackets
local footer = data.footer
local sortkey = data.sortkey
local noreq = data.noreq
local title
if data.pagename then -- for testing, doc pages, etc.
title = mw.title.new(data.pagename)
if not title then
error(("Bad value for `data.pagename`: '%s'"):format(data.pagename))
end
else
title = mw.title.getCurrentTitle()
end
--[[
if title.nsText == "Reconstruction" or lang:hasType("reconstructed") then
error("Reconstructed languages and reconstructed terms cannot have usage examples, as we have no record of their use.")
end
]]
if lit then
lit = "(herfiyen, “" .. span(css_classes.literally, lit) .. "”)"
end
if source then
source = wrap("span", "jeder", " — (" .. source .. ")", nil, "font-size: 0.85em")
end
if footer then
footer = span(css_classes.footer, footer)
end
local example_type = quote and "jêgirtin" or "nimûne" -- used in error messages and categories
local categories = {}
local usex_obj = process_usex_text {
lang = lang,
termlang = termlang,
usex = data.usex,
sc = data.sc,
tr = data.transliteration,
ts = data.transcription,
norm = data.normalization,
normsc = data.normsc,
subst = data.subst,
quote = data.quote,
title = title,
q = data.q,
qq = data.qq,
ref = data.ref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
}
local orig_obj = data.orig and process_usex_text {
lang = data.origlang,
-- Any categories derived from the original text should use the language of the main text or the term inside it,
-- not the language of the original text.
termlang = termlang,
usex = data.orig,
sc = data.origsc,
tr = data.origtr,
ts = data.origts,
norm = data.orignorm,
normsc = data.orignormsc,
subst = data.origsubst,
quote = data.quote,
title = title,
q = data.origq,
qq = data.origqq,
ref = data.origref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
} or nil
if translation == "-" then
translation = nil
table.insert(categories, ("%s %ss with omitted translation"):format(lang:getFullName(),
example_type))
elseif translation then
translation = span(css_classes.translation, translation)
elseif not noreq then
local langcode = lang:getFullCode()
local origlangcode = data.origlang and data.origlang:getFullCode()
if langcode ~= "ku" and langcode ~= "navz" and langcode ~= "und" and origlangcode ~= "ku" then
-- add trreq category if translation is unspecified and language is not english, translingual or
-- undetermined
table.insert(categories, ("Daxwazên tercimekirina %syan bi %s"):format(example_type, lang:getCanonicalName()))
if quote then
translation = "<small>(ji kerema xwe tercimeya kurmancî ya vê jêgirtinê binivîsin)</small>"
else
translation = "<small>(ji kerema xwe tercimeya kurmancî ya vê nimûneyê binivîsin)</small>"
end
end
end
local function generate_inline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
if source then
ins(" " .. source)
end
ins(format_audio(audio))
local function insert_annotations(obj)
if obj.norm then
ins(" " .. obj.norm)
end
if obj.tr or obj.ts then
ins(" ―")
if obj.tr then
ins(" " .. obj.tr)
end
if obj.ts then
ins(" " .. obj.ts)
end
end
end
insert_annotations(usex_obj)
if orig_obj then
ins(" (")
ins("[" .. original_text .. orig_obj.usex .. "]")
insert_annotations(orig_obj)
ins(")")
end
if translation then
ins(" ― " .. translation)
end
if lit then
ins(" " .. lit)
end
if footer then
ins(" " .. footer)
end
if data.brackets then
ins("]")
end
return table.concat(result)
end
local function generate_multiline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
ins(source)
ins(format_audio(audio))
local any_usex_annotations = usex_obj.tr or usex_obj.ts or usex_obj.norm or translation or lit
local any_orig_annotations = orig_obj and (orig_obj.tr or orig_obj.ts or orig_obj.norm)
if any_usex_annotations or orig_obj or footer then
ins("<dl>")
local function insert_dd(text)
if text then
ins("<dd>")
ins(text)
if data.brackets then
ins(BRACKET_SUB)
end
ins("</dd>")
end
end
insert_dd(usex_obj.norm)
insert_dd(usex_obj.tr)
insert_dd(usex_obj.ts)
if orig_obj then
insert_dd("[" .. original_text .. orig_obj.usex .. "]")
if any_orig_annotations then
ins("<dd><dl>")
insert_dd(orig_obj.norm)
insert_dd(orig_obj.tr)
insert_dd(orig_obj.ts)
ins("</dl></dd>")
end
end
insert_dd(translation)
insert_dd(lit)
if footer then
if any_usex_annotations then
ins("<dd><dl>")
end
insert_dd(footer)
if any_usex_annotations then
ins("</dl></dd>")
end
end
ins("</dl>")
elseif data.brackets then
ins(BRACKET_SUB)
end
result = table.concat(result)
if data.brackets then
result = result:gsub("^(.*)" .. BRACKET_SUB, "%1]"):gsub(BRACKET_SUB, "")
end
return result
end
local is_inline
if data.inline == "auto" then
result = generate_inline_usex()
if get_character_width(convert_to_raw_text(result)) > MAX_INLINE_WIDTH then
result = generate_multiline_usex()
is_inline = false
else
is_inline = true
end
elseif data.inline then
result = generate_inline_usex()
is_inline = true
else
result = generate_multiline_usex()
is_inline = false
end
local class = quote and css_classes.container_quotation or css_classes.container_ux
if data.class then
class = class .. " " .. data.class
end
result = (is_inline and span or div)(class, result)
return result .. require("Module:utilities").format_categories(categories, lang, sortkey)
end
return export
8ie3jowncg16wbzmdo1ioa3rr2uuryl
6329731
6329620
2026-08-12T21:07:11Z
Wikihez
7344
6329731
Scribunto
text/plain
local export = {}
local debug_track_module = "Module:debug/track"
local links_module = "Module:links"
local scripts_module = "Module:scripts"
local script_utilities_module = "Module:script utilities"
local string_utilities_module = "Module:string utilities"
local usex_data_module = "Module:usex/data"
local m_str_utils = require(string_utilities_module)
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local rfind = m_str_utils.find
local uupper = m_str_utils.upper
local ulen = m_str_utils.len
local u = m_str_utils.char
local ucfirst = m_str_utils.ucfirst
local translit_data = mw.loadData("Module:transliteration/data")
local needs_translit = translit_data[1]
local BRACKET_SUB = u(0xFFF0)
local original_text = "<small>''ya orîjînal:''</small> "
-- 100 more or less corresponds to the setting of 30 for the example text alone as formerly used in
-- {{hi-x}} and {{ur-x}}, taking into account transliteration, gloss and formatting characters.
-- FIXME: We should have different widths for desktop vs. mobile and generate the appropriate CSS so
-- both are handled correctly.
local MAX_INLINE_WIDTH = 100 -- In characters. HACK! FIXME! Do this a better way.
-- List of scripts whose characters are double-width/full-width.
local double_width_scripts = {"Hani", "Hrkt", "Hang"}
-- microformat2 classes, see https://phabricator.wikimedia.org/T138709
local css_classes = {
container_ux = 'h-usage-example',
container_quotation = 'h-quotation',
example = 'e-example',
quotation = 'e-quotation',
quotation_with_citation = 'e-quotation cited-passage',
translation = 'e-translation',
-- The following are added by [[Module:script utilities]], using [[Module:script utilities/data]]
-- transliteration = 'e-transliteration',
-- transcription = 'e-transcription',
normalization = 'e-normalization',
literally = 'e-literally',
qualifier = 'e-qualifier',
source = 'jeder',
footer = 'e-footer'
}
-- helper functions
local function track(page)
require(debug_track_module)("usex/" .. page)
return true
end
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function wrap(tag, class, text, lang, style)
if lang then
lang = ' lang="' .. lang .. '"'
else
lang = ""
end
if style then
style = ' style="' .. style .. '"'
else
style = ""
end
if text and class then
return table.concat{'<', tag, ' class="', class, '"', lang, style, '>', text, '</', tag, '>'}
else
return nil
end
end
local function span(class, text) return wrap('span', class, text) end
local function div(class, text) return wrap('div', class, text) end
-- Remove any HTML from the formatted text and resolve links, since the extra characters don't contribute to the
-- displayed length.
local function convert_to_raw_text(text)
text = rsub(text, "<.->", "")
if text:find("%[%[") then
text = require(links_module).remove_links(text)
end
return text
end
local function get_character_width(text)
local charsets = {}
for _, script in ipairs(double_width_scripts) do
table.insert(charsets, require(scripts_module).getByCode(script):getCharacters())
end
local single_width_chars = ulen(rsub(text, "[" .. table.concat(charsets) .. "]", ""))
local total_chars = ulen(text)
local double_width_chars = total_chars - single_width_chars
return single_width_chars + 2 * double_width_chars
end
--[==[
Apply the substitutions in `subst` (from the {{para|subst}} parameter or similar) to the example or quotation in
`usex` after removing links, returning the resulting text. `track`, if supplied, is a function of one argument that is
used to insert tracking categories: one for any call to this function, another if a single / is used in the `subst`
argument.
]==]
function export.apply_subst(usex, subst, track)
local subbed_usex = require(links_module).remove_links(usex)
local function do_track(page)
if track then
track(page)
end
return true
end
if subst then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst]]
do_track("subst")
subst = rsplit(subst, ",")
for _, subpair in ipairs(subst) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst-single-slash]]
local subsplit = rsplit(subpair, rfind(subpair, "//") and "//" or do_track("subst-single-slash") and "/")
subbed_usex = rsub(subbed_usex, subsplit[1], subsplit[2])
end
end
return subbed_usex
end
--[=[
Process parameters for usex text (either the primary text or the original text) and associated annotations. On input,
the following fields are recognized in `data` (all are optional except as marked):
* `lang`: Language object of text; may be an etymology language (REQUIRED).
* `termlang`: The language object of the term being illustrated, which may be different from the language of the main
quotation text and should always be based off of the main text, not the original text. Used for
categories. May be an etymology language (REQUIRED).
* `usex`: Text of usex/quotation.
* `sc`: Script object of text.
* `tr`: Manual transliteration.
* `ts`: Transcription.
* `norm`: Normalized version of text.
* `normsc`: Script object of normalized version of text, or "auto".
* `subst`: String of substitutions for transliteration purposes.
* `quote`: If non-nil, this is a quotation (using {{tl|quote}} or {{tl|quote-*}}) instead of a usage example (using
{{tl|usex}}). If it has the specific value "quote-meta", this is a quotation with citation (invoked from
{{tl|quote-*}}). This controls the CSS class used to display the quotation, as well as the face used to tag the usex
(which in turn results in the usex being upright text if a quotation, and italic text if a usage example).
* `title`: Title object of the current page (REQUIRED).
* `q`: List of left qualifiers.
* `qq`: List of right qualifiers.
* `ref`: String to display directly after any right qualifier, with no space. (FIXME: Should be converted into
an actual ref.)
* `nocat`: Overall `data.nocat` value.
* `categories`: List to insert categories into (REQUIRED).
* `example_type`: Either "quotation" (if `quote` specified) or "usage example" (otherwise) (REQUIRED).
On output, return an object with four fields:
* `usex`: Formatted usex, including qualifiers attached to both sides and `ref` attached to the right. Always specified.
* `tr`: Formatted transliteration; may be nil.
* `ts`: Formatted transcription; may be nil.
* `norm`: Formatted normalized version of usex; may be nil.
]=]
-- "jêgirtin" (consonant-final) takes the oblique plural suffix "-an" ("jêgirtinan"); "nimûne" (vowel-final) needs
-- the glide "-yan" ("nimûneyan"). Used when building "Daxwazên ... X-an/-yan bi ZIMAN" category names.
local function oblique_plural(example_type)
return example_type == "jêgirtin" and "jêgirtinan" or "nimûneyan"
end
local function process_usex_text(data)
local lang = data.lang
local termlang = data.termlang
local usex = data.usex
local sc = data.sc
local sc_explicit = sc
local tr = data.tr
local ts = data.ts
local norm = data.norm
local normsc = data.normsc
local subst = data.subst
local quote = data.quote
local leftq = data.q
local rightq = data.qq
local ref = data.ref
local nocat = data.nocat
local categories = data.categories
local example_type = data.example_type
local title = data.title
if normsc == "auto" then
normsc = nil
elseif not normsc then
normsc = sc
end
if not sc then
sc = lang:findBestScript(usex)
end
if not normsc and norm then
normsc = lang:findBestScript(norm)
end
local langcode = lang:getFullCode()
-- tr=- means omit transliteration altogether
if tr == "-" then
tr = nil
else
-- Try to auto-transliterate.
if not tr then
-- First, try transliterating the normalization, if supplied.
if norm and normsc and not normsc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
local subbed_norm = export.apply_subst(norm, subst, track)
tr = (lang:transliterate(subbed_norm, normsc))
end
-- If no normalization, or the normalization is in a Latin script, or the transliteration of the
-- normalization failed, fall back to transliterating the usex.
if not tr then
local subbed_usex = export.apply_subst(usex, subst, track)
tr = (lang:transliterate(subbed_usex, sc))
end
-- If the language doesn't have capitalization and is specified in [[Module:usex/data]], then capitalize any sentences.
-- Exclamation marks and question marks need to be unescaped then re-escaped.
if tr and mw.loadData(usex_data_module).capitalize_sentences[langcode] then
tr = tr:gsub("!", "!")
:gsub("?", "?")
tr = rsub(tr, "%f[^%z%p%s](.)(.-[%.%?!‽])", function(m1, m2)
return uupper(m1) .. m2
end)
tr = tr:gsub("!", "!")
:gsub("%?", "?")
end
end
-- If there is still no transliteration, then add a cleanup category.
if not tr and needs_translit[langcode] and not sc:getCode():find("Lat") and sc:getCode() ~= "None" then
table.insert(categories, ("Daxwazên translîterasyona %s bi %s"):format(oblique_plural(example_type),
lang:getCanonicalName()))
end
end
if tr then
tr = require(script_utilities_module).tag_translit(tr, langcode, "usex")
end
if ts then
ts = require(script_utilities_module).tag_transcription(ts, langcode, "usex")
ts = "/" .. ts .. "/"
end
local function do_language_and_script_tagging(usex, lang, sc, css_class)
usex = require(links_module).embedded_language_links{term = usex, lang = lang, sc = sc}
local face
if quote then
face = nil
else
face = "term"
end
usex = require(script_utilities_module).tag_text(usex, lang, sc, face, css_class)
return usex
end
if usex then
usex = do_language_and_script_tagging(usex, lang, sc,
quote == "quote-meta" and css_classes.quotation_with_citation or
quote and css_classes.quotation or css_classes.example)
if not nocat then
-- 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
-- Here we don't want to use the subpage text because we check [[Citations:foo]] against [[foo]] and
-- if there's a slash in what follows 'Citations:', we want to check against the full page with the
-- slash.
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
-- Categories beginning with the language name should use full languages as that's what the poscat
-- system requires, but 'Requests for' categories can use etymology-only languages.
table.insert(categories, ("%s bi %s"):format(ucfirst(example_type), termlang:getFullName()))
end
end
else
if tr then
table.insert(categories, ("Daxwazên skrîpta nimûneyan bi %s"):format(lang:getCanonicalName()))
end
-- TODO: Trigger some kind of error here
usex = "<small>(ji kerema xwe metna orîjînal a vê nimûneyê binivîsin)</small>"
end
if norm then
-- Use brackets in HTML entity format just to make sure we don't interfere with links; add brackets before
-- script tagging so that if the script tagging increases the font size, the brackets get increased too.
norm = "[" .. norm .. "]"
norm = do_language_and_script_tagging(norm, lang, normsc, css_classes.normalization)
end
local result = {}
if leftq and #leftq > 0 then
table.insert(result, span(css_classes.qualifier, require("Module:qualifier").format_qualifier(leftq)) .. " ")
end
table.insert(result, usex)
if rightq and #rightq > 0 then
table.insert(result, " " .. span(css_classes.qualifier, require("Module:qualifier").format_qualifier(rightq)))
end
if ref and ref ~= "" then
track("ref")
table.insert(result, ref)
end
return {
usex = table.concat(result),
tr = tr,
ts = ts,
norm = norm
}
end
local function format_audio(audio)
if audio then
return " [[File:" .. audio .. "|25px]]"
else
return ""
end
end
--[==[
Format a usex or quotation. Implementation of {{tl|ux}}, {{tl|quote}} and {{tl|quote-*}} templates (e.g.
{{tl|quote-book}}, {{tl|quote-journal}}, {{tl|quote-web}}, etc.). FIXME: Should also be used by {{tl|Q}} and
[[Module:Quotations]].
Takes a single object `data`, containining the following fields:
* `usex`: The text of the usex or quotation to format. Semi-mandatory (a maintenance line is displayed if missing).
* `lang`: The language object of the text. Mandatory. May be an etymology language.
* `termlang`: The language object of the term, which may be different from the language of the text. Defaults to `lang`.
Used for categories. May be an etymology language.
* `sc`: The script object of the text. Autodetected if not given.
* `quote`: If specified, this is a quotation rather than a usex (uses a different CSS class that affects formatting).
* `inline`: If specified, format the usex or quotation inline (on one line).
* `translation`: Translation of the usex or quotation, if in a foreign language.
* `lit`: Literal translation (if the translation in `translation` is idiomatic and differs significantly from the
literal translation).
* `normalization`: Normalized version of the usex or quotation (esp. for older languages where nonstandard spellings
were common).
* `normsc`: Script object of the normalized text. If unspecified, use the script object given in `sc` if any, otherwise
do script detection on the normalized text. If "auto", do script detection on the normalized text even if
a script was specified in `sc`.
* `transliteration`: Transliteration of the usex. If unspecified, transliterate the normalization if specified and not
in a Latin script and transliterable, otherwise fall back to transliterating the usex text.
* `transcription`: Transcription of the usex, for languages where the transliteration differs significantly from the
pronunciation.
* `subst`: String indicating substitutions to perform on the usex/quotation and normalization prior to transliterating
them. Multiple substs are comma-separated and individual substs are of the form FROM//TO where FROM is a
Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is present in the
substitution.)
* `q`: If specified, a list of left qualifiers to display before the usex/quotation text.
* `qq`: If specified, a list of right qualifiers to display after the usex/quotation text.
* `qualifiers`: If specified, a list of right qualifiers to display after the usex/quotation text, for compatibility
purposes.
* `ref`: Reference text to display directly after the right qualifiers. (FIXME: Instead, this should be actual
references.)
* `audio`: Name of the audio file containing the usex in spoken form.
* `orig`: Original text, if the primary text of the usex or quotation is a translation.
* `origlang`: The language object of the original text. Mandatory if original text given. May be an etymology language.
* `origsc`: The script object of the original text. Autodetected if not given.
* `orignorm`: Normalized version of the original text (esp. for older languages where nonstandard spellings were
common).
* `orignormsc`: Script object of the normalized original text. If unspecified, use the script object given in `origsc`
if any, otherwise do script detection on the normalized original text. If "auto", do script detection
on the normalized text even if a script was specified in `origsc`.
* `origtr`: Transliteration of the original text. If unspecified, transliterate the normalized original text if
specified and not in a Latin script and transliterable, otherwise fall back to transliterating the original
text.
* `origts`: Transcription of the original text, for languages where the transliteration differs significantly from the
pronunciation.
* `origsubst`: String indicating substitutions to perform on the original text and normalization thereof prior to
transliterating them. Multiple substs are comma-separated and individual substs are of the form FROM//TO
where FROM is a Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is
present in the substitution.)
* `origq`: If specified, a list of left qualifiers to display before the original text.
* `origqq`: If specified, a list of right qualifiers to display after the original text.
* `origref`: Reference text to display directly after the right qualifiers of the original text. (FIXME: Instead, this
should be actual references.)
* `source`: Source of the quotation, displayed in parens after the quotation text.
* `footer`: Footer displaying miscellaneous information, shown after the quotation. (Typically this should be in a
small font.)
* `nocat`: Suppress categorization.
* `noreq`: Suppress request for translation when no translation provided.
* `sortkey`: Sort key for categories.
* `brackets`: If specified, show a bracket at the end (used with brackets= in {{tl|quote-*}} templates, which show the
bracket at the beginning, to indicate a mention rather than a use).
* `class`: Additional CSS class surrounding the entire formatted text.
]==]
function export.format_usex(data)
local lang = data.lang
local termlang = data.termlang or lang
local translation = data.translation
local quote = data.quote
local lit = data.lit
local audio = data.audio
local source = data.source
local brackets = data.brackets
local footer = data.footer
local sortkey = data.sortkey
local noreq = data.noreq
local title
if data.pagename then -- for testing, doc pages, etc.
title = mw.title.new(data.pagename)
if not title then
error(("Bad value for `data.pagename`: '%s'"):format(data.pagename))
end
else
title = mw.title.getCurrentTitle()
end
--[[
if title.nsText == "Reconstruction" or lang:hasType("reconstructed") then
error("Reconstructed languages and reconstructed terms cannot have usage examples, as we have no record of their use.")
end
]]
if lit then
lit = "(herfiyen, “" .. span(css_classes.literally, lit) .. "”)"
end
if source then
source = wrap("span", "jeder", " — (" .. source .. ")", nil, "font-size: 0.85em")
end
if footer then
footer = span(css_classes.footer, footer)
end
local example_type = quote and "jêgirtin" or "nimûne" -- used in error messages and categories
local categories = {}
local usex_obj = process_usex_text {
lang = lang,
termlang = termlang,
usex = data.usex,
sc = data.sc,
tr = data.transliteration,
ts = data.transcription,
norm = data.normalization,
normsc = data.normsc,
subst = data.subst,
quote = data.quote,
title = title,
q = data.q,
qq = data.qq,
ref = data.ref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
}
local orig_obj = data.orig and process_usex_text {
lang = data.origlang,
-- Any categories derived from the original text should use the language of the main text or the term inside it,
-- not the language of the original text.
termlang = termlang,
usex = data.orig,
sc = data.origsc,
tr = data.origtr,
ts = data.origts,
norm = data.orignorm,
normsc = data.orignormsc,
subst = data.origsubst,
quote = data.quote,
title = title,
q = data.origq,
qq = data.origqq,
ref = data.origref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
} or nil
if translation == "-" then
translation = nil
table.insert(categories, ("%s %ss with omitted translation"):format(lang:getFullName(),
example_type))
elseif translation then
translation = span(css_classes.translation, translation)
elseif not noreq then
local langcode = lang:getFullCode()
local origlangcode = data.origlang and data.origlang:getFullCode()
if langcode ~= "ku" and langcode ~= "navz" and langcode ~= "und" and origlangcode ~= "ku" then
-- add trreq category if translation is unspecified and language is not english, translingual or
-- undetermined
table.insert(categories, ("Daxwazên tercimekirina %s bi %s"):format(oblique_plural(example_type), lang:getCanonicalName()))
if quote then
translation = "<small>(ji kerema xwe tercimeya kurmancî ya vê jêgirtinê binivîsin)</small>"
else
translation = "<small>(ji kerema xwe tercimeya kurmancî ya vê nimûneyê binivîsin)</small>"
end
end
end
local function generate_inline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
if source then
ins(" " .. source)
end
ins(format_audio(audio))
local function insert_annotations(obj)
if obj.norm then
ins(" " .. obj.norm)
end
if obj.tr or obj.ts then
ins(" ―")
if obj.tr then
ins(" " .. obj.tr)
end
if obj.ts then
ins(" " .. obj.ts)
end
end
end
insert_annotations(usex_obj)
if orig_obj then
ins(" (")
ins("[" .. original_text .. orig_obj.usex .. "]")
insert_annotations(orig_obj)
ins(")")
end
if translation then
ins(" ― " .. translation)
end
if lit then
ins(" " .. lit)
end
if footer then
ins(" " .. footer)
end
if data.brackets then
ins("]")
end
return table.concat(result)
end
local function generate_multiline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
ins(source)
ins(format_audio(audio))
local any_usex_annotations = usex_obj.tr or usex_obj.ts or usex_obj.norm or translation or lit
local any_orig_annotations = orig_obj and (orig_obj.tr or orig_obj.ts or orig_obj.norm)
if any_usex_annotations or orig_obj or footer then
ins("<dl>")
local function insert_dd(text)
if text then
ins("<dd>")
ins(text)
if data.brackets then
ins(BRACKET_SUB)
end
ins("</dd>")
end
end
insert_dd(usex_obj.norm)
insert_dd(usex_obj.tr)
insert_dd(usex_obj.ts)
if orig_obj then
insert_dd("[" .. original_text .. orig_obj.usex .. "]")
if any_orig_annotations then
ins("<dd><dl>")
insert_dd(orig_obj.norm)
insert_dd(orig_obj.tr)
insert_dd(orig_obj.ts)
ins("</dl></dd>")
end
end
insert_dd(translation)
insert_dd(lit)
if footer then
if any_usex_annotations then
ins("<dd><dl>")
end
insert_dd(footer)
if any_usex_annotations then
ins("</dl></dd>")
end
end
ins("</dl>")
elseif data.brackets then
ins(BRACKET_SUB)
end
result = table.concat(result)
if data.brackets then
result = result:gsub("^(.*)" .. BRACKET_SUB, "%1]"):gsub(BRACKET_SUB, "")
end
return result
end
local is_inline
if data.inline == "auto" then
result = generate_inline_usex()
if get_character_width(convert_to_raw_text(result)) > MAX_INLINE_WIDTH then
result = generate_multiline_usex()
is_inline = false
else
is_inline = true
end
elseif data.inline then
result = generate_inline_usex()
is_inline = true
else
result = generate_multiline_usex()
is_inline = false
end
local class = quote and css_classes.container_quotation or css_classes.container_ux
if data.class then
class = class .. " " .. data.class
end
result = (is_inline and span or div)(class, result)
return result .. require("Module:utilities").format_categories(categories, lang, sortkey)
end
return export
lnctnigi0h0z9kyct8cuqt5i15kpiww
6329757
6329731
2026-08-12T21:23:12Z
Wikihez
7344
6329757
Scribunto
text/plain
local export = {}
local debug_track_module = "Module:debug/track"
local links_module = "Module:links"
local scripts_module = "Module:scripts"
local script_utilities_module = "Module:script utilities"
local string_utilities_module = "Module:string utilities"
local usex_data_module = "Module:usex/data"
local m_str_utils = require(string_utilities_module)
local rsubn = m_str_utils.gsub
local rsplit = m_str_utils.split
local rfind = m_str_utils.find
local uupper = m_str_utils.upper
local ulen = m_str_utils.len
local u = m_str_utils.char
local ucfirst = m_str_utils.ucfirst
local translit_data = mw.loadData("Module:transliteration/data")
local needs_translit = translit_data[1]
local BRACKET_SUB = u(0xFFF0)
local original_text = "<small>''ya orîjînal:''</small> "
-- 100 more or less corresponds to the setting of 30 for the example text alone as formerly used in
-- {{hi-x}} and {{ur-x}}, taking into account transliteration, gloss and formatting characters.
-- FIXME: We should have different widths for desktop vs. mobile and generate the appropriate CSS so
-- both are handled correctly.
local MAX_INLINE_WIDTH = 100 -- In characters. HACK! FIXME! Do this a better way.
-- List of scripts whose characters are double-width/full-width.
local double_width_scripts = {"Hani", "Hrkt", "Hang"}
-- microformat2 classes, see https://phabricator.wikimedia.org/T138709
local css_classes = {
container_ux = 'h-usage-example',
container_quotation = 'h-quotation',
example = 'e-example',
quotation = 'e-quotation',
quotation_with_citation = 'e-quotation cited-passage',
translation = 'e-translation',
-- The following are added by [[Module:script utilities]], using [[Module:script utilities/data]]
-- transliteration = 'e-transliteration',
-- transcription = 'e-transcription',
normalization = 'e-normalization',
literally = 'e-literally',
qualifier = 'e-qualifier',
source = 'jeder',
footer = 'e-footer'
}
-- helper functions
local function track(page)
require(debug_track_module)("usex/" .. page)
return true
end
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function wrap(tag, class, text, lang, style)
if lang then
lang = ' lang="' .. lang .. '"'
else
lang = ""
end
if style then
style = ' style="' .. style .. '"'
else
style = ""
end
if text and class then
return table.concat{'<', tag, ' class="', class, '"', lang, style, '>', text, '</', tag, '>'}
else
return nil
end
end
local function span(class, text) return wrap('span', class, text) end
local function div(class, text) return wrap('div', class, text) end
-- Remove any HTML from the formatted text and resolve links, since the extra characters don't contribute to the
-- displayed length.
local function convert_to_raw_text(text)
text = rsub(text, "<.->", "")
if text:find("%[%[") then
text = require(links_module).remove_links(text)
end
return text
end
local function get_character_width(text)
local charsets = {}
for _, script in ipairs(double_width_scripts) do
table.insert(charsets, require(scripts_module).getByCode(script):getCharacters())
end
local single_width_chars = ulen(rsub(text, "[" .. table.concat(charsets) .. "]", ""))
local total_chars = ulen(text)
local double_width_chars = total_chars - single_width_chars
return single_width_chars + 2 * double_width_chars
end
--[==[
Apply the substitutions in `subst` (from the {{para|subst}} parameter or similar) to the example or quotation in
`usex` after removing links, returning the resulting text. `track`, if supplied, is a function of one argument that is
used to insert tracking categories: one for any call to this function, another if a single / is used in the `subst`
argument.
]==]
function export.apply_subst(usex, subst, track)
local subbed_usex = require(links_module).remove_links(usex)
local function do_track(page)
if track then
track(page)
end
return true
end
if subst then
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst]]
do_track("subst")
subst = rsplit(subst, ",")
for _, subpair in ipairs(subst) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/usex/subst-single-slash]]
local subsplit = rsplit(subpair, rfind(subpair, "//") and "//" or do_track("subst-single-slash") and "/")
subbed_usex = rsub(subbed_usex, subsplit[1], subsplit[2])
end
end
return subbed_usex
end
--[=[
Process parameters for usex text (either the primary text or the original text) and associated annotations. On input,
the following fields are recognized in `data` (all are optional except as marked):
* `lang`: Language object of text; may be an etymology language (REQUIRED).
* `termlang`: The language object of the term being illustrated, which may be different from the language of the main
quotation text and should always be based off of the main text, not the original text. Used for
categories. May be an etymology language (REQUIRED).
* `usex`: Text of usex/quotation.
* `sc`: Script object of text.
* `tr`: Manual transliteration.
* `ts`: Transcription.
* `norm`: Normalized version of text.
* `normsc`: Script object of normalized version of text, or "auto".
* `subst`: String of substitutions for transliteration purposes.
* `quote`: If non-nil, this is a quotation (using {{tl|quote}} or {{tl|quote-*}}) instead of a usage example (using
{{tl|usex}}). If it has the specific value "quote-meta", this is a quotation with citation (invoked from
{{tl|quote-*}}). This controls the CSS class used to display the quotation, as well as the face used to tag the usex
(which in turn results in the usex being upright text if a quotation, and italic text if a usage example).
* `title`: Title object of the current page (REQUIRED).
* `q`: List of left qualifiers.
* `qq`: List of right qualifiers.
* `ref`: String to display directly after any right qualifier, with no space. (FIXME: Should be converted into
an actual ref.)
* `nocat`: Overall `data.nocat` value.
* `categories`: List to insert categories into (REQUIRED).
* `example_type`: Either "quotation" (if `quote` specified) or "usage example" (otherwise) (REQUIRED).
On output, return an object with four fields:
* `usex`: Formatted usex, including qualifiers attached to both sides and `ref` attached to the right. Always specified.
* `tr`: Formatted transliteration; may be nil.
* `ts`: Formatted transcription; may be nil.
* `norm`: Formatted normalized version of usex; may be nil.
]=]
-- "jêgirtin" (consonant-final) takes the oblique plural suffix "-an" ("jêgirtinan"); "nimûne" (vowel-final) needs
-- the glide "-yan" ("nimûneyan"). Used when building "Daxwazên ... X-an/-yan bi ZIMAN" category names.
local function oblique_plural(example_type)
return example_type == "jêgirtin" and "jêgirtinan" or "nimûneyan"
end
local function process_usex_text(data)
local lang = data.lang
local termlang = data.termlang
local usex = data.usex
local sc = data.sc
local sc_explicit = sc
local tr = data.tr
local ts = data.ts
local norm = data.norm
local normsc = data.normsc
local subst = data.subst
local quote = data.quote
local leftq = data.q
local rightq = data.qq
local ref = data.ref
local nocat = data.nocat
local categories = data.categories
local example_type = data.example_type
local title = data.title
if normsc == "auto" then
normsc = nil
elseif not normsc then
normsc = sc
end
if not sc then
sc = lang:findBestScript(usex)
end
if not normsc and norm then
normsc = lang:findBestScript(norm)
end
local langcode = lang:getFullCode()
-- tr=- means omit transliteration altogether
if tr == "-" then
tr = nil
else
-- Try to auto-transliterate.
if not tr then
-- First, try transliterating the normalization, if supplied.
if norm and normsc and not normsc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
local subbed_norm = export.apply_subst(norm, subst, track)
tr = (lang:transliterate(subbed_norm, normsc))
end
-- If no normalization, or the normalization is in a Latin script, or the transliteration of the
-- normalization failed, fall back to transliterating the usex.
if not tr then
local subbed_usex = export.apply_subst(usex, subst, track)
tr = (lang:transliterate(subbed_usex, sc))
end
-- If the language doesn't have capitalization and is specified in [[Module:usex/data]], then capitalize any sentences.
-- Exclamation marks and question marks need to be unescaped then re-escaped.
if tr and mw.loadData(usex_data_module).capitalize_sentences[langcode] then
tr = tr:gsub("!", "!")
:gsub("?", "?")
tr = rsub(tr, "%f[^%z%p%s](.)(.-[%.%?!‽])", function(m1, m2)
return uupper(m1) .. m2
end)
tr = tr:gsub("!", "!")
:gsub("%?", "?")
end
end
-- If there is still no transliteration, then add a cleanup category.
if not tr and needs_translit[langcode] and not sc:getCode():find("Lat") and sc:getCode() ~= "None" then
table.insert(categories, ("Daxwazên translîterasyona %s bi %s"):format(oblique_plural(example_type),
lang:getCanonicalName()))
end
end
if tr then
tr = require(script_utilities_module).tag_translit(tr, langcode, "usex")
end
if ts then
ts = require(script_utilities_module).tag_transcription(ts, langcode, "usex")
ts = "/" .. ts .. "/"
end
local function do_language_and_script_tagging(usex, lang, sc, css_class)
usex = require(links_module).embedded_language_links{term = usex, lang = lang, sc = sc}
local face
if quote then
face = nil
else
face = "term"
end
usex = require(script_utilities_module).tag_text(usex, lang, sc, face, css_class)
return usex
end
if usex then
usex = do_language_and_script_tagging(usex, lang, sc,
quote == "quote-meta" and css_classes.quotation_with_citation or
quote and css_classes.quotation or css_classes.example)
if not nocat then
-- 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
-- Here we don't want to use the subpage text because we check [[Citations:foo]] against [[foo]] and
-- if there's a slash in what follows 'Citations:', we want to check against the full page with the
-- slash.
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
-- Categories beginning with the language name should use full languages as that's what the poscat
-- system requires, but 'Requests for' categories can use etymology-only languages.
table.insert(categories, ("%s bi %s"):format(ucfirst(example_type), termlang:getFullName()))
end
end
else
if tr then
table.insert(categories, ("Daxwazên skrîpta nimûneyan bi %s"):format(lang:getCanonicalName()))
end
-- TODO: Trigger some kind of error here
usex = "<small>(ji kerema xwe metna orîjînal a vê nimûneyê binivîsin)</small>"
end
if norm then
-- Use brackets in HTML entity format just to make sure we don't interfere with links; add brackets before
-- script tagging so that if the script tagging increases the font size, the brackets get increased too.
norm = "[" .. norm .. "]"
norm = do_language_and_script_tagging(norm, lang, normsc, css_classes.normalization)
end
local result = {}
if leftq and #leftq > 0 then
table.insert(result, span(css_classes.qualifier, require("Module:qualifier").format_qualifier(leftq)) .. " ")
end
table.insert(result, usex)
if rightq and #rightq > 0 then
table.insert(result, " " .. span(css_classes.qualifier, require("Module:qualifier").format_qualifier(rightq)))
end
if ref and ref ~= "" then
track("ref")
table.insert(result, ref)
end
return {
usex = table.concat(result),
tr = tr,
ts = ts,
norm = norm
}
end
local function format_audio(audio)
if audio then
return " [[File:" .. audio .. "|25px]]"
else
return ""
end
end
--[==[
Format a usex or quotation. Implementation of {{tl|ux}}, {{tl|quote}} and {{tl|quote-*}} templates (e.g.
{{tl|quote-book}}, {{tl|quote-journal}}, {{tl|quote-web}}, etc.). FIXME: Should also be used by {{tl|Q}} and
[[Module:Quotations]].
Takes a single object `data`, containining the following fields:
* `usex`: The text of the usex or quotation to format. Semi-mandatory (a maintenance line is displayed if missing).
* `lang`: The language object of the text. Mandatory. May be an etymology language.
* `termlang`: The language object of the term, which may be different from the language of the text. Defaults to `lang`.
Used for categories. May be an etymology language.
* `sc`: The script object of the text. Autodetected if not given.
* `quote`: If specified, this is a quotation rather than a usex (uses a different CSS class that affects formatting).
* `inline`: If specified, format the usex or quotation inline (on one line).
* `translation`: Translation of the usex or quotation, if in a foreign language.
* `lit`: Literal translation (if the translation in `translation` is idiomatic and differs significantly from the
literal translation).
* `normalization`: Normalized version of the usex or quotation (esp. for older languages where nonstandard spellings
were common).
* `normsc`: Script object of the normalized text. If unspecified, use the script object given in `sc` if any, otherwise
do script detection on the normalized text. If "auto", do script detection on the normalized text even if
a script was specified in `sc`.
* `transliteration`: Transliteration of the usex. If unspecified, transliterate the normalization if specified and not
in a Latin script and transliterable, otherwise fall back to transliterating the usex text.
* `transcription`: Transcription of the usex, for languages where the transliteration differs significantly from the
pronunciation.
* `subst`: String indicating substitutions to perform on the usex/quotation and normalization prior to transliterating
them. Multiple substs are comma-separated and individual substs are of the form FROM//TO where FROM is a
Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is present in the
substitution.)
* `q`: If specified, a list of left qualifiers to display before the usex/quotation text.
* `qq`: If specified, a list of right qualifiers to display after the usex/quotation text.
* `qualifiers`: If specified, a list of right qualifiers to display after the usex/quotation text, for compatibility
purposes.
* `ref`: Reference text to display directly after the right qualifiers. (FIXME: Instead, this should be actual
references.)
* `audio`: Name of the audio file containing the usex in spoken form.
* `orig`: Original text, if the primary text of the usex or quotation is a translation.
* `origlang`: The language object of the original text. Mandatory if original text given. May be an etymology language.
* `origsc`: The script object of the original text. Autodetected if not given.
* `orignorm`: Normalized version of the original text (esp. for older languages where nonstandard spellings were
common).
* `orignormsc`: Script object of the normalized original text. If unspecified, use the script object given in `origsc`
if any, otherwise do script detection on the normalized original text. If "auto", do script detection
on the normalized text even if a script was specified in `origsc`.
* `origtr`: Transliteration of the original text. If unspecified, transliterate the normalized original text if
specified and not in a Latin script and transliterable, otherwise fall back to transliterating the original
text.
* `origts`: Transcription of the original text, for languages where the transliteration differs significantly from the
pronunciation.
* `origsubst`: String indicating substitutions to perform on the original text and normalization thereof prior to
transliterating them. Multiple substs are comma-separated and individual substs are of the form FROM//TO
where FROM is a Lua pattern and TO is a Lua replacement spec. (FROM/TO is also recognized if no // is
present in the substitution.)
* `origq`: If specified, a list of left qualifiers to display before the original text.
* `origqq`: If specified, a list of right qualifiers to display after the original text.
* `origref`: Reference text to display directly after the right qualifiers of the original text. (FIXME: Instead, this
should be actual references.)
* `source`: Source of the quotation, displayed in parens after the quotation text.
* `footer`: Footer displaying miscellaneous information, shown after the quotation. (Typically this should be in a
small font.)
* `nocat`: Suppress categorization.
* `noreq`: Suppress request for translation when no translation provided.
* `sortkey`: Sort key for categories.
* `brackets`: If specified, show a bracket at the end (used with brackets= in {{tl|quote-*}} templates, which show the
bracket at the beginning, to indicate a mention rather than a use).
* `class`: Additional CSS class surrounding the entire formatted text.
]==]
function export.format_usex(data)
local lang = data.lang
local termlang = data.termlang or lang
local translation = data.translation
local quote = data.quote
local lit = data.lit
local audio = data.audio
local source = data.source
local brackets = data.brackets
local footer = data.footer
local sortkey = data.sortkey
local noreq = data.noreq
local title
if data.pagename then -- for testing, doc pages, etc.
title = mw.title.new(data.pagename)
if not title then
error(("Bad value for `data.pagename`: '%s'"):format(data.pagename))
end
else
title = mw.title.getCurrentTitle()
end
--[[
if title.nsText == "Reconstruction" or lang:hasType("reconstructed") then
error("Reconstructed languages and reconstructed terms cannot have usage examples, as we have no record of their use.")
end
]]
if lit then
lit = "(herfiyen, “" .. span(css_classes.literally, lit) .. "”)"
end
if source then
source = wrap("span", "jeder", " — (" .. source .. ")", nil, "font-size: 0.85em")
end
if footer then
footer = span(css_classes.footer, footer)
end
local example_type = quote and "jêgirtin" or "nimûne" -- used in error messages and categories
local categories = {}
local usex_obj = process_usex_text {
lang = lang,
termlang = termlang,
usex = data.usex,
sc = data.sc,
tr = data.transliteration,
ts = data.transcription,
norm = data.normalization,
normsc = data.normsc,
subst = data.subst,
quote = data.quote,
title = title,
q = data.q,
qq = data.qq,
ref = data.ref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
}
local orig_obj = data.orig and process_usex_text {
lang = data.origlang,
-- Any categories derived from the original text should use the language of the main text or the term inside it,
-- not the language of the original text.
termlang = termlang,
usex = data.orig,
sc = data.origsc,
tr = data.origtr,
ts = data.origts,
norm = data.orignorm,
normsc = data.orignormsc,
subst = data.origsubst,
quote = data.quote,
title = title,
q = data.origq,
qq = data.origqq,
ref = data.origref,
nocat = data.nocat,
categories = categories,
example_type = example_type,
} or nil
if translation == "-" then
translation = nil
local plural_example_type = example_type == "jêgirtin" and "Jêgirtinên" or "Nimûneyên"
table.insert(categories, ("%s tercimeyê vedişêrin yên %s"):format(plural_example_type, lang:getFullName()))
elseif translation then
translation = span(css_classes.translation, translation)
elseif not noreq then
local langcode = lang:getFullCode()
local origlangcode = data.origlang and data.origlang:getFullCode()
if langcode ~= "ku" and langcode ~= "navz" and langcode ~= "und" and origlangcode ~= "ku" then
-- add trreq category if translation is unspecified and language is not english, translingual or
-- undetermined
table.insert(categories, ("Daxwazên tercimekirina %s bi %s"):format(oblique_plural(example_type), lang:getCanonicalName()))
if quote then
translation = "<small>(ji kerema xwe tercimeya kurmancî ya vê jêgirtinê binivîsin)</small>"
else
translation = "<small>(ji kerema xwe tercimeya kurmancî ya vê nimûneyê binivîsin)</small>"
end
end
end
local function generate_inline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
if source then
ins(" " .. source)
end
ins(format_audio(audio))
local function insert_annotations(obj)
if obj.norm then
ins(" " .. obj.norm)
end
if obj.tr or obj.ts then
ins(" ―")
if obj.tr then
ins(" " .. obj.tr)
end
if obj.ts then
ins(" " .. obj.ts)
end
end
end
insert_annotations(usex_obj)
if orig_obj then
ins(" (")
ins("[" .. original_text .. orig_obj.usex .. "]")
insert_annotations(orig_obj)
ins(")")
end
if translation then
ins(" ― " .. translation)
end
if lit then
ins(" " .. lit)
end
if footer then
ins(" " .. footer)
end
if data.brackets then
ins("]")
end
return table.concat(result)
end
local function generate_multiline_usex()
local result = {}
local function ins(text)
table.insert(result, text)
end
ins(usex_obj.usex)
ins(source)
ins(format_audio(audio))
local any_usex_annotations = usex_obj.tr or usex_obj.ts or usex_obj.norm or translation or lit
local any_orig_annotations = orig_obj and (orig_obj.tr or orig_obj.ts or orig_obj.norm)
if any_usex_annotations or orig_obj or footer then
ins("<dl>")
local function insert_dd(text)
if text then
ins("<dd>")
ins(text)
if data.brackets then
ins(BRACKET_SUB)
end
ins("</dd>")
end
end
insert_dd(usex_obj.norm)
insert_dd(usex_obj.tr)
insert_dd(usex_obj.ts)
if orig_obj then
insert_dd("[" .. original_text .. orig_obj.usex .. "]")
if any_orig_annotations then
ins("<dd><dl>")
insert_dd(orig_obj.norm)
insert_dd(orig_obj.tr)
insert_dd(orig_obj.ts)
ins("</dl></dd>")
end
end
insert_dd(translation)
insert_dd(lit)
if footer then
if any_usex_annotations then
ins("<dd><dl>")
end
insert_dd(footer)
if any_usex_annotations then
ins("</dl></dd>")
end
end
ins("</dl>")
elseif data.brackets then
ins(BRACKET_SUB)
end
result = table.concat(result)
if data.brackets then
result = result:gsub("^(.*)" .. BRACKET_SUB, "%1]"):gsub(BRACKET_SUB, "")
end
return result
end
local is_inline
if data.inline == "auto" then
result = generate_inline_usex()
if get_character_width(convert_to_raw_text(result)) > MAX_INLINE_WIDTH then
result = generate_multiline_usex()
is_inline = false
else
is_inline = true
end
elseif data.inline then
result = generate_inline_usex()
is_inline = true
else
result = generate_multiline_usex()
is_inline = false
end
local class = quote and css_classes.container_quotation or css_classes.container_ux
if data.class then
class = class .. " " .. data.class
end
result = (is_inline and span or div)(class, result)
return result .. require("Module:utilities").format_categories(categories, lang, sortkey)
end
return export
ocm71im5yzpkzqm8ct13b2wwk33sea8
jinkujî
0
975908
6329796
6309349
2026-08-12T22:41:23Z
Wikihez
7344
6329796
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# {{mijar|ku|mirin}} [[kuştin|Kuştina]] [[jin]]an.
#* {{jêder-malper|ku|jêgirtin=Ez bawer im di dirindeyî û '''jinkujiya''' zilamekî de destê jinekê li pişt e.|url=https://www.rudaw.net/kurmanci/lifestyle/03112017-amp|sernav=Barîkan dixwaze hizra jin û mêrên Kurd biguherîne|malper=rudaw.net|dîrok=03.11.2017}}
#* {{jêder-malper|ku|jêgirtin=Dil dixwest ku di vê nivîsê de em qala têkoşîn, berxwedan, jêhatîbûn û destkeftiyên jinan ên bi derfêtên kêm, lê bi xebatên serkeftî dimeşînin bikin. Lê mixabin meseleya '''jinkujiyê''' nayê taloqkirin û temaşekirin.|url=https://xwebun1.org/jinkuji-xiyaneta-zilam-a-li-sire-dayike-ye/|sernav=Jinkujî xiyaneta zilam a li şîrê dayikê ye|dîrok=01.09.2022}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê}}
==== Nêzîk ====
* [[dayikkujî]]
* [[keçkujî]]
* [[xwişkkujî]]
==== Têkildar ====
* [[mêrkujî]]
* [[mirovkujî]]
* [[bavkujî]], [[babkujî]]
* [[gelkujî]]
* [[komkujî]]
==== Etîmolojî ====
Ji {{paş|ku|jin|-kujî}}.
==== Werger ====
{{werger-ser}}
* {{Z|de}}: {{W+|de|Femizid|n|nt}}, {{W+|de|Frauenmord|n}}
* {{Z|da}}: {{W-|da|femicide}}
* {{Z|fi}}: {{W-|fi|naismurha}}
* {{Z|fr}}: {{W+|fr|féminicide|n}}, {{W-|fr|fémicide|n}}, {{W+|fr|gynocide|n}}
* {{Z|gl}}: {{W-|gl|feminicidio|n}}, {{W-|gl|femicidio|n}}
* {{Z|ka}}: {{W-|ka|ფემიციდი}}
* {{Z|nl}}: {{W-|nl|vrouwenmoord|m}}, {{W-|nl|feminicide|m}}, {{W-|nl|gynocide|m}}, {{W-|nl|femicide|m}}
* {{Z|en}}: {{W+|en|femicide}}, {{W+|en|womanslaughter}}, {{W+|en|gynocide}}, {{W+|en|gynecide}}, {{W+|en|gynecocide}}
* {{Z|it}}: {{W+|it|femminicidio|n}}, {{W-|it|femmicidio|n}},
* {{Z|ja}}: {{W-|ja|フェミサイド|tr=femisaido}}, {{W-|ja|フェミニサイド|tr=feminisaido}}
* {{Z|ca}}: {{W+|ca|feminicidi|n}}, {{W-|ca|femicidi|n}}
* {{Z|ko}}: {{W-|ko|여성살해}}, {{W-|ko|녀성살해}}
* {{Z|pl}}: {{W-|pl|kobietobójstwo|nt}}
* {{Z|pt}}: {{W+|pt|feminicídio|n}}, {{W-|pt|femicídio|n}}
* {{Z|ru}}: {{W-|ru|фемици́д|n}}, {{W-|ru|феминици́д|n}}
* {{Z|es}}: {{W+|es|femicidio|n}}, {{W-|es|feminicidio|n}}
* {{Z|sv}}: {{W+|sv|kvinnomord|nt}}
* {{Z|el}}: {{W+|el|γυναικοκτονία|m}}
{{werger-bin}}
:{{werger çavkanî|en|femicide|beş=Ev qismê Wergerê|oldid=75495689}}
tniyz9x9lk5fml3dmk2ihltsz5y8ytz
rolyef
0
978803
6329617
5762695
2026-08-12T13:31:32Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329617
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Cureyek [[peyker]] an [[kar]]ên [[huner]]î yên din ên ku tê de şekl an fîgurên ji paşxanek rast û pan bi pêş de derdikevin.
#* {{jêder-kovar|ku|jêgirtin=Jina ku wêneya wê li ser '''rolyefê''' hatibû resimandin, ji aliye Hanold ve bi navê Gradiva tê pejirandin.|kovar=Mülemma|sernav=Wêje û Psîkanalîz|url=https://www.academia.edu/32642097/M%C3%BClemma_Dergisi_3._Say%C4%B1.pdf|nivîskar=Vejdi Demir|hejmar=3|saş=12/2016|rûpel=33}}
==== Etîmolojî ====
Bi rêya {{deyn|tr|ku|rölyef}}, ji {{ji|fr|ku|relief}}.
==== Etîmolojî ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|نَقْش نَافِر|n}}
* {{Z|en}}: {{W+|en|relief}}
* {{Z|ja}}: {{W+|ja|うきぼり|tr=浮き彫り, ukibori}}, {{W-|ja|リリーフ|tr=rirīfu}}, {{W-|ja|レリーフ|tr=rerīfu}}
* {{Z|ko}}: {{W+|ko|부조}}
* {{Z|es}}: {{W+|es|relieve|n}}
* {{Z|tr}}: {{W+|tr|rölyef}}, {{W+|tr|kabartma}}
* {{Z|vi}}: {{W-|vi|рhù điêu}}
{{werger-bin}}
37vvztv3ko9b3bjjg47omiujm9un6zm
6329618
6329617
2026-08-12T13:31:39Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329618
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|z=m}}
# Cureyek [[peyker]] an [[kar]]ên [[huner]]î yên din ên ku tê de şekl an fîgurên ji paşxanek rast û pan bi pêş de derdikevin.
#* {{jêder-kovar|ku|jêgirtin=Jina ku wêneya wê li ser '''rolyefê''' hatibû resimandin, ji aliye Hanold ve bi navê Gradiva tê pejirandin.|kovar=Mülemma|sernav=Wêje û Psîkanalîz|url=https://www.academia.edu/32642097/M%C3%BClemma_Dergisi_3._Say%C4%B1.pdf|nivîskar=Vejdi Demir|hejmar=3|sal=12/2016|rûpel=33}}
==== Etîmolojî ====
Bi rêya {{deyn|tr|ku|rölyef}}, ji {{ji|fr|ku|relief}}.
==== Etîmolojî ====
{{werger-ser}}
* {{Z|ar}}: {{W-|ar|نَقْش نَافِر|n}}
* {{Z|en}}: {{W+|en|relief}}
* {{Z|ja}}: {{W+|ja|うきぼり|tr=浮き彫り, ukibori}}, {{W-|ja|リリーフ|tr=rirīfu}}, {{W-|ja|レリーフ|tr=rerīfu}}
* {{Z|ko}}: {{W+|ko|부조}}
* {{Z|es}}: {{W+|es|relieve|n}}
* {{Z|tr}}: {{W+|tr|rölyef}}, {{W+|tr|kabartma}}
* {{Z|vi}}: {{W-|vi|рhù điêu}}
{{werger-bin}}
o39xb4zv5sv28rp0t1ghuxq7vnp4neb
miñ
0
995365
6329849
5221758
2026-08-12T23:52:52Z
Wikihez
7344
6329849
wikitext
text/x-wiki
{{bnr-h|mîn|mìn|min}}
== {{ziman|crh}} ==
=== Hejmar ===
{{hejmar|crh}}
# [[hezar]], 1000
33zpkjz7po6dhj27c77hxm6tyj4n59t
mìn
0
1035765
6329848
5505623
2026-08-12T23:52:38Z
Wikihez
7344
6329848
wikitext
text/x-wiki
{{bnr-h|mîn|min|miñ}}
== {{ziman|gd}} ==
=== Navdêr ===
{{navdêr|gd|z=n}}
# {{f|gd|erdnîgarî}} {{g|ku|zevî}}
=== Çavkanî ===
{{rûpela wergerê|gd|zevî}}
== {{ziman|vi}} ==
=== Navdêr ===
{{navdêr|vi}}
# {{mijar|vi|çek}} {{g|ku|mîn}}, {{g|ku|mayin}}
=== Çavkanî ===
{{rûpela wergerê|vi|mîn}}
4o5xqztmzj3b96pjvdidaj5q04gn1hd
فلسفة الجمال
0
1200562
6329705
5530562
2026-08-12T20:03:04Z
Wikihez
7344
/* */ bi [[MediaWiki:Gadget-AjaxEdit.js|AjaxEdit]]ê re
6329705
wikitext
text/x-wiki
== {{ziman|ar}} ==
=== Navdêr ===
{{navdêr|ar|فَلْسَفَةُ الْجَمَال|z=m}}
# {{mijar|ar|zanist}} {{g|ku|estetîk}}
#* {{nimûne?|ar}}
=== Çavkanî ===
{{rûpela wergerê|ar|estetîk}}
982rfbcqp11x2oma1wgt54ew773t8sy
MediaWiki:Gadget-aWa.js
8
1240219
6329706
6265692
2026-08-12T20:08:50Z
Bikarhêner
3719
6329706
javascript
text/javascript
"use strict"; /*** [aWa]: [[en:MediaWiki:Gadget-aWa.js|A Wonderfool Archiver]] ***/
// {{documentation}} <nowiki>
/*jshint shadow:true, scripturl:true, undef:true, latedef:true, unused:true */
/*global mw, jQuery */
(function () {
if (mw.config.get('wgAction') !== 'view')
return;
var monthNames = [
"kanûna paşîn", "sibat", "adar", "nîsan", "gulan", "hezîran", "tîrmeh",
"tebax", "îlon", "çiriya pêşîn", "çiriya paşîn", "kanûna pêşîn"
];
var revMonthNames = {};
for (var j = 0; j < monthNames.length; ++j)
revMonthNames[monthNames[j]] = j;
function el(tag, child, attr, events) {
var node = document.createElement(tag);
if (child) {
if (typeof child !== 'object')
child = [child];
for (var i = 0; i < child.length; ++i) {
var ch = child[i];
if ((ch === void(null)) || (ch === null))
continue;
else if (typeof ch !== 'object')
ch = document.createTextNode(String(ch));
node.appendChild(ch);
}
}
if (attr) for (var key in attr) {
node.setAttribute(key, String(attr[key]));
}
if (events) for (var key in events) {
node.addEventListener(key, events[key], false);
}
return node;
}
var forumId, remindersList = [];
var wgPageName = mw.config.get('wgPageName');
if ((wgPageName === "Wîkîferheng:Daxwazên peyitandinê") ||/^Wîkîferheng:Daxwazên_peyitandinê/.test(wgPageName)) {
forumId = 'dp';
remindersList.push(["Ji bîr neke ji bo madeyên peyitandî şablona ", el('code', "{{bêçavkanî}}"), " û/yan ", el('code', "{{p-mane}}"), " ji rûpelê rake."]);
} else if ((wgPageName === "Wîkîferheng:Daxwazên_jêbirinê") || /^Wîkîferheng:Daxwazên_jêbirinê/.test(wgPageName)) {
forumId = 'dj';
remindersList.push(["Ji bîr neke ji bo madeyên ku neyên jêbirin şablona ", el('code', "{{jêbirin}}"), " ji rûpelê rake."]);
} else if ((wgPageName === "Wîkîferheng:Daxwazên_standardkirinê") || /^Wiktionary:Requests_for_moves,_mergers_and_splits\/Unresolved_requests\//.test(wgPageName)) {
forumId = 'ds';
remindersList.push(["Ji bîr neke ji bo madeyên ku hatine standardkirin şablona ", el('code', "{{standardkirin}}"), " û/yan ", el('code', "{{ds}}"), " ji rûpelê rake."]);
} else if ((wgPageName === "Wîkîferheng:Daxwazên_zelalkirinê") || /^Wiktionary:Requests_for_cleanup\/archive\/\d+\/Unresolved_requests$/.test(wgPageName)) {
forumId = 'dz';
remindersList.push(["Ji bîr neke ji bo madeyên ku hatine sererastkirin şablona ", el('code', "{{wdz}}"), " ji rûpelê rake."]);
} else if (wgPageName === "Wîkîferheng:Xebat") {
forumId = 'xebat';
remindersList.push(["Nîqaşên vê rûpelê tim li [[Wîkîferheng:Xebat/arşîv 1|Wîkîferheng:Xebat/arşîv NO]] têne arşîvkirin."]);
} else if (wgPageName === "Wîkîferheng:ceribandin/aWa") {
forumId = 'SANDBOX';
remindersList.push(["NO DANGER: Nothing in this room will kill you."]);
} else
return;
if (forumId !== 'feedback')
remindersList.push(["Nîqaşên xilasbûyî herî kêm 7 rojan bê arşîv bihêlin."]);
function link(child, href, attr, ev) {
attr = attr || {};
ev = ev || {};
if (typeof href === 'string')
attr.href = href;
else {
attr.href = 'javascript:void(null);';
ev.click = href;
}
return el('a', child, attr, ev);
}
var rxPath = new RegExp('^' + mw.config.get('wgArticlePath').replace('$1', '(.*)') + '$'); // XXX: ugly hack
function getPageFromUrl(url) {
var m, target;
try {
target = new URL(url, location.href);
} catch (e) {
return null;
}
if (target.host !== location.host)
return null;
if (target.pathname === mw.config.get('wgScript'))
return new mw.Title(target.searchParams.get('title'));
else if ((m = rxPath.exec(target.pathname)))
return new mw.Title(decodeURIComponent(m[1]));
return null;
}
// NOTE: findSectionNumber() previously relied on the .mw-editsection link's
// action=edit§ion=N query param. MobileFrontend/Minerva strips the
// .mw-editsection span from headings entirely, so this always returned null
// on mobile and silently dropped the "arşîv bike" link (and, worse, calling
// .nextSibling on a missing .mw-editsection later on would throw and abort
// the rest of the init loop). Section numbers are now resolved once up
// front via action=parse&prop=sections (see sectionMapPromise below) and
// matched to headings by document order instead.
var api = new mw.Api();
// XXX: seriously, action=parse should return this.
var starttimestamp, basetimestamp;
api.get({
action: 'query',
pageids: mw.config.get('wgArticleId'),
prop: 'revisions',
curtimestamp: 1,
rvstartid: mw.config.get('wgRevisionId'),
rvprop: 'timestamp',
rvlimit: 1
}).done(function (result) {
starttimestamp = result.curtimestamp;
basetimestamp = result.query.pages[mw.config.get('wgArticleId')].revisions[0].timestamp;
});
// Resolve top-level (level === '2') section indices via the API instead of
// scraping .mw-editsection, so this also works on mobile skins that strip
// that markup out of the rendered heading.
var sectionMapPromise = api.get({
action: 'parse',
page: wgPageName,
prop: 'sections',
formatversion: 2
}).then(function (result) {
return result.parse.sections.filter(function (s) { return s.level === '2'; });
}, function (code, result) {
console.error('aWa: failed to fetch section map', code, result);
return [];
});
var toArchive = {};
var uiQueue, uiStatus;
function setStatus(child, node) {
node = node || uiStatus;
if (!node.preceder)
node.parentNode.insertBefore(node.preceder = document.createTextNode(''), node);
while (node.firstChild)
node.removeChild(node.firstChild);
if (!child) {
if (node.preceder !== true)
node.preceder.data = "";
return;
} else {
if (node.preceder !== true)
node.preceder.data = ": ";
}
if (typeof child === 'string') {
node.appendChild(document.createTextNode(child));
return;
}
for (var i = 0; i < child.length; ++i) {
var ch = child[i];
if ((ch === void(null)) || (ch === null))
continue;
else if (typeof ch !== 'object')
ch = document.createTextNode(String(ch));
node.appendChild(ch);
}
}
var uiProceed, uiWrapper;
var uiArchiver = el('div', [
el('form', [
uiWrapper = el('fieldset', [
// ↓↓↓↓↓↓ how fitting.
el('legend', [
"A ", link(["Wonderfool"], mw.util.getUrl("wonderfool")), " Archiver ",
el('small', ["[", link('veşêre', function () {
this.style.fontWeight = uiWrapper.classList.toggle('collapsed') ? 'bold' : '';
}), "]"])
]),
uiQueue = el('ul', null, { 'class': 'queue' }),
el('ul', remindersList.map(function (nodes) {
return el('li', nodes);
}), { 'class': 'reminders' }),
uiProceed = el('input', null, { type: 'submit', value: "Dewam bike" }), ' ',
el('input', null, { type: 'button', value: "Bigre" }, {
click: function () {
uiArchiver.style.display = 'none';
}
}),
uiStatus = el('p', null, { 'class': 'main-statusbar' })
])
], { action: 'javascript:void(0);' }, {
submit: function () {
if (!uiQueue.hasChildNodes()) { // XXX: should probably check the toArchive object instead
setStatus("The archiving queue is empty.");
return;
}
if (forumId !== 'SANDBOX') {
uiProceed.disabled = true;
uiArchiver.classList.add('archiving-in-progress');
}
var complete = false;
window.addEventListener('beforeunload', function (ev) {
if (!complete) {
return (ev.returnValue = "Discussions are still being archived.");
}
}, false);
setStatus("Naveroka rûpelê tê girtin…");
api.get({
action: 'parse',
oldid: mw.config.get('wgRevisionId'),
prop: 'parsetree',
}).then(function (result) {
setStatus("Slicing up discussions…");
var prettyPageName = (new mw.Title(wgPageName)).getPrefixedText();
function serialiseMarkup(node) {
if (node.nodeType === node.TEXT_NODE)
return node.data;
var children = [];
for (var child = node.firstChild; child; child = child.nextSibling)
children.push(serialiseMarkup(child));
if (node.tagName === 'part')
return '|' + children.join('');
else if (node.tagName === 'tplarg')
return '{{{' + children.join('') + '}}}';
else if (node.tagName === 'template')
return '{{' + children.join('') + '}}';
else if (node.tagName === 'ext')
return '<' + children.join('');
else if (node.tagName === 'attr')
return children.join('') + (node.parentNode.lastChild === node ? '/>' : '');
else if (node.tagName === 'inner')
return '>' + children.join('');
else
return children.join('');
}
var parseTree = jQuery.parseXML(result.parse.parsetree['*']);
var headerMap = {};
var headers = parseTree.getElementsByTagName('h');
for (var i = 0; i < headers.length; ++i) {
headerMap[headers[i].getAttribute('i')] = headers[i];
}
var majorQueue = [], minorQueue = [], obliterated = [];
var keys = Object.keys(toArchive);
for (var j = 0; j < keys.length; ++j) {
var item = toArchive[keys[j]];
var sectHead = headerMap[item.sect];
var sectContents = [];
for (
var node = sectHead, next = sectHead.nextSibling;
node && (!node.getAttribute || !node.getAttribute('level') || (+node.getAttribute('level') > +sectHead.getAttribute('level')) || (node === sectHead));
(next = node.nextSibling, node.parentNode.removeChild(node), node = next)
) {
sectContents.push(serialiseMarkup(node));
}
var secttext = sectContents.join('');
var discussionTitle;
switch (forumId) {
case 'dj' : discussionTitle = "Nîqaşa [[" + prettyPageName + "|jêbirinê]]" ; break;
case 'rfdo' : discussionTitle = "Nîqaşa [[" + prettyPageName + "|ceribandinê]]" ; break;
case 'dp' : discussionTitle = "Nîqaşa [[" + prettyPageName + "|peyitandinê]]" ; break;
case 'dz' : discussionTitle = "Nîqaşa [[" + prettyPageName + "|zelalkirinê]]" ; break;
case 'ds' : discussionTitle = "Nîqaşa [[" + prettyPageName + "|standardkirinê]]" ; break;
case 'xebat' : discussionTitle = item.secttitle ; break;
default : discussionTitle = "Archived from [[" + prettyPageName + "]]" ; break;
}
var rxStamp = /(\d\d?):(\d\d),\s*(\d+)\s*([A-ZÎÛÇŞ][a-zîûçş]+)\s*(\d\d\d\d+)\s*\(UTC\)/g;
var m, timestamps = [];
while ((m = rxStamp.exec(secttext)))
timestamps.push(Date.UTC(parseInt(m[5], 10), revMonthNames[m[4]], parseInt(m[3], 10), parseInt(m[1], 10), parseInt(m[2], 10)));
timestamps.sort();
if ((timestamps.length > 0) && (forumId !== 'xebat')) {
var first = new Date(timestamps[0]), last = new Date(timestamps[timestamps.length - 1]);
if (first.getUTCFullYear() === last.getUTCFullYear()) {
if (first.getUTCMonth() === last.getUTCMonth())
discussionTitle += ": " + monthNames[first.getUTCMonth()] + " " + first.getUTCFullYear();
else
discussionTitle += ": " + monthNames[first.getUTCMonth()] + "–" + monthNames[last.getUTCMonth()] + " " + first.getUTCFullYear();
} else {
discussionTitle += ": " + monthNames[first.getUTCMonth()] + " " + first.getUTCFullYear() + '–' +
monthNames[last.getUTCMonth()] + " " + last.getUTCFullYear();
}
}
if (!item.talk) {
obliterated.push(item.secttitle);
continue; // requested not to archive.
}
if (forumId === 'xebat') {
// The section title above is now the exact original
// heading text (e.g. "Tercimeyên zel"), and
// MediaWiki will add "== Tercimeyên zel ==" itself
// via sectiontitle when posting with section=new.
// So just drop the original heading line instead of
// wrapping it in a {{fake==}} placeholder — keeping
// it would duplicate the heading.
secttext = secttext.replace(/^(=+)(.*?)\1\n?/, '');
} else {
secttext = secttext.replace(/^(=+)(.*?)\1(?=\n|$)/, '{{fake$1|1=$2}}');
}
majorQueue.push({
targetPage: item.talk,
uiStatus: item.uiStatus,
sectTitle: discussionTitle,
summary: '[[MediaWiki:Gadget-aWa.js/belgekirin|aWa]]: Arşîvkirina nîqaşê ji rûpela [[' + prettyPageName + ']]',
content: '{{arşîv-ser|' + forumId + '|' + item.result +
'|link=Taybet:PermanentLink/' + mw.config.get('wgRevisionId') + '#' + item.sectid + '}}\n' +
secttext.trimRight() +
'\n{{arşîv-bin}}'
});
var backlinks = item.backlinks;
for (var k = 0; k < backlinks.length; ++k) {
if (!backlinks[k])
continue;
var saneDiscussionTitle = discussionTitle.replace(/\[\[(?:.*?\|)?(.*?)\]\]/g, '$1'); // XXX
var linkTarget = item.talk.getPrefixedText() + "#" + saneDiscussionTitle;
minorQueue.push({
targetPage: backlinks[k].page,
uiStatus: backlinks[k].uiStatus,
sectTitle: discussionTitle,
summary: "[[MediaWiki:Gadget-aWa.js/belgekirin|aWa]]: Li [[" + linkTarget + "]] lînka nîqaşê ji [[" + prettyPageName + "]] tê zêdekirin",
content: ": ''Binêre [[" + linkTarget + "]].''~~~~"
});
}
}
var headers = Array.prototype.slice.call(parseTree.getElementsByTagName('h'));
for (var i = 0; i < headers.length; ++i) {
if (headers[i].getAttribute('level') !== '1')
continue;
if (!/^=\s*(Kanûna paşîn|Sibat|Adar|Nîsan|Gulan|Hezîran|Tîrmeh|Tebax|Îlon|Çiriya pêşîn|Çiriya paşîn|Kanûna pêşîn)\s+\d\d\d\d+\s*=$/.test(headers[i].textContent))
continue;
out: for (var node = headers[i].nextSibling;; node = node.nextSibling) {
switch (node ? node.nodeType : null) {
case parseTree.ELEMENT_NODE:
if ((node.tagName !== 'h') || (node.getAttribute('level') !== '1'))
break out;
/* fall through */
case null:
while ((headers[i].nextSibling) !== node)
headers[i].parentNode.removeChild(headers[i].nextSibling);
headers[i].parentNode.removeChild(headers[i]);
break out;
case parseTree.TEXT_NODE:
if (!/^\s*$/.test(node.data))
break out;
break;
default:
break out;
}
}
}
var wikitext = serialiseMarkup(parseTree.documentElement);
setStatus("Nîqaş ji rûpelê tên jêbirin…");
var summary;
var no = "madeyê";
if (majorQueue.length > 1) no = "madeyan";
if (majorQueue.length)
summary = '[[MediaWiki:Gadget-aWa.js/belgekirin|aWa]]: Arşîvkirina ' + majorQueue.length + ' ' + no +' li ' +
majorQueue.map(function (item) { return '[[' + item.targetPage.getPrefixedText() + ']]'; }).join(", ") +
(obliterated.length ? " û jêbirina " + obliterated.length + ": \"" + obliterated.join("\", \"") + "\"": "");
else
summary = "[[MediaWiki:Gadget-aWa.js/belgekirin|aWa]]: Jêbirina " + obliterated.length + " made(yan): \"" + obliterated.join("\", \"") + "\"";
if (forumId === 'SANDBOX') {
setStatus();
alert("Kurte: " + summary + "\nWîkînivîsa dawî:\n\n" + wikitext);
majorQueue.forEach(function (item) {
alert("[[" + item.targetPage.getPrefixedText() + "]]: " + item.sectTitle + "\n\n" + item.content);
});
minorQueue.forEach(function (item) {
alert("[[" + item.targetPage.getPrefixedText() + "]]: " + item.sectTitle + "\n\n" + item.content);
});
return;
}
api.post({
action: 'edit',
pageid: mw.config.get('wgArticleId'),
token: mw.user.tokens.get('csrfToken'),
summary: summary,
notminor: 1,
text: wikitext,
basetimestamp: basetimestamp,
starttimestamp: starttimestamp
}).then(function (result) {
function processQueue(queue) {
return jQuery.when.apply(jQuery, queue.map(function (item) {
setStatus("Tê qeydkirin…", item.uiStatus);
return jQuery.Deferred(function (d) {
api.post({
action: 'edit',
token: mw.user.tokens.get('csrfToken'),
notminor: 1,
section: 'new',
sectiontitle: item.sectTitle,
title: item.targetPage.getPrefixedDb(),
text: item.content,
summary: item.summary,
redirect: 1 // XXX
}).then(function (result) {
if (result.edit.result !== 'Success') {
setStatus("Xeletî binêre konsolê", item.uiStatus);
d.reject();
console.error(result);
return;
}
// XXX: preferably check if a page is a redirect BEFORE archiving.
if (result.redirects) {
var target = result.redirects.pop().to;
setStatus(["Redirected to ", link(target, mw.util.getUrl(target))], item.uiStatus);
d.resolve();
return;
}
setStatus("OK", item.uiStatus);
d.resolve();
}, function (code, result) {
setStatus(["Error: [", el('code', [code]), "]"], item.uiStatus);
console.error('Request error', result);
d.reject();
});
}).promise();
}));
}
if (result.edit.result !== 'Success') {
setStatus("Xeletiyeke nediyar. Ji bo detayan li konsolê binêrin.");
console.error(result);
complete = true;
return;
}
setStatus("Nîqaşên arşîvkirî li rûpelên gotûbêjan tên barkirin…");
processQueue(majorQueue).then(function () {
setStatus("Lînkên vegerînê tên lêzêdekirin…");
processQueue(minorQueue).then(function () {
setStatus("Temam. Tê dîsa barkirin…");
complete = true;
location.reload();
}, function () {
complete = true;
setStatus("Archiving was successful, but there was an error while adding backlinks. You can visit the talk pages to add backlinks manually.");
});
}, function () {
complete = true;
setStatus([
"Oops… there was an error while archiving discussions. Go to your ",
link("contributions list", mw.util.getUrl('Special:Contributions/' + mw.config.get('wgUserName'))),
" to clean things up and try again."
]);
});
}, function (code, result) {
complete = true;
if (code === 'editconflict') {
setStatus([
'Edit conflict detected. Please ',
link('refresh the page', function () {
location.reload();
}),
' and try again.'
]);
return;
}
if (code === 'http') {
setStatus(['Request error: ' + result.textStatus]);
console.error('API request error: ', result);
return;
}
if (code === 'ok-but-empty') {
setStatus(['Returned empty response from server.']);
return;
}
setStatus([
'Error while saving the main discussion page: ',
result.error.info,
' [code ', el('code', result.error.code), ']'
]);
console.error(arguments);
});
}, function (code, result) {
if (code === 'http') {
setStatus('Request error: ' + result.textStatus);
console.error('API request error: ', result);
return;
}
if (code === 'ok-but-empty') {
setStatus('Received empty response from server.');
return;
}
setStatus(['Error: ', result.error.info, ' [code ', el('code', [result.error.code]), ']']);
return;
});
}
})
], {
'class': 'kephir-awa-dialog',
'style': 'display: none;'
});
document.body.appendChild(uiArchiver);
uiStatus.preceder = true;
// Resolves the target page for Xebat archiving: Wîkîferheng:Xebat/arşîv N,
// starting at N=1. If that page exists and is over 70,000 bytes, tries
// N+1, and so on, until it finds a page that's either missing (not yet
// created) or still under the size limit.
function findXebatArchiveTarget(n) {
var pageTitle = 'Wîkîferheng:Xebat/arşîv ' + n;
return api.get({
action: 'query',
titles: pageTitle,
prop: 'info'
}).then(function (result) {
var pages = result.query.pages;
var pageId = Object.keys(pages)[0];
var page = pages[pageId];
// Page doesn't exist yet: safe to use.
if (page.missing !== undefined)
return new mw.Title(pageTitle);
// Page exists but is too big: move on to the next number.
if (page.length > 70000)
return findXebatArchiveTarget(n + 1);
return new mw.Title(pageTitle);
}, function (code, result) {
console.error('aWa: failed to check size of', pageTitle, code, result);
// On error, fall back to using this page rather than blocking archiving.
return new mw.Title(pageTitle);
});
}
var headers = document.querySelectorAll(".mw-heading > h2");
var dupTracker = {};
function makeLinkFor(headerNode, links, age, section) {
var targetChecked = false, targetCheckRequest;
if ((section === null) || (section === undefined))
return;
// On desktop, insert right after the <h2> title but BEFORE any
// DiscussionTools metadata bar (the "Şiroveya dawî" / comment-count /
// author-count line, div.ext-discussiontools-init-section-bar) if one
// is present, and before the plain .mw-editsection edit link — this is
// static markup that nothing else touches, so it's safe.
//
// IMPORTANT: the class 'ext-discussiontools-init-section' on the
// .mw-heading wrapper does NOT reliably indicate the mobile (Minerva)
// skin — DiscussionTools adds this same class on desktop (Vector etc.)
// whenever DT is enabled, which is the normal case on wikis that have
// it turned on. Checking that class was previously used as a mobile
// signal and caused the archive link to be inserted as a sibling AFTER
// the whole .mw-heading div even on desktop, landing it after
// "Şiroveya dawî" instead of before it.
//
// On real Minerva/mobile pages, .mw-heading's contents — the overflow
// menu, subscribe button, and metadata bar — are OOUI widgets
// built/rebuilt by DT's own JS shortly after page load, and that
// rebuild wipes out anything inserted inside .mw-heading beforehand
// (tried re-inserting via MutationObserver on every DT mutation too —
// still didn't survive). So on Minerva we insert as a sibling right
// after the whole .mw-heading div instead — outside DT's reach — which
// lands the link after the metadata bar rather than before it. We
// detect Minerva via mw.config's skin name, not via a DT-added class.
var mwHeadingDiv = headerNode.parentNode;
var isMobileSkin = mw.config.get('skin') === 'minerva';
var metadataBar = mwHeadingDiv.querySelector('.ext-discussiontools-init-section-bar');
var insertParent, insertBefore;
if (isMobileSkin) {
insertParent = mwHeadingDiv.parentNode;
insertBefore = mwHeadingDiv.nextSibling;
} else if (metadataBar) {
// Desktop with DiscussionTools enabled: insert inside .mw-heading,
// right before the metadata bar (which holds "Şiroveya dawî" etc.)
insertParent = mwHeadingDiv;
insertBefore = metadataBar;
} else {
// Desktop, no DT metadata bar at all (DT disabled/older markup):
// fall back to right after the header node itself.
insertParent = mwHeadingDiv;
insertBefore = headerNode.nextSibling;
}
var archiveSpan = el('span', [
'[', link('arşîv bike', function (ev) {
// Defensively stop this from bubbling into any ancestor click
// handling (DiscussionTools on Minerva/mobile attaches its own
// click handling across .mw-heading) and from following the
// javascript:void(null) href as a "real" navigation.
if (ev) {
ev.preventDefault();
ev.stopPropagation();
}
var that = this, config = {
secttitle: headerNode.textContent,
sect: section,
sectid: headerNode.id,
temp: 'archived',
backlinks: []
};
setStatus();
uiArchiver.style.display = '';
if (this.item)
return;
toArchive[section] = config;
var uiArchiveTarget, uiArchiveTargetLink, uiArchiveNowhereLink;
var uiResult, results = {};
var uiBacklinks, uiAddBacklink, uiLinksFromSel;
function setTarget(page, noCheck) {
if (!page) {
uiArchiveTarget.style.display = 'none';
uiArchiveNowhereLink.classList.add('active-mode');
uiBacklinks.classList.add('irrelevant');
uiAddBacklink.classList.add('irrelevant');
uiLinksFromSel.classList.add('irrelevant');
if (uiResult) uiResult.classList.add('irrelevant');
if (!config.talk)
return;
delete dupTracker[config.talk.getPrefixedDb()];
config.talk = null;
return;
}
config.talk = page;
dupTracker[page.getPrefixedDb()] = true;
uiArchiveTarget.style.display = '';
uiArchiveTargetLink.textContent = page.getPrefixedText();
uiArchiveTargetLink.href = mw.util.getUrl(page.getPrefixedDb());
uiArchiveNowhereLink.classList.remove('active-mode');
uiBacklinks.classList.remove('irrelevant');
uiAddBacklink.classList.remove('irrelevant');
uiLinksFromSel.classList.remove('irrelevant');
if (uiResult) uiResult.classList.remove('irrelevant');
if (!noCheck) {
targetCheckRequest = api.get({
action: 'query',
titles: page.getPrefixedDb(),
redirects: 1
}).then(function (result) {
if (result.query.redirects) {
setStatus([
"Archive destination [[",
link(page.getPrefixedText(), mw.util.getUrl(page.getPrefixedDb(), { 'redirect': 'no' })),
"]] is a redirect; corrected."
]);
setTarget(new mw.Title(result.query.redirects.pop().to), true);
}
targetChecked = true;
targetCheckRequest = null;
});
} else
targetChecked = true;
}
function addBacklink(page, noCheck) {
if (!page)
return;
var uiItem, blConfig = {};
var i = config.backlinks.length;
config.backlinks.push(blConfig);
var uiLink;
function changePage(newPage, noCheck) {
blConfig.page = newPage;
blConfig.checked = noCheck;
uiLink.textContent = newPage.getPrefixedText();
dupTracker[newPage.getPrefixedDb()] = true;
if (!noCheck) {
blConfig.checkRequest = api.get({
action: 'query',
titles: newPage.getPrefixedDb(),
redirects: 1
}).then(function (result) {
if (result.query.redirects) {
setStatus([
"Backlink destination [[",
link(newPage.getPrefixedText(), mw.util.getUrl(newPage.getPrefixedDb(), { 'redirect': 'no' })),
"]] is a redirect; corrected."
]);
changePage(new mw.Title(result.query.redirects.pop().to), true);
page = blConfig.page;
}
blConfig.checked = true;
blConfig.checkRequest = null;
});
}
}
uiBacklinks.appendChild(uiItem = el('li', [
uiLink = link(page.getPrefixedText(), mw.util.getUrl(page.getPrefixedDb()), {
'title': "Lînkeke vê nîqaşê dê li vê rûpelê were danîn"
}),
el('span', [
" (", link('betal bike', function () {
uiItem.parentNode.removeChild(uiItem);
delete config.backlinks[i];
delete dupTracker[page.getPrefixedDb()];
}, { 'title': "Li wê rûpelê lînkeke nîqaşê daneyîne" }),
" \u2022 ", link("bike ya sereke", function () {
if (!config.talk) {
uiItem.parentNode.removeChild(uiItem);
delete config.backlinks[i];
if (blConfig.checkRequest) blConfig.checkRequest.abort();
setTarget(page, blConfig.checked);
return;
}
if (blConfig.checkRequest) blConfig.checkRequest.abort();
if (targetCheckRequest) targetCheckRequest.abort();
changePage(config.talk, targetChecked);
setTarget(page, blConfig.checked);
page = blConfig.page;
}, { 'title': "Vê rûpelê bike hedefa arşîvê ya sereke" }), ")"
], { 'class': 'hide-when-archiving' }),
blConfig.uiStatus = el('span')
]));
changePage(page, noCheck);
return i;
}
function setResult(result) {
for (var key in results)
results[key].classList.remove('active-mode');
if (results[result])
results[result].classList.add('active-mode');
config.result = result;
}
uiQueue.appendChild(this.item = el('li', [
'"', link(headerNode.textContent, '#' + headerNode.id, {
'title': "Ji bo dîtina nîqaşê bitikîne"
}), '"',
uiArchiveTarget = el('span', [
"→ [[", uiArchiveTargetLink = link('?', 'javascript:void(window.warranty);', {
'title': "Nîqaş dê li vê rûpelê were arşîvkirin"
}), "]]"
]),
config.uiStatus = el('span'),
el('br'), el('small', [
link("hedefê biguhêre", function () {
var newTarget = prompt('Cihê nû ya arşîvê?', config.talk ? config.talk.getPrefixedText() : "");
if (!newTarget)
return;
try {
newTarget = new mw.Title(newTarget);
} catch (e) {
setStatus("Navê rûpelê ne derbasdar e");
return;
}
if (newTarget.getNamespaceId() < 0) {
setStatus("Li valahiyeke taybet nikare were arşîvkirin");
return;
}
newTarget.namespace |= 1;
setTarget(newTarget);
setStatus();
}, { 'title': "Cihê arşîvkirina gotûbêjê biguhêre" }),
" \u2022 ", uiArchiveNowhereLink = link("jê bibe", function () {
setTarget(null);
}, { 'title': "Vê gotûbêjê arşîv neke û jê bibe" }),
" \u2022 ", uiAddBacklink = link("Li rûpela din lînk zêde bike", function () {
var newTarget = prompt("Li kû derê?", '');
if (!newTarget)
return;
try {
newTarget = new mw.Title(newTarget);
} catch (e) {
setStatus("Navê rûpelê ne derbasdar e");
return;
}
if (newTarget.getNamespaceId() < 0) {
setStatus("Li valahiyeke taybet nikare were arşîvkirin");
return;
}
newTarget.namespace |= 1;
addBacklink(newTarget);
setStatus();
}, { 'title': "Rûpelekê lê zêde bike ku tê de lînka vegerîna vê gotûbêjê were danîn" }),
" \u2022 ", uiLinksFromSel = link("ji hilbijartinê", function () {
var sel = window.getSelection(), taken = {};
var intersectsNode = function (node) {
var tmp = document.createRange();
tmp.selectNode(node);
return (this.compareBoundaryPoints(this.START_TO_START, tmp) >= 0)
&& (this.compareBoundaryPoints(this.END_TO_END, tmp) <= 0);
};
for (var i = 0; i < sel.rangeCount; ++i) {
var range = sel.getRangeAt(i);
var links = range.commonAncestorContainer.getElementsByTagName('a');
if (!range.intersectsNode)
range.intersectsNode = intersectsNode;
for (var j = 0; j < links.length; ++j) {
if (!range.intersectsNode(links[j]))
continue;
var title = getPageFromUrl(links[j].href);
if (!title || (title.getNamespaceId() < 0))
continue;
if (title) {
title.namespace |= 1;
if (taken[title.getPrefixedDb()])
continue;
addBacklink(title);
taken[title.getPrefixedDb()] = true;
}
}
range.detach();
}
}, { 'title': "Lînkên vegerînê li rûpelên ku di hilbijartina niha de zêde bike" }),
" \u2022 ", link("betal bike", function () {
that.item.parentNode.removeChild(that.item);
delete toArchive[section];
delete that.item;
}, { 'title': "Dev ji arşîvkirinê berde" }),
((forumId === 'dj') || (forumId === 'rfdo') || (forumId === 'dp') || (forumId === 'SANDBOX')) ? uiResult = el('span', [
" \u2022 netîce: ", results.passed = link("bi ser ket", function () {
setResult('passed');
}, { 'title': "Ev nîqaş bi ser ket (hatiye peyitandin an nayê jêbirin)" }),
" \u2022 ", results.failed = link("têk çû", function () {
setResult('failed');
}, { 'title': "Ev nîqaş têk çû (nehatiye peyitandin an tê jêbirin" }),
" \u2022 ", results.archived = link("tiştekî din", function () {
setResult('archived');
}, { 'title': "Netîce tine ye yan tiştekî din" } )
]) : null
], { 'class': 'hide-when-archiving' }),
uiBacklinks = el('ul', [], { 'class': 'kephir-awa-backlinks' })
]));
var result = 'archived';
// Expected HTML elements:
// <div class="mw-heading ..."><h2><span ... class="mw-headline" ...>
var mwHeading = headerNode.parentNode;
if (!mwHeading.classList.contains("mw-heading")) {
console.error("Expected to find element with class mw-heading as parent of %o", headerNode);
}
if (results.passed) {
var resultText;
for (var node = mwHeading.nextSibling; node; node = node.nextSibling) {
if (!node.getElementsByClassName)
continue;
if (node.classList.contains("mw-heading")
|| node.getElementsByClassName("mw-heading").length > 0)
break;
var bs = node.getElementsByTagName('b');
for (var j = 0; j < bs.length; ++j) {
var b = bs[j];
resultText = b.textContent || b.innerText;
if (/no\s+consensus/i.test(b.parentNode.textContent))
result = 'archived';
else {
if (/\b(failed|Nehat peyitandin|jê bibe|not\s+restored)\b/i.test(resultText)) {
result = 'failed';
} else if (/\b(passed|bim\u00EEne|Hat peyitandin|restored|undeleted)\b/i.test(resultText)) {
result = 'passed';
}
}
}
}
}
setResult(result);
// Xebat always archives to a numbered page (Wîkîferheng:Xebat/arşîv N),
// never to a page linked from the section heading itself — but if
// the heading does link to a page, that page's talk page still
// gets added as a backlink (see links[0] handling below).
// Starting at N=1, check the byte size of each archive page in
// turn; if it's over 70 KB, move on to N+1 (creating a new
// archive page once we reach one that doesn't exist yet or is
// still under the limit).
if (forumId === 'xebat') {
findXebatArchiveTarget(1).then(function (title) {
setTarget(title);
});
// The primary archive target is always the numbered Xebat
// archive, but if the section title itself is a link (e.g.
// to the article under discussion), still add that page's
// talk page as a backlink.
if (links[0]) {
var titleLink = getPageFromUrl(links[0].href);
if (titleLink && (titleLink.getNamespaceId() >= 0)) {
titleLink.namespace |= 1;
addBacklink(titleLink);
}
}
} else if (links[0]) {
var title = getPageFromUrl(links[0].href);
if (title.getNamespaceId() >= 0) {
title.namespace |= 1;
setTarget(title);
} else
setTarget(null);
} else {
setTarget(null);
}
if (forumId !== 'xebat') {
for (var i = 1; i < links.length; ++i) {
var title = getPageFromUrl(links[i].href);
title.namespace |= 1;
addBacklink(title);
}
}
}),
age ? el('small', [' (mesaja dawî: ' + age + ')']) : void(0),
']'
], { "class": "mw-editsection" });
insertParent.insertBefore(archiveSpan, insertBefore);
}
var levels = {};
for (var i = 0; i < headers.length; ++i) {
var level = parseInt(headers[i].parentNode.tagName.substr(1), 10);
for (var k = 1; k <= 6; ++k) {
if (k < level) {
if (levels[k])
levels[k].subHeaders.push(headers[i]);
} else
delete levels[k];
}
levels[level] = headers[i];
headers[i].subHeaders = [];
}
function collectUntilH2(node) {
var nodes = [];
while (node && (node.tagName !== 'H2')) {
if (node.getElementsByTagName && node.getElementsByTagName('h2').length) {
return nodes.concat(collectUntilH2(node.firstChild));
}
nodes.push(node);
node = node.nextSibling;
}
return nodes;
}
sectionMapPromise.then(function (sectionMap) {
for (var i = 0; i < headers.length; ++i) {
/*jshint loopfunc:true */
var links = Array.prototype.filter.call(
headers[i].querySelectorAll('a:not(.ext-discussiontools-init-section-subscribe a)'), function (item) {
var title = getPageFromUrl(item.href);
return title && (title.getNamespaceId() >= 0);
}
);
if (!links.length)
links.unshift(null);
for (var j = 0; j < headers[i].subHeaders.length; ++j) {
links = links.concat(Array.prototype.filter.call(headers[i].subHeaders[j].querySelectorAll('a:not(.ext-discussiontools-init-section-subscribe a)'), function (item) {
var title = getPageFromUrl(item.href);
return title && (title.getNamespaceId() >= 0);
}));
}
// Fixed: previously .parentNode.parentNode climbed one level too
// high past the .mw-heading wrapper, so collectUntilH2 walked an
// unrelated sibling subtree and found no timestamps, leaving `age`
// null forever. .parentNode (the .mw-heading div) is the correct
// starting point.
var nodes = collectUntilH2(headers[i].parentNode.nextSibling);
var timestamps = Array.prototype.concat.call(nodes.map(function (node) {
return node.textContent || '';
}).join('').match(/(\d\d?):(\d\d),\s*(\d+)\s*(.*?)\s*(\d\d\d\d+)\s*\(UTC\)/g) || [], nodes.map(function(node) {
// Comments in Local Time
if (!node.getElementsByClassName)
return;
var nodes = Array.prototype.slice.call(node.getElementsByClassName('localcomments'));
if (/(^|\s)localcomments(\s|$)/.test(node.className))
nodes.push(node);
return nodes.map(function (node) {
return node.title;
});
}).reduce(function (accum, item) {
return item ? accum.concat(item) : accum;
}, [])).map(function (ts) {
var m = /(\d\d?):(\d\d),\s*(\d+)\s*(.*?)\s*(\d\d\d\d+)\s*\(UTC\)/.exec(ts);
return Date.UTC(parseInt(m[5], 10), revMonthNames[m[4]], parseInt(m[3], 10), parseInt(m[1], 10), parseInt(m[2], 10));
}).sort();
var age = null;
if (timestamps.length) {
age = Math.floor((Date.now() - timestamps[timestamps.length - 1]) / 86400000) + ' roj';
}
var sectionEntry = sectionMap[i];
makeLinkFor(headers[i], links, age, sectionEntry ? sectionEntry.index : null);
}
});
})();
// </nowiki>
q18opvqyx6p0nn8xqdbb3n0u8a2v9ot
MediaWiki:Gadget-wikt.add-examples.js
8
1272598
6329681
6127245
2026-08-12T18:18:07Z
Bikarhêner
3719
6329681
javascript
text/javascript
// <nowiki>
// dependencies (declared in MediaWiki:Gadgets-definition): oojs, oojs-ui, ext.gadget.citoid-helper (wikt.citoid), ext.gadget.StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Bi destê xwe binivîsim" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
// Always visible in every mode (free text included) — submit() reads this unconditionally as the "url=" parameter, and it's also the query field the Citoid button below fetches from.
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
// Matches the wording just constructed above, so the initial _setSourceType("citoid") call at the end of this constructor doesn't needlessly recreate an identical layout.
this._urlFieldIsFreeTextWording = false;
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* otomatîk tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Lînkê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid button + jêder-* fields, framed as one "template" step — unlike the URL field above, this box only makes sense once a jêder-* template is active (there's nothing here for Citoid to fill in free-text mode, since it has no bibliographic fields to populate), so it's hidden for free text (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._sourceURLInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
// Saved on the instance (not just a local var) so _setSourceType() can swap the URL field's label/help wording in and out of it when switching to/from free text.
this._fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
this._fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The URL field itself is always visible in every mode (see the constructor); only the free-text textarea, the Citoid button box, and the manual jêder-* fields toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
// Citoid button box: hidden for free text (nothing there for it to fill in), shown for "citoid" auto-detect and any real jêder-* key.
this._citoidBox.toggle(jederKey !== "");
// URL field wording: plain "attach a link" phrasing for free text (no Citoid box visible there to explain), Citoid-oriented phrasing otherwise. Only recreated when actually crossing that boundary, not on every dropdown change (e.g. switching between two jêder-* types keeps the same wording, no need to touch the DOM).
var isFreeText = jederKey === "";
if (this._urlFieldIsFreeTextWording !== isFreeText) {
this._urlFieldIsFreeTextWording = isFreeText;
var index = this._fieldsLayout.items.indexOf(this._sourceURLInputLayout);
this._fieldsLayout.removeItems([this._sourceURLInputLayout]);
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, isFreeText ? {
label: "Adresa webê ya nimûneyê",
align: "top",
help: "Tenê binivîse eger lînk jixwe di referansa çavkaniyê de tinebe.",
helpInline: true,
} : {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
this._fieldsLayout.addItems([this._sourceURLInputLayout], index);
}
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
// Only let Citoid pick the template type when nothing's been chosen yet (the "citoid" auto-detect default). If the user already selected a specific jêder-* type (or free text), that choice is respected — e.g. picking "Websîte" and fetching a tweet must not silently switch to "Kovar" just because Citoid guessed differently.
var wasAutoDetect = self._currentJederKey === "citoid";
if (wasAutoDetect) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
}
var targetJederKey = self._currentJederKey;
// Fields Citoid returned were shaped for its own detected type; if the active template differs (the case above where the user's choice was kept), re-derive fields for that template instead so e.g. "Websîte" still gets its own website-shaped fields (websîte, tarîx, ...) rather than leftover kovar-shaped ones.
var fields = targetJederKey === result.jederKey ? result.fields : wikt.citoid.dataToJederFields(targetJederKey, result.raw);
Object.keys(fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
ts289rhrti7tv8u8yy5cco9wbm8jg13
6329704
6329681
2026-08-12T20:00:22Z
Bikarhêner
3719
6329704
javascript
text/javascript
// <nowiki>
// dependencies (declared in MediaWiki:Gadgets-definition): oojs, oojs-ui, ext.gadget.citoid-helper (wikt.citoid), ext.gadget.StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Bi destê xwe binivîsim" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
// Always visible in every mode (free text included) — submit() reads this unconditionally as the "url=" parameter, and it's also the query field the Citoid button below fetches from.
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
// Matches the wording just constructed above, so the initial _setSourceType("citoid") call at the end of this constructor doesn't needlessly recreate an identical layout.
this._urlFieldIsFreeTextWording = false;
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* otomatîk tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Lînkê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid button + jêder-* fields, framed as one "template" step — unlike the URL field above, this box only makes sense once a jêder-* template is active (there's nothing here for Citoid to fill in free-text mode, since it has no bibliographic fields to populate), so it's hidden for free text (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._sourceURLInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
// Saved on the instance (not just a local var) so _setSourceType() can swap the URL field's label/help wording in and out of it when switching to/from free text.
this._fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
this._fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The URL field itself is always visible in every mode (see the constructor); only the free-text textarea, the Citoid button box, and the manual jêder-* fields toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
// Citoid button box: hidden for free text (nothing there for it to fill in), shown for "citoid" auto-detect and any real jêder-* key.
this._citoidBox.toggle(jederKey !== "");
// URL field wording: plain "attach a link" phrasing for free text (no Citoid box visible there to explain), Citoid-oriented phrasing otherwise. Only recreated when actually crossing that boundary, not on every dropdown change (e.g. switching between two jêder-* types keeps the same wording, no need to touch the DOM).
var isFreeText = jederKey === "";
if (this._urlFieldIsFreeTextWording !== isFreeText) {
this._urlFieldIsFreeTextWording = isFreeText;
this._sourceURLInput.setPlaceholder(isFreeText ? "URLyeke wekî https://…" : "URLyek wekî https://… an jî DOI/ISBN");
var index = this._fieldsLayout.items.indexOf(this._sourceURLInputLayout);
this._fieldsLayout.removeItems([this._sourceURLInputLayout]);
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, isFreeText ? {
label: "Adresa webê ya nimûneyê",
align: "top",
help: "Tenê binivîse eger lînk jixwe di referansa çavkaniyê de tinebe.",
helpInline: true,
} : {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
this._fieldsLayout.addItems([this._sourceURLInputLayout], index);
}
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
// Only let Citoid pick the template type when nothing's been chosen yet (the "citoid" auto-detect default). If the user already selected a specific jêder-* type (or free text), that choice is respected — e.g. picking "Websîte" and fetching a tweet must not silently switch to "Kovar" just because Citoid guessed differently.
var wasAutoDetect = self._currentJederKey === "citoid";
if (wasAutoDetect) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
}
var targetJederKey = self._currentJederKey;
// Fields Citoid returned were shaped for its own detected type; if the active template differs (the case above where the user's choice was kept), re-derive fields for that template instead so e.g. "Websîte" still gets its own website-shaped fields (websîte, tarîx, ...) rather than leftover kovar-shaped ones.
var fields = targetJederKey === result.jederKey ? result.fields : wikt.citoid.dataToJederFields(targetJederKey, result.raw);
Object.keys(fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
046duky5yuvmjaw9cq0dd6wo9xushl6
MediaWiki:Gadget-wikt.add-examples.css
8
1272599
6329680
5838659
2026-08-12T18:18:05Z
Bikarhêner
3719
6329680
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Overall form panel: a white/near-white card lifted off the page with a soft shadow rather than a flat grey fill + hard border, so it reads as one modern panel instead of an old-style boxed form. */
.add-example-form {
max-width: 640px;
width: 100%;
box-sizing: border-box;
margin-top: 0.5em;
padding: 1.25em;
border: 1px solid var(--border-color-subtle, rgba(0, 0, 0, 0.08));
border-radius: 8px;
background-color: var(--background-color-base, #fff);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-base, #101418);
border-color: rgba(255, 255, 255, 0.08);
/* Shadows barely read on dark backgrounds, so this leans more on the border for separation, plus a darker/tighter shadow just to lift it off the page. */
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}
/* Citoid box + jêder-* fields: previously its own fully-bordered card, which stacked "box inside a box" with the form panel above; now a lightweight section (top divider + faint tint) instead of a second card. */
.add-example-citoid-box.oo-ui-panelLayout-framed {
border: none;
border-top: 1px solid var(--border-color-subtle, rgba(0, 0, 0, 0.08));
border-radius: 0;
background-color: var(--background-color-interactive-subtle, rgba(0, 0, 0, 0.04));
/* Negative margin matches .add-example-form's own padding (1.25em) so the tint bleeds to the card's edges instead of floating inset with a visible gap. */
padding: 1em 1.25em 0.25em;
margin: 0.75em -1.25em 0;
}
html.skin-theme-clientpref-night .add-example-citoid-box.oo-ui-panelLayout-framed {
border-top-color: rgba(255, 255, 255, 0.08);
background-color: rgba(255, 255, 255, 0.05);
}
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
flex-wrap: wrap; /* keep the fetch/clear buttons from overflowing on narrow screens */
}
/* jêder-* template fields (Book/Journal/Website): related fields sit side by side via inline-block + a width tier per field, instead of one full-width field per line. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
max-width: 100%; /* never wider than the container, even on narrow (mobile) screens */
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 100%;
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Make the free-text source and URL fields a bit larger for readability. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Main action row (Biweşîne/Betal bike/Paqij bike): light gap between buttons plus a top border to separate from the fields above; scoped to this class rather than .oo-ui-horizontalLayout generally, since that also matches the small Citoid button row, which doesn't need this treatment. */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
flex-wrap: wrap; /* keep buttons from overflowing on narrow screens */
}
/* Loading spinner: plain CSS, not a Commons image, so it needs no network request and matches dark/light mode. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
/* Small screens: the framed panels (form, Citoid box) get their own padding on top of the page's, which can push fixed-width fields past the viewport; keep everything full-width and let inline-block fields wrap freely instead. */
@media (max-width: 480px) {
.add-example-form {
padding: 0.75em;
}
.add-example-jeder-fields .oo-ui-fieldLayout {
margin-right: 8px;
}
}
/* Ported from start.js/styles.css: warns when the example/translation/transcription boxes contain a literal linebreak, which submit() converts to <br> (see nlToBr in the JS) rather than letting it silently corrupt the single-line "#*" wikitext. */
.add-example-form textarea.add-example-has-linebreak {
border-color: var(--wikt-palette-yellow6, #ac6600) !important;
}
/* Backdrop layer behind the textarea, mirroring its text with a marker at each break point; font/padding/box-sizing/line-height are copied from the textarea via computed style (see syncLinebreakBackdropMetrics in the JS), not shared CSS classes, since most of the textarea's own sizing rules target "textarea", which this <div> wouldn't match. Created lazily, only once a textarea actually has a break. */
.add-example-linebreak-backdrop {
position: absolute;
inset: 0;
z-index: 0;
margin: 0;
overflow: hidden;
white-space: pre-wrap;
word-wrap: break-word;
color: transparent;
background: transparent !important;
border-color: transparent !important;
box-shadow: none !important;
resize: none !important;
pointer-events: none;
display: none;
}
/* Raises the textarea itself above its backdrop and makes its own background see-through, so the backdrop's break marker shows through behind the typed text. */
.add-example-form textarea.add-example-has-linebreak-source {
position: relative;
z-index: 1;
background-color: transparent !important;
}
/* The ↵ marker itself, placed right after each line that's followed by an actual typed/pasted linebreak. */
.add-example-linebreak-mark {
background-color: var(--wikt-palette-yellow6, #ac6600);
color: var(--wikt-palette-white, #fff);
border-radius: 2px;
}
ovflq0xfwtds11roawee9ioys3xays1
birastin
0
1319790
6329671
6278681
2026-08-12T17:34:27Z
Zerwanda
12183
6329671
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=gh}}
# amade kirin, rast kirin
#* {{jêder-kitêb|ku|jêgirtin=Xwedawendê me erd çêkir, ezman guhastin. <br> Mecalê erdê '''birastin'''. <br> Nebata qeza rastin.|sal=2013|nivîskar=Kemal Tolan|url=http://books.google.com.tr/books?id=m1jjDwAAQBAJ&pg=PA19&dq=%22birastinan%22+OR+%22birastin%22+OR+%22birastinine%22+OR+%22birastineke%22+OR+%22birastinino%22+OR+%22birastinin%22+OR+%22birastina%22+OR+%22birastin%C3%AA%22+OR+%22birastinek%22+OR+%22birastininan%22+OR+%22birastin%C3%AAn%22+OR+%22birastinek%C3%AA%22+OR+%22birastinek%C3%AE%22+OR+%22birastino%22+OR+%22birastin%C3%AE%22&hl=&cd=4&source=gbs_api|sernav=Gengeşe û Sedemên Peyva ku Êzdî Bilêvnakin: Weşanên Na|weşanxane=Na Yayınları|ISBN=9786056392627|rûpel=19}}
==== Bikaranîn ====
[[teşe|Teşeya]] [[tewandî]] nehatiye [[tomarkirin]], [[ne]] [[girêdayî]] [[lêker]]ên kurdî ên din ên ku bi /ast/ [[bi dawî bûn|bi dawî dibin]], [[reh]]a [[dema niha]] [[divê]] bibe ''-birês-'' an ''-birêz-''.
==== Têkildar ====
* {{g|ku|rast}}
==== Etîmolojî ====
Hevreh bi {{hv|fa|ویراستن}}.
swujuclxgumr1m7qnp829sp0xgln8dd
6329672
6329671
2026-08-12T17:35:40Z
Zerwanda
12183
/* Etîmolojî */
6329672
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=gh}}
# amade kirin, rast kirin
#* {{jêder-kitêb|ku|jêgirtin=Xwedawendê me erd çêkir, ezman guhastin. <br> Mecalê erdê '''birastin'''. <br> Nebata qeza rastin.|sal=2013|nivîskar=Kemal Tolan|url=http://books.google.com.tr/books?id=m1jjDwAAQBAJ&pg=PA19&dq=%22birastinan%22+OR+%22birastin%22+OR+%22birastinine%22+OR+%22birastineke%22+OR+%22birastinino%22+OR+%22birastinin%22+OR+%22birastina%22+OR+%22birastin%C3%AA%22+OR+%22birastinek%22+OR+%22birastininan%22+OR+%22birastin%C3%AAn%22+OR+%22birastinek%C3%AA%22+OR+%22birastinek%C3%AE%22+OR+%22birastino%22+OR+%22birastin%C3%AE%22&hl=&cd=4&source=gbs_api|sernav=Gengeşe û Sedemên Peyva ku Êzdî Bilêvnakin: Weşanên Na|weşanxane=Na Yayınları|ISBN=9786056392627|rûpel=19}}
==== Bikaranîn ====
[[teşe|Teşeya]] [[tewandî]] nehatiye [[tomarkirin]], [[ne]] [[girêdayî]] [[lêker]]ên kurdî ên din ên ku bi /ast/ [[bi dawî bûn|bi dawî dibin]], [[reh]]a [[dema niha]] [[divê]] bibe ''-birês-'' an ''-birêz-''.
==== Têkildar ====
* {{g|ku|rast}}
==== Etîmolojî ====
Hevreh bi {{hv|fa|ویراستن}}, {{hv|pal|ts=widray-, wirast-}}. Bide ber {{q|ku|arastin}}.
4w3ywz490ct65zc7psj3njb3l6dggsr
6329673
6329672
2026-08-12T17:41:06Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: rêzkirina beşan
6329673
wikitext
text/x-wiki
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-IPA}}
* {{ku-kîte}}
=== Lêker ===
{{lêker|ku|c=gh}}
# amade kirin, rast kirin
#* {{jêder-kitêb|ku|jêgirtin=Xwedawendê me erd çêkir, ezman guhastin. <br> Mecalê erdê '''birastin'''. <br> Nebata qeza rastin.|sal=2013|nivîskar=Kemal Tolan|url=http://books.google.com.tr/books?id=m1jjDwAAQBAJ&pg=PA19&dq=%22birastinan%22+OR+%22birastin%22+OR+%22birastinine%22+OR+%22birastineke%22+OR+%22birastinino%22+OR+%22birastinin%22+OR+%22birastina%22+OR+%22birastin%C3%AA%22+OR+%22birastinek%22+OR+%22birastininan%22+OR+%22birastin%C3%AAn%22+OR+%22birastinek%C3%AA%22+OR+%22birastinek%C3%AE%22+OR+%22birastino%22+OR+%22birastin%C3%AE%22&hl=&cd=4&source=gbs_api|sernav=Gengeşe û Sedemên Peyva ku Êzdî Bilêvnakin: Weşanên Na|weşanxane=Na Yayınları|ISBN=9786056392627|rûpel=19}}
==== Notên bikaranînê ====
[[teşe|Teşeya]] [[tewandî]] nehatiye [[tomarkirin]], [[ne]] [[girêdayî]] [[lêker]]ên kurdî ên din ên ku bi /ast/ [[bi dawî bûn|bi dawî dibin]], [[reh]]a [[dema niha]] [[divê]] bibe ''-birês-'' an ''-birêz-''.
==== Têkildar ====
* {{g|ku|rast}}
==== Etîmolojî ====
Hevreh bi {{hv|fa|ویراستن}}, {{hv|pal|ts=widray-, wirast-}}. Bide ber {{q|ku|arastin}}.
4bv4058phxu1zqz6kzcnr312xb8mr0a
MediaWiki:Gadget-Site.css
8
1324818
6329682
6119168
2026-08-12T18:19:06Z
Bikarhêner
3719
çû [[MediaWiki:Gadget-wikt.add-examples.css]]
6329682
css
text/css
/* ----------
Ji @[[en:MediaWiki:Gadget-Site.css]]
<nowiki>
CSS Style
* Indent with tab characters
* One line space between each declaration
* One selector per line
* Opening brace on the same line as the last selector
* Don't omit optional semicolons
* Closing brace on its own line
* Closing brace indented to match the preceding style declarations
* Alternatively, very short style rules may be all on one line
---------- */
/* csslint adjoining-classes:false */
/* See also [[MediaWiki:Minerva.css]], [[MediaWiki:Vector.css]] */
/* ku-Arab: Format ji bo tabloyên ku di aliyê rastê de ne */
.tablo-flip {
float: right;
margin-left: 0.5em;
margin-right: 0;
clear: right;
}
.tablo-flip .row-flip {
text-align: left;
}
/* @noflip */
:lang(ku-arab) .tablo-flip {
float: left;
margin-left: 0;
margin-right: 0.5em;
clear: left;
}
/* @noflip */
:lang(ku-arab) .tablo-flip .row-flip {
text-align: right;
}
/* Ji bo {{werger-ser}} */
/* @noflip */
:lang(ku-arab) .translations {
text-align: right;
}
/* @noflip */
:lang(ku-arab) div.NavFrame > ul, :lang(ku-arab) div.NavFrame > ol {
text-align: right;
}
/* @noflip */
:lang(ku-arab) div.NavFrame div.NavHead,
:lang(ku-arab) details.NavFrame summary.NavHead {
text-align: right;
}
/* @noflip */
:lang(ku-arab) span.NavToggle {
float: left;
}
/* @noflip */
:lang(ku-arab) .list-switcher-element .NavToggle {
float: none;
}
/* "Flipping" ji bo tagên HTMLê (div, span, ...) yên din.
Li şûna "float:right", "text-align:left" vana werin bikaranîn (ji bo "flipping").
Ji ber ku dema ku di nav kodî de style="float:right" tê nivîsandin flipping naşuxile: hertim 'float:right' e.
*/
.float-right-flip {
float: right;
}
.float-left-flip {
float: left;
}
.align-right-flip {
text-align: right;
}
.align-left-flip {
text-align: left;
}
.clear-right-flip {
clear: right;
}
.clear-left-flip {
clear: left;
}
/* @noflip */
:lang(ku-arab) .float-right-flip {
float: left;
}
/* @noflip */
:lang(ku-arab) .float-left-flip {
float: right;
}
/* @noflip */
:lang(ku-arab) .align-right-flip {
text-align: left;
}
/* @noflip */
:lang(ku-arab) .align-left-flip {
text-align: right;
}
/* @noflip */
:lang(ku-arab) .clear-right-flip {
clear: left;
}
/* @noflip */
:lang(ku-arab) .clear-left-flip {
clear: right;
}
/* Ji bo {{wîkîpediya}} */
.sister-box {
float: right;
border: solid #aaa 1px;
font-size: 90%;
background: #f9f9f9;
width: 250px;
padding: 4px;
text-align: left;
}
.sister-wiki-logo {
float: left;
}
.sister-wiki-links {
margin-left: 15px;
}
.sister-wiki-content {
margin-left: 60px;
}
/* @noflip */
:lang(ku-arab) .sister-box {
clear:left;
float: left;
border: solid #aaa 1px;
font-size: 90%;
background: #f9f9f9;
width: 250px;
padding: 4px;
text-align: right;
}
/* @noflip */
:lang(ku-arab) .sister-wiki-logo {
float: right;
}
/* @noflip */
:lang(ku-arab) .sister-wiki-links {
margin-left: 15px;
}
/* @noflip */
:lang(ku-arab) .sister-wiki-content {
margin-left:5px;
margin-right:60px
}
:lang(ku-arab) .sister-wiki-content {
}
/* Editsection */
.mw-editsection {
font-size: x-small;
}
/* Jêgirtin */
.jegirtin-text {
font-style: italic;
}
:lang(ku-arab) .jegirtin-text {
font-style: normal;
}
/* Beşa zimanî */
.ns-0 #mw-content-text .mw-heading2, .ns-108 #mw-content-text .mw-heading2 {
clear: both;
background: #eaecf0;
padding-left: 0.2em;
font-size: 180%;
font-weight: 500;
margin-top: 1em;
margin-bottom: 0.5em;
}
/* Rengê "teal" bo beşên cureyên peyvan*/
.ns-0 #mw-content-text .mw-heading3, .ns-108 #mw-content-text .mw-heading3 {
color:teal;
border-bottom: dotted 1px #aaa;
}
.ns-0 #mw-content-text .mw-heading4, .ns-108 #mw-content-text .mw-heading4
{
border-bottom: dotted 1px #ddd;
}
/* Valahiya di navber mînakan */
.ns-0 ol li, .ns-0 ol li li{
margin-bottom: .4em;
}
/* Sernavê Destpêkê veşêre */
.page-Destpêk h1.firstHeading,
.page-Destpêk #lastmod,
.page-Destpêk #siteSub,
.page-Destpêk #contentSub,
.page-Destpêk #catlinks {
display: none;
}
sup,
sub {
/* prevent odd line-height for raised and lowered characters */
line-height: 1em;
}
/* and keep links at normal font size/weight, else they inherit the header
attributes */
.editsection {
font-size: 100%;
font-weight: normal;
}
pre code,
code code {
border: none;
padding: 0;
}
pre var,
code var {
color: #777;
}
/* This fixes a bug where certain Tibetan terms are cut off at the bottom... */
#firstHeading {
overflow: visible;
}
.ns-0 .timed-text {
display: none;
}
.client-js .audiometa {
display: none;
}
.client-nojs .audiofile {
display: none;
}
.nowrap {
white-space: nowrap;
}
/* wikitable is part of core. prettytable is deprecated but still used in some
places, until fully replaced: */
table.prettytable {
margin: 1em 1em 1em 0;
background: var(--wikt-palette-paleblue, #f8f9fa);
border: 1px var(--border-color-base, #aaaaaa) solid;
border-collapse: collapse;
}
table.prettytable th,
table.prettytable td {
border: 1px var(--border-color-base, #aaaaaa) solid;
padding: 0.2em;
}
table.prettytable th {
background: var(--wikt-palette-lightergrey, #eeeeee);
text-align: center;
}
table.prettytable caption {
margin-left: inherit;
margin-right: inherit;
}
/* default setting for {{qualifier}} and {{sense}}.
(Related classes that can be overridden: .qualifier-comma,
.qualifier-content, .ib-brac, .qualifier-brac, .sense-qualifier-colon.) */
.ib-comma {
font-style: normal;
}
.ib-content {
font-style: italic;
}
.ib-content i,
.ib-content em {
font-style: normal;
}
.context-qualifier-colon {
display: none;
}
/* default style for indented "see also" */
.disambig-see-also {
text-indent: 2em;
}
.mention-tr {
font-style: italic;
}
/* add left-to-right mark */
.mention-gloss-paren::before,
.mention-tr-paren::before {
content: "";
}
/* non-italic and non-bold gloss */
.mention-gloss,
.mention-gloss-double-quote,
.mention-gloss-paren,
.mention-tr-gloss-separator-comma,
.mention-tr-paren,
.mention-tr-gloss-separator-comma {
font-style: normal;
font-weight: inherit;
}
/* default style for "form of" definitions */
.use-with-mention,
.form-of-definition {
font-style: italic;
}
.use-with-mention i,
.form-of-definition-link {
font-style: normal;
}
.use-with-mention .mention,
.form-of-definition-link .mention {
font-style: normal;
font-weight: bold;
}
/* display normalization in {{ux}}/{{usex}}, {{quote}}, {{quote-*}} in italics */
.e-normalization {
font-style: italic;
}
/* Inflection tables
----------------------------- */
/* To colour links in inflection tables (currently done with
{{notred}}) black without using #ifexist and allowing for user
override */
.inflection-table a.new {
color: inherit;
}
/* fill a parent NavContent collapsing box */
.NavContent table.inflection,
.NavContent table.inflection-table {
margin-top: 0;
width: 100%;
display: table;
border: 0;
}
/* basic inflection table styles */
table.inflection {
border-collapse: collapse;
border: 1px solid;
background: #ffffff;
/* TODO consider palettizing */
}
table.inflection caption {
caption-side: bottom;
padding: 0.33em 1em;
text-align: left;
font-size: smaller;
}
/* subtle grey for alternate row backgrounds */
table.inflection tr:nth-child(odd) {
background: #fcfcfc;
/* TODO consider palettizing */
}
/* and for row headers */
table.inflection tr:nth-child(odd):not(.rowgroup) th {
background: #f6f6f6;
/* TODO consider palettizing */
}
/* dark mode background colors for table.inflection */
@media screen {
html.skin-theme-clientpref-night table.inflection { background-color: #242424; }
html.skin-theme-clientpref-night table.inflection tr:nth-child(odd) { background-color: #2E2E2E; }
html.skin-theme-clientpref-night table.inflection tr:nth-child(odd):not(.rowgroup) th { background-color: #303030; }
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os table.inflection { background-color: #242424; }
html.skin-theme-clientpref-os table.inflection tr:nth-child(odd) { background-color: #2E2E2E; }
html.skin-theme-clientpref-os table.inflection tr:nth-child(odd):not(.rowgroup) th { background-color: #303030; }
}
table.inflection td,
table.inflection th {
padding: 0.33em 1em;
vertical-align: baseline;
}
/* but vertically center multi-row cells */
table.inflection td[rowspan] {
vertical-align: middle;
}
table.inflection td {
text-align: center;
}
/* regular row headers, in the left column */
table.inflection th {
background: var(--wikt-palette-paleblue, #f8f9fa);
text-align: left;
}
/* rowgroup header rows */
table.inflection tr.rowgroup th {
background: var(--wikt-palette-lightergrey, #eeeeee);
text-align: center;
}
/* first-of-several rowgroup header cells is aligned left */
table.inflection tr.rowgroup th:first-child {
text-align: left;
}
table.inflection tr.rowgroup th:first-child:only-child {
text-align: center;
}
/* rows with dividers above */
table.inflection tr.divider th {
border-top: 3px solid #999999;
}
/* transliterations */
table.inflection .translit {
color: #888;
}
/* header links aren’t coloured until hover/active */
table.inflection th a:link,
table.inflection th a:visited {
color: inherit;
text-decoration: inherit;
}
table.inflection th a:hover {
color: #0645ad;
text-decoration: underline;
}
table.inflection th a:active {
color: #faa700;
text-decoration: underline;
}
/* ----
end of Inflection tables */
/* Hide interproject links used by [[MediaWiki:Gadget-AggregateInterprojectLinks.js]] */
.interProject {
display: none;
clear: both;
border-top: 2px dotted #AAAAAA;
margin-top: 2em;
}
/* Translation styling */
.checktrans,
.rfc-trans,
.trreq,
.ttbc {
background: var(--wikt-palette-palegreen, #f0fff0);
}
/* t+ t t- templates: */
.tneg,
.tpos,
.tunk {
vertical-align: 20%;
font-size: 80%;
}
.tneg a {
color: #cc2200 !important;
}
/* monobook redlink colour, standard #ba0000 */
.tneg a:visited {
color: #a55858 !important;
}
/* standard visited redlink colour */
.tpos a {
color: var(--wikt-palette-deepblue);
}
/* standard bluelink colour */
.tpos a:visited {
color: var(--wikt-palette-blue);
}
/* standard bluelink colour */
.tunk a {
color: #3366BB !important;
}
/* standard external interwiki colour */
.tunk a:active {
color: #3366BB !important;
}
/* redundant */
/* for parentheses, we use .tlc and .tlcp, the latter has no definition here
(display:inline) */
.tlc {
display: none;
}
/* Main page fixes */
#interwiki-completelist {
font-weight: bold;
}
/* Try to make search results more obviously links */
.mw-special-Search #bodyContent li a {
font-weight: bold;
}
.mw-special-Search .searchmatch {
font-weight: normal;
color: var(--wikt-palette-black, #000000);
background-color: var(--wikt-palette-brightyellow, #FFEE77);
}
/* [[WT:FEED]] */
#p-feedback a {
cursor: pointer;
}
/* Old revisions */
#mw-revision-info {
border: 2px solid #8888FF;
/* TODO consider palettizing */
border-left: 0px;
border-right: 0px;
font-size: 110%;
margin: 5px;
margin-left: 0px;
}
/* dark mode border color for #mw-revision-info */
@media screen { html.skin-theme-clientpref-night #mw-revision-info { border-color: #4444BB; } }
@media screen and (prefers-color-scheme: dark) { html.skin-theme-clientpref-os #mw-revision-info { border-color: #4444BB; } }
#mw-editingold {
margin-left: 15px;
margin: 5px;
padding: 5px;
border: 2px solid #CC0000;
border-width: 2px 0px;
}
/* maintenance line */
.maintenance-line {
color: #777777;
/* TODO consider palettizing */
}
/* dark mode text color for maintenance line */
@media screen { html.skin-theme-clientpref-night .maintenance-line { color: #adb7bf; } }
@media screen and (prefers-color-scheme: dark) { html.skin-theme-clientpref-os .maintenance-line { color: #adb7bf; } }
/* Night mode logo appearance, see [[Wiktionary:Grease pit/2025/January#Top left Wiktionary logo in dark mode]] */
@media screen {
html.skin-theme-clientpref-night img.mw-logo-icon {
color-scheme: light;
filter: invert(1) brightness(55%) contrast(250%) hue-rotate(180deg);
}
}
@media screen and (prefers-color-scheme: dark) {
html.skin-theme-clientpref-os img.mw-logo-icon {
color-scheme: light;
filter: invert(1) brightness(55%) contrast(250%) hue-rotate(180deg);
}
}
/* Make Recent changes look nice again */
span.newpage,
span.minor,
span.searchmatch,
span.bot,
span.unpatrolled {
font-family: sans-serif !important;
}
/* Styling for the different kinds of collapsible boxes and lists */
/* NavFrames */
div.NavFrame,
details.NavFrame {
border: 1px solid var(--wikt-palette-grey, #9e9e9e);
text-align: center;
border-collapse: collapse;
font-size: 95%;
overflow: auto;
width: auto;
}
div.NavFrame > ul, div.NavFrame > ol {
text-align: left;
}
div.NavFrame div.NavHead,
details.NavFrame summary.NavHead {
margin: 2px;
min-height: 1.6em;
font-weight: bold;
font-size: 100%;
text-align: left;
padding: 1px 5px 1px 10px;
background-color: var(--wikt-palette-dullcyan, #eaecf0);
}
div.NavFrame p {
font-size: 100%;
}
div.NavFrame div.NavContent,
details.NavFrame div.NavContent {
font-size: 100%;
border-top: 1px solid var(--wikt-palette-grey, #9e9e9e);
}
div.NavFrame div.NavContent p,
details.NavFrame div.NavContent p {
font-size: 100%;
}
/* Used by box-top/box-bottom */
.NavContent.boxcontent {
padding: 0.25em 0.5em;
}
.NavContent.boxcontent > p:last-child {
margin-bottom: 0.5em; /* from 1em to avoid some extra asymmetric space */
}
/* Override default added margins which mess up the background */
.NavContent.derivedterms > p,
.NavContent.columns-bg > p {
margin: 0;
}
.NavContent.derivedterms > p,
.NavContent.derivedterms > ul,
.NavContent.columns-bg > p,
.NavContent.columns-bg > ul {
padding: 0.5em;
}
span.NavToggle {
cursor: pointer;
float: right;
font-weight: normal;
font-style: normal;
font-size: smaller;
margin-top: 1px;
}
/* add slight gap between NavToggle and rest of the heading */
.NavToggle {
margin-left: 0.5em;
}
/* Collapsible term lists */
.list-switcher {
/* This is a hack so we can use getComputedStyle to find the
maximum permissible height value of a list-switcher.
It must be kept in sync with .list-switcher-collapsed `max-height` */
bottom: calc(3.2 * 1.6em); /* for browsers that don't support `lh` units */
bottom: 3.2lh;
}
.list-switcher-wrapper,
:not(.list-switcher-wrapper) > .list-switcher {
contain: layout; /* stop floating elements from messing with layout */
margin-top: 0.3em; /* replaces margin lost on <ul> in following ruleset */
}
.list-switcher-wrapper + .list-switcher-wrapper {
margin-top: 0.6em;
}
.list-switcher > div > ul,
.list-switcher-wrapper > div > ul {
margin-top: 0; /* needed to avoid jumps when collapsing/uncollapsing */
}
.list-switcher ul ul {
margin-top: 0.1em; /* make margin above nested lists equal to margin at bottom of <li>s */
}
.list-switcher-collapsed {
/* If changing this value, change .list-switcher `bottom` above */
max-height: calc(3.2 * 1.6em); /* for browsers that don't support `lh` units */
max-height: 3.2lh;
overflow-y: hidden;
}
.list-switcher-header {
background: var(--wikt-palette-grey-indigo-2);
font-weight: bold;
font-size: 95%;
padding: 0.2em 0.4em 0.1em 0.6em;
border-top-left-radius: 0.3lh;
border-top-right-radius: 0.3lh;
}
.list-switcher-header + .list-switcher .term-list,
.list-switcher-header + .term-list {
padding-top: 0.1em;
}
.list-switcher-edit {
margin-left: 1.5em;
font-size: 87.75%; /* exactly match font size of [show more] button (in Chromium-based browsers at least) */
font-weight: normal;
}
.list-switcher-edit::before {
content: "[";
}
.list-switcher-edit::after {
content: "]";
}
.list-switcher-large-text {
/* Keep in sync with next ruleset */
bottom: calc(4 * 1.6em); /* for browsers that don't support `lh` units */
bottom: 4lh;
}
.list-switcher-large-text.list-switcher-collapsed {
/* Keep in sync with previous ruleset */
max-height: calc(4 * 1.6em); /* for browsers that don't support `lh` units */
max-height: 4lh;
}
.list-switcher-element {
text-align: center;
cursor: pointer;
background: var(--wikt-palette-grey-indigo-2);
}
.list-switcher-element .NavToggle {
float: none;
}
/* this is a legacy rule that only applies to {{rootsee}} and
{{script appendix}} - these need a fairly wide width */
.columns-bg:not(.term-list) > div > div > .CategoryTreeChildren,
.columns-bg:not(.term-list) > div > .CategoryTreeChildren {
-moz-column-width: 25em;
column-width: 25em;
}
/* Hidden Quotes and *nyms toggle */
.HQToggle,
.nyms-toggle,
.usex-toggle {
font-size: smaller;
position: relative;
bottom: 1px;
left: 5px;
}
/* Hidden quotes */
.client-js .ns-0 ol>li>ul {
display: none;
}
/* wrap toggle links with [ and ] */
.HQToggle:before,
.NavToggle:before,
.nyms-toggle:before,
.usex-toggle:before {
content: '[';
}
.HQToggle:after,
.NavToggle:after,
.nyms-toggle:after,
.usex-toggle:after {
content: ']';
}
.HQToggle a,
.NavToggle a,
.nyms-toggle a,
.usex-toggle a {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.client-js .NavFrame .NavContent {
display: none;
}
.client-js .not .NavContent {
/* ??? */
display: block;
}
/* View switcher */
.vsShow {
display: none;
}
/* End styling for collapsible lists */
/* Quote clarifications, e.g. {{quote-gloss}}, {{quote-qualifier}} */
.quote-note {
color: #999;
}
/* stuff visible when previewing an edit only */
.previewonly {
display: none;
}
#wikiPreview .previewonly {
display: inline;
}
/* Highlight the relevant sense when the user follows a link to a {{senseid}}.
The class="senseid" should ideally be on the enclosing <li> tag. We attempt to make the
highlight work when the class="senseid" is on a <span> inside the <li>, but the :has
selector was not supported by all browsers as of late 2023. This feature was nonetheless
requested by Benwing at [[Wiktionary:Grease_pit/2023/November#Why_does_Template%3Asenseid_use_HTML_li_tag%3F]].
THe version with :has is provided as a separate declaration to ensure maximum compatibility. */
.senseid:target {
background: var(--wikt-palette-lightblue, #DEF);
}
li:has(> span.senseid:target) {
background: var(--wikt-palette-lightblue, #DEF);
}
.etymid:target {
background: var(--wikt-palette-lightblue, #DEF);
}
p:has(> span.etymid:target) {
background: var(--wikt-palette-lightblue, #DEF);
}
/* fix extra gap if there is something between etymid and rest of etymology */
p:has(> span.etymid:only-child) {
display: inline;
}
/* and highlight the next paragraph too if that happened,
since otherwise the highlight may be lost entirely on the invisible etymid */
p:has(> span.etymid:target:only-child) + p {
background: var(--wikt-palette-lightblue, #DEF);
}
/* Skin CSS highlights table rows targeted by the current browser location
(tr:target). This rule highlight table rows containing target cells so that
there can be multiple IDs in a table row in [[Wiktionary:List of languages]]
and [[Wiktionary:List of languages/special#Etymology-only languages]]. */
tr:has(> :target),
tr:has(> td > code:target) {
background: var(--wikt-palette-lightblue, #DEF);
}
/* show the "serial and" in the disambiguation see also */
.serial-and {
display: inline;
}
/* hide the serial commas */
.serial-comma {
display: none;
}
/* Gender and number templates */
.gender,
.number,
.noun-class {
font-style: italic;
}
abbr {
border-bottom-width: 0;
}
/* hide "did you mean" on Noarticletext self-links */
.did-you-mean strong {
display: none;
}
/* make script/module errors smaller */
.scribunto-error {
font-size: 75%;
}
/* allow inline hieroglyphs */
.mw-hiero-outer {
display: inline-table !important; /* override skin styling on mobile */
vertical-align: middle;
font-size: 10px;
}
/* allow mirrored custom hieroglyph (and other) images */
.mw-mirrored img {
transform: scaleX(-1);
}
/* softer highlighting of 'updated since last visit' */
span.updatedmarker {
background-color: var(--wikt-palette-mint, #c0e4c0);
}
/* {{TOC limit}} */
/* Allow limiting of which header levels are shown in a TOC;
<div class="toclimit-3">, for instance, will limit to showing ==headings==
and ===headings=== but no further (as long as there are no =headings= on the
page, which there shouldn't be according to the MoS). */
.toclimit-2 .toclevel-1 ul,
.toclimit-3 .toclevel-2 ul,
.toclimit-4 .toclevel-3 ul,
.toclimit-5 .toclevel-4 ul,
.toclimit-6 .toclevel-5 ul,
.toclimit-7 .toclevel-6 ul {
display: none;
}
/*
* Script and language-related styles are in [[MediaWiki:Gadget-LanguagesAndScripts.css]]
*/
/* A kludge that lets the members of [[:Category:Redirected combining characters]] be displayed. */
body.page-Category_Combining_characters div#mw-pages li,
body.page-Category_Redirected_combining_characters div#mw-pages li,
body.page-Category_IPA_combining_characters div#mw-pages li {
letter-spacing: 0.3em;
}
/* Definition dates, in {{defdate}} */
.defdate {
font-size: smaller;
}
/* unit tests filter */
table.unit-tests.unit-tests-hide-passing tr.unit-test-pass {
display: none;
}
table.unit-tests th.unit-tests-img-corner {
background: var(--wikt-palette-lightblue, #d9ebff);
min-width: 1em;
}
table.unit-tests.unit-tests-hide-passing th.unit-tests-img-corner {
background: red;
}
/* multi-column lists */
li,
.group-in-column {
-moz-column-break-inside: avoid;
break-inside: avoid;
}
/* {{shortcut}} */
.shortcut-box,
.category-edit-box {
border: 1px solid var(--border-color-base, #aaaaaa);
color: var(--color-base, black);
background: var(--wikt-palette-paleblue, #f9f9f9);
margin: 0 0 .5em 1em;
text-align: center;
padding: 5px;
float: right;
clear: both;
font-weight: bold;
font-size: smaller;
}
/* Display tabs with 4 spaces, see [[phab:T59824]] and [[phab:T59825]] */
textarea#wpTextbox1+div:last-child,
/* workaround for [[mw:User:Remember the dot/Syntax highlighter]] */
textarea,
pre,
code,
.mw-highlight {
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
}
/* stop double-bolding of self-links like in [[acquit]], [[fishbone]] */
/* old code: b .selflink, strong .selflink { font-weight: inherit; } */
b,
strong {
font-weight: bold;
}
tr:target {
background: var(--wikt-palette-lightblue, #DEF);
}
#firstHeading var,
.headword var {
color: #888;
}
/* Display a {{tlb}} / {{term-label}} template on its own line if it comes right after a headword template.
It is too easy to miss after headwords (especially long ones). */
p .headword-line ~ .usage-label-term::before {
content: "\a"; /* newline */
white-space: pre;
}
/* Temporary kludge to be used because categoryTree is generating a newline. This CSS line should be removed after the developers fix it. */
.CategoryTreeTag+p br:first-child {
display: none;
}
/* Used by column templates (see [[Module:columns]]). */
.ul-column-count>ul,
.ul-column-count>ol,
.ul-column-count>dl {
-moz-column-gap: 20px;
column-gap: 20px;
}
.ul-column-count[data-column-count="2"]>ul,
.ul-column-count[data-column-count="2"]>ol,
.ul-column-count[data-column-count="2"]>dl {
-moz-column-count: 2;
column-count: 2;
}
.ul-column-count[data-column-count="3"]>ul,
.ul-column-count[data-column-count="3"]>ol,
.ul-column-count[data-column-count="3"]>dl {
-moz-column-count: 3;
column-count: 3;
}
.ul-column-count[data-column-count="4"]>ul,
.ul-column-count[data-column-count="4"]>ol,
.ul-column-count[data-column-count="4"]>dl {
-moz-column-count: 4;
column-count: 4;
}
.ul-column-count[data-column-count="5"]>ul,
.ul-column-count[data-column-count="5"]>ol,
.ul-column-count[data-column-count="5"]>dl {
-moz-column-count: 5;
column-count: 5;
}
.ul-column-count[data-column-count="6"]>ul,
.ul-column-count[data-column-count="6"]>ol,
.ul-column-count[data-column-count="6"]>dl {
-moz-column-count: 6;
column-count: 6;
}
.columns-bg {
/* Default background color for multi-column lists. */
background: var(--wikt-palette-lavender, #f8f8ff);
/* prevent text crashing into edge of box */
padding-right: 0.3em;
}
/* Default style for hypothetical inflections -- currently italic. */
.hypothetical {
font-style: italic;
}
/* Style for entries using deprecated templates */
.deprecated {
color: olivedrab;
}
.deprecated a {
color: darkgreen;
}
/* Style for entries using deprecated labels */
.deprecated-label {
color: olivedrab;
text-decoration: line-through;
}
.deprecated-label a {
color: darkgreen;
text-decoration: line-through;
}
/* Style for notes added using the bad= param in {{audio}} */
.bad-audio-note {
color: #FF2200;
font-weight: bold;
}
/* WikiHiero kludge */
/* disable for now, apparently not necessary and breaks wrapping
.wikt-hierokludge {
display: inline-block;
} */
/* Support lists that automatically split into limited-width columns (for translations tables and the like): */
.multicolumn-list>ul {
-moz-column-width: 25em;
column-width: 25em;
-moz-column-gap: 20px;
column-gap: 20px;
}
.multicolumn-list-wide>ul {
-moz-column-width: 55em;
column-width: 55em;
-moz-column-gap: 20px;
column-gap: 20px;
}
.multicolumn-list-narrow>ul {
-moz-column-width: 22em;
column-width: 22em;
-moz-column-gap: 20px;
column-gap: 20px;
}
/* [[phab:T156351]]: Support for Parsoid's Cite implementation */
a[ rel="mw:referencedBy"]::before {
content: " ^";
}
/* [[phab:T316670]]: fix header issues */
.mw-heading * {
word-break: normal;
}
/* From [[Module:shortcut box/styles.css]] */
a .redlink {
color: var(--color-destructive, #d73333);
}
a:visited .redlink {
color: var(--color-destructive--visited, #a55858);
}
a:visited:hover .redlink {
color: var(--color-destructive--visited, #a55858);
}
a:hover .redlink {
color: var(--color-destructive--hover, #ff4242);
text-decoration: underline;
}
a:active .redlink {
color: var(--color-destructive--active, #b32424);
text-decoration: underline;
}
a:focus .redlink {
outline-color: var(--outline-color-progressive--focus, #36c);
}
/* approximate replacement for .toccolours, which is not defined in the Vector 2022 skin */
.standard-box {
background-color: var(--wikt-palette-paleblue, #f8f9fa);
border: 1px solid var(--wikt-palette-grey, #9e9e9e); /* was #aabbdd but no real equivalent in our palette */
padding: 5px;
}
.mw-parser-output a[role="button"] {
color: var(--wikt-palette-black);
font-weight: normal;
}
/* override default behaviour for button links */
.mw-parser-output a[role="button"]:focus:not(:hover) {
text-decoration: none;
}
/* Make the list of references smaller */
ol.references {
font-size: 90%; /* Default font-size */
margin-bottom: 0.5em;
}
/*** Dark mode ***/
/* Beşa zimanî */
html.skin-theme-clientpref-night .ns-0 #mw-content-text .mw-heading2,
html.skin-theme-clientpref-night .ns-108 #mw-content-text .mw-heading2 {
background-color: #27292d;
}
/* Rengê "teal" bo beşên cureyên peyvan*/
html.skin-theme-clientpref-night .ns-0 #mw-content-text .mw-heading3,
html.skin-theme-clientpref-night .ns-108 #mw-content-text .mw-heading3 {
color: #B0D493;
}
html.skin-theme-clientpref-night div#editpage-specialchars a {
background-color: transparent;
}
html.skin-theme-clientpref-night div.NavFrame div.NavHead,
html.skin-theme-clientpref-night details.NavFrame summary.NavHead {
background-color: #27292d;
}
html.skin-theme-clientpref-night div.NavFrame, details.NavFrame {
background-color: #202122;
}
/* Dark mode end */
/* </nowiki> */
8k4uvg80l1btbijkr5jxbuburx7v2rw
Şablon:tabloya-tewandinê-ser
10
1324916
6329697
6291983
2026-08-12T19:20:38Z
Wikihez
7344
6329697
wikitext
text/x-wiki
<includeonly><!-- special wrapper to prevent substitution of this template -->{{ safesubst:<noinclude/>#ifeq:{{ safesubst:<noinclude/>NAMESPACE}}|{{NAMESPACE}}|
<div class="inflection-table-wrapper inflection-table-narrow inflection-table-{{{palette|grey}}} {{#ifeq:{{{title}}}|-|inflection-table-no-title}} {{#if:{{{tall|}}}|inflection-table-collapsible inflection-table-collapsed no-vc}} {{{class|}}}" style="width: fit-content{{#if:{{{min-width|}}}|; min-width: {{{min-width}}}}}" data-toggle-category="{{{category|Tewandinê}}}"><templatestyles src="Template:tewandin-ser/style.css" />
{{{!}} class="inflection-table {{#if:{{{lang|}}}|inflection-table-{{{lang}}}}}" <!-- {{!}} is used in place of | due to the special safesubst: wrapper -->
{{#ifeq:{{{title}}}|-||
{{!}}+ class="inflection-table-title" {{!}} {{{title|Inflection of ''{{PAGENAME}}''}}}
{{!}}-
}}
|{{color||Do not substitute this template}}}}
</includeonly><noinclude>{{documentation}}</noinclude>
aedx3clso3rrizrlbp3ybh8c64j2vct
Modul:ziman/error
828
1325677
6329831
6328186
2026-08-12T23:33:56Z
Wikihez
7344
6329831
Scribunto
text/plain
--[=[
Throw an error for an invalid language code or script code.
`code` (required) is the bad code and can be nil or a non-string.
`param` (required) is the name of the parameter in which the code was contained. It can be a string, a number (for a
numeric param, in which case the param will show up in the error message as an ordinal such as "first" or "second"),
or `true` if no parameter can be clearly identified. It can also be a function of one argument (an error message) or
two arguments (an error message and a number of stack frames to ignore, same as in the error() function itself), in
which case the function will be called with the same error message as if `true` were passed in. (This is useful e.g.
when parsing inline modifiers, where the parameter name may not be available or may not be so clearly identifiable,
but an error function is often available.)
`code_desc` (optional) is text describing what the code is; by default, "language code".
`template_text` (optional) is a string specifying the template that generated the error, or a function
to generate this string. If given, it will be displayed in the error message.
]=]
local dump = mw.dumpObject
local function internal_err(param, types, param_type)
error(("Xetaya hundirîn: divê parametreya %s %s be, lê %s hat wergirtin"):format(dump(param), types, param_type))
end
return function(code, param, code_desc, template_tag)
local is_callable = require("Module:fun").is_callable
if param == nil then
param = true
end
if not code_desc then
code_desc = "koda zimanî"
end
if template_tag then
if is_callable(template_tag) then
template_tag = template_tag()
else
local template_tag_type = type(template_tag)
if template_tag_type ~= "string" then
internal_err("template_tag", "fonksiyonek, tabloyeke gazîkirî an nil", " " .. template_tag_type)
end
end
template_tag = (" (şablona orîjînal: %s)"):format(template_tag)
else
template_tag = ""
end
local param_is_callable = is_callable(param)
local function err(msg)
msg = msg .. template_tag
if not(param_is_callable) then
error(require("Module:string utilities").ucfirst(msg) .. ".", 3)
end
param(msg, 3)
end
if not (param == true or param_is_callable) then
local param_type = type(param)
if not (param_type == "string" or param_type == "number") then
internal_err("param", "hejmarek, stringek, fonksiyonek, tabloyeke gazîkirî, true an nil", param == false and "false" or " " .. param_type)
end
param = ("parametreya %s "):format(dump(param))
end
if code == nil or code == "" then
if param == true or param_is_callable then
err(code_desc .. " tine ye")
else
err(param .. "(" .. code_desc .. ") tine ye")
end
else
local code_type = type(code)
if code_type ~= "string" then
internal_err("code", "stringek an nil", "a " .. code_type)
end
end
err(("Divê %s %s ya derbasdar be; nirxa %s ne derbasdar e (li [[Wîkîferheng:Lîsteya zimanan]] binêre)"):format(
(param == true and "" or param), code_desc, dump(code)
))
end
t2bglqnyxbm60ucb9fqva5mpdieoqdp
Şablon:J:Încîl:1872:Sayim
10
1325850
6329782
6329591
2026-08-12T22:04:33Z
Wikihez
7344
6329782
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|call_template
|template=jêder-kitêb
|ku
|editor=İlyas Sayım
|title=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|edition=1
|location=Bîngol
|year=2024
|url=https://kitêb.nevgur.net/book/wf6n5
|original=Ինճիլ<t:Încîl>
|by=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|origyear=1872
|pageparam=page,r,rûpel
|textparam=jg,jêgirtin
|allowparams=r,rûpel,jg,jêgirtin
}}</includeonly><noinclude>{{belgekirin}}{{quotecat|ku}}</noinclude>
jqklimm0ocebh2blxfo1pxb35ta1rfq
6329783
6329782
2026-08-12T22:11:25Z
Wikihez
7344
6329783
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=hate transkrîbekirin ji hêla
|rûpel2={{{r|{{{rûpel|}}}}}}
}}</includeonly><noinclude>{{belgekirin}}{{quotecat|ku}}</noinclude>
rhb92c5pviqeuji52hqmazvhe5r5pjx
6329785
6329783
2026-08-12T22:14:01Z
Wikihez
7344
6329785
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=transkrîpsiyona
|rûpel2={{{r|{{{rûpel|}}}}}}
|rûpel={{{r-orîj|{{{rûpel-orîj|}}}}}}
|r=
}}</includeonly><noinclude>{{belgekirin}}{{quotecat|ku}}</noinclude>
cysmfinjhwprkl3womd92725hgdno3d
6329786
6329785
2026-08-12T22:16:57Z
Wikihez
7344
6329786
wikitext
text/x-wiki
{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|url=https://kitêb.nevgur.net/book/eb7my
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=transkrîpsiyona
|rûpel2={{{r|{{{rûpel|}}}}}}
|rûpel={{{r-orîj|{{{rûpel-orîj|}}}}}}
|r=
}}<noinclude>{{belgekirin}}{{quotecat|ku}}</noinclude>
nav81pm3p8j6a9gw8amu2sypayynx5x
6329788
6329786
2026-08-12T22:18:47Z
Wikihez
7344
6329788
wikitext
text/x-wiki
{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|url=https://kitêb.nevgur.net/book/eb7my
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=transkrîpsiyona
|rûpel2={{{r|{{{rûpel|}}}}}}
|rûpel={{{r-orîj|{{{rûpel-orîj|}}}}}}
|r=
}}<noinclude>{{belgekirin}}{{demo|sep=|<nowiki>{{J:Încîl:1872:Sayim|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê|r=105}}</nowiki>}}{{quotecat|ku}}</noinclude>
j6akkjq2yfhf9yc643qilz7etmnvagl
6329789
6329788
2026-08-12T22:19:08Z
Wikihez
7344
6329789
wikitext
text/x-wiki
{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|url=https://kitêb.nevgur.net/book/eb7my
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=transkrîpsiyona
|rûpel2={{{r|{{{rûpel|}}}}}}
|rûpel={{{r-orîj|{{{rûpel-orîj|}}}}}}
|r=
}}<noinclude>{{belgekirin}}{{demo|sep=|<nowiki>{{J:Încîl:1872:Sayim|r=105|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê}}</nowiki>}}{{quotecat|ku}}</noinclude>
hydrkqt52ws1i41prwri3j8jzryb2kf
6329790
6329789
2026-08-12T22:24:38Z
Wikihez
7344
6329790
wikitext
text/x-wiki
{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|url=https://kitêb.nevgur.net/book/eb7my
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=transkrîpsiyona
|rûpel2={{{r|{{{rûpel|}}}}}}
|rûpel={{{r-orîj|{{{rûpel-orîj|}}}}}}
|r=
}}<noinclude>{{belgekirin}}{{demo|sep=|<nowiki>{{J:Încîl:1872:Sayim|r=105|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê}}</nowiki>}}
{{demo|sep=bi {{param|wekçavkanî|1}}|<nowiki><ref>{{J:Încîl:1872:Sayim|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê|r=105|wekçavkanî=1}}</ref></nowiki>}}
{{quotecat|ku}}</noinclude>
pdmsex13wprvl5c1qcwoeibyfida9de
6329791
6329790
2026-08-12T22:25:58Z
Wikihez
7344
6329791
wikitext
text/x-wiki
{{#invoke:quote|quote_t
|ku
|terciman=[[w:en:Isaac Grout Bliss|Isaac Grout Bliss]]
|sernav=Ինճիլ<t:Încîl>
|url=https://kitêb.nevgur.net/book/eb7my
|cih=Stenbol
|sal=1872
|2nivîskar=İlyas Sayım
|sernav2=Yekemîn Încîla Kurdî bi Alfabeya Ermenî Transkrîpsiyon û Lêkolîn
|çap2=1
|cih2=Bîngol
|sal2=2024
|url2=https://kitêb.nevgur.net/book/wf6n5
|versiyona-nû=transkrîpsiyona
|rûpel2={{{r|{{{rûpel|}}}}}}
|rûpel={{{r-orîj|{{{rûpel-orîj|}}}}}}
|r=
}}<noinclude>{{belgekirin}}
{{demo|sep=|<nowiki>{{J:Încîl:1872:Sayim|r=105|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê}}</nowiki>}}
* bi parametreya {{param|wekçavkanî|1}}:
{{demo|sep=wisa xuya dibe|<nowiki><ref>{{J:Încîl:1872:Sayim|jêgirtin=Îsa cewab da ji wan ṟa, û go: Ey! şaşxunan, ne '''kitêb''' dizanin û ne quwwetê Xodê|r=105|wekçavkanî=1}}</ref></nowiki>}}
{{quotecat|ku}}</noinclude>
7d79zkloed6hbk8p3xr6ecmxp8x69gg
Modul:fa-IPA
828
1325993
6329698
6118320
2026-08-12T19:22:37Z
Wikihez
7344
6329698
Scribunto
text/plain
--[=[
FIXME:
1. (ir) q and ğ should both be ɣ intervocally (āqā should give ɒːɣɒː)
2. (prs) disable auto lowering of long vowels before /h/ & /ʔ/, (causes too many issues).
3. (tg, prs) change /q/ to /ɢ/ before a voiced consonant
4. (cls) prevent the appearance of β after a final consonant (e.g -atb should not give β)
-- see [[Template talk:fa-IPA#ð in Classical Persian]]
5. (cls) fix geminated β and ð should be a normal b and d
6. FIXED // (ir) [[محوطه]] gives [mo.ɦav.væ.t̪ʰé] instead of [mo.ɦæv.væ.t̪ʰé]
7. FIXED (all except cls) final geminates such as [[خط]] should transcribe as [xat(ː)]
8. (ir) add support for Shirazi dialect
9. (kbl, haz) [[متأسف]] should be /mutāssif/
10. (ir) [[مقید]] should be /mo.ʁæj.jǽd̪/ (without a second parameter)
11. support disabling a dialect with '-'. e.g. [[نشریه]] should not generate classical
]=]
local export = {}
local m_str_utils = require("Module:string utilities")
local U = m_str_utils.char
local lang = require("Module:languages").getByCode("fa")
local m_IPA = require("Module:IPA")
local m_table = require("Module:table")
local m_qual = require("Module:qualifier")
local all_consonants = "bptTjčhxdDðrzžsšʔʾğGfqkglmnŋhɦwvy'" --needed for syllables
local stop_cons = "bptTjčdDðqkg"
local non_stopc = "hxrzžsšʔğGflmhɦwvy'"
local rsplit = m_str_utils.split
local rsubn = m_str_utils.gsub
local toNFC = mw.ustring.toNFC
local ulen = m_str_utils.len
local usub = m_str_utils.sub
local pitchaccent = U(0x301)
local devoice = U(0x325)
local dtack = U(0x31E)
local gstop = U(0x027)
local dental = U(0x32A)
-- version of rsubn() that discards all but the first return value
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
export.all_styles = {"cls", "prs", "kbl", "haz", "fa", "teh", "tg"}
export.all_style_groups = {
all = export.all_styles,
cls = {"cls"},
dari = {"prs", "kbl", "haz"},
ir = {"fa", "teh"},
tg = {"tg"}
}
export.all_style_descs = {
cls = "Farisiya klasîk",
prs = "Darî",
kabul = "Kabulî",
haz = "Hazaragî",
fa = "Farisiya Îranê",
teh = "Tehranî",
tg = "Tacikî"
}
local function flatmap(items, fun)
local new = {}
for _, item in ipairs(items) do
local results = fun(item)
for _, result in ipairs(results) do
table.insert(new, result)
end
end
return new
end
local common_consonants = {
["j"] = "d͡ʒ",
["'"] = "ʔ",
["ḍ"] = "z",
["D"] = "d",
--these are here for Hazaragi
["T"] = "t",
--they are retroflexes in haz
["ğ"] = "ɣ",
["ġ"] = "ɣ",
["ḥ"] = "h",
["r"] = "ɾ",
["ṣ"] = "s",
["š"] = "ʃ",
["ṯ"] = "s",
["ṭ"] = "t",
["y"] = "j",
["ž"] = "ʒ",
["ẓ"] = "z",
["č"] = "t͡ʃ",
["g"] = "ɡ",
["`"] = "ˈ"
}
local iranian_persian_short_vowels = {["a"] = "æ", ["i"] = "e", ["u"] = "o"}
local iranian_persian_long_vowels = {
["ā"] = "ɒː",
["ī"] = "iː",
["ū"] = "uː",
["ō"] = "uː",
["ē"] = "iː"
}
local iranian_persian_consonants = {["ḏ"] = "z", ["q"] = "ɢ", ["ğ"] = "ɢ", ["ġ"] = "ɢ", ["k"] = "c", ["g"] = "ɟ"}
local dari_persian_short_vowels = {["a"] = "ä", ["i"] = "ɪ", ["u"] = "ʊ"}
local dari_persian_long_vowels = {
["ā"] = "ɑː",
["ī"] = "iː",
["ū"] = "uː",
["ō"] = "oː",
["ē"] = "eː"
}
local dari_persian_consonants = {["ḏ"] = "z", ["v"] = "w"}
local tajik_short_vowels = {["a"] = "ä", ["i"] = "i", ["u"] = "u"}
local tajik_long_vowels = {
["ā"] = "ɔ",
["ī"] = "i",
["ū"] = "u",
["ō"] = "ɵ",
["ē"] = "e"
}
local tajik_vowels = "aieuɵɔ"
local tajik_consonants = {["ḏ"] = "z", ["ɣ"] = "ʁ", ["x"] = "χ"}
local classical_persian_short_vowels = {["a"] = "a", ["i"] = "i", ["u"] = "u"}
local classical_persian_long_vowels = {
["ā"] = "aː",
["ī"] = "iː",
["ū"] = "uː",
["ō"] = "oː",
["ē"] = "eː"
}
local classical_persian_consonants = {["ḏ"] = "ð", ["v"] = "w"}
local vowels_minus_a = "iuāīūüēōːʷ"
local vowels = "aiuāīūüēōːʷ"
--ʷ and ː are counted as vowels to prevent them from being put in the next syllable
local consonant = "[^" .. vowels .. ". -]"
local vowel = "[" .. vowels .. "]"
local syllabify_pattern = "(" .. vowel .. ")(" .. consonant .. ")(" .. consonant .. "?)(" .. vowel .. ")"
local function syllabify(text)
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "%-(" .. consonant .. ")%-(" .. consonant .. ")", "%1.%2")
text = rsubn(text, "([" .. all_consonants .. vowels .. "])`", "%1.`")
-- Add syllable breaks.
for _ = 1, 2 do
text =
rsubn(
text,
syllabify_pattern,
function(a, b, c, d)
if c == "" and b ~= "" then
c, b = b, ""
end
return a .. b .. "." .. c .. d
end
)
end
-- syllable boundry consonants
text =
rsubn(
text,
"([" .. non_stopc .. "])([" .. stop_cons .. "])([" .. non_stopc .. "]+ʷ?)([" .. all_consonants .. vowels .. "])",
"%1%2.%3%4"
)
text = rsubn(text, "([" .. all_consonants .. "])([" .. all_consonants .. "])([" .. all_consonants .. "])", "%1%2.%3")
-- ALL syllables are CV- so vowels NEED an intial consonant (ʔ)
text = rsubn(text, "([" .. all_consonants .. "])([.])i#", "%1%2i#") --exclude izafa/ezafe
text = rsubn(text, "([.])([" .. vowels .. "])", "%1ʔ%2")
text = rsubn(text, "#([" .. vowels .. "])", "#ʔ%1")
return text
end
local function remove_glottal_c(text) --only for regional dialects
-- remove glottal consonants with appropriate glide
text = rsubn(text, "([aā](%.?))([hɦ'])([uū])", "%1w%4")
text = rsubn(text, "([iī])(%.?)([hɦ'])([auāēōū])", "i%2y%4")
text = rsubn(text, "([auāēōū](%.?))([hɦ'])([iīē])", "%1y%4")
text = rsubn(text, "([ē](%.?))([hɦ'])([auāēōū])", "%1y%4")
text = rsubn(text, "([uū])(%.?)([hɦ'])([aāiīēō])", "u%2w%4")
text = rsubn(text, "([ō](%.?))([hɦ'])([aāiīēō])", "%1w%4")
--completely delete GC if both vowels are the either the same or similar
text = rsubn(text, "([" .. all_consonants .. "])([uū])`([h'])([uū])", "`%1ū")
text = rsubn(text, "([" .. all_consonants .. "])([iī])`([h'])([iī])", "`%1ī")
text = rsubn(text, "([" .. all_consonants .. "])([aā])`([h'])([aā])", "`%1ā")
--Else, turn GC into majhul long vowels
text = rsubn(text, "([aā])((%.?)[h'])", "ā")
text = rsubn(text, "([iī])((%.?)['])", "ē")
text = rsubn(text, "([uū])((%.?)['])", "ō")
text = rsubn(text, "(['h])", "")
-- lastly, remove all remaning GC
return text
end
local function con_assimilation(text) --DONT USE THIS ON CLASSICAL
-- assimilation/placement of certain consonants
text = rsubn(text, "l((%.?)[ʈɖ])", "ɭ%1") --retroflexes are only in hazaragi
text = rsubn(text, "([nl])((%.?)[td])", "%1" .. dental .. "%2")
text = rsubn(text, "n((%.?)[ʈɖ])", "ɳ%1")
text = rsubn(text, "([td])", "%1" .. dental .. "")
text = rsubn(text, "n((%.?)[kg])", "ŋ%1")
text = rsubn(text, "n((%.?)[cɟy])", "ɲ%1")
text = rsubn(text, "n((%.?)[bp])", "m%1")
text = rsubn(text, "n((%.?)[qɢ])", "ɴ%1")
text = rsubn(text, "([nm])((%.?)[fv])", "ɱ%2")
text = rsubn(text, "([āʌɑɒäæeēīioɔōuūʊɪ](%" .. dtack .. "?)(%" .. pitchaccent .. "?)(%ː?)(%.?))([h])", "%1ɦ")
text = rsubn(text, "r([tdszšlž])", "ɹ%1")
-- formally, f only assimiates in the same syllable
text = rsubn(text, "f([bjdžğġ])", "v%1")
text = rsubn(text, "ɾ(%.?)ɾ", "#r%1r")
text = rsubn(text, "ä(" .. pitchaccent .. ")", "æ%1")
text = rsubn(text, "([ɦ])#", "ʱ#")
text = rsubn(text, "([h])#", "ʰ#")
text = rsubn(text, "([%a]" .. dental .. "?" .. devoice .. "?)%1(" .. devoice .. "?)#", "%1%2(ː)#")
return text
end
function export.fa_IPA(text)
text = rsubn(text, "a[-]([" .. all_consonants .. "])[-]", "a%1")
text = rsubn(text, "a%-", "e-")
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "^%-", "‿")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "%-i#", "i#")
text = rsubn(text, "[-]([" .. vowels .. all_consonants .. "])[-]", "%1")
text = rsubn(text, "[-]", ".")
text = rsubn(text, "v", "w")
-- Replace xwa with xu
text = rsubn(text, "([#%-])xwa", "%1xu")
-- Replace xwā with xā
text = rsubn(text, "([#%-])xwā", "%1xā")
-- Replace xwē with xē
text = rsubn(text, "([#%-])xwē", "%1xē")
text = rsubn(text, "w(" .. vowel .. ")", "v%1")
text = rsubn(text, "w(" .. consonant .. ")", "w%1")
text = rsubn(text, "([" .. vowels_minus_a .. "])w", "%1v")
text = rsubn(text, "(" .. consonant .. ")w#", "%1v#")
text = rsubn(text, "([iī]y(%`?))(%.?)y", "i%2y")
text = rsubn(text, "v%(w", "v(v")
-- Replace diphthong
text =
rsubn(
text,
"a([wy])()",
function(semivowel, position)
local consonant = usub(text, position, position)
if consonant == "" or consonant:find(consonant) then
if semivowel == "w" then
return "uw"
else
return "ey"
end
end
end
)
--automatically denote syllables
text = syllabify(text)
-- then do pitch accent mark
text = rsubn(text, "`([" .. all_consonants .. "])([" .. vowels .. "])", "%1%2" .. pitchaccent .. "")
text = rsubn(text, "`([" .. vowels .. "])", "%1" .. pitchaccent .. "")
text = rsubn(text, "([iī])(" .. pitchaccent .. "?)(%.?)y", "E%2%3y")
text = rsubn(text, "([ptkč](%" .. dental .. "?))([" .. vowels .. "])", "%1ʰ%3")
text = rsubn(text, "([" .. vowels .. "](%.?))q", "%1ʁ")
-- Replace final a with e (can be overwritten by entering æ)
text = rsubn(text, "([a])(%" .. pitchaccent .. "?)#", "e%2#")
-- Replace short vowels
text = rsubn(text, ".", iranian_persian_short_vowels)
-- Replace long vowels
text = rsubn(text, ".", iranian_persian_long_vowels)
text = rsubn(text, "E(" .. pitchaccent .. "?)(%.?)y", "i%1%2y")
-- Replace jj with dj
text = rsubn(text, "jj", "dj")
-- Replace čč with tč
text = rsubn(text, "čč", "tč")
-- Replace owv- with avv-
text = rsubn(text, "owv", "ævv")
text = rsubn(text, "ow.v", "æv.v")
-- Allephones
text = rsubn(text, "([gbdjl](%" .. dental .. "?))#", "%1" .. devoice .. "#")
-- Replace consonants
text = rsubn(text, ".", iranian_persian_consonants)
text = rsubn(text, "cʰ([ɒuo])", "kʰ%1")
text = rsubn(text, "ɟ(%" .. devoice .. "?)([ɒuo])", "g%1%2")
text = con_assimilation(text)
text = rsubn(text, "#(g)", "%1" .. devoice .. "")
text = rsubn(text, ".", common_consonants)
text = rsubn(text, "ɾ", "ɹ")
--fix the pitch accent on long vowels
text = rsubn(text, "([ɒiu])ː" .. pitchaccent .. "", "%1" .. pitchaccent .. "ː")
text = rsubn(text, "([ɢʁ])(%.?)t", "x%2t")
text = rsubn(text, "([ʁɢ])#", "ɢ" .. devoice .. "#")
text = rsubn(text, "#([ʁɢ])", "#q")
text = rsubn(text, "ʁɢ", "ɢɢ")
text = rsubn(text, "#g", "#k")
text = rsubn(text, "c", "kʲ")
text = rsubn(text, "ɟ", "ɡʲ")
text = rsubn(text, "ʲʰ", "ʰʲ")
text = rsubn(text, "#", "")
text = toNFC(text)
return text
end
function export.prs_IPA(text) --based on formal speech URBAN kabul
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "^%-", "‿")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "%-i#", "i#")
text = rsubn(text, "[-]([" .. vowels .. all_consonants .."])[-]", "%1")
text = rsubn(text, "[-]", ".")
text = rsubn(text, "v", "w")
-- Replace xwa with xu
text = rsubn(text, "xwa", "xu")
-- Replace xwā with xā
text = rsubn(text, "xwā", "xā")
-- Replace xwē with xē
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "([iī](%`?))(%.?)y", "i%2y")
-- Iranian and Classical dictionaries list -iyy,
-- But Tajik and Dari ones dont
text = rsubn(text, "([iī]y(%`?))(%.?)y", "i%2y")
--automatically denote syllables
text = syllabify(text)
--pitch accent mark
text = rsubn(text, "`([" .. all_consonants .. "])([ʷ]?)([" .. vowels .. "])", "%1%2%3" .. pitchaccent .. "")
text = rsubn(text, "`([" .. vowels .. "])", "%1" .. pitchaccent .. "")
text = rsubn(text, "([ptkč])([" .. vowels .. "])", "%1ʰ%2")
-- Replace ih, īh, i\', ī\' by ēh, ē\'
text = rsubn(text, "i((%.?)[ɦh'])", "e" .. dtack .. "%1")
text = rsubn(text, "ī((%.?)[ɦh'])", "ē%1")
-- Replace uh, ūh, u\', ū\' by ɵh, ɵ\'
text = rsubn(text, "u((%.?)[hɦ'])", "o" .. dtack .. "%1")
text = rsubn(text, "ū((%.?)[hɦ'])", "ō%1")
-- Replace short vowels
text = rsubn(text, ".", dari_persian_short_vowels)
-- Replace long vowels
text = rsubn(text, ".", dari_persian_long_vowels)
-- Replace jj with dj
text = rsubn(text, "jj", "dj")
-- Replace čč with tč
text = rsubn(text, "čč", "tč")
--fix the pitch accent on long vowels
text = rsubn(text, "([ʌɑeiou])ː" .. pitchaccent .. "", "%1" .. pitchaccent .. "ː")
-- Allephones
text = con_assimilation(text)
-- Replace consonants
text = rsubn(text, ".", common_consonants)
text = rsubn(text, "f([bjdžğġ])", "v%1")
text = rsubn(text, ".", dari_persian_consonants)
text = rsubn(text, "ɾ(%.?)ɾ", "r%1r")
text = rsubn(text, "ɪ(" .. pitchaccent .. "?)(%.?)j", "i%1%2j")
text = rsubn(text, "#ɾ", "#r")
text = rsubn(text, "#", "")
text = toNFC(text)
return text
end
function export.prs_kbl_IPA(text) --Colloquial dialect of Kabul
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "^%-", "‿")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "%-i#", "i#")
text = rsubn(text, "[-]([" .. vowels .. all_consonants .."])[-]", "%1")
text = rsubn(text, "[-]", ".")
-- Verb stem changes
text = rsubn(text, "#kar(`?)dan#", "#ka%1dan#")
text = rsubn(text, "v", "w")
-- Replace xwa with xu
text = rsubn(text, "xwa", "xu")
-- Replace xwā with xā
text = rsubn(text, "xwā", "xā")
-- Replace xwē with xē
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "([iī](%`?))(%.?)y", "i%2y")
-- Iranian and Classical dictionaries list -iyy,
-- But Tajik and Dari ones dont
text = rsubn(text, "([iī]y(%`?))(%.?)y", "i%2y")
--pitch accent mark
text = rsubn(text, "`([" .. all_consonants .. "])([" .. vowels .. "])", "%1%2" .. pitchaccent .. "")
text = rsubn(text, "`([" .. vowels .. "])", "%1" .. pitchaccent .. "")
-- remove glottal consonants for some dialects
text = remove_glottal_c(text)
--automatically denote syllables
text = syllabify(text)
-- dipthong <ōy> /oːj/ is lost in closed syllables
text = rsubn(text, "ōy", "ūy")
-- universal aspiration
text = rsubn(text, "([ptkč])([" .. vowels .. "])", "%1ʰ%2")
-- Replace short vowels
text = rsubn(text, ".", dari_persian_short_vowels)
-- Replace long vowels
text = rsubn(text, ".", dari_persian_long_vowels)
-- Replace jj with dj
text = rsubn(text, "jj", "dj")
text = rsubn(text, "āw", "aw") -- lost colloquially
-- Replace čč with tč
text = rsubn(text, "čč", "tč")
-- Allephones
text = con_assimilation(text)
-- Replace consonants
text = rsubn(text, ".", dari_persian_consonants)
text = rsubn(text, "f((%.?)[bjdžğġ])", "v%1")
text = rsubn(text, ".", common_consonants)
--fix the pitch accent on long vowels
text = rsubn(text, "([ʌɑeiou])ː" .. pitchaccent .. "", "%1" .. pitchaccent .. "ː")
text = rsubn(text, "ɾ(%.?)ɾ", "#r%1r")
text = rsubn(text, "ɪ(" .. pitchaccent .. "?)(%.?)j", "i%1%2j")
text = rsubn(text, "#ɾ", "#r")
text = rsubn(text, "#", "")
text = toNFC(text)
return text
end
function export.prs_haz_IPA(text) --Hazaragi
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "^%-", "‿")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "([iī](%`?))(%.?)y", "i%2y")
-- Iranian and Classical dictionaries list -iyy,
-- But Tajik and Dari ones dont
text = rsubn(text, "([iī]y(%`?))(%.?)y", "i%2y")
text = rsubn(text, "%-i#", "i#")
text = rsubn(text, "[-]([" .. vowels .. all_consonants .."])[-]", "%1")
text = rsubn(text, "[-]", ".")
-- Verb stem changes
text = rsubn(text, "#kar(`?)dan#", "#ka%1dā#")
--these conversions need to happen BEFORE EVERYTHING ELSE
--pitch accent mark
text = rsubn(text, "`([" .. all_consonants .. "])([" .. vowels .. "])", "%1%2" .. pitchaccent .. "")
text = rsubn(text, "`([" .. vowels .. "])", "%1" .. pitchaccent .. "")
--Vowel Harmony
text = rsubn(text, "ē(" .. pitchaccent .. "?)([" .. all_consonants .. "])([ūiī])", "%3%1%2%3")
text =
rsubn(text, "ē(" .. pitchaccent .. "?)([" .. all_consonants .. "])([" .. all_consonants .. "])([ī])", "%4%1%2%3%4")
text = rsubn(text, "i(" .. pitchaccent .. "?)([" .. all_consonants .. "])([ouū])", "%3%1%2%3")
text = rsubn(text, "ī(" .. pitchaccent .. "?)([" .. all_consonants .. "])([ēōuūiī])", "%3%1%2%3")
text = rsubn(text, "ō(" .. pitchaccent .. "?)([" .. all_consonants .. "])([uū])", "%3%1%2%3")
text = rsubn(text, "ō(" .. pitchaccent .. "?)([" .. all_consonants .. "])([i])", "u%1%2%3")
text = rsubn(text, "ō(" .. pitchaccent .. "?)([" .. all_consonants .. "])([ī])", "ū%1%2%3")
-- Replace xwa with xu
text = rsubn(text, "xwa", "xu")
-- Replace xwā with xā
text = rsubn(text, "xwā", "xā")
-- Replace xwē with xē
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "v", "w")
-- remove glottal consonants for some dialects
text = remove_glottal_c(text)
--automatically denote syllables
text = syllabify(text)
-- universal aspiration
text = rsubn(text, "([ptkč])([" .. vowels .. "])", "%1ʰ%2")
--delete certain consonant clusters and dipthongs
text = rsubn(text, "āy", "ay")
text = rsubn(text, "āw", "aw")
--retroflex consonants
text = rsubn(text, "D", "ɖ")
text = rsubn(text, "T", "ʈ")
-- Replace short vowels
-- no consistent vowel length for i or u
text = rsubn(text, "ī", "i")
text = rsubn(text, "ū", "u")
text = rsubn(text, ".", classical_persian_short_vowels)
--approximate vowels
text = rsubn(text, "ā", "ɔː")
text = rsubn(text, "ō", "ʊː")
text = rsubn(text, "a", "ä")
-- Replace long vowels
text = rsubn(text, ".", dari_persian_long_vowels)
--fix the pitch accent on long vowels
text = rsubn(text, "([ɔeiʊu])ː" .. pitchaccent .. "", "%1" .. pitchaccent .. "ː")
-- Replace jj with dj
text = rsubn(text, "jj", "dj")
-- Replace čč with tč
text = rsubn(text, "čč", "tč")
--allophones
text = con_assimilation(text)
text = rsubn(text, "([gbdjl](%" .. dental .. "?))#", "%1" .. devoice .. "#")
--Terminal voicing in not phonetic
text = rsubn(text, "([gbdj])#", "%1" .. devoice .. "#")
-- Replace consonants
text = rsubn(text, ".", dari_persian_consonants)
text = rsubn(text, "f((%.?)[bjdžğġ])", "v%1")
text = rsubn(text, ".", common_consonants)
text = rsubn(text, "ɾ(%.?)ɾ", "#r%1r")
text = rsubn(text, "#ɾ", "#r")
text = rsubn(text, "#", "")
text = toNFC(text)
return text
end
function export.tg_IPA(text)
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "^%-", "‿")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "%-i#", "i#")
-- Iranian and Classical dictionaries list -iyy,
-- But Tajik and Dari ones dont
text = rsubn(text, "([iī]y(%`?))(%.?)y", "i%2y")
text = rsubn(text, "[-]([" .. vowels .. all_consonants .."])[-]", "%1")
text = rsubn(text, "[-]", ".")
text = rsubn(text, "v", "w")
-- Replace xwa with xu
text = rsubn(text, "xwa", "xu")
-- Replace xwā with xā
text = rsubn(text, "xwā", "xā")
-- Replace xwē with xē
text = rsubn(text, "xwē", "xē")
text = rsubn(text, "xwē", "xē")
--automatically denote syllables
text = syllabify(text)
--pitch accent mark
text = rsubn(text, "`([" .. all_consonants .. "])([" .. vowels .. "])", "%1%2" .. pitchaccent .. "")
text = rsubn(text, "`([" .. vowels .. "])", "%1" .. pitchaccent .. "")
-- Replace jj with dj
text = rsubn(text, "jj", "dj")
-- Replace čč with tč
text = rsubn(text, "čč", "tč")
text = rsubn(text, "w([" .. vowels .. "])", "v%1")
-- universal aspiration
text = rsubn(text, "([ptkč])([" .. vowels .. "])", "%1ʰ%2")
-- Replace ih, īh, i\', ī\' by ēh, ē\'
text = rsubn(text, "([iī])(%" .. pitchaccent .. "?)([h'ʔɦ])([^" .. tajik_vowels .. "])", "e%2%3%4")
-- Replace uh, ūh, u\', ū\' by ɵh, ɵ\'
text = rsubn(text, "([uū])(%" .. pitchaccent .. "?)([hʔ'ɦ])([^" .. tajik_vowels .. "])", "ɵ%2%3%4")
--aspiration
text = rsubn(text, "([ptkč](%" .. dental .. "?))([" .. vowels .. "])", "%1ʰ%3")
-- Replace short vowels
text = rsubn(text, ".", tajik_short_vowels)
-- Replace long vowels
text = rsubn(text, ".", tajik_long_vowels)
--allophones
text = con_assimilation(text)
-- Replace consonants
text = rsubn(text, ".", common_consonants)
text = rsubn(text, ".", tajik_consonants)
text = rsubn(text, "([aä])(" .. pitchaccent .. ")", "æ%2")
text = rsubn(text, "#", "")
text = toNFC(text)
return text
end
function export.fa_cls_IPA(text)
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "^%-", "‿")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "([iī](%`?))(%.?)y", "i%2y")
text = rsubn(text, "%-i#", "i#")
text = rsubn(text, "[-]([" .. vowels .. all_consonants .."])[-]", "%1")
text = rsubn(text, "[-]", ".")
text = rsubn(text, "v", "w")
-- Replace xwa with xʷa
text = rsubn(text, "xwa", "xʷa")
-- Replace xwā with xʷā
text = rsubn(text, "xwā", "xʷā")
-- Replace xwē with xʷē
text = rsubn(text, "xwē", "xʷē")
--automatically denote syllables
text = syllabify(text)
-- Replace short vowels
text = rsubn(text, ".", classical_persian_short_vowels)
-- Replace d with ḏ after vowels
text = rsubn(text, "([" .. vowels .. "]+.?)(%`?)([d])", "%1%2ḏ")
text = rsubn(text, "([" .. vowels .. "]+.?)(%`?)([b])", "%1%2β")
-- Replace long vowels
text = rsubn(text, ".", classical_persian_long_vowels)
-- Replace jj with dj
text = rsubn(text, "jj", "dj")
-- Replace čč with tč
text = rsubn(text, "čč", "tč")
-- Replace consonants
text = rsubn(text, ".", common_consonants)
text = rsubn(text, ".", classical_persian_consonants)
text = rsubn(text, "#", "")
text = toNFC(text)
return text
end
-- ROMANIZATIONS
function export.romanize_fa_cls(text, script, options)
if type(text) == "table" then
options = {}
text, script = text.args[1], text.args[2]
end
text = rsubn(text, "`", "")
text = rsubn(text, "ˈ", "")
text = rsubn(text, "[,]", ", ")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "([iī])(%.?)y", "iy")
--kill incorrect characters
text = rsubn(text, "([" .. dental .. pitchaccent .. devoice .. dtack .. "ʰ])", "")
text = rsubn(text, "([ɴŋ])", "n")
--remove v
text = rsubn(text, "v", "w")
--ensure vowels are paired to a consonant
text = rsubn(text, "([.])([" .. vowels .. "])", "%1'%2")
text = rsubn(text, "([.])", "")
text = rsubn(text, "([" .. vowels .. "])([dḍ])", "%1ḏ")
text = rsubn(text, "([" .. vowels .. "](%-?))b", "%1ḇ")
text = rsubn(text, "ḏ", "ḏ")
text = rsubn(text, "ḏd", "dd")
text = rsubn(text, "ḇb", "bb")
text = rsubn(text, "ḍ", "z")
text = rsubn(text, "ṭ", "t")
text = rsubn(text, "ṯ", "s")
text = rsubn(text, "ṣ", "s")
text = rsubn(text, "ḥ", "h")
-- remove Hazaragi retroflexes
text = rsubn(text, "D", "d")
text = rsubn(text, "T", "t")
text = rsubn(text, "ɖ", "d")
text = rsubn(text, "ʈ", "t")
text = rsubn(text, "#'", "#")
text = rsubn(text, "#", "")
return text
end
function export.romanize_prs(text, script, options)
if type(text) == "table" then
options = {}
text, script = text.args[1], text.args[2]
end
text = rsubn(text, "`", "")
text = rsubn(text, "ˈ", "")
text = rsubn(text, "[,]", ", ")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "([iī](%.?))y", "i%2y")
text = rsubn(text, "([iī]y(%.?))y", "i%2y")
text = rsubn(text, "i(['h])", "e%1")
text = rsubn(text, "u(['h])", "o%1")
--kill incorrect characters
text = rsubn(text, "([" .. dental .. pitchaccent .. devoice .. dtack .. "ʰ])", "")
text = rsubn(text, "([ɴŋ])", "n")
text = rsubn(text, "v", "w")
-- Replace xw clusters
text = rsubn(text, "xw([āē])", "x%1")
text = rsubn(text, "xwa", "xu")
-- for rare exceptions
text = rsubn(text, "ʷ", "w")
--ensure vowels are paired to a consonant
text = rsubn(text, "([.])([" .. vowels .. "])", "%1'%2")
text = rsubn(text, "([.])", "")
text = rsubn(text, "ḍ", "z")
text = rsubn(text, "ḏ", "z")
text = rsubn(text, "ṯ", "s")
text = rsubn(text, "ṭ", "t")
text = rsubn(text, "ṣ", "s")
text = rsubn(text, "ḥ", "h")
-- THIS SHOULD ONLY BE DONE FOR HAZARAGI RETROFLEX ENTRIES
-- THEY SHOULD NEVER APPEAR IN A MAIN ENTRY
text = rsubn(text, "D", "ḍ")
text = rsubn(text, "T", "ṭ")
text = rsubn(text, "ɖ", "ḍ")
text = rsubn(text, "ʈ", "ṭ")
text = rsubn(text, "#'", "#")
-- remove unnecessary marks
text = rsubn(text, "#", "")
return text
end
function export.romanize_ira(text, script, options)
if type(text) == "table" then
options = {}
text, script = text.args[1], text.args[2]
end
text = rsubn(text, "`", "")
text = rsubn(text, "ˈ", "")
text = rsubn(text, "[,]", ", ")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "([iī]y(%.?))y", "i%2y")
--kill incorrect characters
text = rsubn(text, "([" .. dental .. pitchaccent .. devoice .. dtack .. "ʰ])", "")
text = rsubn(text, "([ɴŋ])", "n")
text = rsubn(text, "v", "w")
-- Replace xw clusters
text = rsubn(text, "([#%-])xw([āē])", "%1x%2")
text = rsubn(text, "([#%-])xwa", "%1xu")
text = rsubn(text, "ʷ", "")
text = rsubn(text, "w(" .. vowel .. ")", "v%1")
text = rsubn(text, "w(" .. consonant .. ")", "w%1")
text = rsubn(text, "([" .. vowels_minus_a .. "])w", "%1v")
text = rsubn(text, "v%(w", "v(v")
text = rsubn(text, "(" .. consonant .. ")w#", "%1v#")
text = rsubn(text, "wv", "vv")
text = rsubn(text, "wæ", "væ")
--ensure vowels are paired to a consonant
text = rsubn(text, "([.])([" .. vowels .. "])", "%1'%2")
text = rsubn(text, "([.])", "")
text = rsubn(text, "iy", "īy")
text = rsubn(text, "ay", "ey")
text = rsubn(text, "aw", "ow")
text = rsubn(text, "ḍ", "z")
text = rsubn(text, "ḏ", "z")
text = rsubn(text, "ṭ", "t")
text = rsubn(text, "q", "ġ")
text = rsubn(text, "ṯ", "s")
text = rsubn(text, "ṣ", "s")
text = rsubn(text, "ḥ", "h")
text = rsubn(text, "ā", "â")
text = rsubn(text, "u", "o")
text = rsubn(text, "i", "e")
-- remove Hazaragi retroflexes
text = rsubn(text, "D", "d")
text = rsubn(text, "T", "t")
text = rsubn(text, "ɖ", "d")
text = rsubn(text, "ʈ", "t")
-- Tajik does not have vowel length
text = rsubn(text, "([ēī])", "i")
text = rsubn(text, "([ūō])", "u")
-- terminal w is only possible in a dipthong
text = rsubn(text, "([o]0)w#", "v#")
text = rsubn(text, "a#", "e#")
text = rsubn(text, "#ve#", "#va#")
text = rsubn(text, "a%-", "e-")
text = rsubn(text, "æ", "a")
text = rsubn(text, "#'", "#")
text = rsubn(text, "#", "")
return text
end
function export.romanize_tg(text, script, options)
if type(text) == "table" then
options = {}
text, script = text.args[1], text.args[2]
end
text = rsubn(text, "[,]", ", ")
text = rsubn(text, " | ", "# | #")
text = "##" .. rsubn(text, " ", "# #") .. "##"
text = rsubn(text, "i(['h])", "ē%1")
text = rsubn(text, "u(['h])", "ō%1")
text = rsubn(text, "([iī]y(%.?))y", "i%2y")
text = rsubn(text, "ˈ", "`")
text = rsubn(text, "([iī]y`y)", "i`y")
--kill incorrect characters
text = rsubn(text, "([" .. dental .. pitchaccent .. devoice .. dtack .. "ʰ])", "")
text = rsubn(text, "([ɴŋ])", "n")
-- Tajik needs some Capital letters for headword spellings
-- But Capital letters in the headword can only be initial
text = rsubn(text, "w", "v")
text = rsubn(text, "W", "V")
-- Replace xw clusters
text = rsubn(text, "xv([āē])", "x%1")
text = rsubn(text, "xva", "xu")
text = rsubn(text, "Xv([āē])", "X%1")
text = rsubn(text, "Xva", "Xu")
text = rsubn(text, "ʷ", "")
--ensure vowels are paired to a consonant
text = rsubn(text, "([.])([" .. vowels .. "])", "%1'%2")
text = rsubn(text, "([.])", "")
text = rsubn(text, "ḍ", "z")
text = rsubn(text, "ḏ", "z")
text = rsubn(text, "ṯ", "s")
text = rsubn(text, "ṭ", "t")
text = rsubn(text, "ṣ", "s")
text = rsubn(text, "ḥ", "h")
text = rsubn(text, "ē", "e")
text = rsubn(text, "ō", "ü")
text = rsubn(text, "ā", "o")
text = rsubn(text, "Ē", "E")
text = rsubn(text, "Ō", "Ü")
text = rsubn(text, "Ā", "O")
-- remove Hazaragi retroflexes
text = rsubn(text, "ɖ", "d")
text = rsubn(text, "ʈ", "t")
-- Tajik does not have vowel length
text = rsubn(text, "([iī])", "i")
text = rsubn(text, "([ūu])", "u")
text = rsubn(text, "([IĪ])", "I")
text = rsubn(text, "([UŪ])", "U")
text = rsubn(text, "`", "")
text = rsubn(text, "#([ʾ])", "")
text = rsubn(text, "#", "")
return text
end
local function one_term_ipa(text, style)
if style == "cls" then
text = export.fa_cls_IPA(text)
elseif style == "prs" then
text = export.prs_IPA(text)
elseif style == "kbl" then
text = export.prs_kbl_IPA(text) or export.prs_IPA(text) --should ignore conversion if specified
elseif style == "haz" then
text = export.prs_haz_IPA(text)
elseif style == "fa" then
text = export.fa_IPA(text)
elseif style == "teh" then
text = export.fa_IPA(text)
elseif style == "tg" then
text = export.tg_IPA(text)
end
return text
end
-- style == one of the following:
-- "cls": Classical Persian
-- "prs": Dari Persian
-- "kbl": Kabuli
-- "haz": Hazaragi
-- "fa": Iranian Persian
-- "teh": Tehrani
-- "tg": Tajik
function export.IPA(text, style)
local variants = {text}
local function apply_sub(from, to1, to2)
return function(item)
if rfind(item, from) then
if to2 then
return {rsub(item, from, to1), rsub(item, from, to2)}
else
return {rsub(item, from, to1)}
end
else
return {item}
end
end
end
local function call_one_term_ipa(variant)
local result = {
{
phonemic = one_term_ipa(variant, style, false, err)
}
}
local function apply_sub(item, from, to1, qual1, to2, qual2)
if rfind(item.phonemic, from) or rfind(item.phonetic, from) then
return {
{
phonemic = rsub(item.phonemic, from, to1),
qualifiers = qual1
},
{
phonemic = rsub(item.phonemic, from, to2),
qualifiers = qual2
}
}
else
return {item}
end
end
return result
end
return flatmap(variants, call_one_term_ipa)
end
function export.express_styles(inputs, args_style)
local pronuns_by_style = {}
local expressed_styles = {}
local function dostyle(style)
pronuns_by_style[style] = {}
for _, val in ipairs(inputs[style]) do
local pronuns = export.IPA(val, style)
for _, pronun in ipairs(pronuns) do
table.insert(pronuns_by_style[style], pronun)
end
end
end
local function all_available(styles)
local available_styles = {}
for _, style in ipairs(styles) do
if pronuns_by_style[style] then
table.insert(available_styles, style)
end
end
return available_styles
end
local function express_style(hidden_tag, tag, styles, indent)
indent = indent or 1
if hidden_tag == true then
hidden_tag = tag
end
if type(styles) == "string" then
styles = {styles}
end
styles = all_available(styles)
if #styles == 0 then
return
end
local style = styles[1]
-- If style specified, make sure it matches the requested style.
local style_matches
if not args_style then
style_matches = true
else
local or_styles = rsplit(args_style, "%s*,%s*")
for _, or_style in ipairs(or_styles) do
local and_styles = rsplit(or_style, "%s*%+%s*")
local and_matches = true
for _, and_style in ipairs(and_styles) do
local negate
if and_style:find("^%-") then
and_style = and_style:gsub("^%-", "")
negate = true
end
local this_style_matches = false
for _, part in ipairs(styles) do
if part == and_style then
this_style_matches = true
break
end
end
if negate then
this_style_matches = not this_style_matches
end
if not this_style_matches then
and_matches = false
end
end
if and_matches then
style_matches = true
break
end
end
end
if not style_matches then
return
end
local new_style = {
tag = tag,
represented_styles = styles,
pronuns = pronuns_by_style[style],
indent = indent
}
for _, hidden_tag_style in ipairs(expressed_styles) do
if hidden_tag_style.tag == hidden_tag then
table.insert(hidden_tag_style.styles, new_style)
return
end
end
table.insert(
expressed_styles,
{
tag = hidden_tag,
styles = {new_style}
}
)
end
for style, _ in pairs(inputs) do
dostyle(style)
end
local function diff(style1, style2)
if not pronuns_by_style[style1] or not pronuns_by_style[style2] then
return true
end
return not m_table.deepEquals(pronuns_by_style[style1], pronuns_by_style[style2])
end
local fa_teh_different = diff("fa", "teh")
local prs_kbl_different = diff("prs", "kbl")
local prs_haz_different = diff("prs", "haz")
-- Classical Persian
express_style("[[w:en:Classical Persian|Farisiya klasîk]]", "[[w:en:Classical Persian|Farisiya klasîk]]", "cls")
-- Dari Persian
express_style(
"[[w:en:Dari Persian|Darî, resmî]]",
"[[w:en:Dari Persian|Darî, resmî]]",
"prs"
)
express_style("[[w:en:Dari Persian|Darî, resmî]]", "[[w:en:Dari#South-Eastern|Kabulî]]", "kbl", 2)
express_style("[[w:en:Dari Persian|Darî, resmî]]", "[[w:en:Hazaragi dialect|Hazaragî]]", "haz", 2)
-- Iranian Persian
express_style(
"[[w:en:Iranian Persian|Îran, resmî]]",
"[[w:en:Iranian Persian|Îran, resmî]]",
"fa"
)
if fa_teh_different then
express_style("[[w:en:Iranian Persian|Îran, resmî]]", "[[w:en:Tehrani accent|Tehranî]]", "teh", 2)
end
-- Tajik
express_style(
"[[:Kategorî:Tacikî|Tacikî, resmî]]",
"[[:Kategorî:Tacikî|Tacikî, resmî]]",
"tg"
)
return expressed_styles
end
function export.show(frame)
-- Create parameter specs
local params = {
[1] = {}, -- this replaces style group 'all'
["pre"] = {},
["post"] = {},
["ref"] = {},
["style"] = {},
["bullets"] = {type = "number", default = 1}
}
for group, _ in pairs(export.all_style_groups) do
if group ~= "all" then
params[group] = {}
end
end
for _, style in ipairs(export.all_styles) do
params[style] = {}
end
-- Parse arguments
local parargs = frame:getParent().args
local args = require("Module:parameters").process(parargs, params)
-- Set inputs
local inputs = {}
-- If 1= specified, do all styles.
if args[1] then
for _, style in ipairs(export.all_styles) do
inputs[style] = args[1]
end
end
-- Then do remaining style groups other than 'all', overriding 1= if given.
for group, styles in pairs(export.all_style_groups) do
if group ~= "all" and args[group] then
for _, style in ipairs(styles) do
inputs[style] = args[group]
end
end
end
-- Then do individual style settings.
for _, style in ipairs(export.all_styles) do
if args[style] then
inputs[style] = args[style]
end
end
-- If no inputs given, set all styles based on current pagename.
if not next(inputs) then
local text = mw.title.getCurrentTitle().text
for _, style in ipairs(export.all_styles) do
inputs[style] = text
end
end
for style, input in pairs(inputs) do
inputs[style] = rsplit(input, ",")
end
local expressed_styles = export.express_styles(inputs, args.style)
local lines = {}
local function format_style(tag, expressed_style, is_first)
local pronunciations = {}
local formatted_pronuns = {}
for _, pronun in ipairs(expressed_style.pronuns) do
table.insert(
pronunciations,
{
pron = "[" .. pronun.phonemic .. "]",
qualifiers = pronun.qualifiers
}
)
local formatted_phonemic = "[" .. pronun.phonemic .. "]"
if pronun.qualifiers then
formatted_phonemic = "(" .. table.concat(pronun.qualifiers, ", ") .. ") " .. formatted_phonemic
end
table.insert(formatted_pronuns, formatted_phonemic)
end
-- Number of bullets: When indent = 1, we want the number of bullets given by `args.bullets`,
-- and when indent = 2, we want `args.bullets + 1`, hence we subtract 1.
local bullet = string.rep("*", args.bullets + expressed_style.indent - 1) .. " "
-- Here we construct the formatted line in `formatted`, and also try to construct the equivalent without HTML
-- and wiki markup in `formatted_for_len`, so we can compute the approximate textual length for use in sizing
-- the toggle box with the "more" button on the right.
local pre = is_first and args.pre and args.pre .. " " or ""
local pre_for_len = pre .. (tag and "(" .. tag .. ") " or "")
pre = pre .. (tag and m_qual.format_qualifier(tag) .. " " or "")
local post = is_first and (args.ref or "") .. (args.post and " " .. args.post or "") or ""
local formatted = bullet .. pre .. m_IPA.format_IPA_full { lang = lang, items = pronunciations } .. post
local formatted_for_len = bullet .. pre .. "IPA(key): " .. table.concat(formatted_pronuns, ", ") .. post
return formatted, formatted_for_len
end
for i, style_group in ipairs(expressed_styles) do
if #style_group.styles == 1 then
style_group.formatted, style_group.formatted_for_len =
format_style(style_group.styles[1].tag, style_group.styles[1], i == 1)
else
style_group.formatted, style_group.formatted_for_len = format_style(style_group.tag, style_group.styles[1], i == 1)
for j, style in ipairs(style_group.styles) do
style.formatted, style.formatted_for_len = format_style(style.tag, style, i == 1 and j == 1)
end
end
end
local function textual_len(text)
text = rsub(text, "<.->", "")
return ulen(text)
end
local maxlen = 0
for i, style_group in ipairs(expressed_styles) do
local this_len = textual_len(style_group.formatted_for_len)
if #style_group.styles > 1 then
for _, style in ipairs(style_group.styles) do
this_len = math.max(this_len, textual_len(style.formatted_for_len))
end
end
maxlen = math.max(maxlen, this_len)
end
for i, style_group in ipairs(expressed_styles) do
if #style_group.styles == 1 then
table.insert(lines, "<div>\n" .. style_group.formatted .. "</div>")
else
local inline = '\n<div class="vsShow" style="display:none">\n' .. style_group.formatted .. "</div>"
local full_prons = {}
for _, style in ipairs(style_group.styles) do
table.insert(full_prons, style.formatted)
end
local full = '\n<div class="vsHide">\n' .. table.concat(full_prons, "\n") .. "</div>"
local em_length = math.floor(maxlen * 0.68) -- from [[Module:grc-pronunciation]]
table.insert(
lines,
'<div class="vsSwitcher" data-toggle-category="Telafûzê" style="width: ' ..
em_length ..
'em; max-width:100%;"><span class="vsToggleElement" style="float: right;"> </span>' ..
inline .. full .. "</div>"
)
end
end
-- major hack to get bullets working on the next line
return table.concat(lines, "\n") .. "\n<span></span>"
end
--Tajik from Cyrillic
local t_consonants = {
['g'] = 'ɡ',
['j'] = 'd͡ʒ',
['ġ'] = 'ɣ',
['y'] = 'j',
['š'] = 'ʃ',
['č'] = 't͡ʃ',
['x'] = 'x',
['ž'] = 'ʒ',
['\''] = 'ʔ'
}
local t_vowels = {
['a'] = 'a',
['ü'] = 'ɵ',
['o'] = 'o',
}
function export.tg_phonemic(text)
text = require('Module:languages').getByCode('tg'):transliterate(text)
text = m_str_utils.lower(text)
text = rsubn(text, "`", "ˈ")
text = rsubn(text, "%-", "")
text = rsubn(text, "[-,]", " ")
text = rsubn(text, "%.", "")
-- Replace vowels
text = rsubn(text, ".", t_vowels)
-- Replace consonants
text = rsubn(text, ".", t_consonants)
return text
end
function export.tg_phonetic(text)
text = require('Module:languages').getByCode('tg'):transliterate(text)
text = m_str_utils.lower(text)
text = rsubn(text, "^%-", "‿")
text = rsubn(text, "(i)", "ī")
text = rsubn(text, "(u)", "ū")
text = rsubn(text, "(e)", "ē")
text = rsubn(text, "(ü)", "ō")
text = rsubn(text, "(o)", "ā")
text = rsubn(text, "ʾ", "'")
text = rsubn(text, "%-", "")
text = syllabify(text)
text = export.tg_IPA(text)
text = mw.ustring.toNFC(text)
return text
end
function export.show_tg(frame)
local tg = require("Module:languages").getByCode("tg")
local args = frame:getParent().args
local p, results = {}, {}
if args[1] then
for index, item in ipairs(args) do
table.insert(p, (item ~= "") and item or nil)
end
else
if mw.title.getCurrentTitle().nsText == "Template" then
p = {"чаҳоршанбе"}
else
p = {mw.title.getCurrentTitle().text}
end
end
for _, word in ipairs(p) do
table.insert(results, {pron = "/" .. export.tg_phonemic(word) .. "/"})
table.insert(results, {pron = "[" .. export.tg_phonetic(word) .. "]"})
end
return "* " .. m_IPA.format_IPA_full { lang = tg, items = results }
end
return export
cuv0emf1uy82j6s008v9i6tt1k1ph3q
Şablon:quote-book
10
1326027
6329780
6105832
2026-08-12T21:53:56Z
Wikihez
7344
Ji bo [[Şablon:jêder-kitêb]] hat beralîkirin
6329780
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:jêder-kitêb]]
crpolxhi8g1rb43jp5tboxbdkehhxiu
Şablon:Ç:kho:Bailey
10
1326157
6329866
6067099
2026-08-13T00:13:43Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Bailey]] weke [[Şablon:Ç:kho:Bailey]] guhart
6067099
wikitext
text/x-wiki
* {{kitêb|nivîskar={{zim|en|Bailey, H. W.}}|sernav=Ferhenga xotan-sekeyî|sernavê orjînal={{zim|en|Dictionary of Khotan Saka}}|weşanxane=Cambridge University press|cih=Cambridge, London, New York, Melbourne|rûpel={{{r|{{{rûpel|}}}}}}}}<noinclude>[[Kategorî:Çavkanî]]</noinclude>
eo4g9vdjflctrb6l5cs4oi7htjpwswj
6329868
6112097
2026-08-13T00:13:55Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:R:kho:Bailey]] weke [[Şablon:Ç:kho:Bailey]] guhart
6112097
wikitext
text/x-wiki
{{cite-book<!--
-->|last=Bailey<!--
-->|first=H. W.<!--
-->|authorlink=H. W. Bailey<!--
-->|title=Dictionary of Khotan Saka<!--
-->|entry={{{head|{{{1|}}}}}}<!--
-->|location=Cambridge, London, New York, Melbourne<!--
-->|publisher=Cambridge University press<!--
-->|year=1979<!--
-->|page={{{page|{{{2|}}}}}}<!--
-->|pages={{{pages|}}}<!--
-->|passage={{{passage|{{{3|}}}}}}<!--
-->}}<noinclude>[[Category:Khotanese reference templates|Bailey]][[Category:Proto-Iranian reference templates|Bailey]]</noinclude>
nh5didhur19s7n61gqsfia4q1n9hwfw
6329870
6329868
2026-08-13T00:19:59Z
Wikihez
7344
6329870
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book|en<!--
-->|last=Bailey<!--
-->|first=H. W.<!--
-->|authorlink=H. W. Bailey<!--
-->|title=Dictionary of Khotan Saka<t:Ferhenga xotan-sekeyî><!--
-->|entry={{{head|{{{1|{{{ser|}}}}}}}}}<!--
-->|location=Cambridge, London, New York, Melbourne<!--
-->|publisher=Cambridge University press<!--
-->|year=1979<!--
-->|pageparam=page,r,rûpel,2<!--
-->|pages={{{pages|{{{rûpelên|}}}}}}<!--
-->|passage={{{passage|{{{3|{{{jêgirtin|}}}}}}}}}<!--
-->|allowparams=1,volume,vol,cild,passage,jêgirtin,rûpelên,pages,ser
}}<noinclude>{{çavkkat|kho|ira-pro}}</noinclude>
lk59w4cumi8f02zg35ql8dh452ajq1k
Şablon:Ç:Jaba:1879
10
1326394
6329925
6329533
2026-08-13T11:07:52Z
Wikihez
7344
6329925
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Jaba
|first=Auguste
|authorlink=August Kościesza-Żaba
|last2=Justi
|first2=Ferdinand
|authorlink2=Ferdinand Justi
|title=Dictionnaire Kurde-Français
|trans-title=Ferhenga Kurdî-Fransî
|entry={{{1|}}}
|location=Saint Petersburg
|publisher=Imperial Academy of Sciences
|year=1879
|pageparam=page,r,rûpel
|pageurl=https://books.google.com/books?id=aggVAAAAYAAJ&pg=PA{{#expr:{{#invoke:string/templates|match|{{{page|{{{pages|{{{rûpel|{{{r|}}}}}}}}}}}}|[0-9]+}}}}
|allowparams=1
}}<noinclude>{{belgekirin}}</noinclude>
q3oxjilzfntfy713hytwymxmy42jn33
Şablon:J:ku:Qur'an:2023
10
1326428
6329834
6119110
2026-08-12T23:36:47Z
Wikihez
7344
6329834
wikitext
text/x-wiki
{{{{#if:{{{jêgirtin|{{{jg|}}}}}}|jêder-}}kitêb|ku|jêgirtin={{{jêgirtin|{{{jg|}}}}}}|r={{{rûpel|{{{r|}}}}}}|sernav=Meala Tewhîd a Qur'ana Mecîd|terciman=Orhan Eren|weşanxane=Tevhid Basım Yayın|isbn=978-6057176424|sal=2023|url=https://archive.org/details/221102-meal-kurtce}}<noinclude>{{refcat}}</noinclude>
f6p15himfo78hyo1q0fw8yayiq1zazj
Wîkîferheng:Dîwan/2026
4
1327120
6329622
6329444
2026-08-12T13:48:01Z
Wikihez
7344
/* Gotûbêj */ Bersiv
6329622
wikitext
text/x-wiki
<noinclude>{{Dîwan/arşîv-ser|2026}}</noinclude>
{{clear}}
== Daxwazên standardkirinê ==
https://ku.wiktionary.org/wiki/W%C3%AEk%C3%AEferheng:Daxwaz%C3%AAn_standardkirin%C3%AA, Gelo di vê malperê de peyvên hatîye standart kirin; ji malperê rakin? Zêde tehlîhev e. @[[Bikarhêner:Bikarhêner|Bikarhêner]]@[[Bikarhêner:Guherto|Guherto]] [[Bikarhêner:Rewiye tine|Rewiye tine]] ([[Gotûbêja bikarhêner:Rewiye tine|gotûbêj]]) 10:03, 8 kanûna paşîn 2026 (UTC)
:@[[Bikarhêner:Rewiye tine|Rewiye tine]] [[Taybet:Tercîh#mw-prefsection-gadgets]] li vir amûra [[MediaWiki:Gadget-aWa.js/belgekirin|awa]] aktîv bike û pê re dikarî gotûbêjan arşîv bikî. Li sayfa [[WF:DS]] li kêleka her sernavê gotûbêjê <nowiki>[arşîv bike]</nowiki> derdikeve, pê lê bike û ew ê arşîv bike. Eger nikarî tu tenê şablona {{ş|ds-kirî}} îlawe bike, ez ê dûre arşîv bikim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:35, 5 tîrmeh 2026 (UTC)
== Standartkirin ==
Sala borî, min pêşnîyazek kiribû. Halî hazir piştî daxwaza standarkirinê em du heftî disekinin, eger kesek fikrek dîyar neke. Raste rast peyv li gor ferhenga standart a mezopotamyayê tê standart kirin. Ji xwe sazîyek vê karî dike çima em vê barî dikin stuyê xwe. Mesela ez çaxe di wîkîferhengê de peyvek digêrim; standart a peyvê jî li cem xwe kontrol dikim. Eger destûr hebe bi germî dikarim wê malperê standart bikim. Benda bûna du heftîyan gelo ne zehmet e? Duyemîn pêşnîyaza min nîşandana standarta peyvê di malpera de ye. Kesek dema malperan binêre, divê li jora malperan bibîne ku ev peyv standart e. Ev jî hîzmet e. Çimkî nivîskar, wergêr, edîtor, rojnemavan hez dikin bi peyvê standart binivîsin. https://ku.wiktionary.org/wiki/k%C3%AAf li vir wekî mînak min daye nîşan. Lê îfade eger wisa be: Standarda Rastnivîsîna Ferhenga Kurdî a Weqfa Mezopotamyayê kêf (r. 253) e yê çetir be. Çimkî îfadeya berê de peyva kurdî-tirkî derbas dibe û di mejîyê mirov de tevlihevî çêdibe.@[[Bikarhêner:Bikarhêner|Bikarhêner]]@[[Bikarhêner:Guherto|Guherto]] [[Bikarhêner:Rewiye tine|Rewiye tine]] ([[Gotûbêja bikarhêner:Rewiye tine|gotûbêj]]) 10:25, 8 kanûna paşîn 2026 (UTC)
:Merheba. Hevalno dîyar e karê standarkirinê li wîkîferhengê rawestîya ye. Min sê peyv ji bo standartkirinê qeyd kir. Kes li ser şîrove nenivîsî. Mehek jî li ser derbas bû. Aniha ez dikarim van rupelan biguherim. Li gor qaîdeya hatine danîn wisa ye. Daxwaza min heta niha jî ew e kelîmeyên di ferhenga standartkirinê de heyî divê em bikaribin rasterast li vir jî bikin standart. An jî demê kurttir bikin. Li weqfa mezapotamyayê 20 mirov digêhin hev li ser peyvekî seetan nîqaş dikin. Ma hewceyê em jî li vir nîqaş bikin? Tevlî vê jî ji xwe kes li ser vê mijare nasekîne van dema. Xeynî vê pêşnîyaza min nîşandana standarta peyvê di malpera de hebû. Li ser malperê 'Standarda Rastnivîsîna Ferhenga Kurdî a Weqfa Mezopotamyayê kêf (r.253) e' Tiştek mîna wî hebe yê gelek kêrî her cure nivîskarê me were. Çimkî hin nivîskarên me hez dike bi kelîmeyên standart binivîse. Di malperê de bila vê hêsanî fam bike çêtir e. @[[Bikarhêner:Bikarhêner|Bikarhêner]]@[[Bikarhêner:Ghybu|Ghybu]] [[Bikarhêner:Rewiye tine|Rewiye tine]] ([[Gotûbêja bikarhêner:Rewiye tine|gotûbêj]]) 18:35, 17 sibat 2026 (UTC)
::Merheba @[[Bikarhêner:Rewiye tine|Rewiye tine]]. Ev format pir xirab dibe. Tu dikarî li beşa Çavkaniyê binivîsî bi şablona {{ş|kitêb}} binivîsî çêtir e û tê eynî maneyê. Lê her kes standarda Weqfa Mezopotamyayê qebûl nakin û ez jî şibhê dikim ku ev websîte bi awayekî kolektîv tê çêkirin an na. Loma em bi ya kitêba rastnivisînê çêkin û eger îtîraz tinebe, şablona {{ş|ds-kirî}} li gotûbêja [[WF:DS]] binivîse, dûre li gotûbêjê arşîv bike, ne hewce ye li hêviya kesên din bisekinî. Eger itirazek hebe, ê ku dixwaze dûre dîsa şablona ds zêde bike. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:30, 5 tîrmeh 2026 (UTC)
:::[https://berwarnews.com/ferhenga-rastnivisine-qonaxeke-giring-a-standardkirina-kurmanci-ye/ Roportaja Mikail Bülbül] li ser proseya standardkirinê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:57, 9 tîrmeh 2026 (UTC)
::::Min nû dît an jî nû hatiye zêdekirin lê meqaleyek bi navê [https://www.ferhengkurdi.com/?q=iltihap&modal=lijne lijneya edîtorîyê] nivîsandine [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:40, 22 tîrmeh 2026 (UTC)
== <span lang="en" dir="ltr">Annual review of the Universal Code of Conduct and Enforcement Guidelines</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
I am writing to you to let you know the annual review period for the Universal Code of Conduct and Enforcement Guidelines is open now. You can make suggestions for changes through 9 February 2026. This is the first step of several to be taken for the annual review. [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|Read more information and find a conversation to join on the UCoC page on Meta]].
The [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Universal Code of Conduct Coordinating Committee]] (U4C) is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review was planned and implemented by the U4C. For more information and the responsibilities of the U4C, [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|you may review the U4C Charter]].
Please share this information with other members in your community wherever else might be appropriate.
-- In cooperation with the U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]])<section end="announcement-content" />
</div>
21:02, 19 kanûna paşîn 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29905753 -->
== Request for comment (global AI policy) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies for writing in English. {{int:Please-translate}}
A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}}
[[Bikarhêner:MediaWiki message delivery|MediaWiki message delivery]] ([[Gotûbêja bikarhêner:MediaWiki message delivery|gotûbêj]]) 00:58, 26 nîsan 2026 (UTC)
</bdi>
<!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 -->
== Guharto ==
: <small>→ Ji rûpela ''[//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj:berf%C3%AEtik&oldid=6233338 Gotûbêj:berfîtik]'' hatiye girtin.</small>
Silav {{r|Ghybu}} ma hewce ye em guhartoyan jî kategorîze bikin? Li vê [[ژیشک]] binere, tije guhartoyên wê hene, ku em ji gişan re guhandar binivîsin dê 10 navên heman hebin di nav wê kategorîyê de. Tu çi difikirî? [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 09:40, 26 nîsan 2026 (UTC)
:{{silav|Keyomerd}}. Erê, problem çî ye? {{=)}} Ew jî tên bikaranîn... Dema ku peyvek tê çêkirin hewce ye ku em hemû agahiyên wan binivîsin: bilêvkirin, bikaranîn, mînak, terîm, herêm, tewandin, etîmolojî...
:Bi min peyvên ku wekî ''guherto'' hatine nivîsandin bi nivîsa {{w|Italic type|îtalîk|ziman=en}} (xwahr) di nav kategoriyan de werin nişan kirin (ji bo cudakirinê). {{ping|Ferhengvan|Bikarhêner}} [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:40, 30 nîsan 2026 (UTC)
::Yên '''''nestandard''''' di kategorîyan de biferq werin nîşandan baştir e. Qene em karibin wan ji yên stadard ferq bikin. @[[Bikarhêner:Ghybu|Ghybu]] Xêra xwe hûn sîstemeke wisa çêkin. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 14:36, 1 gulan 2026 (UTC)
:::Merheba @[[Bikarhêner:Keyomerd|Keyomerd]] û @[[Bikarhêner:Bikarhêner|Bikarhêner]] ev xisûsiyet jixwe di şablonên rêzimanê de heye, wextê {{param|formaalt|1}} dinivîsin, made dikeve Kategoriya [[:Kategorî:Formên alternatîv bi kurmancî]] li gorî koda zimanî jî zimanên din tê çêkirin. Hemû madeyên kurmancî bi alfabeya erebî dikevin vê kategoriyê lê nizanim ev tiştekî rast e Yan xelet e, ji bo nîşandanê min çêkiribû lê min hîn wext nedît ku nîqaşek li ser çêkim. Qaîdeyên bikaranîna vê parametreyê di wîkiya îngilîzî de jî tam ne belî ye. Du gotûbêj [https://en.wiktionary.org/wiki/Wiktionary:Requests_for_moves,_mergers_and_splits#Category:Alternative_forms_by_language] [https://en.wiktionary.org/wiki/Wiktionary:Beer_parlour/2024/June#Decluttering_the_altform_mess] çêkirine lê ji bo îngilîzî ev parametre nehatiye bikaranîn. Min ji bo nîşandanê niha [https://ku.wiktionary.org/w/index.php?title=bax%C3%A7%C3%AA_zarokan&diff=prev&oldid=6241372] ceriband lê bi min xelet e. Em çawa bikin? Kengî vê parametreyê bi kar bînin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:29, 8 tîrmeh 2026 (UTC)
::::@[[Bikarhêner:Kurdanparez|Kurdanparez]] Tu çi difikirî? Ji bo zazakî [https://ku.wiktionary.org/w/index.php?title=a_c%C4%B1_geyrayene&oldid=6241396 wisa] bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:55, 8 tîrmeh 2026 (UTC)
:::::Kategorîyekê cuda baş dibe. Wextê ku ez li kategorîya "lekêren bi zazakî" dinêrim, ez hem formê bi şikilê Johnsonê û formê standardê dibînim. Zaten wexte ku ez dikevim ê Johnsonê, min dibe formê standardê. Kategorîyekê cuda, bi taybetî ji bo nivîsandinên alternatîf, baş dibe.
:::::Lê em bîr nekin ku wextê ku em bo formên alternatîf yên devokî qal dikin, belkî adil neye ku em ev bişînin derekê din yê ku însan ewqas nabînin. [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 22:03, 8 tîrmeh 2026 (UTC)
::::::@[[Bikarhêner:Kurdanparez|Kurdanparez]] Gelo min rast fêm kir? Tu dibêjî formên {{q|ku|kîvroşk}} bi dîqet werin guhartokirin lê bi yên bi alfabeya Jacobsonê hemû bikin {{param|formaalt|1}}? Formên Jacobsonê dê bikevin Kategoriya [[:Kategorî:Lêker bi zazakî|Lêker bi zazakî]] û [[:Kategorî:Lema bi zazakî|Lema bi zazakî]] yan na? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:55, 8 tîrmeh 2026 (UTC)
:::::::Bi min naxwaze di wan kategoriyan de bikeve. Wek tu dibînî dûplîkat pir hene. Bi min çareya baştir yên Johnsonê di katehgorîyekê din bikevin (bila format li rûpelan neyin guherandin, bi tenê kategorî) [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 00:37, 9 tîrmeh 2026 (UTC)
== Peyvên soranî bi latînî ([[:Kategorî:Soranî]]) ==
Silav, di nav vê kategoriyê (''[[:Kategorî:Soranî]]'') de pirr peyv tenê bi alfabeya latînî hatine nivîsandin. Divê ew mutleq jî bi alfabeya erebî werin transkrîbe kirin ji ber ku soranî bi alfabeya erebî tê nivîsand... Bikarênerên ku soranî dizanin dikarin wan sererast bikin? Mînakên guhertinan: [//ku.wiktionary.org/w/index.php?title=zor%C3%AEne&curid=6584&diff=6233355&oldid=5859303], [//ku.wiktionary.org/w/index.php?title=s%C3%AAw&diff=6233097&oldid=6233003], [//ku.wiktionary.org/w/index.php?title=sewz&diff=6233313&oldid=6069107], ... Spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:16, 2 gulan 2026 (UTC)
== <span lang="en" dir="ltr">Vote now in the 2026 U4C election</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC].
Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" />
</div>
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:15, 27 gulan 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== RFC about AI-generated content in Wikimedia Commons ==
<bdi lang="en" dir="ltr">Apologies for writing in English, please help translate this message to your language. You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|gotûbêj]])</bdi> 17:12, 23 hezîran 2026 (UTC)
<!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== <span lang="en" dir="ltr">Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki</span> ==
<div lang="en" dir="ltr">
<section begin="Message"/>
'''Legal & Safety Contacts'''
Hello community, the Wikimedia Foundation has provided a [[wmf:Special:MyLanguage/Legal:Wikimedia Foundation Legal and Safety Contact Information|single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement. We have already rolled out links to English, German, Italian, Spanish and other wikis and we will deploy to your wiki soon. [[m:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|Please read more on the project page]] and leave any comments in this thread or on the [[m:Special:MyLanguage/Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|talk page]].
<section end="Message"/>
</div>
-- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 13:31, 25 hezîran 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=30731267 -->
== Jêbirina ferhenga Sadallah ==
Merheba @[[Bikarhêner:Guherto|Guherto]] Îmkan heye lîsteyeke wisa çêkî ku hemû sayfeyên Cyrusbot çêkir yên ku tê de tenê tercimeyeke îngilîzî heye û ev tercime jî hatibe jêbirin? Nimûne ''[[derdzanî]], [[êşzanî]]'' tenê tercimeya [[pestology]] heye ew jî ji ber heqê telîfê hatiye jêbirin. Nimûneyeke din ''zêrrgeh'', ''zêrrkar'' [[goldsmith]] hatiye jêbirin zêr wekî zêrr hatiye guhartin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:48, 26 hezîran 2026 (UTC)
:Temam @[[Bikarhêner:Wikihez|Wikihez]], lê vê heyvê ez nikarim, heyva were ez ê li vê meseleyê vegerim înşellah. [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 22:51, 2 tebax 2026 (UTC)
== Beşa Tewandin bo kurmancî ==
Bi ya min şablona {{ş|ku-tewîn-nav}} û ya fiîlê em bixin beşa Tewandinê (wekî [[şodir|zazakî]]. Bi vî awayî hem ji aliyê şiklî ve hem jî ji aliyê bikaranînê ve xweştir xuya bike. Eger di qismê Tewandinê de be, ê ku dixwaze îzah û notên xwe yan jî emilandinên din jî dikare binivîse. Hûn çi dibêjin? @[[Bikarhêner:Ferhengvan|Ferhengvan]], @[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Bikarhêner|Bikarhêner]]. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:05, 6 tîrmeh 2026 (UTC)
:Belkî em dikarin Formata şiweyan wekî ya behdînî jî têxin nav şablonê. Pir caran şiklê tabloya Tercimeyan ji ber dirêjbûna şablona teqînê jî xirab dibe wekî [[astrofizîk]]. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 6 tîrmeh 2026 (UTC)
:Min mijarê te li jorê yê xwe dît, fikirên min jî hene eger baş e. Yê ku te gotiye bi min baş dibe, ji ber ku her rûpel ji vê mîna hev dibe. Em ê rindtir jî ferq li nav devokan binivîsin. [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 11:44, 7 tîrmeh 2026 (UTC)
::@[[Bikarhêner:Bikarhêner|Bikarhêner]] fikr? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 08:44, 15 tîrmeh 2026 (UTC)
:::Formata ku te teklîf kirîye jî ne xerab e, baş tê xuyan. Feqet bi min halê berê (mewcûd) baştir e. Ji ber ku ev şablon (ku-tewîn-nav) bi piranî kurt in û ji bo her kesî ne mihîm e, lewma li kinarê bi formeke hebe ku karibe were vekirin û girtin baştir e. Lê belê ger şablon dirêjtir bin, em karin wekî ya wîkîya almanî bikin (ew jî wekî teklîfa te ye). -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 09:50, 15 tîrmeh 2026 (UTC)
::::Em tabloya lêkerê jî rakin? 1)Em wekî navdêran bikin, bin beşa Tewandinê 2) Tabloya {{ş|ku-tewîn-reh}} were şûnda tabloya {{ş|ku-tewîn-lk}}: '''[//ku.wiktionary.org/w/index.php?title=gotin&diff=prev&oldid=6323518]''' , '''[//ku.wiktionary.org/w/index.php?title=vexwarin&diff=prev&oldid=6323525]''' 3) Bi şablona {{ş|tewandin}} û bi parametreyên {{param2|niha}} û {{param2|borî}}: '''[//ku.wiktionary.org/w/index.php?title=vexwarin&diff=6323528&oldid=6323525]'''--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 10:46, 3 tebax 2026 (UTC)
:::::Ez dibêjim em {{ş|ku-tewîn-lk}} bixin bin beşa Tewandinê feqat dema niha û borî tevî formên wan ên negatîv tê de cih bigire, hinek fireh be jî baş e. Dilê min dixwaze yek ji opsiyonên 2 û 3 tevî beşa Tewandinê jî bi kar bînin lê nizanim kîjan hilbijêrin? Herwiha ji bo îsman em dikarin resim zêde bikin ji bo nîşandanê, em ê fiîlan çawa bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:10, 3 tebax 2026 (UTC)
::::::Bi min ji bo kesên ku kurmancî dizanin, tabloya tewandinê "piranî" ne hewce ye. Dema ku ez lêkereke nû hu dikim pêşta rehê wê digerim paşê jî devoka wê... Şablonana "ku-tewîn-reh" pirr dirêj nîne: li ser mobîlê jî pirsgirêk nîne: bin beşa "Lêker"ê de tê nivîsandin: lojîk e. Problema beşa Tewandinê va ye: em ê hertim du rûpel serrast bikinê, rupela lêker (beşa "Tewandinê") û rûpela Tewandin:''lêker''. Bila hêmû gotûbêj tenê li ser rûpela Tewandinê were kirin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:06, 3 tebax 2026 (UTC)
:::::::Erê em ku-tewîn-lk bi ku-tewîn-reh biguherînin dê baştir bibe. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:30, 4 tebax 2026 (UTC)
== Reşwî ==
Silav ji we gî re, Pirsekê min heye.
Ez difikirim şablonekê din çê bikim boy devokek kurmancî, yê êla Reşwî. Ew lêkerên xwe hinek cuda ditewînin. Mesela te hem "ez dikim" bêjî yan jî "ez dikime", "em dikinî, em tênî, te em kuştinî" (ne "em dikin") dema xwe yek in lê maneyên xwe ne yek in, "ez bikim" "ez ê bikim" "ez bikime" û dewamên xwe hemû demên xwe yek in lê mane dîsa ne yek in.
Eger min çê kir, şûna xwe li ku derê tînim? Ez difikirim li tewandina devokên kurdî yê ku "tabên" xwe hene "kurmancîya rojavayî", "kurmancîya standard" hsw. Lê tewandin ewqes cuda ye dixwaze ku wî şablona tewandina kurdî pir were guherîn.
Hûn çi dibêjin? (R: Hûn dewên çi?) [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 11:38, 7 tîrmeh 2026 (UTC)
:{{silav|Kurdanparez}} Binêre mînaka devoka ''rojhilatî'': [[Modul:ku-tewandin#L-135]] / [[Modul:ku-tewandin#L-138|L138]] / [[Modul:ku-tewandin#L-143|L-143]], .. Di nav modula ''ku-tewandin"-ê de tê çêkirin. [[Gotûbêja modulê:ku-tewandin#Paşgirên lêkeran di kurmanciya rojhilatî de]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 13:09, 7 tîrmeh 2026 (UTC)
::PS: Dema niha: [[Modul:ku-tewandin#L-128]]; dema borî: [[Modul:ku-tewandin#L-153]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 13:15, 7 tîrmeh 2026 (UTC)
:::Merheba @[[Bikarhêner:Ghybu|Ghybu]], Eger mimkin be tu dikarî yên devokî têxî binmodulekê û bila modul load bike, bi vî awayî belkî çêkirina yên nû û famkirina modulê hêsantir be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 15:09, 7 tîrmeh 2026 (UTC)
:::Lê di devokê reşwî de hem dema niha yê statîk heye (Îng: I do -> Ez dikim) û yê progressîf heye (I am doing -> Eîz (nêr) Ez î (mê) dikime, yan jî Ez î dikime/Ez ê dikime). Reşwî ji yê standardê pirtir bo zayend ferq tîne, hem jî li dema pêşî (Ez ê bikim (Nêr) ez a bikim (Mê)). Dema pêşî jî formên cuda hene (Ezêk bikime (I will be doing it) û ez ê/a bikim (I will do it))
:::Ev di modûlê têhel bê? [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 22:09, 8 tîrmeh 2026 (UTC)
== WF:Xebat ==
Min sayfeya [[WF:Xebat]] çêkir, xeletiyên ku hûn ferq dikin ji kerema xwe lê zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:35, 15 tîrmeh 2026 (UTC)
== Modul:quote ==
@[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Bikarhêner|Bikarhêner]], @[[Bikarhêner:Keyomerd|Keyomerd]], @[[Bikarhêner:Ferhengvan|Ferhengvan]] Merheba, ez modula îngilîzî ya jêgirtin û çavkaniyan li gorî şablonên {{ş|jêder}} format dikim û ji bo ku hertişt wekî formata me ya niha be, gelek serê min diêşe. Ez dibêjim bila em dev ji formata niha berdin wekî ya îngilîzî bi kar bînin ji ber ku gelek xisûsiyetên îngilîzî hene ku yekî dikare biemilîne. Hûn ê bibêjin niha ji kû hat bîra tê, min got [[Wîkîferheng:Xebat#MediaWiki:Gadget-start.js|start.js]] nû bikim û min dît otomatîk çavkanî bi riya [[mw:Citoid]]ê bi riya DOI, ISBN û lînk tê çêkirin, min got wiya jî li skrîptê îlawe bikim loma min [[Wîkîferheng:Xebat#Mediawiki:Gadget-citoid-helper.js|Mediawiki:Gadget-citoid-helper.js]] hazir kir lê hin parametreyên Citoidê kêm bûn, min got ka wana rast bikim, min dît formata me ya niha ti standard bi kar nayîne tenê parametreyan bi virgulê li hev dixe.
Ez dibêjim formata îngilîzî baştir e, hem ne îtalîk e ku bi hêsanî tên xwendin, hem jî tarîx û çavkanî herî pêşî tên nîşandan ku ji bo peyitandinê bo min muhîm e. Modula îngilîzî de hema bêje her tişt hatiye çêkirin, eger em rûnin tenê yên lazim li şablona çavkaniyên xwe binivîsin ew ê gelek wext bistîne. Eger em modula îngilîzî bi kar bînin, em ê hem karibin şablonên îngilîzî bi hêsanî û rast kopî bikin hem jî kurdîkirina parametreyan gelek hêsan e. Fikir? --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:20, 24 tîrmeh 2026 (UTC)
: Ji bo miqayesekirinê bnr. [[:en:Template:quote-book]] / [[Şablon:jêder-kitêb/ceribandin]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:32, 24 tîrmeh 2026 (UTC)
::Bi min bila yê mewcûd jî bimîne, ew jî şiklen xweş û baştir e. Feqet bi min jî yên îngilîzî rehettir in, eger rastkirina yê mewcûd zehmet be, em rasterast wan ji xwe re bînin û tercime bikin. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 09:41, 24 tîrmeh 2026 (UTC)
:::Ez êvarê ve dixebitim, min nêzîk kiribû lê min got belkî hûn qane bibin lê xuya ye hûn ê hîn serê min gelek biêşînin {{=D}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:59, 24 tîrmeh 2026 (UTC)
::::@[[Bikarhêner:Bikarhêner|Bikarhêner]] û @[[Bikarhêner:Ghybu|Ghybu]] Eger îtîrazek tinebe, ez ê îtalîk ji jêgirtinê rakim... Jixwe bi riya [jêgirtin] dikare were veşartin û her daim bi * dest pê dike loma bi hêsanî tê fêmkirin û xwendin rihettir dibe. Bnr. [https://ku.wiktionary.org/w/index.php?title=W%C3%AEk%C3%AEferheng:ceribandin/nim%C3%BBne&oldid=6277132#L%C3%AAker_2 ceribandinê] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:13, 24 tîrmeh 2026 (UTC)
== Request for comment (the future of Abstract Wikipedia) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies if this has not yet been translated into your wiki's language. {{int:Please-translate}}
You are invited to voice your opinions in a [[:m:Requests for comment/The future of Abstract Wikipedia|request for comment about the future of Abstract Wikipedia]]. {{Int:Feedback-thanks-title}}
[[:m:User:Kowal2701|Kowal2701]] ([[:m:User talk:Kowal2701|talk]]) 12:25, 24 tîrmeh 2026 (UTC)
</bdi>
<!-- Message sent by User:DreamRimmer@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== ''mê'' yan ''nêr'' li gorî maneyê / ''mê'' yan ''nêr'' (bikaranîn dudil e) ==
[//ku.wiktionary.org/w/index.php?title=xelat&diff=prev&oldid=6291766]: Mixabin pirr bikarhêner şûnda parametreya <code>z=m/n</code> ('' m yan n li gorî maneyê'') <code>z=mn</code> (''m yan n (bikaranîn dudil e)'') bi kar tînin ([[Şablon:navdêr#Parametre]]) ji ber ku di nav her du nivîsê de pir ferq nebînin. Nizanim em ê dîsa parametreya <code>z=nt</code> (''nêtar'') çêkin, wekî berê: [//ku.wiktionary.org/w/index.php?title=W%C3%AEk%C3%AEferheng:D%C3%AEwan/ar%C5%9F%C3%AEv_2019&oldid=6104681#Zayend]. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 00:17, 28 tîrmeh 2026 (UTC)
:Merheba {{r|Ghybu}} {{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|kelîme|c=mn}}</nowiki>}}
Ya din jî; {{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|kelîme|c=m/n}}</nowiki>}}
Tu dixwazî em wana berevajî bikin? Not: nêtar ji bo kurmancî nabe, mn û m/n baş in. Berê ji ber ku m/n tinebû, her kes li gorî parametreyên heyî dixebitî. Niha hene bi min problem nîne eger em berevajî nekin.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 05:32, 28 tîrmeh 2026 (UTC)
: Bi min ev format baştir e:
{{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|kelîme|c1=m|c1etîk=Mêrdîn|c2=n|c2etîk=Dihok}}</nowiki>}}
Yan jî:
{{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|zayend|c1=n|c2=m|c1ref={{Jêgirtin/Celadet Alî Bedirxan/HAWAR Cild 1 Hejmar 1-23 (1932-1933)/1998|hejmar=4|sal=1938}}|c2ref={{Zana Farqînî}}}}</nowiki>}}
{{çavkanî}}
:--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 05:49, 28 tîrmeh 2026 (UTC)
::Feqat em dikarin li şûna {{param2|c|m/n}}, {{param2|c|mn?}} yan {{param2|c|mn!}} çêkin ji bo ku neyên tevlihevkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 06:00, 28 tîrmeh 2026 (UTC)
:::Ez jî dizanim ku "nêtar ji bo kurmancî nabe" ([//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj%3Afikirmend&diff=3063789&oldid=3063526]) jixwe min "nêtar" kiribû "[//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj:fikirmend&diff=prev&oldid=3063788 mê an nêr li gorî bikaranînê]". Feqet nizanim çima rind nayê fêm kirin: Ferhengvan jî ew parametreyê bi awayekî rast bi kar nayîne [//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj%3Areh&diff=6235991&oldid=6235985]. {{ping|Bikarhêner}} ? Min heta niha pirr gotar serrerastkir... Em ê hertim kontrol bikinê: pêşta problemeke vitira tine bû :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:13, 28 tîrmeh 2026 (UTC)
::::Bi rastî kî li vira parametreyên ku te li jor nivîsandine bi kar tîne {{=D}} ? Ji bîr meke em li ser wîkîferhenga kurdî ne... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:39, 28 tîrmeh 2026 (UTC)
:::::Ya muhîm hebûna sîstemekê ye, heta niha ti sîstemeke baş nehatiye çêkirin û ti rê nehatiye dayîn ji bikarhêneran re ku hîn bibin, hêdî hêdî em ê çi ji destê me were, çêkin û hîn bikin. Bi min atolyeyek lazim e em hin tiştan ji bikarhênerên din re hîn bikin. Mîsal min <code><nowiki>{{subst:beralîbike}}</nowiki></code> li wîkîpediyayê çêkir û ji bikarhênerekî re nîşan da çawa tê bikaranîn, wî dest bi bikaranînê kir. Ji ber ku bikarhênerekî mobîlê ye, nikaribû bi tenê serê xwe beralîkin çêke her daîm alîkarî ji kesên din dixwast ku pir carî ti kes nedihat. Însanên me ji aliyê teknîkî ve baş nebin jî, wextê bi riyeke baş îzah dikî, fam dikim şikir ji xwedê re.
:::::Welhasil, [https://ku.wiktionary.org/w/index.php?title=reh&diff=prev&oldid=6291839 reh] çêbû? Eger tu nabêjî nêtar be, min daxwaza te fam nekir. Tu çi dixwazî em çawa bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 15:58, 28 tîrmeh 2026 (UTC)
::::::Nivîs dîsa "''mê yan nêr li gorî maneyê''" be (kategorî jî) feqet di nav parametreyê de <code>mn</code> neyê nivîsandin. Parametre wekî {{param2|z/c|nt}} bisekiniyana (an jî navekî din "g" an "c") feqet nivîs û kategorî bihata guhertin... Herwiha profîlên bikarhênerên ku tên vira wekî en.wiki nînin: li vir zêde namînin û tiştên ku hu dikin jî ji bîr dikin. PS: Di zimanê peştûyî de jî (nêzîkî zimanê kurmancî ye) peyvên "mê an nêr" (''common gender'') hene [[:en:Category:Pashto nouns with multiple genders]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:28, 28 tîrmeh 2026 (UTC)
:::::::"g", "c", "nt" gî behsa cureyekî xisûsî dikin loma nabin, feqat di nav [https://ku.wiktionary.org/w/index.php?title=Modul:r%C3%AAziman&oldid=6115355#L-306 Modul:rêziman] de koda me "mn" otomatîk dike "mnmane" min ji bo back-compatiblity wisa kiribû lê ya rast "mnmane" ya, em "mn" ji bo kurmancî rakin, hemû "mn" bikin "mnmane" û "m/n" jî rakin û bikin "mndudil", nabe? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:44, 28 tîrmeh 2026 (UTC)
::::::::OK, bi min baş e:) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 28 tîrmeh 2026 (UTC)
:::::::::Îmkan heye şablona tewandinê jî wisa bikî ku hem di qismê tewandinê de hem jî aliyê rastê were bikaranîn? Wekî me [[Wîkîferheng:Dîwan/2026#Beşa_Tewandin_bo_kurmancî|li vir]] got? Wextê gelek dirêj be yan mndudil be, em dikarin bixin qismê tewandinê bi şiklê "ya mêr" û "ya nêr". Wekî din yên biçûk û standard bila li aliyê rastê bimînin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:54, 28 tîrmeh 2026 (UTC)
::::::::::Erê bi parametreya {{param2|hêl|çep}} tê çêkirin. Belkî bi JSê tiştekî vitra jî tê çêkirin: dema ku tablo pirr fireh ye (>450px) tablo wekî "veşartî" xuya bike...
::::::::::"''Wekî din yên biçûk û standard bila li aliyê rastê bimînin?''": '''Aliyê rast:''' Dema ku tu mînakan dixwînî bi hêsanî tabloya tewandinê jî seh dikî (pedagojîk e). '''Bin beşa Tewandinê:''' 1) Ji bo mobilan rind e, tablo ne ser maneya peyvê ye. 3) Şûnda maneyan direj dibe 3) Wêne baştir xuya dikin ji ber ku ne bin tabloyê ne. '''Encam''': yek pratîk e, yek jî pedagojîk e [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 19:27, 28 tîrmeh 2026 (UTC)
:::::::::::Di bin beşa Tewandinê de baştir xuya dike... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:28, 28 tîrmeh 2026 (UTC)
::::::::::::Erê {{=D}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:29, 28 tîrmeh 2026 (UTC)
:::::::::::::Feqat lazim e yên mezin wekî [[mustensîx]] di nav qutîyê de bê wekî [[:en:heval]] di mobîlê de ya me sayfeyê fireh dike, ya îngilîzî de dikarî qutîyê bişemitînî [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:44, 28 tîrmeh 2026 (UTC)
::::::::::::::Formata herî xweş [https://ku.wiktionary.org/wiki/mustens%C3%AEx#Kurmanc%C3%AE] resm jî lê tê tablo jî di cihê xwe de ye. Wekî din wextê tablo li aliyê rastê ye însan naxwaze resmekî jî lê zêde bike. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:54, 28 tîrmeh 2026 (UTC)
:::::::::::::::''overflow'' bi tagên "div"-an rind tên çêkirin. Em ê tabloyên ''NavFrame'' bi kar bînin... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:06, 28 tîrmeh 2026 (UTC)
::::::::::::::::Eger class inflection-table bi kar bînî, bi [[MediaWiki:Gadget-defaultVisibilityToggles.js#L-43]] ê ku dixwaze dikare gîya veşêre an nîşan bide. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:11, 28 tîrmeh 2026 (UTC)
:::::::::::::::::Min fêm nekir, biryara we çi ye? Hemû bin beşa Tewandinê? an jî herdu? Li gor wê şablon tê guherandin. Bi min ferq nake, her du jî baş in... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:19, 28 tîrmeh 2026 (UTC)
::::::::::::::::::Me [[#Beşa Tewandin bo kurmancî|li jor]] gotibû bila hemû di beşa Tewandinê de bin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::Erê, min xwand Bikarnêner tiştekî din gotibû... Tu bi botê çêdikî? Bi botê hemû tabloyan bê parmetreya "hêl" bike bin beşa "Tewandin"-ê. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:30, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::Va rabim botekê hazir bikim. Bi qasî min jê fam kir, tam nabêje hemû nekin, nabêje hemû bikin jî. Lê em hemû bikin çunkî du kes got erê. Cihê Tewandinê piştî Bi alfabeyên din û Formên alternatîv be an jî beriya wan piştî maneyê (piştî wajeya klasîk) be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:38, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::Eger di yekcarê de nayê çêkirin bi parametreya "hêl" ve çêke. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:42, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::[https://linkcount.toolforge.org/?project=ku.wiktionary.org&page=%C5%9Eablon%3Aku-tew%C3%AEn-nav 27 hezar] car tê bikaranîn, Eger behsa wextê dikî, ne problem e, eger behsa "tenê yên fireh bixin tewandinê" wê carê yên mê û nêr bixim? Te cewaba pirsê cihê tewandinê jî neda? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:48, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::::Lojîk dibêje ku piştî bi "alfabeyên din", "formên alternatîv" û "Ji wêjeya klasîk" [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:55, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::::Feqet tabloya tewandinê dûr dikeve... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:00, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::::::Bi min "Bi alfabeyên din" bixin piştî Bilêvkirinê çûnkî @[[Bikarhêner:Ferhengvan|Ferhengvan]] pir caran ji bo nîşandana dengî alfaba erebî bi kar tîne, h3 rengê teal tenê ji bo "Navdêr, Lêker hwd." bi cssê bi kar bînin [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.css&diff=prev&oldid=6241199 wekî wisa lê berevajî], Piştî "Ji wêjeyê/klasîk" em tewandinê deynîn, "Formên alternatîv" piştî Tewandinê be û îro nekin, eger dixwazî di ceribandinê de tabloya nû hazir bike, em hefteyek li hêviya hevalên din bisekinin, eger îtîraz nehat, em çêkin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:15, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::::::Beşa "Bikaranîn" jî heye... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:28, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::::::::Piştî Bikaranînê bnr. [[:en:Wiktionary:Entry_layout#Headings_after_the_definitions]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:37, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::::::::(h3) Bilêvkirin, Bi alfabeyên din, Sinifa rêzimanî,
::::::::::::::::::::::::::::(h4) Ji wêjeyê/klasîk (divê were xistin bin maneyê), Bikaranîn, Tewandin, Formên alternatîv, Hevmane, Nêzîk, Dijmane, Jê, Têkildar, Etîmolojî (eger du sinifa rêzimanî ji eynî kokê hebe h3) Dûnde, Binêre herwiha, Werger [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:40, 28 tîrmeh 2026 (UTC)
{{outdent|::::::::::::::::::::::::::::}} {{r|Ferhengvan|Bikarhêner|Keyomerd|Zerwanda|Kurdanparez}} Fikir? --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:42, 28 tîrmeh 2026 (UTC)
:"Bi alfabeyên din" beşeke pirr hewce nîne, niha beşa "mane" li ser rûpelê dûr dikeve. Bi min "Bîlêvkirin" > Mane > Ji wêjeya klasîk (wekî mînak e) > Bikaranîn > Tewandin > Bi alfabeyên din > Formên alternatîv > ... Divê beşên ku herî zêde tên xwastin werin "ronîkirin". [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 03:07, 29 tîrmeh 2026 (UTC)
::''[[bileks|Bîl'eks]],'' "Bi alfabeyên din" gelek muhîm e, ev ji bo kurmancî "formên alternatîv"-a wîkiya îngilîzî ye, başûrî tenê bi alfaba erebî dinivîsin û wextê kelîmeyek digerin çawa zanibin hatin kîjan kelîmeyê? Bi kirîlî ne lazim e lê bi erebî mecbûrî ye. Ji bo nettir bikin, lazim e em beşa "Bi alfabeyên din" baştir bikin. Mane hinek li jêr be ne muhîm e, wîkiya îngilîzî de jî gelek car lazim e herî jêr ji bo dîtina maneyê. "Ronîkirin"/teal xelet tê famkirin, sankî "qismê sereke (h3) lazim e wê be û qismên din werin xistin binê wê" tê famkirin loma em tenê Mane ronî bikin bes e, ka [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6291927 vê cssê] biceribîne û dîsa fikrên xwe bibêje. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 07:20, 29 tîrmeh 2026 (UTC)
:1. '''Li ser cinsîyetê:''' Bi min, em malûmatên ekstra yên wek ''"li Dihokê nêr, li Serhedê mê"'' (Serhed:m|Dihok:n) li qismê ''"Bikaranîn/Emilandin"''ê bidin baştir e. Kelîme di ferhengan de wek form û cinsîyet bi halê standard cih digirin, eger li mintiqayek cuda be ew cudahî li qismê "Bikaranîn/Emilandin"ê wek malûmatek ekstra cih bigire çêtir e. Ferhenga ku em vê gavê ji bo standardkirinê esas digirin ''"Ji bo Rastnivîsînê Ferhenga Kurdî (Kurmancî) - Tirkî ya Nû"'' de jî bi yek cinsîyetê cih dane kelîmeyan. Ji xeynî wê di ferhenga standardkirinê ya Weqfa Mezopotamyayê de jî ew kelîme bi yek cinsîyetê cih digirin. Tiştekî din jî bêjim, eger em şablonê wek "mndudil" bi nav bikin mimkin e ku rê bide şaşîyan. Çimkî gava mirov wê dibîne, mirov dibêje qey li ser cinsîyeta kelîmeyê dudilîyek heye, bi qenaeta min dudilîyek bi wî şiklî nîne. Divê her kelîme xwedî cinsîyetekê bin û îstîsnayên mintiqayî -ger were xwestin- ekstra were nîşandan. Lewma bi min halê mewcûd baş e. 2. '''Li ser şablonên tewandinê:''' Ger şablonên tewandinê di xuyabûna mobîl de bibin sedema xirabîyê, em wan şablonan ji bo mobîlan têxin qismê "Tewandin"ê. 3. '''Li ser rêzkirina qisman:''' Bi min divê mane li pêş be û ne hewce ye ku qismê "Bi alfabeyên din" derxin pêş. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 13:20, 29 tîrmeh 2026 (UTC)
::Li ser cinsiyetê erê, eger di ferhenga rastnivîsînê de cinsiyet hatibe nivîsandin ne hewce ye em "mndudil" binivîsin li qismê Bikaranînê behskirin bes e, lê eger tê de ev kelîme tinebe û di ferhengên din de jî dudiliyek li ser bikaranîna cinsiyetê hebe, wê demê "mndudil" lazim e bikaranîn çunkî wîkîferheng lazim e li gorî çavkaniyan were nivîsin. Li ser tewandinê ne mimkûnê em di mobîlê de di qismê Tewandinê de, di sermaseyê de em li qismê maneyê bixin loma lazim e em bi yek şiklî li qismê Tewandinê hemû bixin çêtir e. Li ser "Bi alfabeyên din" ji bo min zêde muhîm nîne, feqat dîsa jî ez dibêjim lazim e were pêşxistin. Tiştekî wisa jî heye eger di sayfeyekê de ji yekî zêdetir sinifên rêzimanî hebe wê demê lazim e Bi alfabeyên din bi sê = were bikaranîn, û cihê wê ne li dawiyê lê divê piştî Bilêvkirinê be.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:45, 29 tîrmeh 2026 (UTC)
:Bi a min beşa çevandinê li serê rûpelê be beşa maneyê pir dûrî çavan dikeve. Li jêrtir be çêtir e. [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 06:01, 31 tîrmeh 2026 (UTC)
::{{r|Wikihez}} Bi min di nav tabloyê de parametreya yekem jî were rakirin, ne hewce ye bi <nowiki>{{PAGNAME}}</nowiki> tê çêkirin. Di rûpelên din de jî (ne yên sereke) bi parametreya {{param2|nav}} were nivîsandin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 11:07, 31 tîrmeh 2026 (UTC)
:::Erê, maqûl e. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:23, 31 tîrmeh 2026 (UTC)
::::cinsiyet jî m, n, mn be bes e ma bila wekî {{ş|navdêr}} be. cuda nebin [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:41, 31 tîrmeh 2026 (UTC)
:::::@[[Bikarhêner:Bikarhêner|Bikarhêner]], @[[Bikarhêner:Keyomerd|Keyomerd]], @[[Bikarhêner:Ghybu|Ghybu]] "Bikaranîn" an "Notên bikaranînê" ? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:47, 31 tîrmeh 2026 (UTC)
:::::Wekî {{r|Bikarhêner}}î gotî zayenda peyvnan gorî devokan jî diguhere, divê ew jî bêne dîyarkirin. Herwiha beşa lêvandinê a ji bo pîtên cêwî pir tê paşguhkirin. Divê jê re cîyekî cihê bê hilanîn. Û ew jî wek zayendê bi devokan diguhere. Meselen tya pêşîn a "tişt" ê li ba me nerm e lê li deverên din hişk e. Û ji devla reqê (wek t-ya req) hişk bi kar bê çêtir e, jixwe her kes wê bi kar tîne nizanim req ji ku derketîye. [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 14:05, 31 tîrmeh 2026 (UTC)
:
<syntaxhighlight lang="json">
"subsections": [ "Ji wêjeya klasîk", "Ji wêjeyê", "Bikaranîn", "Tewandin", "Bi alfabeyên din", "Formên alternatîv", "Kurtkirin", "Sembol", "Navê zanistî", "Hevmane", "Dijmane", "Jê", "Nêzîk", "Jornav", "Jêrnav", "Têkildar", "Etîmolojî", "Dûnde", "Binêre herwiha", "Bi zaravayên din", "Werger", "Qafiye", "Anagram" ]
</syntaxhighlight>
{{r|Keyomerd|Ghybu|Bikarhêner}}Li gorî nîqaşa jor û [[Alîkarî:Formata nivîsînê]] min ev lîste hazir kir lê tê de hin kêmasî hene, "Bide ber" tê de tine ye, li kû derê bixim? Mihtemelen beşên din jî hene ku haya min ji wan nîne. Pirsek din, beşên nestandard wekî [https://ku.wiktionary.org/w/index.php?title=berf&diff=prev&oldid=6292461] çi bikim? Min got li dawiyê bixim berî Wergerê lê sankî piştî Wergerê be çêtir e?--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:24, 31 tîrmeh 2026 (UTC)
:@[[Bikarhêner:Bikarhêner|Bikarhêner]], @[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Keyomerd|Keyomerd]] Eger îtîraz an fikrekî din neyê, ez ê beşên nestandard bixim beriya "Bi zaravayên din" eger ev beş tinebe, beriya "Werger". Ez ê "Nêzîk" jî bixim piştî Hevmane û li ser [[Alîkarî:Formata nivîsînê]] "rast" bikim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 1 tebax 2026 (UTC)
::Ez ê "Bikaranîn" jî bikim "Notên bikaranînê" [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:03, 1 tebax 2026 (UTC)
:::Jixwe bot hema bêje hazir e, eger dûre kesek rabe fikrekî din li pêş bixe, em dikarin biguherînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:04, 1 tebax 2026 (UTC)
::::Ev hinek zêdetir problematîk e feqat ez ê "Ji wêjeyê/a klasîk" jî bikim "Ji edebiyatê"/"Ji edebiyata klasîk". Tabî eger fikrekî din hebe, ne problem e. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:05, 1 tebax 2026 (UTC)
:::::Na, bi min "wêje" bimînî... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:22, 1 tebax 2026 (UTC)
::::::Ok {{=D}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:23, 1 tebax 2026 (UTC)
:::::::"Bide ber" pêşiya "Binêre herwiha"
:::::::"Jê" pêşiya "Têkildar" piştî jornav, jêrnav [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:41, 1 tebax 2026 (UTC)
:::::Ji bo min "'''edebîyat'''" çêtir e, bila ne wêje be. "wêje" kelîmeyeke şaşçêkirî ye. Mahîyeta qisman (kîjan qism bi kêrî çi tê) ji navên wan nayê famkirin. "Binêre herwiha" û "Herwiha" tevlihev dibû, baş e we rast kirîye. Feqet mahîyeta wê qismê ("Binêre herwiha") hê jî ji navê wî nayê famkirin. Jixwe ger em bixwazin bi wî şeklî binivîsin jî divê em bikin "Herwiha binêre", ew jî zid hatîye nivîsandin. Ji xeynî wê, "Navê zanistî" na, "'''Navê îlmî'''" çêtir e. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 22:51, 2 tebax 2026 (UTC)
::::::Bi min beşa Navê zanistî werin rakirin, wekî en.wikt em li dawiyê yan li pêşiya maneya bi şablona {{ş|q}} binivîsin yan jî wê şablona îngilîzî çêkin ku enwikt bi kar tîne.
::::::Li wikipediyayê min çend car dîtiye Penaber49 jî "Binêre herwiha" dike "Binêre" loma guhartina wê wekî "Herwiha binêre" fikrekî maqûl e.
::::::Herwiha tu ji bo Bêhtir xwendin çi dibêjî [[Special:PermanentLink/6323554#Binêrê_herwiha]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:29, 3 tebax 2026 (UTC)
:::::::Ez dibêjim bila '''''"Xwendina Zêdetir"''''' be. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 05:03, 6 tebax 2026 (UTC)
:::Em çima peyva notê bi kar tînin, ma "nîşeyên bikaranînê" ne çêtir e? [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 06:04, 1 tebax 2026 (UTC)
:Rêzkirina dawî:
<syntaxhighlight lang="json">
"subsections": ["Ji wêjeya klasîk", "Ji wêjeyê", "Tewandin", "Notên bikaranînê", "Bi alfabeyên din", "Formên alternatîv", "Kurtkirin", "Sembol", "Navê zanistî", "Hevmane", "Nêzîk", "Dijmane", "Jornav", "Jêrnav", "Jê", "Têkildar", "Etîmolojî", "Dûnde", "Bide ber", "Binêre herwiha", "Bi zaravayên din", "Werger", "Qafiye", "Anagram"]
</syntaxhighlight>
Bnr. [[Wîkîferheng:Bot/Balyozbot/tercîh.json]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:44, 1 tebax 2026 (UTC)
:Bi botê ez ê tenê binebeşên sinifên rêzimanî yên bi 4 = biguherînim, yên din lazim e bi destî werin guhartin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:46, 1 tebax 2026 (UTC)
::@[[Bikarhêner:Ghybu|Ghybu]] Bota rêzkirina binebeşan û cihguhartina Tewandinê hema bêje hazir e. Param {{param|hêl}} bi kar bînim (eger wisa be, em kategoriya "ku-tewîn-nav bê param hêl" çêkin daku hemû xilas bikin) yan jî şablonên heyî bikim ku-tewîn-nav/kevn û piştî kontrolkirinê hemû bikin nû? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:26, 1 tebax 2026 (UTC)
:::Bi parametreyê {{param2|hêl}} tu ê paşê wan dîsa rakî... Herwiha min va [https://ku.wiktionary.org/w/index.php?title=abes%C3%AEv&curid=43641&diff=6294632&oldid=6244736] fêm nekir, me çima Tabloya tewandinê rakir :)? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:26, 1 tebax 2026 (UTC)
::::Ji bo ku rê bidin tiştên wisa :D Em ê li kû derê deynîn examples?? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:28, 1 tebax 2026 (UTC)
:::::Tablo hazir bin, em dest pê bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:28, 1 tebax 2026 (UTC)
::::::Sernav tê rakirin, mê bikim "m"? yan bila bimînî? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:28, 1 tebax 2026 (UTC)
:::::::Tablo hatiye çêkirin bi [https://ku.wiktionary.org/wiki/Modul:ku-tew%C3%AEn-nav/ceribandin vê] kodê her du parametre jî tên bikaranîn mê/m, nêr/n û mê û nêr/mn... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:41, 1 tebax 2026 (UTC)
:::::Ez nizanim çi bibêjim... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:43, 1 tebax 2026 (UTC)
::::::[https://ku.wiktionary.org/w/index.php?title=abes%C3%AEv&diff=prev&oldid=6294657] ok?
::::::Bi min li şûna {{param|hêl}} em {{ş|ku-tewîn-nav/nû}} bi [[Modul:ku-tewîn-nav/ceribandin|modula ceribandinê]] çêkin, paşê navê şablonê biguherînin baştir be, çunkî [[Special:PermanentLink/6294527#L-337|modula nû]] ne backward compatible e. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:56, 1 tebax 2026 (UTC)
:::::::Em ê dîsa paşê nivîsa "/nû" rakin. Bi botê 22000 rûpel di 2 rojan de tê guherandin? Eger wisa ye (bi min pirr nîne), bi navê rast biguhrîne, bila di nav rûpelên ku nehatine guherandin xeletî hebin... Dîsa jî tu dizanî, bot te çêkiriye û tu sererast dikî :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:17, 1 tebax 2026 (UTC)
::::::::Min gelek caran dîtiye, bi botê tiştekî hatiye guhartin lê ji ber ku rind nehatiye kontrolkirin, şablona kevn bi halê xwe yê kevn maye. Tirsa min ew e. Ji ber ku formata hemû sayfeyan ne eynî ne, ez dibêm bot gelek ji wan derbas bike. Bi vî awayî em ê {{ş|ku-tewîn-nav}} sêwî bihêlin û piştî bot xilas kir, em ê bi dil rehetî karibin şablona nû rakin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:26, 1 tebax 2026 (UTC)
:::::::::Rast e! {{param|g|2}} :)) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:32, 1 tebax 2026 (UTC)
::::::::::Mîsalên wan gelek in :) [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:36, 1 tebax 2026 (UTC)
:::::::::::Eger karibî hinek round edges bixî û rengê background a "Tewandina X" biguherînî, gelek moderntir û xweştir xuya bike :) [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:25, 1 tebax 2026 (UTC)
::::::::::::''Simplicity is best'' / ''Fewer choices mean less worry:'' felsefeya min e:) Me tabloyê wekî en.wîkî kir [https://ku.wiktionary.org/wiki/%C5%9Eablon:tabloya-tewandin%C3%AA-ser {tabloya-tewandinê-ser}], tenê [//ku.wiktionary.org/wiki/Modul:ku-tew%C3%AEn-nav/ceribandin#L-362 reng] ({{param2|palette}}) tê guherandin (felsefeya wan e jî...). Bi min tiştekî pir rind çêkirine. Dîsa jî em dikarin (wekî berî) bi CSSê biguherînin. Ji bo çêkirina tabloyan min di rûpela şablonê de tiştên ku pirr hewce ne nivisandiye ji bo detayan jî rûpela en.wiki heye. Herwiha tabloyê li gor daxwaza we biguherînin û serrast bikin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 03:04, 2 tebax 2026 (UTC)
:::::::::::::PS: Şiklê tabloyê li vira tê guherandin [[Şablon:tewandin-ser/style.css]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 04:41, 2 tebax 2026 (UTC)
::::::::::::::Mala te ava tu ji heqê rengan gelek xweş derdikevî :)
::::::::::::::Ev felsefeya te gelek caran karê min pir zor dike {{=D}} en.witk gelek tiştî bi awayekî xweş çêkirine, ez jî heta ku wana adapte bikim, gelek êş dikşînim bnr. [[#Modul:quote]] û Şablonên etîmolojiyê [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:47, 2 tebax 2026 (UTC)
:::::::::::::::Bot xilas kiriye, Baş e [[Special:PermanentLink/6323268#Şablona_ku-tewîn-nav_ne_li_binê_Serenav_an_Navdêrê_ye|zêde]] xeletî derneketin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:35, 2 tebax 2026 (UTC)
::::::::::::::::Gelek spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:42, 2 tebax 2026 (UTC)
:::::::::::::::::Niha şablon sêwî ma ji xeynî gotûbêjan, ew jî dûrê rast bikim, tu dikarî modulan rojane bikî? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:28, 3 tebax 2026 (UTC)
::::::::::::::::::Spas. Ev rûpel pirr dirêj bû... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 00:33, 3 tebax 2026 (UTC)
:::::::::::::::::::Erê, rêzkirina beşan ez ê bikim yek satir, lê dîsa jî zêde fêde nede, fikrekî din heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:38, 3 tebax 2026 (UTC)
::::::::::::::::::::@[[Bikarhêner:Ghybu|Ghybu]] [https://ku.wiktionary.org/wiki/W%C3%AEk%C3%AEferheng:D%C3%AEwan#c-Wikihez-20260801005000-Wikihez-20260731162400] û [https://ku.wiktionary.org/w/index.php?title=gur&curid=5384&diff=6328092&oldid=6328089] ? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:00, 7 tebax 2026 (UTC)
== SEO ==
Merheba @[[Bikarhêner:Ghybu|Ghybu]] Wextê ''jiyannas'' bi şiklê "jiyannas" lê digerî di nav netîceyên googlê de [[jiyannas]] derdikeve? Min hem bi Chromeê û hem jî bi VPNê ceriband lê [[jiyannaseke]] derdikeve feqat [[jiyannas]] dernakeve. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:31, 2 tebax 2026 (UTC)
:"zengilok" derdikeve [[zengilok]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:38, 2 tebax 2026 (UTC)
:Min jî tenê [https://usercontent.one/wp/portal.arsivakurd.org/wp-content/uploads/2024/08/Bernamegeh-4.pdf?media=1709107483 va] (''Berna Megeh'', Jan Dost, OCCO MAHABAD) û https://portal.arsivakurd.org/wp-content/uploads/2022/06/Xwebun-34.pdf va] (''Xwebûn'', hj.34) dît herwiha ''Jihannasî'' jî heye... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:44, 2 tebax 2026 (UTC)
::Behsa çavkaniyan nakim behsa SEOyê dikim, çima [[jiyannas]] di netîceyan de dernakeve. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:49, 2 tebax 2026 (UTC)
:::Min fêm nekir, pirsa te çima Wîkîferheng dernakeve ye? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:51, 2 tebax 2026 (UTC)
::::Erê çima sayfeya Wîkîferhengê ya [[jiyannas]] dernakeve feqat [[jiyannaseke]] derdikeve. Min du nimûne nivîsandin ka piştî mehekê em binêrin derkeve yan na. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:54, 2 tebax 2026 (UTC)
:::::Bi min dema ku motora googlê "jiyannaseke" (-eke bi kurdî ye) digere, ew peyv tenê di kurdî de heye ji ber vê yekî dide. Feqet "Jiyannas" di nav zimanên din de jî heye (belkî difikire ku ew xeletî ye.). Herwiha nivîsa bin "Jiyannas" li gor "jiyannaseke" biçûk e û li bin "biolog" hatiye nivîsandin:) Herwiya peyva "biolog" jî dide ew jî giridayî pirr peyvan e... Pirr parametre hene... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:09, 2 tebax 2026 (UTC)
::::::Wextê li "birakujî" dictionnaire digerî netîceya ewil rasterast fr.wikt e. Wana tiştekî kirine lê çi? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:13, 2 tebax 2026 (UTC)
:::::::"Trust Score" ? Herwiha peyva "birakujî" pêş Wîkîfehengê hatiye çêkirin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:21, 2 tebax 2026 (UTC)
::::::::Nizanim [[:en:Wiktionary:Votes/2023-08/Installing the WikiSEO extension]] heye lê [[:phab:T346590]] sekinî ye. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:27, 2 tebax 2026 (UTC)
:::::::::Erê, feqet lînkên û navên Wîkîferhenga fransî û îngilîzî di internetê de pirr tên parvê kirin. Wîkîferhenga fansî ferhengek derxistiye: [https://www.fnac.com/a13530183/Collectif-Le-dico-adapte-du-Wiktionnaire Le dico] (li ser Amazonê). Kî qala Wîkîferhenga kurdî dike? Ji ber vê yêke hertim pêş me ne. Daxwaza wan werin pêş malperên din... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:36, 2 tebax 2026 (UTC)
::::::::::[https://www.google.com/search?sca_esv=a854c327b7bb0786&q=%22W%C3%AEk%C3%AEferheng%22&tbm=nws&source=lnms&fbs=ABfTbFUDadgeu2mn4mYJ8iEZ1GUDDuwRa4um-2LNhBFWIpqZc7ZL_t3iAe0lB1D4hb_Ohp7yg8FO-XwZ7R-ba4YefvIQCF4Ra4wbUNQStQ8dVc6IK2vWHoXbgHLwJobq4HTNMksBhYHBmxw2hK9Sa4pHAI3I2Ovzox54EiEId7q7IoMJRkRlr-XDezqDqx33xDsZIWuHy-a_vqoqDlYrhNBbNeVEP9MwaA&sa=X&ved=2ahUKEwiz94Co9IKWAxXNUaQEHQJAAGYQ0pQJegQIGBAB&biw=1320&bih=583&dpr=1 Wîkîferheng] {{=D}} Li ser X û medyayên din de jî pirr qala Wîkîferhengê nakin... Bi rastî kî Wîkîfrhengê dixwîne? [https://pageviews.wmcloud.org/topviews/?project=ku.wiktionary.org&platform=all-access&date=yesterday&excludes=]... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:41, 2 tebax 2026 (UTC)
:::::::::::Haya ti kesî ji Wîkîferhengê nîne bi rastî loma pêşxistina SEOyê hewce ye. Ez dibêjim miheqeq fr.wikt tiştek çêkiriye ne mimkun e wextê heval dictionnaire binivîsî wiktionary derkeve bêyî çêkirina tiştekî. Not: Min ferq kir li ser fr.wikt wextê bi mobîlê tê dikevî, eger di sayfeyekê de du ziman hebe ya fransî otomatîk vedibe zimanê din veşartî dimîne. Fikrekî xweş e em jî çêkin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:21, 2 tebax 2026 (UTC)
::::::::::::Erê bila were çêkirin. Min gotûbêja wan li ser vê mijarê xwandibû, Wîkîferhenga fransî jî ne razî ye. Dema ku li ser Googlê tu peyvek diguherî Wîkîferhenga wan di bin Wîkîpediyayê û di bin malperên din de derdikeve. Û çend caran şûnda "Wiktionnaire" "Wikipédia" tê nivîsansin... Ew jî nizanin çi bikin :)) Niha dizanim ku en.wikt ji ne razî ye... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:37, 2 tebax 2026 (UTC)
:::::::::::::@[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Wikihez|Wikihez]]: Ez dibêjim rûpelên ku tenê form di wan de hene, divê <nowiki>__NOINDEX__</nowiki> bin. Wî çaxî, rêza wan nikare ji lemmayê bilindtir be ji ber ku wê nînbin. Ez dibêjim belkî îhtîmala derketina lemmayê bêhtir jî bibe heke netîceyên ku dişibin wê nînbin. Jixwe lemma wê derkeve heke yek li formekê bigere, ji ber ku di rûpelê lemmayê de tabloyên tewandinê hene û ev tên jimartin. [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 22:55, 2 tebax 2026 (UTC)
::::::::::::::@[[Bikarhêner:Guherto|Guherto]] Em dibêjin tenê form xuya dike ya sermade xuya nake tu dibêjî em formê noindex bikin {{=D}}
::::::::::::::Claude [[Special:PermanentLink/6323375|li vir]] dibêje ya ku Ghybu got rast e, ji ber ku frwikt gelek tê bikaranîn bêtir dikeve ber çavê google. Eger rojek Wikiseo li en.wikt were çêkirin, em jî bixwazin qet nebe kêrî tiştekî were.
::::::::::::::Em şablonek ji bo metadescription çêkin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:09, 2 tebax 2026 (UTC)
:::::::::::::::@[[Bikarhêner:Wikihez|Wikihez]] Min got, ''Wî çaxî, rêza wan nikare ji lemmayê bilindtir be ji ber ku wê nînbin. Ez dibêjim belkî îhtîmala derketina lemmayê bêhtir jî bibe heke netîceyên ku dişibin wê nînbin.'' [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 23:10, 2 tebax 2026 (UTC)
:::::::::::Em jegirtinan lînk bikin? Bi vî sayî gelek sayfe lînk bide ser hev. Bi riya cssê em dikarin rengê tarî bikin da ku wekî lînk xuya nekin... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:39, 3 tebax 2026 (UTC)
::::::::::::Wextê jîwar ferheng yan jî boçik ferheng lê digerî rasterast Wîkîferheng dertê. Meselê hejmara bikaranîna eynî kelîmeyê di sayfeyê de ye. Em çiqas jêgirtin lê zêde bikin ewqas baştir dibe netîce :) Google AI Mode rasterast Wîkîferheng wek çavkanî nîşan û lînk dide loma kurmanc bi kar neyînin jî AI bi kar tînin baş e ... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:24, 3 tebax 2026 (UTC)
:::::::::::::Êêêê Google AI Overview çi bi şikle "tarîxiyen" ferheng lê digerim wekî ku min li ferhengê qeyd kiriye gelek xweş îzah dike (ji ber ku hîn gelek nû ye netîceyan de Wîkîferheng dernakeve) Nimûneyên bikaranînê jî ji înternetê derdixe. Çi mana ferhengê nemaye... Em çi îşî dikin li vir :D [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:47, 3 tebax 2026 (UTC)
:::::::::::::Êdî Google jî nayê bikaranîn :)) Niha kî tere ser ''Stack Overflow'' û di nav belgeyên kodan de digere... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:47, 3 tebax 2026 (UTC)
::::::::::::::Erê welle, ez gelek car dibînim kesên derdora min hemen Gemini an Chatgpt vedikin, çi tiştê biçûk hebin, hemen pirs dikin, qet li ser Googlê jî lê nagerin :D [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:52, 3 tebax 2026 (UTC)
:::::::::::::::"êgsig ferheng" netîce nade feqat wexta "ornag ferheng" digerim rasterast wîkîferheng derdikeve li binê dibêje "Tewandina ornag. Zayenda nêr a binavkirî. Rewş, Yekjimar, Pirjimar. Navkî, ornag, ornag. Îzafe, ornagê · ornagên. Çemandî, ornagî · ornagan.Read more"
:::::::::::::::Meraq dikim guhartina cihê tewandinê çi netîce bide. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:21, 3 tebax 2026 (UTC)
::::::::::::::::Pêşta me tabloya Tewandinê vitira dinivîsand: [[ketin (Tewandin)]] Dma ku nav hat guherandin li ser Googlê tewandin winda bû...
::::::::::::::::Min tewandin:kirin geriya tabloya tewandina Wîkîferhengê dide. Êdî kes nê vira:) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:38, 3 tebax 2026 (UTC)
:::::::::::::::::Tenê dema "niha" nivîsand. Min jî bi kurdî "dema bê jî binivîse" nivîsî: ew jî nivîsand... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:42, 3 tebax 2026 (UTC)
::::::::::::::::::[https://support.google.com/webmasters/answer/16908024?hl=en tê asteng kirin]... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 02:07, 4 tebax 2026 (UTC)
:::::::::::::::::::kî dibêje? li wir tiştek wisa nabêje...? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 02:16, 4 tebax 2026 (UTC)
::::::::::::::::::::Va hatiye nivîsandin: "''Exclude my site's links and content from Search generative AI features: Your site's content is prevented from being visible to users in Search generative AI features, including being linked to within these features and helping with grounding AI responses in these features. You won't receive any traffic or impressions from these features. Learn more about what excluding your site means.''" [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 02:23, 4 tebax 2026 (UTC)
== Moda tarî ==
Bi chrome û Firefoxê wextê Reng dikî "otomatîk", eger tarî be, tiştên bi reng xirab xuya dikin, lê wextê "tarî" hildibijêrî xweş xuya dikin. Min hemû js/css/Gadget betal kirin û ?safemode=1 ceriband, dîsa jî wextê "otomatîk" e, her tiştê tarî xirab e. Êdî nizanim problem li cem min e yan di Moda tarî de ye. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:15, 9 tebax 2026 (UTC)
== Formata jêgirtinan ==
Merheba hevalno {{r|Ghybu|Bikarhêner|Keyomerd|Kurdanparez|Guherto|Şêr}} Wekî min [[#Modul:quote|li jor]] jî gotiye, formata îngilîzî ji ya me baştir e. Her tişt di cihên xwe de ne. Ya me wexta çend tercime yan jî transliterasyon îlawe dikî, gelek tevlihev dibe. Berê me çavkaniyê bi amûra [[MediaWiki:Gadget-jeder.js]] kurt kiribû feqat ew jî ne tiştekî baş e ji ber ku gelek malûmat tên veşartin û kesên nû tên tenê sal û nivîskarê dinivîsin carinan ew jî ne tiştekî baş e. Em dikarin amûra jêderê wisa eyar bikin ku bêyî parentez bixebite û ewilî vekirî be, dûre ê ku dixwaze malûmatan kurttir bike. Eger em vî tiştî bi formata me ya niha bikin, jêgirtinên bi çavkaniyên dirêj dê gelek xirab xuya bikin.
Hûn dikarin li vir miqayese bikin ka kîjan baştir xuya dike:
# [[Special:PermanentLink/6329434|jêgirtina dirêj bi îngilîzî bi formata en.wikt]] vs. [[Special:PermanentLink/6329414|bi formata me ya niha]]
# [[Special:PermanentLink/6329439|jêgirtineke bi soranî bi formata en.wikt]] vs. [[Special:PermanentLink/6329437|jêgirtineke bi soranî bi formata me ya niha]]
Ez naxwazim xwe wisa nîşan bidim ku li ser eynî tiştî her daîm israr dike feqat bi ya min ev zarûriyeteke ji bo baştirkirina xwendina nimûneyan e. Loma ez li vir dengdanek li dar dixim, bila qerar çi be, em wisa bikin, dûre em dikarin amûreke nû çêkin ku li gorî tercîhên bikarhênerî formata en.wikt yan jî formata niha were bikaranîn.
Ji kerema xwe raya xwe li jêr bidin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:01, 11 tebax 2026 (UTC)
=== Dengdan ===
{{dengdan|destpêk=11.08.2026|dawî=18.08.2026}} <!-- kengî dengdan xilas bû vê şablonê {{dengdan/borî|destpêk=|dawî=}} bi kar bînin. -->
==== Bila formata niha bimîne ====
<!-- Li jêr '# {{erê}} ~~~~' binivîse ji bo raya erê. -->
==== Bila formata en.wikt were bikaranîn ====
<!-- Li jêr '# {{erê}} ~~~~' binivîse ji bo raya erê. -->
# {{erê}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 11 tebax 2026 (UTC)
=== Gotûbêj ===
{{şirove}} Eger hûn bibêjin çima sal û çavkanî li herî pêş e sebeb ev e: Ji bo en.wiktê "attestion" yanî peyitandin bi riya emilandinên heqîqî pêk tê. Yanî eger di ferhengekê de ev kelîme derbas bibe ji bo wan ne muhîm e, ya muhîm emilandina di nav cumleyan de ye. Mîsal ew kelîmeyên ku tenê ferhengan de derbas dibin dixin [[:en:Appendix:English dictionary-only terms]]. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:14, 11 tebax 2026 (UTC)
:@[[Bikarhêner:Ferhengvan|Ferhengvan]], @[[Bikarhêner:Bibliophile|Bibliophile]] û @[[Bikarhêner:Dûrzan|Dûrzan]] fikrê we çi ye li ser vê meseleyê? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:48, 12 tebax 2026 (UTC)
3rv6m15nj5f7i8oihg97stetedglaqu
6329730
6329622
2026-08-12T21:04:59Z
Dûrzan
875
/* Gotûbêj */ Bersiv
6329730
wikitext
text/x-wiki
<noinclude>{{Dîwan/arşîv-ser|2026}}</noinclude>
{{clear}}
== Daxwazên standardkirinê ==
https://ku.wiktionary.org/wiki/W%C3%AEk%C3%AEferheng:Daxwaz%C3%AAn_standardkirin%C3%AA, Gelo di vê malperê de peyvên hatîye standart kirin; ji malperê rakin? Zêde tehlîhev e. @[[Bikarhêner:Bikarhêner|Bikarhêner]]@[[Bikarhêner:Guherto|Guherto]] [[Bikarhêner:Rewiye tine|Rewiye tine]] ([[Gotûbêja bikarhêner:Rewiye tine|gotûbêj]]) 10:03, 8 kanûna paşîn 2026 (UTC)
:@[[Bikarhêner:Rewiye tine|Rewiye tine]] [[Taybet:Tercîh#mw-prefsection-gadgets]] li vir amûra [[MediaWiki:Gadget-aWa.js/belgekirin|awa]] aktîv bike û pê re dikarî gotûbêjan arşîv bikî. Li sayfa [[WF:DS]] li kêleka her sernavê gotûbêjê <nowiki>[arşîv bike]</nowiki> derdikeve, pê lê bike û ew ê arşîv bike. Eger nikarî tu tenê şablona {{ş|ds-kirî}} îlawe bike, ez ê dûre arşîv bikim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:35, 5 tîrmeh 2026 (UTC)
== Standartkirin ==
Sala borî, min pêşnîyazek kiribû. Halî hazir piştî daxwaza standarkirinê em du heftî disekinin, eger kesek fikrek dîyar neke. Raste rast peyv li gor ferhenga standart a mezopotamyayê tê standart kirin. Ji xwe sazîyek vê karî dike çima em vê barî dikin stuyê xwe. Mesela ez çaxe di wîkîferhengê de peyvek digêrim; standart a peyvê jî li cem xwe kontrol dikim. Eger destûr hebe bi germî dikarim wê malperê standart bikim. Benda bûna du heftîyan gelo ne zehmet e? Duyemîn pêşnîyaza min nîşandana standarta peyvê di malpera de ye. Kesek dema malperan binêre, divê li jora malperan bibîne ku ev peyv standart e. Ev jî hîzmet e. Çimkî nivîskar, wergêr, edîtor, rojnemavan hez dikin bi peyvê standart binivîsin. https://ku.wiktionary.org/wiki/k%C3%AAf li vir wekî mînak min daye nîşan. Lê îfade eger wisa be: Standarda Rastnivîsîna Ferhenga Kurdî a Weqfa Mezopotamyayê kêf (r. 253) e yê çetir be. Çimkî îfadeya berê de peyva kurdî-tirkî derbas dibe û di mejîyê mirov de tevlihevî çêdibe.@[[Bikarhêner:Bikarhêner|Bikarhêner]]@[[Bikarhêner:Guherto|Guherto]] [[Bikarhêner:Rewiye tine|Rewiye tine]] ([[Gotûbêja bikarhêner:Rewiye tine|gotûbêj]]) 10:25, 8 kanûna paşîn 2026 (UTC)
:Merheba. Hevalno dîyar e karê standarkirinê li wîkîferhengê rawestîya ye. Min sê peyv ji bo standartkirinê qeyd kir. Kes li ser şîrove nenivîsî. Mehek jî li ser derbas bû. Aniha ez dikarim van rupelan biguherim. Li gor qaîdeya hatine danîn wisa ye. Daxwaza min heta niha jî ew e kelîmeyên di ferhenga standartkirinê de heyî divê em bikaribin rasterast li vir jî bikin standart. An jî demê kurttir bikin. Li weqfa mezapotamyayê 20 mirov digêhin hev li ser peyvekî seetan nîqaş dikin. Ma hewceyê em jî li vir nîqaş bikin? Tevlî vê jî ji xwe kes li ser vê mijare nasekîne van dema. Xeynî vê pêşnîyaza min nîşandana standarta peyvê di malpera de hebû. Li ser malperê 'Standarda Rastnivîsîna Ferhenga Kurdî a Weqfa Mezopotamyayê kêf (r.253) e' Tiştek mîna wî hebe yê gelek kêrî her cure nivîskarê me were. Çimkî hin nivîskarên me hez dike bi kelîmeyên standart binivîse. Di malperê de bila vê hêsanî fam bike çêtir e. @[[Bikarhêner:Bikarhêner|Bikarhêner]]@[[Bikarhêner:Ghybu|Ghybu]] [[Bikarhêner:Rewiye tine|Rewiye tine]] ([[Gotûbêja bikarhêner:Rewiye tine|gotûbêj]]) 18:35, 17 sibat 2026 (UTC)
::Merheba @[[Bikarhêner:Rewiye tine|Rewiye tine]]. Ev format pir xirab dibe. Tu dikarî li beşa Çavkaniyê binivîsî bi şablona {{ş|kitêb}} binivîsî çêtir e û tê eynî maneyê. Lê her kes standarda Weqfa Mezopotamyayê qebûl nakin û ez jî şibhê dikim ku ev websîte bi awayekî kolektîv tê çêkirin an na. Loma em bi ya kitêba rastnivisînê çêkin û eger îtîraz tinebe, şablona {{ş|ds-kirî}} li gotûbêja [[WF:DS]] binivîse, dûre li gotûbêjê arşîv bike, ne hewce ye li hêviya kesên din bisekinî. Eger itirazek hebe, ê ku dixwaze dûre dîsa şablona ds zêde bike. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:30, 5 tîrmeh 2026 (UTC)
:::[https://berwarnews.com/ferhenga-rastnivisine-qonaxeke-giring-a-standardkirina-kurmanci-ye/ Roportaja Mikail Bülbül] li ser proseya standardkirinê. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:57, 9 tîrmeh 2026 (UTC)
::::Min nû dît an jî nû hatiye zêdekirin lê meqaleyek bi navê [https://www.ferhengkurdi.com/?q=iltihap&modal=lijne lijneya edîtorîyê] nivîsandine [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:40, 22 tîrmeh 2026 (UTC)
== <span lang="en" dir="ltr">Annual review of the Universal Code of Conduct and Enforcement Guidelines</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
I am writing to you to let you know the annual review period for the Universal Code of Conduct and Enforcement Guidelines is open now. You can make suggestions for changes through 9 February 2026. This is the first step of several to be taken for the annual review. [[m:Special:MyLanguage/Universal Code of Conduct/Annual review/2026|Read more information and find a conversation to join on the UCoC page on Meta]].
The [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee|Universal Code of Conduct Coordinating Committee]] (U4C) is a global group dedicated to providing an equitable and consistent implementation of the UCoC. This annual review was planned and implemented by the U4C. For more information and the responsibilities of the U4C, [[m:Special:MyLanguage/Universal Code of Conduct/Coordinating Committee/Charter|you may review the U4C Charter]].
Please share this information with other members in your community wherever else might be appropriate.
-- In cooperation with the U4C, [[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]])<section end="announcement-content" />
</div>
21:02, 19 kanûna paşîn 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=29905753 -->
== Request for comment (global AI policy) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies for writing in English. {{int:Please-translate}}
A [[:m:Requests for comment/Artificial intelligence policy|request for comment]] is currently being held to decide on a global AI policy. {{int:Feedback-thanks-title}}
[[Bikarhêner:MediaWiki message delivery|MediaWiki message delivery]] ([[Gotûbêja bikarhêner:MediaWiki message delivery|gotûbêj]]) 00:58, 26 nîsan 2026 (UTC)
</bdi>
<!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30424282 -->
== Guharto ==
: <small>→ Ji rûpela ''[//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj:berf%C3%AEtik&oldid=6233338 Gotûbêj:berfîtik]'' hatiye girtin.</small>
Silav {{r|Ghybu}} ma hewce ye em guhartoyan jî kategorîze bikin? Li vê [[ژیشک]] binere, tije guhartoyên wê hene, ku em ji gişan re guhandar binivîsin dê 10 navên heman hebin di nav wê kategorîyê de. Tu çi difikirî? [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 09:40, 26 nîsan 2026 (UTC)
:{{silav|Keyomerd}}. Erê, problem çî ye? {{=)}} Ew jî tên bikaranîn... Dema ku peyvek tê çêkirin hewce ye ku em hemû agahiyên wan binivîsin: bilêvkirin, bikaranîn, mînak, terîm, herêm, tewandin, etîmolojî...
:Bi min peyvên ku wekî ''guherto'' hatine nivîsandin bi nivîsa {{w|Italic type|îtalîk|ziman=en}} (xwahr) di nav kategoriyan de werin nişan kirin (ji bo cudakirinê). {{ping|Ferhengvan|Bikarhêner}} [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 16:40, 30 nîsan 2026 (UTC)
::Yên '''''nestandard''''' di kategorîyan de biferq werin nîşandan baştir e. Qene em karibin wan ji yên stadard ferq bikin. @[[Bikarhêner:Ghybu|Ghybu]] Xêra xwe hûn sîstemeke wisa çêkin. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 14:36, 1 gulan 2026 (UTC)
:::Merheba @[[Bikarhêner:Keyomerd|Keyomerd]] û @[[Bikarhêner:Bikarhêner|Bikarhêner]] ev xisûsiyet jixwe di şablonên rêzimanê de heye, wextê {{param|formaalt|1}} dinivîsin, made dikeve Kategoriya [[:Kategorî:Formên alternatîv bi kurmancî]] li gorî koda zimanî jî zimanên din tê çêkirin. Hemû madeyên kurmancî bi alfabeya erebî dikevin vê kategoriyê lê nizanim ev tiştekî rast e Yan xelet e, ji bo nîşandanê min çêkiribû lê min hîn wext nedît ku nîqaşek li ser çêkim. Qaîdeyên bikaranîna vê parametreyê di wîkiya îngilîzî de jî tam ne belî ye. Du gotûbêj [https://en.wiktionary.org/wiki/Wiktionary:Requests_for_moves,_mergers_and_splits#Category:Alternative_forms_by_language] [https://en.wiktionary.org/wiki/Wiktionary:Beer_parlour/2024/June#Decluttering_the_altform_mess] çêkirine lê ji bo îngilîzî ev parametre nehatiye bikaranîn. Min ji bo nîşandanê niha [https://ku.wiktionary.org/w/index.php?title=bax%C3%A7%C3%AA_zarokan&diff=prev&oldid=6241372] ceriband lê bi min xelet e. Em çawa bikin? Kengî vê parametreyê bi kar bînin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:29, 8 tîrmeh 2026 (UTC)
::::@[[Bikarhêner:Kurdanparez|Kurdanparez]] Tu çi difikirî? Ji bo zazakî [https://ku.wiktionary.org/w/index.php?title=a_c%C4%B1_geyrayene&oldid=6241396 wisa] bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:55, 8 tîrmeh 2026 (UTC)
:::::Kategorîyekê cuda baş dibe. Wextê ku ez li kategorîya "lekêren bi zazakî" dinêrim, ez hem formê bi şikilê Johnsonê û formê standardê dibînim. Zaten wexte ku ez dikevim ê Johnsonê, min dibe formê standardê. Kategorîyekê cuda, bi taybetî ji bo nivîsandinên alternatîf, baş dibe.
:::::Lê em bîr nekin ku wextê ku em bo formên alternatîf yên devokî qal dikin, belkî adil neye ku em ev bişînin derekê din yê ku însan ewqas nabînin. [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 22:03, 8 tîrmeh 2026 (UTC)
::::::@[[Bikarhêner:Kurdanparez|Kurdanparez]] Gelo min rast fêm kir? Tu dibêjî formên {{q|ku|kîvroşk}} bi dîqet werin guhartokirin lê bi yên bi alfabeya Jacobsonê hemû bikin {{param|formaalt|1}}? Formên Jacobsonê dê bikevin Kategoriya [[:Kategorî:Lêker bi zazakî|Lêker bi zazakî]] û [[:Kategorî:Lema bi zazakî|Lema bi zazakî]] yan na? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:55, 8 tîrmeh 2026 (UTC)
:::::::Bi min naxwaze di wan kategoriyan de bikeve. Wek tu dibînî dûplîkat pir hene. Bi min çareya baştir yên Johnsonê di katehgorîyekê din bikevin (bila format li rûpelan neyin guherandin, bi tenê kategorî) [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 00:37, 9 tîrmeh 2026 (UTC)
== Peyvên soranî bi latînî ([[:Kategorî:Soranî]]) ==
Silav, di nav vê kategoriyê (''[[:Kategorî:Soranî]]'') de pirr peyv tenê bi alfabeya latînî hatine nivîsandin. Divê ew mutleq jî bi alfabeya erebî werin transkrîbe kirin ji ber ku soranî bi alfabeya erebî tê nivîsand... Bikarênerên ku soranî dizanin dikarin wan sererast bikin? Mînakên guhertinan: [//ku.wiktionary.org/w/index.php?title=zor%C3%AEne&curid=6584&diff=6233355&oldid=5859303], [//ku.wiktionary.org/w/index.php?title=s%C3%AAw&diff=6233097&oldid=6233003], [//ku.wiktionary.org/w/index.php?title=sewz&diff=6233313&oldid=6069107], ... Spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:16, 2 gulan 2026 (UTC)
== <span lang="en" dir="ltr">Vote now in the 2026 U4C election</span> ==
<div lang="en" dir="ltr">
<section begin="announcement-content" />
Eligible voters are asked to participate in the 2026 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee|Universal Code of Conduct Coordinating Committee]] election. More information–including an eligibility check, voting process information, candidate information, and a link to the vote–are available on Meta at the [[m:Special:MyLanguage/Universal_Code_of_Conduct/Coordinating_Committee/Election/2026|2026 Election information page]]. The vote closes on 2 June 2026 at [https://zonestamp.toolforge.org/1780358400 00:00 UTC].
Please vote if your account is eligible. Results will be available by 14 June 2026. -- In cooperation with the U4C,<section end="announcement-content" />
</div>
[[m:User:Keegan (WMF)|Keegan (WMF)]] ([[m:User talk:Keegan (WMF)|talk]]) 17:15, 27 gulan 2026 (UTC)
<!-- Message sent by User:Keegan (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== RFC about AI-generated content in Wikimedia Commons ==
<bdi lang="en" dir="ltr">Apologies for writing in English, please help translate this message to your language. You are invited to participate in a [[c:Commons:Requests for comment/Policy update for AI content|request for comment on Wikimedia Commons about a policy update for AI content]]. This may affect files that are uploaded to Wikimedia Commons for use on this project. Thank you. [[m:User:Codename Noreste|Codename Noreste]] ([[m:User talk:Codename Noreste|gotûbêj]])</bdi> 17:12, 23 hezîran 2026 (UTC)
<!-- Message sent by User:Codename Noreste@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== <span lang="en" dir="ltr">Deployment of Legal and Safety Contacts Link in the Footer of Your Wiki</span> ==
<div lang="en" dir="ltr">
<section begin="Message"/>
'''Legal & Safety Contacts'''
Hello community, the Wikimedia Foundation has provided a [[wmf:Special:MyLanguage/Legal:Wikimedia Foundation Legal and Safety Contact Information|single legal and safety contact page]], to be linked in the footer of your wiki, to ensure access to accurate legal information. This is a regulatory requirement. We have already rolled out links to English, German, Italian, Spanish and other wikis and we will deploy to your wiki soon. [[m:Special:MyLanguage/Wikimedia_Foundation_Legal_and_Safety_Contacts_FAQ|Please read more on the project page]] and leave any comments in this thread or on the [[m:Special:MyLanguage/Talk:Wikimedia Foundation Legal and Safety Contacts FAQ|talk page]].
<section end="Message"/>
</div>
-- [[User:Sannita (WMF)|User:Sannita (WMF)]] ([[User talk:Sannita (WMF)|talk]]) 13:31, 25 hezîran 2026 (UTC)
<!-- Message sent by User:Sannita (WMF)@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=User:Sannita_(WMF)/Mass_sending_test&oldid=30731267 -->
== Jêbirina ferhenga Sadallah ==
Merheba @[[Bikarhêner:Guherto|Guherto]] Îmkan heye lîsteyeke wisa çêkî ku hemû sayfeyên Cyrusbot çêkir yên ku tê de tenê tercimeyeke îngilîzî heye û ev tercime jî hatibe jêbirin? Nimûne ''[[derdzanî]], [[êşzanî]]'' tenê tercimeya [[pestology]] heye ew jî ji ber heqê telîfê hatiye jêbirin. Nimûneyeke din ''zêrrgeh'', ''zêrrkar'' [[goldsmith]] hatiye jêbirin zêr wekî zêrr hatiye guhartin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 19:48, 26 hezîran 2026 (UTC)
:Temam @[[Bikarhêner:Wikihez|Wikihez]], lê vê heyvê ez nikarim, heyva were ez ê li vê meseleyê vegerim înşellah. [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 22:51, 2 tebax 2026 (UTC)
== Beşa Tewandin bo kurmancî ==
Bi ya min şablona {{ş|ku-tewîn-nav}} û ya fiîlê em bixin beşa Tewandinê (wekî [[şodir|zazakî]]. Bi vî awayî hem ji aliyê şiklî ve hem jî ji aliyê bikaranînê ve xweştir xuya bike. Eger di qismê Tewandinê de be, ê ku dixwaze îzah û notên xwe yan jî emilandinên din jî dikare binivîse. Hûn çi dibêjin? @[[Bikarhêner:Ferhengvan|Ferhengvan]], @[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Bikarhêner|Bikarhêner]]. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:05, 6 tîrmeh 2026 (UTC)
:Belkî em dikarin Formata şiweyan wekî ya behdînî jî têxin nav şablonê. Pir caran şiklê tabloya Tercimeyan ji ber dirêjbûna şablona teqînê jî xirab dibe wekî [[astrofizîk]]. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:08, 6 tîrmeh 2026 (UTC)
:Min mijarê te li jorê yê xwe dît, fikirên min jî hene eger baş e. Yê ku te gotiye bi min baş dibe, ji ber ku her rûpel ji vê mîna hev dibe. Em ê rindtir jî ferq li nav devokan binivîsin. [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 11:44, 7 tîrmeh 2026 (UTC)
::@[[Bikarhêner:Bikarhêner|Bikarhêner]] fikr? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 08:44, 15 tîrmeh 2026 (UTC)
:::Formata ku te teklîf kirîye jî ne xerab e, baş tê xuyan. Feqet bi min halê berê (mewcûd) baştir e. Ji ber ku ev şablon (ku-tewîn-nav) bi piranî kurt in û ji bo her kesî ne mihîm e, lewma li kinarê bi formeke hebe ku karibe were vekirin û girtin baştir e. Lê belê ger şablon dirêjtir bin, em karin wekî ya wîkîya almanî bikin (ew jî wekî teklîfa te ye). -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 09:50, 15 tîrmeh 2026 (UTC)
::::Em tabloya lêkerê jî rakin? 1)Em wekî navdêran bikin, bin beşa Tewandinê 2) Tabloya {{ş|ku-tewîn-reh}} were şûnda tabloya {{ş|ku-tewîn-lk}}: '''[//ku.wiktionary.org/w/index.php?title=gotin&diff=prev&oldid=6323518]''' , '''[//ku.wiktionary.org/w/index.php?title=vexwarin&diff=prev&oldid=6323525]''' 3) Bi şablona {{ş|tewandin}} û bi parametreyên {{param2|niha}} û {{param2|borî}}: '''[//ku.wiktionary.org/w/index.php?title=vexwarin&diff=6323528&oldid=6323525]'''--[[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 10:46, 3 tebax 2026 (UTC)
:::::Ez dibêjim em {{ş|ku-tewîn-lk}} bixin bin beşa Tewandinê feqat dema niha û borî tevî formên wan ên negatîv tê de cih bigire, hinek fireh be jî baş e. Dilê min dixwaze yek ji opsiyonên 2 û 3 tevî beşa Tewandinê jî bi kar bînin lê nizanim kîjan hilbijêrin? Herwiha ji bo îsman em dikarin resim zêde bikin ji bo nîşandanê, em ê fiîlan çawa bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:10, 3 tebax 2026 (UTC)
::::::Bi min ji bo kesên ku kurmancî dizanin, tabloya tewandinê "piranî" ne hewce ye. Dema ku ez lêkereke nû hu dikim pêşta rehê wê digerim paşê jî devoka wê... Şablonana "ku-tewîn-reh" pirr dirêj nîne: li ser mobîlê jî pirsgirêk nîne: bin beşa "Lêker"ê de tê nivîsandin: lojîk e. Problema beşa Tewandinê va ye: em ê hertim du rûpel serrast bikinê, rupela lêker (beşa "Tewandinê") û rûpela Tewandin:''lêker''. Bila hêmû gotûbêj tenê li ser rûpela Tewandinê were kirin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:06, 3 tebax 2026 (UTC)
:::::::Erê em ku-tewîn-lk bi ku-tewîn-reh biguherînin dê baştir bibe. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:30, 4 tebax 2026 (UTC)
== Reşwî ==
Silav ji we gî re, Pirsekê min heye.
Ez difikirim şablonekê din çê bikim boy devokek kurmancî, yê êla Reşwî. Ew lêkerên xwe hinek cuda ditewînin. Mesela te hem "ez dikim" bêjî yan jî "ez dikime", "em dikinî, em tênî, te em kuştinî" (ne "em dikin") dema xwe yek in lê maneyên xwe ne yek in, "ez bikim" "ez ê bikim" "ez bikime" û dewamên xwe hemû demên xwe yek in lê mane dîsa ne yek in.
Eger min çê kir, şûna xwe li ku derê tînim? Ez difikirim li tewandina devokên kurdî yê ku "tabên" xwe hene "kurmancîya rojavayî", "kurmancîya standard" hsw. Lê tewandin ewqes cuda ye dixwaze ku wî şablona tewandina kurdî pir were guherîn.
Hûn çi dibêjin? (R: Hûn dewên çi?) [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 11:38, 7 tîrmeh 2026 (UTC)
:{{silav|Kurdanparez}} Binêre mînaka devoka ''rojhilatî'': [[Modul:ku-tewandin#L-135]] / [[Modul:ku-tewandin#L-138|L138]] / [[Modul:ku-tewandin#L-143|L-143]], .. Di nav modula ''ku-tewandin"-ê de tê çêkirin. [[Gotûbêja modulê:ku-tewandin#Paşgirên lêkeran di kurmanciya rojhilatî de]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 13:09, 7 tîrmeh 2026 (UTC)
::PS: Dema niha: [[Modul:ku-tewandin#L-128]]; dema borî: [[Modul:ku-tewandin#L-153]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 13:15, 7 tîrmeh 2026 (UTC)
:::Merheba @[[Bikarhêner:Ghybu|Ghybu]], Eger mimkin be tu dikarî yên devokî têxî binmodulekê û bila modul load bike, bi vî awayî belkî çêkirina yên nû û famkirina modulê hêsantir be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 15:09, 7 tîrmeh 2026 (UTC)
:::Lê di devokê reşwî de hem dema niha yê statîk heye (Îng: I do -> Ez dikim) û yê progressîf heye (I am doing -> Eîz (nêr) Ez î (mê) dikime, yan jî Ez î dikime/Ez ê dikime). Reşwî ji yê standardê pirtir bo zayend ferq tîne, hem jî li dema pêşî (Ez ê bikim (Nêr) ez a bikim (Mê)). Dema pêşî jî formên cuda hene (Ezêk bikime (I will be doing it) û ez ê/a bikim (I will do it))
:::Ev di modûlê têhel bê? [[Bikarhêner:Kurdanparez|Kurdanparez]] ([[Gotûbêja bikarhêner:Kurdanparez|gotûbêj]]) 22:09, 8 tîrmeh 2026 (UTC)
== WF:Xebat ==
Min sayfeya [[WF:Xebat]] çêkir, xeletiyên ku hûn ferq dikin ji kerema xwe lê zêde bikin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:35, 15 tîrmeh 2026 (UTC)
== Modul:quote ==
@[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Bikarhêner|Bikarhêner]], @[[Bikarhêner:Keyomerd|Keyomerd]], @[[Bikarhêner:Ferhengvan|Ferhengvan]] Merheba, ez modula îngilîzî ya jêgirtin û çavkaniyan li gorî şablonên {{ş|jêder}} format dikim û ji bo ku hertişt wekî formata me ya niha be, gelek serê min diêşe. Ez dibêjim bila em dev ji formata niha berdin wekî ya îngilîzî bi kar bînin ji ber ku gelek xisûsiyetên îngilîzî hene ku yekî dikare biemilîne. Hûn ê bibêjin niha ji kû hat bîra tê, min got [[Wîkîferheng:Xebat#MediaWiki:Gadget-start.js|start.js]] nû bikim û min dît otomatîk çavkanî bi riya [[mw:Citoid]]ê bi riya DOI, ISBN û lînk tê çêkirin, min got wiya jî li skrîptê îlawe bikim loma min [[Wîkîferheng:Xebat#Mediawiki:Gadget-citoid-helper.js|Mediawiki:Gadget-citoid-helper.js]] hazir kir lê hin parametreyên Citoidê kêm bûn, min got ka wana rast bikim, min dît formata me ya niha ti standard bi kar nayîne tenê parametreyan bi virgulê li hev dixe.
Ez dibêjim formata îngilîzî baştir e, hem ne îtalîk e ku bi hêsanî tên xwendin, hem jî tarîx û çavkanî herî pêşî tên nîşandan ku ji bo peyitandinê bo min muhîm e. Modula îngilîzî de hema bêje her tişt hatiye çêkirin, eger em rûnin tenê yên lazim li şablona çavkaniyên xwe binivîsin ew ê gelek wext bistîne. Eger em modula îngilîzî bi kar bînin, em ê hem karibin şablonên îngilîzî bi hêsanî û rast kopî bikin hem jî kurdîkirina parametreyan gelek hêsan e. Fikir? --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:20, 24 tîrmeh 2026 (UTC)
: Ji bo miqayesekirinê bnr. [[:en:Template:quote-book]] / [[Şablon:jêder-kitêb/ceribandin]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:32, 24 tîrmeh 2026 (UTC)
::Bi min bila yê mewcûd jî bimîne, ew jî şiklen xweş û baştir e. Feqet bi min jî yên îngilîzî rehettir in, eger rastkirina yê mewcûd zehmet be, em rasterast wan ji xwe re bînin û tercime bikin. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 09:41, 24 tîrmeh 2026 (UTC)
:::Ez êvarê ve dixebitim, min nêzîk kiribû lê min got belkî hûn qane bibin lê xuya ye hûn ê hîn serê min gelek biêşînin {{=D}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 09:59, 24 tîrmeh 2026 (UTC)
::::@[[Bikarhêner:Bikarhêner|Bikarhêner]] û @[[Bikarhêner:Ghybu|Ghybu]] Eger îtîrazek tinebe, ez ê îtalîk ji jêgirtinê rakim... Jixwe bi riya [jêgirtin] dikare were veşartin û her daim bi * dest pê dike loma bi hêsanî tê fêmkirin û xwendin rihettir dibe. Bnr. [https://ku.wiktionary.org/w/index.php?title=W%C3%AEk%C3%AEferheng:ceribandin/nim%C3%BBne&oldid=6277132#L%C3%AAker_2 ceribandinê] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:13, 24 tîrmeh 2026 (UTC)
== Request for comment (the future of Abstract Wikipedia) ==
<bdi lang="en" dir="ltr" class="mw-content-ltr">
Apologies if this has not yet been translated into your wiki's language. {{int:Please-translate}}
You are invited to voice your opinions in a [[:m:Requests for comment/The future of Abstract Wikipedia|request for comment about the future of Abstract Wikipedia]]. {{Int:Feedback-thanks-title}}
[[:m:User:Kowal2701|Kowal2701]] ([[:m:User talk:Kowal2701|talk]]) 12:25, 24 tîrmeh 2026 (UTC)
</bdi>
<!-- Message sent by User:DreamRimmer@metawiki using the list at https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=30513860 -->
== ''mê'' yan ''nêr'' li gorî maneyê / ''mê'' yan ''nêr'' (bikaranîn dudil e) ==
[//ku.wiktionary.org/w/index.php?title=xelat&diff=prev&oldid=6291766]: Mixabin pirr bikarhêner şûnda parametreya <code>z=m/n</code> ('' m yan n li gorî maneyê'') <code>z=mn</code> (''m yan n (bikaranîn dudil e)'') bi kar tînin ([[Şablon:navdêr#Parametre]]) ji ber ku di nav her du nivîsê de pir ferq nebînin. Nizanim em ê dîsa parametreya <code>z=nt</code> (''nêtar'') çêkin, wekî berê: [//ku.wiktionary.org/w/index.php?title=W%C3%AEk%C3%AEferheng:D%C3%AEwan/ar%C5%9F%C3%AEv_2019&oldid=6104681#Zayend]. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 00:17, 28 tîrmeh 2026 (UTC)
:Merheba {{r|Ghybu}} {{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|kelîme|c=mn}}</nowiki>}}
Ya din jî; {{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|kelîme|c=m/n}}</nowiki>}}
Tu dixwazî em wana berevajî bikin? Not: nêtar ji bo kurmancî nabe, mn û m/n baş in. Berê ji ber ku m/n tinebû, her kes li gorî parametreyên heyî dixebitî. Niha hene bi min problem nîne eger em berevajî nekin.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 05:32, 28 tîrmeh 2026 (UTC)
: Bi min ev format baştir e:
{{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|kelîme|c1=m|c1etîk=Mêrdîn|c2=n|c2etîk=Dihok}}</nowiki>}}
Yan jî:
{{demo|sep=wisa xuya dibe:<br>|<nowiki>{{navdêr|ku|zayend|c1=n|c2=m|c1ref={{Jêgirtin/Celadet Alî Bedirxan/HAWAR Cild 1 Hejmar 1-23 (1932-1933)/1998|hejmar=4|sal=1938}}|c2ref={{Zana Farqînî}}}}</nowiki>}}
{{çavkanî}}
:--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 05:49, 28 tîrmeh 2026 (UTC)
::Feqat em dikarin li şûna {{param2|c|m/n}}, {{param2|c|mn?}} yan {{param2|c|mn!}} çêkin ji bo ku neyên tevlihevkirin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 06:00, 28 tîrmeh 2026 (UTC)
:::Ez jî dizanim ku "nêtar ji bo kurmancî nabe" ([//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj%3Afikirmend&diff=3063789&oldid=3063526]) jixwe min "nêtar" kiribû "[//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj:fikirmend&diff=prev&oldid=3063788 mê an nêr li gorî bikaranînê]". Feqet nizanim çima rind nayê fêm kirin: Ferhengvan jî ew parametreyê bi awayekî rast bi kar nayîne [//ku.wiktionary.org/w/index.php?title=Got%C3%BBb%C3%AAj%3Areh&diff=6235991&oldid=6235985]. {{ping|Bikarhêner}} ? Min heta niha pirr gotar serrerastkir... Em ê hertim kontrol bikinê: pêşta problemeke vitira tine bû :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:13, 28 tîrmeh 2026 (UTC)
::::Bi rastî kî li vira parametreyên ku te li jor nivîsandine bi kar tîne {{=D}} ? Ji bîr meke em li ser wîkîferhenga kurdî ne... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 15:39, 28 tîrmeh 2026 (UTC)
:::::Ya muhîm hebûna sîstemekê ye, heta niha ti sîstemeke baş nehatiye çêkirin û ti rê nehatiye dayîn ji bikarhêneran re ku hîn bibin, hêdî hêdî em ê çi ji destê me were, çêkin û hîn bikin. Bi min atolyeyek lazim e em hin tiştan ji bikarhênerên din re hîn bikin. Mîsal min <code><nowiki>{{subst:beralîbike}}</nowiki></code> li wîkîpediyayê çêkir û ji bikarhênerekî re nîşan da çawa tê bikaranîn, wî dest bi bikaranînê kir. Ji ber ku bikarhênerekî mobîlê ye, nikaribû bi tenê serê xwe beralîkin çêke her daîm alîkarî ji kesên din dixwast ku pir carî ti kes nedihat. Însanên me ji aliyê teknîkî ve baş nebin jî, wextê bi riyeke baş îzah dikî, fam dikim şikir ji xwedê re.
:::::Welhasil, [https://ku.wiktionary.org/w/index.php?title=reh&diff=prev&oldid=6291839 reh] çêbû? Eger tu nabêjî nêtar be, min daxwaza te fam nekir. Tu çi dixwazî em çawa bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 15:58, 28 tîrmeh 2026 (UTC)
::::::Nivîs dîsa "''mê yan nêr li gorî maneyê''" be (kategorî jî) feqet di nav parametreyê de <code>mn</code> neyê nivîsandin. Parametre wekî {{param2|z/c|nt}} bisekiniyana (an jî navekî din "g" an "c") feqet nivîs û kategorî bihata guhertin... Herwiha profîlên bikarhênerên ku tên vira wekî en.wiki nînin: li vir zêde namînin û tiştên ku hu dikin jî ji bîr dikin. PS: Di zimanê peştûyî de jî (nêzîkî zimanê kurmancî ye) peyvên "mê an nêr" (''common gender'') hene [[:en:Category:Pashto nouns with multiple genders]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 17:28, 28 tîrmeh 2026 (UTC)
:::::::"g", "c", "nt" gî behsa cureyekî xisûsî dikin loma nabin, feqat di nav [https://ku.wiktionary.org/w/index.php?title=Modul:r%C3%AAziman&oldid=6115355#L-306 Modul:rêziman] de koda me "mn" otomatîk dike "mnmane" min ji bo back-compatiblity wisa kiribû lê ya rast "mnmane" ya, em "mn" ji bo kurmancî rakin, hemû "mn" bikin "mnmane" û "m/n" jî rakin û bikin "mndudil", nabe? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:44, 28 tîrmeh 2026 (UTC)
::::::::OK, bi min baş e:) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 18:18, 28 tîrmeh 2026 (UTC)
:::::::::Îmkan heye şablona tewandinê jî wisa bikî ku hem di qismê tewandinê de hem jî aliyê rastê were bikaranîn? Wekî me [[Wîkîferheng:Dîwan/2026#Beşa_Tewandin_bo_kurmancî|li vir]] got? Wextê gelek dirêj be yan mndudil be, em dikarin bixin qismê tewandinê bi şiklê "ya mêr" û "ya nêr". Wekî din yên biçûk û standard bila li aliyê rastê bimînin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 18:54, 28 tîrmeh 2026 (UTC)
::::::::::Erê bi parametreya {{param2|hêl|çep}} tê çêkirin. Belkî bi JSê tiştekî vitra jî tê çêkirin: dema ku tablo pirr fireh ye (>450px) tablo wekî "veşartî" xuya bike...
::::::::::"''Wekî din yên biçûk û standard bila li aliyê rastê bimînin?''": '''Aliyê rast:''' Dema ku tu mînakan dixwînî bi hêsanî tabloya tewandinê jî seh dikî (pedagojîk e). '''Bin beşa Tewandinê:''' 1) Ji bo mobilan rind e, tablo ne ser maneya peyvê ye. 3) Şûnda maneyan direj dibe 3) Wêne baştir xuya dikin ji ber ku ne bin tabloyê ne. '''Encam''': yek pratîk e, yek jî pedagojîk e [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 19:27, 28 tîrmeh 2026 (UTC)
:::::::::::Di bin beşa Tewandinê de baştir xuya dike... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:28, 28 tîrmeh 2026 (UTC)
::::::::::::Erê {{=D}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:29, 28 tîrmeh 2026 (UTC)
:::::::::::::Feqat lazim e yên mezin wekî [[mustensîx]] di nav qutîyê de bê wekî [[:en:heval]] di mobîlê de ya me sayfeyê fireh dike, ya îngilîzî de dikarî qutîyê bişemitînî [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:44, 28 tîrmeh 2026 (UTC)
::::::::::::::Formata herî xweş [https://ku.wiktionary.org/wiki/mustens%C3%AEx#Kurmanc%C3%AE] resm jî lê tê tablo jî di cihê xwe de ye. Wekî din wextê tablo li aliyê rastê ye însan naxwaze resmekî jî lê zêde bike. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:54, 28 tîrmeh 2026 (UTC)
:::::::::::::::''overflow'' bi tagên "div"-an rind tên çêkirin. Em ê tabloyên ''NavFrame'' bi kar bînin... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:06, 28 tîrmeh 2026 (UTC)
::::::::::::::::Eger class inflection-table bi kar bînî, bi [[MediaWiki:Gadget-defaultVisibilityToggles.js#L-43]] ê ku dixwaze dikare gîya veşêre an nîşan bide. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:11, 28 tîrmeh 2026 (UTC)
:::::::::::::::::Min fêm nekir, biryara we çi ye? Hemû bin beşa Tewandinê? an jî herdu? Li gor wê şablon tê guherandin. Bi min ferq nake, her du jî baş in... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:19, 28 tîrmeh 2026 (UTC)
::::::::::::::::::Me [[#Beşa Tewandin bo kurmancî|li jor]] gotibû bila hemû di beşa Tewandinê de bin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:21, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::Erê, min xwand Bikarnêner tiştekî din gotibû... Tu bi botê çêdikî? Bi botê hemû tabloyan bê parmetreya "hêl" bike bin beşa "Tewandin"-ê. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:30, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::Va rabim botekê hazir bikim. Bi qasî min jê fam kir, tam nabêje hemû nekin, nabêje hemû bikin jî. Lê em hemû bikin çunkî du kes got erê. Cihê Tewandinê piştî Bi alfabeyên din û Formên alternatîv be an jî beriya wan piştî maneyê (piştî wajeya klasîk) be? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:38, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::Eger di yekcarê de nayê çêkirin bi parametreya "hêl" ve çêke. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:42, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::[https://linkcount.toolforge.org/?project=ku.wiktionary.org&page=%C5%9Eablon%3Aku-tew%C3%AEn-nav 27 hezar] car tê bikaranîn, Eger behsa wextê dikî, ne problem e, eger behsa "tenê yên fireh bixin tewandinê" wê carê yên mê û nêr bixim? Te cewaba pirsê cihê tewandinê jî neda? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:48, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::::Lojîk dibêje ku piştî bi "alfabeyên din", "formên alternatîv" û "Ji wêjeya klasîk" [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:55, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::::Feqet tabloya tewandinê dûr dikeve... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:00, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::::::Bi min "Bi alfabeyên din" bixin piştî Bilêvkirinê çûnkî @[[Bikarhêner:Ferhengvan|Ferhengvan]] pir caran ji bo nîşandana dengî alfaba erebî bi kar tîne, h3 rengê teal tenê ji bo "Navdêr, Lêker hwd." bi cssê bi kar bînin [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/vector-2022.css&diff=prev&oldid=6241199 wekî wisa lê berevajî], Piştî "Ji wêjeyê/klasîk" em tewandinê deynîn, "Formên alternatîv" piştî Tewandinê be û îro nekin, eger dixwazî di ceribandinê de tabloya nû hazir bike, em hefteyek li hêviya hevalên din bisekinin, eger îtîraz nehat, em çêkin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:15, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::::::Beşa "Bikaranîn" jî heye... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:28, 28 tîrmeh 2026 (UTC)
:::::::::::::::::::::::::::Piştî Bikaranînê bnr. [[:en:Wiktionary:Entry_layout#Headings_after_the_definitions]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:37, 28 tîrmeh 2026 (UTC)
::::::::::::::::::::::::::::(h3) Bilêvkirin, Bi alfabeyên din, Sinifa rêzimanî,
::::::::::::::::::::::::::::(h4) Ji wêjeyê/klasîk (divê were xistin bin maneyê), Bikaranîn, Tewandin, Formên alternatîv, Hevmane, Nêzîk, Dijmane, Jê, Têkildar, Etîmolojî (eger du sinifa rêzimanî ji eynî kokê hebe h3) Dûnde, Binêre herwiha, Werger [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:40, 28 tîrmeh 2026 (UTC)
{{outdent|::::::::::::::::::::::::::::}} {{r|Ferhengvan|Bikarhêner|Keyomerd|Zerwanda|Kurdanparez}} Fikir? --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:42, 28 tîrmeh 2026 (UTC)
:"Bi alfabeyên din" beşeke pirr hewce nîne, niha beşa "mane" li ser rûpelê dûr dikeve. Bi min "Bîlêvkirin" > Mane > Ji wêjeya klasîk (wekî mînak e) > Bikaranîn > Tewandin > Bi alfabeyên din > Formên alternatîv > ... Divê beşên ku herî zêde tên xwastin werin "ronîkirin". [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 03:07, 29 tîrmeh 2026 (UTC)
::''[[bileks|Bîl'eks]],'' "Bi alfabeyên din" gelek muhîm e, ev ji bo kurmancî "formên alternatîv"-a wîkiya îngilîzî ye, başûrî tenê bi alfaba erebî dinivîsin û wextê kelîmeyek digerin çawa zanibin hatin kîjan kelîmeyê? Bi kirîlî ne lazim e lê bi erebî mecbûrî ye. Ji bo nettir bikin, lazim e em beşa "Bi alfabeyên din" baştir bikin. Mane hinek li jêr be ne muhîm e, wîkiya îngilîzî de jî gelek car lazim e herî jêr ji bo dîtina maneyê. "Ronîkirin"/teal xelet tê famkirin, sankî "qismê sereke (h3) lazim e wê be û qismên din werin xistin binê wê" tê famkirin loma em tenê Mane ronî bikin bes e, ka [https://ku.wiktionary.org/w/index.php?title=Bikarh%C3%AAner:Wikihez/common.css&oldid=6291927 vê cssê] biceribîne û dîsa fikrên xwe bibêje. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 07:20, 29 tîrmeh 2026 (UTC)
:1. '''Li ser cinsîyetê:''' Bi min, em malûmatên ekstra yên wek ''"li Dihokê nêr, li Serhedê mê"'' (Serhed:m|Dihok:n) li qismê ''"Bikaranîn/Emilandin"''ê bidin baştir e. Kelîme di ferhengan de wek form û cinsîyet bi halê standard cih digirin, eger li mintiqayek cuda be ew cudahî li qismê "Bikaranîn/Emilandin"ê wek malûmatek ekstra cih bigire çêtir e. Ferhenga ku em vê gavê ji bo standardkirinê esas digirin ''"Ji bo Rastnivîsînê Ferhenga Kurdî (Kurmancî) - Tirkî ya Nû"'' de jî bi yek cinsîyetê cih dane kelîmeyan. Ji xeynî wê di ferhenga standardkirinê ya Weqfa Mezopotamyayê de jî ew kelîme bi yek cinsîyetê cih digirin. Tiştekî din jî bêjim, eger em şablonê wek "mndudil" bi nav bikin mimkin e ku rê bide şaşîyan. Çimkî gava mirov wê dibîne, mirov dibêje qey li ser cinsîyeta kelîmeyê dudilîyek heye, bi qenaeta min dudilîyek bi wî şiklî nîne. Divê her kelîme xwedî cinsîyetekê bin û îstîsnayên mintiqayî -ger were xwestin- ekstra were nîşandan. Lewma bi min halê mewcûd baş e. 2. '''Li ser şablonên tewandinê:''' Ger şablonên tewandinê di xuyabûna mobîl de bibin sedema xirabîyê, em wan şablonan ji bo mobîlan têxin qismê "Tewandin"ê. 3. '''Li ser rêzkirina qisman:''' Bi min divê mane li pêş be û ne hewce ye ku qismê "Bi alfabeyên din" derxin pêş. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 13:20, 29 tîrmeh 2026 (UTC)
::Li ser cinsiyetê erê, eger di ferhenga rastnivîsînê de cinsiyet hatibe nivîsandin ne hewce ye em "mndudil" binivîsin li qismê Bikaranînê behskirin bes e, lê eger tê de ev kelîme tinebe û di ferhengên din de jî dudiliyek li ser bikaranîna cinsiyetê hebe, wê demê "mndudil" lazim e bikaranîn çunkî wîkîferheng lazim e li gorî çavkaniyan were nivîsin. Li ser tewandinê ne mimkûnê em di mobîlê de di qismê Tewandinê de, di sermaseyê de em li qismê maneyê bixin loma lazim e em bi yek şiklî li qismê Tewandinê hemû bixin çêtir e. Li ser "Bi alfabeyên din" ji bo min zêde muhîm nîne, feqat dîsa jî ez dibêjim lazim e were pêşxistin. Tiştekî wisa jî heye eger di sayfeyekê de ji yekî zêdetir sinifên rêzimanî hebe wê demê lazim e Bi alfabeyên din bi sê = were bikaranîn, û cihê wê ne li dawiyê lê divê piştî Bilêvkirinê be.--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:45, 29 tîrmeh 2026 (UTC)
:Bi a min beşa çevandinê li serê rûpelê be beşa maneyê pir dûrî çavan dikeve. Li jêrtir be çêtir e. [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 06:01, 31 tîrmeh 2026 (UTC)
::{{r|Wikihez}} Bi min di nav tabloyê de parametreya yekem jî were rakirin, ne hewce ye bi <nowiki>{{PAGNAME}}</nowiki> tê çêkirin. Di rûpelên din de jî (ne yên sereke) bi parametreya {{param2|nav}} were nivîsandin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 11:07, 31 tîrmeh 2026 (UTC)
:::Erê, maqûl e. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:23, 31 tîrmeh 2026 (UTC)
::::cinsiyet jî m, n, mn be bes e ma bila wekî {{ş|navdêr}} be. cuda nebin [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 11:41, 31 tîrmeh 2026 (UTC)
:::::@[[Bikarhêner:Bikarhêner|Bikarhêner]], @[[Bikarhêner:Keyomerd|Keyomerd]], @[[Bikarhêner:Ghybu|Ghybu]] "Bikaranîn" an "Notên bikaranînê" ? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:47, 31 tîrmeh 2026 (UTC)
:::::Wekî {{r|Bikarhêner}}î gotî zayenda peyvnan gorî devokan jî diguhere, divê ew jî bêne dîyarkirin. Herwiha beşa lêvandinê a ji bo pîtên cêwî pir tê paşguhkirin. Divê jê re cîyekî cihê bê hilanîn. Û ew jî wek zayendê bi devokan diguhere. Meselen tya pêşîn a "tişt" ê li ba me nerm e lê li deverên din hişk e. Û ji devla reqê (wek t-ya req) hişk bi kar bê çêtir e, jixwe her kes wê bi kar tîne nizanim req ji ku derketîye. [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 14:05, 31 tîrmeh 2026 (UTC)
:
<syntaxhighlight lang="json">
"subsections": [ "Ji wêjeya klasîk", "Ji wêjeyê", "Bikaranîn", "Tewandin", "Bi alfabeyên din", "Formên alternatîv", "Kurtkirin", "Sembol", "Navê zanistî", "Hevmane", "Dijmane", "Jê", "Nêzîk", "Jornav", "Jêrnav", "Têkildar", "Etîmolojî", "Dûnde", "Binêre herwiha", "Bi zaravayên din", "Werger", "Qafiye", "Anagram" ]
</syntaxhighlight>
{{r|Keyomerd|Ghybu|Bikarhêner}}Li gorî nîqaşa jor û [[Alîkarî:Formata nivîsînê]] min ev lîste hazir kir lê tê de hin kêmasî hene, "Bide ber" tê de tine ye, li kû derê bixim? Mihtemelen beşên din jî hene ku haya min ji wan nîne. Pirsek din, beşên nestandard wekî [https://ku.wiktionary.org/w/index.php?title=berf&diff=prev&oldid=6292461] çi bikim? Min got li dawiyê bixim berî Wergerê lê sankî piştî Wergerê be çêtir e?--[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 16:24, 31 tîrmeh 2026 (UTC)
:@[[Bikarhêner:Bikarhêner|Bikarhêner]], @[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Keyomerd|Keyomerd]] Eger îtîraz an fikrekî din neyê, ez ê beşên nestandard bixim beriya "Bi zaravayên din" eger ev beş tinebe, beriya "Werger". Ez ê "Nêzîk" jî bixim piştî Hevmane û li ser [[Alîkarî:Formata nivîsînê]] "rast" bikim. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:50, 1 tebax 2026 (UTC)
::Ez ê "Bikaranîn" jî bikim "Notên bikaranînê" [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:03, 1 tebax 2026 (UTC)
:::Jixwe bot hema bêje hazir e, eger dûre kesek rabe fikrekî din li pêş bixe, em dikarin biguherînin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:04, 1 tebax 2026 (UTC)
::::Ev hinek zêdetir problematîk e feqat ez ê "Ji wêjeyê/a klasîk" jî bikim "Ji edebiyatê"/"Ji edebiyata klasîk". Tabî eger fikrekî din hebe, ne problem e. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:05, 1 tebax 2026 (UTC)
:::::Na, bi min "wêje" bimînî... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 01:22, 1 tebax 2026 (UTC)
::::::Ok {{=D}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:23, 1 tebax 2026 (UTC)
:::::::"Bide ber" pêşiya "Binêre herwiha"
:::::::"Jê" pêşiya "Têkildar" piştî jornav, jêrnav [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:41, 1 tebax 2026 (UTC)
:::::Ji bo min "'''edebîyat'''" çêtir e, bila ne wêje be. "wêje" kelîmeyeke şaşçêkirî ye. Mahîyeta qisman (kîjan qism bi kêrî çi tê) ji navên wan nayê famkirin. "Binêre herwiha" û "Herwiha" tevlihev dibû, baş e we rast kirîye. Feqet mahîyeta wê qismê ("Binêre herwiha") hê jî ji navê wî nayê famkirin. Jixwe ger em bixwazin bi wî şeklî binivîsin jî divê em bikin "Herwiha binêre", ew jî zid hatîye nivîsandin. Ji xeynî wê, "Navê zanistî" na, "'''Navê îlmî'''" çêtir e. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 22:51, 2 tebax 2026 (UTC)
::::::Bi min beşa Navê zanistî werin rakirin, wekî en.wikt em li dawiyê yan li pêşiya maneya bi şablona {{ş|q}} binivîsin yan jî wê şablona îngilîzî çêkin ku enwikt bi kar tîne.
::::::Li wikipediyayê min çend car dîtiye Penaber49 jî "Binêre herwiha" dike "Binêre" loma guhartina wê wekî "Herwiha binêre" fikrekî maqûl e.
::::::Herwiha tu ji bo Bêhtir xwendin çi dibêjî [[Special:PermanentLink/6323554#Binêrê_herwiha]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:29, 3 tebax 2026 (UTC)
:::::::Ez dibêjim bila '''''"Xwendina Zêdetir"''''' be. -- [[Bikarhêner:Bikarhêner|Bikarhêner]] ([[Gotûbêja bikarhêner:Bikarhêner|gotûbêj]]) 05:03, 6 tebax 2026 (UTC)
:::Em çima peyva notê bi kar tînin, ma "nîşeyên bikaranînê" ne çêtir e? [[Bikarhêner:Keyomerd|Keyomerd]] ([[Gotûbêja bikarhêner:Keyomerd|gotûbêj]]) 06:04, 1 tebax 2026 (UTC)
:Rêzkirina dawî:
<syntaxhighlight lang="json">
"subsections": ["Ji wêjeya klasîk", "Ji wêjeyê", "Tewandin", "Notên bikaranînê", "Bi alfabeyên din", "Formên alternatîv", "Kurtkirin", "Sembol", "Navê zanistî", "Hevmane", "Nêzîk", "Dijmane", "Jornav", "Jêrnav", "Jê", "Têkildar", "Etîmolojî", "Dûnde", "Bide ber", "Binêre herwiha", "Bi zaravayên din", "Werger", "Qafiye", "Anagram"]
</syntaxhighlight>
Bnr. [[Wîkîferheng:Bot/Balyozbot/tercîh.json]] --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:44, 1 tebax 2026 (UTC)
:Bi botê ez ê tenê binebeşên sinifên rêzimanî yên bi 4 = biguherînim, yên din lazim e bi destî werin guhartin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 01:46, 1 tebax 2026 (UTC)
::@[[Bikarhêner:Ghybu|Ghybu]] Bota rêzkirina binebeşan û cihguhartina Tewandinê hema bêje hazir e. Param {{param|hêl}} bi kar bînim (eger wisa be, em kategoriya "ku-tewîn-nav bê param hêl" çêkin daku hemû xilas bikin) yan jî şablonên heyî bikim ku-tewîn-nav/kevn û piştî kontrolkirinê hemû bikin nû? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:26, 1 tebax 2026 (UTC)
:::Bi parametreyê {{param2|hêl}} tu ê paşê wan dîsa rakî... Herwiha min va [https://ku.wiktionary.org/w/index.php?title=abes%C3%AEv&curid=43641&diff=6294632&oldid=6244736] fêm nekir, me çima Tabloya tewandinê rakir :)? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:26, 1 tebax 2026 (UTC)
::::Ji bo ku rê bidin tiştên wisa :D Em ê li kû derê deynîn examples?? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:28, 1 tebax 2026 (UTC)
:::::Tablo hazir bin, em dest pê bikin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:28, 1 tebax 2026 (UTC)
::::::Sernav tê rakirin, mê bikim "m"? yan bila bimînî? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:28, 1 tebax 2026 (UTC)
:::::::Tablo hatiye çêkirin bi [https://ku.wiktionary.org/wiki/Modul:ku-tew%C3%AEn-nav/ceribandin vê] kodê her du parametre jî tên bikaranîn mê/m, nêr/n û mê û nêr/mn... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:41, 1 tebax 2026 (UTC)
:::::Ez nizanim çi bibêjim... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:43, 1 tebax 2026 (UTC)
::::::[https://ku.wiktionary.org/w/index.php?title=abes%C3%AEv&diff=prev&oldid=6294657] ok?
::::::Bi min li şûna {{param|hêl}} em {{ş|ku-tewîn-nav/nû}} bi [[Modul:ku-tewîn-nav/ceribandin|modula ceribandinê]] çêkin, paşê navê şablonê biguherînin baştir be, çunkî [[Special:PermanentLink/6294527#L-337|modula nû]] ne backward compatible e. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:56, 1 tebax 2026 (UTC)
:::::::Em ê dîsa paşê nivîsa "/nû" rakin. Bi botê 22000 rûpel di 2 rojan de tê guherandin? Eger wisa ye (bi min pirr nîne), bi navê rast biguhrîne, bila di nav rûpelên ku nehatine guherandin xeletî hebin... Dîsa jî tu dizanî, bot te çêkiriye û tu sererast dikî :) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:17, 1 tebax 2026 (UTC)
::::::::Min gelek caran dîtiye, bi botê tiştekî hatiye guhartin lê ji ber ku rind nehatiye kontrolkirin, şablona kevn bi halê xwe yê kevn maye. Tirsa min ew e. Ji ber ku formata hemû sayfeyan ne eynî ne, ez dibêm bot gelek ji wan derbas bike. Bi vî awayî em ê {{ş|ku-tewîn-nav}} sêwî bihêlin û piştî bot xilas kir, em ê bi dil rehetî karibin şablona nû rakin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:26, 1 tebax 2026 (UTC)
:::::::::Rast e! {{param|g|2}} :)) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:32, 1 tebax 2026 (UTC)
::::::::::Mîsalên wan gelek in :) [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:36, 1 tebax 2026 (UTC)
:::::::::::Eger karibî hinek round edges bixî û rengê background a "Tewandina X" biguherînî, gelek moderntir û xweştir xuya bike :) [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:25, 1 tebax 2026 (UTC)
::::::::::::''Simplicity is best'' / ''Fewer choices mean less worry:'' felsefeya min e:) Me tabloyê wekî en.wîkî kir [https://ku.wiktionary.org/wiki/%C5%9Eablon:tabloya-tewandin%C3%AA-ser {tabloya-tewandinê-ser}], tenê [//ku.wiktionary.org/wiki/Modul:ku-tew%C3%AEn-nav/ceribandin#L-362 reng] ({{param2|palette}}) tê guherandin (felsefeya wan e jî...). Bi min tiştekî pir rind çêkirine. Dîsa jî em dikarin (wekî berî) bi CSSê biguherînin. Ji bo çêkirina tabloyan min di rûpela şablonê de tiştên ku pirr hewce ne nivisandiye ji bo detayan jî rûpela en.wiki heye. Herwiha tabloyê li gor daxwaza we biguherînin û serrast bikin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 03:04, 2 tebax 2026 (UTC)
:::::::::::::PS: Şiklê tabloyê li vira tê guherandin [[Şablon:tewandin-ser/style.css]] [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 04:41, 2 tebax 2026 (UTC)
::::::::::::::Mala te ava tu ji heqê rengan gelek xweş derdikevî :)
::::::::::::::Ev felsefeya te gelek caran karê min pir zor dike {{=D}} en.witk gelek tiştî bi awayekî xweş çêkirine, ez jî heta ku wana adapte bikim, gelek êş dikşînim bnr. [[#Modul:quote]] û Şablonên etîmolojiyê [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 10:47, 2 tebax 2026 (UTC)
:::::::::::::::Bot xilas kiriye, Baş e [[Special:PermanentLink/6323268#Şablona_ku-tewîn-nav_ne_li_binê_Serenav_an_Navdêrê_ye|zêde]] xeletî derneketin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:35, 2 tebax 2026 (UTC)
::::::::::::::::Gelek spas! [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:42, 2 tebax 2026 (UTC)
:::::::::::::::::Niha şablon sêwî ma ji xeynî gotûbêjan, ew jî dûrê rast bikim, tu dikarî modulan rojane bikî? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:28, 3 tebax 2026 (UTC)
::::::::::::::::::Spas. Ev rûpel pirr dirêj bû... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 00:33, 3 tebax 2026 (UTC)
:::::::::::::::::::Erê, rêzkirina beşan ez ê bikim yek satir, lê dîsa jî zêde fêde nede, fikrekî din heye? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 00:38, 3 tebax 2026 (UTC)
::::::::::::::::::::@[[Bikarhêner:Ghybu|Ghybu]] [https://ku.wiktionary.org/wiki/W%C3%AEk%C3%AEferheng:D%C3%AEwan#c-Wikihez-20260801005000-Wikihez-20260731162400] û [https://ku.wiktionary.org/w/index.php?title=gur&curid=5384&diff=6328092&oldid=6328089] ? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 14:00, 7 tebax 2026 (UTC)
== SEO ==
Merheba @[[Bikarhêner:Ghybu|Ghybu]] Wextê ''jiyannas'' bi şiklê "jiyannas" lê digerî di nav netîceyên googlê de [[jiyannas]] derdikeve? Min hem bi Chromeê û hem jî bi VPNê ceriband lê [[jiyannaseke]] derdikeve feqat [[jiyannas]] dernakeve. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:31, 2 tebax 2026 (UTC)
:"zengilok" derdikeve [[zengilok]] [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:38, 2 tebax 2026 (UTC)
:Min jî tenê [https://usercontent.one/wp/portal.arsivakurd.org/wp-content/uploads/2024/08/Bernamegeh-4.pdf?media=1709107483 va] (''Berna Megeh'', Jan Dost, OCCO MAHABAD) û https://portal.arsivakurd.org/wp-content/uploads/2022/06/Xwebun-34.pdf va] (''Xwebûn'', hj.34) dît herwiha ''Jihannasî'' jî heye... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:44, 2 tebax 2026 (UTC)
::Behsa çavkaniyan nakim behsa SEOyê dikim, çima [[jiyannas]] di netîceyan de dernakeve. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:49, 2 tebax 2026 (UTC)
:::Min fêm nekir, pirsa te çima Wîkîferheng dernakeve ye? [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 20:51, 2 tebax 2026 (UTC)
::::Erê çima sayfeya Wîkîferhengê ya [[jiyannas]] dernakeve feqat [[jiyannaseke]] derdikeve. Min du nimûne nivîsandin ka piştî mehekê em binêrin derkeve yan na. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:54, 2 tebax 2026 (UTC)
:::::Bi min dema ku motora googlê "jiyannaseke" (-eke bi kurdî ye) digere, ew peyv tenê di kurdî de heye ji ber vê yekî dide. Feqet "Jiyannas" di nav zimanên din de jî heye (belkî difikire ku ew xeletî ye.). Herwiha nivîsa bin "Jiyannas" li gor "jiyannaseke" biçûk e û li bin "biolog" hatiye nivîsandin:) Herwiya peyva "biolog" jî dide ew jî giridayî pirr peyvan e... Pirr parametre hene... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:09, 2 tebax 2026 (UTC)
::::::Wextê li "birakujî" dictionnaire digerî netîceya ewil rasterast fr.wikt e. Wana tiştekî kirine lê çi? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:13, 2 tebax 2026 (UTC)
:::::::"Trust Score" ? Herwiha peyva "birakujî" pêş Wîkîfehengê hatiye çêkirin. [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:21, 2 tebax 2026 (UTC)
::::::::Nizanim [[:en:Wiktionary:Votes/2023-08/Installing the WikiSEO extension]] heye lê [[:phab:T346590]] sekinî ye. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:27, 2 tebax 2026 (UTC)
:::::::::Erê, feqet lînkên û navên Wîkîferhenga fransî û îngilîzî di internetê de pirr tên parvê kirin. Wîkîferhenga fansî ferhengek derxistiye: [https://www.fnac.com/a13530183/Collectif-Le-dico-adapte-du-Wiktionnaire Le dico] (li ser Amazonê). Kî qala Wîkîferhenga kurdî dike? Ji ber vê yêke hertim pêş me ne. Daxwaza wan werin pêş malperên din... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:36, 2 tebax 2026 (UTC)
::::::::::[https://www.google.com/search?sca_esv=a854c327b7bb0786&q=%22W%C3%AEk%C3%AEferheng%22&tbm=nws&source=lnms&fbs=ABfTbFUDadgeu2mn4mYJ8iEZ1GUDDuwRa4um-2LNhBFWIpqZc7ZL_t3iAe0lB1D4hb_Ohp7yg8FO-XwZ7R-ba4YefvIQCF4Ra4wbUNQStQ8dVc6IK2vWHoXbgHLwJobq4HTNMksBhYHBmxw2hK9Sa4pHAI3I2Ovzox54EiEId7q7IoMJRkRlr-XDezqDqx33xDsZIWuHy-a_vqoqDlYrhNBbNeVEP9MwaA&sa=X&ved=2ahUKEwiz94Co9IKWAxXNUaQEHQJAAGYQ0pQJegQIGBAB&biw=1320&bih=583&dpr=1 Wîkîferheng] {{=D}} Li ser X û medyayên din de jî pirr qala Wîkîferhengê nakin... Bi rastî kî Wîkîfrhengê dixwîne? [https://pageviews.wmcloud.org/topviews/?project=ku.wiktionary.org&platform=all-access&date=yesterday&excludes=]... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:41, 2 tebax 2026 (UTC)
:::::::::::Haya ti kesî ji Wîkîferhengê nîne bi rastî loma pêşxistina SEOyê hewce ye. Ez dibêjim miheqeq fr.wikt tiştek çêkiriye ne mimkun e wextê heval dictionnaire binivîsî wiktionary derkeve bêyî çêkirina tiştekî. Not: Min ferq kir li ser fr.wikt wextê bi mobîlê tê dikevî, eger di sayfeyekê de du ziman hebe ya fransî otomatîk vedibe zimanê din veşartî dimîne. Fikrekî xweş e em jî çêkin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:21, 2 tebax 2026 (UTC)
::::::::::::Erê bila were çêkirin. Min gotûbêja wan li ser vê mijarê xwandibû, Wîkîferhenga fransî jî ne razî ye. Dema ku li ser Googlê tu peyvek diguherî Wîkîferhenga wan di bin Wîkîpediyayê û di bin malperên din de derdikeve. Û çend caran şûnda "Wiktionnaire" "Wikipédia" tê nivîsansin... Ew jî nizanin çi bikin :)) Niha dizanim ku en.wikt ji ne razî ye... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:37, 2 tebax 2026 (UTC)
:::::::::::::@[[Bikarhêner:Ghybu|Ghybu]], @[[Bikarhêner:Wikihez|Wikihez]]: Ez dibêjim rûpelên ku tenê form di wan de hene, divê <nowiki>__NOINDEX__</nowiki> bin. Wî çaxî, rêza wan nikare ji lemmayê bilindtir be ji ber ku wê nînbin. Ez dibêjim belkî îhtîmala derketina lemmayê bêhtir jî bibe heke netîceyên ku dişibin wê nînbin. Jixwe lemma wê derkeve heke yek li formekê bigere, ji ber ku di rûpelê lemmayê de tabloyên tewandinê hene û ev tên jimartin. [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 22:55, 2 tebax 2026 (UTC)
::::::::::::::@[[Bikarhêner:Guherto|Guherto]] Em dibêjin tenê form xuya dike ya sermade xuya nake tu dibêjî em formê noindex bikin {{=D}}
::::::::::::::Claude [[Special:PermanentLink/6323375|li vir]] dibêje ya ku Ghybu got rast e, ji ber ku frwikt gelek tê bikaranîn bêtir dikeve ber çavê google. Eger rojek Wikiseo li en.wikt were çêkirin, em jî bixwazin qet nebe kêrî tiştekî were.
::::::::::::::Em şablonek ji bo metadescription çêkin? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 23:09, 2 tebax 2026 (UTC)
:::::::::::::::@[[Bikarhêner:Wikihez|Wikihez]] Min got, ''Wî çaxî, rêza wan nikare ji lemmayê bilindtir be ji ber ku wê nînbin. Ez dibêjim belkî îhtîmala derketina lemmayê bêhtir jî bibe heke netîceyên ku dişibin wê nînbin.'' [[Bikarhêner:Guherto|Guherto]] ([[Gotûbêja bikarhêner:Guherto|gotûbêj]]) 23:10, 2 tebax 2026 (UTC)
:::::::::::Em jegirtinan lînk bikin? Bi vî sayî gelek sayfe lînk bide ser hev. Bi riya cssê em dikarin rengê tarî bikin da ku wekî lînk xuya nekin... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 17:39, 3 tebax 2026 (UTC)
::::::::::::Wextê jîwar ferheng yan jî boçik ferheng lê digerî rasterast Wîkîferheng dertê. Meselê hejmara bikaranîna eynî kelîmeyê di sayfeyê de ye. Em çiqas jêgirtin lê zêde bikin ewqas baştir dibe netîce :) Google AI Mode rasterast Wîkîferheng wek çavkanî nîşan û lînk dide loma kurmanc bi kar neyînin jî AI bi kar tînin baş e ... [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:24, 3 tebax 2026 (UTC)
:::::::::::::Êêêê Google AI Overview çi bi şikle "tarîxiyen" ferheng lê digerim wekî ku min li ferhengê qeyd kiriye gelek xweş îzah dike (ji ber ku hîn gelek nû ye netîceyan de Wîkîferheng dernakeve) Nimûneyên bikaranînê jî ji înternetê derdixe. Çi mana ferhengê nemaye... Em çi îşî dikin li vir :D [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:47, 3 tebax 2026 (UTC)
:::::::::::::Êdî Google jî nayê bikaranîn :)) Niha kî tere ser ''Stack Overflow'' û di nav belgeyên kodan de digere... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 21:47, 3 tebax 2026 (UTC)
::::::::::::::Erê welle, ez gelek car dibînim kesên derdora min hemen Gemini an Chatgpt vedikin, çi tiştê biçûk hebin, hemen pirs dikin, qet li ser Googlê jî lê nagerin :D [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 21:52, 3 tebax 2026 (UTC)
:::::::::::::::"êgsig ferheng" netîce nade feqat wexta "ornag ferheng" digerim rasterast wîkîferheng derdikeve li binê dibêje "Tewandina ornag. Zayenda nêr a binavkirî. Rewş, Yekjimar, Pirjimar. Navkî, ornag, ornag. Îzafe, ornagê · ornagên. Çemandî, ornagî · ornagan.Read more"
:::::::::::::::Meraq dikim guhartina cihê tewandinê çi netîce bide. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 22:21, 3 tebax 2026 (UTC)
::::::::::::::::Pêşta me tabloya Tewandinê vitira dinivîsand: [[ketin (Tewandin)]] Dma ku nav hat guherandin li ser Googlê tewandin winda bû...
::::::::::::::::Min tewandin:kirin geriya tabloya tewandina Wîkîferhengê dide. Êdî kes nê vira:) [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:38, 3 tebax 2026 (UTC)
:::::::::::::::::Tenê dema "niha" nivîsand. Min jî bi kurdî "dema bê jî binivîse" nivîsî: ew jî nivîsand... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 22:42, 3 tebax 2026 (UTC)
::::::::::::::::::[https://support.google.com/webmasters/answer/16908024?hl=en tê asteng kirin]... [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 02:07, 4 tebax 2026 (UTC)
:::::::::::::::::::kî dibêje? li wir tiştek wisa nabêje...? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 02:16, 4 tebax 2026 (UTC)
::::::::::::::::::::Va hatiye nivîsandin: "''Exclude my site's links and content from Search generative AI features: Your site's content is prevented from being visible to users in Search generative AI features, including being linked to within these features and helping with grounding AI responses in these features. You won't receive any traffic or impressions from these features. Learn more about what excluding your site means.''" [[Bikarhêner:Ghybu|Ghybu]] ([[Gotûbêja bikarhêner:Ghybu|gotûbêj]]) 02:23, 4 tebax 2026 (UTC)
== Moda tarî ==
Bi chrome û Firefoxê wextê Reng dikî "otomatîk", eger tarî be, tiştên bi reng xirab xuya dikin, lê wextê "tarî" hildibijêrî xweş xuya dikin. Min hemû js/css/Gadget betal kirin û ?safemode=1 ceriband, dîsa jî wextê "otomatîk" e, her tiştê tarî xirab e. Êdî nizanim problem li cem min e yan di Moda tarî de ye. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:15, 9 tebax 2026 (UTC)
== Formata jêgirtinan ==
Merheba hevalno {{r|Ghybu|Bikarhêner|Keyomerd|Kurdanparez|Guherto|Şêr}} Wekî min [[#Modul:quote|li jor]] jî gotiye, formata îngilîzî ji ya me baştir e. Her tişt di cihên xwe de ne. Ya me wexta çend tercime yan jî transliterasyon îlawe dikî, gelek tevlihev dibe. Berê me çavkaniyê bi amûra [[MediaWiki:Gadget-jeder.js]] kurt kiribû feqat ew jî ne tiştekî baş e ji ber ku gelek malûmat tên veşartin û kesên nû tên tenê sal û nivîskarê dinivîsin carinan ew jî ne tiştekî baş e. Em dikarin amûra jêderê wisa eyar bikin ku bêyî parentez bixebite û ewilî vekirî be, dûre ê ku dixwaze malûmatan kurttir bike. Eger em vî tiştî bi formata me ya niha bikin, jêgirtinên bi çavkaniyên dirêj dê gelek xirab xuya bikin.
Hûn dikarin li vir miqayese bikin ka kîjan baştir xuya dike:
# [[Special:PermanentLink/6329434|jêgirtina dirêj bi îngilîzî bi formata en.wikt]] vs. [[Special:PermanentLink/6329414|bi formata me ya niha]]
# [[Special:PermanentLink/6329439|jêgirtineke bi soranî bi formata en.wikt]] vs. [[Special:PermanentLink/6329437|jêgirtineke bi soranî bi formata me ya niha]]
Ez naxwazim xwe wisa nîşan bidim ku li ser eynî tiştî her daîm israr dike feqat bi ya min ev zarûriyeteke ji bo baştirkirina xwendina nimûneyan e. Loma ez li vir dengdanek li dar dixim, bila qerar çi be, em wisa bikin, dûre em dikarin amûreke nû çêkin ku li gorî tercîhên bikarhênerî formata en.wikt yan jî formata niha were bikaranîn.
Ji kerema xwe raya xwe li jêr bidin. [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:01, 11 tebax 2026 (UTC)
=== Dengdan ===
{{dengdan|destpêk=11.08.2026|dawî=18.08.2026}} <!-- kengî dengdan xilas bû vê şablonê {{dengdan/borî|destpêk=|dawî=}} bi kar bînin. -->
==== Bila formata niha bimîne ====
<!-- Li jêr '# {{erê}} ~~~~' binivîse ji bo raya erê. -->
==== Bila formata en.wikt were bikaranîn ====
<!-- Li jêr '# {{erê}} ~~~~' binivîse ji bo raya erê. -->
# {{erê}} [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:05, 11 tebax 2026 (UTC)
=== Gotûbêj ===
{{şirove}} Eger hûn bibêjin çima sal û çavkanî li herî pêş e sebeb ev e: Ji bo en.wiktê "attestion" yanî peyitandin bi riya emilandinên heqîqî pêk tê. Yanî eger di ferhengekê de ev kelîme derbas bibe ji bo wan ne muhîm e, ya muhîm emilandina di nav cumleyan de ye. Mîsal ew kelîmeyên ku tenê ferhengan de derbas dibin dixin [[:en:Appendix:English dictionary-only terms]]. --[[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 20:14, 11 tebax 2026 (UTC)
:@[[Bikarhêner:Ferhengvan|Ferhengvan]], @[[Bikarhêner:Bibliophile|Bibliophile]] û @[[Bikarhêner:Dûrzan|Dûrzan]] fikrê we çi ye li ser vê meseleyê? [[Bikarhêner:Wikihez|Wikihez]] ([[Gotûbêja bikarhêner:Wikihez|gotûbêj]]) 13:48, 12 tebax 2026 (UTC)
::Ez ji tiştên teknîk pirr fêhm nakim. Çewa baş be ên ku pispor in bila biryar bidin... [[Bikarhêner:Dûrzan|Dûrzan]] ([[Gotûbêja bikarhêner:Dûrzan|gotûbêj]]) 21:04, 12 tebax 2026 (UTC)
szwjq17g1tzsx51l0ybwxgh6y5lcv38
tarîxçî
0
1357406
6329927
6318445
2026-08-13T11:08:14Z
Wikihez
7344
6329927
wikitext
text/x-wiki
{{bnr-h|tarixçi}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|c=mn}}
# {{e|ku|meslek}} Kesê ku li ser [[tarîx]]ê dinivîse an lê dikole.<ref>{{Ç:Jaba:1879|تاریخچی<ts:tarikhtchi>|r=92}}</ref>
#: {{hevmane|ku|tarîxnas|dîroknas|dîrokvan|dîrokzan|mêjûnas|mêjûzan}}
#* {{jêder-kovar|ku|jêgirtin='''Tarîxçîkî''' Îngîlîz navê wî Arnold Tombey e, dibêje: "Tirk bi tarîxê nizanin, ku li wan teng bibe karin Hezretê Nebî Silêman û Qanûnî Siltan Silêman bikin yek, tenê ji navê wan."|kovar=Welat (Rojnameya Hefteyî)|sernav=TC dewletî û dewletên Tirkan yên nû|nivîskar=Musa Anter|hejmar=62|sal=1993|rûpel=7}}
#* {{jêder-kovar|ku|jêgirtin=Malzemeyê dîrokzan (yan jî dîroknas – zimanzanên kurd(!) hêj biryar nedane ku ew ji ”'''tarîxçî'''”yan re bibêjin dîrokzan yan dîroknas.) belgeyên rastîn û şîroveyên îlmî, zanîstî ne.|kovar=Agirî|sernav=Edebiyat û Dîrok|nivîskar=Loqman Polat|hejmar=61|sal=2007|rûpel=11}}
#* {{jêder-malper|ku|jêgirtin='''Tarîxçî''' û teorîsyenên Tirk, Ziya Gökalpê Diyarbekirî hosteyê ilmê xwe yê sosyolojîyê dihesibînin.|nivîskar=Omer Faruk Baran|sernav=Zewaca Ziya Gökalp û sosyolojîyeka sînesoj|url=https://www.botantimes.com/zewaca-ziya-gokalp-u-sosyolojiyeka-sinesoj/|malper=Botan Times|sal=2023}}
==== Tewandin ====
{{ku-tewîn-nav/nû|mê û nêr}}
==== Etîmolojî ====
Deyn ji {{deyn|ota|ku|tr=tarihçi}}. {{anlz|ku|tarîx|-çî}}.
==== Werger ====
{{werger-ser|kesê ku li ser tarîxê dinivîse an lê dikole}}
* {{Z|sq}}: {{W+|sq|historian}}
* {{Z|de}}: {{W+|de|Historiker|n}}, {{W+|de|Historikerin|m}}
* {{Z|az}}: {{W+|az|tarixçi}}
* {{Z|eu}}: {{W-|eu|historialari}}, {{W-|eu|historiagile}}
* {{Z|be}}: {{W-|be|гісто́рык|n}}, {{W-|be|гісто́рычка|m}}
* {{Z|bg}}: {{W-|bg|истори́к|n}}, {{W-|bg|истори́чка|m}}
* {{Z|my}}: {{W-|my|သမိုင်းပညာရှင်}}
* {{Z|cs}}: {{W+|cs|historik|n}}, {{W+|cs|historička|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|歷史學家|tr=lìshǐxuéjiā}}, {{W+|cmn|歷史家|tr=lìshǐjiā}}, {{W+|cmn|史家|tr=shǐjiā}}
* {{Z|da}}: {{W-|da|historiker|g}}
* {{Z|ar}}: {{W-|ar|مُؤَرِّخ}}, {{W-|ar|مُؤَرِّخَة|m}}
* {{Z|hy}}: {{W+|hy|պատմագետ}}, {{W+|hy|պատմաբան}}
* {{Z|eo}}: {{W+|eo|historiisto}}
* {{Z|et}}: {{W+|et|ajaloolane}}
* {{Z|fa}}: {{W+|fa|مورخ|tr=movarrax}}
* {{Z|fi}}: {{W+|fi|historioitsija}}
* {{Z|fr}}: {{W+|fr|historien|n}}, {{W+|fr|historienne|m}}
* {{Z|gl}}: {{W+|gl|historiador|n}}
* {{Z|ka}}: {{W-|ka|ისტორიკოსი}}
* {{Z|hi}}: {{W-|hi|इतिहासकार|n}}, {{W-|hi|इतिहासज्ञ|n}}
* {{Z|nl}}: {{W+|nl|historicus|n}}, {{W+|nl|geschiedkundige|n|m}}
* {{Z|he}}: {{W+|he|הִיסְטוֹרְיוֹן|n|tr=historyón}}
* {{Z|io}}: {{W+|io|historiisto}}, {{W+|io|historiero}}
* {{Z|ang}}: {{W-|ang|stǣrleornere|n}}
* {{Z|en}}: {{W+|en|historian}}
* {{Z|ga}}: {{W-|ga|staraí|n}}
* {{Z|it}}: {{W+|it|storico|n}}, {{W+|it|storica|m}}
* {{Z|is}}: {{W+|is|sagnfræðingur|n}}
* {{Z|ja}}: {{W+|ja|歴史家|tr=れきしか, rekishika}}
* {{Z|ca}}: {{W+|ca|historiador|n}}
* {{Z|ky}}: {{W+|ky|тарыхчы}}
* {{Z|ko}}: {{W-|ko|역사학자}}, {{W-|ko|력사학자}}, {{W+|ko|역사가}}, {{W-|ko|력사가}}, {{W+|ko|사학자}}
* {{Z|la}}: {{W+|la|historicus|n}}
* {{Z|lv}}: {{W-|lv|vēsturnieks|n}}, {{W-|lv|vēsturniece|m}}
* {{Z|lt}}: {{W-|lt|istorikas|n}}, {{W-|lt|istorikė|m}}
* {{Z|mk}}: {{W-|mk|историчар|n}}, {{W-|mk|историчарка|m}}
* {{Z|hu}}: {{W+|hu|történész}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|түүхч}}
*: {{Z|mn}}: {{W-|mn|ᠲᠡᠦᠬᠡᠴᠢ}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|historiker|n}}
*: {{Z|nn}}: {{W-|nn|historikar|n}}
* {{Z|ug}}: {{W-|ug|تارىخچى}}
* {{Z|uz}}: {{W+|uz|tarixchi}}, {{W+|uz|muarrix}}
* {{Z|pl}}: {{W+|pl|historyk|n}}, {{W+|pl|historyczka|m}}
* {{Z|pt}}: {{W+|pt|historiador|n}}, {{W+|pt|historiadora|m}}
* {{Z|kk}}: {{W-|kk|тарихшы}}
* {{Z|ro}}: {{W+|ro|istoric|n}}, {{W-|ro|istorică|m}}
* {{Z|ru}}: {{W+|ru|исто́рик|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|по̏вјеснича̄р|n}}, {{W-|sh|по̏вјеснича̄рка|m}}, {{W-|sh|хисто̀рича̄р|n}}, {{W-|sh|хисто̀рича̄рка|m}}
*: Latînî: {{W+|sh|pȍvjesničār|n}}, {{W+|sh|pȍvjesničārka|m}}, {{W+|sh|històričār|n}}, {{W+|sh|històričārka|m}}
* {{Z|sk}}: {{W+|sk|historik|n}}, {{W+|sk|historička|m}}
* {{Z|sl}}: {{W+|sl|zgodovinar|n}}, {{W-|sl|zgodovinarka|m}}
* {{Z|es}}: {{W+|es|historiador|n}}, {{W+|es|historiadora|m}}
* {{Z|sw}}: {{W-|sw|mwanahistoria}}
* {{Z|sv}}: {{W+|sv|historiker|g}}
* {{Z|tg}}: {{W-|tg|муаррих}}
* {{Z|th}}: {{W-|th|นักประวัติศาสตร์}}
* {{Z|tt}}: {{W+|tt|тарихчы}}
* {{Z|tr}}: {{W+|tr|tarihçi}}
* {{Z|tk}}: {{W-|tk|taryhçy}}
* {{Z|ur}}: {{W-|ur|مؤرخ|n|tr=muvarrix}}
* {{Z|uk}}: {{W-|uk|істо́рик|n}}, {{W-|uk|істо́ричка|m}}
* {{Z|vi}}: {{W+|vi|[[nhà]] [[sử học]]}}, {{W+|vi|sử gia}}
* {{Z|vro}}: {{W-|vro|aoluulanõ}}
* {{Z|cy}}: {{W+|cy|hanesydd|n}}
* {{Z|el}}: {{W+|el|ιστορικός|n}}
*: {{Z|grc}}: {{W-|grc|ἱστορικός|n}}
{{werger-bin}}
:{{werger çavkanî|en|historian|beş=Ev qismê Wergerê|oldid=90059179}}
=== Çavkanî ===
{{çavkanî}}
tk8ogauvsn715wnx5alui79s4zwxw7r
6329928
6329927
2026-08-13T11:10:59Z
Wikihez
7344
6329928
wikitext
text/x-wiki
{{bnr-h|tarixçi}}
== {{ziman|ku}} ==
=== Bilêvkirin ===
* {{ku-kîte}}
=== Navdêr ===
{{navdêr|ku|c=mn}}
# {{e|ku|meslek}} Kesê ku li ser [[tarîx]]ê dinivîse an lê dikole.<ref>{{Ç:Jaba:1879|تاریخچی<ts:tarikhtchi>|r=92}}</ref>
#: {{hevmane|ku|tarîxnas|dîroknas|dîrokvan|dîrokzan|mêjûnas|mêjûzan}}
#* {{jêder-kovar|ku|jêgirtin='''Tarîxçîkî''' Îngîlîz navê wî Arnold Tombey e, dibêje: "Tirk bi tarîxê nizanin, ku li wan teng bibe karin Hezretê Nebî Silêman û Qanûnî Siltan Silêman bikin yek, tenê ji navê wan."|kovar=Welat (Rojnameya Hefteyî)|sernav=TC dewletî û dewletên Tirkan yên nû|nivîskar=w:Musa Anter|hejmar=62|sal=1993|rûpel=7}}
#* {{jêder-kovar|ku|jêgirtin=Malzemeyê dîrokzan (yan jî dîroknas – zimanzanên kurd(!) hêj biryar nedane ku ew ji ”'''tarîxçî'''”yan re bibêjin dîrokzan yan dîroknas.) belgeyên rastîn û şîroveyên îlmî, zanîstî ne.|kovar=Agirî|sernav=Edebiyat û Dîrok|nivîskar=w:Loqman Polat|hejmar=61|sal=2007|rûpel=11}}
#* {{jêder-malper|ku|jêgirtin='''Tarîxçî''' û teorîsyenên Tirk, Ziya Gökalpê Diyarbekirî hosteyê ilmê xwe yê sosyolojîyê dihesibînin.|nivîskar=w:Omer Faruk Baran|sernav=Zewaca Ziya Gökalp û sosyolojîyeka sînesoj|url=https://www.botantimes.com/zewaca-ziya-gokalp-u-sosyolojiyeka-sinesoj/|malper=Botan Times|sal=2023}}
==== Tewandin ====
{{ku-tewîn-nav|mê û nêr}}
==== Etîmolojî ====
Deyn ji {{deyn|ota|ku|tr=tarihçi}}. {{anlz|ku|tarîx|-çî}}.
==== Werger ====
{{werger-ser|kesê ku li ser tarîxê dinivîse an lê dikole}}
* {{Z|sq}}: {{W+|sq|historian}}
* {{Z|de}}: {{W+|de|Historiker|n}}, {{W+|de|Historikerin|m}}
* {{Z|az}}: {{W+|az|tarixçi}}
* {{Z|eu}}: {{W-|eu|historialari}}, {{W-|eu|historiagile}}
* {{Z|be}}: {{W-|be|гісто́рык|n}}, {{W-|be|гісто́рычка|m}}
* {{Z|bg}}: {{W-|bg|истори́к|n}}, {{W-|bg|истори́чка|m}}
* {{Z|my}}: {{W-|my|သမိုင်းပညာရှင်}}
* {{Z|cs}}: {{W+|cs|historik|n}}, {{W+|cs|historička|m}}
* {{Z|zh}}:
*: {{Z|cmn}}: {{W+|cmn|歷史學家|tr=lìshǐxuéjiā}}, {{W+|cmn|歷史家|tr=lìshǐjiā}}, {{W+|cmn|史家|tr=shǐjiā}}
* {{Z|da}}: {{W-|da|historiker|g}}
* {{Z|ar}}: {{W-|ar|مُؤَرِّخ}}, {{W-|ar|مُؤَرِّخَة|m}}
* {{Z|hy}}: {{W+|hy|պատմագետ}}, {{W+|hy|պատմաբան}}
* {{Z|eo}}: {{W+|eo|historiisto}}
* {{Z|et}}: {{W+|et|ajaloolane}}
* {{Z|fa}}: {{W+|fa|مورخ|tr=movarrax}}
* {{Z|fi}}: {{W+|fi|historioitsija}}
* {{Z|fr}}: {{W+|fr|historien|n}}, {{W+|fr|historienne|m}}
* {{Z|gl}}: {{W+|gl|historiador|n}}
* {{Z|ka}}: {{W-|ka|ისტორიკოსი}}
* {{Z|hi}}: {{W-|hi|इतिहासकार|n}}, {{W-|hi|इतिहासज्ञ|n}}
* {{Z|nl}}: {{W+|nl|historicus|n}}, {{W+|nl|geschiedkundige|n|m}}
* {{Z|he}}: {{W+|he|הִיסְטוֹרְיוֹן|n|tr=historyón}}
* {{Z|io}}: {{W+|io|historiisto}}, {{W+|io|historiero}}
* {{Z|ang}}: {{W-|ang|stǣrleornere|n}}
* {{Z|en}}: {{W+|en|historian}}
* {{Z|ga}}: {{W-|ga|staraí|n}}
* {{Z|it}}: {{W+|it|storico|n}}, {{W+|it|storica|m}}
* {{Z|is}}: {{W+|is|sagnfræðingur|n}}
* {{Z|ja}}: {{W+|ja|歴史家|tr=れきしか, rekishika}}
* {{Z|ca}}: {{W+|ca|historiador|n}}
* {{Z|ky}}: {{W+|ky|тарыхчы}}
* {{Z|ko}}: {{W-|ko|역사학자}}, {{W-|ko|력사학자}}, {{W+|ko|역사가}}, {{W-|ko|력사가}}, {{W+|ko|사학자}}
* {{Z|la}}: {{W+|la|historicus|n}}
* {{Z|lv}}: {{W-|lv|vēsturnieks|n}}, {{W-|lv|vēsturniece|m}}
* {{Z|lt}}: {{W-|lt|istorikas|n}}, {{W-|lt|istorikė|m}}
* {{Z|mk}}: {{W-|mk|историчар|n}}, {{W-|mk|историчарка|m}}
* {{Z|hu}}: {{W+|hu|történész}}
* {{Z|mn}}:
*: Kirîlî: {{W+|mn|түүхч}}
*: {{Z|mn}}: {{W-|mn|ᠲᠡᠦᠬᠡᠴᠢ}}
* {{Z|no}}:
*: {{Z|nb}}: {{W-|nb|historiker|n}}
*: {{Z|nn}}: {{W-|nn|historikar|n}}
* {{Z|ug}}: {{W-|ug|تارىخچى}}
* {{Z|uz}}: {{W+|uz|tarixchi}}, {{W+|uz|muarrix}}
* {{Z|pl}}: {{W+|pl|historyk|n}}, {{W+|pl|historyczka|m}}
* {{Z|pt}}: {{W+|pt|historiador|n}}, {{W+|pt|historiadora|m}}
* {{Z|kk}}: {{W-|kk|тарихшы}}
* {{Z|ro}}: {{W+|ro|istoric|n}}, {{W-|ro|istorică|m}}
* {{Z|ru}}: {{W+|ru|исто́рик|n}}
* {{Z|sh}}:
*: Kirîlî: {{W-|sh|по̏вјеснича̄р|n}}, {{W-|sh|по̏вјеснича̄рка|m}}, {{W-|sh|хисто̀рича̄р|n}}, {{W-|sh|хисто̀рича̄рка|m}}
*: Latînî: {{W+|sh|pȍvjesničār|n}}, {{W+|sh|pȍvjesničārka|m}}, {{W+|sh|històričār|n}}, {{W+|sh|històričārka|m}}
* {{Z|sk}}: {{W+|sk|historik|n}}, {{W+|sk|historička|m}}
* {{Z|sl}}: {{W+|sl|zgodovinar|n}}, {{W-|sl|zgodovinarka|m}}
* {{Z|es}}: {{W+|es|historiador|n}}, {{W+|es|historiadora|m}}
* {{Z|sw}}: {{W-|sw|mwanahistoria}}
* {{Z|sv}}: {{W+|sv|historiker|g}}
* {{Z|tg}}: {{W-|tg|муаррих}}
* {{Z|th}}: {{W-|th|นักประวัติศาสตร์}}
* {{Z|tt}}: {{W+|tt|тарихчы}}
* {{Z|tr}}: {{W+|tr|tarihçi}}
* {{Z|tk}}: {{W-|tk|taryhçy}}
* {{Z|ur}}: {{W-|ur|مؤرخ|n|tr=muvarrix}}
* {{Z|uk}}: {{W-|uk|істо́рик|n}}, {{W-|uk|істо́ричка|m}}
* {{Z|vi}}: {{W+|vi|[[nhà]] [[sử học]]}}, {{W+|vi|sử gia}}
* {{Z|vro}}: {{W-|vro|aoluulanõ}}
* {{Z|cy}}: {{W+|cy|hanesydd|n}}
* {{Z|el}}: {{W+|el|ιστορικός|n}}
*: {{Z|grc}}: {{W-|grc|ἱστορικός|n}}
{{werger-bin}}
:{{werger çavkanî|en|historian|beş=Ev qismê Wergerê|oldid=90059179}}
=== Çavkanî ===
{{çavkanî}}
kl43g11f4pwi6xcc1gxzf408142cwqm
Modul:quote
828
1357519
6329830
6329553
2026-08-12T23:33:15Z
Wikihez
7344
6329830
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)
-- 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).
--
-- Kurdish month names, for translating dates typed with a Kurdish month (e.g. |date=9 tebax 2011) into something
-- MediaWiki's date parser (which only understands English month names) can parse.
-- Calendar order, {Kurdish, English} pairs. Single source of truth for both directions (Kurdish->English for
-- parsing, index->English for building a date from a bare month number).
local months = {
{"kanûna paşîn", "January"},
{"sibat", "February"},
{"adar", "March"},
{"nîsan", "April"},
{"gulan", "May"},
{"hezîran", "June"},
{"tîrmeh", "July"},
{"tebax", "August"},
{"îlon", "September"},
{"çiriya pêşîn", "October"},
{"çiriya paşîn", "November"},
{"kanûna pêşîn", "December"},
}
local kurdish_month_to_english = {}
for _, pair in ipairs(months) do
kurdish_month_to_english[pair[1]] = pair[2]
end
-- 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 date then
for ku, en in pairs(kurdish_month_to_english) do
date = ugsub(date, ku, en)
end
end
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.
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 = months[mon_num][2] .. " " .. 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
-- Single resolved language object for categorization at the end of this function (format_categories() needs an
-- object with e.g. :makeSortKey(), not the raw argslang list).
local lang = argslang and get_first_lang(argslang)
-- 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, need_date = 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)
-- No author/editor/etc. given: the title (malper/kovar/etc.) is the primary entity, so highlight it
-- the same way mainauthor would be.
if not author_outputted then
title_text = j_lazim(title_text)
end
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
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) or ine(args.ziman)
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) or ine(parent_args.ziman)
if ine(parent_args[1]) and deprecated then
error("Nikarî hem parametreya 1. (koda zimên) hem jî |lang=/|ziman= bi hev re bi kar bînî; tenê yekê ji wan bi kar bîne.")
end
-- Enforce the language requirement here (instead of leaving it to Module:parameters' generic "required"
-- validation) so the namespace-aware custom error below actually gets a chance to run.
if require_lang and not (ine(parent_args[1]) or deprecated) then
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
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] = {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,
["wekjêgirtin"] = {alias_of = "asquote"},
ascite = boolean,
["wekçavkanî"] = {alias_of = "ascite"},
}
-- ziman= is a deprecated Kurdish alias of the deprecated named lang= param (only meaningful once "lang" is
-- actually a registered key, i.e. when deprecated is true; see the [deprecated and "lang" or 1] key above).
if deprecated then
params["ziman"] = {alias_of = "lang"}
end
-- 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 at all (not even via the deprecated named lang=/ziman=). Don't synthesize
-- this when lang=/ziman= was used, or the deprecated-shift logic in process_type_aliases() will misread this
-- placeholder as a genuine shifted positional value (e.g. type=book's position-2-is-year), duplicating it into
-- a real alias like sal=.
if parent_args[1] == nil and not (ine(parent_args.lang) or ine(parent_args.ziman)) 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,
["jêgirtin"] = 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 args["jêgirtin"] 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
99rzvf50qfcslltek1nakuge9y0j84x
6329844
6329830
2026-08-12T23:49:55Z
Wikihez
7344
6329844
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)
-- 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).
--
-- Kurdish month names, for translating dates typed with a Kurdish month (e.g. |date=9 tebax 2011) into something
-- MediaWiki's date parser (which only understands English month names) can parse.
-- Calendar order, {Kurdish, English} pairs. Single source of truth for both directions (Kurdish->English for
-- parsing, index->English for building a date from a bare month number).
local months = {
{"kanûna paşîn", "January"},
{"sibat", "February"},
{"adar", "March"},
{"nîsan", "April"},
{"gulan", "May"},
{"hezîran", "June"},
{"tîrmeh", "July"},
{"tebax", "August"},
{"îlon", "September"},
{"çiriya pêşîn", "October"},
{"çiriya paşîn", "November"},
{"kanûna pêşîn", "December"},
}
local kurdish_month_to_english = {}
for _, pair in ipairs(months) do
kurdish_month_to_english[pair[1]] = pair[2]
end
-- 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)
local alias = alias_map[fullname]
-- A positional alias (e.g. from type=book/journal) is stored as a bare number; showing that in an error
-- ("|2=") is confusing, so fall back to the canonical name instead.
if type(alias) == "string" then
return alias
end
return 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 date then
for ku, en in pairs(kurdish_month_to_english) do
date = ugsub(date, ku, en)
end
end
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.
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 = months[mon_num][2] .. " " .. 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
-- Single resolved language object for categorization at the end of this function (format_categories() needs an
-- object with e.g. :makeSortKey(), not the raw argslang list).
local lang = argslang and get_first_lang(argslang)
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
local aliasname = alias_map[param]
-- A positional alias (e.g. from type=book/journal) is stored as a bare number; showing that in an error
-- ("|2=") is confusing, so fall back to the canonical name instead.
if type(aliasname) == "string" then
return aliasname
end
return 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, need_date = 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)
-- No author/editor/etc. given: the title (malper/kovar/etc.) is the primary entity, so highlight it
-- the same way mainauthor would be.
if not author_outputted then
title_text = j_lazim(title_text)
end
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
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) or ine(args.ziman)
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) or ine(parent_args.ziman)
if ine(parent_args[1]) and deprecated then
error("Nikarî hem parametreya 1. (koda zimên) hem jî |lang=/|ziman= bi hev re bi kar bînî; tenê yekê ji wan bi kar bîne.")
end
-- Enforce the language requirement here (instead of leaving it to Module:parameters' generic "required"
-- validation) so the namespace-aware custom error below actually gets a chance to run.
if require_lang and not (ine(parent_args[1]) or deprecated) then
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
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] = {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,
["wekjêgirtin"] = {alias_of = "asquote"},
ascite = boolean,
["wekçavkanî"] = {alias_of = "ascite"},
}
-- ziman= is a deprecated Kurdish alias of the deprecated named lang= param (only meaningful once "lang" is
-- actually a registered key, i.e. when deprecated is true; see the [deprecated and "lang" or 1] key above).
if deprecated then
params["ziman"] = {alias_of = "lang"}
end
-- 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 at all (not even via the deprecated named lang=/ziman=). Don't synthesize
-- this when lang=/ziman= was used, or the deprecated-shift logic in process_type_aliases() will misread this
-- placeholder as a genuine shifted positional value (e.g. type=book's position-2-is-year), duplicating it into
-- a real alias like sal=.
if parent_args[1] == nil and not (ine(parent_args.lang) or ine(parent_args.ziman)) 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,
["jêgirtin"] = 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 args["jêgirtin"] 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
cvfa2ky5isq6yew252yg28jkb3uyioz
6329852
6329844
2026-08-12T23:58:02Z
Wikihez
7344
Restored revision 6329830 by [[Special:Contributions/Wikihez|Wikihez]] ([[User talk:Wikihez|talk]]) ([[:m:User:Xiplus/TwinkleGlobal|TwinkleGlobal]])
6329852
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)
-- 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).
--
-- Kurdish month names, for translating dates typed with a Kurdish month (e.g. |date=9 tebax 2011) into something
-- MediaWiki's date parser (which only understands English month names) can parse.
-- Calendar order, {Kurdish, English} pairs. Single source of truth for both directions (Kurdish->English for
-- parsing, index->English for building a date from a bare month number).
local months = {
{"kanûna paşîn", "January"},
{"sibat", "February"},
{"adar", "March"},
{"nîsan", "April"},
{"gulan", "May"},
{"hezîran", "June"},
{"tîrmeh", "July"},
{"tebax", "August"},
{"îlon", "September"},
{"çiriya pêşîn", "October"},
{"çiriya paşîn", "November"},
{"kanûna pêşîn", "December"},
}
local kurdish_month_to_english = {}
for _, pair in ipairs(months) do
kurdish_month_to_english[pair[1]] = pair[2]
end
-- 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 date then
for ku, en in pairs(kurdish_month_to_english) do
date = ugsub(date, ku, en)
end
end
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.
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 = months[mon_num][2] .. " " .. 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
-- Single resolved language object for categorization at the end of this function (format_categories() needs an
-- object with e.g. :makeSortKey(), not the raw argslang list).
local lang = argslang and get_first_lang(argslang)
-- 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, need_date = 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)
-- No author/editor/etc. given: the title (malper/kovar/etc.) is the primary entity, so highlight it
-- the same way mainauthor would be.
if not author_outputted then
title_text = j_lazim(title_text)
end
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
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) or ine(args.ziman)
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) or ine(parent_args.ziman)
if ine(parent_args[1]) and deprecated then
error("Nikarî hem parametreya 1. (koda zimên) hem jî |lang=/|ziman= bi hev re bi kar bînî; tenê yekê ji wan bi kar bîne.")
end
-- Enforce the language requirement here (instead of leaving it to Module:parameters' generic "required"
-- validation) so the namespace-aware custom error below actually gets a chance to run.
if require_lang and not (ine(parent_args[1]) or deprecated) then
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
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] = {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,
["wekjêgirtin"] = {alias_of = "asquote"},
ascite = boolean,
["wekçavkanî"] = {alias_of = "ascite"},
}
-- ziman= is a deprecated Kurdish alias of the deprecated named lang= param (only meaningful once "lang" is
-- actually a registered key, i.e. when deprecated is true; see the [deprecated and "lang" or 1] key above).
if deprecated then
params["ziman"] = {alias_of = "lang"}
end
-- 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 at all (not even via the deprecated named lang=/ziman=). Don't synthesize
-- this when lang=/ziman= was used, or the deprecated-shift logic in process_type_aliases() will misread this
-- placeholder as a genuine shifted positional value (e.g. type=book's position-2-is-year), duplicating it into
-- a real alias like sal=.
if parent_args[1] == nil and not (ine(parent_args.lang) or ine(parent_args.ziman)) 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,
["jêgirtin"] = 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 args["jêgirtin"] 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
99rzvf50qfcslltek1nakuge9y0j84x
6329853
6329852
2026-08-13T00:01:47Z
Wikihez
7344
6329853
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)
-- 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).
--
-- Kurdish month names, for translating dates typed with a Kurdish month (e.g. |date=9 tebax 2011) into something
-- MediaWiki's date parser (which only understands English month names) can parse.
-- Calendar order, {Kurdish, English} pairs. Single source of truth for both directions (Kurdish->English for
-- parsing, index->English for building a date from a bare month number).
local months = {
{"kanûna paşîn", "January"},
{"sibat", "February"},
{"adar", "March"},
{"nîsan", "April"},
{"gulan", "May"},
{"hezîran", "June"},
{"tîrmeh", "July"},
{"tebax", "August"},
{"îlon", "September"},
{"çiriya pêşîn", "October"},
{"çiriya paşîn", "November"},
{"kanûna pêşîn", "December"},
}
local kurdish_month_to_english = {}
for _, pair in ipairs(months) do
kurdish_month_to_english[pair[1]] = pair[2]
end
-- 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)
local alias = alias_map[fullname]
-- A positional alias (e.g. from type=book/journal) is stored as a bare number; showing that in an error
-- ("|2=") is confusing, so fall back to the canonical name instead.
if type(alias) == "string" then
return alias
end
return 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 date then
for ku, en in pairs(kurdish_month_to_english) do
date = ugsub(date, ku, en)
end
end
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.
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 = months[mon_num][2] .. " " .. 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
-- Single resolved language object for categorization at the end of this function (format_categories() needs an
-- object with e.g. :makeSortKey(), not the raw argslang list).
local lang = argslang and get_first_lang(argslang)
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
local aliasname = alias_map[param]
-- A positional alias (e.g. from type=book/journal) is stored as a bare number; showing that in an error
-- ("|2=") is confusing, so fall back to the canonical name instead.
if type(aliasname) == "string" then
return aliasname
end
return 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, need_date = 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)
-- No author/editor/etc. given: the title (malper/kovar/etc.) is the primary entity, so highlight it
-- the same way mainauthor would be.
if not author_outputted then
title_text = j_lazim(title_text)
end
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
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) or ine(args.ziman)
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)
-- Use cloned_args (already merged: parent_args overridden by direct frame_args), not parent_args alone --
-- the language code may be a direct arg on the #invoke itself (e.g. a dedicated per-work reference template
-- that hardcodes |ku directly), not something the transcluding page passes through.
local deprecated = ine(cloned_args.lang) or ine(cloned_args.ziman)
if ine(cloned_args[1]) and deprecated then
error("Nikarî hem parametreya 1. (koda zimên) hem jî |lang=/|ziman= bi hev re bi kar bînî; tenê yekê ji wan bi kar bîne.")
end
-- Enforce the language requirement here (instead of leaving it to Module:parameters' generic "required"
-- validation) so the namespace-aware custom error below actually gets a chance to run.
if require_lang and not (ine(cloned_args[1]) or deprecated) then
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
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] = {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,
["wekjêgirtin"] = {alias_of = "asquote"},
ascite = boolean,
["wekçavkanî"] = {alias_of = "ascite"},
}
-- ziman= is a deprecated Kurdish alias of the deprecated named lang= param (only meaningful once "lang" is
-- actually a registered key, i.e. when deprecated is true; see the [deprecated and "lang" or 1] key above).
if deprecated then
params["ziman"] = {alias_of = "lang"}
end
-- 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 at all (not even via the deprecated named lang=/ziman=). Don't synthesize
-- this when lang=/ziman= was used, or the deprecated-shift logic in process_type_aliases() will misread this
-- placeholder as a genuine shifted positional value (e.g. type=book's position-2-is-year), duplicating it into
-- a real alias like sal=.
if parent_args[1] == nil and not (ine(parent_args.lang) or ine(parent_args.ziman)) 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,
["jêgirtin"] = 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 args["jêgirtin"] 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
4lxvjd20ixke8cnxahlg7985rtvu22u
Bikarhêner:Wikihez/Gadget-wikt.add-examples.js
2
1357893
6329628
6276922
2026-08-12T14:19:31Z
Wikihez
7344
6329628
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
/**
* Formats a string.
* @param var_args {...Object} The list of values to insert into the string.
* @return {string} The formatted string.
*/
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
//di van rûpelan de dê nexebite:
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Pêşnûyisa (draft) vê formê bi karanîna [[MediaWiki:Gadget-StorageUtils.js]]
// tê hilanîn (localStorage, an cookie eger localStorage ne berdest be), da ku
// eger weşandin bi ser neketibe, nivîsa bikarhêner winda nebe.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// NOTE: Logîka Citoid (standin/veguherandina daneyên çavkaniyê) ji vê dosyeyê
// hatiye derxistin bo [[MediaWiki:Gadget-citoid-helper.js]], da ku scriptên din jî
// karibin wê bikar bînin. Li jêr, wikt.citoidHelper.ensure() ew rûpel bar dike heke
// hewce be, û wikt.citoid.fetchJederFields() encaman dide me. Ji bo zêdetir agahî li
// serê wê dosyeyê binêre.
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal" },
{ "key": "sala weşandinê", "label": "Sala weşandinê" },
{ "key": "çap", "label": "Çap" },
{ "key": "rûpel", "label": "Rûpel" },
{ "key": "isbn", "label": "ISBN" },
{ "key": "url", "label": "URL" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild" },
{ "key": "hejmar", "label": "Hejmar" },
{ "key": "sal", "label": "Sal" },
{ "key": "rûpel", "label": "Rûpel" },
{ "key": "url", "label": "URL" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL" },
{ "key": "arşîv", "label": "Arşîva URLê" },
{ "key": "sal", "label": "Sal" },
{ "key": "tarîx", "label": "Tarîx" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Navên şablonên ku wek "nimûneyeke rasteqîn" tên hesibandin (ango ew qonaxên ku
// amûr dikare wan biguherîne an li pey wan zêde bike). Ev navnîşa "destûrê" ye,
// li şûna navnîşa "qedexeyê" ya kevn — her şablonek din a "#:"/"#*" (hevmane,
// dijmane, alt-r, hwd.) wek şîroveyek tê hesibandin, ne wek nimûneyek.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
/**
* Navê şablona di rêzikeke "#:" an "#*" de vedigerîne, mînak "jêder" ji
* "#* {{jêder|ku|...}}". Vedigere null eger rêzik bi şablonekê dest pê nekiribe.
* @param line {string}
* @return {string|null}
*/
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
/**
* Ji ber ku şablonek dikare çend rêzikan bigire (mînak {{jêder|...|jg=gotineke
* dirêj\ndi çend rêzikan de...}}), ev fonksiyon ji rêzika ku şablon lê dest pê
* dike heta rêzika ku qewsên wê "{{"/"}}" li hev tên (ango şablon xelas dibe)
* dimeşe, û indeksa wê rêzika dawî vedigerîne. Bi vî awayî şablonên pir-rêzikî
* wek yek blok tê hesibandin, ne ku li ser her rêzikekê bêne dabeşkirin.
* @param lines {Array<string>}
* @param startIndex {number}
* @return {number}
*/
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune: hesenê şablona kevn a [[Şablon:jêder]] (nîşaneke veşartî ya
// bo vê amûrê). .h-usage-example/.h-quotation: konteynerên [[Modul:usex]] û
// [[Modul:quote]] (bikaranîna wan a rasterast ji [[Şablon:nimûne]] û şablonên
// jêder-* ve, ku êdî nîşaneke veşartî a cuda tune ye — em rasterast klasa wan a
// h-* bikar tînin).
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang]: nîşaneke veşartî ya [[Şablon:jêder]]/[[Şablon:bênimûne]] ya kevn.
// .e-example[lang]/.e-quotation[lang]: klasên [[Modul:usex]]/[[Modul:quote]]
// ku niha "lang" rasterast li ser hêmana xuya datînin (li Şablon:nimûne û
// şablonên jêder-* binêre), ji ber vê yekê nîşaneke veşartî a cuda ne hewce ye.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// $definitionItem.index() dê hemû <li>yên xwişk-birayan bihesibîne, lê
// carinan MediaWiki di navbera wan de <li class="mw-empty-elt">yên vala
// çêdike (ji rêzikên vala yên di navbera hevokên "#"yê de di wîkîkodê de),
// ku bi xwe di wîkîkodê de tune ne (bo nimûne li rûpelên bi "senseid").
// Divê ew ji hesabê bêne derxistin da ku indeks li gorî hejmartina
// rêzikên "#" yên rasteqîn di wîkîkodê de bên (li submit() binêre).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// [[ji]] çima vê xeletiyê dide? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
/**
* Constructor for the edit form.
* @param $lastExample {jQuery} The element corresponding to the example right above the button.
* @param $button {jQuery} The button that shows this form.
* @param language {string} Language for the example.
* @param definitionLevel {Array<string|number>} Indices of the associated definition.
* @constructor
*/
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
// Cureyê çavkaniyê: nivîsandineke serbest an jî yek ji şablonên jêder-*
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Nivîsandina serbest",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget();
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Adresa webê ya nimûneyê An jî DOI/ISBNyeke jêderê binivîse û bişkoka jêrîn bikar bîne da ku agahî ji Citoid werin barkirin",
align: "top",
help: "Tenê binivîse eger lînk jixwe di referansa çavkaniyê de tinebe.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
var citoidButtonLayout = new OO.ui.FieldLayout(this._citoidButton, {
label: " ",
align: "top",
});
// Qada ku qonaxên şablona jêder-* a hatiye hilbijartin lê tê danîn
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
this._jederFieldsFieldset.toggle(false);
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
this._loadingImage = new OO.ui.LabelWidget({
label: $('<img src="https://upload.wikimedia.org/wikipedia/commons/7/7a/Ajax_loader_metal_512.gif" alt="loading" style="width: 1.5em">'),
});
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._sourceURLInputLayout, citoidButtonLayout, this._jederFieldsFieldset];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
}
Form.prototype = {
/**
* Returns the jQuery object for this form.
* @return {jQuery}
*/
get $element() {
return this._frame.$element;
},
/**
* Switches the çavkanî section between free text and a jêder-* template,
* rebuilding the field list to match the chosen template's definition.
* @param jederKey {string} Key into jederDefs, or "" for free text.
*/
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
if (jederKey && jederDefs[jederKey]) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
}));
});
this._jederFieldsFieldset.addItems(items);
this._jederFieldsFieldset.toggle(true);
this._sourceInputLayout.toggle(false);
} else {
this._jederFieldsFieldset.toggle(false);
this._sourceInputLayout.toggle(true);
}
},
/**
* Ji [[MediaWiki:Gadget-citoid-helper.js]] daneyan tîne, cureyê şablona jêder-*
* a guncan hildibijêre, û qadên wê yên vala bi daneyên hatî wergirtin tijî dike.
* Hemû mantiqa Citoid bi xwe (URL/DOI/ISBN → qonax) li wê dosyeyê ye; ev fonksiyon
* tenê bi UI ya vê formê ve girêdide.
*/
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoidHelper.ensure().then(function() {
return wikt.citoid.fetchJederFields(query);
}).then(function(result) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item && self._currentJederKey !== result.jederKey) {
menu.chooseItem(item); // ev ê _setSourceType(jederKey) bixweber gazî bike
}
Object.keys(result.fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(result.fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
/**
* Toggles the visibility of this form.
* @param visible {boolean}
*/
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
/**
* Removes any saved draft of this form's fields (in localStorage/cookie,
* via [[MediaWiki:Gadget-StorageUtils.js]]), so a failed or abandoned
* submission can no longer resurface on other pages.
*/
_clearDraft: function() {
draftStorage.Set({});
},
/**
* Clears all fields contained in this forms.
*/
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("");
this._setSourceType("");
},
/**
* Generates and submits the wikicode then inserts the resulting HTML element if no errors occured.
*/
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// Ger şablonek jêder-* hatibe hilbijartin, qonaxên wê yên tijîkirî berhev bike
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// Şablona jêder-* bi xwe wek şablon tê bikaranîn, ne wek naveroka "2="ê
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
//şablona jêder-*, jêder an jî nimûne
var code = listMarker + " {{" + sablon;
// 1= koda zimanî
code += "|" + this._language;
if (usingJederTemplate) {
// Qonaxên şablona jêder-* a hatiye hilbijartin, rasterast wek parametreyên wê
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
//2= çavkanî (nivîsandina serbest)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
//jêgirtin/nimûne
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
//navê rûpelê bike stûr
code += text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''");
if (this._language !== "ku") {
var translation = this._translationInput.getValue().trim();
var transcription = this._transcriptionInput.getValue().trim();
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Look for the right place to insert the new example within this
// definition's block of "#:"/"#*" lines (real examples and/or
// annotation templates like hevmane/dijmane/alt-r/etc.).
//
// Rêbaz: em ji rêzika piştî definîsyonê dest pê dikin û tenê di rêzikên
// "#:"/"#*" de dimeşin (her rêzikek dikare şablonek pir-rêzikî be, ji ber
// vê yekê em bi findBlockEnd() qewsên wê dişopînin). Ji bo her şablonekê
// em kontrol dikin ka ew di navnîşa exampleTemplateNames de ye an na, da
// ku em şîroveyan (hevmane, dijmane, alt-r, hwd.) ji nimûneyên rasteqîn
// cuda bikin, li şûna ku em navekê bi taybetî "qedexe" bikin.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Derketin ji bloka "#:"/"#*" ya vê definîsyonê (mînak definîsyoneke
// nû an beşeke nû dest pê dike).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// Nimûneyên cureyê jêder tên li dawiya hemû rêzikên "#:"/"#*" yên vê
// definîsyonê (nimûneyên rasteqîn û şîroveyan jî tev de).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// Nimûneyên "nm" divê berî her rêzikeke "#*" bên danîn, lê piştî
// rêzikên "#:".
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Here past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert new example (right after the definition itself if it had no
// existing "#:"/"#*" lines yet, or after the relevant block otherwise)
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra «\u00a0{0}\u00a0» (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
325er7ym9iyn28a8rb7l32xsbnwlnyg
6329631
6329628
2026-08-12T14:45:15Z
Wikihez
7344
6329631
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
/**
* Formats a string.
* @param var_args {...Object} The list of values to insert into the string.
* @return {string} The formatted string.
*/
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
//di van rûpelan de dê nexebite:
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Pêşnûyisa (draft) vê formê bi karanîna [[MediaWiki:Gadget-StorageUtils.js]]
// tê hilanîn (localStorage, an cookie eger localStorage ne berdest be), da ku
// eger weşandin bi ser neketibe, nivîsa bikarhêner winda nebe.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// NOTE: Logîka Citoid (standin/veguherandina daneyên çavkaniyê) ji vê dosyeyê
// hatiye derxistin bo [[MediaWiki:Gadget-citoid-helper.js]], da ku scriptên din jî
// karibin wê bikar bînin. Li jêr, wikt.citoidHelper.ensure() ew rûpel bar dike heke
// hewce be, û wikt.citoid.fetchJederFields() encaman dide me. Ji bo zêdetir agahî li
// serê wê dosyeyê binêre.
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal" },
{ "key": "sala weşandinê", "label": "Sala weşandinê" },
{ "key": "çap", "label": "Çap" },
{ "key": "rûpel", "label": "Rûpel" },
{ "key": "isbn", "label": "ISBN" },
{ "key": "url", "label": "URL" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild" },
{ "key": "hejmar", "label": "Hejmar" },
{ "key": "sal", "label": "Sal" },
{ "key": "rûpel", "label": "Rûpel" },
{ "key": "url", "label": "URL" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL" },
{ "key": "arşîv", "label": "Arşîva URLê" },
{ "key": "sal", "label": "Sal" },
{ "key": "tarîx", "label": "Tarîx" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Navên şablonên ku wek "nimûneyeke rasteqîn" tên hesibandin (ango ew qonaxên ku
// amûr dikare wan biguherîne an li pey wan zêde bike). Ev navnîşa "destûrê" ye,
// li şûna navnîşa "qedexeyê" ya kevn — her şablonek din a "#:"/"#*" (hevmane,
// dijmane, alt-r, hwd.) wek şîroveyek tê hesibandin, ne wek nimûneyek.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
/**
* Navê şablona di rêzikeke "#:" an "#*" de vedigerîne, mînak "jêder" ji
* "#* {{jêder|ku|...}}". Vedigere null eger rêzik bi şablonekê dest pê nekiribe.
* @param line {string}
* @return {string|null}
*/
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
/**
* Ji ber ku şablonek dikare çend rêzikan bigire (mînak {{jêder|...|jg=gotineke
* dirêj\ndi çend rêzikan de...}}), ev fonksiyon ji rêzika ku şablon lê dest pê
* dike heta rêzika ku qewsên wê "{{"/"}}" li hev tên (ango şablon xelas dibe)
* dimeşe, û indeksa wê rêzika dawî vedigerîne. Bi vî awayî şablonên pir-rêzikî
* wek yek blok tê hesibandin, ne ku li ser her rêzikekê bêne dabeşkirin.
* @param lines {Array<string>}
* @param startIndex {number}
* @return {number}
*/
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune: hesenê şablona kevn a [[Şablon:jêder]] (nîşaneke veşartî ya
// bo vê amûrê). .h-usage-example/.h-quotation: konteynerên [[Modul:usex]] û
// [[Modul:quote]] (bikaranîna wan a rasterast ji [[Şablon:nimûne]] û şablonên
// jêder-* ve, ku êdî nîşaneke veşartî a cuda tune ye — em rasterast klasa wan a
// h-* bikar tînin).
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang]: nîşaneke veşartî ya [[Şablon:jêder]]/[[Şablon:bênimûne]] ya kevn.
// .e-example[lang]/.e-quotation[lang]: klasên [[Modul:usex]]/[[Modul:quote]]
// ku niha "lang" rasterast li ser hêmana xuya datînin (li Şablon:nimûne û
// şablonên jêder-* binêre), ji ber vê yekê nîşaneke veşartî a cuda ne hewce ye.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// $definitionItem.index() dê hemû <li>yên xwişk-birayan bihesibîne, lê
// carinan MediaWiki di navbera wan de <li class="mw-empty-elt">yên vala
// çêdike (ji rêzikên vala yên di navbera hevokên "#"yê de di wîkîkodê de),
// ku bi xwe di wîkîkodê de tune ne (bo nimûne li rûpelên bi "senseid").
// Divê ew ji hesabê bêne derxistin da ku indeks li gorî hejmartina
// rêzikên "#" yên rasteqîn di wîkîkodê de bên (li submit() binêre).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// [[ji]] çima vê xeletiyê dide? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
/**
* Constructor for the edit form.
* @param $lastExample {jQuery} The element corresponding to the example right above the button.
* @param $button {jQuery} The button that shows this form.
* @param language {string} Language for the example.
* @param definitionLevel {Array<string|number>} Indices of the associated definition.
* @constructor
*/
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
// Cureyê çavkaniyê: nivîsandineke serbest an jî yek ji şablonên jêder-*
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Nivîsandina serbest",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Qada ku qonaxên şablona jêder-* a hatiye hilbijartin lê tê danîn
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + qadên şablona jêder-*: hemû di yek qutîkeke çarçoveyî
// (framed) de, da ku wek gaveke cuda û zelal a "çavkaniyê" xuya bike,
// ne tevlihev bi nivîsandina serbest re. Tenê ji bo şablonên jêder-*
// tê nîşandan (li _setSourceType binêre); ji bo nivîsandina serbest
// ne pêwîst e (tiştek tune ku Citoid xweber tijî bike).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
this._citoidButton,
this._jederFieldsFieldset,
],
});
this._citoidBox.toggle(false);
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Spînera barkirinê: CSS xwerû (li Gadget-wikt.add-examples.css binêre),
// ne wêneyeke ji Commons were anîn — bi vî awayî ne girêdayî
// girêdaneke torê ya derveyî ye, û bixweber li gorî moda tarî/ronî tê rengkirin.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
}
Form.prototype = {
/**
* Returns the jQuery object for this form.
* @return {jQuery}
*/
get $element() {
return this._frame.$element;
},
/**
* Switches the çavkanî section between free text and a jêder-* template,
* rebuilding the field list to match the chosen template's definition.
* @param jederKey {string} Key into jederDefs, or "" for free text.
*/
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
if (jederKey && jederDefs[jederKey]) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
}));
});
this._jederFieldsFieldset.addItems(items);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else {
this._citoidBox.toggle(false);
this._sourceInputLayout.toggle(true);
}
},
/**
* Ji [[MediaWiki:Gadget-citoid-helper.js]] daneyan tîne, cureyê şablona jêder-*
* a guncan hildibijêre, û qadên wê yên vala bi daneyên hatî wergirtin tijî dike.
* Hemû mantiqa Citoid bi xwe (URL/DOI/ISBN → qonax) li wê dosyeyê ye; ev fonksiyon
* tenê bi UI ya vê formê ve girêdide.
*/
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoidHelper.ensure().then(function() {
return wikt.citoid.fetchJederFields(query);
}).then(function(result) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item && self._currentJederKey !== result.jederKey) {
menu.chooseItem(item); // ev ê _setSourceType(jederKey) bixweber gazî bike
}
Object.keys(result.fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(result.fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
/**
* Toggles the visibility of this form.
* @param visible {boolean}
*/
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
/**
* Removes any saved draft of this form's fields (in localStorage/cookie,
* via [[MediaWiki:Gadget-StorageUtils.js]]), so a failed or abandoned
* submission can no longer resurface on other pages.
*/
_clearDraft: function() {
draftStorage.Set({});
},
/**
* Clears all fields contained in this forms.
*/
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("");
this._setSourceType("");
},
/**
* Generates and submits the wikicode then inserts the resulting HTML element if no errors occured.
*/
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// Ger şablonek jêder-* hatibe hilbijartin, qonaxên wê yên tijîkirî berhev bike
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// Şablona jêder-* bi xwe wek şablon tê bikaranîn, ne wek naveroka "2="ê
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
//şablona jêder-*, jêder an jî nimûne
var code = listMarker + " {{" + sablon;
// 1= koda zimanî
code += "|" + this._language;
if (usingJederTemplate) {
// Qonaxên şablona jêder-* a hatiye hilbijartin, rasterast wek parametreyên wê
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
//2= çavkanî (nivîsandina serbest)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
//jêgirtin/nimûne
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
//navê rûpelê bike stûr
code += text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''");
if (this._language !== "ku") {
var translation = this._translationInput.getValue().trim();
var transcription = this._transcriptionInput.getValue().trim();
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Look for the right place to insert the new example within this
// definition's block of "#:"/"#*" lines (real examples and/or
// annotation templates like hevmane/dijmane/alt-r/etc.).
//
// Rêbaz: em ji rêzika piştî definîsyonê dest pê dikin û tenê di rêzikên
// "#:"/"#*" de dimeşin (her rêzikek dikare şablonek pir-rêzikî be, ji ber
// vê yekê em bi findBlockEnd() qewsên wê dişopînin). Ji bo her şablonekê
// em kontrol dikin ka ew di navnîşa exampleTemplateNames de ye an na, da
// ku em şîroveyan (hevmane, dijmane, alt-r, hwd.) ji nimûneyên rasteqîn
// cuda bikin, li şûna ku em navekê bi taybetî "qedexe" bikin.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Derketin ji bloka "#:"/"#*" ya vê definîsyonê (mînak definîsyoneke
// nû an beşeke nû dest pê dike).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// Nimûneyên cureyê jêder tên li dawiya hemû rêzikên "#:"/"#*" yên vê
// definîsyonê (nimûneyên rasteqîn û şîroveyan jî tev de).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// Nimûneyên "nm" divê berî her rêzikeke "#*" bên danîn, lê piştî
// rêzikên "#:".
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Here past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert new example (right after the definition itself if it had no
// existing "#:"/"#*" lines yet, or after the relevant block otherwise)
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra «\u00a0{0}\u00a0» (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
lo2ydaohg33z5u1ytrdn10zk057vq17
6329634
6329631
2026-08-12T14:57:08Z
Wikihez
7344
6329634
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
/**
* Formats a string.
* @param var_args {...Object} The list of values to insert into the string.
* @return {string} The formatted string.
*/
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
//di van rûpelan de dê nexebite:
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Pêşnûyisa (draft) vê formê bi karanîna [[MediaWiki:Gadget-StorageUtils.js]]
// tê hilanîn (localStorage, an cookie eger localStorage ne berdest be), da ku
// eger weşandin bi ser neketibe, nivîsa bikarhêner winda nebe.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// NOTE: Logîka Citoid (standin/veguherandina daneyên çavkaniyê) ji vê dosyeyê
// hatiye derxistin bo [[MediaWiki:Gadget-citoid-helper.js]], da ku scriptên din jî
// karibin wê bikar bînin. citoid-helper wek dependency ya vê gadgetê hatiye
// qeydkirin (li Special:Gadgets binêre), loma her tim jixwe hatiye barkirin berî vê
// skrîptê bixebite; li jêr rasterast wikt.citoid.fetchJederFields() tê gazîkirin.
// Ji bo zêdetir agahî li serê wê dosyeyê binêre.
// "width" ji bo layouta qadan tê bikaranîn (li _setSourceType binêre):
// "narrow" = qadên kurt (sal, rûpel, hejmar, hwd.), çend heb li ser heman rêzê;
// "wide" = qad her tim rêza xwe ya taybet digire (sernav, url, hwd.);
// tinebe = firehiyeke navîn, du/sê heb li ser heman rêzê.
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Navên şablonên ku wek "nimûneyeke rasteqîn" tên hesibandin (ango ew qonaxên ku
// amûr dikare wan biguherîne an li pey wan zêde bike). Ev navnîşa "destûrê" ye,
// li şûna navnîşa "qedexeyê" ya kevn — her şablonek din a "#:"/"#*" (hevmane,
// dijmane, alt-r, hwd.) wek şîroveyek tê hesibandin, ne wek nimûneyek.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
/**
* Navê şablona di rêzikeke "#:" an "#*" de vedigerîne, mînak "jêder" ji
* "#* {{jêder|ku|...}}". Vedigere null eger rêzik bi şablonekê dest pê nekiribe.
* @param line {string}
* @return {string|null}
*/
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
/**
* Ji ber ku şablonek dikare çend rêzikan bigire (mînak {{jêder|...|jg=gotineke
* dirêj\ndi çend rêzikan de...}}), ev fonksiyon ji rêzika ku şablon lê dest pê
* dike heta rêzika ku qewsên wê "{{"/"}}" li hev tên (ango şablon xelas dibe)
* dimeşe, û indeksa wê rêzika dawî vedigerîne. Bi vî awayî şablonên pir-rêzikî
* wek yek blok tê hesibandin, ne ku li ser her rêzikekê bêne dabeşkirin.
* @param lines {Array<string>}
* @param startIndex {number}
* @return {number}
*/
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune: hesenê şablona kevn a [[Şablon:jêder]] (nîşaneke veşartî ya
// bo vê amûrê). .h-usage-example/.h-quotation: konteynerên [[Modul:usex]] û
// [[Modul:quote]] (bikaranîna wan a rasterast ji [[Şablon:nimûne]] û şablonên
// jêder-* ve, ku êdî nîşaneke veşartî a cuda tune ye — em rasterast klasa wan a
// h-* bikar tînin).
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang]: nîşaneke veşartî ya [[Şablon:jêder]]/[[Şablon:bênimûne]] ya kevn.
// .e-example[lang]/.e-quotation[lang]: klasên [[Modul:usex]]/[[Modul:quote]]
// ku niha "lang" rasterast li ser hêmana xuya datînin (li Şablon:nimûne û
// şablonên jêder-* binêre), ji ber vê yekê nîşaneke veşartî a cuda ne hewce ye.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// $definitionItem.index() dê hemû <li>yên xwişk-birayan bihesibîne, lê
// carinan MediaWiki di navbera wan de <li class="mw-empty-elt">yên vala
// çêdike (ji rêzikên vala yên di navbera hevokên "#"yê de di wîkîkodê de),
// ku bi xwe di wîkîkodê de tune ne (bo nimûne li rûpelên bi "senseid").
// Divê ew ji hesabê bêne derxistin da ku indeks li gorî hejmartina
// rêzikên "#" yên rasteqîn di wîkîkodê de bên (li submit() binêre).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// [[ji]] çima vê xeletiyê dide? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
/**
* Constructor for the edit form.
* @param $lastExample {jQuery} The element corresponding to the example right above the button.
* @param $button {jQuery} The button that shows this form.
* @param language {string} Language for the example.
* @param definitionLevel {Array<string|number>} Indices of the associated definition.
* @constructor
*/
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
// Cureyê çavkaniyê: nivîsandineke serbest an jî yek ji şablonên jêder-*
// "citoid" ne mifteyeke jederDefs e; ew rewşeke pêş-tespîtkirinê ye — hîn
// tu şablon nehatiye hilbijartin, bişkoka Citoid tê nîşandan bi tenê, û
// gava daneyek were standin şablon xweber tê guhertin (li _fillFromCitoid
// binêre). Ev jî mifteya pêşdanasîn (default) ya vê menuyê ye.
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Qada girêdanê û qadên jêder-* yên hatine dagirtin (bi Citoid an bi
// destan) vala dike, bêyî ku bandorê li metna nimûneyê/tercimeyê bike.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Girêdanê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Qada ku qonaxên şablona jêder-* a hatiye hilbijartin lê tê danîn
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + qadên şablona jêder-*: hemû di yek qutîkeke çarçoveyî
// (framed) de, da ku wek gaveke cuda û zelal a "çavkaniyê" xuya bike,
// ne tevlihev bi nivîsandina serbest re. Tenê ji bo şablonên jêder-*
// tê nîşandan (li _setSourceType binêre); ji bo nivîsandina serbest
// ne pêwîst e (tiştek tune ku Citoid xweber tijî bike).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._citoidBox.toggle(false);
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Spînera barkirinê: CSS xwerû (li Gadget-wikt.add-examples.css binêre),
// ne wêneyeke ji Commons were anîn — bi vî awayî ne girêdayî
// girêdaneke torê ya derveyî ye, û bixweber li gorî moda tarî/ronî tê rengkirin.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Pêşdanasîna (default) formê: rewşa "Bi Citoidê otomatîk zêde bike".
// selectItemByData() bi xwe bûyera "choose"yê venagire (ew tenê ji bo
// hilbijartina çalak/bikarhêner e), loma _setSourceType() jî divê
// rasterast were gazîkirin da ku UI ya destpêkê rast were sazkirin.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
/**
* Returns the jQuery object for this form.
* @return {jQuery}
*/
get $element() {
return this._frame.$element;
},
/**
* Switches the çavkanî section between free text, Citoid auto-detection
* (no template chosen yet), and a specific jêder-* template — rebuilding
* the field list to match the chosen template's definition.
* @param jederKey {string} Key into jederDefs, "citoid" for not-yet-detected, or "" for free text.
*/
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
if (jederKey && jederDefs[jederKey]) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
this._jederFieldsFieldset.toggle(true);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else if (jederKey === "citoid") {
// Hîn tu şablon nehatiye tespîtkirin; tenê qada girêdanê +
// bişkoka Citoid nîşan bide, ne qadên jêder-* yên vala.
this._jederFieldsFieldset.toggle(false);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else {
this._citoidBox.toggle(false);
this._sourceInputLayout.toggle(true);
}
},
/**
* Ji [[MediaWiki:Gadget-citoid-helper.js]] daneyan tîne, cureyê şablona jêder-*
* a guncan hildibijêre, û qadên wê yên vala bi daneyên hatî wergirtin tijî dike.
* Hemû mantiqa Citoid bi xwe (URL/DOI/ISBN → qonax) li wê dosyeyê ye; ev fonksiyon
* tenê bi UI ya vê formê ve girêdide. citoid-helper niha wek dependency ya vê
* gadgetê hatiye qeydkirin (li Special:Gadgets binêre), loma her tim jixwe hatiye
* barkirin berî vê skrîptê bixebite — wikt.citoidHelper.ensure() ne hewce ye.
*/
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item && self._currentJederKey !== result.jederKey) {
menu.chooseItem(item); // ev ê _setSourceType(jederKey) bixweber gazî bike
}
Object.keys(result.fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(result.fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
/**
* Toggles the visibility of this form.
* @param visible {boolean}
*/
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
/**
* Removes any saved draft of this form's fields (in localStorage/cookie,
* via [[MediaWiki:Gadget-StorageUtils.js]]), so a failed or abandoned
* submission can no longer resurface on other pages.
*/
_clearDraft: function() {
draftStorage.Set({});
},
/**
* Clears all fields contained in this forms.
*/
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
/**
* Generates and submits the wikicode then inserts the resulting HTML element if no errors occured.
*/
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// Ger şablonek jêder-* hatibe hilbijartin, qonaxên wê yên tijîkirî berhev bike
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// Şablona jêder-* bi xwe wek şablon tê bikaranîn, ne wek naveroka "2="ê
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
//şablona jêder-*, jêder an jî nimûne
var code = listMarker + " {{" + sablon;
// 1= koda zimanî
code += "|" + this._language;
if (usingJederTemplate) {
// Qonaxên şablona jêder-* a hatiye hilbijartin, rasterast wek parametreyên wê
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
//2= çavkanî (nivîsandina serbest)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
//jêgirtin/nimûne
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
//navê rûpelê bike stûr
code += text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''");
if (this._language !== "ku") {
var translation = this._translationInput.getValue().trim();
var transcription = this._transcriptionInput.getValue().trim();
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Look for the right place to insert the new example within this
// definition's block of "#:"/"#*" lines (real examples and/or
// annotation templates like hevmane/dijmane/alt-r/etc.).
//
// Rêbaz: em ji rêzika piştî definîsyonê dest pê dikin û tenê di rêzikên
// "#:"/"#*" de dimeşin (her rêzikek dikare şablonek pir-rêzikî be, ji ber
// vê yekê em bi findBlockEnd() qewsên wê dişopînin). Ji bo her şablonekê
// em kontrol dikin ka ew di navnîşa exampleTemplateNames de ye an na, da
// ku em şîroveyan (hevmane, dijmane, alt-r, hwd.) ji nimûneyên rasteqîn
// cuda bikin, li şûna ku em navekê bi taybetî "qedexe" bikin.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Derketin ji bloka "#:"/"#*" ya vê definîsyonê (mînak definîsyoneke
// nû an beşeke nû dest pê dike).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// Nimûneyên cureyê jêder tên li dawiya hemû rêzikên "#:"/"#*" yên vê
// definîsyonê (nimûneyên rasteqîn û şîroveyan jî tev de).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// Nimûneyên "nm" divê berî her rêzikeke "#*" bên danîn, lê piştî
// rêzikên "#:".
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Here past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert new example (right after the definition itself if it had no
// existing "#:"/"#*" lines yet, or after the relevant block otherwise)
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra «\u00a0{0}\u00a0» (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
pzpac3acqlzrtmis3v3jms4vdkdctms
6329641
6329634
2026-08-12T15:14:47Z
Wikihez
7344
6329641
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Girêdanê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + jêder-* fields live in one framed box, read as a distinct "source" step separate from free text; only shown for jêder-* templates (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._citoidBox.toggle(false);
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
if (jederKey && jederDefs[jederKey]) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
this._jederFieldsFieldset.toggle(true);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else if (jederKey === "citoid") {
// No template detected yet; show only the URL field + Citoid button, not empty jêder-* fields.
this._jederFieldsFieldset.toggle(false);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else {
this._citoidBox.toggle(false);
this._sourceInputLayout.toggle(true);
}
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item && self._currentJederKey !== result.jederKey) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
Object.keys(result.fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(result.fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title
code += text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''");
if (this._language !== "ku") {
var translation = this._translationInput.getValue().trim();
var transcription = this._transcriptionInput.getValue().trim();
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
2rlkw47mse9h10oezalqu80rpfc8i0k
6329647
6329641
2026-08-12T15:32:00Z
Wikihez
7344
6329647
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Girêdanê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + jêder-* fields live in one framed box, read as a distinct "source" step separate from free text; only shown for jêder-* templates (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._citoidBox.toggle(false);
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
if (jederKey && jederDefs[jederKey]) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
this._jederFieldsFieldset.toggle(true);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else if (jederKey === "citoid") {
// No template detected yet; show only the URL field + Citoid button, not empty jêder-* fields.
this._jederFieldsFieldset.toggle(false);
this._citoidBox.toggle(true);
this._sourceInputLayout.toggle(false);
} else {
this._citoidBox.toggle(false);
this._sourceInputLayout.toggle(true);
}
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item && self._currentJederKey !== result.jederKey) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
Object.keys(result.fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(result.fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
fw9kmyfk0k0swsbpaf6tunmw2dasmwi
6329652
6329647
2026-08-12T15:41:24Z
Wikihez
7344
6329652
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Girêdanê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + jêder-* fields live in one framed box, read as a distinct "source" step. Always visible regardless of mode — a URL can be attached to a free-text citation too (submit() reads sourceURLInput unconditionally) — only the manual jêder-* bibliographic fields inside it toggle with the selected template (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The citoid box (URL field + Citoid button) itself is always visible in every mode — only the manual jêder-* fields and the free-text textarea toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item && self._currentJederKey !== result.jederKey) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
Object.keys(result.fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(result.fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
6enegfy26hs1bkgie3w30iy0zi9cyoh
6329655
6329652
2026-08-12T15:52:38Z
Wikihez
7344
6329655
javascript
text/javascript
// <nowiki>
// implicit dependencies: StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Girêdanê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + jêder-* fields live in one framed box, read as a distinct "source" step. Always visible regardless of mode — a URL can be attached to a free-text citation too (submit() reads sourceURLInput unconditionally) — only the manual jêder-* bibliographic fields inside it toggle with the selected template (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The citoid box (URL field + Citoid button) itself is always visible in every mode — only the manual jêder-* fields and the free-text textarea toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
// Only let Citoid pick the template type when nothing's been chosen yet (the "citoid" auto-detect default). If the user already selected a specific jêder-* type (or free text), that choice is respected — e.g. picking "Websîte" and fetching a tweet must not silently switch to "Kovar" just because Citoid guessed differently.
var wasAutoDetect = self._currentJederKey === "citoid";
if (wasAutoDetect) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
}
var targetJederKey = self._currentJederKey;
// Fields Citoid returned were shaped for its own detected type; if the active template differs (the case above where the user's choice was kept), re-derive fields for that template instead so e.g. "Websîte" still gets its own website-shaped fields (websîte, tarîx, ...) rather than leftover kovar-shaped ones.
var fields = targetJederKey === result.jederKey ? result.fields : wikt.citoid.dataToJederFields(targetJederKey, result.raw);
Object.keys(fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
ogt2b79zm6kfh9r8k3zlel393d7cayd
6329659
6329655
2026-08-12T16:12:21Z
Wikihez
7344
6329659
javascript
text/javascript
// <nowiki>
// dependencies (declared in MediaWiki:Gadgets-definition): oojs, oojs-ui, ext.gadget.citoid-helper (wikt.citoid), ext.gadget.StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Girêdan, DOI an ISBNya çavkaniyê",
align: "top",
help: "Vê tijî bike û “Ji Citoid tijî bike”yê bikar bîne da ku qadên jêrîn xweber werin dagirtin — an jî wan bi destan binivîse.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* xweber tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Girêdanê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid + jêder-* fields live in one framed box, read as a distinct "source" step. Always visible regardless of mode — a URL can be attached to a free-text citation too (submit() reads sourceURLInput unconditionally) — only the manual jêder-* bibliographic fields inside it toggle with the selected template (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
this._sourceURLInputLayout,
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The citoid box (URL field + Citoid button) itself is always visible in every mode — only the manual jêder-* fields and the free-text textarea toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
// Only let Citoid pick the template type when nothing's been chosen yet (the "citoid" auto-detect default). If the user already selected a specific jêder-* type (or free text), that choice is respected — e.g. picking "Websîte" and fetching a tweet must not silently switch to "Kovar" just because Citoid guessed differently.
var wasAutoDetect = self._currentJederKey === "citoid";
if (wasAutoDetect) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
}
var targetJederKey = self._currentJederKey;
// Fields Citoid returned were shaped for its own detected type; if the active template differs (the case above where the user's choice was kept), re-derive fields for that template instead so e.g. "Websîte" still gets its own website-shaped fields (websîte, tarîx, ...) rather than leftover kovar-shaped ones.
var fields = targetJederKey === result.jederKey ? result.fields : wikt.citoid.dataToJederFields(targetJederKey, result.raw);
Object.keys(fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
86tejcj0519fswae2p2nazu3s26vygq
6329664
6329659
2026-08-12T16:33:44Z
Wikihez
7344
6329664
javascript
text/javascript
// <nowiki>
// dependencies (declared in MediaWiki:Gadgets-definition): oojs, oojs-ui, ext.gadget.citoid-helper (wikt.citoid), ext.gadget.StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Nivîsandina serbest" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
// Always visible in every mode (free text included) — submit() reads this unconditionally as the "url=" parameter, and it's also the query field the Citoid button below fetches from.
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* otomatîk tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Lînkê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid button + jêder-* fields, framed as one "template" step — unlike the URL field above, this box only makes sense once a jêder-* template is active (there's nothing here for Citoid to fill in free-text mode, since it has no bibliographic fields to populate), so it's hidden for free text (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._sourceURLInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
var fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The URL field itself is always visible in every mode (see the constructor); only the free-text textarea, the Citoid button box, and the manual jêder-* fields toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
// Citoid button box: hidden for free text (nothing there for it to fill in), shown for "citoid" auto-detect and any real jêder-* key.
this._citoidBox.toggle(jederKey !== "");
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
// Only let Citoid pick the template type when nothing's been chosen yet (the "citoid" auto-detect default). If the user already selected a specific jêder-* type (or free text), that choice is respected — e.g. picking "Websîte" and fetching a tweet must not silently switch to "Kovar" just because Citoid guessed differently.
var wasAutoDetect = self._currentJederKey === "citoid";
if (wasAutoDetect) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
}
var targetJederKey = self._currentJederKey;
// Fields Citoid returned were shaped for its own detected type; if the active template differs (the case above where the user's choice was kept), re-derive fields for that template instead so e.g. "Websîte" still gets its own website-shaped fields (websîte, tarîx, ...) rather than leftover kovar-shaped ones.
var fields = targetJederKey === result.jederKey ? result.fields : wikt.citoid.dataToJederFields(targetJederKey, result.raw);
Object.keys(fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
0baa4jd8tecxbhn7xcn48s00xryqwhg
6329668
6329664
2026-08-12T16:45:41Z
Wikihez
7344
6329668
javascript
text/javascript
// <nowiki>
// dependencies (declared in MediaWiki:Gadgets-definition): oojs, oojs-ui, ext.gadget.citoid-helper (wikt.citoid), ext.gadget.StorageUtils (ObjectStorage)
// Formats a string using {0}, {1}, ... placeholders.
if (!String.prototype.format) {
String.prototype.format = function(var_args) {
var args = arguments;
return this.replace(/{(\d+)}/g, function(match, number) {
return typeof args[number] !== "undefined" ? args[number] : match;
});
};
}
$(function() {
"use strict";
// Skip pages where this gadget shouldn't run.
if (
mw.config.get("wgPageName") !== "Wîkîferheng:ceribandin/nimûne" &&
mw.config.get("wgNamespaceNumber") !== 108 &&
mw.config.get("wgNamespaceNumber") !== 0 ||
mw.config.get("wgPageName") === "Destpêk" ||
mw.config.get("wgArticleId") === 0
) return;
console.log("Gadget-wikt.add-examples.js dest pê dike…");
var NAME = "[[Mediawiki:Gadget-wikt.add-examples|Nimûne zêde bike]]";
var VERSION = "1.7";
// Persists form drafts via MediaWiki:Gadget-StorageUtils.js (localStorage, falling back to a cookie) so unsaved text survives a failed submit.
var draftStorage = new ObjectStorage("add_examples_draft", 1);
// Citoid logic lives in MediaWiki:Gadget-citoid-helper.js; it's a registered gadget dependency, so wikt.citoid is already loaded by the time this file runs.
// "width" controls field layout below (see _setSourceType): "narrow" for short fields (year, pages, ...), "wide" for fields that always take their own row, unset for medium fields (two-ish per row).
var jederDefs = {
"jêder-kitêb": {
"label": "Kitêb",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cih", "label": "Cih" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "sala weşandinê", "label": "Sala weşandinê", "width": "narrow" },
{ "key": "çap", "label": "Çap", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "isbn", "label": "ISBN", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-kovar": {
"label": "Kovar",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "nivîskar2", "label": "Nivîskar 2" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "kovar", "label": "Kovar" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "weşanxane", "label": "Weşanxane" },
{ "key": "cild", "label": "Cild", "width": "narrow" },
{ "key": "hejmar", "label": "Hejmar", "width": "narrow" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "rûpel", "label": "Rûpel", "width": "narrow" },
{ "key": "url", "label": "URL", "width": "wide" }
]
},
"jêder-websîte": {
"label": "Websîte",
"fields": [
{ "key": "nivîskar", "label": "Nivîskar" },
{ "key": "sernav", "label": "Sernav", "multiline": true, "width": "wide" },
{ "key": "sernavê orjînal", "label": "Sernavê orjînal", "multiline": true, "width": "wide" },
{ "key": "terciman", "label": "Terciman" },
{ "key": "websîte", "label": "Websîte" },
{ "key": "url", "label": "URL", "width": "wide" },
{ "key": "arşîv", "label": "Arşîva URLê", "width": "wide" },
{ "key": "sal", "label": "Sal", "width": "narrow" },
{ "key": "tarîx", "label": "Tarîx", "width": "narrow" }
]
}
};
var languages = {};
var sectionNames = {
"Navdêr": ["Navdêr"],
"Formeke navdêrê": ["Formeke navdêrê"],
"Lêker": ["Lêker"],
"Formeke lêkerê": ["Formeke lêkerê"],
"Rengdêr": ["Rengdêr"],
"Formeke rengdêrê": ["Formeke rengdêrê"],
"Hoker": ["Hoker"],
"Formeke hokerê": ["Formeke hokerê"],
"Serenav": ["Serenav"],
"Formeke serenavê": ["Formeke serenavê"],
"Artîkel": ["Artîkel"],
"Baneşan": ["Baneşan"],
"Bazinedaçek": ["Bazinedaçek"],
"Biwêj": ["Biwêj"],
"Cînav": ["Cînav"],
"Daçek": ["Daçek"],
"Girêdek": ["Girêdek"],
"Gotineke pêşiyan": ["Gotineke pêşiyan"],
"Hejmar": ["Hejmar"],
"Hevok": ["Hevok"],
"Îfade": ["Îfade"],
"Kurtenav": ["Kurtenav"],
"Navgir": ["Navgir"],
"Paşdaçek": ["Paşdaçek"],
"Paşgir": ["Paşgir"],
"Pêşdaçek": ["Pêşdaçek"],
"Pêşgir": ["Pêşgir"],
"Pirtik": ["Pirtik"],
"Reh": ["Reh"],
"Sembol": ["Sembol"],
"Tîp": ["Tîp"]
};
// Template names treated as "real examples" (an allow-list, not the old deny-list) so annotation templates like synonyms/antonyms/alt-forms aren't mistaken for examples.
var exampleTemplateNames = ["jêder", "nm"].concat(Object.keys(jederDefs));
// Returns the template name starting a "#:"/"#*" line (e.g. "jêder" from "#* {{jêder|ku|...}}"), or null if the line doesn't start with a template.
function getLineTemplateName(line) {
var m = /^#[:*]\s*\{\{\s*([^|}]+)/.exec(line);
return m ? m[1].trim() : null;
}
// Returns the index of the line where a (possibly multi-line) template block starting at startIndex closes its {{ }} braces, so multi-line templates are treated as one block.
function findBlockEnd(lines, startIndex) {
var depth = 0;
var i = startIndex;
for (; i < lines.length; i++) {
var opens = (lines[i].match(/\{\{/g) || []).length;
var closes = (lines[i].match(/\}\}/g) || []).length;
depth += opens - closes;
if (depth <= 0) {
break;
}
}
return i;
}
// Ported from start.js: converts literal line breaks typed/pasted into the example/translation/transcription boxes into wikitext <br> tags, since a raw newline would break the single-line "#*" wikitext structure.
function nlToBr(text) {
return text ? text.replace(/\r\n|\r|\n/g, "<br>") : text;
}
function escapeHtmlForBackdrop(str) {
return String(str)
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">");
}
// Mirrors a textarea's text with a small marker after each line that's followed by an actual typed/pasted linebreak, rendered into a transparent backdrop behind the textarea (see ensureLinebreakBackdrop()).
function buildLinebreakBackdropHtml(text) {
var lines = text.split(/\r\n|\r|\n/);
return $.map(lines, function(line, i) {
var isLast = i === lines.length - 1;
return escapeHtmlForBackdrop(line) +
(isLast ? "" : "<mark class='add-example-linebreak-mark'>↵</mark>\n");
}).join("");
}
// Copies the metrics that affect where text wraps/lands (font, line height, padding, border) from the real textarea onto its backdrop via computed style, since the backdrop is a plain <div>, not a themed OOUI input.
function syncLinebreakBackdropMetrics(textarea, backdrop) {
var cs = window.getComputedStyle(textarea[0]);
backdrop.css({
"box-sizing": cs.boxSizing,
"padding-top": cs.paddingTop,
"padding-right": cs.paddingRight,
"padding-bottom": cs.paddingBottom,
"padding-left": cs.paddingLeft,
"border-width": cs.borderWidth,
"border-style": "solid",
"font-family": cs.fontFamily,
"font-size": cs.fontSize,
"font-weight": cs.fontWeight,
"line-height": cs.lineHeight,
"letter-spacing": cs.letterSpacing
});
}
// Lazily inserts the transparent backdrop layer used to mark linebreaks, as a sibling of the textarea inside its existing OOUI input wrapper (which OOUI already positions relatively for icon overlays), rather than start.js's approach of wrapping the textarea in a new div — that would risk disturbing OOUI's own layout of the input. Safe to call more than once; the backdrop is cached.
function ensureLinebreakBackdrop(textarea) {
var existing = textarea.data("addExampleLinebreakBackdrop");
if (existing) {
return existing;
}
var $parent = textarea.parent();
if ($parent.css("position") === "static") {
$parent.css("position", "relative");
}
var backdrop = $("<div aria-hidden='true'></div>").addClass("add-example-linebreak-backdrop");
textarea.before(backdrop);
textarea.data("addExampleLinebreakBackdrop", backdrop);
textarea.on("scroll.addExampleLinebreak", function() {
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
});
return backdrop;
}
// Flags a textarea (via CSS class, for the border tint + tooltip) while it contains a typed/pasted linebreak, so the user notices before it's silently turned into <br> on submit; marks only the exact point of the break via the mirrored backdrop.
function highlightLinebreak(el) {
var textarea = $(el);
var text = textarea.val();
var hasBreak = /\r|\n/.test(text);
textarea
.toggleClass("add-example-has-linebreak", hasBreak)
.attr("title", hasBreak ? "Xeta nû dê wek <br> bê nivîsandin" : "");
if (!hasBreak) {
var cached = textarea.data("addExampleLinebreakBackdrop");
if (cached) {
cached.hide();
}
textarea.removeClass("add-example-has-linebreak-source");
return;
}
var backdrop = ensureLinebreakBackdrop(textarea);
textarea.addClass("add-example-has-linebreak-source");
syncLinebreakBackdropMetrics(textarea, backdrop);
backdrop.html(buildLinebreakBackdropHtml(text)).show();
backdrop.scrollTop(textarea.scrollTop()).scrollLeft(textarea.scrollLeft());
}
// Wires linebreak detection onto an OOUI multiline widget, matching start.js's scope: only the quote/example text and its translation/transcription, not bibliographic fields. Uses OOUI's own "change" event rather than the raw <textarea> "input" event start.js listens to, since our fields can also be set programmatically (Clear button, draft restore) via setValue(), which doesn't fire a native DOM input event.
function watchForLinebreaks(widget) {
widget.on("change", function() {
highlightLinebreak(widget.$input[0]);
});
}
// Get names of all defined languages
var api = new mw.Api();
api.get({
action: "query",
format: "json",
titles: "MediaWiki:Gadget-translation editor.js/ziman.json",
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
languages = JSON.parse(data.query.pages[pageID].revisions[0].slots.main["*"]);
break;
}
}
});
// .example/.benimune = old Şablon:jêder hidden marker; .h-usage-example/.h-quotation = Modul:usex/Modul:quote containers used directly by Şablon:nimûne and jêder-* templates now that the old marker is gone.
$("ul > li > .example, ul > li > .benimune, ul > li > .h-usage-example, ul > li > .h-quotation").each(function() {
var $element = $(this);
var $item = $element.parent();
if (!$item.next().length) {
// Get example’s language
// bdi[lang] = old hidden marker; .e-example[lang]/.e-quotation[lang] = Modul:usex/Modul:quote already put lang on the visible span.
var language = $item.find(".e-example[lang], .e-quotation[lang], bdi[lang]")[0].lang;
if (language === "ku-Latn") {
language = "ku";
}
console.log('Language:', language);
// Get section and indices of associated definition
var definitionLevel = [];
var $definitionItem = $item.parent().parent();
var $topItem;
do {
// Skip MediaWiki's empty <li class="mw-empty-elt"> placeholders so indices match the real "#" lines in wikitext (see submit()).
definitionLevel.splice(0, 0, $definitionItem.prevAll("li:not(.mw-empty-elt)").length);
$topItem = $definitionItem;
$definitionItem = $definitionItem.parent().parent();
} while ($definitionItem.prop("tagName") === "LI");
var $section = $($topItem.parent().prevAll(".mw-heading3, h3").get(0));
if ($section.length) {
definitionLevel.splice(0, 0, $section.find("h3").attr("id"));
} else {
console.warn("Gadget-wikt.add-examples: Section heading not found");
// TODO: why does this happen? mw.notify("Beş nehat dîtin. Jkx li WF:Dîwanê vê problemê ragihînin!");
return;
}
// Remove default edit link if present
var $defaultEditLink = $item.find("span.example > span.stubedit");
if ($defaultEditLink.length) {
$defaultEditLink.remove();
}
// Add a nice button to open the form
var $formItem = $("<li>");
var $button = $("<a href='#'>Nimûneyeke bikaranînê lê zêde bike</a>");
$button.css("color", "var( --color-subtle, #777777 )");
$button.on("click", function() {
if (!$button.form) {
$formItem.append(new Form($item, $button, language, definitionLevel).$element);
console.log("$item", $item);
console.log("$button", $button);
console.log("language", language);
console.log("definitionLevel", definitionLevel);
}
$button.form.setVisible(true);
return false;
});
$item.after($formItem.append($button));
}
});
// Constructor for the edit form; lastExample/button/language/definitionLevel identify where the form attaches and what it edits.
function Form($lastExample, $button, language, definitionLevel) {
var self = this;
this._language = language;
this._definitionLevel = definitionLevel;
this._$lastExample = $lastExample;
this._$button = $button;
this._$button.form = this;
this._currentJederKey = "";
this._jederFieldWidgets = {};
this._textInput = new OO.ui.MultilineTextInputWidget();
var textInputLayout = new OO.ui.FieldLayout(this._textInput, {
label: "Metna nimûneyê",
align: "top",
});
this._textInput.on("change", function(value) {
self._applyButton.setDisabled(!value);
});
watchForLinebreaks(this._textInput);
// Source type dropdown: free text, a jêder-* template, or "citoid" (a pseudo key, not in jederDefs) meaning "not yet detected" — the default, switched automatically once a Citoid fetch succeeds (see _fillFromCitoid).
var sourceTypeMenuItems = [
new OO.ui.MenuOptionWidget({ data: "citoid", label: "Bi Citoidê otomatîk zêde bike" }),
new OO.ui.MenuOptionWidget({ data: "", label: "Bi destê xwe binivîsim" }),
];
for (var jederKey in jederDefs) {
if (jederDefs.hasOwnProperty(jederKey)) {
sourceTypeMenuItems.push(new OO.ui.MenuOptionWidget({
data: jederKey,
label: jederDefs[jederKey].label,
}));
}
}
this._sourceTypeDropdown = new OO.ui.DropdownWidget({
menu: { items: sourceTypeMenuItems },
label: "Bi Citoidê otomatîk zêde bike",
});
var sourceTypeLayout = new OO.ui.FieldLayout(this._sourceTypeDropdown, {
label: "Şablona çavkaniyê",
align: "top",
});
this._sourceTypeDropdown.getMenu().on("choose", function(menuOption) {
self._setSourceType(menuOption.getData());
});
this._sourceInput = new OO.ui.MultilineTextInputWidget();
this._sourceInputLayout = new OO.ui.FieldLayout(this._sourceInput, {
label: "Çavkaniya nimûneyê",
align: "top",
});
// Always visible in every mode (free text included) — submit() reads this unconditionally as the "url=" parameter, and it's also the query field the Citoid button below fetches from.
this._sourceURLInput = new OO.ui.TextInputWidget({
icon: "link",
placeholder: "https://… an jî DOI/ISBN",
});
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
// Matches the wording just constructed above, so the initial _setSourceType("citoid") call at the end of this constructor doesn't needlessly recreate an identical layout.
this._urlFieldIsFreeTextWording = false;
this._citoidButton = new OO.ui.ButtonWidget({
label: "Ji Citoid tijî bike",
icon: "download",
flags: ["progressive"],
title: "Li gorî URL, DOI an ISBNya jorîn, agahiyan ji Citoid tîne û qadên şablona jêder-* otomatîk tijî dike.",
classes: ["add-example-citoid-fetch"],
});
this._citoidButton.on("click", this._fillFromCitoid.bind(this));
// Clears the URL field and any filled jêder-* fields without touching the example text/translation.
this._citoidClearButton = new OO.ui.ButtonWidget({
label: "Vala bike",
icon: "trash",
framed: false,
title: "Lînkê û qadên jêder-* yên vê beşê vala bike",
classes: ["add-example-citoid-clear"],
});
this._citoidClearButton.on("click", function() {
self._sourceURLInput.setValue("");
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setValue("");
});
});
var citoidButtonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-citoid-buttons"],
items: [this._citoidButton, this._citoidClearButton],
});
// Fieldset that holds the fields for whichever jêder-* template is selected.
this._jederFieldsFieldset = new OO.ui.FieldsetLayout({
classes: ["add-example-jeder-fields"],
});
// Citoid button + jêder-* fields, framed as one "template" step — unlike the URL field above, this box only makes sense once a jêder-* template is active (there's nothing here for Citoid to fill in free-text mode, since it has no bibliographic fields to populate), so it's hidden for free text (see _setSourceType).
this._citoidBox = new OO.ui.PanelLayout({
expanded: false,
framed: true,
padded: true,
classes: ["add-example-citoid-box"],
content: [
new OO.ui.LabelWidget({
label: "Ji Citoid an bi destan tijî bike:",
classes: ["add-example-citoid-box-title"],
}),
citoidButtonsLayout,
this._jederFieldsFieldset,
],
});
this._translationInput = new OO.ui.MultilineTextInputWidget();
var translationInputLayout = new OO.ui.FieldLayout(this._translationInput, {
label: "Tercimeya kurmancî ya nimûneyê",
align: "top",
});
watchForLinebreaks(this._translationInput);
this._transcriptionInput = new OO.ui.MultilineTextInputWidget();
var transcriptionInputLayout = new OO.ui.FieldLayout(this._transcriptionInput, {
label: "Transkrîpsiyona nimûneyê",
align: "top",
help: "Tenê lê zêde bike eger metna di nimûneyê de bi alfabeya latînî nehatibe nivîsandin.",
helpInline: true,
});
watchForLinebreaks(this._transcriptionInput);
this._applyButton = new OO.ui.ButtonWidget({
label: "Biweşîne",
icon: "check",
title: "Nimûneyê ji bo vê tarîfê nimûneyê lê zêde bike",
flags: ["progressive", "primary"],
disabled: true,
});
this._applyButton.on("click", this.submit.bind(this));
this._cancelButton = new OO.ui.ButtonWidget({
label: "Betal bike",
icon: "close",
title: "Formê bigire",
flags: ["destructive"],
});
this._cancelButton.on("click", function() {
self.setVisible(false);
});
this._clearButton = new OO.ui.ButtonWidget({
label: "Paqij bike",
icon: "trash",
title: "Hemû qadan vala bike û pêşnûyisên hilanîbûyî jê bibe",
});
this._clearButton.on("click", function() {
self.clear();
self._clearDraft();
});
// Native CSS spinner (see Gadget-wikt.add-examples.css) instead of an external Commons GIF, so there's no network request and it matches dark/light mode.
this._loadingImage = new OO.ui.Widget({
classes: ["add-example-loading"],
});
this._loadingImage.$element.append($('<span class="add-example-spinner" aria-hidden="true"></span>'));
this._loadingImage.toggle(false);
var content = [textInputLayout, sourceTypeLayout, this._sourceInputLayout, this._sourceURLInputLayout, this._citoidBox];
if (language !== "ku") {
content.push(translationInputLayout, transcriptionInputLayout);
}
// Saved on the instance (not just a local var) so _setSourceType() can swap the URL field's label/help wording in and out of it when switching to/from free text.
this._fieldsLayout = new OO.ui.FieldsetLayout({
label: "Nimûneyeke bi " + (languages[this._language] || "zimanekî nenas") + " lê zêde dikî.",
items: content,
classes: ["add-example-fieldset"],
});
var buttonsLayout = new OO.ui.HorizontalLayout({
classes: ["add-example-main-buttons"],
items: [
this._applyButton,
this._cancelButton,
this._clearButton,
this._loadingImage,
]
});
this._frame = new OO.ui.PanelLayout({
id: "add-example-definition-{0}-form".format(this._definitionLevel.join("-")),
classes: ["add-example-form"],
expanded: false,
content: [
this._fieldsLayout,
buttonsLayout,
],
});
// Default to "citoid" mode; selectItemByData() doesn't fire "choose" (that only fires for interactive selection), so _setSourceType() must also be called explicitly to set up the initial UI.
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
}
Form.prototype = {
// Returns the jQuery object for this form.
get $element() {
return this._frame.$element;
},
// Switches the source section between free text, Citoid auto-detect (no template chosen yet), and a specific jêder-* template, rebuilding the field list to match. The URL field itself is always visible in every mode (see the constructor); only the free-text textarea, the Citoid button box, and the manual jêder-* fields toggle here.
_setSourceType: function(jederKey) {
var self = this;
this._currentJederKey = jederKey;
this._jederFieldsFieldset.clearItems();
this._jederFieldWidgets = {};
var isRealJederKey = jederKey && jederDefs[jederKey];
if (isRealJederKey) {
var def = jederDefs[jederKey];
var items = [];
def.fields.forEach(function(field) {
var widget = field.multiline
? new OO.ui.MultilineTextInputWidget({ rows: 2, autosize: false })
: new OO.ui.TextInputWidget();
self._jederFieldWidgets[field.key] = widget;
var widthClass = field.width === "narrow" ? "add-example-field-narrow"
: field.width === "wide" ? "add-example-field-wide"
: "add-example-field-medium";
items.push(new OO.ui.FieldLayout(widget, {
label: field.label,
align: "top",
classes: [widthClass],
}));
});
this._jederFieldsFieldset.addItems(items);
}
this._jederFieldsFieldset.toggle(!!isRealJederKey);
// Free text textarea only for "" (free text); hidden for "citoid" and any real jêder-* key.
this._sourceInputLayout.toggle(jederKey === "");
// Citoid button box: hidden for free text (nothing there for it to fill in), shown for "citoid" auto-detect and any real jêder-* key.
this._citoidBox.toggle(jederKey !== "");
// URL field wording: plain "attach a link" phrasing for free text (no Citoid box visible there to explain), Citoid-oriented phrasing otherwise. Only recreated when actually crossing that boundary, not on every dropdown change (e.g. switching between two jêder-* types keeps the same wording, no need to touch the DOM).
var isFreeText = jederKey === "";
if (this._urlFieldIsFreeTextWording !== isFreeText) {
this._urlFieldIsFreeTextWording = isFreeText;
var index = this._fieldsLayout.items.indexOf(this._sourceURLInputLayout);
this._fieldsLayout.removeItems([this._sourceURLInputLayout]);
this._sourceURLInputLayout = new OO.ui.FieldLayout(this._sourceURLInput, isFreeText ? {
label: "Adresa webê ya nimûneyê",
align: "top",
help: "Tenê binivîse eger lînk jixwe di referansa çavkaniyê de tinebe.",
helpInline: true,
} : {
label: "Lînk, DOI an ISBNya çavkaniyê",
align: "top",
help: "Ev dibe lînka çavkaniyê (url=). Ji bo şablonên jêder-*, dikare bi Citoid an bi destan jî bên dagirtin.",
helpInline: true,
});
this._fieldsLayout.addItems([this._sourceURLInputLayout], index);
}
},
// Fetches data from MediaWiki:Gadget-citoid-helper.js, picks the matching jêder-* template, and fills its empty fields; citoid-helper is a registered gadget dependency so it's already loaded here.
_fillFromCitoid: function() {
var self = this;
var query = this._sourceURLInput.getValue().trim();
if (!query) {
mw.notify("Ji kerema xwe re pêşî URL, DOI an ISBNyekê binivîse.");
return;
}
this._citoidButton.setDisabled(true);
this._loadingImage.toggle(true);
wikt.citoid.fetchJederFields(query).then(function(result) {
// Only let Citoid pick the template type when nothing's been chosen yet (the "citoid" auto-detect default). If the user already selected a specific jêder-* type (or free text), that choice is respected — e.g. picking "Websîte" and fetching a tweet must not silently switch to "Kovar" just because Citoid guessed differently.
var wasAutoDetect = self._currentJederKey === "citoid";
if (wasAutoDetect) {
var menu = self._sourceTypeDropdown.getMenu();
var item = menu.findItemFromData(result.jederKey);
if (item) {
menu.chooseItem(item); // this calls _setSourceType(jederKey) automatically
}
}
var targetJederKey = self._currentJederKey;
// Fields Citoid returned were shaped for its own detected type; if the active template differs (the case above where the user's choice was kept), re-derive fields for that template instead so e.g. "Websîte" still gets its own website-shaped fields (websîte, tarîx, ...) rather than leftover kovar-shaped ones.
var fields = targetJederKey === result.jederKey ? result.fields : wikt.citoid.dataToJederFields(targetJederKey, result.raw);
Object.keys(fields).forEach(function(key) {
var widget = self._jederFieldWidgets[key];
if (widget && !widget.getValue()) {
widget.setValue(fields[key]);
}
});
mw.notify("Agahî ji Citoid hatin barkirin.");
}, function(errorMsg) {
mw.notify(typeof errorMsg === "string" ? errorMsg : "Nekarî agahiyan ji Citoid bistîne. Kontrol bike ka URL/DOI/ISBN rast e.");
}).always(function() {
self._citoidButton.setDisabled(false);
self._loadingImage.toggle(false);
});
},
// Toggles the visibility of this form and restores any saved draft when shown.
setVisible: function(visible) {
this._$button.toggle(!visible);
this._frame.toggle(visible);
if (visible) {
var draft = draftStorage.Get() || {};
if (!this._textInput.getValue() && draft.text) {
this._textInput.setValue(draft.text);
}
if (!this._sourceInput.getValue() && draft.source) {
this._sourceInput.setValue(draft.source);
}
if (!this._sourceURLInput.getValue() && draft.sourceURL) {
this._sourceURLInput.setValue(draft.sourceURL);
}
if (!this._translationInput.getValue() && draft.translation) {
this._translationInput.setValue(draft.translation);
}
if (!this._transcriptionInput.getValue() && draft.transcription) {
this._transcriptionInput.setValue(draft.transcription);
}
}
},
// Removes any saved draft (localStorage/cookie via MediaWiki:Gadget-StorageUtils.js) so it can't resurface on other pages.
_clearDraft: function() {
draftStorage.Set({});
},
// Clears all fields in this form.
clear: function() {
this._textInput.setValue("");
this._sourceInput.setValue("");
this._sourceURLInput.setValue("");
this._translationInput.setValue("");
this._transcriptionInput.setValue("");
this._sourceTypeDropdown.getMenu().selectItemByData("citoid");
this._setSourceType("citoid");
},
// Generates and submits the wikicode, then inserts the resulting HTML element if no errors occurred.
submit: function() {
var self = this;
self._textInput.setDisabled(true);
self._sourceInput.setDisabled(true);
self._sourceURLInput.setDisabled(true);
self._translationInput.setDisabled(true);
self._transcriptionInput.setDisabled(true);
self._sourceTypeDropdown.setDisabled(true);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(true);
});
// self._disableTranslationChk.setDisabled(true);
this._applyButton.setDisabled(true);
this._clearButton.setDisabled(true);
this._loadingImage.toggle(true);
var source = this._sourceInput.getValue().trim();
var sourceURL = this._sourceURLInput.getValue().trim();
var text = this._textInput.getValue().trim();
// If a jêder-* template is selected, collect its filled-in fields.
var jederParams = [];
if (this._currentJederKey && jederDefs[this._currentJederKey]) {
jederDefs[this._currentJederKey].fields.forEach(function(field) {
var widget = self._jederFieldWidgets[field.key];
var value = widget ? widget.getValue().trim() : "";
if (value) {
jederParams.push(field.key + "=" + value);
}
});
}
var usingJederTemplate = this._currentJederKey && jederParams.length > 0;
var minakAnNa, sablon;
if (usingJederTemplate) {
// The jêder-* template itself is used as the template, not as the "2=" content.
minakAnNa = "*";
sablon = this._currentJederKey;
} else if (source || sourceURL) {
minakAnNa = "*";
sablon = "jêder";
} else {
minakAnNa = ":";
sablon = "nm";
}
var listMarker = "".padStart(this._definitionLevel.length - 1, "#") + minakAnNa;
var title = mw.config.get('wgTitle');
// jêder-* template, jêder, or nimûne
var code = listMarker + " {{" + sablon;
// 1= language code
code += "|" + this._language;
if (usingJederTemplate) {
// Fields of the selected jêder-* template, passed straight through as its parameters.
jederParams.forEach(function(param) {
code += "|" + param;
});
} else {
// 2= source (free text)
if (source) {
code += "|2=" + source;
}
if (sourceURL) {
code += "|url=" + sourceURL;
}
}
// jêgirtin/nimûne (quotation text)
code += "|";
if (sablon !== "nm") {
code += "jêgirtin=";
}
// bold the page title, then convert any literal linebreak in the example text to <br> (see nlToBr) so it can't break the single-line "#*" wikitext
code += nlToBr(text.replace(new RegExp("(" + title + "([^( |,|;|?|.|!)]+)?)", "ig"), "'''$1'''"));
if (this._language !== "ku") {
var translation = nlToBr(this._translationInput.getValue().trim());
var transcription = nlToBr(this._transcriptionInput.getValue().trim());
if (translation) {
code += "|tercime=" + translation;
}
if (transcription) {
code += "|tr=" + transcription;
}
}
code += "}}";
// var escapedLangCode = languages[this._language].charAt(0).toUpperCase() + languages[this._language].slice(1);
// console.log("escapedLangCode: ", escapedLangCode);
var sectionIDPattern = new RegExp("^([\\wîêçş_]+?)_?(\\d+)?_?(\\d+)?$");
console.log("this._definitionLevel[0]: ", this._definitionLevel[0]);
var matchSectionID = sectionIDPattern.exec(this._definitionLevel[0]);
//var isInflection;
var sectionType = matchSectionID[1].replace(/_/, ' ');
sectionType = sectionType.replace(/_\d+$/, '');
console.log("sectionType: ", sectionType);
var sectionNum = matchSectionID[2] ? parseInt(matchSectionID[2]) : "";
console.log("Section Number:", sectionNum);
// Insert new example into page’s code
api.get({
action: "query",
titles: mw.config.get("wgPageName"),
prop: "revisions",
rvprop: "content",
rvslots: "main",
}).then(function(data) {
var pageContent;
for (var pageID in data.query.pages) {
if (data.query.pages.hasOwnProperty(pageID)) {
// noinspection JSUnresolvedVariable
pageContent = data.query.pages[pageID].revisions[0].slots.main["*"];
break;
}
}
// Look for correct language section
var langSectionRegex = new RegExp("==[ ]*{{ziman\\|{0}}}[ ]*==".format(self._language));
var langSectionIndex = pageContent.search(langSectionRegex);
console.log("langSectionIndex:", langSectionIndex);
if (langSectionIndex === -1) {
console.log("langSectionIndex === -1");
error("Xeletiyeke bi koda zimanî heye. Koda zimanî:" + self._language);
return;
}
// Look for correct word type section
var lines = pageContent.slice(langSectionIndex).split("\n");
var sectionNamesRegex = Object.keys(sectionNames).join('|');
var sectionRegex = new RegExp('^===[ ]*(' + sectionNamesRegex + ')\\s*(\\d+)?');
var targetLineIndex;
for (targetLineIndex = 0; targetLineIndex < lines.length; targetLineIndex++) {
var line = lines[targetLineIndex];
console.log("line:", line);
var matchSection = sectionRegex.exec(line);
if (matchSection) {
console.log("matchSection:", matchSection[1]);
// Extract section name and number from the matched result
var matchedSectionName = matchSection[1];
var matchedSectionNum = matchSection[2]; // It could be undefined
if (!sectionNames[sectionType]) {
error('Navê beşê xelet e. Di beşên "Ji wêjêyê" û "Ji wêjêya klasîk" ev amûr nayê bikaranîn.');
return; // Exit the function
}
// Check if the matched section name is in the expected list
if (sectionNames[sectionType].includes(matchedSectionName)) {
// Check if the line includes the section number (if present)
if (!matchedSectionNum || line.includes(" " + matchedSectionNum)) {
// Add more conditions if needed for inflection, e.g., (isInflection === line.includes("Formeke "))
break;
}
}
}
}
if (targetLineIndex === lines.length) {
console.log("targetLineIndex === lines.length");
error("Di navê beşê de xeletî heye. Îhtimalen bi vî navê beşê çend heb hene.");
return;
}
// Look for correct definition
var defIndex = -1;
var level = 1;
for (; targetLineIndex < lines.length; targetLineIndex++) {
var m = /^(#+)[^*#:]/.exec(lines[targetLineIndex]);
console.log("lines[targetLineIndex]:", lines[targetLineIndex]);
if (m) {
console.log("m:", m);
if (level === m[1].length) {
console.log("m[1]:", m[1]);
defIndex++;
console.log("defIndex:", defIndex);
if (self._definitionLevel[level] === defIndex) {
console.log("self._definitionLevel[level] === defIndex");
console.log("self._definitionLevel[level]", self._definitionLevel[level]);
if (level === self._definitionLevel.length - 1) {
console.log("level:", level);
break;
} else {
level++;
defIndex = -1;
}
}
}
}
}
// Find where to insert within this definition's "#:"/"#*" block: walk lines after the definition (findBlockEnd() tracks multi-line templates), and use exampleTemplateNames to tell real examples from annotations (synonyms, antonyms, alt-forms, etc.) rather than hard-blocking specific names.
var insertionFound = false;
var lastRelevantBlockEnd = -1;
var isJederFamily = (sablon === "jêder" || Object.prototype.hasOwnProperty.call(jederDefs, sablon));
var scanIndex = targetLineIndex + 1;
var emptyTemplate = false;
for (; scanIndex < lines.length; scanIndex++) {
var scanLine = lines[scanIndex];
if (!scanLine.startsWith("#:") && !scanLine.startsWith("#*")) {
// Left this definition's "#:"/"#*" block (e.g. a new definition or section starts).
break;
}
var blockEnd = findBlockEnd(lines, scanIndex);
var templateName = getLineTemplateName(scanLine);
var isExampleLine = templateName !== null &&
exampleTemplateNames.indexOf(templateName) !== -1;
if (isJederFamily) {
// jêder-family examples go after all "#:"/"#*" lines of this definition (both real examples and annotations).
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
} else if (sablon === "nm") {
// "nm" examples go before any "#*" line, but after "#:" lines.
if (scanLine.startsWith("#*")) {
break;
}
lastRelevantBlockEnd = blockEnd;
insertionFound = true;
}
scanIndex = blockEnd; // Skip past the whole (possibly multi-line) block
}
var insertAt = lastRelevantBlockEnd >= 0 ? lastRelevantBlockEnd + 1 : scanIndex;
if (lastRelevantBlockEnd >= 0) {
emptyTemplate = /#+\*\s*{{[ ]*b?ê?(nimûne|mînak|jêgirtin)\??\s*\|\s*\|?\s*[^|}]+}}/.test(lines[lastRelevantBlockEnd]);
}
if (emptyTemplate) {
console.log("empty Template found", sablon);
// Replace empty template with new example
lines.splice(lastRelevantBlockEnd, 1, code);
} else {
console.log("empty Template not found", sablon);
// Insert the new example (right after the definition if it had no existing "#:"/"#*" lines yet, or after the relevant block otherwise).
lines.splice(insertAt, 0, code);
}
// Submit new page content
api.edit(mw.config.get("wgPageName"), function(_) {
return {
text: pageContent.slice(0, langSectionIndex) + lines.join("\n"),
summary: "+nimûneya bikaranînê bi amûra « {0} » (v{1}).".format(NAME, VERSION),
};
}).then(function() {
api.parse(code).done(function(data) {
var $renderedExample = $(data).find("ul > li").html();
var $item;
// Insert rendered example into page
if (emptyTemplate) {
self._$lastExample.html($renderedExample);
$item = self._$lastExample;
} else {
self._$lastExample.after($item = $("<li>").append($renderedExample));
}
$item.css("background-color", "lightgreen");
setTimeout(function() {
$item.css("background-color", "inherit");
}, 1000);
self._$lastExample = $item;
});
self.setVisible(false);
self.clear();
self._clearDraft();
reenable();
});
});
function error(errorMessage) {
mw.notify(errorMessage || "Nimûne nehat weşandin, îhtimalen rûpel hate guhartin. Ji kerema xwe re rûpelê dîsa bar bike û dîsa biceribîne.");
draftStorage.Set({
text: self._textInput.getValue(),
source: self._sourceInput.getValue(),
sourceURL: self._sourceURLInput.getValue(),
translation: self._translationInput.getValue(),
transcription: self._transcriptionInput.getValue(),
});
reenable();
}
function reenable() {
self._textInput.setDisabled(false);
self._sourceInput.setDisabled(false);
self._sourceURLInput.setDisabled(false);
self._translationInput.setDisabled(false);
self._transcriptionInput.setDisabled(false);
self._sourceTypeDropdown.setDisabled(false);
Object.keys(self._jederFieldWidgets).forEach(function(key) {
self._jederFieldWidgets[key].setDisabled(false);
});
// self._disableTranslationChk.setDisabled(false);
self._applyButton.setDisabled(false);
self._cancelButton.setDisabled(false);
self._clearButton.setDisabled(false);
self._loadingImage.toggle(false);
}
},
};
});
// </nowiki>
ts289rhrti7tv8u8yy5cco9wbm8jg13
Bikarhêner:Wikihez/Gadget-wikt.add-examples.css
2
1357894
6329632
6265482
2026-08-12T14:45:32Z
Wikihez
7344
6329632
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Panela gerşî ya formê: cîhek zelal a wê ji binyata rûpelê cuda bike. */
.add-example-form {
max-width: 640px;
margin-top: 0.5em;
padding: 1em;
border: 1px solid var(--border-color-base, #a2a9b1);
border-radius: 4px;
background-color: var(--background-color-neutral, #f8f9fa);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-neutral, #27292d);
}
/* Qutîka Citoid + qadên şablona jêder-*: qutîkeke cuda ya "çavkaniyê", da ku
ji qadên din bên cudakirin bi zelalî (li şûna ku hemû qad tev li hev bin). */
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-fetch {
margin: 0.25em 0 0.75em;
}
/* Qadên şablonên jêder-* (Kitêb/Kovar/Malper) di forma "Nimûne zêde bike" de piçûktir bike. */
.add-example-jeder-fields .oo-ui-fieldLayout {
margin: 2px 0;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.85em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 260px;
font-size: 0.85em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.85em;
padding: 2px 6px;
min-height: 1.8em;
line-height: 1.3;
resize: vertical;
}
/* Çavkaniya azad (jêder) û URLê hinekî mezintir bike da ku bêtir bên xwendin. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Rêzika bişkokan (Biweşîne/Betal bike/Paqij bike): valahiyeke sivik di
navbera wan de, û tixûbeke jorîn da ku ji qadên jorîn bên cudakirin. */
.add-example-form .oo-ui-horizontalLayout {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
}
/* Spînera barkirinê: CSS xwerû, ne wêneyeke ji Commons, da ku bixweber li
gorî moda tarî/ronî bê rengkirin û ne girêdayî torê ya derveyî be. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
da7u6er7tix1pxldeekml0io6bot851
6329635
6329632
2026-08-12T14:57:40Z
Wikihez
7344
6329635
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Panela gerşî ya formê: cîhek zelal a wê ji binyata rûpelê cuda bike. */
.add-example-form {
max-width: 640px;
margin-top: 0.5em;
padding: 1em;
border: 1px solid var(--border-color-base, #a2a9b1);
border-radius: 4px;
background-color: var(--background-color-neutral, #f8f9fa);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-neutral, #27292d);
}
/* Qutîka Citoid + qadên şablona jêder-*: qutîkeke cuda ya "çavkaniyê", da ku
ji qadên din bên cudakirin bi zelalî (li şûna ku hemû qad tev li hev bin). */
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
}
/* Qadên şablonên jêder-* (Kitêb/Kovar/Malper): berevajî guherîna berê, êdî
qadên têkildar li tenişta hev in (inline-block + firehiyeke sabît li gorî
cureyê qadê), û nivîs êdî pir piçûk nîne. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Çavkaniya azad (jêder) û URLê hinekî mezintir bike da ku bêtir bên xwendin. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Rêzika bişkokên sereke (Biweşîne/Betal bike/Paqij bike): valahiyeke sivik
di navbera wan de, û tixûbeke jorîn da ku ji qadên jorîn bên cudakirin.
(Ne .oo-ui-horizontalLayout bi giştî — ew jî rêzika piçûk a bişkokên
Citoid dihewîne, ku ne hewceyî vê cudakirinê ye.) */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
}
/* Spînera barkirinê: CSS xwerû, ne wêneyeke ji Commons, da ku bixweber li
gorî moda tarî/ronî bê rengkirin û ne girêdayî torê ya derveyî be. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
mbm59ogdms6w2tic72ap19m892oavh4
6329642
6329635
2026-08-12T15:15:40Z
Wikihez
7344
6329642
css
text/css
/* [[Şablon:bênimûne]]: hides the "Add an example" prompt text, not needed here */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Overall form panel: gives it a clear visual boundary from the page content. */
.add-example-form {
max-width: 640px;
width: 100%;
box-sizing: border-box;
margin-top: 0.5em;
padding: 1em;
border: 1px solid var(--border-color-base, #a2a9b1);
border-radius: 4px;
background-color: var(--background-color-neutral, #f8f9fa);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-neutral, #27292d);
}
/* Citoid box + jêder-* fields: a distinct "source" box, separate from the rest of the fields. */
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
flex-wrap: wrap; /* keep the fetch/clear buttons from overflowing on narrow screens */
}
/* jêder-* template fields (Book/Journal/Website): related fields sit side by side via inline-block + a width tier per field, instead of one full-width field per line. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
max-width: 100%; /* never wider than the container, even on narrow (mobile) screens */
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 100%;
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Make the free-text source and URL fields a bit larger for readability. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Main action row (Biweşîne/Betal bike/Paqij bike): light gap between buttons plus a top border to separate from the fields above; scoped to this class rather than .oo-ui-horizontalLayout generally, since that also matches the small Citoid button row, which doesn't need this treatment. */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
flex-wrap: wrap; /* keep buttons from overflowing on narrow screens */
}
/* Loading spinner: plain CSS, not a Commons image, so it needs no network request and matches dark/light mode. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
/* Small screens: the framed panels (form, Citoid box) get their own padding on top of the page's, which can push fixed-width fields past the viewport; keep everything full-width and let inline-block fields wrap freely instead. */
@media (max-width: 480px) {
.add-example-form {
padding: 0.75em;
}
.add-example-jeder-fields .oo-ui-fieldLayout {
margin-right: 8px;
}
}
leu2zyhv4f40clb8wdf49qx4f4ww8ro
6329643
6329642
2026-08-12T15:16:00Z
Wikihez
7344
6329643
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Overall form panel: gives it a clear visual boundary from the page content. */
.add-example-form {
max-width: 640px;
width: 100%;
box-sizing: border-box;
margin-top: 0.5em;
padding: 1em;
border: 1px solid var(--border-color-base, #a2a9b1);
border-radius: 4px;
background-color: var(--background-color-neutral, #f8f9fa);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-neutral, #27292d);
}
/* Citoid box + jêder-* fields: a distinct "source" box, separate from the rest of the fields. */
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
flex-wrap: wrap; /* keep the fetch/clear buttons from overflowing on narrow screens */
}
/* jêder-* template fields (Book/Journal/Website): related fields sit side by side via inline-block + a width tier per field, instead of one full-width field per line. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
max-width: 100%; /* never wider than the container, even on narrow (mobile) screens */
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 100%;
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Make the free-text source and URL fields a bit larger for readability. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Main action row (Biweşîne/Betal bike/Paqij bike): light gap between buttons plus a top border to separate from the fields above; scoped to this class rather than .oo-ui-horizontalLayout generally, since that also matches the small Citoid button row, which doesn't need this treatment. */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
flex-wrap: wrap; /* keep buttons from overflowing on narrow screens */
}
/* Loading spinner: plain CSS, not a Commons image, so it needs no network request and matches dark/light mode. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
/* Small screens: the framed panels (form, Citoid box) get their own padding on top of the page's, which can push fixed-width fields past the viewport; keep everything full-width and let inline-block fields wrap freely instead. */
@media (max-width: 480px) {
.add-example-form {
padding: 0.75em;
}
.add-example-jeder-fields .oo-ui-fieldLayout {
margin-right: 8px;
}
}
foi8u1bqdvzs09xm7ongrvgl022r738
6329646
6329643
2026-08-12T15:31:34Z
Wikihez
7344
6329646
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Overall form panel: gives it a clear visual boundary from the page content. */
.add-example-form {
max-width: 640px;
width: 100%;
box-sizing: border-box;
margin-top: 0.5em;
padding: 1em;
border: 1px solid var(--border-color-base, #a2a9b1);
border-radius: 4px;
background-color: var(--background-color-neutral, #f8f9fa);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-neutral, #27292d);
}
/* Citoid box + jêder-* fields: a distinct "source" box, separate from the rest of the fields. */
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
flex-wrap: wrap; /* keep the fetch/clear buttons from overflowing on narrow screens */
}
/* jêder-* template fields (Book/Journal/Website): related fields sit side by side via inline-block + a width tier per field, instead of one full-width field per line. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
max-width: 100%; /* never wider than the container, even on narrow (mobile) screens */
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 100%;
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Make the free-text source and URL fields a bit larger for readability. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Main action row (Biweşîne/Betal bike/Paqij bike): light gap between buttons plus a top border to separate from the fields above; scoped to this class rather than .oo-ui-horizontalLayout generally, since that also matches the small Citoid button row, which doesn't need this treatment. */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
flex-wrap: wrap; /* keep buttons from overflowing on narrow screens */
}
/* Loading spinner: plain CSS, not a Commons image, so it needs no network request and matches dark/light mode. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
/* Small screens: the framed panels (form, Citoid box) get their own padding on top of the page's, which can push fixed-width fields past the viewport; keep everything full-width and let inline-block fields wrap freely instead. */
@media (max-width: 480px) {
.add-example-form {
padding: 0.75em;
}
.add-example-jeder-fields .oo-ui-fieldLayout {
margin-right: 8px;
}
}
/* Ported from start.js/styles.css: warns when the example/translation/transcription boxes contain a literal linebreak, which submit() converts to <br> (see nlToBr in the JS) rather than letting it silently corrupt the single-line "#*" wikitext. */
.add-example-form textarea.add-example-has-linebreak {
border-color: var(--wikt-palette-yellow6, #ac6600) !important;
}
/* Backdrop layer behind the textarea, mirroring its text with a marker at each break point; font/padding/box-sizing/line-height are copied from the textarea via computed style (see syncLinebreakBackdropMetrics in the JS), not shared CSS classes, since most of the textarea's own sizing rules target "textarea", which this <div> wouldn't match. Created lazily, only once a textarea actually has a break. */
.add-example-linebreak-backdrop {
position: absolute;
inset: 0;
z-index: 0;
margin: 0;
overflow: hidden;
white-space: pre-wrap;
word-wrap: break-word;
color: transparent;
background: transparent !important;
border-color: transparent !important;
box-shadow: none !important;
resize: none !important;
pointer-events: none;
display: none;
}
/* Raises the textarea itself above its backdrop and makes its own background see-through, so the backdrop's break marker shows through behind the typed text. */
.add-example-form textarea.add-example-has-linebreak-source {
position: relative;
z-index: 1;
background-color: transparent !important;
}
/* The ↵ marker itself, placed right after each line that's followed by an actual typed/pasted linebreak. */
.add-example-linebreak-mark {
background-color: var(--wikt-palette-yellow6, #ac6600);
color: var(--wikt-palette-white, #fff);
border-radius: 2px;
}
90o6pd22apqs4lea6a0hp5tgxmsovcd
6329669
6329646
2026-08-12T16:51:15Z
Wikihez
7344
6329669
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Overall form panel: a white/near-white card lifted off the page with a soft shadow rather than a flat grey fill + hard border, so it reads as one modern panel instead of an old-style boxed form. */
.add-example-form {
max-width: 640px;
width: 100%;
box-sizing: border-box;
margin-top: 0.5em;
padding: 1.25em;
border: 1px solid var(--border-color-subtle, rgba(0, 0, 0, 0.08));
border-radius: 8px;
background-color: var(--background-color-base, #fff);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-base, #101418);
border-color: rgba(255, 255, 255, 0.08);
/* Shadows barely read on dark backgrounds, so this leans more on the border for separation, plus a darker/tighter shadow just to lift it off the page. */
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}
/* Citoid box + jêder-* fields: previously its own fully-bordered card, which stacked "box inside a box" with the form panel above; now a lightweight section (top divider + faint tint) instead of a second card. */
.add-example-citoid-box.oo-ui-panelLayout-framed {
border: none;
border-top: 1px solid var(--border-color-subtle, rgba(0, 0, 0, 0.08));
border-radius: 0;
background-color: var(--background-color-interactive-subtle, rgba(0, 0, 0, 0.02));
/* Negative margin matches .add-example-form's own padding (1.25em) so the tint bleeds to the card's edges instead of floating inset with a visible gap. */
padding: 1em 1.25em 0.25em;
margin: 0.75em -1.25em 0;
}
html.skin-theme-clientpref-night .add-example-citoid-box.oo-ui-panelLayout-framed {
border-top-color: rgba(255, 255, 255, 0.08);
background-color: rgba(255, 255, 255, 0.03);
}
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
flex-wrap: wrap; /* keep the fetch/clear buttons from overflowing on narrow screens */
}
/* jêder-* template fields (Book/Journal/Website): related fields sit side by side via inline-block + a width tier per field, instead of one full-width field per line. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
max-width: 100%; /* never wider than the container, even on narrow (mobile) screens */
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 100%;
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Make the free-text source and URL fields a bit larger for readability. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Main action row (Biweşîne/Betal bike/Paqij bike): light gap between buttons plus a top border to separate from the fields above; scoped to this class rather than .oo-ui-horizontalLayout generally, since that also matches the small Citoid button row, which doesn't need this treatment. */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
flex-wrap: wrap; /* keep buttons from overflowing on narrow screens */
}
/* Loading spinner: plain CSS, not a Commons image, so it needs no network request and matches dark/light mode. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
/* Small screens: the framed panels (form, Citoid box) get their own padding on top of the page's, which can push fixed-width fields past the viewport; keep everything full-width and let inline-block fields wrap freely instead. */
@media (max-width: 480px) {
.add-example-form {
padding: 0.75em;
}
.add-example-jeder-fields .oo-ui-fieldLayout {
margin-right: 8px;
}
}
/* Ported from start.js/styles.css: warns when the example/translation/transcription boxes contain a literal linebreak, which submit() converts to <br> (see nlToBr in the JS) rather than letting it silently corrupt the single-line "#*" wikitext. */
.add-example-form textarea.add-example-has-linebreak {
border-color: var(--wikt-palette-yellow6, #ac6600) !important;
}
/* Backdrop layer behind the textarea, mirroring its text with a marker at each break point; font/padding/box-sizing/line-height are copied from the textarea via computed style (see syncLinebreakBackdropMetrics in the JS), not shared CSS classes, since most of the textarea's own sizing rules target "textarea", which this <div> wouldn't match. Created lazily, only once a textarea actually has a break. */
.add-example-linebreak-backdrop {
position: absolute;
inset: 0;
z-index: 0;
margin: 0;
overflow: hidden;
white-space: pre-wrap;
word-wrap: break-word;
color: transparent;
background: transparent !important;
border-color: transparent !important;
box-shadow: none !important;
resize: none !important;
pointer-events: none;
display: none;
}
/* Raises the textarea itself above its backdrop and makes its own background see-through, so the backdrop's break marker shows through behind the typed text. */
.add-example-form textarea.add-example-has-linebreak-source {
position: relative;
z-index: 1;
background-color: transparent !important;
}
/* The ↵ marker itself, placed right after each line that's followed by an actual typed/pasted linebreak. */
.add-example-linebreak-mark {
background-color: var(--wikt-palette-yellow6, #ac6600);
color: var(--wikt-palette-white, #fff);
border-radius: 2px;
}
6clezn9ws8j3h8fvmdypltw0fozf1p1
6329670
6329669
2026-08-12T16:57:03Z
Wikihez
7344
6329670
css
text/css
/* [[Şablon:bênimûne]]: nivîsa "Nimûneyekê bide" tê jê birin, ne hewce ye */
.mw-parser-output li:has(> .benimune) {
display: none;
}
/* [[fr:MediaWiki:Gadget-wikt.add-examples.css ]] */
.add-example-form .oo-ui-inputWidget-input {
font-family: monospace !important;
font-size: 1.2em;
}
.add-example-form .add-example-fieldset {
margin-bottom: 1em;
}
/* Overall form panel: a white/near-white card lifted off the page with a soft shadow rather than a flat grey fill + hard border, so it reads as one modern panel instead of an old-style boxed form. */
.add-example-form {
max-width: 640px;
width: 100%;
box-sizing: border-box;
margin-top: 0.5em;
padding: 1.25em;
border: 1px solid var(--border-color-subtle, rgba(0, 0, 0, 0.08));
border-radius: 8px;
background-color: var(--background-color-base, #fff);
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
}
html.skin-theme-clientpref-night .add-example-form {
background-color: var(--background-color-base, #101418);
border-color: rgba(255, 255, 255, 0.08);
/* Shadows barely read on dark backgrounds, so this leans more on the border for separation, plus a darker/tighter shadow just to lift it off the page. */
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}
/* Citoid box + jêder-* fields: previously its own fully-bordered card, which stacked "box inside a box" with the form panel above; now a lightweight section (top divider + faint tint) instead of a second card. */
.add-example-citoid-box.oo-ui-panelLayout-framed {
border: none;
border-top: 1px solid var(--border-color-subtle, rgba(0, 0, 0, 0.08));
border-radius: 0;
background-color: var(--background-color-interactive-subtle, rgba(0, 0, 0, 0.04));
/* Negative margin matches .add-example-form's own padding (1.25em) so the tint bleeds to the card's edges instead of floating inset with a visible gap. */
padding: 1em 1.25em 0.25em;
margin: 0.75em -1.25em 0;
}
html.skin-theme-clientpref-night .add-example-citoid-box.oo-ui-panelLayout-framed {
border-top-color: rgba(255, 255, 255, 0.08);
background-color: rgba(255, 255, 255, 0.05);
}
.add-example-citoid-box-title {
font-weight: bold;
margin-bottom: 0.5em;
}
.add-example-citoid-buttons {
margin: 0.25em 0 0.75em;
gap: 0.5em;
flex-wrap: wrap; /* keep the fetch/clear buttons from overflowing on narrow screens */
}
/* jêder-* template fields (Book/Journal/Website): related fields sit side by side via inline-block + a width tier per field, instead of one full-width field per line. */
.add-example-jeder-fields .oo-ui-fieldLayout {
display: inline-block;
vertical-align: top;
box-sizing: border-box;
max-width: 100%; /* never wider than the container, even on narrow (mobile) screens */
margin: 4px 12px 4px 0;
}
.add-example-jeder-fields .add-example-field-narrow {
width: 110px;
}
.add-example-jeder-fields .add-example-field-medium {
width: 260px;
}
.add-example-jeder-fields .add-example-field-wide {
display: block;
width: 100%;
}
.add-example-jeder-fields .oo-ui-fieldLayout-header,
.add-example-jeder-fields .oo-ui-fieldLayout-header label {
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget {
max-width: 100%;
width: 100%;
font-size: 0.95em;
}
.add-example-jeder-fields .oo-ui-textInputWidget input,
.add-example-jeder-fields .oo-ui-textInputWidget textarea {
font-size: 0.95em;
padding: 4px 8px;
min-height: 2.2em;
line-height: 1.4;
resize: vertical;
}
/* Make the free-text source and URL fields a bit larger for readability. */
.add-example-form .add-example-jeder-fields ~ * textarea,
.add-example-form textarea:not(.add-example-jeder-fields textarea) {
font-size: 1.05em;
}
/* Main action row (Biweşîne/Betal bike/Paqij bike): light gap between buttons plus a top border to separate from the fields above; scoped to this class rather than .oo-ui-horizontalLayout generally, since that also matches the small Citoid button row, which doesn't need this treatment. */
.add-example-main-buttons {
margin-top: 0.75em;
padding-top: 0.75em;
border-top: 1px solid var(--border-color-subtle, #c8ccd1);
gap: 0.5em;
flex-wrap: wrap; /* keep buttons from overflowing on narrow screens */
}
/* Loading spinner: plain CSS, not a Commons image, so it needs no network request and matches dark/light mode. */
.add-example-spinner {
display: inline-block;
width: 1.2em;
height: 1.2em;
vertical-align: middle;
border: 2px solid var(--border-color-subtle, #c8ccd1);
border-top-color: var(--color-progressive, #36c);
border-radius: 50%;
animation: add-example-spin 0.8s linear infinite;
}
@keyframes add-example-spin {
to { transform: rotate(360deg); }
}
/* Small screens: the framed panels (form, Citoid box) get their own padding on top of the page's, which can push fixed-width fields past the viewport; keep everything full-width and let inline-block fields wrap freely instead. */
@media (max-width: 480px) {
.add-example-form {
padding: 0.75em;
}
.add-example-jeder-fields .oo-ui-fieldLayout {
margin-right: 8px;
}
}
/* Ported from start.js/styles.css: warns when the example/translation/transcription boxes contain a literal linebreak, which submit() converts to <br> (see nlToBr in the JS) rather than letting it silently corrupt the single-line "#*" wikitext. */
.add-example-form textarea.add-example-has-linebreak {
border-color: var(--wikt-palette-yellow6, #ac6600) !important;
}
/* Backdrop layer behind the textarea, mirroring its text with a marker at each break point; font/padding/box-sizing/line-height are copied from the textarea via computed style (see syncLinebreakBackdropMetrics in the JS), not shared CSS classes, since most of the textarea's own sizing rules target "textarea", which this <div> wouldn't match. Created lazily, only once a textarea actually has a break. */
.add-example-linebreak-backdrop {
position: absolute;
inset: 0;
z-index: 0;
margin: 0;
overflow: hidden;
white-space: pre-wrap;
word-wrap: break-word;
color: transparent;
background: transparent !important;
border-color: transparent !important;
box-shadow: none !important;
resize: none !important;
pointer-events: none;
display: none;
}
/* Raises the textarea itself above its backdrop and makes its own background see-through, so the backdrop's break marker shows through behind the typed text. */
.add-example-form textarea.add-example-has-linebreak-source {
position: relative;
z-index: 1;
background-color: transparent !important;
}
/* The ↵ marker itself, placed right after each line that's followed by an actual typed/pasted linebreak. */
.add-example-linebreak-mark {
background-color: var(--wikt-palette-yellow6, #ac6600);
color: var(--wikt-palette-white, #fff);
border-radius: 2px;
}
ovflq0xfwtds11roawee9ioys3xays1
Şablon:J:Shamdinani Stories I:2026
10
1357905
6329775
6265671
2026-08-12T21:41:00Z
Wikihez
7344
6329775
wikitext
text/x-wiki
{{kitêb|nivîskar=Mela Seîd Şemdînanî|amadekar={{w|David N. MacKenzie}}; {{w|Ergin Öpengin}}|sernav=Shamdinani Stories I|weşanxane=Brill|cih=Leiden|sal=~1910|serî=Brill Kurdish Studies|cild=3|sala weşandinê=2026|çap=|rûpel={{{rûpel|{{{r|}}}}}}|isbn=978-90-04-75443-0|url=https://brill.com/edcollbook-oa/title/74006?language=en}}<noinclude>{{jgcat|ku}}<templatedata>
{
"params": {
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Mela Seîd Şemdînanî, Amadekar: David N. MacKenzie; Ergin Öpengin Shamdinani Stories I"
}
</templatedata></noinclude>
kdyiozzu6sm6rvevw07nq66c2j50fal
6329776
6329775
2026-08-12T21:41:14Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:J:ku:Shamdinani Stories I:2026]] weke [[Şablon:J:Shamdinani Stories I:2026]] guhart
6329775
wikitext
text/x-wiki
{{kitêb|nivîskar=Mela Seîd Şemdînanî|amadekar={{w|David N. MacKenzie}}; {{w|Ergin Öpengin}}|sernav=Shamdinani Stories I|weşanxane=Brill|cih=Leiden|sal=~1910|serî=Brill Kurdish Studies|cild=3|sala weşandinê=2026|çap=|rûpel={{{rûpel|{{{r|}}}}}}|isbn=978-90-04-75443-0|url=https://brill.com/edcollbook-oa/title/74006?language=en}}<noinclude>{{jgcat|ku}}<templatedata>
{
"params": {
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Mela Seîd Şemdînanî, Amadekar: David N. MacKenzie; Ergin Öpengin Shamdinani Stories I"
}
</templatedata></noinclude>
kdyiozzu6sm6rvevw07nq66c2j50fal
MediaWiki:Gadget-citoid-helper.js
8
1358211
6329684
6291970
2026-08-12T18:24:32Z
Bikarhêner
3719
6329684
javascript
text/javascript
/**
* Gadget-citoid-helper.js
*
* Amûreke hevpar ji bo standina daneyên çavkaniyê ji Citoid û
* veguherandina wan bo qadên şablonên jêder-* (jêder-kitêb, jêder-kovar, jêder-websîte).
*
* BIKARANÎN JI SCRIPTEKE DIN:
*
* 1) Riya herî baş: vê rûpelê wek dependency lê zêde bike di eyarên
* gadgeta xwe de li ser [[Special:Gadgets]] (an jî MediaWiki:Gadgets-definition),
* paşê:
*
* mw.loader.using("ext.gadget.citoid-helper").then(function () {
* wikt.citoid.fetchJederFields(url).then(function (result) {
* console.log(result.jederKey, result.fields);
* });
* });
*
* 2) An jî, heke ne mimkun be gadget bi vî awayî were qeydkirin, fonksiyona
* alîkar a `wikt.citoidHelper.ensure()` a li jêr bikar bîne, ku bixweber
* vê rûpelê bar dike heke jixwe nehatibe barkirin:
*
* wikt.citoidHelper.ensure().then(function () {
* wikt.citoid.fetchJederFields(url).then(...);
* });
*
* API ya `window.wikt.citoid`:
* - getRestUrl() → {string} URLya REST a Citoid a vê wîkiyê
* - yearFromDate(dateStr) → {string} sala (4 reqem) ji rêzikeke tarîxê
* - formatAuthors(authors) → {string} navên nivîskaran wek rêzikek yekane
* - typeToJederKey(itemType) → {string} "jêder-kitêb" / "jêder-kovar" / "jêder-websîte"
* - dataToJederFields(jederKey, data) → {Object<string,string>} merheleyên şablona jêder-*
* - fetchData(query) → {jQuery.Promise<Object>} daneya xam a Citoid
* - fetchJederFields(query) → {jQuery.Promise<{jederKey, fields, raw}>} hêsankirî
* - TYPE_TO_JEDER → {Object} xerîteya itemType → jederKey
*/
window.wikt = window.wikt || {};
(function () {
"use strict";
// Heke jixwe hatibe barkirin, dubare neke.
if (window.wikt.citoid) {
return;
}
// Xerîteya cureyên Citoid (itemType) li ser şablonên me yên jêder-*
var CITOID_TYPE_TO_JEDER = {
"book": "jêder-kitêb",
"bookSection": "jêder-kitêb",
"thesis": "jêder-kitêb",
"report": "jêder-kitêb",
"manuscript": "jêder-kitêb",
"journalArticle": "jêder-kovar",
"magazineArticle": "jêder-kovar",
"newspaperArticle": "jêder-websîte",
"webpage": "jêder-websîte",
"blogPost": "jêder-websîte",
"forumPost": "jêder-websîte",
"videoRecording": "jêder-websîte",
"podcast": "jêder-websîte",
"encyclopediaArticle": "jêder-websîte"
};
/**
* Ji mantiqa [[:en:w:User:BrandonXLF/Citoid.js]]
* Vedigere URLya REST a Citoid, li gorî eyarên vê wîkiyê.
* @return {string}
*/
function getRestUrl() {
var cfg = mw.config.get("wgCitoidConfig");
var vecfg = mw.config.get("wgVisualEditorConfig");
return (cfg && (cfg.fullRestbaseUrl || cfg.wbFullRestbaseUrl)) ? (cfg.fullRestbaseUrl || cfg.wbFullRestbaseUrl) + "v1/data/citation/mediawiki/"
: (vecfg && vecfg.fullRestbaseUrl) ? vecfg.fullRestbaseUrl + "v1/data/citation/mediawiki/"
: (cfg && cfg.citoidServiceUrl) ? cfg.citoidServiceUrl + "/mediawiki/"
: "https://ku.wiktionary.org/api/rest_v1/data/citation/mediawiki/";
}
/**
* Ji tarîxa Citoid (rêzik an tarîxeke ISO) sala wê (4 reqem) derdixe.
* @param dateStr {string}
* @return {string}
*/
function yearFromDate(dateStr) {
if (!dateStr) {
return "";
}
var match = /\d{4}/.exec(dateStr);
return match ? match[0] : "";
}
/**
* Navên nivîskaran ên Citoid (rêzek [pêşnav, paşnav]) dike rêzikek yekane.
* @param authors {Array<Array<string>>}
* @return {string}
*/
function formatAuthors(authors) {
if (!Array.isArray(authors)) {
return "";
}
return authors.map(function (pair) {
return (pair || []).filter(function (part) {
return !!part;
}).join(" ");
}).filter(function (name) {
return !!name;
}).join("; ");
}
function formatEditors(editors) {
if (!Array.isArray(editors)) {
return "";
}
return editors.map(function (pair) {
return (pair || []).filter(function (part) {
return !!part;
}).join(" ");
}).filter(function (name) {
return !!name;
}).join("; ");
}
/**
* Li gorî itemType a Citoid, navê şablona jêder-* a munasib vedigerîne.
* @param itemType {string}
* @return {string} Yek ji "jêder-kitêb", "jêder-kovar" an "jêder-websîte".
*/
function typeToJederKey(itemType) {
return CITOID_TYPE_TO_JEDER[itemType] || "jêder-websîte";
}
/**
* Daneyên Citoid vediguherîne tabloyeke parametreyên şablona jêder-* (li gorî cureyê wê).
* @param jederKey {string} Yek ji "jêder-kitêb", "jêder-kovar" an "jêder-websîte".
* @param data {Object} Netîceya Citoid.
* @return {Object<string, string>}
*/
function dataToJederFields(jederKey, data) {
var out = {};
var author = formatAuthors(data.author);
var editor = formatEditors(data.editor);
if (author) { out["nivîskar"] = author; }
if (editor) { out["amadekar"] = editor; }
if (data.title) { out["sernav"] = data.title; }
if (data.url) { out.url = data.url; }
if (jederKey === "jêder-kitêb") {
if (data.publisher) { out["weşanxane"] = data.publisher; }
if (data.place) { out.cih = data.place; }
if (data.date) { out.sal = yearFromDate(data.date); }
if (data.ISBN) { out.isbn = Array.isArray(data.ISBN) ? data.ISBN[0] : data.ISBN; }
if (data.edition) { out["çap"] = data.edition; }
if (data.pages) { out["rûpel"] = data.pages; }
} else if (jederKey === "jêder-kovar") {
if (data.publicationTitle) { out.kovar = data.publicationTitle; }
if (data.publisher) { out["weşanxane"] = data.publisher; }
if (data.volume) { out.cild = data.volume; }
if (data.issue) { out.hejmar = data.issue; }
if (data.pages) { out["rûpel"] = data.pages; }
if (data.date) { out.sal = yearFromDate(data.date); }
} else if (jederKey === "jêder-websîte") {
if (data.websiteTitle) { out["websîte"] = data.websiteTitle; }
if (data.date) {
out["tarîx"] = data.date;
}
}
return out;
}
/**
* Ji Citoid daneyên çavkaniyekê tîne (li gorî URL, DOI an ISBNyê).
* @param query {string}
* @return {jQuery.Promise} Bi daneya ewil a Citoid (Object) tê safîkirin.
*/
function fetchData(query) {
var url;
try {
url = encodeURIComponent(decodeURIComponent(query));
} catch (e) {
url = encodeURIComponent(query);
}
return $.get(getRestUrl() + url).then(function (res) {
if (!res || !res[0]) {
return $.Deferred().reject("Netîceya ji Citoidê vala ye.").promise();
}
return res[0];
});
}
/**
* Fonksiyoneke hêsankirî: ji URL/DOI/ISBNyekê rasterast şablona jêder-* a munasib
* û merheleyên wê yên tijîkirî vedigerîne (fetchData + typeToJederKey + dataToJederFields
* bi hev re).
* @param query {string}
* @return {jQuery.Promise} Bi {jederKey: string, fields: Object<string,string>, raw: Object} tê safîkirin.
*/
function fetchJederFields(query) {
return fetchData(query).then(function (data) {
var jederKey = typeToJederKey(data.itemType);
return {
jederKey: jederKey,
fields: dataToJederFields(jederKey, data),
raw: data
};
});
}
window.wikt.citoid = {
getRestUrl: getRestUrl,
yearFromDate: yearFromDate,
formatAuthors: formatAuthors,
typeToJederKey: typeToJederKey,
dataToJederFields: dataToJederFields,
fetchData: fetchData,
fetchJederFields: fetchJederFields,
TYPE_TO_JEDER: CITOID_TYPE_TO_JEDER
};
/**
* Alîkar ji bo scriptên din: heke wikt.citoid hîn nehatibe barkirin,
* vê rûpelê bixweber bar dike û pey re "resolve" dibe.
* Bikaranîn: wikt.citoidHelper.ensure().then(function() { ... wikt.citoid ... });
*/
window.wikt.citoidHelper = {
ensure: function () {
if (window.wikt.citoid) {
return $.Deferred().resolve().promise();
}
var url = mw.util.getUrl("MediaWiki:Gadget-citoid-helper.js", {
action: "raw",
ctype: "text/javascript"
});
return mw.loader.getScript(mw.config.get("wgServer") + url);
}
};
})();
k26nwr4ixwgh6s7xji2sz4cx13uid2u
Bikarhêner:Balyozbot/kontrol/rêzkirina beşan
2
1358302
6329619
6329541
2026-08-12T13:41:06Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: +1 xeta
6329619
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)
* [[bijîşk]]: astengî di rêzkirinê de ji ber binbeşa "Formên alternatîv" (ne hate rêzkirin)
* [[rolyef]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (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"
6ml4nmodxtiw7728dktaygnwb8i3ez5
6329895
6329619
2026-08-13T00:41:13Z
Balyozbot
7867
[[Special:PermanentLink/6298023|Bot]]: +1 xeta
6329895
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)
* [[wer]]: 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)
* [[bijîşk]]: astengî di rêzkirinê de ji ber binbeşa "Formên alternatîv" (ne hate rêzkirin)
* [[rolyef]]: astengî di rêzkirinê de ji ber binbeşa "Etîmolojî" (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"
kbzlx3gq7oova3h05uwqltyq038jcwz
Şablon:kategoriya şablona çavkaniyê
10
1358376
6329758
6326665
2026-08-12T21:29:56Z
Wikihez
7344
6329758
wikitext
text/x-wiki
<includeonly>{{#invoke:reference template cat|main|what=çavkanî}}</includeonly><noinclude>{{documentation}}</noinclude>
2t86c9oywnjro54p34s2kmgjf5v46jg
6329763
6329758
2026-08-12T21:38:35Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:reference template cat]] weke [[Şablon:kategoriya şablona çavkaniyê]] guhart
6329758
wikitext
text/x-wiki
<includeonly>{{#invoke:reference template cat|main|what=çavkanî}}</includeonly><noinclude>{{documentation}}</noinclude>
2t86c9oywnjro54p34s2kmgjf5v46jg
Şablon:kategoriya şablona çavkaniyê/belge
10
1358377
6329765
6326666
2026-08-12T21:38:35Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:reference template cat/belge]] weke [[Şablon:kategoriya şablona çavkaniyê/belge]] guhart
6326666
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:refcat}}
{{uses lua|Module:reference template cat}}
This template categorizes [[Wiktionary:References|reference templates]] into the subcategories of the main "[[:Category:Reference templates by language|Reference templates by language]]" category.
==Parameters==
; {{para|<var>N</var>}}
: The language code. Only required if none is present in the page title under which the template has been created starting with <code>R:<var>langcode</var>:</code>.
; {{para|sort}}
: Sortkey. If this is not provided, the reference template name after <code>R:<var>language code</var>:</code> or <code>R:</code> is used as a sortkey.
; {{para|title|opt=1}}
: Title of the reference template.
==See also==
* {{şx|quotation template cat}}
<includeonly>
[[Category:Documentation templates]]
[[Category:Categorization templates]]
</includeonly>
h0i8ur8qlhdy957wu2jtkazk36mm8pp
6329767
6329765
2026-08-12T21:39:03Z
Wikihez
7344
6329767
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:refcat|Şablon:çavkkat}}
{{uses lua|Module:reference template cat}}
This template categorizes [[Wiktionary:References|reference templates]] into the subcategories of the main "[[:Category:Reference templates by language|Reference templates by language]]" category.
==Parameters==
; {{para|<var>N</var>}}
: The language code. Only required if none is present in the page title under which the template has been created starting with <code>R:<var>langcode</var>:</code>.
; {{para|sort}}
: Sortkey. If this is not provided, the reference template name after <code>R:<var>language code</var>:</code> or <code>R:</code> is used as a sortkey.
; {{para|title|opt=1}}
: Title of the reference template.
==See also==
* {{şx|quotation template cat}}
<includeonly>
[[Category:Documentation templates]]
[[Category:Categorization templates]]
</includeonly>
jrlok1f2nvgmakgsrnko792cmveut5k
6329778
6329767
2026-08-12T21:49:28Z
Wikihez
7344
6329778
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:refcat|Şablon:çavkkat}}
{{uses lua|Module:reference template cat}}
This template categorizes [[Wiktionary:References|reference templates]] into the subcategories of the main "[[:Category:Reference templates by language|Reference templates by language]]" category.
==Parameters==
; {{para|<var>N</var>}}
: The language code. Only required if none is present in the page title under which the template has been created starting with <code>R:<var>langcode</var>:</code>.
; {{para|sort}}
: Sortkey. If this is not provided, the reference template name after <code>R:<var>language code</var>:</code> or <code>R:</code> is used as a sortkey.
; {{para|title|opt=1}}
: Title of the reference template.
==See also==
* {{şx|quotation template cat}}
<includeonly>
[[Category:Şablonên kategorîkirinê]]
</includeonly>
bnc4gue8qeg9eco80912wu8petn4yyh
Şablon:kategoriya şablona jêgirtinê
10
1358423
6329762
6327766
2026-08-12T21:36:49Z
Wikihez
7344
6329762
wikitext
text/x-wiki
<includeonly>{{#invoke:reference template cat|main|what=jêgirtin}}</includeonly><noinclude>{{documentation}}</noinclude>
q17tvhy2jzc3z5y6za99uh2p3qhsme2
6329769
6329762
2026-08-12T21:39:30Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:quotation template cat]] weke [[Şablon:kategoriya şablona jêgirtinê]] guhart
6329762
wikitext
text/x-wiki
<includeonly>{{#invoke:reference template cat|main|what=jêgirtin}}</includeonly><noinclude>{{documentation}}</noinclude>
q17tvhy2jzc3z5y6za99uh2p3qhsme2
Şablon:kategoriya şablona jêgirtinê/belge
10
1358424
6329771
6327767
2026-08-12T21:39:30Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:quotation template cat/belge]] weke [[Şablon:kategoriya şablona jêgirtinê/belge]] guhart
6327767
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:quotecat}}
{{uses lua|Module:reference template cat}}
This template works like {{şx|reference template cat}} but is used for [[:Category:Quotation templates by language|quotation templates]].
==Examples==
In {{şx|RQ:it:Canti}} to categorize the template into [[:Category:Italian quotation templates]]:
<pre>{{quotecat}}</pre>
In {{şx|RQ:Inkeri}} to categorize the template into [[:Category:Ingrian quotation templates]] and [[:Category:Finnish quotation templates]]:
<pre>{{quotecat|izh|fi}}</pre>
==See also==
* {{şx|reference template cat}}
<includeonly>
[[Category:Documentation templates]]
[[Category:Categorization templates]]
</includeonly>
h76vw2bji5snl48vq7vsl89a7joa8fc
6329773
6329771
2026-08-12T21:39:46Z
Wikihez
7344
6329773
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:quotecat|Şablon:jgcat}}
{{uses lua|Module:reference template cat}}
This template works like {{şx|reference template cat}} but is used for [[:Category:Quotation templates by language|quotation templates]].
==Examples==
In {{şx|RQ:it:Canti}} to categorize the template into [[:Category:Italian quotation templates]]:
<pre>{{quotecat}}</pre>
In {{şx|RQ:Inkeri}} to categorize the template into [[:Category:Ingrian quotation templates]] and [[:Category:Finnish quotation templates]]:
<pre>{{quotecat|izh|fi}}</pre>
==See also==
* {{şx|reference template cat}}
<includeonly>
[[Category:Documentation templates]]
[[Category:Categorization templates]]
</includeonly>
duw8cwpxidpv8387k0r63xyqrlvs9c3
6329779
6329773
2026-08-12T21:49:38Z
Wikihez
7344
6329779
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:quotecat|Şablon:jgcat}}
{{uses lua|Module:reference template cat}}
This template works like {{şx|reference template cat}} but is used for [[:Category:Quotation templates by language|quotation templates]].
==Examples==
In {{şx|RQ:it:Canti}} to categorize the template into [[:Category:Italian quotation templates]]:
<pre>{{quotecat}}</pre>
In {{şx|RQ:Inkeri}} to categorize the template into [[:Category:Ingrian quotation templates]] and [[:Category:Finnish quotation templates]]:
<pre>{{quotecat|izh|fi}}</pre>
==See also==
* {{şx|reference template cat}}
<includeonly>
[[Category:Documentation templates]]
[[Category:Şablonên kategorîkirinê]]
</includeonly>
oi0p8b8me8l73mtcy1jhbaems2jvv5x
Şablon:Ç:Jaba:1879/belge
10
1358526
6329926
6329534
2026-08-13T11:08:06Z
Wikihez
7344
/* Bikaranîn */
6329926
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Jaba:1879|<navê madeyê li ferhengê|r=rûpel}}
=== Nimûne ===
{{demo|sep=dide<br>|<nowiki>{{Ç:Jaba:1879|تاریخچی<ts:tarikhtchi>|r=92}}</nowiki>}}
== TemplateData ==
{{TemplateData header}}
<templatedata>
{
"params": {
"1": {
"label": "Navê madeyê li ser ferhengê"
},
"pages": {},
"rûpel": {
"aliases": [
"r",
"page"
]
}
},
"description": "Auguste Jaba; Ferdinand Justi (1879), Dictionnaire Kurde-Français [Ferhenga Kurdî-Fransî], Saint Petersburg: Imperial Academy of Sciences"
}
</templatedata>
<includeonly>
{{refcat|ku}}
</includeonly>
hqjufd7i3qoj7dgmfi93xf947nnwtzv
Modul:jêder
828
1358529
6329629
2026-08-12T14:31:15Z
Wikihez
7344
Rûpel bi "local export = {} local parameters_module = "Module:parameters" local usex_module = "Module:usex" --[==[ Adapter for [[Şablon:jêder]]. Reads the template's existing parameter names (2=source, jêgirtin/jg=quotation text, url=/arşîv=, werger/w/tercime/t= translation, nekat=suppress categorization) and calls Modul:usex's format_usex() directly, instead of going through usex_t. usex_t always reads frame:getParent().args — i.e. the calling article's raw {{jêd..." hat çêkirin
6329629
Scribunto
text/plain
local export = {}
local parameters_module = "Module:parameters"
local usex_module = "Module:usex"
--[==[
Adapter for [[Şablon:jêder]]. Reads the template's existing parameter names
(2=source, jêgirtin/jg=quotation text, url=/arşîv=, werger/w/tercime/t=
translation, nekat=suppress categorization) and calls Modul:usex's
format_usex() directly, instead of going through usex_t.
usex_t always reads frame:getParent().args — i.e. the calling article's raw
{{jêder|...}} arguments — rather than anything passed on the #invoke line, so
it has no way to remap old parameter names to its own scheme (2=text,
source=...). This function does that remapping itself, so every existing
article using {{jêder|...}} keeps working unchanged.
Note: parameter spec keys below are intentionally the existing Kurdish names
(they're the literal parameter names used across the wiki already and can't
be renamed without a bot rewrite of every article). Once read out of `args`,
though, everything is copied into plain-English locals immediately below —
never access a non-ASCII key with dot notation (e.g. args.arşîv or
args.jêgirtin); Lua identifiers after a "." are restricted to ASCII
letters/digits/underscore, so that's a syntax error, not just a style
choice. Always use bracket string-key access instead (args["arşîv"]).
]==]
function export.jeder_t(frame)
local parentArgs = frame:getParent().args
local args = require(parameters_module).process(parentArgs, {
[1] = {required = true, type = "language"},
[2] = true, -- source citation (author, year, etc.)
["jêgirtin"] = true, -- quotation text
["jg"] = {alias_of = "jêgirtin"},
["sc"] = {type = "script"},
["tr"] = true, -- transliteration
["url"] = true,
["arşîv"] = true, -- archive URL
["werger"] = true, -- translation
["w"] = {alias_of = "werger"},
["tercime"] = {alias_of = "werger"},
["t"] = {alias_of = "werger"},
["nekat"] = {type = "boolean"}, -- suppress categorization
})
-- Copy everything into English-named locals right away, using bracket
-- string-key access for every named (non-numeric) parameter.
local lang = args[1]
local source = args[2]
local quotationText = args["jêgirtin"]
local script = args["sc"]
local transliteration = args["tr"]
local url = args["url"]
local archiveUrl = args["arşîv"]
local translation = args["werger"]
local suppressCategories = args["nekat"]
-- Fold the source citation and any URL/archive link into a single "source"
-- string, formatted exactly like the current span.jeder output (format_usex
-- wraps it in the "jeder" class and adds the leading em dash and parens).
if url and url ~= "" then
local archiveLink = (archiveUrl and archiveUrl ~= "") and archiveUrl
or ("https://web.archive.org/" .. url)
source = (source or "") .. " → [" .. url .. " here lînkê] [" .. archiveLink .. " arşîv]"
end
if source == "" then
source = nil
end
local data = {
lang = lang,
sc = script,
usex = quotationText,
tr = transliteration ~= "" and transliteration or nil,
translation = translation,
source = source,
quote = "1", -- e-quotation (not "quote-meta"/cited-passage, which is for {{quote-*}} / jêder-kitêb etc.)
nocat = suppressCategories,
inline = true, -- TODO: confirm against how this actually renders on the wiki
}
return require(usex_module).format_usex(data)
end
return export
fsv8pg7fiuuqre6fis5cq2uu5dorcvy
6329793
6329629
2026-08-12T22:38:41Z
Wikihez
7344
6329793
Scribunto
text/plain
local export = {}
local parameters_module = "Module:parameters"
local usex_module = "Module:usex"
--[==[
Adapter for [[Şablon:jêder]]. Reads the template's existing parameter names
(2=source, jêgirtin/jg=quotation text, url=/arşîv=, werger/w/tercime/t=
translation, nekat=suppress categorization) and calls Modul:usex's
format_usex() directly, instead of going through usex_t.
usex_t always reads frame:getParent().args — i.e. the calling article's raw
{{jêder|...}} arguments — rather than anything passed on the #invoke line, so
it has no way to remap old parameter names to its own scheme (2=text,
source=...). This function does that remapping itself, so every existing
article using {{jêder|...}} keeps working unchanged.
Note: parameter spec keys below are intentionally the existing Kurdish names
(they're the literal parameter names used across the wiki already and can't
be renamed without a bot rewrite of every article). Once read out of `args`,
though, everything is copied into plain-English locals immediately below —
never access a non-ASCII key with dot notation (e.g. args.arşîv or
args.jêgirtin); Lua identifiers after a "." are restricted to ASCII
letters/digits/underscore, so that's a syntax error, not just a style
choice. Always use bracket string-key access instead (args["arşîv"]).
]==]
function export.jeder_t(frame)
local parentArgs = frame:getParent().args
local args = require(parameters_module).process(parentArgs, {
[1] = {required = true, type = "language"},
[2] = true, -- source citation (author, year, etc.)
["jêgirtin"] = true, -- quotation text
["jg"] = {alias_of = "jêgirtin"},
["sc"] = {type = "script"},
["tr"] = true, -- transliteration
["url"] = true,
["arşîv"] = true, -- archive URL
["werger"] = true, -- translation
["w"] = {alias_of = "werger"},
["tercime"] = {alias_of = "werger"},
["t"] = {alias_of = "werger"},
["nekat"] = {type = "boolean"}, -- suppress categorization
})
-- Copy everything into English-named locals right away, using bracket
-- string-key access for every named (non-numeric) parameter.
local lang = args[1]
local source = args[2]
local quotationText = args["jêgirtin"]
local script = args["sc"]
local transliteration = args["tr"]
local url = args["url"]
local archiveUrl = args["arşîv"]
local translation = args["werger"]
local suppressCategories = args["nekat"]
-- Fold the source citation and any URL/archive link into a single "source"
-- string, formatted exactly like the current span.jeder output (format_usex
-- wraps it in the "jeder" class and adds the leading em dash and parens).
if url and url ~= "" then
local archiveLink = (archiveUrl and archiveUrl ~= "") and archiveUrl
or ("https://web.archive.org/" .. url)
source = (source or "") .. " → [" .. url .. " here lînkê] [" .. archiveLink .. " arşîv]"
end
if source == "" then
source = nil
end
local data = {
lang = lang,
sc = script,
usex = quotationText,
tr = transliteration ~= "" and transliteration or nil,
translation = translation,
source = source,
quote = "1", -- e-quotation (not "quote-meta"/cited-passage, which is for {{quote-*}} / jêder-kitêb etc.)
nocat = suppressCategories,
inline = false,
}
return require(usex_module).format_usex(data)
end
return export
f9xmgb5ta9s9ikyqoxxtedfhby1p20f
Şablon:Fer:kur-ar:spîrêz
10
1358530
6329724
2026-08-12T20:54:56Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Fer:kur-ar:spîrêz]] weke [[Şablon:Ç:Doskî:2013]] guhart
6329724
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Doskî:2013]]
cyx5pqebqnrglji8z87rm22ibi2462x
6329740
6329724
2026-08-12T21:09:50Z
Wikihez
7344
Hedefa beralîkirinê ji [[Şablon:Ç:Doskî:2013]] ber bi [[Şablon:Ç:Dosikî:2013]] ve guhart
6329740
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2013]]
dojllz1y003p62p4erbzhrkse0tjtr4
Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Dosikî
10
1358531
6329725
2026-08-12T20:55:38Z
Wikihez
7344
Ji bo [[Şablon:Ç:Doskî:2013]] hat beralîkirin
6329725
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Doskî:2013]]
cyx5pqebqnrglji8z87rm22ibi2462x
6329726
6329725
2026-08-12T20:55:55Z
Wikihez
7344
Wikihez rûpela [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Dosikî]] bêyî beralîkirinek bar kir [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Doskî]]
6329725
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Doskî:2013]]
cyx5pqebqnrglji8z87rm22ibi2462x
6329734
6329726
2026-08-12T21:07:50Z
Wikihez
7344
Hedefa beralîkirinê ji [[Şablon:Ç:Doskî:2013]] ber bi [[Şablon:Ç:Dosikî:2013]] ve guhart
6329734
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2013]]
dojllz1y003p62p4erbzhrkse0tjtr4
6329735
6329734
2026-08-12T21:07:59Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Doskî]] weke [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Dosikî]] guhart
6329734
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2013]]
dojllz1y003p62p4erbzhrkse0tjtr4
Şablon:Ç:Doskî:2013
10
1358532
6329733
2026-08-12T21:07:25Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Ç:Doskî:2013]] weke [[Şablon:Ç:Dosikî:2013]] guhart
6329733
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2013]]
dojllz1y003p62p4erbzhrkse0tjtr4
Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Doskî
10
1358533
6329736
2026-08-12T21:07:59Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Doskî]] weke [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Dosikî]] guhart
6329736
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Dosikî]]
39r12u5ld5e4a003zkzfihcqeb1xyhf
6329737
6329736
2026-08-12T21:08:12Z
Wikihez
7344
Hedefa beralîkirinê ji [[Şablon:Ferhenga Spîrêz Kurdî-Erebî Mihemed Emîn Dosikî]] ber bi [[Şablon:Ç:Dosikî:2013]] ve guhart
6329737
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2013]]
dojllz1y003p62p4erbzhrkse0tjtr4
Şablon:Ç:Dosikî:2013/belge
10
1358534
6329741
2026-08-12T21:10:20Z
Wikihez
7344
Rûpel bi "{{belgekirin/binrûpel}} == Bikaranîn == === Nimûne === ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "ser": { "aliases": [ "1" ], "label": "navê madeyê" }, "rûpel": { "aliases": [ "1" ] } }, "description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n", "format": "inline" } </templatedata> <includeo..." hat çêkirin
6329741
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
=== Nimûne ===
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"1"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku}}
</includeonly>
5nmq6x2n3bfogvl037peadv1usve9f5
6329742
6329741
2026-08-12T21:11:33Z
Wikihez
7344
6329742
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Dosikî:2013|r=rûpel|ser=<navê madeyê>}}
=== Nimûne ===
{{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2013|r=50}}</nowiki>}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"1"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku}}
</includeonly>
ihyw2mnhu1rbir56rxn0nmexexayxz7
6329751
6329742
2026-08-12T21:16:02Z
Wikihez
7344
6329751
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Dosikî:2013|r=rûpel|ser=<navê madeyê>}}
=== Nimûne ===
{{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2013|r=50}}</nowiki>}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî (2013), قاموس سپیرێز كردي-عربي [Ferhenga Spîrêz Kurdî-Erebî], Duhok: Spîrêz\n",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku}}
</includeonly>
pgqjos0f2x9uxe7eatnyb691hlnfzx1
Şablon:Ç:Dosikî:2016/belge
10
1358535
6329746
2026-08-12T21:15:28Z
Wikihez
7344
Rûpel bi "{{belgekirin/binrûpel}} == Bikaranîn == {{şx|Ç:Dosikî:2016|r=rûpel|ser=<navê madeyê>}} === Nimûne === {{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2016|r=50}}</nowiki>}} ==TemplateData== {{TemplateData header}} <templatedata> { "params": { "ser": { "aliases": [ "1" ], "label": "navê madeyê" }, "rûpel": { "aliases": [ "r" ] } }, "description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî, (2016), فەرهەنگا..." hat çêkirin
6329746
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Dosikî:2016|r=rûpel|ser=<navê madeyê>}}
=== Nimûne ===
{{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2016|r=50}}</nowiki>}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî, (2016), فەرهەنگا سپیرێز عەرەبی کوردی [Ferhenga Spîrêz Erebî-Kurdî], Dihok: Spîrêz",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku}}
</includeonly>
do4ffe822qfu2fholwmxtb1g3gq8jha
6329749
6329746
2026-08-12T21:15:44Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Fer:ar-kur:spîrêz/belge]] weke [[Şablon:Ç:Dosikî:2016/belge]] guhart
6329746
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Dosikî:2016|r=rûpel|ser=<navê madeyê>}}
=== Nimûne ===
{{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2016|r=50}}</nowiki>}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî, (2016), فەرهەنگا سپیرێز عەرەبی کوردی [Ferhenga Spîrêz Erebî-Kurdî], Dihok: Spîrêz",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku}}
</includeonly>
do4ffe822qfu2fholwmxtb1g3gq8jha
6329753
6329749
2026-08-12T21:17:35Z
Wikihez
7344
6329753
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Dosikî:2016|r=rûpel|ser=<navê madeyê>}}
=== Nimûne ===
{{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2016|r=50}}</nowiki>}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî, (2016), فەرهەنگا سپیرێز عەرەبی کوردی [Ferhenga Spîrêz Erebî-Kurdî], Dihok: Spîrêz",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku|sortkey=Dosikî:2016}}
</includeonly>
e1uofmr4rqdi7bk97u9n3ime6f0wc8q
6329754
6329753
2026-08-12T21:18:30Z
Wikihez
7344
6329754
wikitext
text/x-wiki
{{belgekirin/binrûpel}}
== Bikaranîn ==
{{şx|Ç:Dosikî:2016|r=rûpel|ser=<navê madeyê>}}
=== Nimûne ===
{{demo|sep=wisa xuya dike:<br>|<nowiki>{{Ç:Dosikî:2016|r=50}}</nowiki>}}
==TemplateData==
{{TemplateData header}}
<templatedata>
{
"params": {
"ser": {
"aliases": [
"1"
],
"label": "navê madeyê"
},
"rûpel": {
"aliases": [
"r"
]
}
},
"description": "Çavkanî ji ferhenga Mihemed Emîn Dosikî, (2016), فەرهەنگا سپیرێز عەرەبی کوردی [Ferhenga Spîrêz Erebî-Kurdî], Dihok: Spîrêz",
"format": "inline"
}
</templatedata>
<includeonly>
{{refcat|ar|ku}}
</includeonly>
do4ffe822qfu2fholwmxtb1g3gq8jha
Şablon:Fer:ar-kur:spîrêz
10
1358536
6329748
2026-08-12T21:15:44Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Fer:ar-kur:spîrêz]] weke [[Şablon:Ç:Dosikî:2016]] guhart
6329748
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2016]]
p2498z8dych2vkj7jsiv0irlymiw791
Şablon:Fer:ar-kur:spîrêz/belge
10
1358537
6329750
2026-08-12T21:15:44Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Fer:ar-kur:spîrêz/belge]] weke [[Şablon:Ç:Dosikî:2016/belge]] guhart
6329750
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2016/belge]]
e9xj17lyhzkjrw0exrubgng1qleldwm
Şablon:Ferhenga Spîrêz Erebî-Kurdî, Mihemed Emîn Dosikî
10
1358538
6329752
2026-08-12T21:16:47Z
Wikihez
7344
Ji bo [[Şablon:Ç:Dosikî:2016]] hat beralîkirin
6329752
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:Dosikî:2016]]
p2498z8dych2vkj7jsiv0irlymiw791
Şablon:reference template cat
10
1358539
6329764
2026-08-12T21:38:35Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:reference template cat]] weke [[Şablon:kategoriya şablona çavkaniyê]] guhart
6329764
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kategoriya şablona çavkaniyê]]
cc4ipe5yqguzfeila70twf0yk7sban0
Şablon:reference template cat/belge
10
1358540
6329766
2026-08-12T21:38:35Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:reference template cat/belge]] weke [[Şablon:kategoriya şablona çavkaniyê/belge]] guhart
6329766
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kategoriya şablona çavkaniyê/belge]]
01idyazu7hnq2eis8908qnoetrew5f4
Şablon:çavkkat
10
1358541
6329768
2026-08-12T21:39:17Z
Wikihez
7344
Ji bo [[Şablon:kategoriya şablona çavkaniyê]] hat beralîkirin
6329768
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kategoriya şablona çavkaniyê]]
cc4ipe5yqguzfeila70twf0yk7sban0
Şablon:quotation template cat
10
1358542
6329770
2026-08-12T21:39:30Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:quotation template cat]] weke [[Şablon:kategoriya şablona jêgirtinê]] guhart
6329770
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kategoriya şablona jêgirtinê]]
rffwqzgjeukr6uj94jj25dwa73qdzw6
Şablon:quotation template cat/belge
10
1358543
6329772
2026-08-12T21:39:31Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:quotation template cat/belge]] weke [[Şablon:kategoriya şablona jêgirtinê/belge]] guhart
6329772
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kategoriya şablona jêgirtinê/belge]]
au02br5a7wxbxup5fjwxihqc45qrgax
Şablon:jgcat
10
1358544
6329774
2026-08-12T21:39:59Z
Wikihez
7344
Ji bo [[Şablon:kategoriya şablona jêgirtinê]] hat beralîkirin
6329774
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kategoriya şablona jêgirtinê]]
rffwqzgjeukr6uj94jj25dwa73qdzw6
Şablon:J:ku:Shamdinani Stories I:2026
10
1358545
6329777
2026-08-12T21:41:14Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:J:ku:Shamdinani Stories I:2026]] weke [[Şablon:J:Shamdinani Stories I:2026]] guhart
6329777
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:J:Shamdinani Stories I:2026]]
e48k2isti5kp45kqpm076yua083r1bk
Şablon:switch-url
10
1358546
6329809
2026-08-12T22:58:04Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:switch-url]] weke [[Şablon:kovara kurmancî/switch-url]] guhart
6329809
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kovara kurmancî/switch-url]]
2762i7sirak6v6wiroyo8xcm69x25md
Şablon:switch-url/belge
10
1358547
6329811
2026-08-12T22:58:04Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:switch-url/belge]] weke [[Şablon:kovara kurmancî/switch-url/belge]] guhart
6329811
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:kovara kurmancî/switch-url/belge]]
2kqb9rjk97iiuohsg3g0wgcfs7nuny7
Şablon:J:Mem û Zîn
10
1358548
6329850
2026-08-12T23:54:16Z
Wikihez
7344
Ji bo [[Şablon:J:Mem û Zîn:1692]] hat beralîkirin
6329850
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:J:Mem û Zîn:1692]]
ph0dnmbsbgtbxlvh9zwnmg49i2y69i8
Modul:compare
828
1358549
6329855
2026-08-13T00:04:58Z
Wikihez
7344
[[:en:Module:compare]] hat kopîkirin ([[Bikarhêner:Wikihez/skrîpt/js/kopi-enWikt.js|kopi-enWikt.js]])
6329855
Scribunto
text/plain
local math_compare_module = "Module:math/compare"
local string_compare_module = "Module:string/compare"
local table_compare_module = "Module:table/compare"
local require = require
local type = type
local types
local function get_types()
types, get_types = {
["nil"] = "\1",
["boolean"] = "\2",
["number"] = "\3",
["string"] = "\4",
}, nil
return types
end
local compare_funcs
local function get_compare_funcs()
compare_funcs = {}
function compare_funcs.boolean(a, b)
return a == true and b == false
end
function compare_funcs.number(...)
local math_compare = require(math_compare_module)
compare_funcs.number = math_compare
return math_compare(...)
end
function compare_funcs.string(...)
local string_compare = require(string_compare_module)
compare_funcs.string = string_compare
return string_compare(...)
end
function compare_funcs.table(...)
local table_compare = require(table_compare_module)
compare_funcs.table = table_compare
return table_compare(...)
end
get_compare_funcs = nil
return compare_funcs
end
--[==[
A general comparison function, which returns {true} if {a} sorts before {b}, or otherwise {false}; it can be used as the sort function with {table.sort}.
This function is roughly equivalent to the {<} operator, but is capable of comparing a mix of types, using the following rules:
* When items of different types are compared, the type-order is {"nil"}, {"boolean"}, {"number"}, {"string"}, then alphabetical order by type name for all other types.
* Numbers are compared with [[Module:math/compare]].
* Strings are compared with [[Module:string/compare]].
* Tables are compared with [[Module:table/compare]].
* Boolean {true} sorts before {false}.
* All other types always return {false}.]==]
return function(a, b)
local type_a, type_b = type(a), type(b)
if type_a == type_b then
local func = (compare_funcs or get_compare_funcs())[type_a]
return func and func(a, b) or false
end
return ((types or get_types())[type_a] or type_a) < (types[type_b] or type_b)
end
fs82yur52kblfpa4j6uwsb5dbcxr7em
Şablon:Ç:os:Abayev
10
1358550
6329857
2026-08-13T00:08:36Z
Wikihez
7344
[[:en:Template:R:os:Abaev]] hat kopîkirin ([[Bikarhêner:Wikihez/skrîpt/js/kopi-enWikt.js|kopi-enWikt.js]])
6329857
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ru
|last={{xlit|ru|Абаев}}
|first={{xlit|ru|В. И.}}
|authorlink=Vasily Abaev
|title=Историко-этимологический словарь осетинского языка
|trans-title=Historical-Etymological Dictionary of the Ossetian Language
|entry={{{1|}}}
|location=Moscow and Leningrad
|publisher=Academy Press
|year={{#switch:{{{volume|{{{vol|}}}}}}|I|1=1958|II|2=1973|III|3=1979|IV|4=1989|V|5=1995|#default=1958–1995}}
|pageparam=page
|volume={{{volume|{{{vol|}}}}}}
|allowparams=1,volume,vol
}}<noinclude>[[Category:Ossetian reference templates|Abaev]]</noinclude>
nvgbk9m8779hkcaaw8vl3r9fjo87aeh
6329858
6067100
2026-08-13T00:09:00Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Abayev]] weke [[Şablon:Ç:os:Abayev]] guhart
6067100
wikitext
text/x-wiki
{{kitêb|nivîskar={{zim|en|Abaev, V.I.}} (1958–1995)|sernav=Ferhenga dîrokî-etîmolojîkî ya zimanê osetî|sernavê orjînal={{zim|ru|ИСТОРИКО-ЭТИМОЛОГИЧЕСКИЙ СЛОВАРЬ ОСЕТИНСКОГО ЯЗЫКА}} (bi rûsî)|cild=4 cild û [[fihrist]]|rûpel={{{r|{{{rûpel|}}}}}}}}<noinclude>[[Kategorî:Çavkanî]]</noinclude>
rzouyrntkiujg59hbsul7rg7gkfntiy
6329860
6329857
2026-08-13T00:09:14Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:R:os:Abaev]] weke [[Şablon:Ç:os:Abayev]] guhart
6329857
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ru
|last={{xlit|ru|Абаев}}
|first={{xlit|ru|В. И.}}
|authorlink=Vasily Abaev
|title=Историко-этимологический словарь осетинского языка
|trans-title=Historical-Etymological Dictionary of the Ossetian Language
|entry={{{1|}}}
|location=Moscow and Leningrad
|publisher=Academy Press
|year={{#switch:{{{volume|{{{vol|}}}}}}|I|1=1958|II|2=1973|III|3=1979|IV|4=1989|V|5=1995|#default=1958–1995}}
|pageparam=page
|volume={{{volume|{{{vol|}}}}}}
|allowparams=1,volume,vol
}}<noinclude>[[Category:Ossetian reference templates|Abaev]]</noinclude>
nvgbk9m8779hkcaaw8vl3r9fjo87aeh
6329862
6329860
2026-08-13T00:11:06Z
Wikihez
7344
6329862
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ru
|last={{xlit|ru|Абаев}}
|first={{xlit|ru|В. И.}}
|authorlink=Vasily Abaev
|title=Историко-этимологический словарь осетинского языка
|trans-title=Ferhenga dîrokî-etîmolojîkî ya zimanê osetî
|entry={{{1|}}}
|location=Moskova û Leningrad
|publisher=Academy Press
|year={{#switch:{{{volume|{{{vol|{{{cild|}}}}}}}}}|I|1=1958|II|2=1973|III|3=1979|IV|4=1989|V|5=1995|#default=1958–1995}}
|pageparam=page,r,rûpel
|volume={{{volume|{{{vol|{{{cild|}}}}}}}}}
|allowparams=1,volume,vol,cild
}}<noinclude>{{çavkkat|os}}</noinclude>
lpo2b3z1umbhocz6rv64vdo0bqjxsto
Şablon:Abayev
10
1358551
6329859
2026-08-13T00:09:00Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Abayev]] weke [[Şablon:Ç:os:Abayev]] guhart
6329859
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:os:Abayev]]
but7irdrtggcnfdvpt4mls02myp9dk1
Şablon:R:os:Abaev
10
1358552
6329861
2026-08-13T00:09:14Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:R:os:Abaev]] weke [[Şablon:Ç:os:Abayev]] guhart
6329861
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:os:Abayev]]
but7irdrtggcnfdvpt4mls02myp9dk1
Şablon:Bailey
10
1358554
6329867
2026-08-13T00:13:43Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:Bailey]] weke [[Şablon:Ç:kho:Bailey]] guhart
6329867
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:kho:Bailey]]
fhyrl2wolbo3e90nqlomf17js8xmn0y
Şablon:R:kho:Bailey
10
1358555
6329869
2026-08-13T00:13:55Z
Wikihez
7344
Wikihezî/ê navê [[Şablon:R:kho:Bailey]] weke [[Şablon:Ç:kho:Bailey]] guhart
6329869
wikitext
text/x-wiki
#BERALÎKIRIN [[Şablon:Ç:kho:Bailey]]
fhyrl2wolbo3e90nqlomf17js8xmn0y