Wikipedia
diqwiki
https://diq.wikipedia.org/wiki/Pela_Seri
MediaWiki 1.47.0-wmf.5
first-letter
Medya
Xısusi
Werênayış
Karber
Werênayışê karberi
Wikipediya
Werênayışê Wikipediya
Dosya
Werênayışê dosya
MedyaWiki
Werênayışê MedyaWikiyi
Şablon
Werênayışê şabloni
Peşti
Werênayışê peşti
Kategoriye
Werênayışê kategoriye
Portal
Werênayışê portali
TimedText
TimedText talk
Modul
Werênayışê moduli
Event
Event talk
Alanya
0
13157
548939
488175
2026-06-06T14:39:18Z
~2026-33070-17
34013
/* Çımey */
548939
wikitext
text/x-wiki
{{infobox Qeza}}
'''Alanya''' (be Usmanıcanki: علاءيه ''Alâiye''), yew qezay [[Antalya]]ya. Antalya ra 140 km dûria. Nıfusê cı heme 250.919, nıfusê sûke zi 99.000o.
== Erd u Coğrafya ==
=== Tene u qezenc ===
Alanya de erd ra giyandayış (qezenc);
* Muz :4.318.365 kilo
* Portaqale :6.283.114 kilo
* Eriga Malt :2.060.636 kilo
* Mandalina :950.465 kilo
* Limone :2.626.988 kilo
* Şamıke (Tomatese) :26.500.882 kilo
* Xiyar :88.257.721 kilo
* Giyandayışê zerzewati-meywi :37.908.836.13 YTL
* Werdê roy (çemi) :260.470 kilo
== İdare ==
{{Main |Lista Qeymeqamanê Alanya}}
== Sûkê bıray ==
{{Sûkê Wariye}}
== Nıfus==
{| class="wikitable" style="font-size:90%;width:80;text-align:center;margin-right: 15px; margin-top: 0px" align=right
! colspan=3; style="background-color:#ccccff;" | Serra nıfusi
|-
! colspan=3 | Heme Alanya
|-
| '''Serre''' || '''Nıfus''' || '''+/-'''
|-
| 1985 || 87080 || -
|-
| 1990 || 129936 || 49%
|-
| 1997 || 222028 || 71%
|-
| 2000 || 264240 || 19%
|-
| 2007 || 384949 || 46%
|-
! colspan=3 | Alanya
|-
| 1893 || 37914 || -
|-
| 1985 || 28733 || -24%
|-
| 1990 || 52460 || 83%
|-
| 1997 || 110181 || 110%
|-
| 2000 || 88346 || -20%
|-
| 2007 || 91713 || 4%
|-
| 2008 || 92223 || 1%
|-
|2009 || 94316 || 2%
|-
|}
== Fotogaleriye ==
<center>
<gallery>
Dosya:Alanya by Piri Reis.jpg|''Piri reis''i ra Alanya
Dosya:Turkey, Alanya, panorama view.JPG|Nıka
Dosya:Alanya Panorama edit.jpg|Nıka
</gallery>
</center>
== Çımey ==
* {{resmi site2|www.alanya.bel.tr|Alanya Belediyesi}}
* {{resmi site2|www.alanya.gov.tr|Alanya Kaymakamey}}
* {{resmi site2|www.altso.org.tr|Alanya Ticaret Dairesi}}
* [http://www.alanyahaber.com Xeberê Alanya]
* [http://www.alanyarehber.com Rayberê Alanya] {{Webarchive|url=https://web.archive.org/web/20110902045122/http://www.alanyarehber.com/ |date=2011-09-02 }}
{{Commonscat|Alanya}}
{{Qezê Antalya}}
{{Mahley Alanya}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Alanya]]
ba27is1gu0grmqyug7l1keemh0id37z
548942
548939
2026-06-07T05:47:28Z
Mirzali
16
548942
wikitext
text/x-wiki
{{infobox Qeza}}
'''Alanya''' (be Usmanıcanki: علاءيه ''Alâiye''), yew qezay [[Antalya]]ya. Antalya ra 140 km dûria. Nıfusê cı heme 250.919, nıfusê sûke zi 99.000o.
== Erd u Coğrafya ==
=== Tene u qezenc ===
Alanya de erd ra giyandayış (qezenc);
* Muz :4.318.365 kilo
* Portaqale :6.283.114 kilo
* Eriga Malt :2.060.636 kilo
* Mandalina :950.465 kilo
* Limone :2.626.988 kilo
* Şamıke (Tomatese) :26.500.882 kilo
* Xiyar :88.257.721 kilo
* Giyandayışê zerzewati-meywi :37.908.836.13 YTL
* Werdê roy (çemi) :260.470 kilo
== İdare ==
{{Main |Lista Qeymeqamanê Alanya}}
== Sûkê bıray ==
{{Sûkê Wariye}}
== Nıfus==
{| class="wikitable" style="font-size:90%;width:80;text-align:center;margin-right: 15px; margin-top: 0px" align=right
! colspan=3; style="background-color:#ccccff;" | Serra nıfusi
|-
! colspan=3 | Heme Alanya
|-
| '''Serre''' || '''Nıfus''' || '''+/-'''
|-
| 1985 || 87080 || -
|-
| 1990 || 129936 || 49%
|-
| 1997 || 222028 || 71%
|-
| 2000 || 264240 || 19%
|-
| 2007 || 384949 || 46%
|-
! colspan=3 | Alanya
|-
| 1893 || 37914 || -
|-
| 1985 || 28733 || -24%
|-
| 1990 || 52460 || 83%
|-
| 1997 || 110181 || 110%
|-
| 2000 || 88346 || -20%
|-
| 2007 || 91713 || 4%
|-
| 2008 || 92223 || 1%
|-
|2009 || 94316 || 2%
|-
|}
== Fotogaleriye ==
<center>
<gallery>
Dosya:Alanya by Piri Reis.jpg|''Piri reis''i ra Alanya
Dosya:Turkey, Alanya, panorama view.JPG|Nıka
Dosya:Alanya Panorama edit.jpg|Nıka
</gallery>
</center>
== Çımey ==
* {{resmi site2|www.alanya.bel.tr|Alanya Belediyesi}}
* {{resmi site2|www.alanya.gov.tr|Alanya Kaymakamey}}
* {{resmi site2|www.altso.org.tr|Alanya Ticaret Dairesi}}
* [http://www.alanyahaber.com Xeberê Alanya]
* [http://www.alanyarehber.com Rayberê Alanya] {{Webarchive|url=https://web.archive.org/web/20110902045122/http://www.alanyarehber.com/ |date=2011-09-02 }}
{{Commonscat|Alanya}}
{{Qezê Antalya}}
{{Mahley Alanya}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Alanya]]
317ma9uh5w3ilaqxz3ms5no80ta46wc
Lista sûkanê Portekizi
0
31175
548937
548054
2026-06-06T12:30:39Z
Ziv
30204
Vırnayışê hesabê 547787 ke terefê [[Karber:CommonsDelinker|CommonsDelinker]] ra peyser gêriyao
548937
wikitext
text/x-wiki
Ena yew lista sûkanê [[Portekiz]]iya:
{| class="wikitable sortable"
|-
! style="width:6%;"|Resım
! style="width:25%;"|Bacar
! style="width:25%;"|Wılayet
! style="width:20%;"|Nıfus<ref name="pop">Although the cities list doesn't indicate the cities' population, it indicates the parishes that compose them, therefore, this number is the sum of the population of the parishes. The population data was taken from the [http://www.anmp.pt/ National Association of Portuguese Municipalities] and is from 2004.</ref>
! style="width:20%;"|Serre
|-
| [[Dosya:PRT Abrantes CoA.svg|50px]] || <center>'''[[Abrantes]] ||<center>[[Abrantes]] ||align=center|18,600 ||<center>1916-06-14
|-
| [[Dosya:Agualva-Cacem.png|50px]] || <center>'''[[Agualva-Cacém]]'''||<center>[[Sintra]] ||<center>121,000 || <center>2001-07-12
|-
| [[Dosya:Brasão de município de Águeda.png|50px]] ||<center> '''[[Águeda Municipality|Águeda]]''' ||<center>[[Águeda Municipality|Águeda]] ||<center>11,357 ||<center>1985-08-14
|-
| [[Dosya:COA of Albufeira municipality (Portugal).png|50px]] ||<center> '''[[Albufeira]]''' ||<center>[[Albufeira]] ||<center>16,237 ||<center>1986-08-20
|-
| [[Dosya:ASL1.png|50px]] ||<center> '''[[Alcácer do Sal]]'''||<center>[[Alcácer do Sal]] ||<center>9,118 ||<center>1997-07-12
|-
| [[Dosya:ACB1.png|50px]] || <center>'''[[Alcobaça (Portugal)|Alcobaça]]'''||<center>[[Alcobaça Municipality|Alcobaça]] ||<center>15,800 ||<center>1995-08-30
|-
| [[Dosya:Brasão de Almada.png|50px]] || <center>'''[[Almada]]'''||<center>[[Almada]] ||<center>101,500 ||<center>1973-06-16
|-
| [[Dosya:Blank pt CoA city.png|50px]]||<center> '''[[Almeirim]]'''||<center>[[Almeirim]] ||<center>11,607 || <center>1991-08-16
|-
| [[Dosya:VFX-alverca1.png|50px]] ||<center> '''[[Alverca do Ribatejo]]'''||<center>[[Vila Franca de Xira]] ||<center>29,086 ||<center>1990-08-09
|-
| [[Dosya:Cidade_da_Amadora.png|50px]] ||<center> '''[[Amadora]]''' || <center>[[Amadora]]||<center>151,500 ||<center>1979-09-17
|-
| [[Dosya:AMT1.png|50px]] ||<center> '''[[Amarante, Portugal|Amarante]]'''||<center>[[Amarante Municipality, Portugal|Amarante]] ||<center>11,000 ||<center>1985-08-14
|-
| [[Dosya:SXL-amora.png|50px]] ||<center> '''[[Amora, Portugal|Amora]]'''||<center>[[Seixal Municipality|Seixal]] ||<center>53,638 ||<center>1993-07-02
|-
| [[Dosya:Pt-and1.png|50px]]||<center> '''[[Anadia]]''' ||<center>[[Anadia Municipality, Portugal|Anadia]] ||<center>3,533 ||<center>2004-12-09
|-
| [[Dosya:AGH.png|50px]] ||<center> '''[[Angra do Heroísmo]]''' ||<center>[[Angra do Heroísmo]] ||<center>21,200 ||<center>1534-08-21
|-
| [[Dosya:AVR.png|50px]] ||<center> '''[[Aveiro, Portugal|Aveiro]]''' ||<center>[[Aveiro Municipality|Aveiro]] ||<center>67,003 ||<center>1759-04-11
|-
| [[Dosya:BCL.png|50px]] ||<center> '''[[Barcelos, Portugal|Barcelos]]''' ||<center>[[Barcelos Municipality, Portugal|Barcelos]] ||<center>20,000 ||<center>1928-09-06
|-
| [[Dosya:BRR1.png|50px]] ||<center> '''[[Barreiro (city)|Barreiro]]''' ||<center>[[Barreiro Municipality|Barreiro]] ||<center>50,232 ||<center>1984-06-28
|-
| [[Dosya:BJA.png|50px]] ||<center> '''[[Beja (Portugal)|Beja]]''' ||<center>[[Beja Municipality|Beja]] ||<center>23,475 ||<center>1521-04-10
|-
| [[Dosya:Brasão de Braga.png|50px]] ||<center> '''[[Braga]]''' ||<center>[[Braga]] ||<center>181,819 ||<center>From time immemorial
|-
| [[Dosya:Brasão de Bragança.png|50px]] ||<center> '''[[Bragança (Portugal)|Bragança]]''' ||<center>[[Bragança Municipality|Bragança]] ||<center>19,998 ||<center>1464-02-23
|-
| [[Dosya:CLD.png|50px]] ||<center> '''[[Caldas da Rainha]]''' ||<center>[[Caldas da Rainha]] ||<center>30,006 ||<center>1927-08-26
|-
| [[Dosya:CMT1.png|50px]] ||<center> '''[[Câmara de Lobos]]''' ||<center>[[Câmara de Lobos]] ||<center>16,842 ||<center>1996-08-02
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Caniço (Santa Cruz)|Caniço]]''' ||<center>[[Santa Cruz (Madeira)|Santa Cruz]] ||<center>11,586 ||<center>2005-06-09
|-
| [[Dosya:CNT1.png|50px]] ||<center> '''[[Cantanhede]]''' ||<center>[[Cantanhede]] ||<center>7,066 ||<center>1991-08-16
|-
| [[Dosya:CTX1.png|50px]] ||<center> '''[[Cartaxo]]''' ||<center>[[Cartaxo]] ||<center>10,115 ||<center>1995-08-30
|-
| [[Dosya:CTB.png|50px]] ||<center> '''[[Castelo Branco, Portugal|Castelo Branco]]''' ||<center>[[Castelo Branco Municipality|Castelo Branco]] ||<center>34,525 ||<center>1771-03-20
|-
| [[Dosya:CHV.png|50px]] ||<center> '''[[Chaves (Portugal)|Chaves]]''' ||<center>[[Chaves (Portugal)|Chaves]] ||<center>19,307 ||<center>1929-03-18
|-
| [[Dosya:CBR.png|50px]]||<center> '''[[Coimbra]]''' ||<center>[[Coimbra]] ||<center>138,540 ||<center>From time immemorial
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Costa da Caparica]]''' ||<center>[[Almada]] ||<center>14,100 ||<center>2004-12-09
|-
| [[Dosya:CVL.png|50px]] ||<center> '''[[Covilhã]]''' ||<center>[[Covilhã]] ||<center>36,147 ||<center>1870-10-20
|-
| [[Dosya:ELV.png|50px]] ||<center> '''[[Elvas Municipality|Elvas]]''' ||<center>[[Elvas Municipality|Elvas]] ||<center>28,106 ||<center>1513-04-03
|-
| [[Dosya:ENT1.png|50px]] ||<center> '''[[Entroncamento]]''' ||<center>[[Entroncamento Municipality|Entroncamento]] ||<center>20,065 ||<center>1991-08-16
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Ermesinde]]''' ||<center>[[Valongo]] ||<center>40,139 ||<center>1990-08-10
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Esmoriz]]'''|| <center>[[Ovar]]||<center>11,200 ||<center>1993-07-02
|-
| [[Dosya:ESP1.png|50px]] ||<center> '''[[Espinho, Portugal|Espinho]]''' ||<center>[[Espinho Municipality|Espinho]] ||<center>10,500 ||<center>1973-06-16
|-
| [[Dosya:EPS1.png|50px]] ||<center> '''[[Esposende]]''' ||<center>[[Esposende]] ||<center>9,148 ||<center>1993-07-02
|-
| [[Dosya:ETR.png|50px]] ||<center> '''[[Estarreja]]''' ||<center>[[Estarreja]] ||<center>7,000 ||<center>2004-12-09
|-
| [[Dosya:ETZ.png|50px]] || <center>'''[[Estremoz]]''' ||<center>[[Estremoz]] ||<center>9,011 ||<center>1926-08-31
|-
| [[Dosya:EVR.png|50px]] ||<center> '''[[Évora]]''' ||<center>[[Évora]] ||<center>46,417 ||<center>From time immemorial
|-
| [[Dosya:FAF1.png|50px]] ||<center> '''[[Fafe]]''' ||<center>[[Fafe]] ||<center>15,323 ||<center>1986-08-23
|-
| [[Dosya:Faroarms.svg|50px]] ||<center> '''[[Faro, Portugal|Faro]]''' ||<center>[[Faro, Portugal|Faro]] ||<center>43,757 ||<center>1540-09-07
|-
| [[Dosya:Coat of Arms Fatima.svg|50px]] ||<center> '''[[Fátima]]'''||<center>[[Ourém]] ||<center>10,302 ||<center>1997-07-12
|-
| [[Dosya:FLG1.png|50px]] ||<center> '''[[Felgueiras]]''' ||<center>[[Felgueiras Municipality|Felgueiras]] ||<center>15,100||<center>1990-08-10
|-
| [[Dosya:FIG.png|50px]] ||<center> '''[[Figueira da Foz]]''' ||<center>[[Figueira da Foz]] ||<center>36,500 ||<center>1882-09-20
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Fiães]]''' ||<center>[[Santa Maria da Feira Municipality|Santa Maria da Feira]] ||<center>13,100 ||<center>2001-07-12
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Freamunde]]''' ||<center>[[Paços de Ferreira]] ||<center>7,452 ||<center>2001-07-12
|-
| [[Dosya:FNC.png|50px]] ||<center> '''[[Funchal]]''' ||<center>[[Funchal]] ||<center>100,526 ||<center>1508-08-21
|-
| [[Dosya:FND1.png|50px]] ||<center> '''[[Fundão]]''' ||<center>[[Fundão Municipality, Portugal|Fundão]] ||<center>8,957 ||<center>1988-04-19
|-
| [[Dosya:ILH-gafanhanazare1.png|50px]] ||<center> '''[[Gafanha da Nazaré]]''' ||<center>[[Ílhavo]] ||<center>14,021 ||<center>2001-07-21
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Gandra (Paredes)|Gandra]]''' ||<center>[[Paredes Municipality|Paredes]] ||<center>5,200 ||<center>2003-08-26
|-
| [[Dosya:GDM1.png|50px]] ||<center> '''[[Gondomar (Portugal)|Gondomar]]''' ||<center>[[Gondomar (Portugal)|Gondomar]] ||<center>25,000 ||<center>1991-08-16
|-
| [[Dosya:GVA1.png|50px]] ||<center> '''[[Gouveia]]''' ||<center>[[Gouveia]] ||<center>3,500 ||<center>1988-02-01
|-
| [[Dosya:GRD.png|50px]] ||<center> '''[[Guarda, Portugal|Guarda]]'''||<center>[[Guarda Municipality, Portugal|Guarda]] ||<center>32,274 ||<center>1199-11-27
|-
| [[Dosya:GMR.png|50px]] ||<center> '''[[Guimarães]]''' ||<center>[[Guimarães]] ||<center>52,181 ||<center>1853-06-23
|-
| [[Dosya:HRT.png|35px]] ||<center> '''[[Horta]]''' ||<center>[[Horta]]||<center>9,000 ||<center>1833-07-04
|-
| [[Dosya:ILH1.png|50px]] ||<center> '''[[Ílhavo]]''' ||<center>[[Ílhavo]] ||<center>17,200 ||<center>1990-08-09
|-
| [[Dosya:LGA1.png|50px]] ||<center> '''[[Lagoa]]''' ||<center>[[Lagoa]] ||<center>5,000 ||<center>2001-07-12
|-
| [[Dosya:LGS.png|50px]] ||<center> '''[[Lagos, Portugal|Lagos]]''' ||<center>[[Lagos, Portugal|Lagos]] ||<center>20,000|| <center>1573-01-27
|-
| [[Dosya:LMG.png|50px]] ||<center> '''[[Lamego]]''' ||<center>[[Lamego]] ||<center>12,000 ||<center>From time immemorial
|-
| [[Dosya:Escudo de Leiria.svg|50px]] ||<center> '''[[Leiria]]''' ||<center>[[Leiria]] ||<center>50,264 ||<center>1545-06-13
|-
| [[Dosya:LSB.png|50px]] ||<center> '''[[Lisbon]]''' ||<center>[[Lisbon]] ||<center>545,245 ||<center>From time immemorial
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Lixa]]''' ||<center>[[Felgueiras Municipality|Felgueiras]] ||<center>5,500 ||<center>1995-08-30
|-
| [[Dosya:LLE1.png|50px]] ||<center> '''[[Loulé]]''' ||<center>[[Loulé]] ||<center>24,000||<center>1988-02-01
|-
| [[Dosya:LRS.png|50px]] ||<center> '''[[Loures]]''' ||<center>[[Loures]] ||<center>26,000||<center> <center>1990-08-09
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Lourosa (Santa Maria da Feira)|Lourosa]]''' ||<center>[[Santa Maria da Feira Municipality|Santa Maria da Feira]] ||<center>11,300 ||<center>2001-07-12
|-
| [[Dosya:MCD1.png|50px]] ||<center> '''[[Macedo de Cavaleiros]]''' ||<center>[[Macedo de Cavaleiros]] ||<center>7,800 ||<center>1999-06-24
|- Machico| [[Dosya:MCH1.png|50px]] ||<center> '''[[Machico]]''' ||<center>[[Machico]] ||<center>13,700||<center>1996-08-02
|-
| [[Dosya:MAI1.png|50px]] ||<center> '''[[Maia, Portugal|Maia]]''' ||<center>[[Maia, Portugal|Maia]] ||<center>40,000||<center>1986-08-23
|-
| [[Dosya:MGL1.png|50px]] ||<center> '''[[Mangualde]]''' ||<center>[[Mangualde]] ||<center>8,107 ||<center>2001-07-12
|-
| [[Dosya:MCN2.png|50px]] ||<center> '''[[Marco de Canaveses]]''' ||<center>[[Marco de Canaveses]] ||<center>9,000 ||<center>1993-07-02
|-
| [[Dosya:MGR1.png|50px]] ||<center> '''[[Marinha Grande]]''' ||<center>[[Marinha Grande]] ||<center>29,100 ||<center>1988-04-19
|-
| [[Dosya:MTS1.png|50px]] ||<center> '''[[Matosinhos]]''' ||<center>[[Matosinhos]] ||<center>47,703 ||<center>1984-06-28
|-
| [[Dosya:MLD.png|50px]] ||<center> '''[[Mealhada]]''' ||<center>[[Mealhada]] ||<center>5,500 ||<center>2003-08-26
|-
| [[Dosya:MDA-mêda.JPG|50px]] ||<center> '''[[Mêda]]''' ||<center>[[Mêda]] ||<center>2,004 ||<center>2004-12-09
|-
| [[Dosya:Coat of arms of Miranda do Douro.svg|50px]] ||<center>'''[[Miranda do Douro]]''' ||<center>[[Miranda do Douro]] ||<center>2,000 ||<center>1545-07-10
|-
| [[Dosya:MDL1.png|50px]] ||<center> '''[[Mirandela]]''' ||<center>[[Mirandela]] ||<center>11,000 ||<center>1984-06-28
|-
| [[Dosya:MMN1.png|50px]] ||<center> '''[[Montemor-o-Novo]]''' ||<center>[[Montemor-o-Novo]] ||<center>14,000 ||<center>1988-04-18
|-
| [[Dosya:MTJ.png|50px]] ||<center> '''[[Montijo, Portugal|Montijo]]''' ||<center>[[Montijo Municipality|Montijo]] ||<center>30,486 ||<center>1985-08-14
|-
| [[Dosya:MRA1.png|50px]] ||<center> '''[[Moura Municipality|Moura]]''' ||<center>[[Moura Municipality|Moura]] ||<center>10,000 ||<center>1988-02-01
|-
| [[Dosya:ODV-odivelas.png|50px]] ||<center> '''[[Odivelas]]''' ||<center>[[Odivelas]] ||<center>54,500 ||<center>1990-08-10
|-
| [[Dosya:OLH2.png|50px]] ||<center> '''[[Olhão]] da Restauração''' ||<center>[[Olhão]] ||<center>31,100 ||<center>1985-08-14
|-
| [[Dosya:OAZ.png|50px]] ||<center> '''[[Oliveira de Azeméis]]''' ||<center>[[Oliveira de Azeméis]] ||<center>15,000 ||<center>1984-05-16
|-
| [[Dosya:OBR1.png|50px]] ||<center> '''[[Oliveira do Bairro]]''' ||<center>[[Oliveira do Bairro]] ||<center>5,005||<center>2003-08-26
|-
| [[Dosya:OHP1.png|50px]] ||<center> '''[[Oliveira do Hospital]]'''||<center>[[Oliveira do Hospital]] ||<center>4,400 ||<center>1993-07-02
|-
| [[Dosya:VNO1.png|50px]] ||<center> '''[[Ourém]]''' ||<center>[[Ourém]] ||<center>11,100 ||<center>1991-08-16
|-
| [[Dosya:Brasão de município de Ovar.png|50px]] ||<center> '''[[Ovar]]''' ||<center>[[Ovar]] ||<center>18,900 ||<center>1984-06-28
|-
| [[Dosya:PFR1.png|50px]] ||<center> '''[[Paços de Ferreira]]''' ||<center>[[Paços de Ferreira]] ||<center>9,000 ||<center>1993-07-02
|-
| [[Dosya:PRD1.png|50px]] ||<center> '''[[Paredes, Portugal|Paredes]]''' ||<center>[[Paredes Municipality|Paredes]] ||<center>12,500 ||<center>1991-08-16
|-
| [[Dosya:Brasão de Penafiel.png|50px]] ||<center> '''[[Penafiel]]''' ||<center>[[Penafiel Municipality|Penafiel]] ||<center>10,000 ||<center>1770-03-03
|-
|||<center> '''[[Peniche, Portugal|Peniche]]''' ||<center>[[Peniche Municipality|Peniche]] ||<center>17,500 ||<center>1988-02-01
|-
| [[Dosya:PRG.png|50px]] ||<center> '''[[Peso da Régua]]''' ||<center>[[Peso da Régua]] ||<center>10,000 ||<center>1985-08-14
|-
| [[Dosya:PNH.png|50px]] ||<center> '''[[Pinhel]]''' ||<center>[[Pinhel]] ||<center>3,500 ||<center>1770-08-25
|-
| [[Dosya:PBL1.png|50px]] ||<center> '''[[Pombal, Portugal|Pombal]]''' ||<center>[[Pombal Municipality|Pombal]] ||<center>18,500 ||<center>1991-08-16
|-
| [[Dosya:PDL.png|50px]] ||<center> '''[[Ponta Delgada]]''' ||<center>[[Ponta Delgada]] ||<center>46,102||<center>1546-04-02
|-
| [[Dosya:PSR.png|50px]] ||<center> '''[[Ponte de Sor]]''' ||<center>[[Ponte de Sor]] ||<center>11,000||<center>1985-08-14
|-
| [[Dosya:PTG.png|50px]] ||<center> '''[[Portalegre]]''' ||<center>[[Portalegre]] ||<center>15,700||<center>1550-05-23
|-
| [[Dosya:PTM.png|50px]] ||<center> '''[[Portimão]]''' ||<center>[[Portimão]] ||<center>40,700||<center>1924-12-11
|-
| [[Dosya:PRT.png|50px]] ||<center> '''[[Porto]]''' ||<center>[[Porto]] ||<center>237,559||<center>From time immemorial
|-
| [[Dosya:PST1.png|50px]] ||<center> '''[[Vila Baleira]] (a.k.a. [[Porto Santo]])''' ||<center>[[Porto Santo]] ||<center>4,475 ||<center>1996-08-02
|-
| [[Dosya:VFX-povoasiria1.png|50px]] ||<center> '''[[Póvoa de Santa Iria]]''' ||<center>[[Vila Franca de Xira]]||<center>28,000 ||<center>1999-06-24
|-
| [[Dosya:PVZ2.png|50px]] ||<center> '''[[Póvoa de Varzim]]''' ||<center>[[Póvoa de Varzim]] ||<center>38,257 ||<center>1973-06-16
|-
| [[Dosya:VPV1.png|50px]] ||<center> '''[[Praia da Vitória]]'''||<center>[[Praia da Vitória]] ||<center>6,500 ||<center>1981-06-20
|-
| [[Dosya:LLE-quarteira1.png|50px]] ||<center> '''[[Quarteira]]''' ||<center>[[Loulé]] ||<center>21,000 ||<center>1999-06-24
|-
| [[Dosya:SNT-queluz.png|50px]] ||<center> '''[[Queluz, Portugal|Queluz]]''' ||<center>[[Sintra]] ||<center>116,124||<center>1997-07-24
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Rebordosa]]''' ||<center>[[Paredes Municipality|Paredes]] ||<center>12,100 ||<center>2003-08-26
|-
| [[Dosya:RMZ.png|50px]] ||<center> '''[[Reguengos de Monsaraz]]'''||<center>[[Reguengos de Monsaraz]] ||<center>7,900 ||<center>2004-12-09
|-
| [[Dosya:RGR1.png|50px]] ||<center> '''[[Ribeira Grande]]''' ||<center>[[Ribeira Grande]] ||<center>6,350 ||<center>1981-06-29
|-
| [[Dosya:RMR1.png|50px]] ||<center> '''[[Rio Maior]]''' ||<center>[[Rio Maior]] ||<center>11,102 ||<center>1985-08-14
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Rio Tinto (Gondomar)|Rio Tinto]]''' ||<center>[[Gondomar (Portugal)|Gondomar]] ||<center>61,227 ||<center>1995-08-30
|-
| [[Dosya:SBG.png|50px]] ||<center> '''[[Sabugal]]''' ||<center>[[Sabugal]] ||<center>2,300 ||<center>2004-12-09
|-
| [[Dosya:LRS-sacavem.png|50px]] ||<center> '''[[Sacavém]]''' ||<center>[[Loures]] ||<center>17,000 ||<center>1997-06-04
|-
| [[Dosya:SCD1.png|50px]] ||<center> '''[[Santa Comba Dão]]''' ||<center>[[Santa Comba Dão]] ||<center>3,200 ||<center>1999-06-24
|-
| [[Dosya:SCR1.png|50px]]||<center> '''[[Santa Cruz, Madeira|Santa Cruz]]''' ||<center>[[Santa Cruz, Madeira|Santa Cruz]] ||<center>6,500 ||<center>1996-08-02
|-
| [[Dosya:VFR1.png|50px]] ||<center> '''[[Santa Maria da Feira (city)|Santa Maria da Feira]]''' ||<center>[[Santa Maria da Feira Municipality|Santa Maria da Feira]] ||<center>16,900 ||<center>1985-08-14
|-
| [[Dosya:STN1.png|50px]] ||<center> '''[[Santana, Madeira|Santana]]''' ||<center>[[Santana, Madeira|Santana]] ||<center>3,300 ||<center>2001-01-01
|-
| [[Dosya:STR.png|50px]] ||<center> '''[[Santarém, Portugal|Santarém]]''' ||<center>[[Santarém, Portugal|Santarém]] ||<center>30,100 ||<center>1868-12-24
|-
| [[Dosya:STC1.png|50px]] ||<center> '''[[Santiago do Cacém]]''' ||<center>[[Santiago do Cacém]] ||<center>7,753 ||<center>1991-08-16
|-
| [[Dosya:STS1.png|50px]] ||<center> '''[[Santo Tirso]]''' ||<center>[[Santo Tirso]] ||<center>14,100 ||<center>1985-08-14
|-
| [[Dosya:Brasão de São João da Madeira.png|50px]] ||<center> '''[[São João da Madeira]]''' ||<center>[[São João da Madeira]] ||<center>21,102 ||<center>1984-06-28
|-
| [[Dosya:MTS-smamedeinfesta1.png|50px]] ||<center> '''[[São Mamede de Infesta]]''' ||<center>[[Matosinhos]] ||<center>27,000 ||<center>2001-07-12
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[São Salvador de Lordelo]]''' ||<center>[[Paredes Municipality|Paredes]] ||<center>11,000 ||<center>2003-08-26
|-
| [[Dosya:SEI1.png|50px]] ||<center> '''[[Seia]]''' ||<center>[[Seia]] ||<center>7,000 ||<center>1986-08-23
|-
| [[Dosya:Brasão de Seixal.png|50px]] ||<center> '''[[Seixal Municipality|Seixal]]''' ||<center>[[Seixal Municipality|Seixal]] ||<center>31,101 ||<center>1993-07-02
|-
| [[Dosya:SRP.png|50px]] ||<center> '''[[Serpa]]''' ||<center>[[Serpa]] ||<center>9,990||<center>2003-08-26
|-
| [[Dosya:Coat of arms of Setúbal.svg|50px]] ||<center> '''[[Setúbal]]'''||<center>[[Setúbal]] ||<center>120,636||<center>1860-04-19
|-
| [[Dosya:SLV.png|50px]] ||<center> '''[[Silves Municipality, Portugal|Silves]]''' ||<center>[[Silves Municipality, Portugal|Silves]] ||<center>11,000 ||<center>From time immemorial
|-
| [[Dosya:SNS1.png|50px]] ||<center> '''[[Sines, Portugal|Sines]]''' ||<center>[[Sines, Portugal|Sines]] ||<center>15,555 ||<center>1997-07-12
|-
| [[Dosya:TRC.png|50px]] ||<center> '''[[Tarouca]]''' ||<center>[[Tarouca]] ||<center>3,200 ||<center>2004-12-09
|-
| [[Dosya:TVR.png|50px]] ||<center> '''[[Tavira]]''' ||<center>[[Tavira]] ||<center>13,300 ||<center>1520-03-16
|-
| [[Dosya:TMR.png|50px]] ||<center> '''[[Tomar]]''' ||<center>[[Tomar]] ||<center>20,000 ||<center>1844-02-12
|-
| [[Dosya:TND1.png|50px]] ||<center> '''[[Tondela]]''' ||<center>[[Tondela]] ||<center>10,120 ||<center>1988-02-01
|-
| [[Dosya:TNV1.png|50px]] ||<center> '''[[Torres Novas]]''' ||<center>[[Torres Novas]] ||<center>14,900 ||<center>1985-08-14
|-
| [[Dosya:TVD1.png|50px]] ||<center> '''[[Torres Vedras]]''' || <center>[[Torres Vedras]]||<center>27,200 ||<center>1979-02-03
|-
| [[Dosya:TCS.png|50px]] ||<center> '''[[Trancoso, Portugal|Trancoso]]''' ||<center>[[Trancoso, Portugal|Trancoso]]||<center>3,350 ||<center>2004-12-09
|-
| [[Dosya:TRF.png|50px]] ||<center> '''[[Trofa]]''' ||<center>[[Trofa Municipality|Trofa]] ||<center>22,000 ||<center>1993-07-02
|-
| [[Dosya:Blank pt CoA city.png|50px]] ||<center> '''[[Valbom]]''' ||<center>[[Gondomar (Portugal)|Gondomar]] ||<center>14,100 ||<center>2004-12-09
|-
| [[Dosya:VAC1.png|50px]] ||<center> '''[[Vale de Cambra]]''' ||<center>[[Vale de Cambra]] ||<center>4,200 ||<center>1993-07-02
|-
| [[Dosya:VLG1.png|50px]] ||<center> '''[[Valongo]]''' ||<center>[[Valongo]] ||<center>27,900 ||<center>1990-08-10
|-
| [[Dosya:VPC1.png|50px]] ||<center> '''[[Valpaços]]''' ||<center>[[Valpaços]] ||<center>4,102 ||<center>1999-06-24
|-
| [[Dosya:VND1.png|50px]] ||<center> '''[[Vendas Novas]]''' ||<center>[[Vendas Novas]] ||<center>10,103 ||<center>1993-07-02
|-
| [[Dosya:COA of Viana do Castelo.svg|50px]] ||<center> '''[[Viana do Castelo Municipality|Viana do Castelo]]''' ||<center>[[Viana do Castelo Municipality|Viana do Castelo]] ||<center>36,750 ||<center>1848-01-20
|-
| [[Dosya:VCD1.png|50px]] ||<center> '''[[Vila do Conde]]''' ||<center>[[Vila do Conde]] ||<center>32,257 ||<center>1988-02-01
|-
| [[Dosya:VFX1.png|50px]] ||<center> '''[[Vila Franca de Xira]]'''||<center>[[Vila Franca de Xira]] ||<center>19,000 ||<center>1984-06-28
|-
| [[Dosya:VNF1.png|50px]] ||<center> '''[[Vila Nova de Famalicão]]''' ||<center>[[Vila Nova de Famalicão]] ||<center>30,100 ||<center>1985-08-14
|-
| [[Dosya:VLF1.png|50px]] ||<center> '''[[Vila Nova de Foz Côa]]''' ||<center>[[Vila Nova de Foz Côa]] ||<center>3,303 ||<center>1997-07-12
|-
| [[Dosya:Vila Nova de Gaia COA.svg|50px]] ||<center> '''[[Vila Nova de Gaia]]''' ||<center>[[Vila Nova de Gaia]] ||<center>178,526 ||<center>1984-06-28
|-
| [[Dosya:STC-sandre.png|50px]] ||<center> '''[[Vila Nova de Santo André]]''' ||<center>[[Santiago do Cacém]] ||<center>12,123 ||<center>2003-08-26
|-
| [[Dosya:VRL.png|50px]] ||<center> '''[[Vila Real Municipality|Vila Real]]''' ||<center>[[Vila Real Municipality|Vila Real]] ||<center>27,250 ||<center>1925-07-20
|-
| [[Dosya:VRS1.png|50px]] ||<center> '''[[Vila Real de Santo António Municipality|Vila Real de Santo António]]''' ||<center>[[Vila Real de Santo António Municipality|Vila Real de Santo António]] ||<center>11,000 ||<center>1988-04-19
|-
| [[Dosya:VIS.png|50px]] ||<center> '''[[Viseu]]''' ||<center>[[Viseu]] ||<center>50,583 ||<center> From time immemorial
|-
| [[Dosya:VIZ.png|50px]] ||<center> '''[[Vizela]]''' ||<center>[[Vizela Municipality|Vizela]] ||<center>10,100 ||<center>1998-09-01
|}
== Referansi ==
<references/>
[[Kategoriye:Sûkê Portekizi]]
[[Kategoriye:Listeyi]]
fc72f3yfnl3q55iaki3iybijwt5er9y
Marmara, Balıkesir
0
35612
548987
409926
2026-06-07T10:58:18Z
~2026-33757-55
34070
548987
wikitext
text/x-wiki
{{Databox}}
'''Marmara''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
== Bıvênên ==
* [[Balıkesir (wılayet)]]
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Marmara]]
3c33rn4tdxp1agd8bvnv85n86s6obzg
.nowruz
0
69435
548944
516238
2026-06-07T05:49:58Z
Mirzali
16
548944
wikitext
text/x-wiki
'''.nowruz''', [[İnternet|internet]] de nameyê bandıra jeneriko (be zıwanê [[İngılızki]]: ''[[Bandıra sewiyaya serêna jenerike|Generic top-level domains]]'') ke yew kodê interneti rê bırriyayo a.
{{Generic top-level domain}}
{{ccTLD}}
[[Kategoriye:Bandıra sewiyaya serêna jenerike]]
[[Kategoriye:İran]]
j5lr1vy1mwo6ewjqisg2oirlk7run45
NGC 192
0
71313
548945
537625
2026-06-07T05:52:01Z
Mirzali
16
548945
wikitext
text/x-wiki
{{Galaksiye}}
'''NGC 192''', yew cısımê [[Asmên|asmên]]iyo.<ref>http://www.ngcic.org/</ref><ref>https://academic.oup.com/mnras/article-pdf/399/4/2146/17323628/mnras0399-2146.pdf</ref><ref>http://aladin.u-strasbg.fr</ref><ref>{{Cite web |title=Archive copy |url=http://skyview.gsfc.nasa.gov/ |access-date=2021-08-08 |archivedate=2014-01-08 |archiveurl=https://web.archive.org/web/20140108211809/http://skyview.gsfc.nasa.gov/}}</ref> No cısım [[Katalogo Pêroyiyo Newe|Katalogê Pêroyiyê Neweyi]] de komê estareyanê Balina miyan de ca gêno. 28 Kanun 1790 de terefê Wilhelm Herscheli ra keşıf biyo.<ref>https://cseligman.com/text/atlas/ngc0.htm</ref>
== Bıwane ==
* [[Komê estareyan]]
* [[Galaksiye]]
* [[Estare]]
* [[Pulsar]]
* [[Nebula]]
== Gıreyê teberi ==
* {{NASANED}}
* {{Simbad}}
* {{Leda}}
* {{Seds}}
* {{WikiSky}}
== Bıvênên ==
* [[Lista cısımanê NGC]]
* [[Lista astronoman]]
== Çıme ==
{{Çıme}}
{{Portal|Asmên|Astronomiye}}
{{NGC|192}}
{{Kontrolê otoriteyi}}
[[Kategoriye:Cısımê Asmêni]]
[[Kategoriye:Asmênşınasiye]]
110kbq8u9zfcp7oa79gdtlkbgf2agyo
Pulsar
0
73366
548980
527949
2026-06-07T10:22:41Z
~2026-33757-55
34070
548980
wikitext
text/x-wiki
{{Databox }}
[[File:Chandra-crab.jpg|thumb]]
'''Pulsar''' ya zi '''Estarek''', yeno maneyê "Zey qelbi eştene". Pulsari, zerrek û qelbê [[nebula|nebuley]]anê. Pê quweta gırse ra, fasılê ritimi ra [[pêlanê radyoy]] asmêneştışi de [[Estarey notroni|estereyê notroni]]yê.
{{Portal|Asmên}}
{{Kontrolê otoriteyi}}
[[Kategoriye:Asmênşınasiye]]
j4dvvhpcxqnj2tz62dvm9aajqtzjo1z
Froidestrées
0
74427
548995
540718
2026-06-07T11:31:58Z
~2026-33651-67
34072
/* Bıvênên */
548995
wikitext
text/x-wiki
{{Infobox komun}}
'''Froidestrées''' dewleta [[Fransa]] de mıntıqaya [[Hauts-de-France]] miyan de yew [[Komune|komunê]] qezay [[Aisne]]yo.
==Bıvênên ==
*[[Komunê Aisney]]
{{Commonscat}}
{{Kontrolê_otoriteyi}}
{{Komunê Eni}}
[[Kategoriye:Komunê Ena]]
2448q9jyxik07dtx1odx1xx09fsjdwd
Koparuşaği
0
91229
548979
518140
2026-06-07T10:20:48Z
~2026-33757-55
34070
548979
wikitext
text/x-wiki
{{Infobox Dewe
| Xerita = Elazığ_location_Merkez.png
| Ware = [[Bınmıntıqay Malatya]]
| Wılayet = [[Xarpêt (wılayet)|Xarpêt]]
}}
'''Koparuşaği''', wılayetê [[Xarpêt (wılayet)|Xarpêt]]i de yew dewa qezaya [[Xarpêt]]ia.<ref>https://nisanyanmap.com/?y=&t=Elazığ_m</ref>
== Ekonomiye ==
Ekonomiye be heywanweyikerdış û [[Ziraet|ziraet]] ra bena.
== Terbiyet ==
Dewe de [[Mektebo Verên|mekteb]] esto, labelê seba mektebê miyani telebey şınê merkez de wanenê.
== Resayış ==
Raya dewe esta û kerda asfalt.
== Xızmete ==
Postexane çıniyo. [[Awe|Awa]] dewe esta. Elektrikê dewe esto.
== Çıme ==
{{Çıme}}
{{Portal|Tırkiya|Coğrafya}}
{{Dewê Xarpêti}}
[[Kategoriye:Dewê Xarpêti]]
8b6h0sjkej3p9io15q49rctq9k9ocx7
Modul:Kontrolê otoriteyi
828
98330
548938
547366
2026-06-06T14:37:40Z
~2026-33070-17
34013
548938
Scribunto
text/plain
local p = {}
-- ============ Format validation functions ============
local valid = {}
-- NCDA: NOID Check Digit Algorithm; see [[wikipedia:Check digit#NCDA]]
local ncda -- leave this as a local since NCDA is commonly used among ARK identifiers and could be useful for validating other identifiers later
do -- initialize these constants only once but scope them in a block so local namespace doesn't get cluttered with these
local r29s = [[0123456789bcdfghjkmnpqrstvwxz]] -- radix 29 "betanumeric" digit string
local r29n = r29s:len()
local r29v2d, r29d2v = {}, {}
for i = 1, r29n do
local v, d = i-1, r29s:sub(i, i)
r29v2d[v], r29d2v[d] = d, v
end
function ncda(sid)
local n, sum = sid:len(), 0
for i = 1, n do
sum = sum + i * (r29d2v[sid:sub(i, i)] or 0)
end
return r29v2d[sum % r29n]
end
end
function valid.validateBNF(id)
--P268's format regex: \d{8}[0-9bcdfghjkmnpqrstvwxz] (e.g. 123456789)
local FRBNF = id:sub(1, -2)
return FRBNF:match('^%d%d%d%d%d%d%d%d$') ~= nil and ncda('cb'..FRBNF) == id:sub(-1) and id
end
--Validate ISNI (and ORCID) and returns it as a 16 characters string or returns false if it's invalid.
-- See http://support.orcid.org/knowledgebase/articles/116780-structure-of-the-orcid-identifier
--P213 (ISNI) format regex: [0-9]{4} [0-9]{4} [0-9]{4} [0-9]{3}[0-9X] (e.g. 0000-0000-6653-4145)
function valid.validateIsni(id)
id = id:gsub( '[ %-]', '' ):upper()
if not id:match( '^%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d[%dX]$' ) then
return false
end
local total = 0
for i = 1, 15 do
local digit = id:byte( i ) - 48 --Get integer value
total = (total + digit) * 2
end
local remainder = total % 11
local result = (12 - remainder) % 11
local checkdigit
if result == 10 then
checkdigit = 'X'
else
checkdigit=tostring( result )
end
if checkdigit ~= string.char( id:byte( 16 ) ) then
return false
end
return id
end
function valid.validateOrcid(id)
--P496 (ORCID) format regex: 0000-000(1-[5-9]|2-[0-9]|3-[0-4])\d{3}-\d{3}[\dX] (e.g. 0000-0002-7398-5483)
id = valid.validateIsni(id)
if not id then
return false
end
return id:sub( 1, 4 )..'-'..id:sub( 5, 8 )..'-'..id:sub( 9, 12 )..'-'..id:sub( 13, 16 )
end
function valid.validateEuropeana(id)
--P7704's format regex: (place|agent|concept|organisation)/.* (e.g. agent/base/59832)
local s1, s2, s3 = string.match(id, '([^/]+)([^%d]+)(%d+)')
if not (s1 and s2 and s3) and not (s1 == 'place' or s1 == 'agent' or s1 == 'concept' or s1 == 'organisation') then
return false
end
return s1 .. s2 .. s3
end
-- ============ Local functions ============
local function validValue(conf_id, id)
if not id then
return
end
local valid_value
if conf_id.pattern then -- check pattern to determine validity
valid_value = string.match(id, '^' .. conf_id.pattern .. '$')
elseif conf_id.patterns then -- check multiple patterns to determine validity
for _, pattern in ipairs(conf_id.patterns) do
valid_value = id:match('^' .. pattern .. '$')
if valid_value then
break
end
end
elseif conf_id.valid and type(valid[conf_id.valid]) == 'function' then -- use function to determine validity
valid_value = valid[conf_id.valid](id)
else -- no validation possible
valid_value = id
end
return valid_value
end
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
local function addCat(cat)
if cat and namespace == 0 then
return '[[Category:Articles amb identificador ' .. cat .. ']]'
end
return ''
end
local function getIdsFromWikidata(item, property)
if item.claims[property] then
local claims = mw.wikibase.getBestStatements(item.id, property)
for _, statement in ipairs(claims) do
if statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then
return statement.mainsnak.datavalue.value
end
end
end
return
end
local function getLinkFromWikidata(property)
local claims = mw.wikibase.getBestStatements(property, 'P1630')
for _, statement in ipairs(claims) do
if statement.mainsnak.datavalue and statement.mainsnak.datavalue.value then
return statement.mainsnak.datavalue.value
end
end
return
end
local function createId(params, id)
local arg_link = params.link
if not arg_link then
arg_link = getLinkFromWikidata('P' .. params.property)
end
if arg_link then
local link = mw.ustring.gsub(arg_link, '$1', id)
if params.prefix then
return '* ' .. params.prefix .. ' ([' .. link .. ' 1])' .. addCat(params.category) .. '\n'
else
return '* [' .. link .. ' ' .. params.label .. ']' .. addCat(params.category) .. '\n'
end
end
return ''
end
-- ============ Main ============
local config = mw.loadData('Module:Authority control/config')
function p.authorityControl(frame)
local conf = config.config
local parentArgs = frame:getParent().args
local auxCats = "[[Categoria:Control d'autoritats]]"
local rct = false -- boolean to track if there are any links to be returned
-- Create sections
local numsections, sections = 0, {}
for _, _ in ipairs(config.sections) do -- count number of regular sections
numsections = numsections + 1
end
for _ = 1, numsections do
table.insert(sections, {})
end
-- fetch data with Wikidata fallback
local item_obj = mw.wikibase.getEntityObject(parentArgs.item)
if item_obj ~= nil and item_obj.claims ~= nil then
for _, params in ipairs(conf) do
local args_id = parentArgs[params.label]
if args_id and args_id == '' then
-- paràmetre definit però buit, no el mostrarà
elseif params.property ~= 0 then
local wikidata_id = getIdsFromWikidata(item_obj, 'P' .. params.property)
local valid_id = validValue(params, args_id or wikidata_id)
if valid_id then
rct = true
if wikidata_id then
if args_id and args_id ~= wikidata_id then
table.insert(sections[params.section], createId(params, valid_id))
auxCats = auxCats .. "[[Categoria:Pàgines amb paràmetres d'autoritat diferents de Wikidata]]"
else
table.insert(sections[params.section], createId(params, valid_id))
if args_id then
auxCats = auxCats .. "[[Categoria:Pàgines que utilitzen control d'autoritats amb paràmetres]]"
end
end
elseif args_id then
table.insert(sections[params.section], createId(params, valid_id))
auxCats = auxCats .. "[[Categoria:Pàgines que utilitzen control d'autoritats amb paràmetres]]"
end
end
end
end
end
--configure Navbox
if rct then -- there is at least one link to display
local Navbox = require('Module:Navbox')
local sect = 0
local navboxArgs = {
name = 'Nustekar',
navboxclass = 'authority-control',
bodyclass = 'hlist',
}
for c = 1, numsections do
if #sections[c] > 0 then -- section is non-empty
sect = sect + 1
-- including categories inside navbox, avoiding a final extra line with parsoid
navboxArgs['group' .. sect] = config.sections[c].name .. (sect == 1 and auxCats or '')
navboxArgs['list' .. sect] = table.concat(sections[c])
end
end
return Navbox._navbox(navboxArgs)
end
return ''
end
return p
b1czwvic5w7kysm81itaaqja20rewjr
548940
548938
2026-06-06T14:41:56Z
~2026-33070-17
34013
548940
Scribunto
text/plain
require('Módulo:No globals')
local function cleanLink ( link, style )
-- similar to mw.uri.encode
local wikiLink = link
if style == 'PATH' then
wikiLink = mw.ustring.gsub( wikiLink, ' ', '%%%%20' )
elseif style == 'WIKI' then
wikiLink = mw.ustring.gsub( wikiLink, ' ', '_' )
wikiLink = mw.ustring.gsub( wikiLink, '?', '%%%%3F')
else -- if style == 'QUERY' then -- default
wikiLink = mw.ustring.gsub( wikiLink, ' ', '+' )
end
wikiLink = mw.ustring.gsub( wikiLink, '%[', '%%5B' )
wikiLink = mw.ustring.gsub( wikiLink, '%]', '%%5D' )
wikiLink = mw.ustring.gsub( wikiLink, '%"', '%%%%22' )
return wikiLink
end
local function generic ( id, link, parameter )
local idlink = cleanLink( id, 'PATH' )
link = mw.ustring.gsub( link, '$1', idlink )
return '[' .. link .. ' ' .. id .. ']'
end
local function noLink ( id, link, parameter )
-- evita generar un enlace externo junto con el identificador
return id
end
local function bncLink ( id, link, parameter )
-- filtro local del BNC, para evadir multitud de identificadores de Wikidata que no se enlazan adecuadamente
-- véase https://www.wikidata.org/wiki/Wikidata:Database_reports/Constraint_violations/P1890#%22Format%22_violations
if ( string.match( id, '^%d%d%d%d%d%d%d%d%d$' ) ) then
return generic ( id, link, parameter )
end
return false
end
local function bnfLink ( id, link, parameter )
-- representación local del BNF, con doble enlace
return generic( id, link, parameter ) .. ' [http://data.bnf.fr/ark:/12148/cb' .. id .. ' (data)]'
end
local function icd11Link ( id, link, parameter )
-- la propiedad P7329 no genera un enlace externo, así que se usarán los valores de P7807 cuando esté definida
local foundation = getIdsFromWikidata(mw.wikibase.getEntityIdForCurrentPage(), 'P7807')
if foundation and foundation[1] then
link = 'https://icd.who.int/browse11/l-m/en#/http://id.who.int/icd/entity/$1'
link = link:gsub('$1', foundation[1])
return generic(id, link, parameter)
else
return id
end
end
local function ineLink ( id, link, parameter )
-- representación especial del INE, enlace no estándar con cinco parámetros utilizados
local ineMainRE, ineTailRE = '^(%d%d)(%d%d%d)', '(%d%d)(%d%d)(%d%d)'
local codProv, codMuni, codEC, codES, codNUC = string.match( id, ineMainRE .. ineTailRE .. '$' )
if not codEC or not codES or not codNUC then
codProv, codMuni = string.match( id, ineMainRE .. '$' )
if codProv and codMuni then
codEC, codES, codNUC = '00', '00', '00'
else
codProv, codMuni = string.match( id, ineMainRE )
codEC, codES, codNUC = '', '', ''
end
end
if codProv and codMuni then
link = 'http://www.ine.es/nomen2/inicio_a.do?accion=busquedaAvanzada&inicio=inicio_a&subaccion=&botonBusquedaAvanzada=Consultar+selecci%C3%B3n&numPag=0&ordenAnios=ASC&comunidad=00&entidad_amb=no&poblacion_amb=T&poblacion_op=%3D&poblacion_txt=&denominacion_op=like&denominacion_txt=&codProv=$1&codMuni=$2&codEC=$3&codES=$4&codNUC=$5'
link = link:gsub('$1', codProv):gsub('$2', codMuni):gsub('$3', codEC):gsub('$4', codES):gsub('$5', codNUC)
return generic( id, link, parameter )
end
return id
end
local function commonscat ( id, link, parameter )
-- representación especial del enlace a las categorías de Commons, para mantener el formato de enlace interwiki
local idlink = cleanLink( id, 'WIKI' )
link = mw.ustring.gsub( link, '$1', idlink )
return '<span class="plainlinks">[' .. link .. ' ' .. id .. ']</span>'
end
local function sisterprojects ( id, link, parameter )
-- enlaces interproyecto
local prefix = {
-- Ejemplo: -- enwiki = 'w:en',
commonswiki = 'c',
eswikivoyage = 'voy',
eswiktionary = 'wikt',
eswikibooks = 'b',
eswikinews = 'n',
eswikiversity = 'v',
eswikiquote = 'q',
eswikisource = 's',
mediawikiwiki = 'mw',
metawiki = 'm',
specieswiki = 'species',
}
if prefix[ parameter ] then
return '[['..prefix[ parameter ]..':'..id..'|'..id..']]'
end
return false
end
function getCommonsValue ( itemId )
local commonslink = ''
local categories = ''
local property = getIdsFromWikidata( itemId, 'P373' )
if property and property[1] then
property = property[1]
commonslink = commonslink .. getLink( 373, property, commonscat )
else
property = ''
end
local sitelink = getIdsFromSitelinks( itemId, 'commonswiki' )
if sitelink and sitelink[1] then
sitelink = sitelink[1]
if sitelink ~= 'Category:' .. property then
if commonslink == '' then
commonslink = commonslink .. sisterprojects( sitelink, nil, 'commonswiki' )
end
end
else
sitelink = ''
end
if property and sitelink then
if sitelink ~= 'Category:' .. property then
-- categories = categories .. '[[Categoría:Wikipedia:Control de autoridades con enlaces diferentes de Commons]]'
end
elseif sitelink then -- not property
-- categories = categories .. '[[Categoría:Wikipedia:Control de autoridades sin Commonscat]]'
elseif property then -- not sitelink
-- categories = categories .. '[[Categoría:Wikipedia:Control de autoridades sin Commons]]'
else -- not property and not sitelink
-- categories = categories .. '[[Categoría:Wikipedia:Control de autoridades sin ningún enlace de Commons]]'
end
if commonslink ~= '' then
-- Special:MediaSearch
local mediasearch = 'https://commons.wikimedia.org/wiki/Special:MediaSearch?type=image&search=%22$1%22'
commonslink = commonslink .. ' / ' .. commonscat( itemId, mediasearch )
return { commonslink .. categories }
end
return {}
end
local conf = {}
--In this order: name of the parameter, label, propertyId in Wikidata, formatting function, category id
-- -- name of the parameter: unique name
-- -- label: internal link in wiki format
-- -- propertyId in Wikidata: number without 'P' suffix
-- -- formatting function: one of these four options
-- -- -- local function (like 'generic')
-- -- -- string 'y' (yes), to show a default identifier 'ID'
-- -- -- string 'n' (no), to show the real identifier
-- -- -- any other string, to show this string as identifier ('id', 'url', 'link', ...)
-- -- category id: one of these tree options
-- -- -- number 0, to not add category
-- -- -- number 1, to add a category based on the name of the parameter
-- -- -- any string, to add a category based on this string
conf.databases = {}
conf.databases[1] = {}
conf.databases[1].name = '[[Control de autoridades]]'
conf.databases[1].list = {
{
title = 'Proyectos Wikimedia',
group = {
{ 'Wikidata', '[[Archivo:Wikidata-logo.svg|20px|link=Wikidata|alt=Wd|Wikidata]] Datos', 'Wikidata:$1', 'n', 0 },
{ 'Commons', '[[Archivo:Commons-logo.svg|15px|link=Wikimedia Commons|alt=Commonscat|Commonscat]] Multimedia', getCommonsValue, 'n', 0 },
{ 'Wikivoyage', '[[Archivo:Wikivoyage-logo.svg|15px|link=Wikiviajes|alt=Wikivoyage|Wikivoyage]] Guía turística', 'eswikivoyage', sisterprojects, 0 },
{ 'Wiktionary', '[[Archivo:Wiktionary-logo.svg|15px|link=Wikcionario|alt=Wiktionary|Wiktionary]] Diccionario', 'eswiktionary', sisterprojects, 0 },
{ 'Wikibooks', '[[Archivo:Wikibooks-logo.svg|15px|link=Wikilibros|alt=Wikibooks|Wikibooks]] Libros y manuales', 'eswikibooks', sisterprojects, 0 },
{ 'Wikinews', '[[Archivo:Wikinews-logo.svg|20px|link=Wikinoticias|alt=Wikinews|Wikinews]] Noticias', 'eswikinews', sisterprojects, 0 },
{ 'Wikiversity', '[[Archivo:Wikiversity-logo.svg|15px|link=Wikiversidad|alt=Wikiversity|Wikiversity]] Recursos didácticos', 'eswikiversity', sisterprojects, 0 },
{ 'Wikiquote', '[[Archivo:Wikiquote-logo.svg|15px|link=Wikiquote|alt=Wikiquote|Wikiquote]] Citas célebres', 'eswikiquote', sisterprojects, 0 },
{ 'Wikisource', '[[Archivo:Wikisource-logo.svg|15px|link=Wikisource|alt=Wikisource|Wikisource]] Textos', 'eswikisource', sisterprojects, 0 },
{ 'MediaWiki', '[[Archivo:MediaWiki-2020-icon.svg|20px|link=MediaWiki|alt=MediaWiki|MediaWiki]] MediaWiki', 'mediawikiwiki', sisterprojects, 0 },
{ 'Meta-Wiki', '[[Archivo:Wikimedia Community Logo.svg|15px|link=Wikimedia Meta-Wiki|alt=Meta-Wiki|Meta-Wiki]] Coordinación', 'metawiki', sisterprojects, 0 },
{ 'Wikispecies', '[[Archivo:Wikispecies-logo.svg|15px|link=Wikispecies|alt=Wikispecies|Wikispecies]] Especies', 'specieswiki', sisterprojects, 0 },
},
},
{
title = 'Identificadores',
group = {
{ 'ISSN', '[[ISSN]]', 236, 'n', 1 },
{ 'VIAF', '[[Fichero de Autoridades Virtual Internacional|VIAF]]', 214, 'n', 1 },
{ 'ISNI', '[[International Standard Name Identifier|ISNI]]', 213, 'n', 1 },
{ 'BCN', '[[Biblioteca del Congreso de la Nación Argentina|BCN]]', 2879, 'n', 1 },
{ 'BNA', '[[Biblioteca Nacional de la República Argentina|BNA]]', 3788, 'n', 1 },
{ 'BNA-ed', '[[Biblioteca Nacional (Argentina)|BNA]]', 1143, 'n', 0 },
{ 'BNM', '[[Biblioteca Nacional de Maestras y Maestros|BNM]]', 9774, 'n', 1 },
{ 'BNE', '[[Biblioteca Nacional de España|BNE]]', 950, 'n', 1 },
{ 'BNF', '[[Biblioteca Nacional de Francia|BNF]]', 268, bnfLink, 1 },
{ 'VcBA', '[[Biblioteca Apostólica Vaticana|VcBA]]', 8034, 'n', 1 },
{ 'BNM', '[[Biblioteca Nacional de México|BNM]]', 4440, 'n', 1 },
{ 'BNC', '[[Biblioteca Nacional de Chile|BNC]]', 1890, bncLink, 1 },
{ 'BNC', '[[Biblioteca Nacional de Chile|BNC]]', 7369, 'n', 1 },
{ 'BNU', '[[Biblioteca Nacional de Uruguay|BNU]]', 12595, 'n', 1 },
{ 'BNB', '[[Biblioteca Nacional de Brasil|BNB]]', 4619, 'n', 1 },
{ 'CANTIC', '[[Biblioteca de Cataluña|CANTIC]]', 9984, 'n', 1 },
{ 'GND', '[[Gemeinsame Normdatei|GND]]', 227, 'n', 1 },
{ 'LCCN', '[[Library of Congress Control Number|LCCN]]', 244, 'n', 1 },
{ 'NCL', '[[Biblioteca central de Taiwán|NCL]]', 1048, 'n', 0 },
{ 'NDL', '[[Biblioteca Nacional de la Dieta|NDL]]', 349, 'n', 0 },
{ 'NKC', '[[Biblioteca Nacional de la República Checa|NKC]]', 691, 'n', 0 },
{ 'NLA', '[[Biblioteca Nacional de Australia|NLA]]', 409, 'n', 1 },
{ 'RLS', '[[Biblioteca del Estado Ruso|BER]]', 947, 'n', 0 },
{ 'J9U', '[[Biblioteca Nacional de Israel|NLI]]', 8189, 'n', 0 },
{ 'CINII', '[[CiNii]]', 271, 'n', 0 },
{ 'NARA', '[[National Archives and Records Administration|NARA]]', 1225, 'n', 0 },
{ 'LCCNLCOC', '[[Library of Congress Control Number|LCCN]]', 1144, 'n', 0 },
{ 'SNAC', '[[d:Q29861311|SNAC]]', 3430, 'n', 1 },
{ 'S2', '[[:d:Q22908627|S2]]', 4012, 'n', 0 },
{ 'SUDOC', '[[Système universitaire de documentation|SUDOC]]', 269, 'n', 0 },
{ 'ULAN', '[[Union List of Artist Names|ULAN]]', 245, 'n', 1 },
{ 'frickSpain ', '[[Colección Frick|research.frick]]', 8572, 'n', 1 },
{ 'ORCID', '[[ORCID]]', 496, 'n', 1 },
{ 'Scopus', '[[Scopus]]', 1153, 'n', 1 },
-- { 'SELIBR', '[[LIBRIS|SELIBR]]', 906, 'n', 1 },
{ 'BIBSYS', '[[BIBSYS]]', 1015, 'n', 1 },
{ 'IPNIaut', '[[Índice Internacional de Nombres de las Plantas|IPNI]]', 586, 'n', 'IPNI' },
{ 'MGP', '[[Mathematics Genealogy Project|MGP]]', 549, 'n', 0 },
{ 'autores.uy', '[[autores.uy]]', 2558, 'n', 1 },
{ 'Slovenska biografija', '[[:d:Q15975890|Slovenska biografija]]', 1254, 'n', 0 },
{ 'SBN', '[[Istituto Centrale per il Catalogo Unico|ICCU]]', 396, 'n', 1 },
{ 'ARAE', '[[:d:Q105580684|ARAE]]', 9226, 'n', 1 },
{ 'DeutscheBiographie', '[[Deutsche Biographie]]', 7902, 'n', 1 },
{ 'NobelPrize', '[[Premio Nobel]]', 8024, 'n', 0 },
{ 'CCBAE', '[[:d:Q61505171|CCBAE]]', 6493, 'n', 1 },
-- { 'DIR3', '[[Directorio Común de Unidades Orgánicas y Oficinas|DIR3]]', 6222, 'n', 1 },
{ 'CensoGuia', '[[Censo-Guía de Archivos de España e Iberoamérica]]', 3998, 'n', 'Censo-Guía' },
{ 'Libraries.org', 'Libraries.org', 4848, 'n', 1 },
{ 'DirectorioMuseos', '[[:d:Q56246649|Directorio de Museos y Colecciones de España]]', 5763, 'n', 1 },
{ 'SUCA', 'SUCA', 5946, 'n', 1 },
{ 'BOE', '[[Boletín Oficial del Estado|BOE]]', 4256, 'n', 1 },
{ 'RoyalSociety', '[[Royal Society]]', 2070, 'url', 'Royal Society' },
{ 'HAW', '[[Academia de Ciencias y Humanidades de Heidelberg|HAW]]', 2273, 'n', 1 },
{ 'SAW', '[[Academia Sajona de Ciencias de Leipzig|SAW]]', 3411, 'n', 1 },
{ 'KNAW', '[[Real Academia de Artes y Ciencias de los Países Bajos|KNAW]]', 2454, 'n', 1 },
-- { 'KVAB', '[[Real Academia Flamenca de Ciencias y Artes de Bélgica|KVAB]]', 3887, 'n', 1 },
{ 'Leopoldina', '[[Deutsche Akademie der Naturforscher Leopoldina|Leopoldina]]', 3413, 'n', 1 },
{ 'CONICET', '[[CONICET]]', 3900, 'n', 1 },
{ 'Grierson', '[[Directorio de científicos argentinos Dra. Grierson|Grierson]]', 3946, 'n', 1 },
{ 'RANM', '[[Real Academia Nacional de Medicina|RANM]]', 3945, 'n', 1 },
-- { 'ANMF', '[[Académie Nationale de Médecine|ANMF]]', 3956, 'n', 1 },
{ 'Léonore', '[[Base Léonore|Léonore]]', 11152, 'n', 0 },
{ 'USCongress', '[[Biographical Directory of the United States Congress|US Congress]]', 1157, 'n', 0 },
{ 'BPN', '[[Biografisch Portaal|BPN]]', 651, 'n', 1 },
-- { 'ISCO', '[[d:Q1233766|ISCO]]', 952, 'n', 1 },
{ 'AAT', '[[Art & Architecture Thesaurus|AAT]]', 1014, 'n', 1 },
{ 'OpenLibrary', '[[Open Library]]', 648, 'n', 'Open Library' },
{ 'PARES', '[[PARES]]', 4813, 'n', 1 },
{ 'SSRN', '[[Social Science Research Network|SSRN]]', 3747, 'n', 'SSRN autor' },
{ 'SIKART', '[[SIKART]]', 781, 'n', 0 },
{ 'KULTURNAV', '[[KulturNav]]', 1248, 'id', 0 },
{ 'RKDartists', '[[Rijksbureau voor Kunsthistorische Documentatie|RKD]]', 650, 'n', 1 },
{ 'GoogleScholar', '[[Google Académico]]', 1960, 'n', 'Google Académico' },
-- { 'Microsoft Academic', '[[Microsoft Academic]]', 6366, 'n', 1 },
{ 'RID', '[[ResearcherID]]', 1053, 'n', 1 },
{ 'NLM', '[[Biblioteca Nacional de Medicina de los Estados Unidos|NLM]]', 1055, 'n', 1 },
{ 'Latindex', '[[Latindex]]', 12376, 'n', 1 },
{ 'ERIH PLUS', '[[ERIH PLUS]]', 3434, 'n', 1 },
{ 'IPNIpub', '[[Índice Internacional de Nombres de las Plantas|IPNI]]', 2008, 'n', 1 },
{ 'SUDOCcat', '[[Système universitaire de documentation|SUDOC]]', 1025, 'n', 'SUDOC catálogo' },
{ 'ZDB', '[[Zeitschriftendatenbank|ZDB]]', 1042, 'n', 1 },
{ 'NorwegianRegister', '[[Norsk senter for forskningsdata|Norwegian Register]]', 1270, 'n', 'Norwegian Register' },
{ 'DOAJ', '[[Directory of Open Access Journals|DOAJ]]', 5115, 'n', 1 },
{ 'ACNP', 'ACNP', 6981, 'n', 1 },
{ 'DipFedBra', '[[Cámara de Diputados de Brasil]]', 7480, 'n', 1 },
{ 'HCDN', '[[Cámara de Diputados de la Nación Argentina|Estadísticas HCDN]]', 4693, 'n', 1 },
{ 'HCDNbio', '[[Cámara de Diputados de la Nación Argentina|Biografía HCDN]]', 5225, 'n', 1 },
{ 'Directorio Legislativo', 'Directorio Legislativo', 6585, 'n', 0 },
-- { 'Legislatura CABA', '[[Legislatura de la Ciudad de Buenos Aires|Legislatura CABA]]', 4667, 'n', 1 },
{ 'Archivo Histórico de Diputados de España', '[[Congreso de los Diputados|Archivo Histórico de Diputados (1810-1977)]]', 9033, 'n', 1 },
{ 'Senadores de España (1834-1923)', '[[Senado de España|Senadores de España (1834-1923)]]', 10265, 'n', 1 },
{ 'Asamblea de Madrid', '[[Asamblea de Madrid]]', 4797, 'n', 1 },
{ 'BCNCL', '[[Biblioteca del Congreso Nacional de Chile|Biografías BCN]]', 5442, 'url', 0 },
{ 'RBD', '[[Ministerio de Educación de Chile|RBD MINEDUC]]', 1919, 'n', 0 },
{ 'CineChile', 'CineChile', 6750, 'url', 0 },
{ 'Tebeosfera-autor', '[[Tebeosfera]]', 5562, 'n', 1 },
{ 'DPRR', 'DPRR', 6863, 'n', 0},
{ 'tribunsdelaplebe.fr', 'TDLP', 8961, 'n', 0},
{ 'Pleiades', 'Pleiades', 1584, 'n', 0},
{ 'IMO', '[[Organización Marítima Internacional|IMO]]', 458, 'n', 0},
{ 'Mnemosine', '[[Mnemosine. Biblioteca Digital de La otra Edad de Plata|Mnemosine]]', 10373, 'n', 0 },
{ 'Renacyt', '[[Registro Nacional Científico, Tecnológico y de Innovación Tecnológica|Renacyt]]', 10452, 'n', 0 },
{ 'AWARE', '[[Archives of Women Artists, Research and Exhibitions|AWARE]]', 6637, 'url', 0 },
{ 'Tabakalera', '[[Tabakalera]]', 10069, 'n', 1 },
{ 'BUSC', '[[Biblioteca de la Universidad de Santiago de Compostela|BUSC]]', 12538, 'n' , 1}
},
},
{
title = 'Diccionarios y enciclopedias',
group = {
{ 'Auñamendi', '[[Enciclopedia Auñamendi|Auñamendi]]', 3218, 'n', 1 },
-- { 'GEA', '[[Gran Enciclopedia Aragonesa|GEA]]', 1807, 'n', 1 },
{ 'GEN', '[[Gran Enciclopedia Navarra|GEN]]', 7388, 'n', 1 },
{ 'DBSE', '[[Diccionario biográfico del socialismo español|DBSE]]', 2985, 'url', 1 },
{ 'DBE', '[[Diccionario biográfico español|DBE]]', 4459, 'url', 1 },
{ 'DBCLM', '[[Diccionario biográfico de Castilla-La Mancha|DBCLM]]', 13067, 'url', 1 },
{ 'DCED', '[[Diccionario de catedráticos españoles de derecho|DCED]]', 13620, 'n', 1 },
{ 'DBA', '[[Diccionario biográfico de Almería|DBA]]', 13851, 'n', 1 },
{ 'DHS', '[[Diccionario histórico de Suiza|DHS]]', 902, 'n', 0 },
{ 'LIR', '[[Diccionario histórico de Suiza|LIR]]', 886, 'n', 0 },
{ 'TLS', '[[Theaterlexikon der Schweiz|TLS]]', 1362, 'n', 0 },
{ 'Britannica', '[[Enciclopedia Británica|Britannica]]', 1417, 'url', 0 },
{ 'ELEM', '[[Enciclopedia de la Literatura en México|ELEM]]', 1565, 'n', 0 },
{ 'Treccani', '[[Enciclopedia Treccani|Treccani]]', 4223, 'url', 0 },
{ 'Iranica', '[[Encyclopædia Iranica]]', 3021, 'n', 1 },
},
},
{
title = 'Repositorios digitales',
group = {
{ 'PerséeRevista', '[[Persée (portal)|Persée]]', 2733, 'n', 'Persée revista' },
{ 'DialnetRevista', '[[Dialnet]]', 1609, 'n', 'Dialnet revista' },
{ 'Redalyc', '[[Redalyc]]', 3131, 'n', 1 },
-- { 'UNZrevista', '[[UNZ.org|UNZ]]', 2735, 'n', 0 },
-- { 'JSTORrevista', '[[JSTOR]]', 1230, 'n', 'JSTOR revista' },
{ 'HathiTrust', '[[HathiTrust]]', 1844, 'n', 1 },
{ 'Galicianaobra', '[[Galiciana]]', 3004, 'n', 'Galiciana obra' },
{ 'Trove', '[[Trove]]', 5603, 'n', 1 },
{ 'BVMCobra', '[[Biblioteca Virtual Miguel de Cervantes|BVMC]]', 3976, 'n', 'BVMC obra' },
{ 'BVMCpersona', '[[Biblioteca Virtual Miguel de Cervantes|BVMC]]', 2799, 'n', 'BVMC persona' },
{ 'Persée', '[[Persée (portal)|Persée]]', 2732, 'n', 1 },
{ 'Dialnet', '[[Dialnet]]', 1607, 'n', 1 },
{ 'GutenbergAutor', '[[Proyecto Gutenberg]]', 1938, 'n', 'Proyecto Gutenberg autor' },
{ 'BHL-bibliografia', '[[Biodiversity Heritage Library|BHL]]', 4327, 'n', 0 },
-- { 'UNZautor', '[[UNZ.org|UNZ]]', 2734, 'n', 'UNZ' },
{ 'TLL', '[[:d:Q570837|TLL]]', 7042, 'n', 'The Latin Library' },
{ 'BDCYL', '[[Biblioteca Digital de Castilla y León|BDCYL]]', 3964, 'n', 1 },
{ 'BVPB', '[[Biblioteca Virtual del Patrimonio Bibliográfico|BVPB]]', 4802, 'n', 1 },
{ 'PDCLM', '[[d:Q61500710|Patrimonio Digital de Castilla-La Mancha]]', 6490, 'n', 1 },
{ 'BDA', '[[Biblioteca Digital de Andalucía|BDA]]', 6496, 'n', 1 },
{ 'BDM', '[[Biblioteca Digital de Madrid|BDM]]', 13816, 'n', 1 },
{ 'BVPHautoridad', '[[Biblioteca Virtual de Prensa Histórica|BVPH]]', 6492, 'n', 1 },
{ 'BivaldiAutor', '[[Biblioteca Valenciana Digital|BiValDi]]', 3932, 'n', 'Bivaldi autor' },
{ 'GalicianaAutor', '[[Galiciana]]', 3307, 'n', 'Galiciana autor' },
{ 'Packard Humanities Institute', '[[Packard Humanities Institute|PHI]]', 6941, 'n', 0 },
{ 'Europeana', '[[Europeana]]', 7704, 'n', 1 },
{ 'DOI', '[[Identificador de objeto digital|DOI]]', 356, 'n', 1 },
{ 'Handle', '[[Sistema Handle|Handle]]', 1184, 'url', 1 },
},
},
{
title = 'Museos',
group = {
{ 'MNCARS', '[[Museo Nacional Centro de Arte Reina Sofía|MNCARS]]', 4439, 'url', 1 },
{ 'MuseoDelPradoPersona', '[[Museo del Prado]]', 5321, 'n', 'Museo del Prado (persona)' },
{ 'MuseoDelPradoObra', '[[Museo del Prado]]', 8905, 'n', 'Museo del Prado (obra)' },
{ 'Museo Smithsoniano de Arte AmericanoPersona', '[[Museo Smithsoniano de Arte Americano|SAAM]]', 1795, 'n', 'SAAM (persona)' },
{ 'Museo Smithsoniano de Arte AmericanObra', '[[Museo Smithsoniano de Arte Americano|SAAM]]', 4704, 'n', 'SAAM (obra)' },
{ 'MuseodeOrsayArtistas', '[[Museo de Orsay]]', 2268, 'n', 'Museo de Orsay (artista)' },
{ 'Thyssen-BornemiszaArtistas', '[[Museo Thyssen-Bornemisza|Thyssen-Bornemisza]]', 2431, 'n', 'Thyssen-Bornemisza (artista)' },
},
},
{
title = 'Hemerotecas digitales',
group = {
{ 'HemBNE', '[[Hemeroteca Digital de la Biblioteca Nacional de España|Hemeroteca digital de la BNE]]', 12151, 'n', 1 },
{ 'BVPH', '[[Biblioteca Virtual de Prensa Histórica]]', 2961, 'n', 1 },
{ 'Memoriademadrid', '[[Memoriademadrid]]', 7372, 'n', 1 },
},
},
{
title = 'Astronomía',
group = {
{ 'Simbad', '[[SIMBAD]]', 3083, 'n', 0 },
{ 'JPL-Small-Body-Database', '[[JPL Small-Body Database|JPL]]', 716, 'n', 0 },
{ 'MPC', '[[Centro de Planetas Menores|MPC]]', 5736, 'n', 0 },
{ 'NASA-Exoplanet-Archive', '[[NASA Exoplanet Archive]]', 5667, 'n', 0 },
{ 'GazPlaNom', 'Gazetteer of Planetary Nomenclature', 2824, 'n', 0 },
},
},
{
title = 'Lugares',
group = {
{ 'OSM', '[[OpenStreetMap|OSM]]', 402, 'n', 'Relación OSM' },
{ 'TGN', '[[Getty Thesaurus of Geographic Names|TGN]]', 1667, 'n', 1 },
{ 'AtlasIR', '[[:d:Q24575107|Atlas Digital del Imperio Romano]]', 1936, 'n', 0 },
{ 'Pleiades', '[[:d:Q24423804|Pleiades]]', 1584, 'n', 0 },
{ 'TmGEO', '[[:d:Q22094624|Trismegistos GEO]]', 1958, 'n', 0 },
{ 'SNCZI-IPE-EMBALSE', '[[Sistema Nacional de Cartografía de Zonas Inundables|SNCZI]]-IPE', 4568, 'n', 'SNCZI-IPE embalse' },
{ 'SNCZI-IPE-PRESA', '[[Sistema Nacional de Cartografía de Zonas Inundables|SNCZI]]-IPE', 4558, 'n', 'SNCZI-IPE presa' },
{ 'NATURA2000', '[[Red Natura 2000|Natura 2000]]', 3425, 'n', 'Natura 2000' },
{ 'WWF', '[[Fondo Mundial para la Naturaleza|WWF]]', 1294, 'n', 1 },
{ 'IDESCAT', '[[Instituto de Estadística de Cataluña|IDESCAT]]', 4335, 'n', 1 },
{ 'INE', '[[Instituto Nacional de Estadística (España)|INE]]', 772, ineLink, 1 },
{ 'INE Portugal', '[[Instituto Nacional de Estatística (Portugal)|INE]]', 6324, 'n', 1 },
{ 'ISTAT', '[[Istituto Nazionale di Statistica|ISTAT]]', 635, 'n', 1 },
{ 'OFS-Suiza', '[[Oficina Federal de Estadística (Suiza)|OFS]]', 771, 'n', 1 },
{ 'IBGE', '[[Instituto Brasileiro de Geografia e Estatística|IBGE]]', 1585, 'n', 1 },
{ 'TOID', '[[TOID]]', 3120, 'n', 1 },
{ 'INSEE-commune', '[[Institut National de la Statistique et des Études Économiques|INSEE]]', 374, 'n', 'INSEE (comuna)' },
{ 'INSEE-departamento', '[[Institut National de la Statistique et des Études Économiques|INSEE]]', 2586, 'n', 'INSEE (departamento)' },
{ 'INSEE-region', '[[Institut National de la Statistique et des Études Économiques|INSEE]]', 2585, 'n', 'INSEE (región)' },
{ 'INSEE-canton', '[[Institut National de la Statistique et des Études Économiques|INSEE]]', 2506, 'n', 'INSEE (cantón)' },
{ 'INEGI-mun', '[[Instituto Nacional de Estadística y Geografía|INEGI]]', 3801, 'n', 'INEGI municipio' },
{ 'INEGI-loc', '[[Instituto Nacional de Estadística y Geografía|INEGI]]', 1976, 'n', 'INEGI localidad' },
{ 'SIRUTA', '[[SIRUTA]]', 843, 'n', 1 },
{ 'SUDAFRICA-MUN', '[[Sudáfrica|Código municipio Sudáfrica]]', 911, 'n', 1 },
{ 'LAU', '[[Unidad administrativa local|LAU]]', 782, 'n', 1 },
{ 'KSH', '[[Központi Statisztikai Hivatal|KSH]]', 939, 'n', 1 },
{ 'OKATO', '[[OKATO]]', 721, 'n', 1 },
{ 'OSTAT', '[[Statistik Austria|ÖSTAT]]', 964, 'n', 'ÖSTAT-Nr'},
{ 'TERC', '[[Oficina Central de Estadística (Polonia)|TERC]]', 1653, 'n', 'TERC'},
{ 'GNIS', '[[Geographic Names Information System|GNIS]]', 590, 'n', 0},
{ 'WDTA', '[[Base de Datos Mundial sobre Áreas Protegidas|WDTA]]', 809, 'n', 0 },
},
},
{
title = 'Arquitectura',
group = {
{ 'DocomomoIberico', '[[Fundación Docomomo Ibérico|Docomomo Ibérico]]', 3758, 'n', 'Docomomo Ibérico' },
{ 'COAMinmueble', '[[Colegio Oficial de Arquitectos de Madrid|COAM]]', 2917, 'n', 'COAM inmueble' },
{ 'COAMpersona', '[[Colegio Oficial de Arquitectos de Madrid|COAM]]', 4488, 'n', 'COAM persona' },
{ 'ArchnetAutoridad', '[[ArchNet]]', 12728, 'n', 'Archnet autoridad' },
{ 'ArchnetSitio', '[[ArchNet]]', 7323, 'n', 'Archnet sitio' },
},
},
{
title = 'Faros',
group = {
{ 'ARHLS', '[[Amateur Radio Lighthouse Society|ARHLS]]', 2980, 'n', 0 },
{ 'NGA', '[[Agencia Nacional de Inteligencia-Geoespacial|NGA]]', 3563, 'n', 0 },
{ 'UKHO', '[[Instituto Hidrográfico del Reino Unido|UKHO]]', 3562, 'n', 0 },
{ 'MarineTraffic', '[[MarineTraffic]]', 3601, 'n', 0 },
{ 'OnlineListofLights', '[[:d:Q843152|Online List of Lights]]', 3223, 'n', 0 },
},
},
{
title = 'Patrimonio histórico',
group = {
{ 'World Heritage Site', '[[Patrimonio de la Humanidad]]', 757, 'n', 'Centro del Patrimonio Mundial' },
{ 'CNMLBH', '[[Comisión Nacional de Monumentos, de Lugares y de Bienes Históricos|CNMLBH]]', 4587, 'n', 'cnmlbh' },
{ 'IGESPAR', '[[Instituto de Gestão do Património Arquitetónico e Arqueológico|IGESPAR]]', 1702, 'n', 1 },
{ 'SIPA', '[[Sistema de Informação para o Património Arquitetónico|SIPA]]', 1700, 'n', 1 },
{ 'Infopatrimonio', '[[:d:Q64745161|Infopatrimônio]]', 4372, 'n', 'Infopatrimônio' },
{ 'AustriaObjektID', 'Austria ObjektID', 2951, 'n', 'Austria ObjektID' },
{ 'FBBID', '[[Fredede og Bevaringsværdige Bygninger|FBB]]', 2783, 'n', 'FBB' },
{ 'Fornminnesregistret', '[[Fornminnesregistret|FMIS]]', 1260, 'n', 'FMIS' },
{ 'BerlinerKulturdenkmal', 'Berliner Kulturdenkmal', 2424, 'n', 'Berliner Kulturdenkmal' },
{ 'NHLE', '[[National Heritage List for England|NHLE]]', 1216, 'n', 1 },
{ 'NRHP', '[[Registro Nacional de Lugares Históricos|NRHP]]', 649, 'n', 1 },
{ 'KULTURMINNE', '[[Riksantikvaren|Kulturminne]]', 758, 'n', 'Kulturminne' },
{ 'CRHP', '[[:d:Q3456275|CRHP]]', 477, 'n', 1 },
{ 'MERIMEE', '[[Base Mérimée|Mérimée]]', 380, 'n', 'Mérimée' },
{ 'CADW', '[[Cadw]]', 1459, 'n', 'Cadw' },
{ 'Památkový Katalog', '[[Památkový katalog]]', 762, 'n', 'Památkový katalog' },
{ 'PatrimonioIran', 'Patrimonio Nacional de Irán', 1369, 'n', 'Patrimonio Nacional de Irán' },
{ 'Rijksmonument', 'Rijksmonument', 359, 'n', 'Rijksmonument' },
{ 'BIC', '[[Bien de Interés Cultural (España)|BIC]]', 808, 'n', 1 },
{ 'BCIN', '[[Bien Cultural de Interés Nacional|BCIN]]', 1586, 'n', 1 },
{ 'IPAC', '[[Inventario del Patrimonio Arquitectónico de Cataluña|IPAC]]', 1600, 'n', 1 },
{ 'IGPCV', '[[Inventario General del Patrimonio Cultural Valenciano|IGPCV]]', 2473, 'n', 1 },
{ 'IAPH', '[[Instituto Andaluz del Patrimonio Histórico|IAPH]]', 8425, 'n', 0 },
{ 'GD-PCA', '[[Guía Digital del Patrimonio Cultural de Andalucía|Patrimonio Cultural de Andalucía]]', 3318, 'n', 1 },
{ 'SIPCA', '[[SIPCA]]', 3580, 'n', 1 },
{ 'PWJCYL', '[[Junta de Castilla y León|Patrimonio Web JCyL]]', 3177, 'n', 'Patrimonio Web JCyL' },
{ 'CPCCLM', '[[Catálogo de Patrimonio Cultural de Castilla-La Mancha]]', 6539, 'n', 1 },
{ 'HispaniaNostra', '[[Lista roja de patrimonio en peligro|Lista Roja Hispania Nostra]]', 4868, 'url', 'Lista Roja Hispania Nostra' },
{ 'HGC', '[[Heritage Gazetteer for Cyprus]]', 6916, 'n', 1 },
{ 'HGL', '[[Heritage Gazetteer of Libya]]', 6751, 'n', 1 },
},
},
{
title = 'Deportistas',
group = {
{ 'COI', '[[Comité Olímpico Internacional|COI]]', 5815, 'n', 0 },
{ 'World Athletics', '[[World Athletics]]', 1146, 'n', 0 },
{ 'European Athletics', '[[Atletismo Europeo]]', 3766, 'n', 0 },
{ 'Liga Diamante', '[[Liga de Diamante]]', 3923, 'n', 0 },
{ 'ITU', '[[Unión Internacional de Triatlón|ITU]]', 3604, 'n', 0 },
{ 'ATP', '[[Asociación de Tenistas Profesionales|ATP]]', 536, 'n', 0 },
{ 'Copa Davis', '[[Copa Davis]]', 2641, 'n', 0 },
{ 'WTA', '[[Asociación de Tenis Femenino|WTA]]', 597, 'n', 0 },
{ 'Fed Cup', '[[Copa Billie Jean King|Fed Cup]]', 2642, 'n', 0 },
{ 'ITF', '[[Federación Internacional de Tenis|ITF]]', 599, 'n', 0 },
{ 'ITHF', '[[Salón de la Fama del Tenis Internacional|ITHF]]', 3363, 'n', 0 },
{ 'ITTF', '[[Federación Internacional de Tenis de Mesa|ITTF]]', 1364, 'n', 0 },
{ 'FIFA', '[[FIFA]]', 1469, 'n', 0 },
{ 'UEFA', '[[UEFA]]', 2276, 'n', 0 },
{ 'NFT', 'National-Football-Teams', 2574, 'n', 0 },
{ 'Soccerway', '[[Soccerway]]', 2369, 'n', 0 },
{ 'Transfermarkt', '[[Transfermarkt]]', 2446, 'n', 0 },
{ 'As', '[[As (periódico)|As]]', 3427, 'n', 0 },
{ 'ESPN FC', '[[ESPN FC]]', 3681, 'n', 0 },
{ 'FBref', 'FBref', 5750, 'n', 0 },
{ 'BeSoccer', '[[BeSoccer]]', 12577, 'n', 0 },
{ 'LaPreferente', 'LaPreferente', 7359, 'n', 0 },
{ 'Livefutbol', 'Livefutbol', 2020, 'n', 0 },
{ 'Soccerbase', 'Soccerbase', 2193, 'n', 0 },
{ 'FootballDatabase', '[[FootballDatabase]]', 3537, 'n', 0 },
{ 'BDFutbol', '[[BDFutbol]]', 3655, 'n', 0 },
{ 'EPCR', '[[European Professional Club Rugby|EPCR]]', 3666, 'n', 0 },
{ 'FIDE', '[[Federación Internacional de Ajedrez|FIDE]]', 1440, 'n', 0 },
{ 'BoxRec', '[[BoxRec]]', 1967, 'n', 0 },
{ 'Sherdog', '[[Sherdog]]', 2818, 'n', 0 },
{ 'WWE', '[[WWE]]', 2857, 'n', 0 },
{ 'NSK', '[[Asociación Japonesa de Sumo|NSK]]', 3385, 'n', 0 },
{ 'IJF', '[[Federación Internacional de Yudo|IJF]]', 4559, 'n', 0 },
{ 'FINA', '[[Federación Internacional de Natación|FINA]]', 3408, 'n', 0 },
{ 'ISHOF', '[[International Swimming Hall of Fame|ISHOF]]', 3691, 'n', 0 },
{ 'NFL', '[[National Football League|NFL]]', 3539, 'n', 0 },
{ 'NHL', '[[National Hockey League|NHL]]', 3522, 'n', 0 },
{ 'FIH', '[[Federación Internacional de Hockey|FIH]]', 3742, 'n', 0 },
{ 'MLB', '[[Grandes Ligas de Béisbol|MLB]]', 3541, 'n', 0 },
{ 'Baseball-Reference', '[[Baseball-Reference.com|Baseball-Reference]]', 1825, 'n', 0 },
{ 'FIL', '[[Federación Internacional de Luge|FIL]]', 2990, 'n', 0 },
{ 'IBSF', '[[Federación Internacional de Bobsleigh y Skeleton|IBSF]]', 2991, 'n', 0 },
{ 'WAF', '[[Federación Internacional de Tiro con Arco|WAF]]', 3010, 'n', 0 },
{ 'FEI', '[[Federación Ecuestre Internacional|FEI]]', 3111, 'n', 0 },
{ 'FIE', '[[Federación Internacional de Esgrima|FIE]]', 2423, 'n', 0 },
{ 'CEE', '[[Confederación Europea de Esgrima|CEE]]', 4475, 'n', 0 },
{ 'IBU', '[[Unión Internacional de Biatlón|IBU]]', 2459, 'n', 0 },
{ 'ISU', '[[Unión Internacional de Patinaje sobre Hielo|ISU]]', 2694, 'n', 0 },
{ 'FIG', '[[Federación Internacional de Gimnasia|FIG]]', 2696, 'n', 0 },
{ 'UIPM', '[[Unión Internacional de Pentatlón Moderno|UIPM]]', 2726, 'n', 0 },
{ 'BWF', '[[Federación Mundial de Bádminton|BWF]]', 2729, 'n', 0 },
{ 'WCF', '[[Federación Mundial de Curling|WCF]]', 3557, 'n', 0 },
{ 'EHF', '[[Federación Europea de Balonmano|EHF]]', 3573, 'n', 0 },
{ 'IWF', '[[Federación Internacional de Halterofilia|IWF]]', 3667, 'n', 0 },
{ 'IOF', '[[Federación Internacional de Orientación|IOF]]', 3672, 'n', 0 },
{ 'ISSF', '[[Federación Internacional de Tiro Deportivo|ISSF]]', 2730, 'n', 0 },
{ 'FIVB', '[[Federación Internacional de Voleibol|FIVB]]', 2801, 'n', 0 },
{ 'CEV', '[[Confederación Europea de Voleibol|CEV]]', 3725, 'n', 0 },
{ 'ICF', '[[Federación Internacional de Piragüismo|ICF]]', 3689, 'n', 0 },
{ 'FISA', '[[Federación Internacional de Sociedades de Remo|FISA]]', 2091, 'n', 0 },
{ 'IFSC', '[[Federación Internacional de Escalada Deportiva|IFSC]]', 3690, 'n', 0 },
{ 'NLL', '[[National Lacrosse League|NLL]]', 3955, 'n', 0 },
{ 'PGA', '[[Professional Golfers Association of America|PGA]]', 2811, 'n', 0 },
{ 'LPGA', '[[LPGA]]', 2810, 'n', 0 },
{ 'FIBA', '[[Federación Internacional de Baloncesto|FIBA]]', 3542, 'n', 0 },
{ 'Euroliga', '[[Euroliga]]', 3536, 'n', 0 },
{ 'WNBA', '[[WNBA]]', 3588, 'n', 0 },
{ 'NBA', '[[NBA]]', 3647, 'n', 0 },
{ 'ACB', '[[Asociación de Clubs de Baloncesto|ACB]]', 3525, 'n', 0 },
{ 'Entr. ACB', '[[Asociación de Clubs de Baloncesto|Entrenador ACB]]', 6297, 'n', 0 },
{ 'snooker.org', 'snooker.org', 4502, 'n', 0 },
{ 'snooker.org tournament', 'snooker.org', 4921, 'n', 0 },
{ 'WST', 'WST', 4498, 'n', 0 },
{ 'CueTracker', 'CueTracker', 4924, 'n', 0 },
},
},
{
title = 'Cine',
group = {
{ 'FilmAffinity', '[[FilmAffinity]]', 480, 'n', 0 },
{ 'IMDb', '[[Internet Movie Database|IMDb]]', 345, 'n', 0 },
{ 'Óscar', '[[Premios Óscar|Óscar]]', 6145, 'n', 0 },
{ 'AFI', '[[AFI Catalog of Feature Films|AFI]]', 3593, 'n', 0 },
{ 'Allcinema', '[[Allcinema]]', 2465, 'n', 0 },
{ 'AllMovie', '[[AllMovie]]', 1562, 'n', 0 },
{ 'AlloCiné', '[[AlloCiné]]', 1265, 'n', 0 },
{ 'BFI', '[[British Film Institute|BFI]]', 2703, 'n', 0 },
{ 'Box Office Mojo', '[[Box Office Mojo]]', 1237, 'n', 0 },
{ 'ICAA película', '[[Instituto de la Cinematografía y de las Artes Audiovisuales|ICAA]]', 5128, 'n', 1 },
},
},
{
title = 'Empresarios',
group = {
{ 'Bloomberg', '[[Bloomberg L.P.|Bloomberg]]', 3052, 'n', 0 },
{ 'Crunchbase', '[[Crunchbase]]', 2087, 'n', 0 },
},
},
{
title = 'Identificadores fiscales',
group = {
{ 'IRS', '[[Servicio de Impuestos Internos de los Estados Unidos|IRS]]', 1297, noLink, 0 },
{ 'VAT', '[[Número de Identificación Fiscal a efectos del IVA (NIF-IVA)|VAT]]', 3608, noLink, 0 },
{ 'UID', 'UID', 4829, 'n', 0 },
},
},
{
title = 'Informática',
group = {
{ 'TOP500', 'TOP500', 7307, 'n', 0 },
{ 'Arch', 'Arch Linux', 3454, 'n', 0 },
{ 'AUR', 'AUR', 4162, 'n', 0 },
{ 'Debian', 'Debian', 3442, 'n', 0 },
{ 'Fedora', 'Fedora', 3463, 'n', 0 },
{ 'FSD', 'Free Software Directory', 2537, 'n', 0 },
{ 'Gentoo', 'Gentoo', 3499, 'n', 0 },
{ 'OpenHub', '[[Open Hub]]', 1972, 'n', 0 },
{ 'PyPI', '[[PyPI]]', 5568, 'n', 0 },
{ 'Snap', 'Snap', 4435, 'n', 0 },
{ 'Ubuntu', 'Ubuntu', 3473, 'n', 0 },
}
},
{
title = 'Bases de datos taxonómicas',
group = {
{ 'Algabase', '[[AlgaeBase]]', 1348, 'y', 0 },
{ 'ADW', '[[Animal Diversity Web|ADW]]', 4024, 'n', 0 },
{ 'AmphibiaWeb', '[[AmphibiaWeb]]', 5036, 'n', 0 },
{ 'BOLD', 'BOLD', 3606, 'n', 0 },
{ 'APD', '[[African Plant DB]]', 2036, 'n', 0 },
{ 'Avibase', '[[Avibase]]', 2026, 'n', 0 },
{ 'BHL', '[[Biodiversity Heritage Library|BHL]]', 687, 'n', 0 },
{ 'BioLib', '[[BioLib]]', 838, 'n', 0 },
{ 'BirdLife', '[[BirdLife International|BirdLife]]', 5257, 'n', 0 },
{ 'CatalogueOfLife', '[[Catalogue of Life]]', 3088, 'n', 0 },
{ 'CONABIO', '[[Comisión Nacional para el Conocimiento y Uso de la Biodiversidad|CONABIO]]', 4902, 'n', 0 },
{ 'Dyntaxa', '[[Dyntaxa]]', 1939, 'n', 0 },
{ 'eBird', '[[eBird]]', 3444, 'n', 0 },
{ 'EOL', '[[Enciclopedia de la vida|EOL]]', 830, 'n', 0 },
{ 'EUNIS', '[[European Nature Information System|EUNIS]]', 6177, 'n', 0 },
{ 'FaunaEuropaea', '[[Fauna Europaea]]', 1895, 'n', 0 },
{ 'FishBase', '[[FishBase]]', 938, 'n', 0 },
{ 'FloraBase', '[[FloraBase]]', 3101, 'n', 0 },
{ 'FOC', '[[Flora of China|Fl. China]]', 1747, 'n', 0 },
{ 'GBIF', '[[Global Biodiversity Information Facility|GBIF]]', 846, 'n', 0 },
{ 'GlobalSpecies', 'GlobalSpecies', 6433, 'n', 0 },
{ 'GRIN', '[[Germplasm Resources Information Network|GRIN]]', 1421, 'url', 0 },
{ 'IBC', [[Internet Bird Collection|IBC]], 3099, 'n', 0 },
{ 'iNaturalist', [[iNaturalist]], 3151, 'n', 0 },
{ 'IndexFungorum', '[[Index Fungorum]]', 1391, 'n', 0 },
{ 'IOBIS', 'OBIS', 6754, 'n', 0 },
{ 'IPNI', '[[Índice Internacional de Nombres de las Plantas|IPNI]]', 961, 'n', 0 },
{ 'ITIS', '[[Sistema Integrado de Información Taxonómica|ITIS]]', 815, 'n', 0 },
{ 'LPSN', '[[Listado de nombres procariotas con posición en nomenclatura|LPSN]]', 1991, 'url', 0 },
{ 'MSW', '[[Mammal Species of the World|MSW]]', 959, 'n', 0 },
{ 'MycoBank', '[[MycoBank]]', 962, 'n', 0 },
{ 'NCBI', '[[Centro Nacional para la Información Biotecnológica|NCBI]]', 685, 'n', 0 },
{ 'FossilWorks', '[[Paleobiology Database]]', 842, 'n', 0 },
{ 'PlantList', '[[The Plant List|PlantList]]', 1070, 'n', 0 },
{ 'SpeciesPlus', 'Species+', 2040, 'n', 0 },
{ 'Taxonomicon', 'Taxonomicon', 7066, 'n', 0 },
{ 'Tropicos', '[[W3TROPICOS]]', 960, 'n', 0 },
{ 'UICN', '[[Unión Internacional para la Conservación de la Naturaleza|UICN]]', 627, 'n', 0 },
{ 'USDAP', '[[Departamento de Agricultura de los Estados Unidos|USDA Plants]]', 1772, 'n', 0 },
{ 'VASCAN', 'VASCAN', 1745, 'n', 0 },
{ 'WoRMS', '[[Registro Mundial de Especies Marinas|WoRMS]]', 850, 'n', 0 },
{ 'uBio', 'uBio', 4728, 'n', 0 },
{ 'Xeno-canto', '[[Xeno-canto]]', 2426, 'n', 0 },
{ 'Zoobank', '[[Zoobank]]', 1746, 'n', 0 },
},
},
{
title = 'Identificadores médicos',
group = {
{ 'DOID', 'DOID', 699, 'n', 0 },
{ 'CIE11', '[[CIE-11]]', 7329, icd11Link, 0},
{ 'CIE10', '[[CIE-10]]', 494, 'n', 0 },
{ 'CIE9', '[[CIE-9]]', 493, 'n', 0 },
{ 'CIE10MC', 'CIE-10-MC', 4229, 'n', 0 },
{ 'CIE9MC', '[[CIE-9-MC]]', 1692, 'n', 0 },
{ 'CIEO', '[[CIE-O]]', 563, 'n', 0 },
{ 'CIAP2', '[[Clasificación Internacional de Atención Primaria|CIAP-2]]', 667, 'n', 0 },
{ 'OMIM', '[[Herencia Mendeliana en el Hombre|OMIM]]', 492, 'n', 0 },
{ 'DSM IV', '[[Manual diagnóstico y estadístico de los trastornos mentales|DSM IV]]', 663, 'n', 0 },
{ 'DSM 5', '[[DSM 5|DSM-5]]', 1930, 'n', 0 },
{ 'DiseasesDB', '[[Diseases Database|DiseasesDB]]', 557, 'n', 0 },
{ 'MedlinePlus', '[[MedlinePlus]]', 604, 'n', 0 },
{ 'eMedicine', '[[eMedicine]]', 673, 'n', 0 },
{ 'MeSH', '[[Medical Subject Headings|MeSH]]', 486, 'n', 0 },
{ 'MeSHdq', 'MeSH D/Q', 9340, 'y', 0 },
{ 'DeCS', '[[Descriptores en Ciencias de la Salud|DeCS]]', 9272, 'n', 0 },
{ 'Orphanet', '[[Orphanet]]', 1550, 'n', 0 },
{ 'TA98', '[[Terminología Anatómica|TA]]', 1323, 'n', 1 },
{ 'FMA', '[[Foundational Model of Anatomy|FMA]]', 1402, 'n', 0 },
{ 'UMLS', 'UMLS', 2892, 'n', 0 },
{ 'GeneReviews', 'GeneReviews', 668, 'n', 0 },
{ 'NumE', '[[Número E]]', 628, 'n', 0 },
{ 'GARD', 'GARD', 4317, 'n', 0 },
}
},
{
title = 'Identificadores químicos',
group = {
{ 'CAS', '[[Número CAS]]', 231, 'n', 0 },
{ 'EINECS', '[[EINECS|Números EINECS]]', 232, 'n', 0},
{ 'ATC', '[[Código ATC]]', 267, 'n', 0 },
{ 'RTECS', '[[RTECS]]', 657, 'n', 0 },
{ 'ChEBI', '[[ChEBI]]', 683, 'n', 0 },
{ 'ChEMBL', '[[ChEMBL]]', 592, 'n', 0 },
{ 'ChemSpider', '[[ChemSpider]]', 661, 'n', 0 },
{ 'DrugBank', '[[DrugBank]]', 715, 'n', 0 },
{ 'PubChem', '[[PubChem]]', 662, 'n', 0 },
{ 'UNII', '[[Unique Ingredient Identifier|UNII]]', 652, 'n', 0 },
{ 'KEGG', '[[KEGG]]', 665, 'n', 0 },
{ 'SMILES', '[[SMILES]]', 233, 'y', 0 },
{ 'InChI', '[[International Chemical Identifier|InChI]]', 234, 'y', 0 },
{ 'InChIKey', 'InChI key', 235, 'y', 0 },
}
},
{
title = 'Identificadores biológicos',
group = {
{ 'MGI', '[[Mouse Genome Informatics|MGI]]', 231, 'n', 0 },
{ 'HomoloGene', '[[HomoloGene]]', 593, 'n', 0 },
{ ' HGNC', '[[Comité de Nomenclatura Genética de HUGO|HGNC]]', 354, 'n', 0 },
{ 'UniProt', '[[UniProt]]', 352, 'n', 0 },
}
},
{
title = 'Identificadores astronómicos',
group = {
{ 'COSPAR', 'COSPAR', 247, 'n', 0 },
{ 'SCN', '[[Satellite Catalog Number|SCN]]', 377, 'n', 0 },
{ 'NSSDCA', '[[International Designator|NSSDCA]]', 8913, 'n', 0 }
}
},
{
title = 'Ontologías',
group = {
{ 'IEV', 'Número IEV', 8855, 'n', 0 },
{ 'OUM2', 'OUM 2.0', 8769, 'n', 0 }
}
}
}
-- -- Example row: --
-- conf.databases[2] = {}
-- conf.databases[2].name = 'External links'
-- conf.databases[2].list = {
-- {
-- title = '',
-- group = {
-- { 'Website', 'Website', 856, 'n', 0 },
-- },
-- },
-- }
--In this order: alternate name, name of parameter from databases table
conf.aliases = {
{ 'Wd', 'Wikidata' },
{ 'PND', 'GND' },
{ 'Commonscat', 'Commons' },
}
local function getCatForId( parameter, category )
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
if category == 0 then
return ''
elseif category == 1 then
category = parameter
end
if namespace == 0 then
return '[[Categoría:Wikipedia:Artículos con identificadores ' .. category .. ']]\n'
elseif namespace == 2 and not title.isSubpage then
return '[[Categoría:Wikipedia:Páginas de usuario con identificadores ' .. category .. ']]\n'
else
return '[[Categoría:Wikipedia:Páginas misceláneas con identificadores ' .. category .. ']]\n'
end
end
function getIdsFromSitelinks( itemId, property )
local ids = {}
local siteLink = itemId and mw.wikibase.getSitelink( itemId, property )
if siteLink then
table.insert( ids, siteLink )
end
return ids
end
function getIdsFromWikidata( itemId, property )
local ids = {}
local declaraciones = mw.wikibase.getBestStatements(itemId, property)
for _, statement in pairs( declaraciones) do
if statement.mainsnak.datavalue then
table.insert( ids, statement.mainsnak.datavalue.value )
end
end
return ids
end
function getLink( property, val, mask )
local link = ''
if mw.ustring.find( val, '//' ) then
link = val
else
if type(property) == 'number' then
local entityObject = mw.wikibase.getEntityObject('P'..property)
local dataType = entityObject.datatype
if dataType == 'external-id' then
local allStatements = entityObject:getBestStatements('P1630')
if allStatements then
for pos = 1, #allStatements, 1 do
local q = allStatements[pos].qualifiers
if q and q.P407 and q.P407[1].datavalue and q.P407[1].datavalue.value.id == 'Q1321' then
link = allStatements[pos].mainsnak.datavalue.value
end
end
end
if link == '' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local formatterURL = entityObject:getBestStatements('P3303')[1]
if formatterURL then link = formatterURL.mainsnak.datavalue.value end
end
end
elseif dataType == 'url' then
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getBestStatements(subjectItem.mainsnak.datavalue.value.id, 'P856')[1]
if officialWebsite then
link = officialWebsite.mainsnak.datavalue.value
end
end
elseif dataType == 'string' then
local formatterURL = entityObject:getBestStatements('P1630')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local formatterURL = entityObject:getBestStatements('P3303')[1]
if formatterURL then
link = formatterURL.mainsnak.datavalue.value
else
local subjectItem = entityObject:getBestStatements('P1629')[1]
if subjectItem then
local officialWebsite = mw.wikibase.getBestStatements(subjectItem.mainsnak.datavalue.value.id,'P856')[1]
if officialWebsite then
link = officialWebsite.mainsnak.datavalue.value
end
end
end
end
end
elseif type(property) == 'string' then
link = property
end
end
link = mw.ustring.gsub(link, '^[Hh][Tt][Tt][Pp]([Ss]?)://', 'http%1://') -- fix wikidata URL
if type(mask) == 'function' then
return mask( val, link, property )
end
link = mw.ustring.gsub(link, '$1', mw.ustring.gsub( mw.ustring.gsub( val, '%%', '%%%%' ), ' ', '%%%%20' ) or val )
if mw.ustring.find( link, '//' ) then
if type(mask) == 'string' then
link = cleanLink( link, 'PATH' )
if mask == 'y' then
return '['..link..' ID]'
elseif mask == 'n' then
return '['..link..' '..val..']'
end
return '['..link..' '..mask..']'
end
elseif link == '' then
return val
else
return '[['..link..'|'..val..']]'
end
end
local function createRow( id, label, rawValue, link, withUid )
if link then
if label and label ~= '' then label = '<span style="white-space:nowrap;">'..label .. ':</span> ' end
if withUid then
return '* ' .. label .. '<span class="uid">' .. link .. '</span>\n'
else
return '* ' .. label .. link .. '\n'
end
else
return '* <span class="error">El ' .. id .. ' id ' .. rawValue .. ' no es válido</span>[[Categoría:Wikipedia:Páginas con problemas en el control de autoridades]]\n'
end
end
local function copyTable(inTable)
if type(inTable) ~= 'table' then return inTable end
local outTable = setmetatable({}, getmetatable(inTable))
for key, value in pairs (inTable) do outTable[copyTable(key)] = copyTable(value) end
return outTable
end
local function splitLccn( id )
if id:match( '^%l%l?%l?%d%d%d%d%d%d%d%d%d?%d?$' ) then
id = id:gsub( '^(%l+)(%d+)(%d%d%d%d%d%d)$', '%1/%2/%3' )
end
if id:match( '^%l%l?%l?/%d%d%d?%d?/%d+$' ) then
return mw.text.split( id, '/' )
end
return false
end
local p = {}
function p.authorityControl( frame )
local pArgs = frame:getParent().args
local parentArgs = copyTable(pArgs)
local stringArgs = false
local fromForCount, itemCount, rowCount = 1, 0, 0
local mobileContent = ''
--Cleanup args
for k, v in pairs( pArgs ) do
if type(k) == 'string' then
--make args case insensitive
local lowerk = mw.ustring.lower(k)
if not parentArgs[lowerk] or parentArgs[lowerk] == '' then
parentArgs[lowerk] = v
parentArgs[k] = nil
end
--remap abc to abc1
if not mw.ustring.find(lowerk, '%d$') then --if no number at end of param
if not parentArgs[lowerk..'1'] or parentArgs[lowerk..'1'] == '' then
parentArgs[lowerk..'1'] = v
parentArgs[lowerk] = nil
end
end
if v and v ~= '' then
--find highest from param
if mw.ustring.sub(lowerk,1,4) == 'from' then
local fromNumber = tonumber(mw.ustring.sub(lowerk,5,-1))
if fromNumber and fromNumber >= fromForCount then fromForCount = fromNumber end
elseif mw.ustring.sub(lowerk,1,3) == 'for' then
local forNumber = tonumber(mw.ustring.sub(lowerk,4,-1))
if forNumber and forNumber >= fromForCount then fromForCount = forNumber end
elseif mw.ustring.lower(v) ~= 'no' and lowerk ~= 'for' then
stringArgs = true
end
end
end
end
--Setup navbox
local navboxParams = {
name = 'Control de autoridades',
bodyclass = 'hlist',
groupstyle = 'width: 12%; text-align:center;',
}
for f = 1, fromForCount, 1 do
local title = {}
--cleanup parameters
if parentArgs['from'..f] == '' then parentArgs['from'..f] = nil end
if parentArgs['for'..f] == '' then parentArgs['for'..f] = nil end
--remap aliases
for _, a in pairs( conf.aliases ) do
local alias, name = mw.ustring.lower(a[1]), mw.ustring.lower(a[2])
if parentArgs[alias..f] and not parentArgs[name..f] then
parentArgs[name..f] = parentArgs[alias..f]
parentArgs[alias..f] = nil
end
end
--Fetch Wikidata item
local itemId = parentArgs['from'..f] or mw.wikibase.getEntityIdForCurrentPage()
local label = itemId and (mw.wikibase.getSitelink(itemId) or mw.wikibase.getLabel(itemId)) or ''
if label and label ~= '' then
title = mw.title.new(label)
if not title then title = mw.title.getCurrentTitle() end
else
title = mw.title.getCurrentTitle()
end
if (not parentArgs['wikidata'..f] or parentArgs['wikidata'..f] == '') and (title.namespace == 0 or title.namespace == 104) then
parentArgs['wikidata'..f] = parentArgs['from'..f] or itemId or ''
end
if title.namespace == 0 or title.namespace == 104 or stringArgs then --Only in the main namespaces or if there are manual overrides
if fromForCount > 1 and #conf.databases > 1 then
if parentArgs['for'..f] and parentArgs['for'..f] ~= '' then
navboxParams['list'..(rowCount + 1)] = "'''" .. parentArgs['for'..f] .. "'''"
else
navboxParams['list'..(rowCount + 1)] = "'''" .. title.text .. "'''"
end
navboxParams['list'..(rowCount + 1)..'style'] = 'background-color: #ddf;'
rowCount = rowCount + 1
end
for _, db in pairs( conf.databases ) do
if db.list and #db.list > 0 then
local listElements = {}
for n, gr in pairs( db.list ) do
local groupElements = {}
if gr.group and #gr.group > 0 then
for _, params in pairs( gr.group ) do
local id = mw.ustring.lower( params[1] )
-- Wikidata fallback if requested
if itemId and params[3] ~= 0 and (not parentArgs[id..f] or parentArgs[id..f] == '') then
local wikidataIds = {}
if type( params[3] ) == 'function' then
wikidataIds = params[3]( itemId )
elseif type( params[3] ) == 'string' then
wikidataIds = getIdsFromSitelinks(itemId, params[3] )
else
wikidataIds = getIdsFromWikidata( itemId, 'P' .. params[3] )
end
if wikidataIds[1] then
parentArgs[id..f] = wikidataIds[1]
end
end
local val = parentArgs[id..f]
if val and val ~= '' and mw.ustring.lower(val) ~= 'no' and params[3] ~= 0 then
local link
if type( params[3] ) == 'function' then
link = val
else
link = getLink( params[3], val, params[4] )
end
if link and link ~= '' then
table.insert( groupElements, createRow( id, params[2], val, link, true ) .. getCatForId( params[1], params[5] or 0 ) )
itemCount = itemCount + 1
end
end
end
if #groupElements > 0 then
if gr.title and gr.title ~= '' then
table.insert( listElements, "* '''"..gr.title.."'''\n" )
end
table.insert( listElements, table.concat( groupElements ) )
if n == 1 and #groupElements > 1 then
table.insert( listElements, "\n----\n" )
end
-- mobile version
if n == 1 then
mobileContent = table.concat( groupElements )
end
end
end
end
-- Generate navbox title
if #listElements > 0 then
if fromForCount > 1 and #conf.databases == 1 then
if parentArgs['for'..f] and parentArgs['for'..f] ~= '' then
navboxParams['group'..(rowCount + 1)] = "''" .. parentArgs['for'..f] .. "''"
else
navboxParams['group'..(rowCount + 1)] = "''" .. title.text .. "''"
end
else
navboxParams['group'..(rowCount + 1)] = db.name or ''
end
navboxParams['list'..(rowCount + 1)] = table.concat( listElements )
rowCount = rowCount + 1
end
end
end
end
end
if rowCount > 0 then
local Navbox = require('Módulo:Navbox')
if fromForCount > 1 then
--add missing names
for r = 1, rowCount, 1 do
if navboxParams['group'..r] == '' then
navboxParams['group'..r] = "''" .. mw.wikibase.getEntity(parentArgs['wikidata'..r]):getLabel().."''"
end
end
if fromForCount > 2 then
navboxParams['navbar'] = 'plain'
else
navboxParams['state'] = 'off'
navboxParams['navbar'] = 'off'
end
end
local mainCategories = ''
if stringArgs then
mainCategories = mainCategories .. '[[Categoría:Wikipedia:Páginas que utilizan control de autoridades con parámetros]]\n'
end
if itemCount > 13 then
if itemCount > 30 then
itemCount = 'más de 30'
end
mainCategories = mainCategories .. '[[Categoría:Wikipedia:Control de autoridades con ' .. itemCount .. ' elementos]]\n'
end
navboxParams['style'] = 'width: inherit';
return frame:extensionTag{ name = 'templatestyles', args = { src = 'Plantilla:Control de autoridades/styles.css' } }
.. tostring(
mw.html.create( 'div' )
:addClass( 'mw-authority-control' )
:wikitext( Navbox._navbox( navboxParams ) )
:done()
:tag('div')
:addClass( 'mw-mf-linked-projects' )
:addClass( 'hlist' )
:newline()
:wikitext( mobileContent )
:done()
:done()
)
.. mainCategories
else
return ''
end
end
return p
ss0b8w6raapzpieacza1vwmdsf6fatd
548941
548940
2026-06-06T14:46:44Z
~2026-33070-17
34013
Zerrekê pele be "local function getCatForId( id ) local title = mw.title.getCurrentTitle() local namespace = title.namespace if namespace == 0 then return '[[Kategoriye:Pelê ke be şınasnameyê ' .. id .. ' ra ercê cı esto]]' elseif namespace == 2 and not title.isSubpage then return '[[Kategori:Användarsidor med identifierare från ' .. id .. ']]' else return '[[Kategori:Blandade sidor med identifierare från ' .. id .. ']]'..." ra vurriya
548941
Scribunto
text/plain
local function getCatForId( id )
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
if namespace == 0 then
return '[[Kategoriye:Pelê ke be şınasnameyê ' .. id .. ' ra ercê cı esto]]'
elseif namespace == 2 and not title.isSubpage then
return '[[Kategori:Användarsidor med identifierare från ' .. id .. ']]'
else
return '[[Kategori:Blandade sidor med identifierare från ' .. id .. ']]'
end
end
12qnbwu87dz49t4m3s4efvqs4oi51lp
548943
548941
2026-06-07T05:49:11Z
Mirzali
16
548943
Scribunto
text/plain
local function getCatForId( id )
local title = mw.title.getCurrentTitle()
local namespace = title.namespace
if namespace == 0 then
return '[[Kategoriye:Pelê ke be şınasnameyê ' .. id .. ' ra ercê cı esto]]'
elseif namespace == 2 and not title.isSubpage then
return '[[Kategoriye:Användarsidor med identifierare från ' .. id .. ']]'
else
return '[[Kategoriye:Blandade sidor med identifierare från ' .. id .. ']]'
end
end
njnfzf2vfu5y35c1j8h3k2rpvu38t5w
548946
548943
2026-06-07T05:54:58Z
Mirzali
16
Vurnayışê hesabê 548943 ke terefê [[Karber:Mirzali|Mirzali]] ra peyser gêriyayo.
548946
Scribunto
text/plain
require('strict')
-- local genitive = require('Modul:Genitive')._genitive
local contLang = mw.language.getContentLanguage()
local cModul = {}
local conf = require 'Modul:Kontrolê otoriteyi/conf'(contLang:getCode())
local hasdatafromwikidata = false
local hasdatafromlocal = false
local haswikidatalink = true -- we assume it's connected
local p = {}
local function getLabel(entity, use_genitive, pagetitle)
local label = (pagetitle and pagetitle ~= '') and pagetitle or nil
if not label and not entity then
label = mw.title.getCurrentTitle().text
elseif not label then
label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
end
-- return use_genitive and genitive(label, 'sitt') or label
return use_genitive and label .. "'s" or label
end
-- @todo cleanup, this is in production, use the console
local function dump(obj)
return "<pre>" .. mw.dumpObject(obj) .. "</pre>"
end
local function stringFormatter( datavalue )
if datavalue == nil or datavalue['type'] ~= 'string' then
return nil
end
return datavalue.value
end
local pval = {}
pval.P1793 = { -- format as a regular expression
types = {
snaktype = 'value',
datatype = 'string',
},
}
pval.P407 = { -- language of work or name
types = {
snaktype = 'value',
datatype = 'wikibase-item',
datavalue = {
type = 'wikibase-entityid',
}
},
}
pval.P364 = { -- original language of work
types = {
snaktype = 'value',
datatype = 'wikibase-item',
datavalue = {
type = 'wikibase-entityid',
}
},
}
pval.P218 = { -- ISO 639-1 language
types = {
snaktype = 'value',
datatype = 'external-id',
datavalue = {
type = 'string',
}
},
}
pval.P305 = { -- IETF language tag
types = {
snaktype = 'value',
datatype = 'external-id',
datavalue = {
type = 'string',
}
},
}
pval.P582 = { -- end time
types = {
snaktype = 'value',
datatype = 'time',
datavalue = {
type = 'string',
}
},
}
-- This is a really makeshift crappy converter, but it'll do some basic
-- conversion from PCRE to Lua-style patterns (note that this only work
-- in very few cases)
local function regexConverter( regex )
local output = regex
output = string.gsub(output, "\\d{2}", "%%d%%d")
output = string.gsub(output, "\\d{3}", "%%d%%d%%d")
output = string.gsub(output, "\\d{4}", "%%d%%d%%d%%d")
output = string.gsub(output, "\\d{5}", "%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d{6}", "%%d%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d{7}", "%%d%%d%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d{8}", "%%d%%d%%d%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d", "%%d")
return output
end
local function getFormatterUrl( prop, value )
local head = ""
local tail = ""
local entity = mw.wikibase.getEntity(prop)
-- to avoid deep tests
if not entity or not entity.claims then
return head
end
-- get the claims for this entity
local statements = entity.claims['P1630'] -- formatter URL
-- to avoid deep tests
if not statements then
return head
end
local formatters = {}
-- let's go through the claims
for _, claim in ipairs( statements ) do
-- to avoid deep tests
if not claim then
claim = {}
end
local valid = claim['type'] == 'statement'
and claim['rank'] ~= 'deprecated'
if valid then
local mainsnak = claim.mainsnak or {}
local preferred = claim['rank'] == 'preferred'
-- get any qualifiers for this claim (we are interested in P1793 for
-- indication of which claim is correct)
local qualifiers = claim.qualifiers or {}
-- now let's check the qualifier we are interested in
local qualid = 'P1793' -- format as a regular expression
-- if the claim has this qualifier
if qualifiers[qualid] then
-- it's here, let's check it out!
local items = {}
-- traverse all snaks in this qualifier
for _, qualsnak in ipairs( qualifiers[qualid] ) do
if qualsnak and pval[qualid] then
--mw.log("qualsnak = " .. dump(qualsnak))
-- check if the snak is of the correct snaktype and datatype
local valid = qualsnak.snaktype == pval[qualid].types.snaktype
and qualsnak.datatype == pval[qualid].types.datatype
if valid then
-- we'll have to convert the regex to Lua-style
local regex = regexConverter(qualsnak.datavalue.value)
local test = string.match( value, '^'..regex..'$' )
if test then
-- it matched, this is correct and overrides any other.
if preferred then
head = mainsnak.datavalue.value
else
tail = mainsnak.datavalue.value
end
end
end
end
end
else
-- we don't have any qualifier, is it preferred?
if (head == '' and preferred) or (tail == '' and not preferred) then
-- if we don't have any other, use this one
if preferred and head == '' then
head = mainsnak.datavalue.value
elseif not preferred and tail == '' then
tail = mainsnak.datavalue.value
end
end
end
end
end
return head ~= '' and head or tail
end
local function getLanguageData(prop, qid)
local head = {}
local tail = {}
-- mw.log("getLanguageData, prop="..dump(prop).." qid="..dump(qid))
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject(qid)
-- to avoid deep tests
if not entity then
return nil
end
if not entity.claims then
return {}
end
-- get the claims for this entity
local statements = entity.claims[prop]
-- to avoid deep tests
if not statements then
return {}
end
-- mw.log("getLanguageData going through claims="..dump(statements))
-- let's go through the claims
for _, claim in ipairs( statements ) do
-- to avoid deep tests
if not claim then
claim = {}
end
local valid = claim['type'] == 'statement'
and claim['rank'] ~= 'deprecated'
if valid then
local mainsnak = claim.mainsnak or {}
local preferred = claim['rank'] == 'preferred'
-- verify the item is what we expect
local valid = mainsnak.snaktype == pval[prop].types.snaktype
and mainsnak.datatype == pval[prop].types.datatype
and mainsnak.datavalue.type == pval[prop].types.datavalue.type
if valid then
-- mw.log("getLanguageData claim is valid="..dump(claim))
-- if this is the correct P-value, dive into it and get P218 (ISO 639-1)
if mainsnak.property == 'P364' then -- original language of work
if preferred then
head[#head+1] = table.concat(getLanguageData('P218', 'Q'..mainsnak.datavalue.value['numeric-id']), conf:a('mod-filter-separator'))
else
tail[#tail+1] = table.concat(getLanguageData('P218', 'Q'..mainsnak.datavalue.value['numeric-id']), conf:a('mod-filter-separator'))
end
elseif mainsnak.property == 'P218' or mainsnak.property == 'P305' then -- ISO 639-1 code or IETF language tag
if preferred then
head[#head+1] = stringFormatter(mainsnak.datavalue)
else
tail[#tail+1] = stringFormatter(mainsnak.datavalue)
end
end
end
end
end
-- mw.log("getLanguageData returning head="..dump(head).." tail="..dump(tail))
return #head>0 and head or tail
end
local langqvalorder = {'P407','P364'}
local otherqvalorder = {'P582'}
local function getValuesFromWikidata(props)
local head = {}
local tail = {}
-- mw.log("getValuesFromWikidata, props="..dump(props))
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject()
-- to avoid deep tests
if not entity then
--mw.log("getValuesFromWikidata no entity")
return nil
end
if not entity.claims or not props or not props.prop or props.prop == '' then
--mw.log("getValuesFromWikidata no claims or no props")
return {}
end
-- get the claims for this entity
local statements = entity.claims[props.prop]
-- to avoid deep tests
if not statements then
return {}
end
-- let's go through the claims
for _, claim in ipairs( statements ) do
-- to avoid deep tests
if not claim then
claim = {}
end
local valid = claim['type'] == 'statement'
and claim['rank'] ~= 'deprecated'
if valid then
-- mw.log("getValuesFromWikidata valid claim="..dump(claim))
local mainsnak = claim.mainsnak or {}
local preferred = claim['rank'] == 'preferred'
-- get the content of the claim (the identifier)
local langcode = props.langcode
local checklangcode = nil
if props.langcode and props.langcode ~= '' then
checklangcode = string.find(langcode, "([pP]%d+)")
end
if checklangcode and checklangcode ~= "" then
-- this is a P-value for language-code, so we'll check qualifiers for languagedata
-- first get any qualifiers
local qualifiers = claim.qualifiers or {}
for _, qualid in ipairs( langqvalorder ) do
-- if the claim has this qualifier
if qualifiers[qualid] then
-- it's here, let's check it out!
local items = {}
-- traverse all snaks in this qualifier
for _, qualsnak in ipairs( qualifiers[qualid] ) do
if qualsnak and pval[qualid] then
-- mw.log("qualsnak = " .. dump(qualsnak))
-- check if the snak is of the correct snaktype and datatype
local valid = qualsnak.snaktype == pval[qualid].types.snaktype
and qualsnak.datatype == pval[qualid].types.datatype
if valid then
-- now get the actual data
langcode = table.concat(getLanguageData('P305', 'Q'..qualsnak.datavalue.value['numeric-id']), '')
end
end
end
end
-- mw.log("langcode is now="..dump(langcode))
end
if string.find(langcode, "([pP]%d+)") then
-- we still don't have any langcode, so we default to "en"
langcode = nil
end
end
local stillvalid = true
-- we should check a couple of other qualifiers as well
-- first get any qualifiers
local qualifiers = claim.qualifiers or {}
for _, qualid in ipairs( otherqvalorder ) do
-- if the claim has this qualifier
if qualifiers[qualid] then
-- it's here, let's check it out!
local items = {}
-- traverse all snaks in this qualifier
for _, qualsnak in ipairs( qualifiers[qualid] ) do
if qualsnak and pval[qualid] then
-- mw.log("qualsnak = " .. dump(qualsnak))
-- check if the snak is of the correct snaktype and datatype
local valid = qualsnak.snaktype == pval[qualid].types.snaktype
and qualsnak.datatype == pval[qualid].types.datatype
if not valid then
-- sorry, this is not correct
mw.log("qualsnak = INCORRECT")
stillvalid = false
end
end
end
end
-- mw.log("langcode is now="..dump(langcode))
end
if stillvalid then
if preferred then
head[#head+1] = { value=stringFormatter(mainsnak.datavalue) }
if langcode and langcode ~= '' then
head[#head]['langcode'] = langcode
end
else
tail[#tail+1] = { value=stringFormatter(mainsnak.datavalue) }
if langcode and langcode ~= '' then
tail[#tail]['langcode'] = langcode
end
end
end
end
end
-- mw.log("getValuesFromWikidata returning head="..dump(head).." tail="..dump(tail))
return #head>0 and head or tail
end
local function findMainLinksOnWikidata(props, pagetitle, short_links)
local output = {}
local pid = nil
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject()
-- to avoid deep tests
if not entity then
return nil
end
local values = getValuesFromWikidata(props)
for _, value in ipairs( values ) do
local verified_value = nil
if props.regex then
-- we have a local defined regex, so this will have to pass first
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( value.value, '^'..regex..'$' )
--mw.log("testing with "..regex.. " and test="..dump(test).." and value="..id)
if test then
-- it matched, this is correct and overrides any other.
verified_value = value.value
end
else
verified_value = value.value
end
if verified_value then
local url = ''
output[#output+1] = {}
output[#output].langcode = value.langcode
output[#output].category = {}
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track and not string.find(props.langcode, "([pP]%d+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track and not string.find(props.langcode, "([pP]%d+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
else
-- get the formatvalue from the property, if it exists
local formatterUrl = getFormatterUrl(props.prop, verified_value)
if formatterUrl ~= '' then
url = mw.message.newRawMessage(formatterUrl, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
end
end
if url ~= '' then
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (value.langcode and value.langcode ~= '' and value.langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), value.langcode, mw.language.fetchLanguageName(value.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
end
end
--mw.log("findMainLinksOnWikidata returning="..dump(output))
return output
end
local function getSitelinksFromWikidata(props, entity)
local output = {}
--mw.log("getSitelinksFromWikidata, props="..dump(props))
-- to avoid deep tests
if not entity then
entity = mw.wikibase.getEntityObject()
if not entity then
--mw.log("getSitelinksFromWikidata no entity")
return nil
end
end
local requested_sitelink = string.match(props.prop, "SL(%l+)")
local sitelinks = entity:getSitelink(requested_sitelink)
if sitelinks and sitelinks ~= '' then
output[#output+1] = { value = sitelinks }
end
--mw.log("getSitelinksFromWikidata returning output="..dump(output))
return output
end
local function findSiteLinksOnWikidata(props, pagetitle, short_links)
local output = {}
local pid = nil
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject()
-- to avoid deep tests
if not entity then
return nil
end
local values = getSitelinksFromWikidata(props)
for _, value in ipairs( values ) do
local verified_value = nil
if props.regex then
-- we have a local defined regex, so this will have to pass first
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( value.value, '^'..regex..'$' )
--mw.log("testing with "..regex.. " and test="..dump(test).." and value="..id)
if test then
-- it matched, this is correct and overrides any other.
verified_value = value.value
end
else
verified_value = value.value
end
if verified_value then
--mw.log("it's verified..")
local url = ''
output[#output+1] = {}
output[#output].langcode = value.langcode
output[#output].category = {}
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track and not string.find(props.langcode, "(SL%l+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track and not string.find(props.langcode, "(SL%l+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
else
url = verified_value:gsub(' ','_')
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
end
if url ~= '' then
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (value.langcode and value.langcode ~= '' and value.langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), value.langcode, mw.language.fetchLanguageName(value.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
end
end
--mw.log("findSiteLinksOnWikidata returning="..dump(output))
return output
end
local function findMainLinksLocal(props, pagetitle, short_links, local_value)
local output = {}
-- to avoid deep tests
if not props.prop then
return nil
end
if not (local_value or local_value == '') then
-- bail out if no value is present
return output
end
-- get the formatvalue from the property
local verified_value = local_value
if props.regex and props.regex ~= '' then
-- let's verify the id
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( local_value, '^'..regex..'$' )
if test then
-- it matched, this is correct
verified_value = local_value
else
verified_value = nil
end
end
if not verified_value then
return output
end
local wikidata_property = string.find(props.prop, "([pP]%d+)")
local wikidata_values = {}
if wikidata_property then
-- get any wikidata values to see if they are equal to local values
wikidata_values = getValuesFromWikidata(props)
end
if wikidata_property or (props.url and props.url ~= '') or (props.url_f) then
output[#output+1] = {}
output[#output].langcode = string.find(props.langcode, "([pP]%d+)") and "" or props.langcode
--mw.log("findMainLinksLocal - props="..dump(props).." langcode="..output[#output].langcode)
output[#output].category = {}
local url = ''
if props.track and wikidata_property and wikidata_values and #wikidata_values then
local local_value_in_wikidata = false
for _,value in ipairs( wikidata_values ) do
if value.value == verified_value then
local_value_in_wikidata = true
end
end
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), (local_value_in_wikidata and 'track-cat-local-wd-equal' or 'track-cat-local-wd-unequal')), props.prop):plain()
end
if wikidata_property and wikidata_values and #wikidata_values then
hasdatafromwikidata = true -- signal up the chain this article has a wikidata claim
end
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif wikidata_property then
-- get the formatvalue from the property, if it exists
local formatterUrl = getFormatterUrl(props.prop, verified_value)
if formatterUrl ~= '' then
url = mw.message.newRawMessage(formatterUrl, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-local'), props.prop):plain()
end
end
else
-- no other choice, bail out
return {}
end
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (output[#output].langcode and output[#output].langcode ~= '' and output[#output].langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), props.langcode, mw.language.fetchLanguageName(props.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
--mw.log("findMainLinksLocal returning="..dump(output))
return output
end
local function findSiteLinksLocal(props, pagetitle, short_links, local_value)
local output = {}
-- to avoid deep tests
if not props.prop then
return nil
end
if not (local_value or local_value == '') then
-- bail out if no value is present
return output
end
-- get the formatvalue from the property
local verified_value = local_value
if props.regex and props.regex ~= '' then
-- let's verify the id
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( local_value, '^'..regex..'$' )
if test then
-- it matched, this is correct
verified_value = local_value
else
verified_value = nil
end
end
if not verified_value then
return output
end
local wikidata_property = string.find(props.prop, "(SL.+)")
local wikidata_values = {}
if wikidata_property then
-- get any wikidata values to see if they are equal to local values
wikidata_values = getSitelinksFromWikidata(props)
end
if wikidata_property or (props.url and props.url ~= '') or (props.url_f) then
output[#output+1] = {}
output[#output].langcode = string.find(props.langcode, "(SL.+)") and "" or props.langcode
--mw.log("findSiteLinksLocal - props="..dump(props).." langcode="..output[#output].langcode .." wikidata_values="..dump(wikidata_values))
output[#output].category = {}
local url = ''
if props.track and wikidata_property and wikidata_values and #wikidata_values then
local local_value_in_wikidata = false
for _,value in ipairs( wikidata_values ) do
if value.value == verified_value then
local_value_in_wikidata = true
end
end
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), (local_value_in_wikidata and 'track-cat-local-wd-equal' or 'track-cat-local-wd-unequal')), props.prop):plain()
end
if wikidata_property and wikidata_values and #wikidata_values then
hasdatafromwikidata = true -- signal up the chain this article has a wikidata claim
end
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif wikidata_property then
url = verified_value:gsub(' ','_')
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-local'), props.prop):plain()
end
else
-- no other choice, bail out
return {}
end
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (output[#output].langcode and output[#output].langcode ~= '' and output[#output].langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), props.langcode, mw.language.fetchLanguageName(props.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
--mw.log("findSiteLinksLocal returning="..dump(output))
return output
end
local function addLinkback(str, property)
local id = mw.wikibase.getEntityObject()
if not id then
return str
end
if type(id) == 'table' then
id = id.id
end
local class = ''
local url = ''
if property then
class = 'wd_' .. string.lower(property)
url = mw.uri.fullUrl('d:' .. id .. '#' .. property)
url.fragment = property
else
url = mw.uri.fullUrl('d:' .. id )
end
local title = conf:g('wikidata-linkback-edit')
local icon = '[%s [[File:Blue pencil.svg|%s|10px|text-top|link=]] ]'
url = tostring(url)
local v = mw.html.create('span')
:addClass(class)
:wikitext(str)
:tag('span')
:addClass('noprint plainlinks wikidata-linkback')
:css('padding-left', '.3em')
:wikitext(icon:format(url, title))
:allDone()
return tostring(v)
end
local function getArgument(frame, argument)
local args = frame.args
if args[1] == nil then
local pFrame = frame:getParent();
args = pFrame.args;
for k,v in pairs( frame.args ) do
args[k] = v;
end
end
if args[argument] then
return args[argument]
end
return nil
end
local function removeEntry(conf_claims, identifier, property)
for i, props in ipairs(conf_claims) do
if props[identifier] == property then
table.remove(conf_claims, i)
end
end
return conf_claims
end
function p.getLinks(frame)
local configured_conf = getArgument(frame, conf:a('arg-conf'))
if configured_conf then
cModul = require ('Modul:Kontrolê otoriteyi/conf/'..configured_conf)
else
error(mw.message.newRawMessage(conf:g('missing-conf'), configured_conf):plain())
end
local output = {}
local category = {}
local conf_claims = cModul:getConfiguredClaims(contLang:getCode())
local limits = cModul:getLimits()
assert(limits, mw.message.newRawMessage(conf:g('missing-limits'), configured_conf):plain())
local links_shown = getArgument(frame, conf:a('arg-maxlink'))
local pagetitle = getArgument(frame, conf:a('arg-title'))
-- get a list of tracked properties from the article itself
local requested_tracking = getArgument(frame, conf:a('arg-track'))
if requested_tracking and requested_tracking ~= '' then
-- the properties should be written as P1234, P2345 and other
-- version corresponding to the applicable property-identifiers in the config
for track_prop in string.gmatch(requested_tracking,"([^ ,;:]+)") do
-- get the requested properties and be able to access them
-- like req_prop['P345'] to verify if it was requested
local remove_track = string.match(track_prop, "^\-(.*)")
for i,claim in ipairs ( conf_claims ) do
if remove_track == claim.prop or remove_track == conf:a('mod-filter-all') then
-- if a property starts with "-", then we'll simply remove that
-- property from the conf_claims
conf_claims[i]['track'] = false
elseif track_prop == claim.prop or track_prop == conf:a('mod-filter-all') then
conf_claims[i]['track'] = true
end
end
end
end
-- get a list of "approved" properties from the article itself
local requested_properties = getArgument(frame, conf:a('arg-properties'))
--mw.log("requested_properties="..dump(requested_properties))
-- assume all properties are allowed
local req_prop = {}
local no_req_prop = false -- we'll allow properties to be filtered for now
if requested_properties and requested_properties ~= '' then
-- the properties should be written as P1234, P2345 and other
-- version corresponding to the applicable property-identifiers in the config
for i in string.gmatch(requested_properties,"([^ ,;:]+)") do
-- get the requested properties and be able to access them
-- like req_prop['P345'] to verify if it was requested
if i == conf:a('mod-filter-all') then
-- this is a special modifier, saying we should ignore
-- all previous and future positive filters and remove the
-- filter (with exception of negative filters)
req_prop = {}
no_req_prop = true
end
local remove_prop = string.match(i, "^\-(.*)")
if remove_prop then
-- if a property starts with "-", then we'll simply remove that
-- property from the conf_claims
conf_claims = removeEntry(conf_claims, 'prop', remove_prop)
elseif not no_req_prop then -- only if we are allowing properties to be filtered
req_prop[i] = 1
-- cheat to make #req_prop indicate populated table
req_prop[1] = 1
end
end
end
local requested_langs = getArgument(frame, conf:a('arg-languages'))
--mw.log("requested_langs="..dump(requested_langs))
-- assume all languages are allowed
local req_lang = {}
local no_req_lang = false -- we'll allow languages to be filtered for now
if requested_langs and requested_langs ~= '' then
-- the languages should be written as langcodes as used in the conf_claims
for i in string.gmatch(requested_langs,"([^ ,;:]+)") do
-- get the requested languages and be able to access them
if i == conf:a('mod-filter-all') then
-- this is a special modifier, saying we should ignore
-- all previous and future positive filters and remove the
-- filter (with exception of negative filters)
req_lang = {}
no_req_lang = true
end
-- like req_lang['en'] to verify if it was requested
local remove_lang = string.match(i, "^\-(.*)")
if remove_lang then
-- if a language starts with "-", then we'll simply remove that
-- language from the conf_claims
conf_claims = removeEntry(conf_claims, 'langcode', remove_lang)
elseif not no_req_lang then -- only if we are allowing languages to be filtered
req_lang[i] = 1
-- cheat to make #req_lang indicate populated table
req_lang[1] = 1
end
end
end
local short_links = getArgument(frame, conf:a('arg-short'))
if short_links and short_links ~= '' then
short_links = true
else
short_links = false
end
local showinline = getArgument(frame, conf:a('arg-inline'))
if showinline and showinline ~= '' then
showinline = true
else
showinline = false
end
if not links_shown or links_shown == '' then
links_shown = limits['links-shown'] and limits['links-shown'] or 10
else
links_shown = tonumber(links_shown)
end
local somedataonwikidata = (short_links and false or true)
--mw.log("conf_claims="..dump(conf_claims))
--mw.log("req_prop="..dump(req_prop))
--mw.log("req_lang="..dump(req_lang))
--mw.log("short_links="..dump(short_links))
for _, props in ipairs(conf_claims) do
-- if we're called with a list of approved properties or languages, check if this one is "approved"
if (#req_prop==0 or req_prop[props.prop]) and (#req_lang==0 or req_lang[props.langcode] or string.find(props.langcode, "([pP]%d+)")) then
--mw.log("checking claim="..dump(props))
local links = {}
local checkedonwikidata = false
-- get the any local overriding value from the call
local wikivalue = getArgument(frame, props.prop)
--mw.log("wikivalue="..dump(wikivalue))
if (not wikivalue or wikivalue == "") and string.find(props.prop, "([pP]%d+)") then
-- the property is a Pnnn type, and therefore on Wikidata
links = findMainLinksOnWikidata(props, pagetitle, short_links)
if links == nil then
-- a nil-value indicated no wikidata-link
haswikidatalink = false
links = {}
else
checkedonwikidata = true
end
elseif (not wikivalue or wikivalue == "") and string.find(props.prop, "(SL%l+)") then
-- this is a sitelink-type (SLspecieswiki)
--mw.log("finding sitelinks..")
links = findSiteLinksOnWikidata(props, pagetitle, short_links)
if links == nil then
-- a nil-value indicated no wikidata-link
haswikidatalink = false
links = {}
else
checkedonwikidata = true
end
elseif (wikivalue and wikivalue ~= "") and string.find(props.prop, "(SL%l+)") then
-- this is a sitelink-type (SLspecieswiki)
links = findSiteLinksLocal(props, pagetitle, short_links, wikivalue)
elseif wikivalue and wikivalue ~= '' then
-- the property is of another annotation, and therefore a local construct
links = findMainLinksLocal(props, pagetitle, short_links, wikivalue)
end
--mw.log("links="..dump(links))
for _,v in ipairs(links) do
-- we'll have to check langcodes again as they may have come from wikidata
if (#req_lang==0 or req_lang[v.langcode]) then
if checkedonwikidata and not hasdatafromwikidata then
-- add a general tracking category for articles with data from wikidata
hasdatafromwikidata = true
category[#category+1] = cModul:getMessage(contLang:getCode(), 'with-data-cat')
elseif not checkedonwikidata and not hasdatafromlocal then
-- add a general tracking category for articles with data from template-calls in local articles
hasdatafromlocal = true
category[#category+1] = cModul:getMessage(contLang:getCode(), 'with-local-cat')
end
if short_links and props.short and v.text and v.text ~= '' then
-- if short links were requested, and a short definition exists for this property, let's use it
if #output==0 then
output[#output+1] = v.text
else
output[#output] = output[#output] .. cModul:getMessage(contLang:getCode(),'short-list-separator') .. v.text
end
somedataonwikidata = true
elseif not short_links and not showinline and v.text and v.text ~= '' then
-- only if short links were not requested
output[#output+1] = (#output>=1 and conf:g('msg-ul-prepend') or '') -- if this is the first link, we won't output a list-element (msg-ul-prepend)
.. (checkedonwikidata and addLinkback(v.text, props.prop) or v.text) -- if the link comes from wikidata, also output a linkback.
elseif not short_links and showinline and v.text and v.text ~= '' then
-- only if short links were not requested
output[#output+1] = v.text
end
if props.track and v.category and #v.category then
-- add category if tracking is on for this property and a category exists in the link-result.
for _,cats in ipairs( v.category ) do
category[#category+1] = cats
end
end
if links_shown>0 then
links_shown = links_shown - 1
else
break
end
end
end
if links_shown==0 then
break
end
end
end
local outtext = ""
if short_links and #output>0 then
-- if these are short links, output the whole thing with linkback to wikidata
--mw.log("somedataonwikidata="..dump(somedataonwikidata).." and output="..dump(output).." and #output="..dump(#output))
outtext = (somedataonwikidata
and addLinkback(table.concat(output,cModul:getMessage(contLang:getCode(),'short-list-separator')), nil)
or table.concat(output,cModul:getMessage(contLang:getCode(),'short-list-separator')))
elseif not short_links and not showinline and #output>0 then
outtext = table.concat(output,"\n")
elseif not short_links and showinline and #output>0 then
outtext = table.concat(output,conf:g('msg-inline-separator'))
end
if not hasdatafromwikidata then
category[#category+1] = cModul:getMessage(contLang:getCode(), 'no-data-cat')
if not hasdatafromlocal and not short_links then
outtext = cModul:getMessage(contLang:getCode(), 'no-data-text')
end
end
if not haswikidatalink then
category[#category+1] = cModul:getMessage(contLang:getCode(), 'no-wikilink-cat')
if not hasdatafromlocal and not short_links then
outtext = cModul:getMessage(contLang:getCode(), 'no-wikilink')
end
end
local nocategory = getArgument(frame, conf:a('arg-no-categories'))
category = #category>0 and "\n" .. table.concat(category,"\n") or ""
--mw.log("nocategory="..dump(nocategory).." and outtext="..dump(outtext).." and category="..dump(category))
outtext = outtext .. (nocategory and '' or category)
return outtext
end
function p.getLanguageCode(frame)
local prop = getArgument(frame, conf:a('arg-properties'))
local output = getLanguageData(prop)
return table.concat(output, conf:a('mod-filter-separator'))
end
return p
0efjtob45wy3knbi2u5rhq4c963jnpw
548947
548946
2026-06-07T05:57:27Z
Mirzali
16
"[[Modul:Kontrolê otoriteyi]]" sıtariya: Melumatê şaşi têarê kerdış ([Bıvurne=Karberanê qeydnêbiyaeyan bloke ke] (bêmıhlet) [Move=Karberanê qeydnêbiyaeyan bloke ke] (bêmıhlet))
548946
Scribunto
text/plain
require('strict')
-- local genitive = require('Modul:Genitive')._genitive
local contLang = mw.language.getContentLanguage()
local cModul = {}
local conf = require 'Modul:Kontrolê otoriteyi/conf'(contLang:getCode())
local hasdatafromwikidata = false
local hasdatafromlocal = false
local haswikidatalink = true -- we assume it's connected
local p = {}
local function getLabel(entity, use_genitive, pagetitle)
local label = (pagetitle and pagetitle ~= '') and pagetitle or nil
if not label and not entity then
label = mw.title.getCurrentTitle().text
elseif not label then
label = mw.wikibase.label(entity.id) or mw.title.getCurrentTitle().text
end
-- return use_genitive and genitive(label, 'sitt') or label
return use_genitive and label .. "'s" or label
end
-- @todo cleanup, this is in production, use the console
local function dump(obj)
return "<pre>" .. mw.dumpObject(obj) .. "</pre>"
end
local function stringFormatter( datavalue )
if datavalue == nil or datavalue['type'] ~= 'string' then
return nil
end
return datavalue.value
end
local pval = {}
pval.P1793 = { -- format as a regular expression
types = {
snaktype = 'value',
datatype = 'string',
},
}
pval.P407 = { -- language of work or name
types = {
snaktype = 'value',
datatype = 'wikibase-item',
datavalue = {
type = 'wikibase-entityid',
}
},
}
pval.P364 = { -- original language of work
types = {
snaktype = 'value',
datatype = 'wikibase-item',
datavalue = {
type = 'wikibase-entityid',
}
},
}
pval.P218 = { -- ISO 639-1 language
types = {
snaktype = 'value',
datatype = 'external-id',
datavalue = {
type = 'string',
}
},
}
pval.P305 = { -- IETF language tag
types = {
snaktype = 'value',
datatype = 'external-id',
datavalue = {
type = 'string',
}
},
}
pval.P582 = { -- end time
types = {
snaktype = 'value',
datatype = 'time',
datavalue = {
type = 'string',
}
},
}
-- This is a really makeshift crappy converter, but it'll do some basic
-- conversion from PCRE to Lua-style patterns (note that this only work
-- in very few cases)
local function regexConverter( regex )
local output = regex
output = string.gsub(output, "\\d{2}", "%%d%%d")
output = string.gsub(output, "\\d{3}", "%%d%%d%%d")
output = string.gsub(output, "\\d{4}", "%%d%%d%%d%%d")
output = string.gsub(output, "\\d{5}", "%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d{6}", "%%d%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d{7}", "%%d%%d%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d{8}", "%%d%%d%%d%%d%%d%%d%%d%%d")
output = string.gsub(output, "\\d", "%%d")
return output
end
local function getFormatterUrl( prop, value )
local head = ""
local tail = ""
local entity = mw.wikibase.getEntity(prop)
-- to avoid deep tests
if not entity or not entity.claims then
return head
end
-- get the claims for this entity
local statements = entity.claims['P1630'] -- formatter URL
-- to avoid deep tests
if not statements then
return head
end
local formatters = {}
-- let's go through the claims
for _, claim in ipairs( statements ) do
-- to avoid deep tests
if not claim then
claim = {}
end
local valid = claim['type'] == 'statement'
and claim['rank'] ~= 'deprecated'
if valid then
local mainsnak = claim.mainsnak or {}
local preferred = claim['rank'] == 'preferred'
-- get any qualifiers for this claim (we are interested in P1793 for
-- indication of which claim is correct)
local qualifiers = claim.qualifiers or {}
-- now let's check the qualifier we are interested in
local qualid = 'P1793' -- format as a regular expression
-- if the claim has this qualifier
if qualifiers[qualid] then
-- it's here, let's check it out!
local items = {}
-- traverse all snaks in this qualifier
for _, qualsnak in ipairs( qualifiers[qualid] ) do
if qualsnak and pval[qualid] then
--mw.log("qualsnak = " .. dump(qualsnak))
-- check if the snak is of the correct snaktype and datatype
local valid = qualsnak.snaktype == pval[qualid].types.snaktype
and qualsnak.datatype == pval[qualid].types.datatype
if valid then
-- we'll have to convert the regex to Lua-style
local regex = regexConverter(qualsnak.datavalue.value)
local test = string.match( value, '^'..regex..'$' )
if test then
-- it matched, this is correct and overrides any other.
if preferred then
head = mainsnak.datavalue.value
else
tail = mainsnak.datavalue.value
end
end
end
end
end
else
-- we don't have any qualifier, is it preferred?
if (head == '' and preferred) or (tail == '' and not preferred) then
-- if we don't have any other, use this one
if preferred and head == '' then
head = mainsnak.datavalue.value
elseif not preferred and tail == '' then
tail = mainsnak.datavalue.value
end
end
end
end
end
return head ~= '' and head or tail
end
local function getLanguageData(prop, qid)
local head = {}
local tail = {}
-- mw.log("getLanguageData, prop="..dump(prop).." qid="..dump(qid))
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject(qid)
-- to avoid deep tests
if not entity then
return nil
end
if not entity.claims then
return {}
end
-- get the claims for this entity
local statements = entity.claims[prop]
-- to avoid deep tests
if not statements then
return {}
end
-- mw.log("getLanguageData going through claims="..dump(statements))
-- let's go through the claims
for _, claim in ipairs( statements ) do
-- to avoid deep tests
if not claim then
claim = {}
end
local valid = claim['type'] == 'statement'
and claim['rank'] ~= 'deprecated'
if valid then
local mainsnak = claim.mainsnak or {}
local preferred = claim['rank'] == 'preferred'
-- verify the item is what we expect
local valid = mainsnak.snaktype == pval[prop].types.snaktype
and mainsnak.datatype == pval[prop].types.datatype
and mainsnak.datavalue.type == pval[prop].types.datavalue.type
if valid then
-- mw.log("getLanguageData claim is valid="..dump(claim))
-- if this is the correct P-value, dive into it and get P218 (ISO 639-1)
if mainsnak.property == 'P364' then -- original language of work
if preferred then
head[#head+1] = table.concat(getLanguageData('P218', 'Q'..mainsnak.datavalue.value['numeric-id']), conf:a('mod-filter-separator'))
else
tail[#tail+1] = table.concat(getLanguageData('P218', 'Q'..mainsnak.datavalue.value['numeric-id']), conf:a('mod-filter-separator'))
end
elseif mainsnak.property == 'P218' or mainsnak.property == 'P305' then -- ISO 639-1 code or IETF language tag
if preferred then
head[#head+1] = stringFormatter(mainsnak.datavalue)
else
tail[#tail+1] = stringFormatter(mainsnak.datavalue)
end
end
end
end
end
-- mw.log("getLanguageData returning head="..dump(head).." tail="..dump(tail))
return #head>0 and head or tail
end
local langqvalorder = {'P407','P364'}
local otherqvalorder = {'P582'}
local function getValuesFromWikidata(props)
local head = {}
local tail = {}
-- mw.log("getValuesFromWikidata, props="..dump(props))
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject()
-- to avoid deep tests
if not entity then
--mw.log("getValuesFromWikidata no entity")
return nil
end
if not entity.claims or not props or not props.prop or props.prop == '' then
--mw.log("getValuesFromWikidata no claims or no props")
return {}
end
-- get the claims for this entity
local statements = entity.claims[props.prop]
-- to avoid deep tests
if not statements then
return {}
end
-- let's go through the claims
for _, claim in ipairs( statements ) do
-- to avoid deep tests
if not claim then
claim = {}
end
local valid = claim['type'] == 'statement'
and claim['rank'] ~= 'deprecated'
if valid then
-- mw.log("getValuesFromWikidata valid claim="..dump(claim))
local mainsnak = claim.mainsnak or {}
local preferred = claim['rank'] == 'preferred'
-- get the content of the claim (the identifier)
local langcode = props.langcode
local checklangcode = nil
if props.langcode and props.langcode ~= '' then
checklangcode = string.find(langcode, "([pP]%d+)")
end
if checklangcode and checklangcode ~= "" then
-- this is a P-value for language-code, so we'll check qualifiers for languagedata
-- first get any qualifiers
local qualifiers = claim.qualifiers or {}
for _, qualid in ipairs( langqvalorder ) do
-- if the claim has this qualifier
if qualifiers[qualid] then
-- it's here, let's check it out!
local items = {}
-- traverse all snaks in this qualifier
for _, qualsnak in ipairs( qualifiers[qualid] ) do
if qualsnak and pval[qualid] then
-- mw.log("qualsnak = " .. dump(qualsnak))
-- check if the snak is of the correct snaktype and datatype
local valid = qualsnak.snaktype == pval[qualid].types.snaktype
and qualsnak.datatype == pval[qualid].types.datatype
if valid then
-- now get the actual data
langcode = table.concat(getLanguageData('P305', 'Q'..qualsnak.datavalue.value['numeric-id']), '')
end
end
end
end
-- mw.log("langcode is now="..dump(langcode))
end
if string.find(langcode, "([pP]%d+)") then
-- we still don't have any langcode, so we default to "en"
langcode = nil
end
end
local stillvalid = true
-- we should check a couple of other qualifiers as well
-- first get any qualifiers
local qualifiers = claim.qualifiers or {}
for _, qualid in ipairs( otherqvalorder ) do
-- if the claim has this qualifier
if qualifiers[qualid] then
-- it's here, let's check it out!
local items = {}
-- traverse all snaks in this qualifier
for _, qualsnak in ipairs( qualifiers[qualid] ) do
if qualsnak and pval[qualid] then
-- mw.log("qualsnak = " .. dump(qualsnak))
-- check if the snak is of the correct snaktype and datatype
local valid = qualsnak.snaktype == pval[qualid].types.snaktype
and qualsnak.datatype == pval[qualid].types.datatype
if not valid then
-- sorry, this is not correct
mw.log("qualsnak = INCORRECT")
stillvalid = false
end
end
end
end
-- mw.log("langcode is now="..dump(langcode))
end
if stillvalid then
if preferred then
head[#head+1] = { value=stringFormatter(mainsnak.datavalue) }
if langcode and langcode ~= '' then
head[#head]['langcode'] = langcode
end
else
tail[#tail+1] = { value=stringFormatter(mainsnak.datavalue) }
if langcode and langcode ~= '' then
tail[#tail]['langcode'] = langcode
end
end
end
end
end
-- mw.log("getValuesFromWikidata returning head="..dump(head).." tail="..dump(tail))
return #head>0 and head or tail
end
local function findMainLinksOnWikidata(props, pagetitle, short_links)
local output = {}
local pid = nil
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject()
-- to avoid deep tests
if not entity then
return nil
end
local values = getValuesFromWikidata(props)
for _, value in ipairs( values ) do
local verified_value = nil
if props.regex then
-- we have a local defined regex, so this will have to pass first
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( value.value, '^'..regex..'$' )
--mw.log("testing with "..regex.. " and test="..dump(test).." and value="..id)
if test then
-- it matched, this is correct and overrides any other.
verified_value = value.value
end
else
verified_value = value.value
end
if verified_value then
local url = ''
output[#output+1] = {}
output[#output].langcode = value.langcode
output[#output].category = {}
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track and not string.find(props.langcode, "([pP]%d+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track and not string.find(props.langcode, "([pP]%d+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
else
-- get the formatvalue from the property, if it exists
local formatterUrl = getFormatterUrl(props.prop, verified_value)
if formatterUrl ~= '' then
url = mw.message.newRawMessage(formatterUrl, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
end
end
if url ~= '' then
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (value.langcode and value.langcode ~= '' and value.langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), value.langcode, mw.language.fetchLanguageName(value.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
end
end
--mw.log("findMainLinksOnWikidata returning="..dump(output))
return output
end
local function getSitelinksFromWikidata(props, entity)
local output = {}
--mw.log("getSitelinksFromWikidata, props="..dump(props))
-- to avoid deep tests
if not entity then
entity = mw.wikibase.getEntityObject()
if not entity then
--mw.log("getSitelinksFromWikidata no entity")
return nil
end
end
local requested_sitelink = string.match(props.prop, "SL(%l+)")
local sitelinks = entity:getSitelink(requested_sitelink)
if sitelinks and sitelinks ~= '' then
output[#output+1] = { value = sitelinks }
end
--mw.log("getSitelinksFromWikidata returning output="..dump(output))
return output
end
local function findSiteLinksOnWikidata(props, pagetitle, short_links)
local output = {}
local pid = nil
-- get the entity we are checking
local entity = mw.wikibase.getEntityObject()
-- to avoid deep tests
if not entity then
return nil
end
local values = getSitelinksFromWikidata(props)
for _, value in ipairs( values ) do
local verified_value = nil
if props.regex then
-- we have a local defined regex, so this will have to pass first
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( value.value, '^'..regex..'$' )
--mw.log("testing with "..regex.. " and test="..dump(test).." and value="..id)
if test then
-- it matched, this is correct and overrides any other.
verified_value = value.value
end
else
verified_value = value.value
end
if verified_value then
--mw.log("it's verified..")
local url = ''
output[#output+1] = {}
output[#output].langcode = value.langcode
output[#output].category = {}
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track and not string.find(props.langcode, "(SL%l+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track and not string.find(props.langcode, "(SL%l+)") then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-wd'), props.prop):plain()
elseif props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
else
url = verified_value:gsub(' ','_')
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-wd'), props.prop):plain()
end
end
if url ~= '' then
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (value.langcode and value.langcode ~= '' and value.langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), value.langcode, mw.language.fetchLanguageName(value.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(entity, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
end
end
--mw.log("findSiteLinksOnWikidata returning="..dump(output))
return output
end
local function findMainLinksLocal(props, pagetitle, short_links, local_value)
local output = {}
-- to avoid deep tests
if not props.prop then
return nil
end
if not (local_value or local_value == '') then
-- bail out if no value is present
return output
end
-- get the formatvalue from the property
local verified_value = local_value
if props.regex and props.regex ~= '' then
-- let's verify the id
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( local_value, '^'..regex..'$' )
if test then
-- it matched, this is correct
verified_value = local_value
else
verified_value = nil
end
end
if not verified_value then
return output
end
local wikidata_property = string.find(props.prop, "([pP]%d+)")
local wikidata_values = {}
if wikidata_property then
-- get any wikidata values to see if they are equal to local values
wikidata_values = getValuesFromWikidata(props)
end
if wikidata_property or (props.url and props.url ~= '') or (props.url_f) then
output[#output+1] = {}
output[#output].langcode = string.find(props.langcode, "([pP]%d+)") and "" or props.langcode
--mw.log("findMainLinksLocal - props="..dump(props).." langcode="..output[#output].langcode)
output[#output].category = {}
local url = ''
if props.track and wikidata_property and wikidata_values and #wikidata_values then
local local_value_in_wikidata = false
for _,value in ipairs( wikidata_values ) do
if value.value == verified_value then
local_value_in_wikidata = true
end
end
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), (local_value_in_wikidata and 'track-cat-local-wd-equal' or 'track-cat-local-wd-unequal')), props.prop):plain()
end
if wikidata_property and wikidata_values and #wikidata_values then
hasdatafromwikidata = true -- signal up the chain this article has a wikidata claim
end
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif wikidata_property then
-- get the formatvalue from the property, if it exists
local formatterUrl = getFormatterUrl(props.prop, verified_value)
if formatterUrl ~= '' then
url = mw.message.newRawMessage(formatterUrl, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-local'), props.prop):plain()
end
end
else
-- no other choice, bail out
return {}
end
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (output[#output].langcode and output[#output].langcode ~= '' and output[#output].langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), props.langcode, mw.language.fetchLanguageName(props.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
--mw.log("findMainLinksLocal returning="..dump(output))
return output
end
local function findSiteLinksLocal(props, pagetitle, short_links, local_value)
local output = {}
-- to avoid deep tests
if not props.prop then
return nil
end
if not (local_value or local_value == '') then
-- bail out if no value is present
return output
end
-- get the formatvalue from the property
local verified_value = local_value
if props.regex and props.regex ~= '' then
-- let's verify the id
-- maybe we'll have to convert the regex to Lua-style
local regex = regexConverter(props.regex)
local test = string.match( local_value, '^'..regex..'$' )
if test then
-- it matched, this is correct
verified_value = local_value
else
verified_value = nil
end
end
if not verified_value then
return output
end
local wikidata_property = string.find(props.prop, "(SL.+)")
local wikidata_values = {}
if wikidata_property then
-- get any wikidata values to see if they are equal to local values
wikidata_values = getSitelinksFromWikidata(props)
end
if wikidata_property or (props.url and props.url ~= '') or (props.url_f) then
output[#output+1] = {}
output[#output].langcode = string.find(props.langcode, "(SL.+)") and "" or props.langcode
--mw.log("findSiteLinksLocal - props="..dump(props).." langcode="..output[#output].langcode .." wikidata_values="..dump(wikidata_values))
output[#output].category = {}
local url = ''
if props.track and wikidata_property and wikidata_values and #wikidata_values then
local local_value_in_wikidata = false
for _,value in ipairs( wikidata_values ) do
if value.value == verified_value then
local_value_in_wikidata = true
end
end
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), (local_value_in_wikidata and 'track-cat-local-wd-equal' or 'track-cat-local-wd-unequal')), props.prop):plain()
end
if wikidata_property and wikidata_values and #wikidata_values then
hasdatafromwikidata = true -- signal up the chain this article has a wikidata claim
end
if props.url_f then
-- we have a local defined url-formatter function, use it as first priority
url = props.url_f(verified_value)
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif props.url then
-- we have a local defined url-formatter string, use it as second priority
url = mw.message.newRawMessage(props.url, verified_value):plain()
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-local-local'), props.prop):plain()
end
elseif wikidata_property then
url = verified_value:gsub(' ','_')
if props.track then
output[#output].category[#output[#output].category+1] = mw.message.newRawMessage(cModul:getMessage(contLang:getCode(), 'track-cat-wd-local'), props.prop):plain()
end
else
-- no other choice, bail out
return {}
end
local this_wiki = mw.getContentLanguage()
local this_wiki_code = this_wiki:getCode()
local langlink = (output[#output].langcode and output[#output].langcode ~= '' and output[#output].langcode ~= this_wiki_code) and mw.message.newRawMessage(conf:g('msg-langcode'), props.langcode, mw.language.fetchLanguageName(props.langcode, this_wiki_code)) or ""
if short_links and props.short then
output[#output].text =
mw.message.newRawMessage(props.short,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
else
output[#output].text =
mw.message.newRawMessage(props.message,
getLabel(nil, props.genitive, pagetitle),
url,
langlink,
verified_value,
mw.uri.encode(verified_value, 'PATH'))
:plain()
end
end
--mw.log("findSiteLinksLocal returning="..dump(output))
return output
end
local function addLinkback(str, property)
local id = mw.wikibase.getEntityObject()
if not id then
return str
end
if type(id) == 'table' then
id = id.id
end
local class = ''
local url = ''
if property then
class = 'wd_' .. string.lower(property)
url = mw.uri.fullUrl('d:' .. id .. '#' .. property)
url.fragment = property
else
url = mw.uri.fullUrl('d:' .. id )
end
local title = conf:g('wikidata-linkback-edit')
local icon = '[%s [[File:Blue pencil.svg|%s|10px|text-top|link=]] ]'
url = tostring(url)
local v = mw.html.create('span')
:addClass(class)
:wikitext(str)
:tag('span')
:addClass('noprint plainlinks wikidata-linkback')
:css('padding-left', '.3em')
:wikitext(icon:format(url, title))
:allDone()
return tostring(v)
end
local function getArgument(frame, argument)
local args = frame.args
if args[1] == nil then
local pFrame = frame:getParent();
args = pFrame.args;
for k,v in pairs( frame.args ) do
args[k] = v;
end
end
if args[argument] then
return args[argument]
end
return nil
end
local function removeEntry(conf_claims, identifier, property)
for i, props in ipairs(conf_claims) do
if props[identifier] == property then
table.remove(conf_claims, i)
end
end
return conf_claims
end
function p.getLinks(frame)
local configured_conf = getArgument(frame, conf:a('arg-conf'))
if configured_conf then
cModul = require ('Modul:Kontrolê otoriteyi/conf/'..configured_conf)
else
error(mw.message.newRawMessage(conf:g('missing-conf'), configured_conf):plain())
end
local output = {}
local category = {}
local conf_claims = cModul:getConfiguredClaims(contLang:getCode())
local limits = cModul:getLimits()
assert(limits, mw.message.newRawMessage(conf:g('missing-limits'), configured_conf):plain())
local links_shown = getArgument(frame, conf:a('arg-maxlink'))
local pagetitle = getArgument(frame, conf:a('arg-title'))
-- get a list of tracked properties from the article itself
local requested_tracking = getArgument(frame, conf:a('arg-track'))
if requested_tracking and requested_tracking ~= '' then
-- the properties should be written as P1234, P2345 and other
-- version corresponding to the applicable property-identifiers in the config
for track_prop in string.gmatch(requested_tracking,"([^ ,;:]+)") do
-- get the requested properties and be able to access them
-- like req_prop['P345'] to verify if it was requested
local remove_track = string.match(track_prop, "^\-(.*)")
for i,claim in ipairs ( conf_claims ) do
if remove_track == claim.prop or remove_track == conf:a('mod-filter-all') then
-- if a property starts with "-", then we'll simply remove that
-- property from the conf_claims
conf_claims[i]['track'] = false
elseif track_prop == claim.prop or track_prop == conf:a('mod-filter-all') then
conf_claims[i]['track'] = true
end
end
end
end
-- get a list of "approved" properties from the article itself
local requested_properties = getArgument(frame, conf:a('arg-properties'))
--mw.log("requested_properties="..dump(requested_properties))
-- assume all properties are allowed
local req_prop = {}
local no_req_prop = false -- we'll allow properties to be filtered for now
if requested_properties and requested_properties ~= '' then
-- the properties should be written as P1234, P2345 and other
-- version corresponding to the applicable property-identifiers in the config
for i in string.gmatch(requested_properties,"([^ ,;:]+)") do
-- get the requested properties and be able to access them
-- like req_prop['P345'] to verify if it was requested
if i == conf:a('mod-filter-all') then
-- this is a special modifier, saying we should ignore
-- all previous and future positive filters and remove the
-- filter (with exception of negative filters)
req_prop = {}
no_req_prop = true
end
local remove_prop = string.match(i, "^\-(.*)")
if remove_prop then
-- if a property starts with "-", then we'll simply remove that
-- property from the conf_claims
conf_claims = removeEntry(conf_claims, 'prop', remove_prop)
elseif not no_req_prop then -- only if we are allowing properties to be filtered
req_prop[i] = 1
-- cheat to make #req_prop indicate populated table
req_prop[1] = 1
end
end
end
local requested_langs = getArgument(frame, conf:a('arg-languages'))
--mw.log("requested_langs="..dump(requested_langs))
-- assume all languages are allowed
local req_lang = {}
local no_req_lang = false -- we'll allow languages to be filtered for now
if requested_langs and requested_langs ~= '' then
-- the languages should be written as langcodes as used in the conf_claims
for i in string.gmatch(requested_langs,"([^ ,;:]+)") do
-- get the requested languages and be able to access them
if i == conf:a('mod-filter-all') then
-- this is a special modifier, saying we should ignore
-- all previous and future positive filters and remove the
-- filter (with exception of negative filters)
req_lang = {}
no_req_lang = true
end
-- like req_lang['en'] to verify if it was requested
local remove_lang = string.match(i, "^\-(.*)")
if remove_lang then
-- if a language starts with "-", then we'll simply remove that
-- language from the conf_claims
conf_claims = removeEntry(conf_claims, 'langcode', remove_lang)
elseif not no_req_lang then -- only if we are allowing languages to be filtered
req_lang[i] = 1
-- cheat to make #req_lang indicate populated table
req_lang[1] = 1
end
end
end
local short_links = getArgument(frame, conf:a('arg-short'))
if short_links and short_links ~= '' then
short_links = true
else
short_links = false
end
local showinline = getArgument(frame, conf:a('arg-inline'))
if showinline and showinline ~= '' then
showinline = true
else
showinline = false
end
if not links_shown or links_shown == '' then
links_shown = limits['links-shown'] and limits['links-shown'] or 10
else
links_shown = tonumber(links_shown)
end
local somedataonwikidata = (short_links and false or true)
--mw.log("conf_claims="..dump(conf_claims))
--mw.log("req_prop="..dump(req_prop))
--mw.log("req_lang="..dump(req_lang))
--mw.log("short_links="..dump(short_links))
for _, props in ipairs(conf_claims) do
-- if we're called with a list of approved properties or languages, check if this one is "approved"
if (#req_prop==0 or req_prop[props.prop]) and (#req_lang==0 or req_lang[props.langcode] or string.find(props.langcode, "([pP]%d+)")) then
--mw.log("checking claim="..dump(props))
local links = {}
local checkedonwikidata = false
-- get the any local overriding value from the call
local wikivalue = getArgument(frame, props.prop)
--mw.log("wikivalue="..dump(wikivalue))
if (not wikivalue or wikivalue == "") and string.find(props.prop, "([pP]%d+)") then
-- the property is a Pnnn type, and therefore on Wikidata
links = findMainLinksOnWikidata(props, pagetitle, short_links)
if links == nil then
-- a nil-value indicated no wikidata-link
haswikidatalink = false
links = {}
else
checkedonwikidata = true
end
elseif (not wikivalue or wikivalue == "") and string.find(props.prop, "(SL%l+)") then
-- this is a sitelink-type (SLspecieswiki)
--mw.log("finding sitelinks..")
links = findSiteLinksOnWikidata(props, pagetitle, short_links)
if links == nil then
-- a nil-value indicated no wikidata-link
haswikidatalink = false
links = {}
else
checkedonwikidata = true
end
elseif (wikivalue and wikivalue ~= "") and string.find(props.prop, "(SL%l+)") then
-- this is a sitelink-type (SLspecieswiki)
links = findSiteLinksLocal(props, pagetitle, short_links, wikivalue)
elseif wikivalue and wikivalue ~= '' then
-- the property is of another annotation, and therefore a local construct
links = findMainLinksLocal(props, pagetitle, short_links, wikivalue)
end
--mw.log("links="..dump(links))
for _,v in ipairs(links) do
-- we'll have to check langcodes again as they may have come from wikidata
if (#req_lang==0 or req_lang[v.langcode]) then
if checkedonwikidata and not hasdatafromwikidata then
-- add a general tracking category for articles with data from wikidata
hasdatafromwikidata = true
category[#category+1] = cModul:getMessage(contLang:getCode(), 'with-data-cat')
elseif not checkedonwikidata and not hasdatafromlocal then
-- add a general tracking category for articles with data from template-calls in local articles
hasdatafromlocal = true
category[#category+1] = cModul:getMessage(contLang:getCode(), 'with-local-cat')
end
if short_links and props.short and v.text and v.text ~= '' then
-- if short links were requested, and a short definition exists for this property, let's use it
if #output==0 then
output[#output+1] = v.text
else
output[#output] = output[#output] .. cModul:getMessage(contLang:getCode(),'short-list-separator') .. v.text
end
somedataonwikidata = true
elseif not short_links and not showinline and v.text and v.text ~= '' then
-- only if short links were not requested
output[#output+1] = (#output>=1 and conf:g('msg-ul-prepend') or '') -- if this is the first link, we won't output a list-element (msg-ul-prepend)
.. (checkedonwikidata and addLinkback(v.text, props.prop) or v.text) -- if the link comes from wikidata, also output a linkback.
elseif not short_links and showinline and v.text and v.text ~= '' then
-- only if short links were not requested
output[#output+1] = v.text
end
if props.track and v.category and #v.category then
-- add category if tracking is on for this property and a category exists in the link-result.
for _,cats in ipairs( v.category ) do
category[#category+1] = cats
end
end
if links_shown>0 then
links_shown = links_shown - 1
else
break
end
end
end
if links_shown==0 then
break
end
end
end
local outtext = ""
if short_links and #output>0 then
-- if these are short links, output the whole thing with linkback to wikidata
--mw.log("somedataonwikidata="..dump(somedataonwikidata).." and output="..dump(output).." and #output="..dump(#output))
outtext = (somedataonwikidata
and addLinkback(table.concat(output,cModul:getMessage(contLang:getCode(),'short-list-separator')), nil)
or table.concat(output,cModul:getMessage(contLang:getCode(),'short-list-separator')))
elseif not short_links and not showinline and #output>0 then
outtext = table.concat(output,"\n")
elseif not short_links and showinline and #output>0 then
outtext = table.concat(output,conf:g('msg-inline-separator'))
end
if not hasdatafromwikidata then
category[#category+1] = cModul:getMessage(contLang:getCode(), 'no-data-cat')
if not hasdatafromlocal and not short_links then
outtext = cModul:getMessage(contLang:getCode(), 'no-data-text')
end
end
if not haswikidatalink then
category[#category+1] = cModul:getMessage(contLang:getCode(), 'no-wikilink-cat')
if not hasdatafromlocal and not short_links then
outtext = cModul:getMessage(contLang:getCode(), 'no-wikilink')
end
end
local nocategory = getArgument(frame, conf:a('arg-no-categories'))
category = #category>0 and "\n" .. table.concat(category,"\n") or ""
--mw.log("nocategory="..dump(nocategory).." and outtext="..dump(outtext).." and category="..dump(category))
outtext = outtext .. (nocategory and '' or category)
return outtext
end
function p.getLanguageCode(frame)
local prop = getArgument(frame, conf:a('arg-properties'))
local output = getLanguageData(prop)
return table.concat(output, conf:a('mod-filter-separator'))
end
return p
0efjtob45wy3knbi2u5rhq4c963jnpw
700
0
99769
548972
546702
2026-06-07T09:32:39Z
~2026-33678-44
34068
548972
wikitext
text/x-wiki
{{Pusula|700}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:700]]
5j7et91fbkh5v1e7cpb77cevwsef63j
599
0
100155
548948
2026-06-07T09:10:58Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548948
wikitext
text/x-wiki
{{Pusula|599}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
r7vt8zxjiglutr8ia80rfwf9sawq7no
598
0
100156
548949
2026-06-07T09:11:28Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548949
wikitext
text/x-wiki
{{Pusula|598}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
78jh9gvoxznrf652njkriaechto0pqj
597
0
100157
548950
2026-06-07T09:12:00Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548950
wikitext
text/x-wiki
{{Pusula|597}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
ffkfa4fkzyw0cvpa37v2biyr9gm1zgm
596
0
100158
548951
2026-06-07T09:12:49Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548951
wikitext
text/x-wiki
{{Pusula|596}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
b6poyhpglapydo22oz3e7hyp2kt2e98
595
0
100159
548952
2026-06-07T09:14:07Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548952
wikitext
text/x-wiki
{{Pusula|595}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
mjmx3mhous5elhpkuno2yl4cnkd4uyg
594
0
100160
548953
2026-06-07T09:15:21Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548953
wikitext
text/x-wiki
{{Pusula|594}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
lwbzjex7cb65d1789vdq3l029vcszxc
593
0
100161
548954
2026-06-07T09:15:52Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548954
wikitext
text/x-wiki
{{Pusula|593}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
5nxesv71exs357j28l3hrv0o81rs2eh
592
0
100162
548955
2026-06-07T09:16:26Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548955
wikitext
text/x-wiki
{{Pusula|592}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
6605agcjmyfzicpue7xmp4ky103s2pl
591
0
100163
548956
2026-06-07T09:16:56Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548956
wikitext
text/x-wiki
{{Pusula|591}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
eayemo62voeyptxsptsxo2f0763420y
590
0
100164
548957
2026-06-07T09:17:22Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548957
wikitext
text/x-wiki
{{Pusula|590}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
s9y1g3d6f27qx5nbbo09bh1i3hxxgio
630
0
100165
548958
2026-06-07T09:18:20Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548958
wikitext
text/x-wiki
{{Pusula|630}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
h3u71iuksjgqd3xek65n6z80tw3n1kv
635
0
100166
548959
2026-06-07T09:19:02Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:600]]' ra pela newiye vıraziye
548959
wikitext
text/x-wiki
{{Pusula|635}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:600]]
nrgp6ctnschmcef79pffk69kpiagm9t
640
0
100167
548960
2026-06-07T09:20:08Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548960
wikitext
text/x-wiki
{{Pusula|640}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:640]]
5ydabciv11sgz4xxl66123ksps4tylp
100
0
100168
548961
2026-06-07T09:20:45Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548961
wikitext
text/x-wiki
{{Pusula|100}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:100]]
epobzxug99c9qcchqdqw4gptvozavtt
150
0
100169
548962
2026-06-07T09:21:40Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548962
wikitext
text/x-wiki
{{Pusula|150}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:150]]
qrxxt7zie05hb06fin3olhyy0lln7m2
200
0
100170
548963
2026-06-07T09:22:36Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548963
wikitext
text/x-wiki
{{Pusula|200}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:200]]
40vhwsdan4yehikrslq2l2gvdxyy825
250
0
100171
548964
2026-06-07T09:24:03Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548964
wikitext
text/x-wiki
{{Pusula|250}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:250]]
6ehhw0133ummqjwqqgcjosssapg7tf6
300
0
100172
548965
2026-06-07T09:24:38Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548965
wikitext
text/x-wiki
{{Pusula|300}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:300]]
i27sjtkuqir9c402ko4caw7nlhne2ga
350
0
100173
548966
2026-06-07T09:25:30Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548966
wikitext
text/x-wiki
{{Pusula|350}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:350]]
2524yx8rljevdypjigr2a1rgbjqus6f
400
0
100174
548967
2026-06-07T09:26:54Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548967
wikitext
text/x-wiki
{{Pusula|400}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:400]]
c6s4ub93r4lxvsticn7ph1fr5ex8fc1
450
0
100175
548968
2026-06-07T09:27:42Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548968
wikitext
text/x-wiki
{{Pusula|450}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:450]]
3py0cais5ofsz5y03jw478ou0xjljta
500
0
100176
548969
2026-06-07T09:28:38Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548969
wikitext
text/x-wiki
{{Pusula|500}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:500]]
objl0idrcdd1njym5nvrnvjxpqzipqx
550
0
100177
548970
2026-06-07T09:29:33Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548970
wikitext
text/x-wiki
{{Pusula|550}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:550]]
krpemn0bbggoq1obko6nbdyplc9duzt
650
0
100178
548971
2026-06-07T09:31:07Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548971
wikitext
text/x-wiki
{{Pusula|650}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:650]]
gtzj84q8rw5v0tsyp0apwg5q9185ztx
750
0
100179
548973
2026-06-07T09:33:58Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548973
wikitext
text/x-wiki
{{Pusula|750}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:750]]
0iu6ypvofwglt3kq4zxubz3sidwywro
50
0
100180
548974
2026-06-07T09:39:33Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548974
wikitext
text/x-wiki
{{Pusula|50}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:50]]
k5191w6pf60dsc5b6441p2oafm2qwr7
55
0
100181
548975
2026-06-07T09:40:19Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548975
wikitext
text/x-wiki
{{Pusula|55}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:55]]
1wmq22sj1kv5t1fzlu7jsqbhf60azgt
60
0
100182
548976
2026-06-07T09:41:28Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548976
wikitext
text/x-wiki
{{Pusula|60}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:60]]
j4rar98x1hmzzoj4qbw7ccu8gbrq6cy
65
0
100183
548977
2026-06-07T09:41:53Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548977
wikitext
text/x-wiki
{{Pusula|65}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:65]]
q2ikygel6mlng67w8c1h365i42qum0h
70
0
100184
548978
2026-06-07T09:50:18Z
~2026-33678-44
34068
Ebe zerrekê '{{Pusula|{{Subst:PAGENAME}}}} {{Serra Teqwimi}} == Seramey == === Welat === === Cihan === == Biyayışi == == Merdışi == == Sewbi == {{Portal|Serrename|Tarix}} {{Kontrolê_otoriteyi}} [[Kategoriye:{{Subst:PAGENAMEBASE}}]]' ra pela newiye vıraziye
548978
wikitext
text/x-wiki
{{Pusula|70}}
{{Serra Teqwimi}}
== Seramey ==
=== Welat ===
=== Cihan ===
== Biyayışi ==
== Merdışi ==
== Sewbi ==
{{Portal|Serrename|Tarix}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:70]]
ewfdeezwrn6otyrwo87gwm25taxl64d
Yered
0
100185
548981
2026-06-07T10:35:42Z
~2026-33757-55
34070
Ebe zerrekê '{{Merdumi}} '''Yered''', ehdo newe de piyê [[İdris]] peyğemberi yo. {{Kontrolê_otoriteyi}} [[Kategoriye:İncile de merdumi ]]' ra pela newiye vıraziye
548981
wikitext
text/x-wiki
{{Merdumi}}
'''Yered''', ehdo newe de piyê [[İdris]] peyğemberi yo.
{{Kontrolê_otoriteyi}}
[[Kategoriye:İncile de merdumi ]]
7vtcebd40i4necws3sjz52geft58s81
Mahalalel
0
100186
548982
2026-06-07T10:40:30Z
~2026-33757-55
34070
Ebe zerrekê '{{Merdumi}} '''Mahalalel''', ehdo newe de kalıkê [[İdris]] peyğemberi yo. {{Kontrolê_otoriteyi}} [[Kategoriye:İncile de merdumi ]]' ra pela newiye vıraziye
548982
wikitext
text/x-wiki
{{Merdumi}}
'''Mahalalel''', ehdo newe de kalıkê [[İdris]] peyğemberi yo.
{{Kontrolê_otoriteyi}}
[[Kategoriye:İncile de merdumi ]]
9by63jwwxepc085l8rfosp63fv2ymmg
Kenan (merdum)
0
100187
548983
2026-06-07T10:44:59Z
~2026-33757-55
34070
Ebe zerrekê '{{Merdumi}} '''Kenan''', ehdo kehen de lacê [[Enos]]i yo. {{Kontrolê_otoriteyi}} [[Kategoriye:Torah de merdumi ]]' ra pela newiye vıraziye
548983
wikitext
text/x-wiki
{{Merdumi}}
'''Kenan''', ehdo kehen de lacê [[Enos]]i yo.
{{Kontrolê_otoriteyi}}
[[Kategoriye:Torah de merdumi ]]
syqyo4sglg4jxyas115tfms5e0hncto
Enos
0
100188
548984
2026-06-07T10:47:45Z
~2026-33757-55
34070
Ebe zerrekê '{{Merdumi}} '''Enos''', ehdo kehen de lacê [[Şit]]i yo. {{Kontrolê_otoriteyi}} [[Kategoriye:Torah de merdumi ]]' ra pela newiye vıraziye
548984
wikitext
text/x-wiki
{{Merdumi}}
'''Enos''', ehdo kehen de lacê [[Şit]]i yo.
{{Kontrolê_otoriteyi}}
[[Kategoriye:Torah de merdumi ]]
3tbuy3f3erj5ovm0gar3iyt2r4oaslp
Şit
0
100189
548985
2026-06-07T10:51:10Z
~2026-33757-55
34070
Ebe zerrekê '{{Merdumi}} '''Şit'', ehdo kehen u Qurane de lacê [[Adam]]i yo. {{Kontrolê_otoriteyi}} [[Kategoriye:Torah de merdumi ]] [[Kategoriye:Qurane de merdumi]]' ra pela newiye vıraziye
548985
wikitext
text/x-wiki
{{Merdumi}}
'''Şit'', ehdo kehen u Qurane de lacê [[Adam]]i yo.
{{Kontrolê_otoriteyi}}
[[Kategoriye:Torah de merdumi ]]
[[Kategoriye:Qurane de merdumi]]
hckh6oqo4ekwkd2ob83ml4zfmlaotdu
548986
548985
2026-06-07T10:54:18Z
~2026-33757-55
34070
548986
wikitext
text/x-wiki
{{Merdumi}}
'''Şit'', ehdo kehen u Qurane de lacê [[Adem]]i yo.
{{Kontrolê_otoriteyi}}
[[Kategoriye:Torah de merdumi ]]
[[Kategoriye:Qurane de merdumi]]
hz4he11z4a3ufwr3r61tk8si0lp68dd
Bandırma
0
100190
548988
2026-06-07T10:59:56Z
~2026-33757-55
34070
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548988
wikitext
text/x-wiki
{{Databox}}
'''Bandırma''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Bandırma]]
r4rz7o9n8kcjz5r0qqi5ktgcyzvgw1u
Ayvalık
0
100191
548989
2026-06-07T11:04:02Z
~2026-33757-55
34070
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548989
wikitext
text/x-wiki
{{Databox}}
'''Ayvalık''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Ayvalık]]
moqfd8icm4oa7f45dfd77fglemwoskt
Savaştepe
0
100192
548990
2026-06-07T11:26:27Z
~2026-33651-67
34072
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548990
wikitext
text/x-wiki
{{Databox}}
'''Savaştepe''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Savaştepe]]
qkjxjzg01o91y1s4taobpczdy7pqofw
Gönen
0
100193
548991
2026-06-07T11:26:56Z
~2026-33651-67
34072
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548991
wikitext
text/x-wiki
{{Databox}}
'''Gönen''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Gönen]]
irlnie862a89iw59lnnz4v249z4foen
Susurluk
0
100194
548992
2026-06-07T11:27:21Z
~2026-33651-67
34072
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548992
wikitext
text/x-wiki
{{Databox}}
'''Susurluk''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Susurluk]]
nxled4mx92w5rc2a1ytbgnstfczcxs8
Sındırgı
0
100195
548993
2026-06-07T11:27:54Z
~2026-33651-67
34072
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548993
wikitext
text/x-wiki
{{Databox}}
'''Sındırgı''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Sındırgı]]
nrbdod09qxt4ugrgmroztur1hu48qsj
Havran
0
100196
548994
2026-06-07T11:28:26Z
~2026-33651-67
34072
Ebe zerrekê '{{Databox}} '''{{Subst:PAGENAMEBASE }}''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya. {{Portal|Coğrafya |Tırkiya}} {{Qezê Balıkesiri}} {{Kontrolê_otoriteyi}} [[Kategoriye:Qezê Balıkesiri]] [[Kategoriye:{{subst:PAGENAME }}]]' ra pela newiye vıraziye
548994
wikitext
text/x-wiki
{{Databox}}
'''Havran''', yew qezay u taxa wılayetê [[Balıkesir (wılayet)|Balıkesir]]iya.
{{Portal|Coğrafya |Tırkiya}}
{{Qezê Balıkesiri}}
{{Kontrolê_otoriteyi}}
[[Kategoriye:Qezê Balıkesiri]]
[[Kategoriye:Havran]]
akc33t11civif8wry0m8qvfv4pescr9