Wikipedia
scnwiki
https://scn.wikipedia.org/wiki/P%C3%A0ggina_principali
MediaWiki 1.47.0-wmf.2
first-letter
Mèdia
Spiciali
Discussioni
Utenti
Discussioni utenti
Wikipedia
Discussioni Wikipedia
File
Discussioni file
MediaWiki
Discussioni MediaWiki
Template
Discussioni template
Aiutu
Discussioni aiutu
Catigurìa
Discussioni catigurìa
Purtali
Discussioni purtali
Pruggettu
Discussioni pruggettu
TimedText
TimedText talk
Mòdulu
Discussioni mòdulu
Evento
Discussioni evento
Spillinga
0
3118
782061
753172
2026-05-13T13:05:36Z
GiovanniPen
22308
782061
wikitext
text/x-wiki
{{Cumuni|nomucumuni=Spillinga|nomuufficiali=Sperlinga
|pruvincia=[[Pruvincia di Enna|Enna]]
|superfici=58
|abbitanti=963
|dinsita=17
|cumunilimitrofi=[[Gangi]], [[Nicusia]]
|cap=94010
|prifissutelefonicu=0935
}}
'''Spillinga''' è nu cumuni di 963 abbitanti dâ [[pruvincia di Enna]].
[[File:Sperlinga.jpg|thumb|Nu panuramua dâ cità]]
[[Catigurìa:Cumuni dâ pruvincia di Enna]]
a3yywk0duw19quhvlpguc59vwm246gk
Catanzaru (artìculu 'n calabrisi)
0
8582
782058
749802
2026-05-13T13:02:39Z
GiovanniPen
22308
removed [[Category:Cumuna taliani (Cal)]]; added [[Category:Parrata calabbrisi]] using [[Help:Gadget-HotCat|HotCat]]
782058
wikitext
text/x-wiki
{{Appellu a 'i calabrise}}
{{VariantiCalabbria|artìculu è scrittu 'n calabrisi di Catanzaru (CZ), si stai circannu l'artìculu scrittu 'n sicilianu standard|[[Catanzaru]]}}
{{Cumuni Talianu|
nomucumuni=Catanzaru|
mmaggini=Catanzaru.PNG|
nomuufficiali=Catanzaro|
riggiuni=[[Calabbria]]|
pruvincia=[[Pruvincia di Catanzaru|Catanzaru]] (CZ)|
superfici=111,3|
abbitanti=95.099|
dinsita=855,5|
cumunilimitrofi= [[Borgia (CZ)|Borgia]], [[Garrafa]], [[Jimiglianu]], [[Pentuni]], [[Santu Fruori]], [[Sillia]], [[Settingianu]], [[Sìmmari]], [[Triuolu]], [[Schidaci]] |
cap=88100|
prifissutelefonicu=+0961
}}
'''Catanzaru''' (o '''Catanzharu''') esta capuluogu da Regiona e da Provincia, ava 95.000 abbitanti ed esta u secundu comuna Calabbrisa comu popolaziona. Esta conosciuto puru comu "Città ntra i du Mari" o "Città d'i tri Munti", esta n'importanta centru turisticu estivu e 'nvernala. Esta ntô menzu e n'area metropolitana e 180.000 abitanti chi vacia da i paisi costieri da [[Sellia Marina]] a [[Soveratu]] e ncunu paisa d'a [[Sila]] comu [[Jimiglianu]] e [[Pentuni]].
== Posiziona ==
Esta ntô menzu do Golfu e [[Schidaci]] ntê l'istimu e Catanzaru, duva sulu 35 km separanu u [[mara Jioniu]] da u [[mara Tirrenu]]. U territoriu comprenda a zona da marina cu nu portu pescherecciu e i munti da [[Sila]] darretu. U centru storicu esta costruitu supa tri munti: do Vescuvatu o do Duomu, e San Trifone o e Santu Roccu e do San Giovanni (chiamatu puru u Castellu) ed esta circondatu da du hjiareddi nmenzu dei quali si stenda u restu da città finu alu mara.
A parta e Catanzaru cchiù vicina alu mara esta Catanzaro Marina ('a Marina o Catanzaru Lidu), nu quartiera assai grossu cchi prima era quasti staccatu da 'a città. De l'anni 70 a mò nu saccu e quartieri cchì stacìanu tra 'a Marina e 'a città (comu Santa Maria, Barone, 'u Corvu e Pistoia, crisciru e s'allargaru, e quindi mò jendu e Catanzaru finu ala Marina, c'esta tutta 'na serie e casi, praticamenta senza zzoni libberi.
== Storia ==
'A stora da 'a città e Catanzaru esta na storia assai antica, infatti sa città a fundaru i Bizantini, precisamenta dui generali Bizantini ca secundu a leggenda si chiamavanu Cattaro e Zaro (IX secolu). U posto duva nescìu sta città esta u stessu e na precedente colonia greca. I generali bizantini, sempre secundu 'a leggenda, portarunu i ggenti chi stacìanu 'nta a zona e Scolacium, prima subbra 'u Zarapotamu (chi era 'a zona duva oja c'esta Santa Maria), e poi subbra u monta Trivonà, duva c'era na fortezza militara.
Secundu certi ipotesi, sta fortezza c'era già ali tempi da a colonia greca. Sa scelta e portare a città subbra nu monta, a ficiaru pecchì, a chiddri tempi, era assai frequenta ca i pirati saraceni facìanu incurziona 'nta a zona vicina alu mara.
Facendo costruira 'a città subbra nu monta, si potìa megghju controllara u mara e dara l'allarma 'n casu e n'incurziona.
[[Catigurìa:Parrata calabbrisi]]
78mah1khqmq86hqzulb5whbvhb4l4ld
Campiunatu munniali di palluni
0
10917
782064
741089
2026-05-13T13:45:01Z
Davide2025
48295
Nazione vincitrice Coppa del Mondo FIFA 2022.
782064
wikitext
text/x-wiki
Lu '''Campiunatu munniali di palluni''' (ufficialmenti '''FIFA World Cup''', ovveru '''Coppa dû munnu FIFA''') veni urganizzatu ogni quattru anni dâ [[FIFA]] (''Fédération Internationale de Football Association'') e è una dî cchiù mpurtanti campiunati spurtivi dû munnu.
[[File:FIFA World Cup wordmark.svg|thumb|Lu logu dû Campiunatu.]]
==Storia==
Lu campiunatu veni cuntrastatu dî squatri nazziunali màschili chi fannu parti dâ FIFA (lu cunzigghiu d'amministrazzioni cchiù àutu). Lu primu campiunatu abbinìu ntô [[1930]] e poi cuntinuannu ogni quattru anni (ecettu lu [[1942]] e lu [[1946]] pû fattu dâ [[Secunna guerra munniali]]). Però, si tratta cchiutostu d'un abbinimentu cuntìnuu picchì li partiti di qualificazzioni vennu jucati duranti li tri anni prima dû campiunatu veru e propiu.
Ntô [[1991]], la FIFA cci agghiuncìu nu campiunatu di fìmmini siparatu.
Nta lu campiunatu d'òmini (zoè la fasa finali) partìcipanu 48 squatri nazziunali chi si cuntràstanu nta nu misi nn'un paisi ospitanti già numinatu. Lu nzemi di tutti sti partiti cumprenni l'abbinimentu cchiù vistu dû munnu ('n tèrmini telivisivi).
Nni li 22 campiunati già jucati, sulu ottu paisi hannu vinciutu la finali (voldiri l'ùrtima partita dû campiunatu chi ditèrmina lu vincituri). L'Argintina, ca vinciu l'urtima edizzioni dû campiunatu uspitata di lu [[Qatar]], è lu campiuni 'n càrica e lu Brasili iè la nazzioni chi l'havi vinciutu cchiossai (cincu campiunati). Poi l'Italia la vinciu quattru voti: tra l'urtimi edizzioni, lu campiunatu dâ Girmania accuminzau lu [[9 di giugnu]] dû [[2006]] e s'accapau lu [[9 di giugnettu]] câ vittoria di l'[[nazziunali italiana di palluni|Italia]].
== Risurtati dî campiunati passati ==
{| border=1 style="border-collapse:collapse; font-size:90%;" cellpadding=3 cellspacing=0 width=100%
|- bgcolor=#C1D8FF
!rowspan=2 width=5%|Annu
!rowspan=2 width=10%|Ospitanti
|width=1% rowspan=35 bgcolor=ffffff|
!colspan=3|Finali
|width=1% rowspan=5 bgcolor=ffffff|
!colspan=3|Finali terzu e quartu postu
|- bgcolor=#EFEFEF
!width=15%|Vincituri
!width=8%|Risurtatu
!width=15%|2° postu
!width=15%|3° postu
!width=8%|Risurtatu
!width=15%|4° postu
|- align=center bgcolor=#F5FAFF
|[[1930]]<br />''[[Campiunatu munniali FIFA 1930|Dittagghi]]''
|[[Uruguai]]
|[[File:Flag of Uruguay.svg|50px]]<br />'''[[Nazziunali di palluni uruguajana|Uruguai]]'''
|'''4 - 2'''
|[[File:Flag of Argentina.svg|50px]]<br />[[Nazziunali di palluni argintina|Argintina]]
| colspan="3" |
{| style="background-color: transparent;"
|[[File:US flag 48 stars.svg|50px]]
|rowspan="2" width="20px" align="center"| /
|[[File:Flag of SFR Yugoslavia.svg|50px]]
|rowspan="2" width="20px" align="right"|<sup>('''[[#1|1]]''')</sup>
|-
|[[Nazziunali di palluni miricana|USA]]
|[[Nazziunali di palluni jugoslava|Jugoslavia]]
|}
|- align=center bgcolor=#D0E7FF
|[[1934]]<br />''[[Campiunatu munniali FIFA 1934|Dittagghi]]''
|[[Italia]]
|[[File:Flag of Italy (1861-1946).svg|50px]]<br />'''[[Nazziunali di palluni taliana|Italia]]'''
|'''2 - 1'''<br />(Tempu supplimentariu)
|[[File:Flag of the Czech Republic.svg|50px]]<br />[[Nazziunali di palluni cecosluvacca|Cecosluvacchia]]
|[[File:Flag of the German Empire.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania]]
|'''3 - 2'''
|[[File:Flag of Austria.svg|50px]]<br />[[Nazziunali di palluni austriaca|Austria]]
|- align=center bgcolor=#F5FAFF
|[[1938]]<br />''[[Campiunatu munniali FIFA 1938|Dittagghi]]''
|[[Francia]]
|[[File:Flag of Italy (1861-1946).svg|50px]]<br />'''[[Nazziunali di palluni taliana|Italia]]'''
|'''4 - 2'''
|[[File:Flag of Hungary.svg|50px]]<br />[[Nazziunali di palluni unghirisa|Ungarìa]]
|[[File:Flag of Brazil.svg|50px]]<br />[[Nazziunali di palluni brasiliana|Brasili]]
|'''4 - 2'''
|[[File:Flag of Sweden.svg|50px]]<br />[[Nazziunali di palluni svidisi|Svezzia]]
|- align=center bgcolor=#D0E7FF
|[[1942]]
| ----
|colspan=8|'''NUN DISPUTATA'''<sup>('''[[#2|2]]''')</sup>
|- align=center bgcolor=#F5FAFF
|[[1946]]
| ----
|colspan=8|'''NUN DISPUTATA'''
|- align=center bgcolor=#D0E7FF
|[[1950]]<br />''[[Campiunatu munniali FIFA 1950|Dittagghi]]''
|[[Brasili]]
|[[File:Flag of Uruguay.svg|50px]]<br />'''[[Nazziunali di palluni uruguajana|Uruguai]]'''
|'''2-1'''<sup>('''[[#3|3]]''')</sup>
|[[File:Flag of Brazil.svg|50px]]<br />[[Nazziunali di palluni brasiliana|Brasili]]
|rowspan=28 bgcolor=ffffff|
|[[File:Flag of Sweden.svg|50px]]<br />[[Nazziunali di palluni svidisa|Svezzia]]
|'''n/a'''<sup>('''[[#3|3]]''')</sup>
|[[File:Flag of Spain.svg|50px]]<br />[[Nazziunali di palluni spagnola|Spagna]]
|- align=center bgcolor=#F5FAFF
|[[1954]]<br />''[[Campiunatu munniali FIFA 1954|Dittagghi]]''
|[[Svìzzira]]
|[[File:Flag of Germany.svg|50px]]<br />'''[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]'''
|'''3 - 2'''
|[[File:Flag of Hungary.svg|50px]]<br />[[Nazziunali di palluni ungarisa|Ungarìa]]
|[[File:Flag of Austria.svg|50px]]<br />[[Nazziunali di palluni austriaca|Austria]]
|'''3 - 1'''
|[[File:Flag of Uruguay.svg|50px]]<br />[[Nazziunali di palluni uruguajana|Uruguai]]
|- align=center bgcolor=#D0E7FF
|[[1958]]<br />''[[Campiunatu munniali FIFA 1958|Dittagghi]]''
|[[Svezzia]]
|[[File:Flag of Brazil.svg|50px]]<br />'''[[Nazziunali di palluni brasiliana|Brasili]]'''
|'''5 - 2'''
|[[File:Flag of Sweden.svg|50px]]<br />[[Nazziunali di palluni svidisa|Svezzia]]
|[[File:Flag of France.svg|50px]]<br />[[Nazziunali di palluni francisa|Francia]]
|'''6 - 3'''
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]
|- align=center bgcolor=#F5FAFF
|[[1962]]<br />''[[Campiunatu munniali FIFA 1962|Dittagghi]]''
|[[Cili]]
|[[File:Flag of Brazil.svg|50px]]<br />'''[[Nazziunali di palluni brasiliana|Brasili]]'''
|'''3 - 1'''
|[[File:Flag of the Czech Republic.svg|50px]]<br />[[Nazziunali di palluni cecosluvacca|Cecosluvacchia]]
|[[File:Flag of Chile.svg|50px]]<br />[[Nazziunali di palluni cilena|Cili]]
|'''1 - 0'''
|[[File:Flag of SFR Yugoslavia.svg|50px]]<br />[[Nazziunali di palluni jugoslava|Jugoslavia]]
|- align=center bgcolor=#D0E7FF
|[[1966]]<br />''[[Campiunatu munniali FIFA 1966|Dittagghi]]''
|[[Ngriterra]]
|[[File:Flag of England.svg|50px]]<br />'''[[Nazziunali di palluni ngrisa|Ngriterra]]'''
|'''4 - 2'''<br /> (Tempu supplimintariu)
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]
|[[File:Flag of Portugal.svg|50px]]<br />[[Nazziunali di palluni portughisa|Portugallu]]
|'''2 - 1'''
|[[File:Flag of the Soviet Union.svg|50px]]<br />[[Nazziunali di palluni russa|Unioni suviètica]]
|- align=center bgcolor=#F5FAFF
|[[1970]]<br />''[[Campiunatu munniali FIFA 1970|Dittagghi]]''
|[[Mèssicu]]
|[[File:Flag of Brazil.svg|50px]]<br />'''[[Nazziunali di palluni brasiliana|Brasili]]'''
|'''4 - 1'''
|[[File:Flag of Italy.svg|50px]]<br />[[Nazziunali di palluni taliana|Italia]]
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]
|'''1 - 0'''
|[[File:Flag of Uruguay.svg|50px]]<br />[[Nazziunali di palluni uruguajana|Uruguai]]
|- align=center bgcolor=#D0E7FF
|[[1974]]<br />''[[Campiunatu munniali FIFA 1974|Dittagghi]]''
|[[Girmania Ovest]]
|[[File:Flag of Germany.svg|50px]]<br />'''[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]'''
|'''2 - 1'''
|[[File:Flag of the Netherlands.svg|50px]]<br />[[Nazziunali di palluni ulannisa|Ulanna]]
|[[File:Flag of Poland.svg|50px]]<br />[[Nazziunali di palluni pulacca|Pulonia]]
|'''1 - 0'''
|[[File:Flag of Brazil.svg|50px]]<br />[[Nazziunali di palluni brasiliana|Brasili]]
|- align=center bgcolor=#F5FAFF
|[[1978]]<br />''[[Campiunatu munniali FIFA 1978|Dittagghi]]''
|[[Argintina]]
|[[File:Flag of Argentina.svg|50px]]<br />'''[[Nazziunali di palluni argintina|Argintina]]'''
|'''3 - 1'''<br /> (Tempu supplimintariu)
|[[File:Flag of the Netherlands.svg|50px]]<br />[[Nazziunali di palluni ulannisa|Ulanna]]
|[[File:Flag of Brazil.svg|50px]]<br />[[Nazziunali di palluni brasiliana|Brasili]]
|'''2 - 1'''
|[[File:Flag of Italy.svg|50px]]<br />[[Nazziunali di palluni taliana|Italia]]
|- align=center bgcolor=#D0E7FF
|[[1982]]<br />''[[Campiunatu munniali FIFA 1982|Dittagghi]]''
|[[Spagna]]
|[[File:Flag of Italy.svg|50px]]<br />'''[[Nazziunali di palluni taliana|Italia]]'''
|'''3 - 1'''
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]
|[[File:Flag of Poland.svg|50px]]<br />[[Nazziunali di palluni pulacca|Pulonia]]
|'''3 - 2'''
|[[File:Flag of France.svg|50px]]<br />[[Nazziunali di palluni francisa|Francia]]
|- align=center bgcolor=#F5FAFF
|[[1986]]<br />''[[Campiunatu munniali FIFA 1986|Dittagghi]]''
|[[Mèssicu]]
|[[File:Flag of Argentina.svg|50px]]<br />'''[[Nazziunali di palluni argintina|Argintina]]'''
|'''3 - 2'''
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]
|[[File:Flag of France.svg|50px]]<br />[[Nazziunali di palluni francisa|Francia]]
|'''4 - 2'''<br />[[Tempi supplementari|dts]]
|[[File:Flag of Belgium.svg|50px]]<br />[[Nazziunali di palluni belga|Belgiu]]
|- align=center bgcolor=#D0E7FF
|[[1990]]<br />''[[Campiunatu munniali FIFA 1990|Dittagghi]]''
|[[Italia]]
|[[File:Flag of Germany.svg|50px]]<br />'''[[Nazziunali di palluni tudisca|Girmania di l'Ovest]]'''
|'''1 - 0'''
|[[File:Flag of Argentina.svg|50px]]<br />[[Nazziunali di palluni argintina|Argintina]]
|[[File:Flag of Italy.svg|50px]]<br />[[Nazziunali di palluni taliana|Italia]]
|'''2 - 1'''
|[[File:Flag of England.svg|50px]]<br />[[Nazziunali di palluni ngrisa|Ngrilterra]]
|- align=center bgcolor=#F5FAFF
|[[1994]]<br />''[[Campiunatu munniali FIFA 1994|Dittagghi]]''
|[[USA]]
|[[File:Flag of Brazil.svg|50px]]<br />'''[[Nazziunali di palluni brasiliana|Brasili]]'''
|'''0 - 0''' [[Tempi supplementari|dts]]<br />'''(3 - 2)''' (Rigura)
|[[File:Flag of Italy.svg|50px]]<br />[[Nazziunali di palluni taliana|Italia]]
|[[File:Flag of Sweden.svg|50px]]<br />[[Nazziunali di palluni svidisa|Svezzia]]
|'''4 - 0'''
|[[File:Flag of Bulgaria.svg|50px]]<br />[[Nazziunali di palluni bulgara|Bulgaria]]
|- align=center bgcolor=#D0E7FF
|[[1998]]<br />''[[Campiunatu munniali FIFA 1998|Dittagghi]]''
|[[Francia]]
|[[File:Flag of France.svg|50px]]<br />'''[[Nazziunali di palluni francisa|Francia]]'''
|'''3 - 0'''
|[[File:Flag of Brazil.svg|50px]]<br />[[Nazziunali di palluni brasiliana|Brasili]]
|[[File:Flag of Croatia.svg|50px]]<br />[[Nazziunali di palluni croata|Croazzia]]
|'''2 - 1'''
|[[File:Flag of the Netherlands.svg|50px]]<br />[[Nazziunali di palluni ulannisa|Ulanna]]
|- align=center bgcolor=#F5FAFF
|[[2002]]<br />''[[Campiunatu munniali FIFA 2002|Dittagghi]]''
|[[Corea dû Sud]] e [[Giappuni]]
|[[File:Flag of Brazil.svg|50px]]<br />'''[[Nazziunali di palluni brasiliana|Brasili]]'''
|'''2 - 0'''
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania]]
|[[File:Flag of Turkey.svg|50px]]<br />[[Nazziunali di palluni turca|Turchìa]]
|'''3 - 2'''
|[[File:Flag of South Korea.svg|50px]]<br />[[Nazziunali di palluni sudcoreana|Corea dû Sud]]
|- align=center bgcolor=#D0E7FF
|[[2006]]<br />''[[Campiunatu munniali FIFA 2006|Dittagghi]]''
|[[Girmania]]
|[[File:Flag of Italy.svg|50px]]<br />'''[[Nazziunali di palluni taliana|Italia]]'''
|'''1 - 1''' [[Tempi supplementari|dts]]<br />'''(5 - 3)''' (Rigura)
|[[File:Flag of France.svg|50px]]<br />[[Nazziunali di palluni francisa|Francia]]
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania]]
|'''3 - 1'''
|[[File:Flag of Portugal.svg|50px]]<br />[[Nazziunali di palluni sudcoreana|Portugallu]]
|- align=center bgcolor=#F5FAFF
|[[2010]]<br />''[[Campiunatu munniali FIFA 2010|Dittagghi]]''
|[[Àfrica dû Sud]]
||[[File:Flag of Spain.svg|50px]]<br />'''[[Nazziunali di palluni spagnola|Spagna]]'''
|'''1 - 0''' [[Tempi supplementari|dts]]<br />'''
|[[File:Flag of the Netherlands.svg|50px]]<br />[[Nazziunali di palluni ulannisa|Ulanna]]
|[[File:Flag of Germany.svg|50px]]<br />[[Nazziunali di palluni tudisca|Girmania]]
|'''3 - 2'''
|[[File:Flag of Uruguay.svg|50px]]<br />[[Nazziunali di palluni uruguajana|Uruguai]]
|- align=center bgcolor=#D0E7FF
|[[2014]]<br />''[[Campiunatu munniali FIFA 2014|Dittagghi]]''
|[[Brasili]]
||[[File:Flag of Germany.svg|50px]]<br />'''[[Nazziunali di palluni tudisca|Girmania]]'''
|'''1 - 0''' [[Tempi supplementari|dts]]<br />'''
|[[File:Flag of Argentina.svg|50px]]<br />[[Nazziunali di palluni argintina|Argintina]]
|[[File:Flag of the Netherlands.svg|50px]]<br />[[Nazziunali di palluni ulannisa|Ulanna]]
|'''3 - 0'''
|[[File:Flag of Brazil.svg|50px]]<br />'''[[Nazziunali di palluni brasiliana|Brasili]]'''
|- align=center bgcolor=#F5FAFF
|[[2018]]<br />''[[Campiunatu munniali FIFA 2018|Dittagghi]]''
|[[Russia]]
|[[File:Flag of France.svg|50px]]<br />[[Nazziunali di palluni francisa|'''Francia''']]
|'''4 - 2'''
|[[File:Flag of Croatia.svg|50px]]<br />[[Nazziunali di palluni croata|Croazzia]]
|[[File:Flag of Belgium.svg|50px]]<br />[[Nazziunali di palluni belga|Belgiu]]
|'''2 - 0'''
|[[File:Flag of England.svg|50px]]<br />'''[[Nazziunali di palluni ngrisa|Ngriterra]]'''
|- align=center bgcolor=#D0E7FF
|[[2022]]<br />''[[Campiunatu munniali FIFA 2022|Dittagghi]]''
|[[Qatar]]
|[[File:Flag of Argentina.svg|50px]]<br />[[Nazziunali di palluni argintina|'''Argintina''']]
|'''3 - 3''' [[Tempi supplementari|dts]]<br />'''(4 - 2)''' (Rigura)
|[[File:Flag of France.svg|50px]]<br />[[Nazziunali di palluni francisa|Francia]]
|[[File:Flag of Croatia.svg|50px]]<br />[[Nazziunali di palluni croata|Croazzia]]
|'''2 - 1'''
|[[File:Flag of Morocco.svg|50px]]<br />[[Nazziunali di palluni marucchina|Maroccu]]
|- align=center bgcolor=#F5FAFF
|[[2026]]<br />''[[Campiunatu munniali FIFA 2026|Dittagghi]]''
|[[USA]], [[Mèssicu]] e [[Canadà]]
|
|
|
|
|
|
|}
{| class="wikitable"
!Vincituri
!Campiunati
!Annu
|-
|{{bandiera|BRA}} [[Brasili]]
| align="center" |'''5'''
|1958, 1962, 1970, 1994, 2002
|-
|{{bandiera|DEU}} [[Girmania]]
| align="center" |'''4'''
|1954, 1974, 1990, 2014
|-
|{{bandiera|ITA}} [[Italia]]
| align="center" |'''4'''
|1934, 1938, 1982, 2006
|-
|{{bandiera|ARG}} [[Argintina]]
| align="center" |'''3'''
|1978, 1986, 2022
|-
|{{bandiera|FRA}} [[Francia]]
| align="center" |'''2'''
|1998, 2018
|-
|{{bandiera|URY}} [[Uruguai]]
| align="center" |'''2'''
|1930, 1950
|-
|{{bandiera|GBR}} [[Nglaterra]]
| align="center" |'''1'''
|1966
|-
|{{bandiera|ESP}} [[Spagna]]
| align="center" |'''1'''
|2010
|}
== Talìa puru ==
* [[Giruna pî Munniali di palluni dû 2006]]
* [[Campiunatu munniali FIFA 2026]]
* [[Classifica di li squatri di palluni pi nummuro di jucatura campiuna dû munnu cu li nazziunala]]
* [[Nazziunala di palluni campiuna dû munnu]]
{{sport}}
[[Catigurìa:Palluni]]
[[Catigurìa:Campiunati]]
3ybcxlsf3esgun4kqhnf6scbtfm5mno
Gaetanu Donizzetti
0
27351
782069
662907
2026-05-14T04:16:08Z
~2026-29005-02
50967
782069
wikitext
text/x-wiki
{{Mùsica}}
'''Gaetanu Donizzetti''' ([[Bergamu]], [[29 di nuvèmmiru]] [[1797]] - [[8 di aprili]] [[1848]]) fu nu cèlibbri mùsicista di [[òpira]]. Tra li sò òpiri cchiù canusciuti ci sunnu la ''Lucia di Lammermour'', l' ''Elisir d'Amuri'' e lu ''Don Pasquali''.
[[File:Gaetano_Donizetti_(portrait_by_Giuseppe_Rillosi).jpg|thumb|left|300px|Nu ritrattu di Donizzetti]]
[[Catigurìa:Biografìi|Donizzetti, Gaetanu]]
[[Catigurìa:Mùsica|Dinizzetti, Gaetanu]]
p0lcz4neo78e7od9vuoyp6vx7oak0gu
I Cujjienti (Catanzaru)
0
29424
782057
698060
2026-05-13T13:02:31Z
GiovanniPen
22308
782057
wikitext
text/x-wiki
{{Appellu a 'i calabrise}}
{{Cumuni|nomucumuni = I Cujjienti|nomuufficiali = Conflenti
|pruvincia = [[Pruvincia di Catanzaru|Catanzaru]] (CZ)
|superfici = 31,00
|abbitanti = 1.677
|dinsita = 56
|cumunilimitrofi = [[Dicollatura]], [[Lamezia]], [[Marturanu (CZ)|Marturanu]] (Anticu), [[Marturanu Lombardu]], [[Motta Santa Lucìa]], [[Petrania]]
|cap = 88040
|prifissutelefonicu = 0968
}}
'''I Cujjienti''' (o '''I Cujjhienti''') è nu cumuni di 1.677 abbitanti dâ pruvincia di [[Catanzaru]].
{{Purtalicalabbria}}
[[Catigurìa:Cumuna dâ pruvincia di Catanzaru]]
5i0h3bshjre2cmsqn30d0f53l4gw471
San Feli
0
39515
782055
781878
2026-05-13T12:58:50Z
GiovanniPen
22308
782055
wikitext
text/x-wiki
'''San Feli''' è nu cumuni di 3546 abbitanti dâ [[pruvincia di Putenza]].
[[File:San Fele Vista Panoramica.jpg|thumb]]
== Lijami di fora ==
* https://www.comune.sanfele.pz.it/
{{pruvincia di Putenza}}
25mu2n4f69zb4o3w3gf0tswlvylnfe4
782056
782055
2026-05-13T12:59:18Z
GiovanniPen
22308
added [[Category:Cumuna taliani]] using [[Help:Gadget-HotCat|HotCat]]
782056
wikitext
text/x-wiki
'''San Feli''' è nu cumuni di 3546 abbitanti dâ [[pruvincia di Putenza]].
[[File:San Fele Vista Panoramica.jpg|thumb]]
== Lijami di fora ==
* https://www.comune.sanfele.pz.it/
{{pruvincia di Putenza}}
[[Catigurìa:Cumuna taliani]]
p2x6rjkax97wjycflwe57tcwjh9xaiz
MediaWiki:Vector.css
8
48596
782062
778204
2026-05-13T13:05:41Z
Melos
856
+abstract
782062
css
text/css
/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Vector */
/* <pre> */
/* Don't display some stuff on the main page */
body.page-Pàggina_principali #deleteconfirm,
body.page-Pàggina_principali #t-cite,
body.page-Pàggina_principali #footer-info-lastmod,
body.page-Pàggina_principali #siteSub,
body.page-Pàggina_principali #contentSub,
body.page-Pàggina_principali h1.firstHeading {
display: none !important;
}
body.page-Pàggina_principali #mp-topbanner {
margin-top: 0 !important;
}
/* Icone altri progetti in barra strumenti */
li.wb-otherproject-link {
background-repeat: no-repeat;
background-position: left center;
}
#p-wikibase-otherprojects li.wb-otherproject-link {
padding-left: 20px;
}
li.wb-otherproject-commons {
background-image: url("//upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg");
background-size: 16px 22px;
}
li.wb-otherproject-wiktionary {
background-image: url("//upload.wikimedia.org/wikipedia/commons/f/f9/Wiktionary_small.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikibooks {
background-image: url("//upload.wikimedia.org/wikipedia/commons/f/fa/Wikibooks-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikiquote {
background-image: url("//upload.wikimedia.org/wikipedia/commons/f/fa/Wikiquote-logo.svg");
background-size: 17px 17px;
}
li.wb-otherproject-wikisource,
li.wb-otherproject-sources {
background-image: url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg");
background-size: 16px 17px;
}
li.wb-otherproject-wikinews {
background-image: url("//upload.wikimedia.org/wikipedia/commons/c/c8/Wikinews_waves_Left.svg");
background-size: 16px 16px;
}
li.wb-otherproject-species {
background-image: url("//upload.wikimedia.org/wikipedia/commons/d/df/Wikispecies-logo.svg");
background-size: 16px 19px;
}
li.wb-otherproject-wikivoyage {
background-image: url("//upload.wikimedia.org/wikipedia/commons/8/8a/Wikivoyage-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikiversity {
background-image: url("//upload.wikimedia.org/wikipedia/commons/9/91/Wikiversity-logo.svg");
background-size: 16px 13px;
}
li.wb-otherproject-wikidata,
li.wb-otherproject-wikibase-dataitem {
background-image: url("//upload.wikimedia.org/wikipedia/commons/4/4a/Wikidata_Favicon_color.svg");
background-size: 15px 15px;
}
li.wb-otherproject-meta {
background-image: url("//upload.wikimedia.org/wikipedia/commons/7/75/Wikimedia_Community_Logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-incubator {
background-image: url("//upload.wikimedia.org/wikipedia/commons/e/e3/Incubator-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-mediawiki {
background-image: url("//upload.wikimedia.org/wikipedia/commons/c/c6/MediaWiki-2020-small-icon.svg");
background-size: 16px 16px;
}
li.wb-otherproject-foundation {
background-image: url("//upload.wikimedia.org/wikipedia/commons/8/8b/Wikimedia-logo_black.svg");
background-size: 16px 16px;
}
li.wb-otherproject-outreach {
background-image: url("//upload.wikimedia.org/wikipedia/commons/8/81/Wikimedia-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikifunctions {
background-image: url("//upload.wikimedia.org/wikipedia/commons/0/0c/Wikifunctions-logo.svg");
background-size: 16px 17px;
}
li.wb-otherproject-wikimania {
background-image: url("//upload.wikimedia.org/wikipedia/commons/5/57/Wikimania.svg");
background-size: 16px 17px;
}
li.wb-otherproject-abstract {
background-image: url("//upload.wikimedia.org/wikipedia/commons/c/c5/Abstract-Wikipedia-favicon.svg");
background-size: 16px 17px;
}
/* </pre> */
jj292zln3j5awxlakvbosgpogo35mqb
Triesen
0
60982
782065
706395
2026-05-13T15:26:37Z
-wuppertaler
50904
photo added
782065
wikitext
text/x-wiki
[[File:View of Triesen.jpg|thumb]]
'''Triesen''' è na citati dû [[Liechtenstein]] e havi circa 4 827 abbitanti.
{{Commonscat}}
{{Comuni dû Liechtenstein}}
[[Catigurìa:Cumuna dû Liechtenstein]]
1jyvzh5imqsg4qhf1uuor08x6wc5cid
MediaWiki:Vector-2022.css
8
67088
782063
778203
2026-05-13T13:27:28Z
Melos
856
+abstract
782063
css
text/css
/* Icone progetti barra laterale altri progetti */
li.wb-otherproject-link {
background-repeat: no-repeat;
background-position: left center;
}
#p-wikibase-otherprojects li.wb-otherproject-link {
padding-left: 20px;
}
li.wb-otherproject-commons {
background-image: url("//upload.wikimedia.org/wikipedia/commons/4/4a/Commons-logo.svg");
background-size: 16px 22px;
}
li.wb-otherproject-wiktionary {
background-image: url("//upload.wikimedia.org/wikipedia/commons/f/f9/Wiktionary_small.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikibooks {
background-image: url("//upload.wikimedia.org/wikipedia/commons/f/fa/Wikibooks-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikiquote {
background-image: url("//upload.wikimedia.org/wikipedia/commons/f/fa/Wikiquote-logo.svg");
background-size: 17px 17px;
}
li.wb-otherproject-wikisource,
li.wb-otherproject-sources {
background-image: url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg");
background-size: 16px 17px;
}
li.wb-otherproject-wikinews {
background-image: url("//upload.wikimedia.org/wikipedia/commons/c/c8/Wikinews_waves_Left.svg");
background-size: 16px 16px;
}
li.wb-otherproject-species {
background-image: url("//upload.wikimedia.org/wikipedia/commons/d/df/Wikispecies-logo.svg");
background-size: 16px 19px;
}
li.wb-otherproject-wikivoyage {
background-image: url("//upload.wikimedia.org/wikipedia/commons/8/8a/Wikivoyage-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikiversity {
background-image: url("//upload.wikimedia.org/wikipedia/commons/9/91/Wikiversity-logo.svg");
background-size: 16px 13px;
}
li.wb-otherproject-wikidata,
li.wb-otherproject-wikibase-dataitem {
background-image: url("//upload.wikimedia.org/wikipedia/commons/4/4a/Wikidata_Favicon_color.svg");
background-size: 15px 15px;
}
li.wb-otherproject-meta {
background-image: url("//upload.wikimedia.org/wikipedia/commons/7/75/Wikimedia_Community_Logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-incubator {
background-image: url("//upload.wikimedia.org/wikipedia/commons/e/e3/Incubator-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-mediawiki {
background-image: url("//upload.wikimedia.org/wikipedia/commons/c/c6/MediaWiki-2020-small-icon.svg");
background-size: 16px 16px;
}
li.wb-otherproject-foundation {
background-image: url("//upload.wikimedia.org/wikipedia/commons/8/8b/Wikimedia-logo_black.svg");
background-size: 16px 16px;
}
li.wb-otherproject-outreach {
background-image: url("//upload.wikimedia.org/wikipedia/commons/8/81/Wikimedia-logo.svg");
background-size: 16px 16px;
}
li.wb-otherproject-wikifunctions {
background-image: url("//upload.wikimedia.org/wikipedia/commons/0/0c/Wikifunctions-logo.svg");
background-size: 16px 17px;
}
li.wb-otherproject-wikimania {
background-image: url("//upload.wikimedia.org/wikipedia/commons/5/57/Wikimania.svg");
background-size: 16px 17px;
}
li.wb-otherproject-abstract {
background-image: url("//upload.wikimedia.org/wikipedia/commons/c/c5/Abstract-Wikipedia-favicon.svg");
background-size: 16px 17px;
}
lh410on1chz6aw8e7gqiqernu7c6duf
Mòdulu:Coord
828
67414
782059
782028
2026-05-13T13:03:58Z
GiovanniPen
22308
fix traduzione stringa d'errore
782059
Scribunto
text/plain
--[[
* Mòdulu ca 'mplementa lu template Coord.
]]
require('strict')
local mWikidata = require('Mòdulu:Wikidata')
local cfg = mw.loadData('Mòdulu:Coord/Configurazione')
local errorCategory = '[[Catigurìa:Errori di compilazione del template Coord]]'
-- =============================================================================
-- Funzioni di utilità
-- =============================================================================
-- Error handler per xpcall, formatta l'errore.
--
-- @param {string} msg
-- @return {string}
local function errhandler(msg)
local cat = mw.title.getCurrentTitle().namespace == 0 and errorCategory or ''
return string.format('<div style="color:red">Lu template {{Coord}} truvò na picca di sbagghi ' ..
'([[Template:Coord|struzzioni]]):\n%s</div>%s', msg, cat)
end
-- Restituisce lu nùmmuru arrotondato al nùmmuru di cifre decimali richiesto.
-- http://lua-users.org/wiki/SimpleRound
--
-- @param {number} num
-- @param {number} idp
-- @return {number}
local function round(num, idp)
local mult = 10^(idp or 0)
return math.floor(num * mult + 0.5) / mult
end
-- Restituisce la stringa "0 + nùmmuru" quannu lu nùmmuru è di una sola cifra, altrimenti lo stesso nùmmuru.
--
-- @param {number} num
-- @return {string}
local function padleft0(num)
return (num < 10 and '0' or '') .. num
end
-- Converte un nùmmuru in stringa senza usare la notazione scientifica, esempio tostring(0.00001).
--
-- @param {number} num
-- @return {string}
local function numberToString(num)
-- la parentesi () extra serve per non restituire anche il gsub.count
return (string.format('%f', num):gsub('%.?0+$', ''))
end
-- Parsifica il parametro display e restituisce una table con chiavi inline, title e debug.
--
-- @param {table} args
-- @return {table}
local function getDisplay(args)
return {
inline = not args.display or args.display == 'inline' or args.display == 'inline,title',
title = args.display == 'title' or args.display == 'inline,title',
debug = args.display == 'debug'
}
end
local function getZoom( extraparams )
local scale = extraparams:match( '%f[%w]scale: ?(%d+)' )
if scale then
return math.floor(math.log10( 5 / tonumber( scale ) ) * 3 + 25)
end
local extraType = extraparams:match( '%f[%w]type: ?(%w+)' )
if extraType then
local zoomType = {
country = 5,
state = 6,
adm1st = 7,
adm2nd = 8,
city = 9,
isle = 10,
mountain = 10,
waterbody = 10,
airport = 12,
landmark = 13,
}
return zoomType[ extraType ]
end
return 13
end
-- Legge i parametri passati al mòdulu.
--
-- @param {table} frame
-- @return {table}
local function getArgs(frame)
local args = {}
-- copia i parametri ricevuti, eccetto quelli con nome valorizzati a stringa vuota
for k, v in pairs(frame:getParent().args) do
if v ~= '' or tonumber(k) then
args[k] = string.gsub(v, '^%s*(.-)%s*$', '%1')
end
end
-- retrocompatibilità con una funzionalità nascosta del precedente template:
-- ignorava qualunque parametro posizionale vuoto dopo longitudine e parametri geohack
for i = #args, 1, -1 do
if args[i] == '' then
table.remove(args, i)
else
break
end
end
-- rimuove i parametri posizionali vuoti front to back fermandosi al primo non vuoto
while args[1] == '' do
table.remove(args, 1)
end
-- se l'utente non ha fornito lat e long con i posizionali ma con latdec e longdec
if (#args == 0 or (#args == 1 and not tonumber(args[1]))) and
tonumber(args.latdec) and tonumber(args.longdec) then
table.insert(args, 1, numberToString(args.latdec))
table.insert(args, 2, numberToString(args.longdec))
end
return args
end
-- =============================================================================
-- Classe DecCoord
-- =============================================================================
-- La classe DecCoord rappresenta una coordinata (latitudine o longitudine) in gradi decimali.
local DecCoord = {}
local DmsCoord = {} -- dichiarata qui per le conversioni
-- Costruttore della classe DecCoord.
--
-- @param {string} deg - i gradi decimali, positivi o negativi, se negativi viene
-- cambiato il segno e la direzione cardinale eventualmente invertita
-- @param {string} card - la direzione cardinale (N|S|E|W)
-- @return {table} un nuovo oggetto DecCoord
function DecCoord:new(deg, card)
local self = {}
setmetatable(self, { __index = DecCoord,
__tostring = function(t) return self:__tostring() end,
__concat = function(t, t2) return tostring(t) .. tostring(t2) end })
self.deg = tonumber(deg)
if self.deg < 0 then
self.card = card == 'N' and 'S' or (card == 'E' and 'W' or card)
self.deg = -self.deg
else
self.card = card
end
return self
end
-- Richiamata automaticamente ogni volta che è richiesto un tostring o un concatenamento.
--
-- @return {string}
function DecCoord:__tostring()
return numberToString(self.deg) .. '°' .. self.card
end
-- Restituisce i gradi con segno.
--
-- @return {string}
function DecCoord:getDeg()
local deg = self.deg * ((self.card == 'N' or self.card =='E') and 1 or -1)
return numberToString(deg)
end
-- Restituisce un nuovo oggetto DmsCoord, convertendo in gradi/minuti/secondi.
--
-- @return {table} un nuovo oggetto DmsCoord
function DecCoord:toDms()
local deg, min, sec
deg = round(self.deg * 3600, 2)
sec = round(math.floor(deg) % 60 + deg - math.floor(deg), 2)
deg = math.floor((deg - sec) / 60)
min = deg % 60
deg = math.floor((deg - min) / 60) % 360
return DmsCoord:new(deg, min, sec, self.card)
end
-- =============================================================================
-- Classe DmsCoord
-- =============================================================================
-- La classe DmsCoord rappresenta una coordinata (latitudine o longitudine) in gradi/minuti/secondi.
-- Costruttore della classe DmsCoord.
--
-- @param {string} deg - i gradi
-- @param {string} min - i minuti, può essere nil
-- @param {string} sec - i secondi, può essere nil
-- @param {string} card - la direzione cardinale (N|S|E|W)
-- @return {table} un nuovo oggetto DmsCoord
function DmsCoord:new(deg, min, sec, card)
local self = {}
setmetatable (self, { __index = DmsCoord,
__tostring = function(t) return self:__tostring() end,
__concat = function(t, t2) return tostring(t) .. tostring(t2) end })
self.deg = tonumber(deg)
self.min = min and tonumber(min)
self.sec = sec and tonumber(sec)
self.card = card
return self
end
-- Richiamata automaticamente ogni volta che è richiesto un tostring o un concatenamento.
--
-- @return {string}
function DmsCoord:__tostring()
return self.deg .. '°' ..
(self.min and (padleft0(self.min) .. '′') or '') ..
(self.sec and (padleft0(self.sec) .. '″') or '') ..
self.card
end
-- Restituisce un nuovo oggetto DecCoord, convertendo in gradi decimali.
--
-- @return {table} un nuovo oggetto DecCoord
function DmsCoord:toDec()
local deg = round((self.deg + ((self.min or 0) + (self.sec or 0) / 60) / 60), 6)
return DecCoord:new(deg, self.card)
end
-- =============================================================================
-- Classe Coord
-- =============================================================================
-- La classe Coord è la classe principale del mòdulu.
-- Al suo interno ha un riferimento alla latitudine e longitudine in ogni formato.
local Coord = {}
-- Costruttore della classe Coord.
--
-- @param {table} args
-- @return {table} un nuovo oggetto Coord
function Coord:new(args)
local decLat, decLong, dmsLat, dmsLong
local display = getDisplay(args)
local self = { args = args }
setmetatable(self, { __index = Coord })
if args.from and display.title then
error('il parametro "from" è valido solo con display=inline', 3)
end
-- con display=title o con i parametri "prop" o "from"
-- legge le coordinate da P625 per utilizzarle o per confrontarle con quelle inserite
if getDisplay(self.args).title or self.args.prop or args.from then
self:_checkWikidata()
-- con "from", senza coordinate utente e su Wikidata non esegue i controlli successivi
if self.args.from and #self.args < 2 and not tonumber(args[1]) then
return self
end
end
-- identifica il tipo di chiamata
self:_checkRequestFormat()
-- in base al tipo di chiamata crea gli oggetti DecCoord o DmsCoord
if self.reqFormat == 'dec' then
-- {{coord|1.111|2.222}}
decLat = DecCoord:new(args[1], 'N')
decLong = DecCoord:new(args[2], 'E')
elseif self.reqFormat == 'd' then
-- {{coord|1.111|N|3.333|W}}
decLat = DecCoord:new(args[1], args[2])
decLong = DecCoord:new(args[3], args[4])
elseif self.reqFormat == 'dm' then
-- {{coord|1|2|N|4|5|W}}
dmsLat = DmsCoord:new(args[1], args[2], nil, args[3])
dmsLong = DmsCoord:new(args[4], args[5], nil, args[6])
elseif self.reqFormat == 'dms' then
-- {{coord|1|2|3|N|5|6|7|W}}
dmsLat = DmsCoord:new(args[1], args[2], args[3], args[4])
dmsLong = DmsCoord:new(args[5], args[6], args[7], args[8])
end
-- effettua le conversioni dec <=> dms
if self.reqFormat == 'dec' or self.reqFormat == 'd' then
dmsLat = decLat:toDms()
dmsLong = decLong:toDms()
-- rimuove secondi e minuti se zero e presenti in lat e long
if dmsLat.sec == 0 and dmsLong.sec == 0 then
dmsLat.sec, dmsLong.sec = nil, nil
if dmsLat.min == 0 and dmsLong.min == 0 then
dmsLat.min, dmsLong.min = nil, nil
end
end
elseif self.reqFormat == 'dm' or self.reqFormat == 'dms' then
decLat = dmsLat:toDec()
decLong = dmsLong:toDec()
end
self.decLat = decLat
self.decLong = decLong
self.dmsLat = dmsLat
self.dmsLong = dmsLong
return self
end
-- Legge la P625 e la utilizza come latitudine e longitudine se non fornite dall'utente.
function Coord:_checkWikidata()
self.wdEntityId = self.args.from or mw.wikibase.getEntityIdForCurrentPage();
if self.args.prop then
self.wdLat = mWikidata._getQualifier({ self.args.prop, 'P625', coord = 'latitude', n = 1, nq = 1, from = self.wdEntityId })
self.wdLong = mWikidata._getQualifier({ self.args.prop, 'P625', coord = 'longitude', n = 1, nq = 1, from = self.wdEntityId })
else
self.wdLat = mWikidata._getProperty({ 'P625', coord = 'latitude', n = 1, from = self.wdEntityId })
self.wdLong = mWikidata._getProperty({ 'P625', coord = 'longitude', n = 1, from = self.wdEntityId })
end
if self.wdLat and self.wdLong then
self.wdLat = round(self.wdLat, 6)
self.wdLong = round(self.wdLong, 6)
-- se l'utente non ha fornito lat e long usa quelli di Wikidata
if #self.args == 0 or (#self.args == 1 and not tonumber(self.args[1])) then
table.insert(self.args, 1, numberToString(self.wdLat))
table.insert(self.args, 2, numberToString(self.wdLong))
self.wdCat = '[[Catigurìa:P625 letta da Wikidata]]'
end
else
self.wdCat = '[[Catigurìa:P625 assente su Wikidata]]'
end
end
-- Riconosce il tipo di richiesta: dec, d, dm o dms.
function Coord:_checkRequestFormat()
local errorTable = {}
-- riconoscimento tipo di richiesta
if #self.args < 2 then
error('* cuurdinati nun specificate', 4)
elseif #self.args < 4 then
self.reqFormat = 'dec'
elseif #self.args < 6 then
self.reqFormat = 'd'
elseif #self.args < 8 then
self.reqFormat = 'dm'
elseif #self.args < 10 then
self.reqFormat = 'dms'
else
error('* errato nùmmuru di parametri', 4)
end
-- con le richieste dm e dms verifica se ci sono parametri lasciati vuoti in modo valido.
if self.reqFormat == 'dms' then
-- {{coord|1|2||N|5|6||E}} valido
if self.args[3] == '' and self.args[7] == '' then
table.remove(self.args, 7)
table.remove(self.args, 3)
self.reqFormat = 'dm'
-- {{coord|1|2|3|N|5|6||E}} non valido
elseif self.args[3] == '' or self.args[7] == '' then
error('* lat e long hanno diversa precisione', 4)
-- {{coord|1||3|N|5||7|E}} valido
elseif self.args[2] == '' and self.args[6] == '' then
self.args[2], self.args[6] = 0, 0
-- {{coord|1|2|3|N|5||7|E}} non valido
elseif self.args[2] == '' or self.args[6] == '' then
error('* lat e long hanno diversa precisione', 4)
end
end
if self.reqFormat == 'dm' then
-- {{coord|1||N|4||E}} valido
if self.args[2] == '' and self.args[5] == '' then
table.remove(self.args, 5)
table.remove(self.args, 2)
self.reqFormat = 'd'
-- {{coord|1|2|N|4||E}} non valido
elseif self.args[2] == '' or self.args[5] == '' then
error('* lat e long hanno diversa precisione', 4)
end
end
-- validazione parametri posizionali
local currFormat = cfg.params[self.reqFormat]
local globe = self.args[#self.args]:match('globe:(%w+)')
self.isEarth = not globe or globe == 'earth'
for k, v in ipairs(self.args) do
if currFormat[k] then
local err
local parType = currFormat[k][1]
local parName = currFormat[k][2]
local parMin = currFormat[k][3]
local parMax = currFormat[k][4]
-- valida un parametro di tipo nùmmuru
if parType == 'number' then
local num = tonumber(v)
if num then
if self.isEarth and num < parMin then
err = string.format('* %s format: %s < %s', self.reqFormat, parName, parMin)
elseif self.isEarth and math.floor(num) > parMax then
err = string.format('* %s format: %s > %s', self.reqFormat, parName, parMax)
end
else
err = string.format('* %s format: %s non è un nùmmuru', self.reqFormat, parName)
end
-- valida un parametro di tipo stringa
elseif parType == 'string' then
if v ~= parMin and v ~= parMax then
err = string.format('* %s format: %s diverso da %s e da %s',
self.reqFormat, parName, parMin, parMax)
end
end
if err then
table.insert(errorTable, err)
end
end
end
if #errorTable > 0 then
error(table.concat(errorTable, '\n'), 4)
end
end
-- Utilizza l'estensione [[mw:Extension:GeoData]].
--
-- @param {table} display
-- @return {string}
function Coord:_setGeoData(display)
local gdStr = string.format('{{#coordinates:%s|%s|name=%s}}',
table.concat(self.args, '|'),
(display.title and mw.title.getCurrentTitle().namespace == 0) and 'primary' or '',
self.args.name or '')
return mw.getCurrentFrame():preprocess(gdStr)
end
-- Funzione di debug, restituisce latitudine e longitudine in entrambi i formati.
--
-- @return {string}
function Coord:getDebugCoords()
-- con args.from restitusce una stringa vuota se non c'è nessun dato
if self.args.from and #self.args < 2 and not tonumber(self.args[1]) then
return ''
end
return self.decLat .. ' ' .. self.decLong .. ' ' .. self.dmsLat .. ' ' .. self.dmsLong
end
-- Restituisce l'HTML di un elemento <maplink> di Kartographer per le coordinate
--
-- @return {string}
function Coord:_buildMaplinkHTML()
local defaultFormat
if self.args.format then
defaultFormat = self.args.format
elseif self.reqFormat == 'dec' then
defaultFormat = 'dec'
else
defaultFormat = 'dms'
end
local linkText;
if defaultFormat == 'dec' then
linkText = self.decLat .. ' ' .. self.decLong
else
linkText = tostring(self.dmsLat) .. ' ' .. tostring(self.dmsLong)
end
local jsonParams = {
type = 'Feature',
geometry = {
type ='Point',
coordinates = {
round( self.decLong:getDeg(), 6 ), -- max precision in GeoJSON format
round( self.decLat:getDeg(), 6 )
}
},
properties = {
['marker-color'] = "228b22",
}
}
if self.wdEntityId then
-- geoshape da Wikidata
jsonParams = {
jsonParams,
{
type = 'ExternalData',
service = 'geoshape',
ids = self.wdEntityId,
properties = {
['fill-opacity'] = 0.2
}
}
}
end
return mw.getCurrentFrame():extensionTag{
name = 'maplink',
content = mw.text.jsonEncode( jsonParams ),
args = {
text = linkText,
zoom = getZoom( self.args[#self.args] or '' ),
latitude = self.decLat:getDeg(),
longitude = self.decLong:getDeg(),
}
}
end
-- Restituisce l'HTML di un link a geohack con le coordinate (usato solo quando non è possibile usare maplink).
--
-- @return {string}
function Coord:_buildGeohackLink()
-- crea la stringa per il parametro params di geohack.php
local geohackParams
if self.reqFormat == 'dec' then
geohackParams = string.format('%s_N_%s_E', self.args[1], self.args[2])
if self.args[3] then
geohackParams = geohackParams .. '_' .. self.args[3]
end
else
-- concatena solo i posizionali
geohackParams = table.concat(self.args, '_')
end
-- geohack url e parametri
local url = string.format('%s&pagename=%s¶ms=%s', cfg.geohackUrl,
mw.uri.encode(mw.title.getCurrentTitle().prefixedText, 'WIKI'), geohackParams)
if self.args.name then
url = url .. '&title=' .. mw.uri.encode(self.args.name)
end
local linkNode = mw.html.create('span')
:addClass('plainlinks nourlexpansion')
:wikitext('[' .. url .. ' ' .. tostring(self.dmsLat) .. ' ' .. tostring(self.dmsLong) .. ']')
:done()
return tostring(linkNode)
end
-- Restituisce l'HTML per il microformat Geo.
-- FIXME Serve ancora nel 2024? La documentazione in proposito è scarsissima, e tutti
-- i link a strumenti che lo usano non vanno più. Inoltre, qui usiamo un elemento nascosto;
-- va bene lo stesso? Come verificarlo? Le specifiche non ne parlano.
--
-- @return {string}
function Coord:_buildGeoMarkup()
return mw.html.create('')
:wikitext(self.args.name and '<span class="vcard">' or '')
:tag('span')
:attr('style', 'display:none')
:addClass('geo')
:tag('span')
:addClass('latitude')
:wikitext(tostring(self.dmsLat))
:done()
:wikitext( ', ' )
:tag('span')
:addClass('longitude')
:wikitext(tostring(self.dmsLong))
:done()
:wikitext(self.args.name and ('<span style="display:none"> (<span class="fn org">' ..
self.args.name .. '</span>)</span></span>') or '')
:done()
end
-- Restituisce l'HTML contenente le coordinate con link che utilizza <maplink> (Kartographer)
-- se possibile, e geohack altrimenti.
--
-- @return {string}
function Coord:getHTML()
-- con args.from restitusce una stringa vuota se non c'è nessun dato
if self.args.from and #self.args < 2 and not tonumber(self.args[1]) then
return ''
elseif self.args.display == 'debug' then
return self:getDebugCoords()
end
local display = getDisplay(self.args)
local coordLink
if self.isEarth then
-- Usa maplink se possibile. A maggio 2024 supporta solo coordinate terrestri,
-- vedi T151138.
coordLink = self:_buildMaplinkHTML()
else
coordLink = self:_buildGeohackLink()
end
local geo = self:_buildGeoMarkup();
local html = coordLink .. tostring(geo) .. (self.args.notes or '')
local frame = mw.getCurrentFrame()
local ret = frame:extensionTag('templatestyles', '', {src = 'Mòdulu:Coord/styles.css'}) ..
(display.inline and html or '');
if display.title then
-- formatta il risultato a seconda di args.display (nil, 'inline', 'title', 'inline,title')
-- se inline e title, in stampa visualizza solo il primo
local htmlTitle = string.format(
'<div style="font-size: small"><span %s id="coordinates">[[Cuurdinati giugràfichi|Cuurdinati]]: %s</span></div>',
display.inline and 'class="noprint"' or '',
html
)
ret = ret .. frame:extensionTag( 'indicator', htmlTitle, { name = 'coordinates' } )
end
return ret ..
self:_setGeoData(display) ..
(mw.title.getCurrentTitle().namespace == 0 and self.wdCat or '')
end
-- =============================================================================
-- Funzioni esportate
-- =============================================================================
local p = {}
-- Funzione importata da https://en.wikipedia.org/w/index.php?title=Module:Coordinates&oldid=789126031
-- per estrarre lat, long, type, scale, dim, region, globe, source, dal link a geohack.php generato da coord.
function p.coord2text(frame)
if frame.args[1] == '' or frame.args[2] == '' or not frame.args[2] then return nil end
frame.args[2] = mw.text.trim(frame.args[2])
if frame.args[2] == 'lat' or frame.args[2] == 'long' then
local result, negative = mw.text.split((mw.ustring.match(frame.args[1],'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if frame.args[2] == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(frame.args[1], 'params=.-_'..frame.args[2]..':(.-)[ _]')
end
end
-- Funzione per eventuale template {{dms2dec}}.
function p.dms2dec(frame)
local args = frame.args
-- {{dms2dec|N|2|3|4}}
return DmsCoord:new(args[2], args[3], args[4], args[1]):toDec():getDeg()
end
-- Funzione per eventuale template {{dec2dms}}.
function p.dec2dms(frame)
local args = frame.args
-- {{dec2dms|1.111|N|S}}
return DecCoord:new(args[1], tonumber(args[1]) >= 0 and args[2] or args[3]):toDms()
end
-- Funzioni ppi l'utilizzo da n'autru mòdulu.
function p._main(args)
return Coord:new(args):getHTML()
end
-- Funzione per il template {{Coord}}.
function p.main(frame)
return select(2, xpcall(function()
return p._main(getArgs(frame))
end, errhandler))
end
return p
pxjjcu76w37ql2mf6yvjk625arwdbg6
782060
782059
2026-05-13T13:04:28Z
GiovanniPen
22308
fix spazio
782060
Scribunto
text/plain
--[[
* Mòdulu ca 'mplementa lu template Coord.
]]
require('strict')
local mWikidata = require('Mòdulu:Wikidata')
local cfg = mw.loadData('Mòdulu:Coord/Configurazione')
local errorCategory = '[[Catigurìa:Errori di compilazione del template Coord]]'
-- =============================================================================
-- Funzioni di utilità
-- =============================================================================
-- Error handler per xpcall, formatta l'errore.
--
-- @param {string} msg
-- @return {string}
local function errhandler(msg)
local cat = mw.title.getCurrentTitle().namespace == 0 and errorCategory or ''
return string.format('<div style="color:red">Lu template {{Coord}} truvò na picca di sbagghi ' ..
'([[Template:Coord|struzzioni]]):\n%s</div>%s', msg, cat)
end
-- Restituisce lu nùmmuru arrotondato al nùmmuru di cifre decimali richiesto.
-- http://lua-users.org/wiki/SimpleRound
--
-- @param {number} num
-- @param {number} idp
-- @return {number}
local function round(num, idp)
local mult = 10^(idp or 0)
return math.floor(num * mult + 0.5) / mult
end
-- Restituisce la stringa "0 + nùmmuru" quannu lu nùmmuru è di una sola cifra, altrimenti lo stesso nùmmuru.
--
-- @param {number} num
-- @return {string}
local function padleft0(num)
return (num < 10 and '0' or '') .. num
end
-- Converte un nùmmuru in stringa senza usare la notazione scientifica, esempio tostring(0.00001).
--
-- @param {number} num
-- @return {string}
local function numberToString(num)
-- la parentesi () extra serve per non restituire anche il gsub.count
return (string.format('%f', num):gsub('%.?0+$', ''))
end
-- Parsifica il parametro display e restituisce una table con chiavi inline, title e debug.
--
-- @param {table} args
-- @return {table}
local function getDisplay(args)
return {
inline = not args.display or args.display == 'inline' or args.display == 'inline,title',
title = args.display == 'title' or args.display == 'inline,title',
debug = args.display == 'debug'
}
end
local function getZoom( extraparams )
local scale = extraparams:match( '%f[%w]scale: ?(%d+)' )
if scale then
return math.floor(math.log10( 5 / tonumber( scale ) ) * 3 + 25)
end
local extraType = extraparams:match( '%f[%w]type: ?(%w+)' )
if extraType then
local zoomType = {
country = 5,
state = 6,
adm1st = 7,
adm2nd = 8,
city = 9,
isle = 10,
mountain = 10,
waterbody = 10,
airport = 12,
landmark = 13,
}
return zoomType[ extraType ]
end
return 13
end
-- Legge i parametri passati al mòdulu.
--
-- @param {table} frame
-- @return {table}
local function getArgs(frame)
local args = {}
-- copia i parametri ricevuti, eccetto quelli con nome valorizzati a stringa vuota
for k, v in pairs(frame:getParent().args) do
if v ~= '' or tonumber(k) then
args[k] = string.gsub(v, '^%s*(.-)%s*$', '%1')
end
end
-- retrocompatibilità con una funzionalità nascosta del precedente template:
-- ignorava qualunque parametro posizionale vuoto dopo longitudine e parametri geohack
for i = #args, 1, -1 do
if args[i] == '' then
table.remove(args, i)
else
break
end
end
-- rimuove i parametri posizionali vuoti front to back fermandosi al primo non vuoto
while args[1] == '' do
table.remove(args, 1)
end
-- se l'utente non ha fornito lat e long con i posizionali ma con latdec e longdec
if (#args == 0 or (#args == 1 and not tonumber(args[1]))) and
tonumber(args.latdec) and tonumber(args.longdec) then
table.insert(args, 1, numberToString(args.latdec))
table.insert(args, 2, numberToString(args.longdec))
end
return args
end
-- =============================================================================
-- Classe DecCoord
-- =============================================================================
-- La classe DecCoord rappresenta una coordinata (latitudine o longitudine) in gradi decimali.
local DecCoord = {}
local DmsCoord = {} -- dichiarata qui per le conversioni
-- Costruttore della classe DecCoord.
--
-- @param {string} deg - i gradi decimali, positivi o negativi, se negativi viene
-- cambiato il segno e la direzione cardinale eventualmente invertita
-- @param {string} card - la direzione cardinale (N|S|E|W)
-- @return {table} un nuovo oggetto DecCoord
function DecCoord:new(deg, card)
local self = {}
setmetatable(self, { __index = DecCoord,
__tostring = function(t) return self:__tostring() end,
__concat = function(t, t2) return tostring(t) .. tostring(t2) end })
self.deg = tonumber(deg)
if self.deg < 0 then
self.card = card == 'N' and 'S' or (card == 'E' and 'W' or card)
self.deg = -self.deg
else
self.card = card
end
return self
end
-- Richiamata automaticamente ogni volta che è richiesto un tostring o un concatenamento.
--
-- @return {string}
function DecCoord:__tostring()
return numberToString(self.deg) .. '°' .. self.card
end
-- Restituisce i gradi con segno.
--
-- @return {string}
function DecCoord:getDeg()
local deg = self.deg * ((self.card == 'N' or self.card =='E') and 1 or -1)
return numberToString(deg)
end
-- Restituisce un nuovo oggetto DmsCoord, convertendo in gradi/minuti/secondi.
--
-- @return {table} un nuovo oggetto DmsCoord
function DecCoord:toDms()
local deg, min, sec
deg = round(self.deg * 3600, 2)
sec = round(math.floor(deg) % 60 + deg - math.floor(deg), 2)
deg = math.floor((deg - sec) / 60)
min = deg % 60
deg = math.floor((deg - min) / 60) % 360
return DmsCoord:new(deg, min, sec, self.card)
end
-- =============================================================================
-- Classe DmsCoord
-- =============================================================================
-- La classe DmsCoord rappresenta una coordinata (latitudine o longitudine) in gradi/minuti/secondi.
-- Costruttore della classe DmsCoord.
--
-- @param {string} deg - i gradi
-- @param {string} min - i minuti, può essere nil
-- @param {string} sec - i secondi, può essere nil
-- @param {string} card - la direzione cardinale (N|S|E|W)
-- @return {table} un nuovo oggetto DmsCoord
function DmsCoord:new(deg, min, sec, card)
local self = {}
setmetatable (self, { __index = DmsCoord,
__tostring = function(t) return self:__tostring() end,
__concat = function(t, t2) return tostring(t) .. tostring(t2) end })
self.deg = tonumber(deg)
self.min = min and tonumber(min)
self.sec = sec and tonumber(sec)
self.card = card
return self
end
-- Richiamata automaticamente ogni volta che è richiesto un tostring o un concatenamento.
--
-- @return {string}
function DmsCoord:__tostring()
return self.deg .. '°' ..
(self.min and (padleft0(self.min) .. '′') or '') ..
(self.sec and (padleft0(self.sec) .. '″') or '') ..
self.card
end
-- Restituisce un nuovo oggetto DecCoord, convertendo in gradi decimali.
--
-- @return {table} un nuovo oggetto DecCoord
function DmsCoord:toDec()
local deg = round((self.deg + ((self.min or 0) + (self.sec or 0) / 60) / 60), 6)
return DecCoord:new(deg, self.card)
end
-- =============================================================================
-- Classe Coord
-- =============================================================================
-- La classe Coord è la classe principale del mòdulu.
-- Al suo interno ha un riferimento alla latitudine e longitudine in ogni formato.
local Coord = {}
-- Costruttore della classe Coord.
--
-- @param {table} args
-- @return {table} un nuovo oggetto Coord
function Coord:new(args)
local decLat, decLong, dmsLat, dmsLong
local display = getDisplay(args)
local self = { args = args }
setmetatable(self, { __index = Coord })
if args.from and display.title then
error('il parametro "from" è valido solo con display=inline', 3)
end
-- con display=title o con i parametri "prop" o "from"
-- legge le coordinate da P625 per utilizzarle o per confrontarle con quelle inserite
if getDisplay(self.args).title or self.args.prop or args.from then
self:_checkWikidata()
-- con "from", senza coordinate utente e su Wikidata non esegue i controlli successivi
if self.args.from and #self.args < 2 and not tonumber(args[1]) then
return self
end
end
-- identifica il tipo di chiamata
self:_checkRequestFormat()
-- in base al tipo di chiamata crea gli oggetti DecCoord o DmsCoord
if self.reqFormat == 'dec' then
-- {{coord|1.111|2.222}}
decLat = DecCoord:new(args[1], 'N')
decLong = DecCoord:new(args[2], 'E')
elseif self.reqFormat == 'd' then
-- {{coord|1.111|N|3.333|W}}
decLat = DecCoord:new(args[1], args[2])
decLong = DecCoord:new(args[3], args[4])
elseif self.reqFormat == 'dm' then
-- {{coord|1|2|N|4|5|W}}
dmsLat = DmsCoord:new(args[1], args[2], nil, args[3])
dmsLong = DmsCoord:new(args[4], args[5], nil, args[6])
elseif self.reqFormat == 'dms' then
-- {{coord|1|2|3|N|5|6|7|W}}
dmsLat = DmsCoord:new(args[1], args[2], args[3], args[4])
dmsLong = DmsCoord:new(args[5], args[6], args[7], args[8])
end
-- effettua le conversioni dec <=> dms
if self.reqFormat == 'dec' or self.reqFormat == 'd' then
dmsLat = decLat:toDms()
dmsLong = decLong:toDms()
-- rimuove secondi e minuti se zero e presenti in lat e long
if dmsLat.sec == 0 and dmsLong.sec == 0 then
dmsLat.sec, dmsLong.sec = nil, nil
if dmsLat.min == 0 and dmsLong.min == 0 then
dmsLat.min, dmsLong.min = nil, nil
end
end
elseif self.reqFormat == 'dm' or self.reqFormat == 'dms' then
decLat = dmsLat:toDec()
decLong = dmsLong:toDec()
end
self.decLat = decLat
self.decLong = decLong
self.dmsLat = dmsLat
self.dmsLong = dmsLong
return self
end
-- Legge la P625 e la utilizza come latitudine e longitudine se non fornite dall'utente.
function Coord:_checkWikidata()
self.wdEntityId = self.args.from or mw.wikibase.getEntityIdForCurrentPage();
if self.args.prop then
self.wdLat = mWikidata._getQualifier({ self.args.prop, 'P625', coord = 'latitude', n = 1, nq = 1, from = self.wdEntityId })
self.wdLong = mWikidata._getQualifier({ self.args.prop, 'P625', coord = 'longitude', n = 1, nq = 1, from = self.wdEntityId })
else
self.wdLat = mWikidata._getProperty({ 'P625', coord = 'latitude', n = 1, from = self.wdEntityId })
self.wdLong = mWikidata._getProperty({ 'P625', coord = 'longitude', n = 1, from = self.wdEntityId })
end
if self.wdLat and self.wdLong then
self.wdLat = round(self.wdLat, 6)
self.wdLong = round(self.wdLong, 6)
-- se l'utente non ha fornito lat e long usa quelli di Wikidata
if #self.args == 0 or (#self.args == 1 and not tonumber(self.args[1])) then
table.insert(self.args, 1, numberToString(self.wdLat))
table.insert(self.args, 2, numberToString(self.wdLong))
self.wdCat = '[[Catigurìa:P625 letta da Wikidata]]'
end
else
self.wdCat = '[[Catigurìa:P625 assente su Wikidata]]'
end
end
-- Riconosce il tipo di richiesta: dec, d, dm o dms.
function Coord:_checkRequestFormat()
local errorTable = {}
-- riconoscimento tipo di richiesta
if #self.args < 2 then
error('* cuurdinati nun specificate', 4)
elseif #self.args < 4 then
self.reqFormat = 'dec'
elseif #self.args < 6 then
self.reqFormat = 'd'
elseif #self.args < 8 then
self.reqFormat = 'dm'
elseif #self.args < 10 then
self.reqFormat = 'dms'
else
error('* errato nùmmuru di parametri', 4)
end
-- con le richieste dm e dms verifica se ci sono parametri lasciati vuoti in modo valido.
if self.reqFormat == 'dms' then
-- {{coord|1|2||N|5|6||E}} valido
if self.args[3] == '' and self.args[7] == '' then
table.remove(self.args, 7)
table.remove(self.args, 3)
self.reqFormat = 'dm'
-- {{coord|1|2|3|N|5|6||E}} non valido
elseif self.args[3] == '' or self.args[7] == '' then
error('* lat e long hanno diversa precisione', 4)
-- {{coord|1||3|N|5||7|E}} valido
elseif self.args[2] == '' and self.args[6] == '' then
self.args[2], self.args[6] = 0, 0
-- {{coord|1|2|3|N|5||7|E}} non valido
elseif self.args[2] == '' or self.args[6] == '' then
error('* lat e long hanno diversa precisione', 4)
end
end
if self.reqFormat == 'dm' then
-- {{coord|1||N|4||E}} valido
if self.args[2] == '' and self.args[5] == '' then
table.remove(self.args, 5)
table.remove(self.args, 2)
self.reqFormat = 'd'
-- {{coord|1|2|N|4||E}} non valido
elseif self.args[2] == '' or self.args[5] == '' then
error('* lat e long hanno diversa precisione', 4)
end
end
-- validazione parametri posizionali
local currFormat = cfg.params[self.reqFormat]
local globe = self.args[#self.args]:match('globe:(%w+)')
self.isEarth = not globe or globe == 'earth'
for k, v in ipairs(self.args) do
if currFormat[k] then
local err
local parType = currFormat[k][1]
local parName = currFormat[k][2]
local parMin = currFormat[k][3]
local parMax = currFormat[k][4]
-- valida un parametro di tipo nùmmuru
if parType == 'number' then
local num = tonumber(v)
if num then
if self.isEarth and num < parMin then
err = string.format('* %s format: %s < %s', self.reqFormat, parName, parMin)
elseif self.isEarth and math.floor(num) > parMax then
err = string.format('* %s format: %s > %s', self.reqFormat, parName, parMax)
end
else
err = string.format('* %s format: %s non è un nùmmuru', self.reqFormat, parName)
end
-- valida un parametro di tipo stringa
elseif parType == 'string' then
if v ~= parMin and v ~= parMax then
err = string.format('* %s format: %s diverso da %s e da %s',
self.reqFormat, parName, parMin, parMax)
end
end
if err then
table.insert(errorTable, err)
end
end
end
if #errorTable > 0 then
error(table.concat(errorTable, '\n'), 4)
end
end
-- Utilizza l'estensione [[mw:Extension:GeoData]].
--
-- @param {table} display
-- @return {string}
function Coord:_setGeoData(display)
local gdStr = string.format('{{#coordinates:%s|%s|name=%s}}',
table.concat(self.args, '|'),
(display.title and mw.title.getCurrentTitle().namespace == 0) and 'primary' or '',
self.args.name or '')
return mw.getCurrentFrame():preprocess(gdStr)
end
-- Funzione di debug, restituisce latitudine e longitudine in entrambi i formati.
--
-- @return {string}
function Coord:getDebugCoords()
-- con args.from restitusce una stringa vuota se non c'è nessun dato
if self.args.from and #self.args < 2 and not tonumber(self.args[1]) then
return ''
end
return self.decLat .. ' ' .. self.decLong .. ' ' .. self.dmsLat .. ' ' .. self.dmsLong
end
-- Restituisce l'HTML di un elemento <maplink> di Kartographer per le coordinate
--
-- @return {string}
function Coord:_buildMaplinkHTML()
local defaultFormat
if self.args.format then
defaultFormat = self.args.format
elseif self.reqFormat == 'dec' then
defaultFormat = 'dec'
else
defaultFormat = 'dms'
end
local linkText;
if defaultFormat == 'dec' then
linkText = self.decLat .. ' ' .. self.decLong
else
linkText = tostring(self.dmsLat) .. ' ' .. tostring(self.dmsLong)
end
local jsonParams = {
type = 'Feature',
geometry = {
type ='Point',
coordinates = {
round( self.decLong:getDeg(), 6 ), -- max precision in GeoJSON format
round( self.decLat:getDeg(), 6 )
}
},
properties = {
['marker-color'] = "228b22",
}
}
if self.wdEntityId then
-- geoshape da Wikidata
jsonParams = {
jsonParams,
{
type = 'ExternalData',
service = 'geoshape',
ids = self.wdEntityId,
properties = {
['fill-opacity'] = 0.2
}
}
}
end
return mw.getCurrentFrame():extensionTag{
name = 'maplink',
content = mw.text.jsonEncode( jsonParams ),
args = {
text = linkText,
zoom = getZoom( self.args[#self.args] or '' ),
latitude = self.decLat:getDeg(),
longitude = self.decLong:getDeg(),
}
}
end
-- Restituisce l'HTML di un link a geohack con le coordinate (usato solo quando non è possibile usare maplink).
--
-- @return {string}
function Coord:_buildGeohackLink()
-- crea la stringa per il parametro params di geohack.php
local geohackParams
if self.reqFormat == 'dec' then
geohackParams = string.format('%s_N_%s_E', self.args[1], self.args[2])
if self.args[3] then
geohackParams = geohackParams .. '_' .. self.args[3]
end
else
-- concatena solo i posizionali
geohackParams = table.concat(self.args, '_')
end
-- geohack url e parametri
local url = string.format('%s&pagename=%s¶ms=%s', cfg.geohackUrl,
mw.uri.encode(mw.title.getCurrentTitle().prefixedText, 'WIKI'), geohackParams)
if self.args.name then
url = url .. '&title=' .. mw.uri.encode(self.args.name)
end
local linkNode = mw.html.create('span')
:addClass('plainlinks nourlexpansion')
:wikitext('[' .. url .. ' ' .. tostring(self.dmsLat) .. ' ' .. tostring(self.dmsLong) .. ']')
:done()
return tostring(linkNode)
end
-- Restituisce l'HTML per il microformat Geo.
-- FIXME Serve ancora nel 2024? La documentazione in proposito è scarsissima, e tutti
-- i link a strumenti che lo usano non vanno più. Inoltre, qui usiamo un elemento nascosto;
-- va bene lo stesso? Come verificarlo? Le specifiche non ne parlano.
--
-- @return {string}
function Coord:_buildGeoMarkup()
return mw.html.create('')
:wikitext(self.args.name and '<span class="vcard">' or '')
:tag('span')
:attr('style', 'display:none')
:addClass('geo')
:tag('span')
:addClass('latitude')
:wikitext(tostring(self.dmsLat))
:done()
:wikitext( ', ' )
:tag('span')
:addClass('longitude')
:wikitext(tostring(self.dmsLong))
:done()
:wikitext(self.args.name and ('<span style="display:none"> (<span class="fn org">' ..
self.args.name .. '</span>)</span></span>') or '')
:done()
end
-- Restituisce l'HTML contenente le coordinate con link che utilizza <maplink> (Kartographer)
-- se possibile, e geohack altrimenti.
--
-- @return {string}
function Coord:getHTML()
-- con args.from restitusce una stringa vuota se non c'è nessun dato
if self.args.from and #self.args < 2 and not tonumber(self.args[1]) then
return ''
elseif self.args.display == 'debug' then
return self:getDebugCoords()
end
local display = getDisplay(self.args)
local coordLink
if self.isEarth then
-- Usa maplink se possibile. A maggio 2024 supporta solo coordinate terrestri,
-- vedi T151138.
coordLink = self:_buildMaplinkHTML()
else
coordLink = self:_buildGeohackLink()
end
local geo = self:_buildGeoMarkup();
local html = coordLink .. tostring(geo) .. (self.args.notes or '')
local frame = mw.getCurrentFrame()
local ret = frame:extensionTag('templatestyles', '', {src = 'Mòdulu:Coord/styles.css'}) ..
(display.inline and html or '');
if display.title then
-- formatta il risultato a seconda di args.display (nil, 'inline', 'title', 'inline,title')
-- se inline e title, in stampa visualizza solo il primo
local htmlTitle = string.format(
'<div style="font-size: small"><span %s id="coordinates">[[Cuurdinati giugràfichi|Cuurdinati]]: %s</span></div>',
display.inline and 'class="noprint"' or '',
html
)
ret = ret .. frame:extensionTag( 'indicator', htmlTitle, { name = 'coordinates' } )
end
return ret ..
self:_setGeoData(display) ..
(mw.title.getCurrentTitle().namespace == 0 and self.wdCat or '')
end
-- =============================================================================
-- Funzioni esportate
-- =============================================================================
local p = {}
-- Funzione importata da https://en.wikipedia.org/w/index.php?title=Module:Coordinates&oldid=789126031
-- per estrarre lat, long, type, scale, dim, region, globe, source, dal link a geohack.php generato da coord.
function p.coord2text(frame)
if frame.args[1] == '' or frame.args[2] == '' or not frame.args[2] then return nil end
frame.args[2] = mw.text.trim(frame.args[2])
if frame.args[2] == 'lat' or frame.args[2] == 'long' then
local result, negative = mw.text.split((mw.ustring.match(frame.args[1],'[%.%d]+°[NS] [%.%d]+°[EW]') or ''), ' ')
if frame.args[2] == 'lat' then
result, negative = result[1], 'S'
else
result, negative = result[2], 'W'
end
result = mw.text.split(result, '°')
if result[2] == negative then result[1] = '-'..result[1] end
return result[1]
else
return mw.ustring.match(frame.args[1], 'params=.-_'..frame.args[2]..':(.-)[ _]')
end
end
-- Funzione per eventuale template {{dms2dec}}.
function p.dms2dec(frame)
local args = frame.args
-- {{dms2dec|N|2|3|4}}
return DmsCoord:new(args[2], args[3], args[4], args[1]):toDec():getDeg()
end
-- Funzione per eventuale template {{dec2dms}}.
function p.dec2dms(frame)
local args = frame.args
-- {{dec2dms|1.111|N|S}}
return DecCoord:new(args[1], tonumber(args[1]) >= 0 and args[2] or args[3]):toDms()
end
-- Funzioni ppi l'utilizzo da n'autru mòdulu.
function p._main(args)
return Coord:new(args):getHTML()
end
-- Funzione per il template {{Coord}}.
function p.main(frame)
return select(2, xpcall(function()
return p._main(getArgs(frame))
end, errhandler))
end
return p
biihs8i503suuu07r9ha0gofjewvmp6
Lucianu Canfora
0
67422
782066
2026-05-13T17:03:57Z
Franciscus Mirabilis
39714
Creata dalla traduzione della pagina "[[:it:Special:Redirect/revision/150661409|Luciano Canfora]]"
782066
wikitext
text/x-wiki
{{Biugrafìa
| Nomu = Lucianu Canfora
| Gèniri = M
| LocuNàscita = Bari
| LocuNàscitaLijami = https://scn.wikipedia.org/wiki/Bari
| JornuMisiNàscita = 5 giugnu
| AnnuNàscita = 1942
| Attività = filologu classicu
| Attività2 = grecista
| Attività3 = storicu
| Nazziunalità = talianu
}}
[[Catigurìa:BioBot]]
[[Catigurìa:Cristiani viventi]]
[[Catigurìa:Nasciuti ntô 1942]]
gsqy8anf43ngg2tsc2y54s63zavdiqc
782067
782066
2026-05-13T17:08:20Z
Franciscus Mirabilis
39714
wikilink
782067
wikitext
text/x-wiki
{{Biugrafìa
| Nomu = Lucianu Canfora
| Gèniri = M
| LocuNàscita = Bari
| LocuNàscitaLijami =
| JornuMisiNàscita = 5 giugnu
| AnnuNàscita = 1942
| Attività = filologu classicu
| Attività2 = grecista
| Attività3 = storicu
| Nazziunalità = talianu
}}
[[Catigurìa:BioBot]]
[[Catigurìa:Cristiani viventi]]
[[Catigurìa:Nasciuti ntô 1942]]
8bg2s1wiqd30fosw9s8i7pxykmgkz71
782068
782067
2026-05-13T17:09:05Z
Franciscus Mirabilis
39714
cugnomi
782068
wikitext
text/x-wiki
{{Biugrafìa
| Nomu = Lucianu
| Gèniri = M
| LocuNàscita = Bari
| LocuNàscitaLijami =
| JornuMisiNàscita = 5 giugnu
| AnnuNàscita = 1942
| Attività = filologu classicu
| Attività2 = grecista
| Attività3 = storicu
| Nazziunalità = talianu
}}
[[Catigurìa:BioBot]]
[[Catigurìa:Cristiani viventi]]
[[Catigurìa:Nasciuti ntô 1942]]
lyv0fl8bkpnjtd0hmqd6o6kqxxoldgu