Wikipedia
nnwiki
https://nn.wikipedia.org/wiki/Hovudside
MediaWiki 1.46.0-wmf.24
first-letter
Filpeikar
Spesial
Diskusjon
Brukar
Brukardiskusjon
Wikipedia
Wikipedia-diskusjon
Fil
Fildiskusjon
MediaWiki
MediaWiki-diskusjon
Mal
Maldiskusjon
Hjelp
Hjelpdiskusjon
Kategori
Kategoridiskusjon
Tema
Temadiskusjon
TimedText
TimedText talk
Modul
Moduldiskusjon
Arrangement
Arrangementsdiskusjon
988
0
10870
3650898
2667851
2026-04-19T07:06:34Z
Ranveig
39
Innhald frå en:
3650898
wikitext
text/x-wiki
{{årstal}}
'''988''' (romartal CMLXXXVIII) var eit skotår som byrja på ein sundag i [[den julianske kalenderen]].
== Hendingar ==
* [[Eirik Raude]] fekk med seg folk frå Island og starta det norrøne landnåmet på [[Grønland]].
* [[Robert II av Frankrike|Robert]], den sekstenårige sonen til kong [[Hugo Capet]], blei gift med den eldre enkja [[Rozala av Italia]] for å sikra truskap frå [[grevskapet Flandern]] til Frankrike.
* [[Valdemar den store]] av Kyiv gifta seg med den austromerske keisardottera [[Anna Porfyrogenita]] og omvende seg til kristendommen. Dette byrja kristninga av [[Kyivriket]].
== Fødde ==
* [[Matilda av Schwaben]], tysk adelskvinne
* [[Fujiwara no Shōshi]], japansk keisarinne
== Døde ==
*Heilage [[Dunstan av Canterbury]], engelsk abbed og erkebiskop
*[[Ishaq ibn al-Muqtadir]], prins av Abbasidedynastiet
{{navboks hundreår}}
{{årstalspire}}
ker79dosgj6i43u9874u42shsvxkboh
Tropisk syklon
0
43771
3650909
3557236
2026-04-19T08:06:16Z
Ranveig
39
Rett.
3650909
wikitext
text/x-wiki
[[Fil:Cyclone Catarina from the ISS on March 26 2004.JPG|mini|Syklonen Catarina, ein sjeldan tropisk syklon i Sør-Atlanteren. Sett frå [[den internasjonale romstasjonen]] den 26. mars 2004.]]
Ein '''tropisk syklon''' er eit [[storm]]system som får energi frå varme frigjeve av fuktig [[luft]] som stig og [[kondensering|kondenserer]]. Namnet understrekar at dette er syklonar som oppstår i [[tropisk]]e strøk, med rotasjon mot klokka på den nordlege halvkula, og med klokka på den sørlege halvkula. Dei skil seg frå andre lågtrykk, som me til dømes har på våre breiddegrader, ved at det er [[varme]]mekanismar som gjev energi til å drive dei.
Tropiske syklonar er det generelle namnet på alle slike system, men dei har forskjellig namn etter kor dei oppstår på jorda og etter kva styrke dei har, slik som '''orkan''', '''tyfon/taifun''', '''tropisk storm''' eller '''tropisk lågtrykk'''.
Tropiske syklonar kan produsere ekstremt kraftig [[vind]], [[tornado]]ar, svært kraftig [[regn]] og store bølgjer, kalla [[stormflod]], inn mot kysten. Det kraftige regnet og stormfloda kan skape enorme flaumar. Sjølv om effekten på menneskelege busetnadar kan vere katastrofale, har tropiske syklonar i somme tilfelle også avslutta lange tørkeperiodar, på grunn av den enorme mengda med [[fukt]] dei transporterer med seg. Dei kan transportere [[varme]] bort frå tropane, og spelar ei viktig rolle i den globale [[atmosfærisk sirkulasjon|atmosfæriske sirkulasjonen]] som skapar likevekt i [[troposfæren]].
== Oppbygging av tropiske syklonar ==
[[Fil:Hurricane profile.svg|mini|Tropiske syklonar blir danna ved at energi blir frigjeven frå kondensasjon av fukt i stigande luft. Dette skapar ei [[positiv tilbakekopling]] over varme hav.]]
Ein tropisk syklon er eit stort, roterande system av [[sky]]er, [[vind]] og [[torevêr]]. Den største energikjelda er [[kondensasjonsvarme]] som er frigjeve ved at vassdamp [[kondensasjon|kondenserer]] i store høgder. Derfor kan ein sjå på ein tropisk syklon som ein gigantisk vertikal [[varmekraftmaskin]] mekanisk driven av fysiske prosessar som jordrotasjon og gravitasjon. Ein kan òg sjå på tropiske syklonar som eit [[mesoskala konvektivt system]]. Kondensasjon fører til høgare vindstyrkar sidan ein liten del av den frigjevne energien blir omforma til mekanisk energi, og kraftigare vind og minkande trykk fører så til auka fordamping frå overflata og meir kondensasjon. Mykje av den frigjevne energien driv vertikale luftstraumar som aukar høgda på stormskyene og på den måten igjen aukar kondensasjonsprosessen. Denne positive koplingsprosessen held fram så lenge systemet kan trekke meir energi ut frå varmt hav. At fordelinga av luftmassane ikkje er i likevekt vil og gje energi til syklonen. Jordrotasjonen får systemet til rotere, ein effekt kjend som [[corioliseffekten]], og påverkar banen stormen tar.
Faktorane som skal til for å danne tropiske syklonar er bl.a. ei forstyrring i vêret, varme tropiske hav, fukt og relativt lite vind i høgda. Visst desse forholda eksisterer og vedvarer, kan det skape den positive tilbakekoplingsprosessen som skal til for å maksimere energiopptaket.
[[Kondensasjon]] er den drivande krafta som skil tropiske syklonar frå andre meteorologiske fenomen. Fordi denne er størst i [[tropisk klima]] er det i tropiske område at ein tropisk syklon oppstår. Ein [[ekstratropisk syklon]], som me kjenner som eit lågtrykk på våre breiddegrader, får det meste av energien sin frå den horisontale temperaturgradienten som er i atmosfæren her. For at varmekraftmaskina skal halde fram, må den tropiske syklonen halde seg over varmt vatn, som gjev syklonen fukta den treng. Fordamping av denne fukta aukar på grunn av den kraftige vinden og det reduserte lufttrykket i stormen, og fører til ein [[positiv tilbakekoplingsprosess]]. Når ein tropisk syklon kjem over land mister den raskt styrken sin.
[[Fil:GulfMexTemps 2005Hurricanes.gif|mini|Diagram som viser temperaturfall i Mexicogulfen når orkanane Katrina og Rita passerer over.]]
Når ein tropisk syklon passerer over eit havområde kan [[havoverflatetemperatur]]en bli lågare, og det kan hindre syklonen i å utvikle seg vidare. Tropiske syklonar avkjøler havoverflata ved å fungere som «varmekraftmaskinar» som overfører varme frå havoverflata til atmosfæren gjennom fordamping. Avkjølinga kjem òg av oppvelling av kald vatn frå havdjupet. I tillegg kan havoverflata bli avkjølt av kalde regndropar som blir liggande ei stund i overflata. Skydekket hindrar solinnstråling, som igjen kan føre til kaldare vatn i havoverflata.
Kombinasjonen av alle desse effektane kan føre til eit kraftig fall i havoverflatetemperaturen i eit større område på berre få dagar.
Forskarar ved det amerikanske National Center for Atmospheric Research har estimert at ein tropisk syklon frigjev 50 til 200 billionar [[joule]] kvar dag. Det er same energimengd på ein dag som om ein sprenger atombomber på 10 megatonn kvart 20 minutt.
Hovudrørsla av skyer i ein tropisk syklon er inn mot senteret av syklonen, men i store høgder strøymer skyene òg ut frå syklonen. Desse skyene kjem av luft som har frigjeve fukta si og blir ført oppover i systemet og ut horisontalt når lufta kjem opp til [[tropopause]]n. Denne horisontale luftstraumen i høgda skapar høge, tynne [[cirrus]]skyer som går ut frå senteret av syklonen i eit spiralmønster. Dei høge cirrusskyene er ofte det første teiknet på at ein tropisk syklon nærmar seg.
=== Fysisk struktur ===
[[Fil:Hurricane structure graphic.jpg|frame|right|Strukturen i ein tropisk syklon]]
Ein kraftig tropisk syklon er bygd opp av følgjande komponentar:
* '''[[lågtrykk|Lågtrykk ved overflata]]:''' Alle tropiske syklonar roterer rundt eit lågtrykk nær jordoverflata. Trykket i sentrum av tropiske syklonar er blant dei lågaste ein har målt i havnivå på Jorda.
* '''Varm kjerne:''' Ein tropiske syklon er karakterisert og driven av store mengder latent varme som blir frigjeve når fuktig luft blir løfta oppover og vassdampen i lufta kondenserer. Denne varmen blir fordelt vertikalt rundt senteret av stormen. Derfor er temperaturen høgare i syklonen enn i dei omliggande områda (bortsett frå ved havoverflata der havet styrer lufttemperaturen).
* '''Cirrusskyer nær senteret:''' Cirrusskyene er toppen av toreskyene i augeveggen. Desse skyene er dei høgaste og kaldaste skyene i syklonen.
* '''[[auge (meteorologi)|Auge]]:''' Ein kraftig tropisk syklon har eit område med søkkande luft i senteret av sirkulasjonen. Vêret i auge er vanlegvis roleg og skyfritt (men havbølgjene kan vere ekstremt store). Auget er vanlegvis sirkulært og kan vere alt frå 3 km til 320 km i diameter. I svakare syklonar vil cirrusskyene ofte dekke senteret, og auge vil vere usynleg.
* '''Augevegg:''' Eit skyband som krinsar rundt auget. I dette område finn ein den kraftigaste vinden og dei største nedbørsmengdene. Dei største øydeleggingane får ein når augeveggen passerer over land.
* '''Regnband:''' Regnbyer og torevêr er organiserte i spiralforma band som går syklonsk rundt senteret av uvêret. Kraftige vindkast og kraftig nedbør er vanleg i dei individuelle regnbanda, med relativt rolegare vêr mellom regnbanda. Tornadoar kan oppstå i regnbanda til tropiske syklonar som går over land. [[Ringforma syklon]]ar er kjende for å mangle regnband.
* '''Utstrauming:''' Dei øvre nivåa av ein tropisk syklon har vind med retning bort frå senteret av stormen i ein antisyklonsk rotasjon. Vind ved overflata er kraftig syklonsk, og blir svekka med høgda før dei til slutt reverserer seg sjølv. Det er den varme kjernen i senteret av dei tropisk syklonane som fører til dette spesielle vindmønsteret.
== Korleis tropiske syklonar oppstår ==
[[Fil:Irene TRM 20050815 lrg.jpg|mini|Eit TRMM bilete som viser høgda på regnkolonnane i orkanen Irene (2005)]]
[[Fil:Atlantic hurricane graphic.png|mini|right|Bølgjer i passatvindane i Atlanterhavet - område med vind som konverger med dei storstilte vindsystema kan skape ustabilitet i atmosfæren som kan føre til at tropiske syklonar oppstår.]]
Forsking på korleis tropiske syklonar oppstår går føre seg for fullt og er framleis ein prosess ein ikkje fullt ut forstår enno. Ein treng seks generelle faktorar for å få danne ein tropisk syklon, sjølv om tropiske syklonar av og til kan oppstå utan at alle desse vilkåra er oppfylt:
# [[Havoverflatetemperatur]]en må vere minst 26,5 °C ned til eit djup på minst 50 m. Når vatn har denne temperaturen vil atmosfæren like over havet bli ustabil nok til det kan oppstå konveksjon og torevêr.
# Rask avkjøling med høgda. Dette fører til at [[latent varme]] blir frigjeve, som er energikjelda til tropiske syklonar.
# Høg fukt, særleg i den lågare og midlare [[troposfæren]]. Når det er mykje fukt i atmosfæren ligg forholda til rette for at forstyrringar kan vidareutviklast.
# Lågt [[vindskjer]]. Når vindskjeret er stort, vil dette stoppe konveksjonen eller forstyrringane i syklonen.
# Avstand frå [[ekvator]]. Dette gjer at [[Corioliskrafta]] får vinden til å blese inn mot lågtrykkssenteret i eit sirkulasjonsmønster. Den minste avstanden er 500 km eller om lag 5 grader frå ekvator.
# Det må alt eksistere ei vêrforstyrring. Systemet må ha ein slags sirkulasjon i tillegg til eit lågtrykkssenter.
Generelt kan tropiske syklonar berre oppstå frå tre forskjellige type system: [[tropisk bølgje|tropiske bølgjer]], [[ekstratropisk lågtrykk|ikkje-tropiske lågtrykk]] og gamle [[vêrfront|frontsystem]]. Tropiske syklonar oppstår oftast frå tropiske bølgjer. Desse fører ofte til torevêr, som kan utvikle seg til tropiske syklonar. Eit liknande fenomen er byer som oppstår over Vest-Afrika og flyttar seg inn i Atlanterhavet, ofte som ein del av [[den intertropiske konvergenssonen]]. Tropiske syklonar oppstår òg ofte frå tråg i øvre del av troposfæren, som er lågtrykk med kald kjerne i stor høgde. Ein tropisk syklon med varm kjerne kan oppstår når desse arbeider seg nedover i troposfæren og dannar kraftig [[konveksjon]]. Tropiske syklonar som oppstår utanfor den vanlege tida på året oppstår oftast på denne måten. Til sist kan gamle frontsystem stoppe opp over varmt hav og produsere auka konveksjon. Vist det oppstår ein sirkulasjon under denne konveksjonen kan det utvikla seg til ein tropisk syklon.
[[Fil:Global tropical cyclone tracks-edit2.jpg|mini|right|250px|Alle syklonbanar frå 1985 til 2005.]]
=== Område med tropiske syklonar ===
Dei fleste tropiske syklonar oppstår i eit område med mykje torevêr kalla [[den intertropiske konvergenssona]] som ligg nær ekvator og går rundt heile jorda.
Dei fleste av desse systema oppstår mellom 10 og 30 grader frå ekvator og 87 % blir danna innanfor 20 % frå ekvator. Fordi [[Corioliseffekten]] er med på å starte og oppretthalde rotasjonen til tropiske syklonar, oppstår dei sjeldan innanfor 5 grader frå ekvator der Corioliseffekten er minst. Men det har vore døme på tropiske syklonar som er blitt danna innanfor denne grensa.
==== Store havområde ====
Vanlegvis oppstår tropiske syklonar i eitt av sju store havområde. Desse er nordlege [[Atlanterhavet]], austlege og vestlege delar av [[Stillehavet]] (blir rekna som to område fordi tropiske syklonar sjeldan oppstår i sentrale område av Stillehavet), sørvestlege Stillehavet, det sørvestlege og søraustlege [[Indiahavet]] og det nordlege Indiahavet. Det vestlege Stillehavet er det mest aktive området, medan nordlege delar av Indiahavet er minst aktiv. På verdsbasis blir det danna i snitt 80 tropiske syklonar kvart år.
* '''Nord-Atlanteren:''' Det mest utforska av alle tropiske havområde og inkluderer [[Atlanterhavet]], [[Det karibiske havet]] og [[Mexicogolfen]]. Syklonane som oppstår her blir kalla ''tropiske orkanar''. Talet på tropiske syklonar som oppstår her kvart år kan variere frå over tjue til eit par stykk. Gjennomsnittet er rundt ti. Austkysten av [[USA]], [[Mexico]], [[Sentral-Amerika]], [[Karibia]] og [[Bermuda]] blir ofte råka av tropiske syklonar frå dette området. [[Venezuela]], søraustkysten av [[Canada]] og [[Macronesia]] kan òg blir råka innimellom. Mange av dei kraftigare syklonane oppstår nær [[Kapp Verde]]-øyane. Ein sjeldan gong kan orkanar nå [[Europa|Vest-Europa]]
* '''Det nordaustlege Stillehavet:''' Dette er det nest mest aktive havområdet i verda og det området med størst tettleik av tropiske syklonar. Syklonar som blir danna her kan råke vestlege område av [[Mexico]], [[Hawaii]], nordlege delar av [[Sentral-Amerika]], og i svært sjeldne tilfelle [[California]] og [[Arizona]]. Ein må derimot tilbake til 1800-talet sist gong ein orkan råka California.
* '''Det nordvestlege Stillehavet:''' Tropiske syklonar her kan råke [[Kina]], [[Japan]], [[Hong Kong]], [[Filippinane]], [[Taiwan]] og mange andre land i søraust Asia som [[Vietnam]], [[Sør-Korea]], delar av [[Indonesia]] og eit stort tal Stillehavsøyar. Dette er den mest aktive regionen og står for ein tredjedel av alle tropiske syklonar i verda. Dei tropiske syklonane i denne delen av verda blir kalla tyfonar eller taifunar. Kysten av Kina blir råka av flest tyfonar gjennom eit normalår, medan Filippinane i snitt får 18 tyfonar. Ein sjeldan gong kan ein tyfon eller ekstratopisk lågtrykk gå nordover til [[Sibir]] i [[Russland]].
* '''Det nordlege Indiahavet:''' Dette havområdet er delt inn i to regionar, [[Bengalbukta]] og [[Arabiahavet]], der Bengalbukta har opp til 5-6 gonger så stor aktivitet. Tropiske syklonar i dette området blir kalla ''syklonar''. Dette området har to sesongar, ein i april og mai, før [[monsun]]en sett i gang, og ein etter monsunen i oktober og november. Tropiske syklonar som blir danna i dette området har historisk sett tatt flest menneskeliv, mest kjend er syklonen Bhola som tok 200 000 liv i [[1970]]. Land som blir oftast råka av tropiske syklonar frå dette området er [[India]], [[Bangladesh]], [[Sri Lanka]], [[Thailand]], [[Myanmar]] og [[Pakistan]]. Ein sjeldan gong kan [[Den arabiske halvøya]] blir råka.
* '''Det sørvestlege Stillehavet:''' Tropiske syklonar i dette området råkar oftast [[Australia]] og [[Oceania]]. Ein sjeldan gong kan tropiske stormar nå [[Brisbane]] i Australia og [[New Zealand]], vanlegvis omforma til eit ekstratropisk lågtrykk.
* '''Det søraustlege Indiahavet:''' Her er det Australia og Indonesia som er utsett. I følgje Australian Bureau of Meteorology, er det området mellom Exmouth og Broome i Vest-Australia som oftast blir råka.
* '''Det sørvestlege Indiahavet:''' Dette havområdet er det minst utforska på grunn av mangel på historiske data. Syklonar som oppstår her kan råke [[Madagaskar]], [[Mosambikk]], [[Mauritius]], [[Reunion]], [[Komorane]], [[Tanzania]] og [[Kenya]].
==== Uvanlege område ====
[[Fil:Hurricane Vince eye 2005.jpg|mini|Orkanen Vince som oppstod i dei tempererte subtropiske områda av Atlanterhavet i 2005.]]
I følgjande område kan det ein sjeldan gong oppstå tropiske syklonar.
* '''Tempererte subtropiske strøk:''' Område lenger enn 30 grader vekk frå ekvator har vanlegvis ikkje forholda som skal til får å danne tropiske syklonar, og område meir enn førti grader frå ekvator vil motverke prosessane som skal til for at tropiske syklonar kan oppstå. Den avgjerande faktoren for at syklonane ikkje oppstår er havtemperaturen som er lågare i desse områda, medan større vindskjer i høgda er ein annan faktor. Innimellom kan tropiske syklonar flytte seg inn i desse områda, men ein sjeldan gong kan det òg oppstå syklonar her.
* '''Låge breiddegrader:''' Tropiske syklonar oppstår vanlegvis ikkje innanfor 10 grader frå ekvator fordi corioliskrafta er svak her. I desember 2001 blei tyfonen Vamei danna i [[Sør-Kina-havet]] og gjekk på land i Malaysia. Den oppstod i samband med torevêr på [[Borneo]].
* '''Søraustlege Stillehavet:''' Tropiske syklonar oppstår sjeldan i dette området, men når dei først oppstår er det ofte i samband med [[El Niño]]-episodar. Områda som vanlegvis blir råka er [[Polynesia]]. Under El Niño i 1982/83 blei Fransk Polynesia råka av seks tropiske syklonar på fem månader. Det er derimot ikkje registrert tropiske syklonar i vestlege delar av Sør-Amerika.
* '''Sør-Atlanteren:''' Ein kombinasjon av vindskjer og få tropiske forstyrringar frå den intertropiske konvergensonen gjer at tropiske syklonar sjeldan oppstår her. Dei siste 15-20 åra har ein derimot observert minst tre tropiske system, deriblant syklonen Catarina som gjekk på land i [[Brasil]] i januar 2004.
* '''[[Middelhavet]]:''' Ein har hatt uvêr med liknande struktur som tropiske syklonar, men forskarar er ueinige om desse var tropiske eller ikkje.
* '''[[Dei store sjøane]]:''' Stormsystem som likna tropiske syklonar blei danna i Huronsjøen i 1996. Denne danna eit auge i senteret, og kan ei kort stund ha vore ein tropisk syklon. Dei store sjøane har ei lang historie med syklonske stormar som har oppstått ein sjeldan gong.
=== Syklonsesong ===
På verdsbasis er det flest tropiske syklonar seint på sommaren, når havtemperaturen er på sitt høgaste. Kvart havområde har derimot sine eigne sesongmønster. På verdsbasis er mai den minst aktive månaden, medan september er den mest aktive.
I Nord-Atlanteren er den mest aktive sesongen frå juni og ut november, med flest orkanar frå seint i august og ut september. I det nordaustlege Stillehavet kjem orkanane derimot jamt og trutt heile sesongen. Det nordvestlege Stillehavet har tropiske syklonar året rundt, men færrast i februar og flest tidleg i september. I Det nordlege indiske havet er det mest vanleg med tropiske uvêr frå april til desember, men flest i mai og november.
På den sørlege halvkula byrjar den tropiske syklonaktiviteten seint i oktober og sluttar i mai, med flest syklonar frå midten av februar til tidleg mars.
{| border="1" cellspacing="0" cellpadding="3" class=wikitable
!colspan=6| Sesonglengde og sesongmiddel
|-
! Område !! Sesongstart !! Sesongslutt !! Tropisk storm (>17 m/s) !! Tropisk syklon (>32 m/s)!! Kategori 3+ tropisk syklon (>48 m/s)
|-
| Nordvest-Stillehavet || – || – || 26.7 || 16.9 || 8.5
|-
| Det sørindiske havet || Oktober || Mai || 20.6 || 10.3 || 4.3
|-
| Nordaust-Stillehavet || Mai || November || 16.3 || 9.0 || 4.1
|-
| Nord-Atlanteren || Juni || November || 10.6 || 5.9 || 2.0
|-
| Sørvest-Stillehavet || Oktober || Mai || 10.6 || 4.8 || 1.9
|-
| Det nordindiske havet || April || Desember || 5.4 || 2.2 || 0.4
|}
== Rørsle og bane ==
=== Storskala vind ===
Sjølv om tropiske syklonar er store system som genererer enorm mengder energi, blir rørsla deira på jordoverflata styrt av det storskala vindmønsteret. Denne rørsla blir omtalt som syklonen sin '''bane'''.
Den største krafta som styrer tropiske system er vind som sirkulerer rundt [[høgtrykk]]sområde. Over Nord-Atlanteren blir tropiske system styrt vestover av dei austlege vindane sør for Azorehøgtrykket, eit ofte vedvarande høgtrykk i Nord-Atlanteren. I tillegg vil den austlege [[passatvind]]en styre [[tropiske bølgjer]] vestover frå den afrikanske kysten mot Karibia og Nord-Amerika.
Desse bølgjene er ofte starten på det som kan utvikle seg til tropiske syklonar og er hovudårsaka til at orkanar i Nord-Atlanteren oppstår. Dei spelar og ei stor rolle i danninga av tropiske syklonar i det austlege Stillehavet.
I Indiahavet og i det vestlege Stillehavet (både nord og sør for ekvator), er danninga av tropiske syklonar ofte sterkt avhengig av rørsla til den intertropiske konvergenssonen, og rørsla deira er for det meste styrt av system på [[synoptisk skala]].
=== Corioliseffekten ===
[[Fil:Winston 2016-02-12 1200Z.png|mini|Infraraudt bilete av syklonen Winston, som viser rotasjon med klokka som følgje av Corioliseffekten.]]
Jordrotasjonen fører til ein akselerasjon på luftrørsler i atmosfæren, kalla [[Corioliseffekten]]. Denne akselerasjonen fører til at syklonske system snur seg mot polane visst det ikkje er kraftige luftstraumar som styrer dei. I nordlege område vil nordlege delar av syklonen ha vestlege vind, og Corioliskrafta drar den litt nordover. Den sørlege delen blir dradd sørover, men Corioliskrafta er svakare her. Derfor vil tropiske syklonar på nordlege halvkule som flyttar seg vestover, normalt snu seg nordover (og så ført austover), og syklonane på sørlege halvkule flyttar seg sørover viss ingen kraftige [[trykksystem]] motverkar rørsla. Corioliskrafta startar òg den syklonske rotasjonen, men er ikkje den drivande krafta som skapar den kraftige vinden. Årsaka til den kraftige vinden er bevaring av [[angulært moment]] (eller spinn) som gjer at luft som roterer i store sirklar rundt lågtrykket vil gå raskare og raskare når sirklane blir mindre og mindre i nærleiken av senteret.
=== Samspel med høgtrykk og lågtrykk ===
Når ein tropisk syklon flyttar seg til høge breiddegrader, kan systemet bli styrt av andre lågtrykk. Ein orkan som går frå Atlanteren til Mexicogolfen kan t.d. gå nord og så nordaustover visst eit lågtrykk passerer over Nord-Amerika.
=== Landkjenning ===
Offisielt kallar ein det landkjenning når senteret av stormen går inn på land. Ein kan naturlegvis oppleve svært kraftig vind før stormen har nådd land. Ofte vil eit område der stormen går i land ha opplevd halve tida stormen varer før stormen går på land.
== Oppløysing ==
Ein tropisk syklon kan løysast opp eller gå over til andre former for vêrsystem på fleire måtar:
* Han flyttar seg over land, og dermed får den ikkje lenger energien frå det varme havet som den treng for å drive seg sjølv. Dei fleste tropiske syklonar mistar raskt styrke etter dei har gått på land og går over til å bli eit lågtrykk etter ein dag og to. Dei kan derimot regenererast visst dei kjem ut over varmt hav igjen. Visst ein syklon kjem over eit fjellområde vil den raskt miste strukturen sin, sjølv om det berre er eit lita stund. Ein utdøyande syklon kan likevel få katastrofale følgjer i fjellområde, sidan dei framleis kan gi frå seg svært store mengder regn som kan føre til [[flaum]] og [[jordskred]].
* Han blir over det same havområdet for lenge, og trekker ut så mykje varme frå havoverflata at syklonen ikkje lenger får nok energi til å overleve.
* Han kjem ut for eit [[vindskjer]], som fører til at konveksjonen mistar retninga og varmekraftmaskina bryt saman.
* Han kan vere svak nok til å bli fanga opp av eit anna lågtrykk. Dei kan gå i saman og danne eit ikkje-syklonsk torevêr. Ei slik samanslåing kan derimot gje ekstra kraft til det ikkje-tropiske systemet.
* Han kjem over kaldare vatn. Dette betyr ikkje nødvendigvis at stormen døyr ut, men at stormen mistar sin tropiske struktur. Slike omformingar endar vanlegvis opp som ekstratropiske syklonar, eller det me på våre breiddegrader kjenner som lågtrykk.
Sjølv etter ein tropisk syklon har blitt omforma til å bli ekstratropisk eller har blitt løyst opp, kan den framleis ha styrke som ein tropisk storm (og av og til med vindstyrke opp i orkan), og gje frå seg store nedbørsmengder. Når tropiske syklonar når høgare breiddegrader eller går over land kan den smelte saman med [[vêrfront]]ar og utvikle seg til ein [[lågtrykk|frontsyklon]], òg kalla ekstratropisk syklon. I Atlanterhavet, har slike lågtrykk som har sitt opphav i tropiske orkanar innimellom gjeve svært kraftig vind og mykje regn når dei har kome inn over Europa. Flaumen og rekordnedbøren i [[Bergen]] i september 2005 var restane av ikkje mindre enn to slike tropiske orkanar kalla «Maria» og «Nate». Sjølv om desse lågtrykka ikkje førte til særleg med vind, gav dei frå seg ekstreme mengder nedbør, opp mot 200 mm enkelte stader på Vestlandet. Dette var første gong [[Meteorologisk Institutt]] ga namn til eit uvêr pga ekstrem nedbør. Uvêret blei kalla «[[Ekstremvêret Kristin|Kristin]]».
=== Kunstig modifisering av syklonar ===
På 1960- og 1970-talet gjorde den amerikanske regjeringa forsøk på å svekke orkanar i Project Stormfury ved å så skyene i syklonar med [[sølvjodid]]. Ein trudde at når ein gjorde dette så ville underkjølt vatn i dei ytre regnbanda fryse, noko som igjen ville føre til at den indre augeveggen kollapsa og på den måten reduserte vinden. Vinden i orkanen Debbie i 1969 minka med så mykje som 30 %, men tok seg opp att etter såinga var ferdig. I eit tidlegare forsøk i 1947 blei resultatet katastrofalt då ein orkan aust for [[Jacksonville]] i [[Florida]] plutseleg endra retning etter å ha blitt sådd og raste innover Savannah i Georgia. Prosjektet blei lagt ned då ein oppdaga at det var naturlege svingingar i prosessane som skaper augeveggen og i vindstyrken, og dette skapte då tvil om dei tidlegare prøveresultata. I dag veit ein at å så sølvjodid har liten effekt på regnbanda fordi det finst lite underkjølt vatn i desse skyene.
Ein har føreslått andre metodar som skal stoppe eller redusere utviklinga av tropiske syklonar. Blant anna skal ein ha føreslått å avkjøle havoverflata under tropiske syklonar ved å taue isberg inn i tropiske hav. Andre metodar ein har føreslått er å dekke havet med stoff som motverkar fordamping eller å bombe syklonen med atomvåpen for å bryte ned strukturen. Alle desse forslaga har ein vesentleg feil ved seg. Dei tropiske syklonane er rett og slett for store og energirike til at desse metodane vil ha særleg verknad.
== Konsekvensar ==
[[Fil:cyclone Deaths.svg|mini|Statistikk over dødsfall knytt til orkanar i USA frå 1970 til 1999.]]
Ein fullt utvikla tropisk syklon kan frigje varme på opp til 6x10<sup>14</sup> watt. Tropiske syklonar på ope hav fører til store bølgjer, kraftig regn og kraftig vind. Dette forstyrrar skipstrafikken og i visse tilfelle har skip gått ned. Dei største øydeleggingane får ein derimot når dei tropiske syklonane nærmar seg kystområda. Ein tropisk syklon som kjem inn mot land kan skape enorme øydeleggingar på fleire måtar:
* Kraftig vind - Vind av orkan styrke kan øydelegge køyretøy, bygningar, bruer osv. Kraftig vind tar med seg flygande gjenstandar i svært stor fart, og gjer det svært farleg å opphalde seg utandørs.
* [[Stormflod]] - Tropiske syklonar hevar havnivået, og kan skape flaum i kyststrøk. Dette er kanskje den verste effekten, og 80 % av tapte menneskeliv som følgje av tropiske syklonar har skjedd i samband med den første bølgja som treffer kysten.
* Kraftig regn - Torevêr i tropiske syklonar kan føre til ekstreme nedbørmengder. Elvar kan flaume over, vegar bli uframkommelege, og jordras kan oppstå. Særleg innlandet kan vere utsett for denne typen flaum.
* [[Tornado]]aktivitet - Den omfattande rotasjonen i tropiske syklonar kan skape tornadoar. Dei kan òg oppstå som følgje av mesoskala virvlar i augeveggen. Sjølv om desse tornadoane ikkje blir like kraftige som dei som oppstår i ikkje-tropiske forhold, kan dei skape enorme øydeleggingar. [[Fil:Hurricane katrina damage gulfport mississippi.jpg|mini|Etterverknadane av orkanen Katrina i Gulfport i Mississippi. Katrina er den orkanen som har gjort størst øydeleggingar i USA si historie]]
Ofte kan sekundæreffektane av tropiske syklonar vere vel så øydeleggande. Desse kan vere:
* Sjukdom - Dei våte forholda etter ein tropisk syklon, i tillegg til øydelagde sanitære fasilitetar og varmt tropisk klima, kan føre til epidemiar som kan ta liv lenge etter uvêret har passert. Ein av dei mest vanlege skadane etter ein orkan er at folk tråkkar på spiker, som kan føre til [[stivkrampe]] eller andre infeksjonar. Infeksjonar kan òg oppstå i kutt og sår ved å vasse i kloakkforureina vatn. Store område under vatn kan i tillegg føre til myggborne sjukdommar.
* Straumbrot - Tropiske syklonar kan ta straumen til hundretusenar av menneske (eller millionar om eit større urbant område er råka). Dette kan føre til vanskar med kommunikasjon og redningsarbeid.
* Transportvanskar - Tropiske syklonar kan øydelegge viktige bruer, overgangar og vegar. Dette kan føre til at transport av mat, reint vatn og medisinar kan bli svært vanskeleg.
=== Fordelar med tropiske syklonar ===
Sjølv om tropiske syklonar kan ta store mengder liv og gjere store øydeleggingar, er dei ein viktig faktor i nedbørsregime i område som ofte er plaga med tørke. Orkanar i det nordaustlege Stillehavet fører ofte fukt inn over det sørvestlege USA og delar av Mexico. Orkanen Camille stoppa ein lang tørkeperiode og enda vassmangelen i desse områda, men tok livet av 259 menneske og gjorde øydeleggingar for om lag $9,14 milliardar 2005.
Orkanar medverkar til den globale varmebalansen ved å føre varm og fuktig luft frå tropiske strøk til midlare breidder og polare område. Visst det ikkje hadde vore for denne varmetransporten mot polane (som og skjer ved andre prosessar enn syklonar), hadde dei tropiske områda vore mykje varmare enn dei er i dag. Stormflo og vind kan føre til store øydeleggingar for menneske, men blandar òg vassmassane ved store elveutløp, noko som er viktig for enkelte lokale fiskebestandar.
Når tropiske syklonar avkjøler havoverflata kan dette føre til at syklonar har vanskelegare for oppstå i det same området ei stund etterpå. I 2005 førte orkanen Dennis til det motsette, ved å varme opp havet etter seg, og medverka til intensiteten til den påfølgjande orkanen Emily.
== Langtidstrend av syklonsk aktivitet ==
Talet på stormar i Atlanterhavet har auka sidan 1995, men det er ingen spor etter ein global auke. Det årlege talet på tropiske syklonar er om lag 80-90. Ein meiner derimot å ha funne bevis for at intensiteten til syklonane har auka. Om intensiteten har auka eller ikkje, så har orkanar i Atlanterhavet i det minste fått dyrare konsekvensar sidan fem av dei ti dyraste orkanane i USA har skjedd etter 1990. Årsaka til dette kan vere både kraftigare orkanar og at folk busett seg i kystnære strøk som er sårbare for tropiske orkanar. Tidlegare busette folk seg i større byar langs kysten, og lite langs dei sårbare kyststrekningane. Dermed kan kraftige orkanar ha gått forbi utan at ein har oppdaga kor kraftige dei har vore. I dag har ein fly og satellittar som måler styrken til orkanane. Så sjølv om observasjonar tyder på auka styrke og aktivitet, er andre forskarar skeptiske til desse resultata.
Talet og styrken på orkanar i Atlanteren ser ut til å gå i syklusar på 50-70 år. Det var færre orkansesongar med aktivitet over normal frå 1970 til 1994, medan det var fleire øydeleggande orkanar frå 1926 til 1960. I 1933 var det danna 21 orkanar i Atlanteren, berre forbigått i 2005. Tidleg på 1900-talet var det og færre orkanar, medan det blei observert langt fleire på slutten av 1800-talet.
=== Global oppvarming ===
Eit spørsmål som ofte blir stilt er om global oppvarming kan eller vil føre til fleire og kraftigare tropiske syklonar. Alle klimatologar er einige om at ein enkel syklon eller ein enkel sesong ikkje treng ha noko samanheng med ei enkel årsak som global oppvarming eller naturlege variasjonar. Amerikanske forskarar ved National Oceanic and Atmospheric Administration (NOAA) har antyda at orkanane kan kome til å bli sterkare det neste hundreåret sidan jorda blir varma opp. Statistikk viser at talet på tropiske syklonar har minka dei siste tiåra på verdsbasis, men talet på syklonar som når kategori 4 og 5 har auka.
== Observasjon og varsling ==
[[Fil:Isidore091902-p3sunset.jpg|mini|Regnband frå orkanen Isidore fotografert i 7000 fot høgde i solnedgang]]
[[Fil:Epsilon_ISS012-E-10097.jpg|mini|Orkanen Epsilon vart danna og forsterka trass i svært ufordelaktige forhold for danning av syklonar]]
[[Fil:Maria, Bopha and Saomai 2006-08-07 0435Z.jpg|mini|Tre tropiske syklonar i tre forskjellige stadium. Den yngste, som her nettopp har blitt oppgradert til ein tropisk storm, manglar organiseringa til dei to andre]]
=== Observasjon ===
Intense tropiske syklonar er ei stor utfordring å observere sidan dei det meste av tida held seg over hav, der det er få målestasjonar. Observasjonar frå overflata er vanlegvis berre tilgjengeleg når uvêret passerer over øyer eller kystområde, eller visst eit skip er uheldig å hamne inn i det. Sjølv i desse tilfella får ein ofte berre målingar av utkanten av syklonen der forholda er mindre katastrofale.
Det er derimot mogeleg å gjere målingar på staden ved å sende spesielle observasjonsfly inn i syklonen. Desse flya fyk direkte inn i syklonen og tar målingar og fjernmålingar. Flyet slepp òg ein GPS sonde inne i syklonen. Dessa sondane måler temperatur, fukt, trykk og vind mellom flynivået og havoverflata. I 2005 testa ein ut eit fjernstyrt fly inn i den tropiske stormen Ophelia. Desse kan fly i lågare høgder som er farlegare for vanlege menneskestyrte fly.
Tropiske syklonar langt frå land blir følgd av vêrsatellittar som tar synlege og infraraude bilete frå verdsrommet. Når syklonen nærmar seg land kan landbaserte [[dopplerradar]]ar måle syklonen sin nøyaktige posisjon og intensitet minutt for minutt.
=== Varsling ===
På grunn av dei enorme kreftene som er involvert, prøver ein å føresjå den nøyaktige banen, posisjonen og styrken til tropiske system.
Ved hjelp av aukande kunnskap og store datamengder frå satellittar og andre sensorar, kan meteorologar med auka tryggleik varsle banen til dei tropiske syklonane. Superraske datamaskinar og avanserte simuleringar er til god hjelp for varslingsmeteorologane i dag, men sidan ein ikkje fullt ut forstår prosessane som ligg bak tropiske syklonar kan varsla framleis vere noko usikre.
== Klassifisering, terminologi og namngjeving ==
=== Styrke ===
Tropiske syklonar er klassifisert i tre hovudgrupper basert på intensitet: Tropisk lågtrykk, tropisk storm og tropisk syklon (som har forskjellige namn etter kor dei oppstår i verda).
Eit '''tropisk lågtrykk''' er eit organisert system av skyer og torebyer med ein definert overflatesirkulasjon og maksimal vind mindre enn 17 m/s. Det har ikkje noko auge, og har ikkje den spiralforma organiseringa som dei meir kraftige systema har.
Ein '''tropisk storm''' er eit organisert system av kraftige torebyer med ein definert overflatesirkulasjon og maksimal vind mellom 17 og 32 m/s. På dette stadiet har den tydelege syklonske forma byrja å utvikle seg, men den har heller ikkje noko auge i senteret. Nasjonale vêrsenter byrjar på dette stadiet å gje namn til uvêret.
Ein '''orkan''', '''tyfon''' eller '''syklon''' er eit system med vind høgare enn 33 m/s. Ein tropisk syklon dannar ofte eit [[auge (syklon)|auge]] i senteret av systemet, som er eit område med relativt roleg vêr og ofte svært lågt lufttrykk. Auget er ofte synleg på satellittbilete som eit lite sirkulært skyfritt område. Rundt auget er augeveggen som har det kraftigaste torevêret og den kraftigaste vinden. Skysystema sirkulerer rundt syklonen i eit tydeleg spiralforma mønster. Retninga på den syklonske sirkulasjonen kjem an på kva halvkule systemet er på. Rotasjonen går mot klokka på nordlege halvkule og med klokka på sørlege. Den kraftigaste vinden er blitt målt opp til 85 m/s (305 km/t). Intense og fullt utvikla syklonar kan somme tider danne ein augevegg som heller bort frå senteret, slik at auke liknar eit fotballstadion. Dette fenomenet blir derfor kalla «stadioneffekten».
I kraftige tropiske syklonar skjer det ei naturleg utskifting av augeveggen. Ofte når syklonane kjem opp mot den maksimale styrken sin har auget trekt seg saman inn mot midten og kan vere så liten som 8 til 25 km i radius. På dette stadiet kan enkelte av dei ytre regnbanda organisere seg til ein ytre ring av toreskyer som sakte flyttar seg innover mot senteret og trekker til seg fukt og momentum som den indre augeveggen treng. Dette merkar ein ved at vindstyrken går noko ned, medan trykket i senteret går litt opp. Til slutt vil den ytre augeveggen erstatte den indre, og syklonen kan vere tilbake til same styrke som tidlegare, og i enkelte tilfelle til og med kraftigare.
==== Kategoriar ====
Orkanar blir klassifisert ut i få maksimal vind ved å bruke [[Saffir-Simpson orkanskala]]. Ein ''Kategori 1''-orkan har lågast vind (119–153 km/t) medan ein ''Kategori 5''-orkan har høgast vind (over 249 km/t). Det amerikanske National Hurricane Center klassifiserer orkanar frå Kategori 3 og oppover som ''store orkanar''.
Det amerikanske «Joint Typhoon Warning Center» klassifiserer tyfonar i det vestlege Stillehavet som tropiske syklonar med vind større enn 118 km/t. Tyfonar med vind på om lag 241 km/t (67 m/s) er av same styrke som ein Kategori 4-orkan, og blir kalla ''Supertyfonar''.
Det australske «Bureau of Meteorology» brukar ein skala frå 1 til 5, men i motsetnad til Saffir-Simpson orkanskala, blir kategorien avgjort ut frå estimert maksimalt vindkast. Ein kategori 1-storm har kast mindre enn 126 km/t, medan kast i ein Kategori 5-syklon er minst 280 km/t.
Meteorologar i USA måler vinden i 10 meter høgde i løpet av 1 minutt for å avgjere styrken på ein orkan. Andre land bruker i staden eit 10 minutt middel, som er føreslått av World Meteorological Organization. Maksimal vind er som regel om lag 12 % lågare ved å midle over 10 minutt enn å midle over 1 min.
Kategoriseringa tar ikkje omsyn til øydeleggingar eller andre effektar, sidan den berre baserer seg på vindstyrke. Uvêr av lågare kategori kan gjere minst like stor skade som dei av høgare kategori, avhengig av lokalt terreng og totale nedbørsmengder. Ein Kategori 2-orkan som treffer eit urbant område vil sannsynlegvis gjere større skade enn ein stor Kategori 5 orkan som treffer utanom urbane område.
=== Regional terminologi ===
[[Fil:Typhoon_Odessa_1985.jpg|mini|Auge på tyfonen Odessa i Stillehavet, August 1985.]]
Ein har mange ord og uttrykk for å klassifisere tropiske syklonar alt etter kor dei oppstår og kor dei hamnar. At tropiske syklonar skiftar namn er derimot berre vanleg i Stillehavet, der orkanar frå det sentrale nordlege Stillehavet kan gå inn i Nordvest-Stillehavet og bli omtalt som tyfonar. Ein sjeldan gong har tyfonar gått inn i det sentrale Stillehavet og blitt kjend som ein orkan. I Nord-Atlanteren blir tropiske stormar som får vind over 32 m/s (som er orkan styrke på [[Beufortskala]]en) kalla ein orkan. I tillegg brukar amerikanarane tropisk storm for system med vind opp til 32 m/s, medan system med vind opp til 17 m/s blir kalla tropisk lågtrykk. For å måle desse vindstyrkane blir vinden midla over 1 minutt.
I Nordvest-Stillehavet gjeld dei same grensene for tropisk lågtrykk, tropisk storm og tyfon som i Nord-Atlanteren, men vinden er midla over 10 minutt. Her omtaler ein derimot system med vind mellom 25 og 32 m/s som ein kraftig tropisk storm.
I Det sørvestlege indiske havet er eit «tropisk lågtrykk» eit system med vind mellom 14 og 17 m/s. Ein «moderat tropisk storm» har vind frå 17 m/s til 24 m/s. Ein «kraftig tropisk storm» har vind frå 25 m/s til 32,5 m/s, medan ein kallar det ein «tropisk syklon» når vindstyrken er over det. I tillegg har dei «kraftig tropisk syklon» for system med vind mellom 46 m/s og 59 m/s og til slutt «svært kraftig tropisk syklon» når vindstyrken er over 60 m/s.
Det er mange lokale namn for tropiske syklonar, t.d. ''bagyo'' i Filippinane og ''taino'' i [[Haiti]].
=== Namngjeving av tropiske syklonar ===
Uvêr som kjem opp i styrke tropisk storm får eit namn slik at ein kan åtvare folk om den kommande stormen og vise at dette er ein potensiell farleg situasjon. Desse namna blir tatt frå lister ein har utarbeida fleire år i førevegen enten av komitear frå World Meteorological Organization eller av nasjonale vêrselskap som varslar stormane.
==== Namngjevingslister ====
I Nord-Atlanteren og det nordaustlege Stillehavet blir jentenamn og gutenamn brukt annakvar gong i alfabetisk rekkefølgje, der ein byrjar på «A» i starten av kvar sesong. «Kjønnet» på den første stormen kvar sesong varierer også annakvar gong frå år til år. Ein har seks lister med namn der ein byrjar på ei ny liste kvart år. Bokstavane «Q», «U», «X», «Y» og «Z» blir ikkje brukt i Nord-Atlanteren, medan «Q» og «U» ikkje blir brukt i det nordaustlege Stillehavet. Det er altså 21 namn kvart år i Nord-Atlanteren og 24 namn i det austlege Stillehavet. Ein byrjar på nytt med den første lista etter 6 år, men i tilfelle med øydeleggande orkanar blir namnet utelate frå lista og erstatta av eit nytt namn. Visst det til dømes skulle oppstå meir enn 21 stormar på ein sesong i Nord-Atlanteren, som det gjorde i 2005, blir resten av stormane namngjeve med bokstavar frå [[det greske alfabetet]].
I sentrale delar av Nord-Stillehavet er det «Central Pacific Hurricane Center» i [[Honolulu]] på [[Hawaii]] som gjev namn til orkanar. Her bruker ein fire lister der namna blir tatt i rekkefølgje uavhengig av år.
I det nordvestlege Stillehavet er det «WMO Typhoon Committee» som står for namnelistene. Her bruker ein fem lister med namn, der kvart av dei 14 nasjonane som er med i komiteen gjev to namn til kvar liste. Namna blir brukt i alfabetisk rekkefølgje ut frå nasjonen sitt engelske namn og utan omsyn til år og sesongar. I tillegg til namnet får stormen tildelt eit tal som kan variere frå land til land. Namna blir sletta frå lista visst dei har ført til store øydeleggingar.
Det australske «Bureau of Meteorology» har tre namnelister, ei liste kvar for det vestlege, nordlege og austlege Australia. Desse listene er alfabetiske og skiftar kjønn annakvar gong, men ein startar ikkje på nytt kvart år.
«RA I Tropical Cyclone Committee» lagar namnelister for det sørvestlege Indiahavet. Her bruker ein to separate lister der ei liste blir brukt to år om gongen. Her er det dei afrikanske landa som vanlegvis blir råka av syklonane som kjem opp med namn. Viss ei tropisk forstyrring når nivået «moderat tropisk storm» vest for 55 grader aust, så vil «Sub-regional Tropical Cyclone Advisory Center» på [[Madagaskar]] gje stormen eit passande namn. Visst den stormen oppstår mellom 55 og 90 grader aust, så vil «Sub-regional Tropical Cyclone Advisory Centre» på [[Mauritius]] gje stormen namn.
==== Nye namn på tropiske syklonar ====
I visse tilfelle kan den same tropiske syklonen få nytt namn.
* Visst ein tropisk storm går inn i det sørvestlege Indiahavet frå aust. I det sørvestlege Indiahavet kan Météo-France på [[Réunion]] gje namn til stormen, sjølv om han allereie har eit namn. I dette tilfellet vil «Joint Typhoon Warning Center» (JTWC) sette namna saman. T.d. syklonen Adeline-Juliet frå 2005.
* Før 2001 fekk ein tropisk storm nytt namn om den gjekk frå Atlanterhavet og inn i Stillehavet.
* Nye namn kan bli gjeve viss eit system med namn blir svekka, for så å oppstå som ein ny tropisk syklon i eit anna havområde på seinare tidspunkt.
==== Historia om namngjeving ====
Når europearar som reiste til Dei vestindiske øyane for mange hundre år sidan blei råka av ein orkan, blei den namngjeve etter kva [[helgen]] som hadde dag den dagen orkanen slo til. Visst ein ny storm slo til same dag i seinare år, fekk den namnet ''segundo'' (som tyder «den andre» på spansk).
Det var Clement Lindley Wragge, ein anglo-australsk meteorolog, som byrja å gje stormane menneskenamn. Han brukte jentenamn, namn på politikarar han ikkje likte og namn frå historia og mytologien.
Under [[den andre verdskrigen]] fekk tropiske syklonar feminine namn. Frå 1950 til 1954 blei det fonetiske alfabetet til marinen brukt i Nord-Atlanteren. Etter kvart som observasjonane av tropiske syklonar blei betre, tok ein i bruk namnelister for å betre følgje og lettare identifisere tropiske stormar og orkanar. I starten vart det berre brukt kvinnelege namn, og ein orkan blei omtalt som «ho». Dette blei etter kvart sett på som kjønnsdiskriminerande, og frå 1979 blei gutenamn òg tatt i bruk. 1979 var òg det første året ein gjorde klar ei liste før sesongen byrja.
== Kjende syklonar ==
Syklonen Bhola er den syklonen som har tatt mest menneskeliv nokon gong. Dette skjedde [[13. november]] [[1970]] då den trefte [[Bangladesh]], sannsynlegvis som ein Kategori 3 syklon. Ein har estimert dødstalet til å vere rundt 500 000 menneske. Området i Det nordlege indiske havet har generelt vorte hardast råka av tropiske syklonar og fleire syklonar dei siste 100 åra har tatt livet av meir enn 100 000 menneske.
I Atlanteren har minst tre orkanar tatt livet av meir enn 10 000 menneske. Orkanen Mitch førte i [[1998]] til jordras i Honduras som tok livet av 18 000 menneske, og endra landskapet så mykje at ein trengde nye kart over området i etterkant.
Orkanen som gjekk i land i [[Galveston]] i [[Texas]] i [[1900]], estimert til å vere ein Kategori 4 orkan, tok livet av 8000–12 000 menneske, og er den naturkatastrofen som har tatt flest menneskeliv i USA. I 1780 tok derimot ein orkan livet av rundt 22 000 menneske på [[Antillane]].
[[Fil:Typhoonsizes.jpg|right|frame|Storleiken til tyfonen Tip samanlikna med den tropiske syklonen Tracy og USA.]]
Den kraftigaste syklonen som er observert var tyfonen Tip i det nordvestlege Stillehavet i 1979. Den hadde eit trykk på berre 870 hPa i senteret og vindstyrke opp i 305 km/t. Den vart svekka før den råka Japan. Fleire andre syklonar har derimot hatt vindstyrke over 300 km/t. Orkanen Camille er den einaste syklonen som faktisk har gått på land med ein slik vindstyrke. Til samanlikning er dette vindstyrke ein vanlegvis ser i ein middels kraftig [[tornado]], men Camille, som alle andre tropiske syklonar, er mykje meir vidstrakte og har lenger levetid enn tornadoar.
Tip var i tillegg den største syklonen som er observert med vind av storm styrke over eit 2170 km breitt område. Normal storleik på ein tropisk syklon er 480 km. Den minste stormen som er observert er syklonen Tracy frå 1974 som var rundt 100 km brei. Den råka Darwin i Australia.
[[Fil:Brazil hurricane 2004-03-26.jpg|mini|Den første observerte syklonen i Sør-Atlanteren, syklonen Catarina frå 2004.]]
[[26. mars]] [[2004]] blei syklonen Catarina den første som er blitt observert i Sør-Atlanteren. Den råka Brasil.
Ein tropisk syklon treng ikkje bli veldig kraftig for å gjere store øydeleggingar. Den tropiske stormen Thelma drap i november 1991 tusenvis på Filippinane, sjølv om den aldri nådde tyfon styrke. Her var det flaum, og ikkje vind, som skapte øydeleggingane. Den tropiske orkanen Jeanne i 2004, gjorde mesteparten av øydeleggingane sine og tok livet av 3000 menneske på [[Haiti]], medan den framleis berre var eit tropisk lågtrykk.
[[29. august]] [[2005]] råka orkanen Katrina [[Lousiana]] og [[Mississippi]] og skapte ein av dei verste naturkatastrofane i USA si historie. Dødstala kom opp i minst 1836 menneske, hovudsakleg som følgje av flaum i [[New Orleans]]. Ein har estimert at orkanen øydela for $81,2 milliardar (om lag 500-550 milliardar kroner).
{{syklonar}}
== Referansar ==
* [http://www.aoml.noaa.gov/hrd/tcfaq/tcfaqHED.html Atlantic Oceanographic and Meteorological Laboratory]
* [http://www.bom.gov.au/weather/wa/cyclone/about/faq/index.shtml#definitions Australian Governement - Bureau of Meteorology] {{Webarchive|url=https://web.archive.org/web/20061005171430/http://www.bom.gov.au/weather/wa/cyclone/about/faq/index.shtml#definitions |date=2006-10-05 }}
* [http://earthobservatory.nasa.gov/Newsroom/NewFils/Fils.php3?img_id=17164 Tropiske syklonar kjøler ned havtemperaturen]
* [http://www.ucar.edu/news/features/hurricanes/index.jsp University Corporation for Atmospheric Research Hurricanes] {{Webarchive|url=https://web.archive.org/web/20090425013318/http://www.ucar.edu/news/features/hurricanes/index.jsp |date=2009-04-25 }}
* [http://www.bom.gov.au/bmrc/pubs/tcguide/ch1/figures_ch1/figure1.9.htm Bureau of Meteorology - Tropiske syklonar sine banar 1979-88] {{Webarchive|url=https://web.archive.org/web/20061019193537/http://www.bom.gov.au/bmrc/pubs/tcguide/ch1/figures_ch1/figure1.9.htm |date=2006-10-19 }}
* [http://www.aoml.noaa.gov/hrd/iwtc/AndersonBerry5-1.html Samfunnsmessige konsekvensar av tropiske syklonar]
* [http://www.hko.gov.hk/./publica/reprint/r170.pdf Effektar av El Niño (PDF)]
* [https://www.e-education.psu.edu/public/meteo/upperlevel_lows.html Grunnlag for varsling av tropiske system] {{Webarchive|url=https://web.archive.org/web/20060907032236/https://www.e-education.psu.edu/public/meteo/upperlevel_lows.html |date=2006-09-07 }}
* Whipple, A. (1982, 1984)"Storm" Time Life Books ISBN 0-8094-4312-0
* Scotti, R. A. (2003)"Sudden Sea" Little, Brown, and Company ISBN 0-316-73911-1
* [http://www.nhc.noaa.gov/HAW2/english/inland_flood.shtml Flaum i innlandet]
* Christopherson, R. (1992) "Geosystems An Introduction to Physical Geography" pp 222–224. Macmillan Publishing Company New York. ISBN 0-02-322443-6
* [http://www.zurich.com/main/productsandsolutions/industryinsight/2005/july2005/industryinsight20050711_004.htm Om orkanar]
* [http://wind.mit.edu/~emanuel/anthro2.htm Kerry Emanuel si side om tropiske syklonar]
* [http://www.realclimate.org/index.php?p=181 Samanheng mellom tropiske syklonar og globaloppvarming]
* [http://www.nature.com/nature/journal/v436/n7051/full/nature03906.html Nature Vol. 436, pp 686–688]
* [http://zfacts.com/metaPage/lib/Webster_Science_2005_Hurricanes.pdf Webster Science 2005] {{Webarchive|url=https://web.archive.org/web/20080720121425/http://zfacts.com/metaPage/lib/Webster_Science_2005_Hurricanes.pdf |date=2008-07-20 }}
* Science. Volume 309, pp 1844–1846
* [http://zfacts.com/p/49.html Zfacts]
* [http://www.hurricanehunters.com/ Hurricane Hunters]
* [http://www.sunherald.com/mld/sunherald/12699210.htm Ubemanna fly og orkanar]
* [http://users.ce.ufl.edu/~fcmp/ Florida Coastal Monitoring Program]
* [http://www.weather.gov/directives/sym/pd01006004curr.pdf Definisjonar (PDF)]
* [http://www.wmo.ch/web/www/TCP/OperationPlans/TCP-12%20Edition%202006-English.pdf Handlingsplan for det sørvestlege Indiske Hav] {{Webarchive|url=https://web.archive.org/web/20060921213201/http://www.wmo.ch/web/www/TCP/OperationPlans/TCP-12%20Edition%202006-English.pdf |date=2006-09-21 }}
* [http://earthobservatory.nasa.gov/Library/Hurricanes/printall.php Dei største stormane på jorda - earthobservatory.nasa.gov] {{Webarchive|url=https://web.archive.org/web/20060930051535/http://earthobservatory.nasa.gov/Library/Hurricanes/printall.php |date=2006-09-30 }}
* [http://maps.csc.noaa.gov/hurricanes/index.htm NOAA - historiske orkanar] {{Webarchive|url=https://web.archive.org/web/20060929143802/http://maps.csc.noaa.gov/hurricanes/index.htm |date=2006-09-29 }}
* [http://encarta.msn.com/media_701500587_761565992_-1_1/Major_Hurricanes_Typhoons_Cyclones_and_other_Storms_since_1900.html Encarta online - store tropiske syklonar] {{Webarchive|url=https://web.archive.org/web/20080228211949/http://encarta.msn.com/media_701500587_761565992_-1_1/Major_Hurricanes_Typhoons_Cyclones_and_other_Storms_since_1900.html |date=2008-02-28 }}
* American Meteorological Society «Eastern North Pacific Tropical Cyclones of 1982» May 1983 Monthly Weather Review
== Bakgrunnsstoff ==
{{commons2|Tropical cyclone}}
=== Varsling og åtvaringar ===
* [http://www.allweatherfriends.com/index.php?page=13/ AllWeatherFriends.com - Stormbanar og varsling]
* [http://severe.worldweather.org/ World Meteorological Organization informasjon om uvêr - oversikt over tropiske syklonar]
* [http://www.solar.ifa.hawaii.edu/Tropical/tropical.html Hawaii.edu tropiske syklonar i verda] {{Webarchive|url=https://web.archive.org/web/20061005082218/http://www.solar.ifa.hawaii.edu/Tropical/tropical.html |date=2006-10-05 }}
* [http://www.npmoc.navy.mil/jtwc.html Joint Typhoon Warning Center - Det vestlege Stillehavet] {{Webarchive|url=https://web.archive.org/web/20061118080419/https://www.npmoc.navy.mil/jtwc.html |date=2006-11-18 }}
* [http://www.metservice.co.nz/ MetService, New Zealand - dekkjer Tasmaniahavet og sørlege Stillehavet]
* [http://www.bom.gov.au/weather/ Australian Bureau of Meteorology - dekkjer sørlege halvkule frå 90° E til 160° E]
* [http://www.atl.ec.gc.ca/weather/hurricane/index_e.html Canadian Hurricane Centre - Nordvest-Atlanteren] {{Webarchive|url=https://web.archive.org/web/20120716231849/http://www.ec.gc.ca/ouragans-hurricanes/ |date=2012-07-16 }}
* [http://www.hurricanewarning1.com/ Global oversikt over tropiske syklonar]
* [http://www.infoage.org/tiros1-2.html Side om dei første satellittovervakingane]{{Død lenkje|date=oktober 2022 |bot=InternetArchiveBot |fix-attempted=yes }}
=== Regionale senter for tropiske syklonar ===
* [http://www.nhc.noaa.gov/ US National Hurricane Center]
* [http://www.prh.noaa.gov/hnl/cphc/ Central Pacific Hurricane Center] {{Webarchive|url=https://web.archive.org/web/20110923144245/http://www.prh.noaa.gov/hnl/cphc/ |date=2011-09-23 }}
* [http://www.jma.go.jp/en/typh/ Japan Meteorological Agency]
* [http://www.imd.gov.in/ India Meteorological Department]
* [http://www.meteo.fr/temps/domtom/La_Reunion/ Météo-France - La Reunion]
* [http://www.met.gov.fj/advisories.html Fiji Meteorological Service] {{Webarchive|url=https://web.archive.org/web/20061101220959/http://www.met.gov.fj/advisories.html |date=2006-11-01 }}
=== Tidlegare uvêr ===
* [http://www.solar.ifa.hawaii.edu/Tropical/summary.html Oppsummering av årlege tropiske stormar] {{Webarchive|url=https://web.archive.org/web/20080221044728/http://www.solar.ifa.hawaii.edu/tropical/summary.html |date=2008-02-21 }}*[http://hurricanehut.tripod.com The Hurricane Hut - informasjon om alle stormar sidan 1950] {{Webarchive|url=https://web.archive.org/web/20070708020146/http://hurricanehut.tripod.com/ |date=2007-07-08 }}
* [http://weather.unisys.com/hurricane/ Unisys historiske data om tropiske orkanar]
* [http://hurricanes.tjs-labs.com TJS Labs historiske orkandatabase].
* [http://www.hpc.ncep.noaa.gov/tropical/rain/tcrainfall.html Nedbørmengder i samband med tropiske syklonar] {{Webarchive|url=https://web.archive.org/web/20090116173553/http://www.hpc.ncep.noaa.gov/tropical/rain/tcrainfall.html |date=2009-01-16 }}
* [http://www.super70s.com/Super70s/Tech/Nature/Disasters/Hurricanes/ Orkanar på 1970-talet] og [http://www.awesome80s.com/Awesome80s/Tech/Nature/Disasters/Hurricanes/ 1980-talet]
* [http://www.bom.gov.au/bmrc/pubs/tcguide/ch1/figures_ch1/figure1.9.htm Tropiske syklonbanar 1979-1988.] {{Webarchive|url=https://web.archive.org/web/20061019193537/http://www.bom.gov.au/bmrc/pubs/tcguide/ch1/figures_ch1/figure1.9.htm |date=2006-10-19 }}
* [http://www.em-dat.net EM-DAT internasjonal katastrofedatabase]
=== Forskjellig ===
* [http://hurricanes.wikia.com/wiki/Main_Page Orkan Wiki (engelsk)]
* [http://www.SatelliteWeather.com Satellittbilete frå noverande tropiske syklonar]
* [http://www.webcamplaza.net/cams/hurricane1.html WebCamPlaza - ei samling av webkamera frå orkanutsette stader i USA]
* [http://www.worldhurricanes.com/ www.worldhurricanes.com]
* [http://www.hurricanealley.net Hurricane Alley - følgjer noverande tropiske system]
* [http://www.bom.gov.au/bmrc/pubs/tcguide/ch1/ch1_3.htm Global klimatologi] {{Webarchive|url=https://web.archive.org/web/20010628191622/http://www.bom.gov.au/bmrc/pubs/tcguide/ch1/ch1_3.htm |date=2001-06-28 }}
* [http://www.stormcarib.com Caribbean Hurricane Network]
* [http://www.mindspring.com/~jbeven/intr0008.htm Om "orkanen" i Middelhavet 1995] {{Webarchive|url=https://web.archive.org/web/20110605120502/http://www.mindspring.com/~jbeven/intr0008.htm |date=2011-06-05 }}
* [http://html.wesh.com/sh/idi/weather/hurricanes/hurricanetracker.html Følgjer orkanar i Atlanterhavet] {{Webarchive|url=https://web.archive.org/web/20061112234804/http://html.wesh.com/sh/idi/weather/hurricanes/hurricanetracker.html |date=2006-11-12 }}
* [http://www.metoffice.com/weather/tropicalcyclone/Fils.html Bilete og filmar av tropiske syklonar]
* [http://zfacts.com/p/49.html Global oppvarming og orkanar]
* [https://www.cnmoc.navy.mil/nmosw/tr8203nc/0start.htm Hurricane Havens Handbook for the North Atlantic Ocean] {{Webarchive|url=https://web.archive.org/web/20050924102610/https://www.cnmoc.navy.mil/nmosw/tr8203nc/0start.htm |date=2005-09-24 }}
* [http://tsr.mssl.ucl.ac.uk/ Tropisk stormfare] {{Webarchive|url=https://web.archive.org/web/20060925205856/http://tsr.mssl.ucl.ac.uk/ |date=2006-09-25 }}
* [http://garnet.acns.fsu.edu/~jelsner/www/ Statistisk modellering av orkanaktivitet] {{Webarchive|url=https://web.archive.org/web/20060930065540/http://garnet.acns.fsu.edu/~jelsner/www/ |date=2006-09-30 }}
* [http://www.opendemocracy.net/globalization-climate_change_debate/links_2870.jsp Orkanar, global oppvarming og global politikk]
* [http://hurricane.expert-dictionary.com/ Orkanordbok] {{Webarchive|url=https://web.archive.org/web/20060818133639/http://hurricane.expert-dictionary.com/ |date=2006-08-18 }}
{{tidlegare utvald|år=2006}}
{{Autoritetsdata}}
[[Kategori:Uvêr]]
[[Kategori:Vêr]]
[[Kategori:Syklonar]]
[[Kategori:Tropane]]
[[Kategori:Tropisk meteorologi]]
[[Kategori:Tropiske syklonar| ]]
4qjvjxp6yxldvini92sjgo8l9fzoazu
Syklon
0
46456
3650906
3427580
2026-04-19T07:41:16Z
Ranveig
39
Nokre ref. frå en:
3650906
wikitext
text/x-wiki
[[Fil:Low pressure system over Iceland.jpg|mini|upright=1.3|Ekstratropisk syklon nær Island.]]
[[Fil:Animated hurricane.gif|frame|right|[[Radar]]bilete av ein [[tropisk syklon]] på den nordlege halvkula.]]
Ein '''syklon''' er eit område med [[lågtrykk|lågt trykk]] i [[jordatmosfæren|atmosfæren]] som er karakterisiert ved [[vind]] som på nordlege halvkule bles mot klokka i ein spiral inn mot senteret av lågtrykket.<ref name="BBCCycDef">{{cite web |author = BBC Weather Glossary |title = Cyclone|date= Juli 2006|publisher= [[BBC]]|url = http://www.bbc.co.uk/weather/weatherwise/glossary/c.shtml|access-date = 2006-10-24 |archive-url = https://web.archive.org/web/20060829214837/http://www.bbc.co.uk/weather/weatherwise/glossary/c.shtml |archive-date = 2006-08-29}}</ref><ref name="UCARCycDef">{{cite web |title = UCAR Glossary — Cyclone |publisher = University Corporation for Atmospheric Research |url = http://meted.ucar.edu/satmet/goeschan/glossary.htm#c |access-date = 2006-10-24 |archive-date = 2018-12-25 |archive-url = https://web.archive.org/web/20181225164339/https://www.meted.ucar.edu/sign_in.php?go_back_to=%2Fsatmet%2Fgoeschan%2Fglossary.htm#c |url-status = live }}</ref>
På den sørlege halvkule er vindretninga med klokka rundt syklonen.<ref name="AMSCcDef">{{cite web |title = Cyclonic circulation |author = Glossary of Meteorology |date = Juni 2000 |publisher = [[American Meteorological Society]] |url = http://glossary.ametsoc.org/wiki/Cyclonic_circulation |access-date = 2008-09-17 |archive-date = 2018-12-25 |archive-url = https://web.archive.org/web/20181225164334/http://glossary.ametsoc.org/wiki/Cyclonic_circulation |url-status = live}}</ref><ref name="AMSCycDef">{{cite web |title = Cyclone |date = June 2000 |author = Glossary of Meteorology |publisher = [[American Meteorological Society]] |url = http://glossary.ametsoc.org/wiki/Cyclone |access-date = 2008-09-17 |archive-date = 2018-12-25 |archive-url = https://web.archive.org/web/20181225164340/http://glossary.ametsoc.org/wiki/Cyclone |url-status = live }}</ref>
Syklon er eit generelt [[meteorologi]]sk omgrep som dekkjer ei rekkje forskjellige roterande system, som [[tropisk syklon|tropiske syklonar]], [[ekstratropisk syklon|ekstratropiske syklonar]] og [[tornado]]ar, og blir sjeldan brukt utan at det er spesifisert kva type syklon det er snakk om.
== Opphav ==
Ordet «syklon» innført av [[Henry Piddington]], ein tilsett ved [[Det britiske austindiakompaniet]] som gav ut 40 artiklar om [[tropiske stormar]] frå [[Calcutta]] mellom 1836 og 1855 i ''[[The Journal of the Asiatic Society]]''.<ref>{{cite ODNB|author=Blyth, Caroline |chapter=Piddington, Henry (1797–1858)| title= Oxford Dictionary of National Biography|year= 2004 |doi=10.1093/ref:odnb/22221 }}</ref>
Ordet er avleidd frå gresk {{lang|el|κύκλος}} (kýklos), som tyder ‘sirkel’ eller ‘ring’ på gammalgresk, på grunn av sirkelrørsla til vinden i ein syklon.<ref>{{cite web|url=https://www.nesdis.noaa.gov/news/hurricanes-cyclones-and-typhoons-whats-name|title=Hurricanes, Cyclones and Typhoons: What's in a Name?|date=2025-05-28|work=National Environmental Satellite, Data, and Information Service|publisher=National Oceanic and Atmospheric Administration|access-date=2025-10-08}}</ref>
Andre meiner at Piddington tok ordet frå det greske ordet «cyclos» som tyder «kveila som ein slange».
== Struktur ==
Det er fleire strukturelle eigenskapar som er felles for alle typar syklonar. Senteret av syklonen er området som har lågast [[lufttrykk]].<ref name="FAQ eye">{{cite web|author=[[Chris Landsea]] and Sim Aberson|title=Subject: A11) What is the "eye"? How is it formed and maintained ? What is the "eyewall"? What are "spiral bands"?|url=http://www.aoml.noaa.gov/hrd/tcfaq/A11.html|date=2004-08-13|publisher=[[Atlantic Oceanographic and Meteorological Laboratory]]|access-date=2009-12-28|archive-date=2006-06-14|archive-url=https://web.archive.org/web/20060614205417/http://www.aoml.noaa.gov/hrd/tcfaq/A11.html|url-status=live}}</ref> I fullt utvikla tropiske og subtropiske syklonar vert senteret kalla «auget».<ref name="FAQ eye"/> Nær senteret av syklonen må [[trykkgradientkraft]]a og [[corioliskrafta]] vere i tilnærma balanse, elles ville syklonen ha kollapsa inn i seg sjølv på grunn av trykkskilnadane. Lufta strøymer rundt syklonar mot klokka på nordlege halvkule og med klokka på den sørlege halvkula på grunn av [[corioliseffekten]].<ref>{{cite web|url=http://homepages.abdn.ac.uk/wpe001/meteo/metoh8.pdf|title=The Atmosphere in Motion|publisher=[[University of Aberdeen]]|access-date=2011-09-11|url-status=dead|archive-url=https://web.archive.org/web/20121018224041/http://homepages.abdn.ac.uk/wpe001/meteo/metoh8.pdf|archive-date=2012-10-18}}</ref>
== Kategoriar ==
Dei forskjellige syklontypane har i tillegg spesielle eigenskapar som gjer at dei kan definerast som [[polar syklon|polare syklonar]], [[polart lågtrykk|polare lågtrykk]], [[ekstratropisk syklon|ekstratropiske syklonar]], [[subtropisk syklon|subtropiske syklonar]], [[tropisk syklon|tropiske sykloner]] eller [[mesosyklon]]ar (som er dei seks hovudgruppene).
=== Polar syklon ===
Ein '''[[polar syklon]]''' (òg kalla arktisk syklon) er eit stort område med lågtrykk. Dei er ikkje det same som polare lågtrykk, som har likskapstrekk med tropiske syklonar. Syklonen blir styrka om vinteren og veiknar om sommaren.<ref>{{cite web|author=Halldór Björnsson |date=2005-01-19 |url=http://andvari.vedur.is/~halldor/HB/Met210old/GlobCirc.html |title=Global circulation |publisher=Veðurstofa Íslands |access-date=2008-06-15 |url-status=dead |archive-url=https://web.archive.org/web/20110807132251/http://andvari.vedur.is/~halldor/HB/Met210old/GlobCirc.html |archive-date=2011-08-07 }}</ref>
Ein polar syklon dekkar vanlegvis eit område på 1000-2000 km<ref>{{cite web |last1=Garima |first1=Khera |title=A vortex of winds-Cyclones – Geography and You |url=https://geographyandyou.com/a-vortex-of-winds-cyclones/ |access-date=14. januar 2021 |archive-date=2. mars 2021 |archive-url=https://web.archive.org/web/20210302232449/https://geographyandyou.com/a-vortex-of-winds-cyclones/ |url-status=live }}</ref> der lufta strøymer mot klokka (på den nordlege halvkula).
=== Polart lågtrykk ===
[[Fil:Polar low.jpg|mini|Polart lågtrykk i [[Barentshavet]] 27. februar 1987.]]
Eit '''[[polart lågtrykk]]''' er eit småskala lågtrykkssystem som ein finn i havområde på polsida av [[polarfronten]] på den nordlege og sørlege halvkula. Systemet har vanlegvis ein horisontal lengdeskala på mindre enn 1000 km og varer berre ein dag og to. Fordi polare lågtrykk oppstår i havområde der det ofte er langt mellom observasjonar, er dei ofte vanskelege å oppdage, og kan vere ein stor fare for skipstrafikk og gass- og oljeplattformar.
=== Ekstratropisk ===
[[Fil:UK-Cyclone.gif|mini|250px|Eit oppdikta synoptisk plott av ein ekstratropisk syklon som treffer Storbritannia. Dei blå pilene mellom [[isobar]]ane viser vindretning. Legg merke til den okkluderte, kalde og varme fronten]]
Ein '''[[ekstratropisk syklon]]''' er eit [[lågtrykk]] på [[synoptisk skala]] som ein finn på midlare breidder, og som verken har eigenskapane til tropiske og polare syklonar. Dei oppstår i samband med [[vêrfront]]ar og horisontale [[temperaturgradient]]ar i område kjend som [[baroklinitet|barokline soner]]. Dette er den typen syklon me her i Noreg kjenner som [[lågtrykk]].
Omgrepet «ekstratropisk» tyder at syklonen oppstår utanfor tropane, på midlare breidder, men i visse tilfelle kan tropiske syklonar bli omforma til ekstratropiske syklonar.
Sjølv om ekstratropiske syklonar som regel vert klassifisert som barokline, siden dei blir danna i område med temperaturgradientar, kan dei seint i livssyklusen bli [[barotropi|barotrope]] når temperaturfordelinga rundt syklonen er meir jamnt fordelt.
=== Subtropisk ===
Ein '''[[subtropisk syklon]]''' er eit vêrsystem som har nokre av eigenskapane til tropiske syklonar, og nokre av eigenskapane til ekstratropiske syklonar. Dei kan oppstå i område frå ekvator til 50º nord eller sør.
==== Tropisk ====
[[Fil:Cyclone Catarina from the ISS on March 26 2004.JPG|mini|Syklonen Catarina, ein sjeldan tropisk syklon i Sør-Atlanteren sett frå Den internasjonale romstasjonen 26. mars 2004.]]
Ein '''[[tropisk syklon]]''' er eit stormsystem som blir driven av frigjeven varme frå fuktig luft som stig og [[kondensasjon|kondenserer]]. Omgrepet tyder at syklonen oppstår i [[tropane]] og har syklonske eigenskapar. Sidan det er varmemekanismar som driv dei, er dette system med varm kjerne, medan dei fleste andre syklonar har kald kjerne.
Tropiske syklonar har forskjellige namn etter kvar dei oppstår og kva styrke dei har, slik som '''orkan''', '''tyfon''', '''syklon''', '''tropisk storm''' og '''tropisk lågtrykk'''.
Tropiske syklonar kan produsere ekstremt kraftig vind, [[tornado]]ar, enorme mengder [[regn]], høge [[bølgje]]r og [[stormflod]]. Det kraftige regnet og stormfloda kan føre til omfattande [[flaum]]. Sjølv om konsekvensane ofte er katastrofale, kan dei t.d. ende lange [[tørke]]periodar. Dei fører varme bort frå tropane, og spelar ei viktig rolle i den globale [[atmosfærisk sirkulasjon|atmosfæriske sirkulasjonen]] som opprettheld likevekt i [[troposfæren]].
=== Mesoskala ===
Ein '''[[mesosyklon]]''' er eit stort område med vertikalt roterande luft, vanlegvis i samband med dei stigande luftrørslene til [[supercelle]]r. Mesosyklonar fører ofte til kraftig vind på overflata og kraftig [[hagl]]. I tillegg er dei ein av hovudårsakene til danninga av [[tornado]]ar.
== Kjelder==
{{Referansar}}
* [https://web.archive.org/web/20011127021405/http://www.bbc.co.uk/weather/weatherwise/glossary/c.shtml BBC Weather Gloassary - Cyclone]
* [http://meted.ucar.edu/satmet/goeschan/glossary.htm#c UCAR Glossary - Cyclone.] University Corporation for Atmospheric Research.
* Keith C. Heidorn, PhD (2003-10-01). [http://www.islandnet.com/~see/weather/history/cyclone-word.htm The Weather Doctor: Cyclone Origin.]
* [http://banglapedia.search.com.bd/HT/P_0168.htm Banglapedia: Piddington, Henry.]
* [http://www.imdmumbai.gov.in/cycdisasters.htm Cyclone Related Disasters - What Are Cyclones?. India Meteorological department] {{Webarchive|url=https://web.archive.org/web/20051025071035/http://www.imdmumbai.gov.in/cycdisasters.htm |date=2005-10-25 }}
* Richard Conan-Davies BSc Dip Ed (2003-05-14). [http://clearlyexplained.com/nature/earth/disasters/cyclones.html ClearlyExplained.com - Cyclones.] {{Webarchive|url=https://web.archive.org/web/20070117022933/http://clearlyexplained.com/nature/earth/disasters/cyclones.html |date=2007-01-17 }}
* Dr. DeCaria (2005-12-07). [http://www.atmos.millersville.edu/~adecaria/ESCI241/esci241_lesson16_cyclones.html ESCI 241 – Meteorology; Lesson 16 – Extratropical Cyclones.] {{Webarchive|url=https://web.archive.org/web/20080208224320/http://www.atmos.millersville.edu/~adecaria/ESCI241/esci241_lesson16_cyclones.html |date=2008-02-08 }} Department of Earth Sciences, Millersville University, Millersville, Pennsylvania.
* Robert Hart and Jenni Evans (2003). [http://ams.confex.com/ams/pdfpapers/70524.pdf Synoptic Composites of the Extratropical Transition Lifecycle of North Atlantic TCs as Defined Within Cyclone Phase Space]. American Meteorological Society.
{{Syklonar}}
{{Autoritetsdata}}
[[Kategori:Syklonar| ]]
[[Kategori:Virvlar]]
c53z4ju09l1thnrtj3cfvdfz9ld972f
3650907
3650906
2026-04-19T08:00:44Z
Ranveig
39
+Ref.
3650907
wikitext
text/x-wiki
[[Fil:Low pressure system over Iceland.jpg|mini|upright=1.3|Ekstratropisk syklon nær Island.]]
[[Fil:Animated hurricane.gif|frame|right|[[Radar]]bilete av ein [[tropisk syklon]] på den nordlege halvkula.]]
Ein '''syklon''' er eit område med [[lågtrykk|lågt trykk]] i [[jordatmosfæren|atmosfæren]] som er karakterisiert ved [[vind]] som på nordlege halvkule bles mot klokka i ein spiral inn mot senteret av lågtrykket.<ref name="BBCCycDef">{{cite web |author = BBC Weather Glossary |title = Cyclone|date= Juli 2006|publisher= [[BBC]]|url = http://www.bbc.co.uk/weather/weatherwise/glossary/c.shtml|access-date = 2006-10-24 |archive-url = https://web.archive.org/web/20060829214837/http://www.bbc.co.uk/weather/weatherwise/glossary/c.shtml |archive-date = 2006-08-29}}</ref><ref name="UCARCycDef">{{cite web |title = UCAR Glossary — Cyclone |publisher = University Corporation for Atmospheric Research |url = http://meted.ucar.edu/satmet/goeschan/glossary.htm#c |access-date = 2006-10-24 |archive-date = 2018-12-25 |archive-url = https://web.archive.org/web/20181225164339/https://www.meted.ucar.edu/sign_in.php?go_back_to=%2Fsatmet%2Fgoeschan%2Fglossary.htm#c |url-status = live }}</ref>
På den sørlege halvkule er vindretninga med klokka rundt syklonen.<ref name="AMSCcDef">{{cite web |title = Cyclonic circulation |author = Glossary of Meteorology |date = Juni 2000 |publisher = [[American Meteorological Society]] |url = http://glossary.ametsoc.org/wiki/Cyclonic_circulation |access-date = 2008-09-17 |archive-date = 2018-12-25 |archive-url = https://web.archive.org/web/20181225164334/http://glossary.ametsoc.org/wiki/Cyclonic_circulation |url-status = live}}</ref><ref name="AMSCycDef">{{cite web |title = Cyclone |date = June 2000 |author = Glossary of Meteorology |publisher = [[American Meteorological Society]] |url = http://glossary.ametsoc.org/wiki/Cyclone |access-date = 2008-09-17 |archive-date = 2018-12-25 |archive-url = https://web.archive.org/web/20181225164340/http://glossary.ametsoc.org/wiki/Cyclone |url-status = live }}</ref>
Syklon er eit generelt [[meteorologi]]sk omgrep som dekkjer ei rekkje forskjellige roterande system, som [[tropisk syklon|tropiske syklonar]], [[ekstratropisk syklon|ekstratropiske syklonar]] og [[tornado]]ar, og blir sjeldan brukt utan at det er spesifisert kva type syklon det er snakk om.
== Opphav ==
Ordet «syklon» innført av [[Henry Piddington]], ein tilsett ved [[Det britiske austindiakompaniet]] som gav ut 40 artiklar om [[tropiske stormar]] frå [[Calcutta]] mellom 1836 og 1855 i ''[[The Journal of the Asiatic Society]]''.<ref>{{cite ODNB|author=Blyth, Caroline |chapter=Piddington, Henry (1797–1858)| title= Oxford Dictionary of National Biography|year= 2004 |doi=10.1093/ref:odnb/22221 }}</ref>
Ordet er avleidd frå gresk {{lang|el|κύκλος}} (kýklos), som tyder ‘sirkel’ eller ‘ring’ på gammalgresk, på grunn av sirkelrørsla til vinden i ein syklon.<ref>{{cite web|url=https://www.nesdis.noaa.gov/news/hurricanes-cyclones-and-typhoons-whats-name|title=Hurricanes, Cyclones and Typhoons: What's in a Name?|date=2025-05-28|work=National Environmental Satellite, Data, and Information Service|publisher=National Oceanic and Atmospheric Administration|access-date=2025-10-08}}</ref>
Andre meiner at Piddington tok ordet frå det greske ordet «cyclos» som tyder «kveila som ein slange».
== Struktur ==
Det er fleire strukturelle eigenskapar som er felles for alle typar syklonar. Senteret av syklonen er området som har lågast [[lufttrykk]].<ref name="FAQ eye">{{cite web|author=[[Chris Landsea]] and Sim Aberson|title=Subject: A11) What is the "eye"? How is it formed and maintained ? What is the "eyewall"? What are "spiral bands"?|url=http://www.aoml.noaa.gov/hrd/tcfaq/A11.html|date=2004-08-13|publisher=[[Atlantic Oceanographic and Meteorological Laboratory]]|access-date=2009-12-28|archive-date=2006-06-14|archive-url=https://web.archive.org/web/20060614205417/http://www.aoml.noaa.gov/hrd/tcfaq/A11.html|url-status=live}}</ref> I fullt utvikla tropiske og subtropiske syklonar vert senteret kalla «auget».<ref name="FAQ eye"/> Nær senteret av syklonen må [[trykkgradientkraft]]a og [[corioliskrafta]] vere i tilnærma balanse, elles ville syklonen ha kollapsa inn i seg sjølv på grunn av trykkskilnadane. Lufta strøymer rundt syklonar mot klokka på nordlege halvkule og med klokka på den sørlege halvkula på grunn av [[corioliseffekten]].<ref>{{cite web|url=http://homepages.abdn.ac.uk/wpe001/meteo/metoh8.pdf|title=The Atmosphere in Motion|publisher=[[University of Aberdeen]]|access-date=2011-09-11|url-status=dead|archive-url=https://web.archive.org/web/20121018224041/http://homepages.abdn.ac.uk/wpe001/meteo/metoh8.pdf|archive-date=2012-10-18}}</ref>
== Kategoriar ==
Dei forskjellige syklontypane har i tillegg spesielle eigenskapar som gjer at dei kan definerast som [[polar syklon|polare syklonar]], [[polart lågtrykk|polare lågtrykk]], [[ekstratropisk syklon|ekstratropiske syklonar]], [[subtropisk syklon|subtropiske syklonar]], [[tropisk syklon|tropiske sykloner]] eller [[mesosyklon]]ar (som er dei seks hovudgruppene).
=== Polar syklon ===
Ein '''[[polar syklon]]''' (òg kalla arktisk syklon) er eit stort område med lågtrykk. Dei er ikkje det same som polare lågtrykk, som har likskapstrekk med tropiske syklonar. Syklonen blir styrka om vinteren og veiknar om sommaren.<ref>{{cite web|author=Halldór Björnsson |date=2005-01-19 |url=http://andvari.vedur.is/~halldor/HB/Met210old/GlobCirc.html |title=Global circulation |publisher=Veðurstofa Íslands |access-date=2008-06-15 |url-status=dead |archive-url=https://web.archive.org/web/20110807132251/http://andvari.vedur.is/~halldor/HB/Met210old/GlobCirc.html |archive-date=2011-08-07 }}</ref>
Ein polar syklon dekkar vanlegvis eit område på 1000-2000 km<ref>{{cite web |last1=Garima |first1=Khera |title=A vortex of winds-Cyclones – Geography and You |url=https://geographyandyou.com/a-vortex-of-winds-cyclones/ |access-date=14. januar 2021 |archive-date=2. mars 2021 |archive-url=https://web.archive.org/web/20210302232449/https://geographyandyou.com/a-vortex-of-winds-cyclones/ |url-status=live }}</ref> der lufta strøymer mot klokka (på den nordlege halvkula).
=== Polart lågtrykk ===
[[Fil:Polar low.jpg|mini|Polart lågtrykk i [[Barentshavet]] 27. februar 1987.]]
Eit '''[[polart lågtrykk]]''' er eit småskala lågtrykkssystem som ein finn i havområde på polsida av [[polarfronten]] på den nordlege og sørlege halvkula. Systemet har vanlegvis ein horisontal lengdeskala på mindre enn 1000 km og varer berre ein dag og to. Fordi polare lågtrykk oppstår i havområde der det ofte er langt mellom observasjonar, er dei ofte vanskelege å oppdage, og kan vere ein stor fare for skipstrafikk og gass- og oljeplattformar.
=== Ekstratropisk ===
[[Fil:UK-Cyclone.gif|mini|Eit oppdikta synoptisk plott av ein ekstratropisk syklon som treffer Storbritannia. Dei blå pilene mellom [[isobar]]ane viser vindretning. Legg merke til den okkluderte, kalde og varme fronten.]]
Ein '''[[ekstratropisk syklon]]''' er eit [[lågtrykk]] på [[synoptisk skala]] som ein finn på midlare breidder, og som verken har eigenskapane til tropiske eller polare syklonar.<ref>{{cite book |doi=10.1016/B978-0-444-53199-5.00027-0 |chapter=Precipitation |title=Treatise on Water Science |date=2011 |last1=Koutsoyiannis |first1=D. |last2=Langousis |first2=A. |pages=27–77 |isbn=978-0-444-53199-5 }}</ref> Dei oppstår i samband med [[vêrfront]]ar og horisontale [[temperaturgradient]]ar i område kjend som [[baroklinitet|barokline soner]].<ref name="ExtraLessonMillUni">{{cite web
|title = ESCI 241 – Meteorology; Lesson 16 – Extratropical Cyclones
|author = DeCaria
|publisher = Department of Earth Sciences, Millersville University, Millersville, Pennsylvania
|date = 2005-12-07
|url = http://www.atmos.millersville.edu/~adecaria/ESCI241/esci241_lesson16_cyclones.html
|access-date = 2006-10-21 |archive-url = https://web.archive.org/web/20060903093420/http://www.atmos.millersville.edu/~adecaria/ESCI241/esci241_lesson16_cyclones.html |archive-date = 3. september 2006}}</ref>
Dette er den typen syklon ein kjenner som [[lågtrykk]] i Noreg. Dei er kvardagsfenomen som i lag med [[høgtrykk]] driv vêret på mykje av jorda.<ref>{{cite web |title=Weather Conditions |url=https://www.metoffice.gov.uk/weather/learn-about/weather/how-weather-works/high-and-low-pressure/weather-conditions |publisher=Met Office |access-date=7. november 2024}}</ref>
Omgrepet «ekstratropisk» tyder at syklonen oppstår utanfor tropane, på midlare breidder, men i visse tilfelle kan tropiske syklonar bli omforma til ekstratropiske syklonar, og ekstratropiske syklonar til tropiske syklonar.<ref name = "AOML FAQ A7-2">{{cite web|author = [[Atlantic Oceanographic and Meteorological Laboratory]], Hurricane Research Division|title = Frequently Asked Questions: What is an extra-tropical cyclone?|publisher = [[NOAA]]|access-date = 2006-07-25|url = http://www.aoml.noaa.gov/hrd/tcfaq/A7.html|archive-date = 2007-02-09|archive-url = https://web.archive.org/web/20070209121005/http://www.aoml.noaa.gov/hrd/tcfaq/A7.html|url-status = live}}</ref>
Sjølv om ekstratropiske syklonar som regel vert klassifisert som barokline, siden dei blir danna i område med temperaturgradientar, kan dei seint i livssyklusen bli [[barotropi|barotrope]] når temperaturfordelinga rundt syklonen er meir jamnt fordelt.<ref>{{cite web|author=Ryan N. Maue|year=2008|url=http://www.coaps.fsu.edu/~maue/cyclone_ch3.html|title=Chapter 3: Cyclone Paradigms and Extratropical Transition Conceptualizations|access-date=2008-06-15|publisher=[[Florida State University]]|archive-url=https://web.archive.org/web/20080510210146/http://www.coaps.fsu.edu/~maue/cyclone_ch3.html |archive-date=2008-05-10}}</ref>
=== Subtropisk ===
Ein '''[[subtropisk syklon]]''' er eit vêrsystem som har nokre av eigenskapane til tropiske syklonar, og nokre av eigenskapane til ekstratropiske syklonar. Dei kan oppstå i område frå ekvator til 50º nord eller sør.<ref name="A6">{{cite web|author=Chris Landsea|url=http://www.aoml.noaa.gov/hrd/tcfaq/A6.html|title=Subject: A6) What is a sub-tropical cyclone?|access-date=2009-12-27|date=2009-02-06|publisher=[[Atlantic Oceanographic and Meteorological Laboratory]]|author-link=Chris Landsea|archive-date=2011-10-11|archive-url=https://web.archive.org/web/20111011042947/http://www.aoml.noaa.gov/hrd/tcfaq/A6.html|url-status=live}}</ref>
==== Tropisk ====
[[Fil:Cyclone Catarina from the ISS on March 26 2004.JPG|mini|Syklonen Catarina, ein sjeldan tropisk syklon i Sør-Atlanteren sett frå Den internasjonale romstasjonen 26. mars 2004.]]
Ein '''[[tropisk syklon]]''' er eit stormsystem som blir drive av frigjeven varme frå fuktig luft som stig og [[kondensasjon|kondenserer]].<ref name="StackPath">{{cite web |title=StackPath |url=https://www.laserfocusworld.com/home/article/14192224/tropical-cyclone#:~:text=View%20Image%20Gallery-,A%20tropical%20cyclone%20is%20a%20storm%20system%20characterized%20by%20a,contained%20in%20the%20moist%20air. |website=www.laserfocusworld.com | date=10 August 2011 |access-date=13. januar 2021 |archive-date=14. april 2021 |archive-url=https://web.archive.org/web/20210414230334/https://www.laserfocusworld.com/home/article/14192224/tropical-cyclone#:~:text=View%20Image%20Gallery-,A%20tropical%20cyclone%20is%20a%20storm%20system%20characterized%20by%20a,contained%20in%20the%20moist%20air. |url-status=live }}</ref> Omgrepet tyder at syklonen oppstår i [[tropane]] og har syklonske eigenskapar. Sidan det er varmemekanismar som driv dei, er dette system med varm kjerne, medan dei fleste andre syklonar har kald kjerne.<ref name="StackPath"/><ref name = "AOML FAQ A7">{{cite web|publisher = [[Atlantic Oceanographic and Meteorological Laboratory]], Hurricane Research Division|title = Frequently Asked Questions: What is an extra-tropical cyclone?|author = Stan Goldenberg|date = 2004-08-13|access-date = 2007-03-23|url = http://www.aoml.noaa.gov/hrd/tcfaq/A7.html|archive-date = 2007-02-09|archive-url = https://web.archive.org/web/20070209121005/http://www.aoml.noaa.gov/hrd/tcfaq/A7.html|url-status = live}}</ref>
Syklonane utviklar seg over store, varme vassmassar,<ref name="AOML FAQ A15">{{cite web|author=Chris Landsea |title=Frequently Asked Questions: How do tropical cyclones form? |date=2009-02-06 |publisher=[[NOAA]] |access-date=2006-07-26 |url=http://www.aoml.noaa.gov/hrd/tcfaq/A15.html |url-status=dead |archive-url=https://web.archive.org/web/20090827030639/http://www.aoml.noaa.gov/hrd/tcfaq/A15.html |archive-date=2009-08-27 |author-link=Chris Landsea }}</ref> og tapar styrke om dei kjem over land.<ref>{{cite web|author=Sim Aberson|publisher=[[National Hurricane Center]]|url=http://www.aoml.noaa.gov/hrd/tcfaq/C2.html|title=Subject : C2) Doesn't the friction over land kill tropical cyclones?|access-date=2008-02-25|date=2009-02-06|archive-date=2012-07-31|archive-url=https://web.archive.org/web/20120731202853/http://www.aoml.noaa.gov/hrd/tcfaq/C2.html|url-status=live}}</ref> Tropiske syklonar har forskjellige namn etter kvar dei oppstår og kva styrke dei har, slik som '''orkan''', '''tyfon''', '''syklon''', '''tropisk storm''' og '''tropisk lågtrykk'''.
Tropiske syklonar kan produsere ekstremt kraftig vind, [[tornado]]ar, enorme mengder [[regn]], høge [[bølgje]]r og [[stormflod]].<ref name="oxfo">{{cite journal |last1=Shultz |first1=James M. |last2=Russell |first2=Jill |last3=Espinel |first3=Zelde |title=Epidemiology of Tropical Cyclones: The Dynamics of Disaster, Disease, and Development |journal=Epidemiologic Reviews |date=Juli 2005 |volume=27 |issue=1 |pages=21–35 |doi=10.1093/epirev/mxi011 |pmid=15958424 }}</ref> Det kraftige regnet og stormfloda kan føre til omfattande [[flaum]]. Sjølv om konsekvensane ofte er katastrofale, kan dei t.d. ende lange [[tørke]]periodar. Dei fører varme bort frå tropane, og spelar ei viktig rolle i den globale [[atmosfærisk sirkulasjon|atmosfæriske sirkulasjonen]] som opprettheld likevekt i [[troposfæren]].<ref name="laserfocusworld.com">{{cite web |title=StackPath |url=https://www.laserfocusworld.com/home/article/14192224/tropical-cyclone#:~:text=View%20Image%20Gallery-,A%20tropical%20cyclone%20is%20a%20storm%20system%20characterized%20by%20a,contained%20in%20the%20moist%20air |website=www.laserfocusworld.com | date=10. august 2011 |access-date=14 January 2021 |archive-date=14. april 2021 |archive-url=https://web.archive.org/web/20210414230334/https://www.laserfocusworld.com/home/article/14192224/tropical-cyclone#:~:text=View%20Image%20Gallery-,A%20tropical%20cyclone%20is%20a%20storm%20system%20characterized%20by%20a,contained%20in%20the%20moist%20air |url-status=live }}</ref>
=== Mesoskala ===
Ein '''[[mesosyklon]]''' er eit stort område med vertikalt roterande luft, vanlegvis i samband med dei stigande luftrørslene til [[supercelle]]r. Mesosyklonar fører ofte til kraftig vind på overflata og kraftig [[hagl]]. I tillegg er dei ei av hovudårsakene til danninga av [[tornado]]ar.<ref name="skybrary.aero">{{cite web |title=Mesocyclone – SKYbrary Aviation Safety |url=https://www.skybrary.aero/index.php/Mesocyclone |website=www.skybrary.aero |access-date=13. januar 2021 |archive-date=14. januar 2021 |archive-url=https://web.archive.org/web/20210114104249/https://www.skybrary.aero/index.php/Mesocyclone |url-status=live }}</ref> Kvart år blir det danna rundt 1 700 mesosyklonar i USA, men berre halvparten av dei dannar tornadoar.<ref name="FoN">Forces of Nature. {{citation|url=http://library.thinkquest.org/C003603/english/tornadoes/themesocyclone.shtml |title=Tornadoes : the mesocyclone.|archiveurl=https://web.archive.org/web/20080616154710/http://library.thinkquest.org/C003603/english/tornadoes/themesocyclone.shtml|archivedate=2008-06-16|accessdate=2008-06-15}}</ref>
== Kjelder==
{{Referansar}}
* [https://web.archive.org/web/20011127021405/http://www.bbc.co.uk/weather/weatherwise/glossary/c.shtml BBC Weather Gloassary - Cyclone]
* [http://meted.ucar.edu/satmet/goeschan/glossary.htm#c UCAR Glossary - Cyclone.] University Corporation for Atmospheric Research.
* Keith C. Heidorn, PhD (2003-10-01). [http://www.islandnet.com/~see/weather/history/cyclone-word.htm The Weather Doctor: Cyclone Origin.]
* [http://banglapedia.search.com.bd/HT/P_0168.htm Banglapedia: Piddington, Henry.]
* [http://www.imdmumbai.gov.in/cycdisasters.htm Cyclone Related Disasters - What Are Cyclones?. India Meteorological department] {{Webarchive|url=https://web.archive.org/web/20051025071035/http://www.imdmumbai.gov.in/cycdisasters.htm |date=2005-10-25 }}
* Richard Conan-Davies BSc Dip Ed (2003-05-14). [http://clearlyexplained.com/nature/earth/disasters/cyclones.html ClearlyExplained.com - Cyclones.] {{Webarchive|url=https://web.archive.org/web/20070117022933/http://clearlyexplained.com/nature/earth/disasters/cyclones.html |date=2007-01-17 }}
* Dr. DeCaria (2005-12-07). [http://www.atmos.millersville.edu/~adecaria/ESCI241/esci241_lesson16_cyclones.html ESCI 241 – Meteorology; Lesson 16 – Extratropical Cyclones.] {{Webarchive|url=https://web.archive.org/web/20080208224320/http://www.atmos.millersville.edu/~adecaria/ESCI241/esci241_lesson16_cyclones.html |date=2008-02-08 }} Department of Earth Sciences, Millersville University, Millersville, Pennsylvania.
* Robert Hart and Jenni Evans (2003). [http://ams.confex.com/ams/pdfpapers/70524.pdf Synoptic Composites of the Extratropical Transition Lifecycle of North Atlantic TCs as Defined Within Cyclone Phase Space]. American Meteorological Society.
{{Syklonar}}
{{Autoritetsdata}}
[[Kategori:Syklonar| ]]
[[Kategori:Virvlar]]
m32x60u97kt92boq52ib3a6ljigvkis
Flamingoar
0
46904
3650923
3327525
2026-04-19T10:16:29Z
Roarjo
183
oppgradert med tekst frå [[:en:Flamingo|Flamingo]]
3650923
wikitext
text/x-wiki
{{taksoboksLua|taksonomi_WD=ja
| bilete = Twoflamingos tj.jpg
| bilettekst = To flamingoar
}}
Dei seks artane av '''flamingoar''' utgjer [[biologisk familie|familien]] '''Phoenicopteridae''', einaste familien i [[biologisk orden|ordenen]] '''Phoenicopteriformes'''. Dette er selskaplege [[vadefuglar]] i grunne, gjerne i svært salte innsjøar og lagunar der dei nyttar eit spesialisert nebb for å søkje og filtrere plankton. Det finst fire artar i [[Amerika]] og to artar i [[«den gamle verda»]].
== Etymologi ==
Namnet «flamingo» kjem frå portugisisk eller spansk ''flamengo'', som tyder «flammefarga». Ordet har opphav i provençalsk ''flamenc'', ei samansetjing av ''flama'' («flamme») og eit germansk-liknande suffiks ''-ing''. Namnet kan òg vere påverka av det spanske etnonymet ''flamenco'' («flamlendar»). Slektsnamnet ''[[Phoenicopterus]]'' kjem frå gammalgresk ''phoinikopteros'' (φοινικόπτερος), «raud- eller purpurfarga fjør».<ref>{{OEtymD|flamingo}}</ref> Andre slektsnamn er ''Phoeniconaias'' («raud vassnymfe»)<ref name=minor/> og ''Phoenicoparrus'' («(krimson)raud fugl»).<ref name=andinus/>
== Skildring ==
Flamingoar er store fuglar med særs lange bein, lang hals og kraftig bøyg på nebbet. Hannen er noko større enn hoa hos dei fleste artar, for [[raudflamingo]] (''Phoenicopterus ruber) er hoer opptil 20 % mindre enn hannar.
Den største arten, [[rosenflamingo]] (''Phoenicopterus roseus''), kan bli opptil 1,4 meter høg<ref name=biodict/> og vege opp til 3,5-4,1 kg,<ref name=roseus/> medan [[dvergflamingo]] (''Phoeniconaias minor'') er om lag 0,8 meter høg. Vengespennet varierer frå om lag 100 cm hos dvergflamingo til opptil 187,<ref name=roseus/> vanlegvis 140-170 cm,<ref name=svensson/> hos rosenflamingo.
Flamingokyllingar har grå eller brun [[fjørdrakt]], blir etter ei tid nær kvit, medan farga på drakta hos vaksne individ varierer frå lys rosa til lys raud ettersom innhaldet av vassbakteriar og [[karotenoidar]] i dietten varierer. Ein flamingo med god tilgjenge på mat får kraftfulle farger og er ein ettertrakta make. Ein kvit eller bleik flamingo er derimot usunn eller underernært. Flamingoar i fangenskap er eit unnatak, om dei ikkje får fôr med same innhald av karoten som frie fuglar slår dei over i ei bleik rosa farge.<ref name=Grazian/>
Flamingoar står ofte på eitt bein, med det andre trekt opp under kroppen. Grunnen til denne åtferda er ikkje fullt ut forstått. Ein hypotese er at dei sparer kroppsvarme, sidan dei ofte står i kaldt vatn. Ei anna forklaring er at det reduserer energibruken ved å halde balansen.<ref name=chang/>
Dei har symjeføter som hjelper ved symjing, og når dei vadar vil dei trampe i botnen for å røre opp næring. Flamingoar kan opne nebbet ved å løfte overnebbet så vel som å senke undernebbet.<ref name=Jenkin/> Dei er gode flygarar, og individ i fangenskap får ofte klipte vengfjører for å hindre rømming.
=== Føde ===
Flamingoar filtrerer føde i form av vasslevande dyr, saltkreps, cyanobakteriar, larvar, insekt, blautdyr og krepsdyr og plantemateriale i form av plankton og algar. Nebbet er tilpassa filtrering av slam og vatn, og blir brukt i opp-ned rørsle. Filtreringa blir hjelpt av lamellar (små børsteliknande strukturar) i nebbet og ei kraftig tunge som «pumpe».
Den rosa eller raude farga kjem frå karotenoid i føda. Fuglar som et meir karotenrik føde, får sterkare farge.
Flamingoar føretrekkjer ferskvatn, men har saltkjertlar nær auga som fjernar overflødig salt, slik at dei òg kan drikke saltvatn i saltsjøar.
[[Chileflamingo]], [[punaflamingo]] og [[andesflamingo]] kan samlast i fleirartsflokkar, men artane vil segregere under beiting ut frå artsspesifikke preferansar for føde, til dømes etter typar av algar dei føretrekker.<ref name=Mascitti/>
=== Læte ===
Flamingoar har lydar som varierer frå grynting og knurring til nasale rop. Lydane er viktige for å kjenne att ungar, for sosiale signal og for å halde flokkane samla.<ref name=libguides/>
=== Livssyklus ===
Flamingoar er svært sosiale og lever i koloniar som kan telje tusenvis av individ. Koloniane hjelper til med å verne mot predatorar, utnytte matressursar og finne eigna hekkeplassar.
Før hekking utfører hannar og hoer synkroniserte kurtiseritual med hovudrørsler, rop og vengeslag.
Hoa legg vanlegvis eitt egg. Begge foreldra ruger i 17–18 dagar. Etter klekking blir ungane mata med [[kromjølk|«kromjølk»]], ei næringsrik væske produsert i fordøyingssystemet. Ungane held seg først i reiret, men samlar seg etter kvart i grupper («barnehagar»). Når dei er rundt tre månader gamle, har dei utvikla flygefjør og kan flyge.<ref name=bow/>
== Biletgalleri ==
<gallery>
<!-- fil:Flamingos at Las Vegas Zoo.JPG|[[Chileflamingo]]ar i [[Las Vegas Zoo]] fungerar ikkje -->
fil:Flamingo National Zoo.jpg|[[Raudflamingo]] i National Zoo Washington, DC.
fil:Lesser-flamingos-flying.jpg|[[Dverglamingo]]ar i flukt
fil:Flamingo fg01.jpg|Raudflamingo ein dyrepark i [[Frankfurt am Main|Frankfurt]], som sannsynlegvis søv
fil:Flamingos_Laguna_Colorada.jpg|[[Punaflamingo]] i [[Laguna Colorada]], [[Bolivia]]
Fil:Flamingowatchingegghatch08.jpg| Raudflamingo med egg
Fil:Flamingowithchick08.jpg|Raudflamingo med unge
</gallery>
== Artsoversyn ==
Seks nolevande flamingoartar er anerkjende av dei fleste kjelder, og vart tidlegare plasserte i éi slekt ut frå felles kjenneteikn – Phoenicopterus. Som eit resultat av ein publikasjon frå 2014,<ref name=torres/> vart familien omklassifisert til to slekter.<ref name=ioc2016/> I 2020 var familien splitta i tre anerkjende slekter, ifølgje [[Cornell Lab of Ornithology]], Birds of the World.<ref name=bow/>
Flamingoar i rekkjefølgje etter [[AviList]] v2025:<ref name=avilist25/> med norske namn etter ''Norske navn på verdens fugler'':<ref name=NNKF/>
;Slekt ''Phoeniconaias''
* [[Dvergflamingo]], ''Phoeniconaias minor'', Lesser Flamingo, <small>(Geoffroy Saint-Hilaire, É, 1798), (NT)</small>
: Afrika og det indiske subkontinentet.<ref name=minor/>
;Slekt ''[[Phoenicoparrus]]''
* [[Andesflamingo]], ''Phoenicoparrus andinus'', Andean Flamingo, <small>(Philippi, RA, 1854), (VU)</small>
: Høgtliggande Andes i Bolivia inn i sørlege Peru, NE Chile og NW Argentina, til over 4000 moh.<ref name=andinus/>
* [[Punaflamingo]], ''Phoenicoparrus jamesi'', James's Flamingo, <small>(Sclater, PL, 1886), (NT)</small>
: 90-110 cm i kroppslengd. Lever i Puna økoregion, opptil 4900 moh.<ref name=jamesi/>
;Slekt ''[[Phoenicopterus]]''
* [[Chileflamingo]], ''Phoenicopterus chilensis'', Chilean Flamingo, <small>Molina, GI, 1782, (NT)</small>
: Sør-Amerika frå Equador til Eldlandet.<ref name=chilensis/>
* [[Rosenflamingo]], ''Phoenicopterus roseus'', Greater Flamingo, <small>Pallas, PS, 1811, (LC)</small>
: Finst i S-Europa, Afrika, V-Asia til India og Sri Lanka.<ref name=roseus/>
* [[Raudflamingo]], ''Phoenicopterus ruber'', American Flamingo, <small>Linnaeus, C, 1758, (LC)</small>
: Kariba inkludert sørlegaste Florida og kysten av nordaustlege Colombia til guyanaregionen. Somme er trekkfuglar. Ein isolert populasjon lever på Galapagosøyane.<ref name=ruber/>
== Taksonomi og systematikk ==
Flamingofamilien vart innført med namnet Phoenicopteridae av den franske zoologen Charles Lucien Bonaparte i 1831. ''[[Phoenicopterus]]'' vart peika ut som typeslekt.
Tradisjonelt vart flamingoar rekna som nært i slekt med dei langbeinte [[Ciconiiformes|storkane]], ei truleg parafyletisk gruppe, og vart plasserte der. Ofte vart [[ibisar og skeistorkar]] rekna som dei næraste slektningane. Tidlege genetiske studiar, som dei til Charles Sibley, støtta òg dette synet.
Samband til [[andefuglar]] har òg vore vurdert, mellom anna fordi flamingoar blir parasitterte av fjørlus i slekta ''Anaticola'', som elles finst hos ender og gjæser. Ein studie frå 2002 konkluderte med at flamingoar er andefuglar,<ref name=Kurochkin/> men ei omfattande undersøking frå 2014 viste at flamingoar og [[dukkarar]] ikkje er andefuglar, men høyrer til i ei gruppe saman med [[duer]], [[sandhøns]] og [[mesittar]].<ref name=Jarvis2014/>
Mange molekylære og morfologiske studiar stør eit nært slektskap mellom flamingoar og dukkarar. Dei deler minst 11 morfologiske trekk som ikkje finst hos andre fuglar. Den fossile gruppa Palaelodidae blir rekna som ei mellomform, både evolusjonært og økologisk.<ref name=Gottingen/>
== Kjelder ==
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Flamingo|Flamingo]]» frå {{Wikipedia-utgåve|en}}, den 19. april 2026''
{{refslutt}}
{{reflist|refs=
<ref name=avilist25>{{kjelde www |forfattar=AviList Core Team. 2025. |tittel=AviList: The Global Avian Checklist, v2025. |doi=10.2173/avilist.v2025 |url=https://doi.org/10.2173/avilist.v2025 |utgjevar=AviList: The Global Avian Checklist © 2025 by AviList Core Team is licensed under CC BY 4.0}}</ref>
<ref name=NNKF>{{kjelde www |utgjevar=Norsk navnekomité for fugl (NNKF) |tittel=Norske navn på verdens fugler |url=https://www.birdlife.no/fuglekunnskap/navn/ |dato=26.10.2025}}</ref>
<ref name=minor>{{cite BOW|citation=del Hoyo, J., P. F. D. Boesman, E. Garcia, and G. M. Kirwan (2020). Lesser Flamingo (Phoeniconaias minor), version 1.0. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, and E. de Juana, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.lesfla1.01 }}</ref>
<ref name=andinus>{{cite BOW|citation=Mahmood, Z. A., B. D. Alarcon, K. G. Roberts, J. C. Patton, J. del Hoyo, P. F. D. Boesman, and E. Garcia (2020). Andean Flamingo (Phoenicoparrus andinus), version 2.0. In Birds of the World (T. S. Schulenberg, B. K. Keeney, and S. M. Billerman, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.andfla2.02 }}</ref>
<ref name=jamesi>{{cite BOW|citation=Rivas, C. E., V. Pantoja-Maggi, E. Mardones Muñoz, R. Tapia, J. Cabezas, N. Olmos-Moya, and M. Cortés-Norambuena (2024). James's Flamingo (Phoenicoparrus jamesi), version 2.0. In Birds of the World (F. Medrano and G. M. Kirwan, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.jamfla1.02 }}</ref>
<ref name=chilensis>{{cite BOW|citation=del Hoyo, J., P. F. D. Boesman, and E. Garcia (2024). Chilean Flamingo (Phoenicopterus chilensis), version 1.1. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, and E. de Juana, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.chifla1.01.1 }}</ref>
<ref name=roseus>{{cite BOW|citation=Delfino, H. C., C. J. Carlos, P. Pyle, G. M. Kirwan, J. del Hoyo, P. F. D. Boesman, and E. Garcia (2026). American Flamingo (Phoenicopterus ruber), version 1.2. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, E. de Juana, and M. G. Smith, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.grefla2.01.2 }}</ref>
<ref name=ruber>{{cite BOW|citation=Salvador, A., M. Á. Rendón, J. A. Amat, and M. Rendón-Martos (2024). Greater Flamingo (Phoenicopterus roseus), version 3.0. In Birds of the World (S. M. Billerman and B. K. Keeney, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.grefla3.03 }}</ref>
<ref name=Kurochkin>{{cite journal |last1=Kurochkin |first1=E. N. |last2=Dyke |first2=G. J. |last3=Karhu |first3=A. A. |year=2002 |title=A New Presbyornithid Bird (Aves, Anseriformes) from the Late Cretaceous of Southern Mongolia |journal=American Museum Novitates |issue=3386 |hdl=2246/2875 |pages=1–11 |doi=10.1206/0003-0082(2002)386<0001:ANPBAA>2.0.CO;2|s2cid=59147935 |url=http://digitallibrary.amnh.org/bitstream/2246/2875/1//v2/dspace/ingest/pdfSource/nov/N3386.pdf }}</ref>
<ref name=Jarvis2014>{{cite journal |last1=Jarvis |first1=E.D. |display-authors=etal |year=2014 |title=Whole-genome analyses resolve early branches in the tree of life of modern birds |journal=Science |volume=346 |issue=6215| pages=1320–1331 |doi=10.1126/science.1253451 |pmid=25504713 |pmc=4405904| bibcode=2014Sci...346.1320J }}</ref>
<ref name=Gottingen>{{Cite journal |last=Mayr |first=Gerald |year=2006 |title=The contribution of fossils to the reconstruction of the higher-level phylogeny of birds |url=http://www.senckenberg.de/files/content/forschung/abteilung/terrzool/ornithologie/gottingen.pdf |journal=Species, Phylogeny and Evolution |volume=3 |pages=59–64 |issn=1098-660X |archive-url=https://web.archive.org/web/20120302143030/http://www.senckenberg.de/files/content/forschung/abteilung/terrzool/ornithologie/gottingen.pdf |archive-date=2012-03-02 |access-date=19.04.2026}}</ref>
<ref name=svensson>Svensson, Lars et al (2017). ''Gyldendals store fugleguide.'' Gyldendal norsk forlag. ISBN 9788205418820</ref>
<ref name=Grazian>{{cite book |title=American Zoo: A Sociological Safari |first=David |last=Grazian |year=2015 |location=Princeton, NJ, US |publisher=Princeton University Press |page=35 |isbn=978-0-691-16435-9 |url=https://books.google.com/books?id=SLpKCAAAQBAJ&pg=PA35}}</ref>
<ref name=torres>{{cite journal|doi=10.1186/1471-2148-14-36|pmid= 24580860|pmc= 4016592|title= A multi-locus inference of the evolutionary diversification of extant flamingos (Phoenicopteridae)|journal= BMC Evolutionary Biology|volume= 14|issue= 1|page= 36|year= 2014|last1= Torres|first1= Chris R|last2= Ogawa|first2= Lisa M|last3= Gillingham|first3= Mark AF|last4= Ferrari|first4= Brittney|last5= Van Tuinen|first5= Marcel|doi-access= free|bibcode= 2014BMCEE..14...36T}}</ref>
<ref name=Mascitti>{{cite journal |title=Foraging depth of flamingos in single-species and mixed-species flocks at Laguna de Pozuelos, Argentina |author1=Mascitti, Virginia |author2=Castañera, Mónica B |journal=Waterbirds |pages=328--334 |year=2006 |publisher=JSTOR |url=https://www.jstor.org/stable/4132588}}</ref>
<ref name=libguides>{{cite web |url=https://ielc.libguides.com/sdzg/factsheets/americanflamingo/behavior |title=American Flamingo (Phoenicopterus ruber) Fact Sheet: Behavior & Ecology |publisher=San Diego Zoo Global |access-date=19.04.2026 }}</ref>
<ref name=ioc2016>Gill, F and D Donsker (Eds). (2016). [http://www.worldbirdnames.org/ IOC World Bird List (v 6.3).]</ref>
<ref name=bow>{{cite BOW |citation=Winkler, D. W., S. M. Billerman, and I. J. Lovette (2020). Flamingos (Phoenicopteridae), version 1.0. In Birds of the World (S. M. Billerman, B. K. Keeney, P. G. Rodewald, and T. S. Schulenberg, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.phoeni1.01}}</ref>
<ref name=chang>{{cite journal|last1=Chang|first1=Young-Hui |last2=Ting |first2=Lena H.|date=24 May 2017 |title=Mechanical evidence that flamingos can support their body on one leg with little active muscular force |journal=Biology Letters |volume=13|issue=5|article-number=20160948|doi=10.1098/rsbl.2016.0948|pmid=28539457|pmc=5454233}}</ref>
<ref name=Jenkin>{{Cite journal |last1= Jenkin |first1= Penelope M. |title= The filter-feeding and food of flamingoes (Pheonicopteri) |journal= Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences |volume= 240 |issue= 674 |pages= 401–493 |date=1957-05-09 |doi= 10.1098/rstb.1957.0004 |bibcode= 1957RSPTB.240..401J |doi-access= free }}, page 409.</ref>
<ref name=biodict>{{kjelde www |tittel=Flamingo |url=https://biologydictionary.net/flamingo/ |vitja=19.04.2026 |etternamn=Whitehouse |førenamn=Lindy |utgjevingsdato=29.10.2020 |utgjevar=Biology Dictionary
|arkiv_url=https://web.archive.org/web/20260217151302/https://biologydictionary.net/flamingo/ |arkivdato=17.02-2026}}</ref>
}}
== Bakgrunnsstoff ==
{{Commons|Phoenicopterus ruber}} <!--
* What do we know about flamingo behaviors? A systematic review of the ethological research on the Phoenicopteridae (1978–2020). By: Delfino, Henrique Cardoso, Carlos, Caio J., Acta Ethologica, 08739749, Feb2022, Vol. 25, Issue 1-->
{{Fuglar}}
[[Kategori:Flamingofamilien| ]]
[[Kategori:Fuglar etter klassifisering]]
pqa65dpqlx5utkzd96s0dsf25pb1r9h
3650924
3650923
2026-04-19T10:18:27Z
Roarjo
183
/* Livssyklus */ ruger>rugar
3650924
wikitext
text/x-wiki
{{taksoboksLua|taksonomi_WD=ja
| bilete = Twoflamingos tj.jpg
| bilettekst = To flamingoar
}}
Dei seks artane av '''flamingoar''' utgjer [[biologisk familie|familien]] '''Phoenicopteridae''', einaste familien i [[biologisk orden|ordenen]] '''Phoenicopteriformes'''. Dette er selskaplege [[vadefuglar]] i grunne, gjerne i svært salte innsjøar og lagunar der dei nyttar eit spesialisert nebb for å søkje og filtrere plankton. Det finst fire artar i [[Amerika]] og to artar i [[«den gamle verda»]].
== Etymologi ==
Namnet «flamingo» kjem frå portugisisk eller spansk ''flamengo'', som tyder «flammefarga». Ordet har opphav i provençalsk ''flamenc'', ei samansetjing av ''flama'' («flamme») og eit germansk-liknande suffiks ''-ing''. Namnet kan òg vere påverka av det spanske etnonymet ''flamenco'' («flamlendar»). Slektsnamnet ''[[Phoenicopterus]]'' kjem frå gammalgresk ''phoinikopteros'' (φοινικόπτερος), «raud- eller purpurfarga fjør».<ref>{{OEtymD|flamingo}}</ref> Andre slektsnamn er ''Phoeniconaias'' («raud vassnymfe»)<ref name=minor/> og ''Phoenicoparrus'' («(krimson)raud fugl»).<ref name=andinus/>
== Skildring ==
Flamingoar er store fuglar med særs lange bein, lang hals og kraftig bøyg på nebbet. Hannen er noko større enn hoa hos dei fleste artar, for [[raudflamingo]] (''Phoenicopterus ruber) er hoer opptil 20 % mindre enn hannar.
Den største arten, [[rosenflamingo]] (''Phoenicopterus roseus''), kan bli opptil 1,4 meter høg<ref name=biodict/> og vege opp til 3,5-4,1 kg,<ref name=roseus/> medan [[dvergflamingo]] (''Phoeniconaias minor'') er om lag 0,8 meter høg. Vengespennet varierer frå om lag 100 cm hos dvergflamingo til opptil 187,<ref name=roseus/> vanlegvis 140-170 cm,<ref name=svensson/> hos rosenflamingo.
Flamingokyllingar har grå eller brun [[fjørdrakt]], blir etter ei tid nær kvit, medan farga på drakta hos vaksne individ varierer frå lys rosa til lys raud ettersom innhaldet av vassbakteriar og [[karotenoidar]] i dietten varierer. Ein flamingo med god tilgjenge på mat får kraftfulle farger og er ein ettertrakta make. Ein kvit eller bleik flamingo er derimot usunn eller underernært. Flamingoar i fangenskap er eit unnatak, om dei ikkje får fôr med same innhald av karoten som frie fuglar slår dei over i ei bleik rosa farge.<ref name=Grazian/>
Flamingoar står ofte på eitt bein, med det andre trekt opp under kroppen. Grunnen til denne åtferda er ikkje fullt ut forstått. Ein hypotese er at dei sparer kroppsvarme, sidan dei ofte står i kaldt vatn. Ei anna forklaring er at det reduserer energibruken ved å halde balansen.<ref name=chang/>
Dei har symjeføter som hjelper ved symjing, og når dei vadar vil dei trampe i botnen for å røre opp næring. Flamingoar kan opne nebbet ved å løfte overnebbet så vel som å senke undernebbet.<ref name=Jenkin/> Dei er gode flygarar, og individ i fangenskap får ofte klipte vengfjører for å hindre rømming.
=== Føde ===
Flamingoar filtrerer føde i form av vasslevande dyr, saltkreps, cyanobakteriar, larvar, insekt, blautdyr og krepsdyr og plantemateriale i form av plankton og algar. Nebbet er tilpassa filtrering av slam og vatn, og blir brukt i opp-ned rørsle. Filtreringa blir hjelpt av lamellar (små børsteliknande strukturar) i nebbet og ei kraftig tunge som «pumpe».
Den rosa eller raude farga kjem frå karotenoid i føda. Fuglar som et meir karotenrik føde, får sterkare farge.
Flamingoar føretrekkjer ferskvatn, men har saltkjertlar nær auga som fjernar overflødig salt, slik at dei òg kan drikke saltvatn i saltsjøar.
[[Chileflamingo]], [[punaflamingo]] og [[andesflamingo]] kan samlast i fleirartsflokkar, men artane vil segregere under beiting ut frå artsspesifikke preferansar for føde, til dømes etter typar av algar dei føretrekker.<ref name=Mascitti/>
=== Læte ===
Flamingoar har lydar som varierer frå grynting og knurring til nasale rop. Lydane er viktige for å kjenne att ungar, for sosiale signal og for å halde flokkane samla.<ref name=libguides/>
=== Livssyklus ===
Flamingoar er svært sosiale og lever i koloniar som kan telje tusenvis av individ. Koloniane hjelper til med å verne mot predatorar, utnytte matressursar og finne eigna hekkeplassar.
Før hekking utfører hannar og hoer synkroniserte kurtiseritual med hovudrørsler, rop og vengeslag.
Hoa legg vanlegvis eitt egg. Begge foreldra rugar i 17–18 dagar. Etter klekking blir ungane mata med [[kromjølk|«kromjølk»]], ei næringsrik væske produsert i fordøyingssystemet. Ungane held seg først i reiret, men samlar seg etter kvart i grupper («barnehagar»). Når dei er rundt tre månader gamle, har dei utvikla flygefjør og kan flyge.<ref name=bow/>
== Biletgalleri ==
<gallery>
<!-- fil:Flamingos at Las Vegas Zoo.JPG|[[Chileflamingo]]ar i [[Las Vegas Zoo]] fungerar ikkje -->
fil:Flamingo National Zoo.jpg|[[Raudflamingo]] i National Zoo Washington, DC.
fil:Lesser-flamingos-flying.jpg|[[Dverglamingo]]ar i flukt
fil:Flamingo fg01.jpg|Raudflamingo ein dyrepark i [[Frankfurt am Main|Frankfurt]], som sannsynlegvis søv
fil:Flamingos_Laguna_Colorada.jpg|[[Punaflamingo]] i [[Laguna Colorada]], [[Bolivia]]
Fil:Flamingowatchingegghatch08.jpg| Raudflamingo med egg
Fil:Flamingowithchick08.jpg|Raudflamingo med unge
</gallery>
== Artsoversyn ==
Seks nolevande flamingoartar er anerkjende av dei fleste kjelder, og vart tidlegare plasserte i éi slekt ut frå felles kjenneteikn – Phoenicopterus. Som eit resultat av ein publikasjon frå 2014,<ref name=torres/> vart familien omklassifisert til to slekter.<ref name=ioc2016/> I 2020 var familien splitta i tre anerkjende slekter, ifølgje [[Cornell Lab of Ornithology]], Birds of the World.<ref name=bow/>
Flamingoar i rekkjefølgje etter [[AviList]] v2025:<ref name=avilist25/> med norske namn etter ''Norske navn på verdens fugler'':<ref name=NNKF/>
;Slekt ''Phoeniconaias''
* [[Dvergflamingo]], ''Phoeniconaias minor'', Lesser Flamingo, <small>(Geoffroy Saint-Hilaire, É, 1798), (NT)</small>
: Afrika og det indiske subkontinentet.<ref name=minor/>
;Slekt ''[[Phoenicoparrus]]''
* [[Andesflamingo]], ''Phoenicoparrus andinus'', Andean Flamingo, <small>(Philippi, RA, 1854), (VU)</small>
: Høgtliggande Andes i Bolivia inn i sørlege Peru, NE Chile og NW Argentina, til over 4000 moh.<ref name=andinus/>
* [[Punaflamingo]], ''Phoenicoparrus jamesi'', James's Flamingo, <small>(Sclater, PL, 1886), (NT)</small>
: 90-110 cm i kroppslengd. Lever i Puna økoregion, opptil 4900 moh.<ref name=jamesi/>
;Slekt ''[[Phoenicopterus]]''
* [[Chileflamingo]], ''Phoenicopterus chilensis'', Chilean Flamingo, <small>Molina, GI, 1782, (NT)</small>
: Sør-Amerika frå Equador til Eldlandet.<ref name=chilensis/>
* [[Rosenflamingo]], ''Phoenicopterus roseus'', Greater Flamingo, <small>Pallas, PS, 1811, (LC)</small>
: Finst i S-Europa, Afrika, V-Asia til India og Sri Lanka.<ref name=roseus/>
* [[Raudflamingo]], ''Phoenicopterus ruber'', American Flamingo, <small>Linnaeus, C, 1758, (LC)</small>
: Kariba inkludert sørlegaste Florida og kysten av nordaustlege Colombia til guyanaregionen. Somme er trekkfuglar. Ein isolert populasjon lever på Galapagosøyane.<ref name=ruber/>
== Taksonomi og systematikk ==
Flamingofamilien vart innført med namnet Phoenicopteridae av den franske zoologen Charles Lucien Bonaparte i 1831. ''[[Phoenicopterus]]'' vart peika ut som typeslekt.
Tradisjonelt vart flamingoar rekna som nært i slekt med dei langbeinte [[Ciconiiformes|storkane]], ei truleg parafyletisk gruppe, og vart plasserte der. Ofte vart [[ibisar og skeistorkar]] rekna som dei næraste slektningane. Tidlege genetiske studiar, som dei til Charles Sibley, støtta òg dette synet.
Samband til [[andefuglar]] har òg vore vurdert, mellom anna fordi flamingoar blir parasitterte av fjørlus i slekta ''Anaticola'', som elles finst hos ender og gjæser. Ein studie frå 2002 konkluderte med at flamingoar er andefuglar,<ref name=Kurochkin/> men ei omfattande undersøking frå 2014 viste at flamingoar og [[dukkarar]] ikkje er andefuglar, men høyrer til i ei gruppe saman med [[duer]], [[sandhøns]] og [[mesittar]].<ref name=Jarvis2014/>
Mange molekylære og morfologiske studiar stør eit nært slektskap mellom flamingoar og dukkarar. Dei deler minst 11 morfologiske trekk som ikkje finst hos andre fuglar. Den fossile gruppa Palaelodidae blir rekna som ei mellomform, både evolusjonært og økologisk.<ref name=Gottingen/>
== Kjelder ==
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Flamingo|Flamingo]]» frå {{Wikipedia-utgåve|en}}, den 19. april 2026''
{{refslutt}}
{{reflist|refs=
<ref name=avilist25>{{kjelde www |forfattar=AviList Core Team. 2025. |tittel=AviList: The Global Avian Checklist, v2025. |doi=10.2173/avilist.v2025 |url=https://doi.org/10.2173/avilist.v2025 |utgjevar=AviList: The Global Avian Checklist © 2025 by AviList Core Team is licensed under CC BY 4.0}}</ref>
<ref name=NNKF>{{kjelde www |utgjevar=Norsk navnekomité for fugl (NNKF) |tittel=Norske navn på verdens fugler |url=https://www.birdlife.no/fuglekunnskap/navn/ |dato=26.10.2025}}</ref>
<ref name=minor>{{cite BOW|citation=del Hoyo, J., P. F. D. Boesman, E. Garcia, and G. M. Kirwan (2020). Lesser Flamingo (Phoeniconaias minor), version 1.0. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, and E. de Juana, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.lesfla1.01 }}</ref>
<ref name=andinus>{{cite BOW|citation=Mahmood, Z. A., B. D. Alarcon, K. G. Roberts, J. C. Patton, J. del Hoyo, P. F. D. Boesman, and E. Garcia (2020). Andean Flamingo (Phoenicoparrus andinus), version 2.0. In Birds of the World (T. S. Schulenberg, B. K. Keeney, and S. M. Billerman, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.andfla2.02 }}</ref>
<ref name=jamesi>{{cite BOW|citation=Rivas, C. E., V. Pantoja-Maggi, E. Mardones Muñoz, R. Tapia, J. Cabezas, N. Olmos-Moya, and M. Cortés-Norambuena (2024). James's Flamingo (Phoenicoparrus jamesi), version 2.0. In Birds of the World (F. Medrano and G. M. Kirwan, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.jamfla1.02 }}</ref>
<ref name=chilensis>{{cite BOW|citation=del Hoyo, J., P. F. D. Boesman, and E. Garcia (2024). Chilean Flamingo (Phoenicopterus chilensis), version 1.1. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, and E. de Juana, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.chifla1.01.1 }}</ref>
<ref name=roseus>{{cite BOW|citation=Delfino, H. C., C. J. Carlos, P. Pyle, G. M. Kirwan, J. del Hoyo, P. F. D. Boesman, and E. Garcia (2026). American Flamingo (Phoenicopterus ruber), version 1.2. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, E. de Juana, and M. G. Smith, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.grefla2.01.2 }}</ref>
<ref name=ruber>{{cite BOW|citation=Salvador, A., M. Á. Rendón, J. A. Amat, and M. Rendón-Martos (2024). Greater Flamingo (Phoenicopterus roseus), version 3.0. In Birds of the World (S. M. Billerman and B. K. Keeney, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.grefla3.03 }}</ref>
<ref name=Kurochkin>{{cite journal |last1=Kurochkin |first1=E. N. |last2=Dyke |first2=G. J. |last3=Karhu |first3=A. A. |year=2002 |title=A New Presbyornithid Bird (Aves, Anseriformes) from the Late Cretaceous of Southern Mongolia |journal=American Museum Novitates |issue=3386 |hdl=2246/2875 |pages=1–11 |doi=10.1206/0003-0082(2002)386<0001:ANPBAA>2.0.CO;2|s2cid=59147935 |url=http://digitallibrary.amnh.org/bitstream/2246/2875/1//v2/dspace/ingest/pdfSource/nov/N3386.pdf }}</ref>
<ref name=Jarvis2014>{{cite journal |last1=Jarvis |first1=E.D. |display-authors=etal |year=2014 |title=Whole-genome analyses resolve early branches in the tree of life of modern birds |journal=Science |volume=346 |issue=6215| pages=1320–1331 |doi=10.1126/science.1253451 |pmid=25504713 |pmc=4405904| bibcode=2014Sci...346.1320J }}</ref>
<ref name=Gottingen>{{Cite journal |last=Mayr |first=Gerald |year=2006 |title=The contribution of fossils to the reconstruction of the higher-level phylogeny of birds |url=http://www.senckenberg.de/files/content/forschung/abteilung/terrzool/ornithologie/gottingen.pdf |journal=Species, Phylogeny and Evolution |volume=3 |pages=59–64 |issn=1098-660X |archive-url=https://web.archive.org/web/20120302143030/http://www.senckenberg.de/files/content/forschung/abteilung/terrzool/ornithologie/gottingen.pdf |archive-date=2012-03-02 |access-date=19.04.2026}}</ref>
<ref name=svensson>Svensson, Lars et al (2017). ''Gyldendals store fugleguide.'' Gyldendal norsk forlag. ISBN 9788205418820</ref>
<ref name=Grazian>{{cite book |title=American Zoo: A Sociological Safari |first=David |last=Grazian |year=2015 |location=Princeton, NJ, US |publisher=Princeton University Press |page=35 |isbn=978-0-691-16435-9 |url=https://books.google.com/books?id=SLpKCAAAQBAJ&pg=PA35}}</ref>
<ref name=torres>{{cite journal|doi=10.1186/1471-2148-14-36|pmid= 24580860|pmc= 4016592|title= A multi-locus inference of the evolutionary diversification of extant flamingos (Phoenicopteridae)|journal= BMC Evolutionary Biology|volume= 14|issue= 1|page= 36|year= 2014|last1= Torres|first1= Chris R|last2= Ogawa|first2= Lisa M|last3= Gillingham|first3= Mark AF|last4= Ferrari|first4= Brittney|last5= Van Tuinen|first5= Marcel|doi-access= free|bibcode= 2014BMCEE..14...36T}}</ref>
<ref name=Mascitti>{{cite journal |title=Foraging depth of flamingos in single-species and mixed-species flocks at Laguna de Pozuelos, Argentina |author1=Mascitti, Virginia |author2=Castañera, Mónica B |journal=Waterbirds |pages=328--334 |year=2006 |publisher=JSTOR |url=https://www.jstor.org/stable/4132588}}</ref>
<ref name=libguides>{{cite web |url=https://ielc.libguides.com/sdzg/factsheets/americanflamingo/behavior |title=American Flamingo (Phoenicopterus ruber) Fact Sheet: Behavior & Ecology |publisher=San Diego Zoo Global |access-date=19.04.2026 }}</ref>
<ref name=ioc2016>Gill, F and D Donsker (Eds). (2016). [http://www.worldbirdnames.org/ IOC World Bird List (v 6.3).]</ref>
<ref name=bow>{{cite BOW |citation=Winkler, D. W., S. M. Billerman, and I. J. Lovette (2020). Flamingos (Phoenicopteridae), version 1.0. In Birds of the World (S. M. Billerman, B. K. Keeney, P. G. Rodewald, and T. S. Schulenberg, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.phoeni1.01}}</ref>
<ref name=chang>{{cite journal|last1=Chang|first1=Young-Hui |last2=Ting |first2=Lena H.|date=24 May 2017 |title=Mechanical evidence that flamingos can support their body on one leg with little active muscular force |journal=Biology Letters |volume=13|issue=5|article-number=20160948|doi=10.1098/rsbl.2016.0948|pmid=28539457|pmc=5454233}}</ref>
<ref name=Jenkin>{{Cite journal |last1= Jenkin |first1= Penelope M. |title= The filter-feeding and food of flamingoes (Pheonicopteri) |journal= Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences |volume= 240 |issue= 674 |pages= 401–493 |date=1957-05-09 |doi= 10.1098/rstb.1957.0004 |bibcode= 1957RSPTB.240..401J |doi-access= free }}, page 409.</ref>
<ref name=biodict>{{kjelde www |tittel=Flamingo |url=https://biologydictionary.net/flamingo/ |vitja=19.04.2026 |etternamn=Whitehouse |førenamn=Lindy |utgjevingsdato=29.10.2020 |utgjevar=Biology Dictionary
|arkiv_url=https://web.archive.org/web/20260217151302/https://biologydictionary.net/flamingo/ |arkivdato=17.02-2026}}</ref>
}}
== Bakgrunnsstoff ==
{{Commons|Phoenicopterus ruber}} <!--
* What do we know about flamingo behaviors? A systematic review of the ethological research on the Phoenicopteridae (1978–2020). By: Delfino, Henrique Cardoso, Carlos, Caio J., Acta Ethologica, 08739749, Feb2022, Vol. 25, Issue 1-->
{{Fuglar}}
[[Kategori:Flamingofamilien| ]]
[[Kategori:Fuglar etter klassifisering]]
guvsvwxv6p0i1tj7jdqxxpxvdkmbvt0
3650925
3650924
2026-04-19T10:19:14Z
Roarjo
183
/* Skildring */
3650925
wikitext
text/x-wiki
{{taksoboksLua|taksonomi_WD=ja
| bilete = Twoflamingos tj.jpg
| bilettekst = To flamingoar
}}
Dei seks artane av '''flamingoar''' utgjer [[biologisk familie|familien]] '''Phoenicopteridae''', einaste familien i [[biologisk orden|ordenen]] '''Phoenicopteriformes'''. Dette er selskaplege [[vadefuglar]] i grunne, gjerne i svært salte innsjøar og lagunar der dei nyttar eit spesialisert nebb for å søkje og filtrere plankton. Det finst fire artar i [[Amerika]] og to artar i [[«den gamle verda»]].
== Etymologi ==
Namnet «flamingo» kjem frå portugisisk eller spansk ''flamengo'', som tyder «flammefarga». Ordet har opphav i provençalsk ''flamenc'', ei samansetjing av ''flama'' («flamme») og eit germansk-liknande suffiks ''-ing''. Namnet kan òg vere påverka av det spanske etnonymet ''flamenco'' («flamlendar»). Slektsnamnet ''[[Phoenicopterus]]'' kjem frå gammalgresk ''phoinikopteros'' (φοινικόπτερος), «raud- eller purpurfarga fjør».<ref>{{OEtymD|flamingo}}</ref> Andre slektsnamn er ''Phoeniconaias'' («raud vassnymfe»)<ref name=minor/> og ''Phoenicoparrus'' («(krimson)raud fugl»).<ref name=andinus/>
== Skildring ==
Flamingoar er store fuglar med særs lange bein, lang hals og kraftig bøyg på nebbet. Hannen er noko større enn hoa hos dei fleste artar, for [[raudflamingo]] (''Phoenicopterus ruber'') er hoer opptil 20 % mindre enn hannar.
Den største arten, [[rosenflamingo]] (''Phoenicopterus roseus''), kan bli opptil 1,4 meter høg<ref name=biodict/> og vege opp til 3,5-4,1 kg,<ref name=roseus/> medan [[dvergflamingo]] (''Phoeniconaias minor'') er om lag 0,8 meter høg. Vengespennet varierer frå om lag 100 cm hos dvergflamingo til opptil 187,<ref name=roseus/> vanlegvis 140-170 cm,<ref name=svensson/> hos rosenflamingo.
Flamingokyllingar har grå eller brun [[fjørdrakt]], blir etter ei tid nær kvit, medan farga på drakta hos vaksne individ varierer frå lys rosa til lys raud ettersom innhaldet av vassbakteriar og [[karotenoidar]] i dietten varierer. Ein flamingo med god tilgjenge på mat får kraftfulle farger og er ein ettertrakta make. Ein kvit eller bleik flamingo er derimot usunn eller underernært. Flamingoar i fangenskap er eit unnatak, om dei ikkje får fôr med same innhald av karoten som frie fuglar slår dei over i ei bleik rosa farge.<ref name=Grazian/>
Flamingoar står ofte på eitt bein, med det andre trekt opp under kroppen. Grunnen til denne åtferda er ikkje fullt ut forstått. Ein hypotese er at dei sparer kroppsvarme, sidan dei ofte står i kaldt vatn. Ei anna forklaring er at det reduserer energibruken ved å halde balansen.<ref name=chang/>
Dei har symjeføter som hjelper ved symjing, og når dei vadar vil dei trampe i botnen for å røre opp næring. Flamingoar kan opne nebbet ved å løfte overnebbet så vel som å senke undernebbet.<ref name=Jenkin/> Dei er gode flygarar, og individ i fangenskap får ofte klipte vengfjører for å hindre rømming.
=== Føde ===
Flamingoar filtrerer føde i form av vasslevande dyr, saltkreps, cyanobakteriar, larvar, insekt, blautdyr og krepsdyr og plantemateriale i form av plankton og algar. Nebbet er tilpassa filtrering av slam og vatn, og blir brukt i opp-ned rørsle. Filtreringa blir hjelpt av lamellar (små børsteliknande strukturar) i nebbet og ei kraftig tunge som «pumpe».
Den rosa eller raude farga kjem frå karotenoid i føda. Fuglar som et meir karotenrik føde, får sterkare farge.
Flamingoar føretrekkjer ferskvatn, men har saltkjertlar nær auga som fjernar overflødig salt, slik at dei òg kan drikke saltvatn i saltsjøar.
[[Chileflamingo]], [[punaflamingo]] og [[andesflamingo]] kan samlast i fleirartsflokkar, men artane vil segregere under beiting ut frå artsspesifikke preferansar for føde, til dømes etter typar av algar dei føretrekker.<ref name=Mascitti/>
=== Læte ===
Flamingoar har lydar som varierer frå grynting og knurring til nasale rop. Lydane er viktige for å kjenne att ungar, for sosiale signal og for å halde flokkane samla.<ref name=libguides/>
=== Livssyklus ===
Flamingoar er svært sosiale og lever i koloniar som kan telje tusenvis av individ. Koloniane hjelper til med å verne mot predatorar, utnytte matressursar og finne eigna hekkeplassar.
Før hekking utfører hannar og hoer synkroniserte kurtiseritual med hovudrørsler, rop og vengeslag.
Hoa legg vanlegvis eitt egg. Begge foreldra rugar i 17–18 dagar. Etter klekking blir ungane mata med [[kromjølk|«kromjølk»]], ei næringsrik væske produsert i fordøyingssystemet. Ungane held seg først i reiret, men samlar seg etter kvart i grupper («barnehagar»). Når dei er rundt tre månader gamle, har dei utvikla flygefjør og kan flyge.<ref name=bow/>
== Biletgalleri ==
<gallery>
<!-- fil:Flamingos at Las Vegas Zoo.JPG|[[Chileflamingo]]ar i [[Las Vegas Zoo]] fungerar ikkje -->
fil:Flamingo National Zoo.jpg|[[Raudflamingo]] i National Zoo Washington, DC.
fil:Lesser-flamingos-flying.jpg|[[Dverglamingo]]ar i flukt
fil:Flamingo fg01.jpg|Raudflamingo ein dyrepark i [[Frankfurt am Main|Frankfurt]], som sannsynlegvis søv
fil:Flamingos_Laguna_Colorada.jpg|[[Punaflamingo]] i [[Laguna Colorada]], [[Bolivia]]
Fil:Flamingowatchingegghatch08.jpg| Raudflamingo med egg
Fil:Flamingowithchick08.jpg|Raudflamingo med unge
</gallery>
== Artsoversyn ==
Seks nolevande flamingoartar er anerkjende av dei fleste kjelder, og vart tidlegare plasserte i éi slekt ut frå felles kjenneteikn – Phoenicopterus. Som eit resultat av ein publikasjon frå 2014,<ref name=torres/> vart familien omklassifisert til to slekter.<ref name=ioc2016/> I 2020 var familien splitta i tre anerkjende slekter, ifølgje [[Cornell Lab of Ornithology]], Birds of the World.<ref name=bow/>
Flamingoar i rekkjefølgje etter [[AviList]] v2025:<ref name=avilist25/> med norske namn etter ''Norske navn på verdens fugler'':<ref name=NNKF/>
;Slekt ''Phoeniconaias''
* [[Dvergflamingo]], ''Phoeniconaias minor'', Lesser Flamingo, <small>(Geoffroy Saint-Hilaire, É, 1798), (NT)</small>
: Afrika og det indiske subkontinentet.<ref name=minor/>
;Slekt ''[[Phoenicoparrus]]''
* [[Andesflamingo]], ''Phoenicoparrus andinus'', Andean Flamingo, <small>(Philippi, RA, 1854), (VU)</small>
: Høgtliggande Andes i Bolivia inn i sørlege Peru, NE Chile og NW Argentina, til over 4000 moh.<ref name=andinus/>
* [[Punaflamingo]], ''Phoenicoparrus jamesi'', James's Flamingo, <small>(Sclater, PL, 1886), (NT)</small>
: 90-110 cm i kroppslengd. Lever i Puna økoregion, opptil 4900 moh.<ref name=jamesi/>
;Slekt ''[[Phoenicopterus]]''
* [[Chileflamingo]], ''Phoenicopterus chilensis'', Chilean Flamingo, <small>Molina, GI, 1782, (NT)</small>
: Sør-Amerika frå Equador til Eldlandet.<ref name=chilensis/>
* [[Rosenflamingo]], ''Phoenicopterus roseus'', Greater Flamingo, <small>Pallas, PS, 1811, (LC)</small>
: Finst i S-Europa, Afrika, V-Asia til India og Sri Lanka.<ref name=roseus/>
* [[Raudflamingo]], ''Phoenicopterus ruber'', American Flamingo, <small>Linnaeus, C, 1758, (LC)</small>
: Kariba inkludert sørlegaste Florida og kysten av nordaustlege Colombia til guyanaregionen. Somme er trekkfuglar. Ein isolert populasjon lever på Galapagosøyane.<ref name=ruber/>
== Taksonomi og systematikk ==
Flamingofamilien vart innført med namnet Phoenicopteridae av den franske zoologen Charles Lucien Bonaparte i 1831. ''[[Phoenicopterus]]'' vart peika ut som typeslekt.
Tradisjonelt vart flamingoar rekna som nært i slekt med dei langbeinte [[Ciconiiformes|storkane]], ei truleg parafyletisk gruppe, og vart plasserte der. Ofte vart [[ibisar og skeistorkar]] rekna som dei næraste slektningane. Tidlege genetiske studiar, som dei til Charles Sibley, støtta òg dette synet.
Samband til [[andefuglar]] har òg vore vurdert, mellom anna fordi flamingoar blir parasitterte av fjørlus i slekta ''Anaticola'', som elles finst hos ender og gjæser. Ein studie frå 2002 konkluderte med at flamingoar er andefuglar,<ref name=Kurochkin/> men ei omfattande undersøking frå 2014 viste at flamingoar og [[dukkarar]] ikkje er andefuglar, men høyrer til i ei gruppe saman med [[duer]], [[sandhøns]] og [[mesittar]].<ref name=Jarvis2014/>
Mange molekylære og morfologiske studiar stør eit nært slektskap mellom flamingoar og dukkarar. Dei deler minst 11 morfologiske trekk som ikkje finst hos andre fuglar. Den fossile gruppa Palaelodidae blir rekna som ei mellomform, både evolusjonært og økologisk.<ref name=Gottingen/>
== Kjelder ==
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Flamingo|Flamingo]]» frå {{Wikipedia-utgåve|en}}, den 19. april 2026''
{{refslutt}}
{{reflist|refs=
<ref name=avilist25>{{kjelde www |forfattar=AviList Core Team. 2025. |tittel=AviList: The Global Avian Checklist, v2025. |doi=10.2173/avilist.v2025 |url=https://doi.org/10.2173/avilist.v2025 |utgjevar=AviList: The Global Avian Checklist © 2025 by AviList Core Team is licensed under CC BY 4.0}}</ref>
<ref name=NNKF>{{kjelde www |utgjevar=Norsk navnekomité for fugl (NNKF) |tittel=Norske navn på verdens fugler |url=https://www.birdlife.no/fuglekunnskap/navn/ |dato=26.10.2025}}</ref>
<ref name=minor>{{cite BOW|citation=del Hoyo, J., P. F. D. Boesman, E. Garcia, and G. M. Kirwan (2020). Lesser Flamingo (Phoeniconaias minor), version 1.0. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, and E. de Juana, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.lesfla1.01 }}</ref>
<ref name=andinus>{{cite BOW|citation=Mahmood, Z. A., B. D. Alarcon, K. G. Roberts, J. C. Patton, J. del Hoyo, P. F. D. Boesman, and E. Garcia (2020). Andean Flamingo (Phoenicoparrus andinus), version 2.0. In Birds of the World (T. S. Schulenberg, B. K. Keeney, and S. M. Billerman, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.andfla2.02 }}</ref>
<ref name=jamesi>{{cite BOW|citation=Rivas, C. E., V. Pantoja-Maggi, E. Mardones Muñoz, R. Tapia, J. Cabezas, N. Olmos-Moya, and M. Cortés-Norambuena (2024). James's Flamingo (Phoenicoparrus jamesi), version 2.0. In Birds of the World (F. Medrano and G. M. Kirwan, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.jamfla1.02 }}</ref>
<ref name=chilensis>{{cite BOW|citation=del Hoyo, J., P. F. D. Boesman, and E. Garcia (2024). Chilean Flamingo (Phoenicopterus chilensis), version 1.1. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, and E. de Juana, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.chifla1.01.1 }}</ref>
<ref name=roseus>{{cite BOW|citation=Delfino, H. C., C. J. Carlos, P. Pyle, G. M. Kirwan, J. del Hoyo, P. F. D. Boesman, and E. Garcia (2026). American Flamingo (Phoenicopterus ruber), version 1.2. In Birds of the World (J. del Hoyo, A. Elliott, J. Sargatal, D. A. Christie, E. de Juana, and M. G. Smith, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.grefla2.01.2 }}</ref>
<ref name=ruber>{{cite BOW|citation=Salvador, A., M. Á. Rendón, J. A. Amat, and M. Rendón-Martos (2024). Greater Flamingo (Phoenicopterus roseus), version 3.0. In Birds of the World (S. M. Billerman and B. K. Keeney, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.grefla3.03 }}</ref>
<ref name=Kurochkin>{{cite journal |last1=Kurochkin |first1=E. N. |last2=Dyke |first2=G. J. |last3=Karhu |first3=A. A. |year=2002 |title=A New Presbyornithid Bird (Aves, Anseriformes) from the Late Cretaceous of Southern Mongolia |journal=American Museum Novitates |issue=3386 |hdl=2246/2875 |pages=1–11 |doi=10.1206/0003-0082(2002)386<0001:ANPBAA>2.0.CO;2|s2cid=59147935 |url=http://digitallibrary.amnh.org/bitstream/2246/2875/1//v2/dspace/ingest/pdfSource/nov/N3386.pdf }}</ref>
<ref name=Jarvis2014>{{cite journal |last1=Jarvis |first1=E.D. |display-authors=etal |year=2014 |title=Whole-genome analyses resolve early branches in the tree of life of modern birds |journal=Science |volume=346 |issue=6215| pages=1320–1331 |doi=10.1126/science.1253451 |pmid=25504713 |pmc=4405904| bibcode=2014Sci...346.1320J }}</ref>
<ref name=Gottingen>{{Cite journal |last=Mayr |first=Gerald |year=2006 |title=The contribution of fossils to the reconstruction of the higher-level phylogeny of birds |url=http://www.senckenberg.de/files/content/forschung/abteilung/terrzool/ornithologie/gottingen.pdf |journal=Species, Phylogeny and Evolution |volume=3 |pages=59–64 |issn=1098-660X |archive-url=https://web.archive.org/web/20120302143030/http://www.senckenberg.de/files/content/forschung/abteilung/terrzool/ornithologie/gottingen.pdf |archive-date=2012-03-02 |access-date=19.04.2026}}</ref>
<ref name=svensson>Svensson, Lars et al (2017). ''Gyldendals store fugleguide.'' Gyldendal norsk forlag. ISBN 9788205418820</ref>
<ref name=Grazian>{{cite book |title=American Zoo: A Sociological Safari |first=David |last=Grazian |year=2015 |location=Princeton, NJ, US |publisher=Princeton University Press |page=35 |isbn=978-0-691-16435-9 |url=https://books.google.com/books?id=SLpKCAAAQBAJ&pg=PA35}}</ref>
<ref name=torres>{{cite journal|doi=10.1186/1471-2148-14-36|pmid= 24580860|pmc= 4016592|title= A multi-locus inference of the evolutionary diversification of extant flamingos (Phoenicopteridae)|journal= BMC Evolutionary Biology|volume= 14|issue= 1|page= 36|year= 2014|last1= Torres|first1= Chris R|last2= Ogawa|first2= Lisa M|last3= Gillingham|first3= Mark AF|last4= Ferrari|first4= Brittney|last5= Van Tuinen|first5= Marcel|doi-access= free|bibcode= 2014BMCEE..14...36T}}</ref>
<ref name=Mascitti>{{cite journal |title=Foraging depth of flamingos in single-species and mixed-species flocks at Laguna de Pozuelos, Argentina |author1=Mascitti, Virginia |author2=Castañera, Mónica B |journal=Waterbirds |pages=328--334 |year=2006 |publisher=JSTOR |url=https://www.jstor.org/stable/4132588}}</ref>
<ref name=libguides>{{cite web |url=https://ielc.libguides.com/sdzg/factsheets/americanflamingo/behavior |title=American Flamingo (Phoenicopterus ruber) Fact Sheet: Behavior & Ecology |publisher=San Diego Zoo Global |access-date=19.04.2026 }}</ref>
<ref name=ioc2016>Gill, F and D Donsker (Eds). (2016). [http://www.worldbirdnames.org/ IOC World Bird List (v 6.3).]</ref>
<ref name=bow>{{cite BOW |citation=Winkler, D. W., S. M. Billerman, and I. J. Lovette (2020). Flamingos (Phoenicopteridae), version 1.0. In Birds of the World (S. M. Billerman, B. K. Keeney, P. G. Rodewald, and T. S. Schulenberg, Editors). Cornell Lab of Ornithology, Ithaca, NY, USA. https://doi.org/10.2173/bow.phoeni1.01}}</ref>
<ref name=chang>{{cite journal|last1=Chang|first1=Young-Hui |last2=Ting |first2=Lena H.|date=24 May 2017 |title=Mechanical evidence that flamingos can support their body on one leg with little active muscular force |journal=Biology Letters |volume=13|issue=5|article-number=20160948|doi=10.1098/rsbl.2016.0948|pmid=28539457|pmc=5454233}}</ref>
<ref name=Jenkin>{{Cite journal |last1= Jenkin |first1= Penelope M. |title= The filter-feeding and food of flamingoes (Pheonicopteri) |journal= Philosophical Transactions of the Royal Society of London. Series B, Biological Sciences |volume= 240 |issue= 674 |pages= 401–493 |date=1957-05-09 |doi= 10.1098/rstb.1957.0004 |bibcode= 1957RSPTB.240..401J |doi-access= free }}, page 409.</ref>
<ref name=biodict>{{kjelde www |tittel=Flamingo |url=https://biologydictionary.net/flamingo/ |vitja=19.04.2026 |etternamn=Whitehouse |førenamn=Lindy |utgjevingsdato=29.10.2020 |utgjevar=Biology Dictionary
|arkiv_url=https://web.archive.org/web/20260217151302/https://biologydictionary.net/flamingo/ |arkivdato=17.02-2026}}</ref>
}}
== Bakgrunnsstoff ==
{{Commons|Phoenicopterus ruber}} <!--
* What do we know about flamingo behaviors? A systematic review of the ethological research on the Phoenicopteridae (1978–2020). By: Delfino, Henrique Cardoso, Carlos, Caio J., Acta Ethologica, 08739749, Feb2022, Vol. 25, Issue 1-->
{{Fuglar}}
[[Kategori:Flamingofamilien| ]]
[[Kategori:Fuglar etter klassifisering]]
9jpkz76t0hzefxc1b41wmji13m8tv30
Transformator
0
50233
3650883
2803497
2026-04-18T13:24:45Z
Sigmundg
835
Påfyll
3650883
wikitext
text/x-wiki
[[Fil:Transformers.jpg|mini|250px|høgre|Fig. 1 Døme på små effekttransformatorar.]]
'''Transformator''' er ein [[elektromagnetisme|elektomagnetisk]] komponent som vert nytta for impedansetransformasjon, som tilsvarar at spenninga eller straumen vert transformert opp eller ned. Om spenninga vert transformert opp vert straumen transformert ned, eller motsett.
== Grunnleggande oppbygging og verkemåte ==
[[Fil:Transformer3d_col3.svg|mini|300px|høgre|Fig. 2 Transformator.]]
Transformatorar er bygd opp med to [[galvanisk isolert]]e krinsar som er kopla saman med ein [[magnetisk fluks]]. Dei to krinsane, som vert kalla primærkrins og sekundærkrins, har kvar sin [[spole]] som er vikla rundt eit materiale med liten [[reluktans]] (kalla transformatorkjernen), som den magnetiske fluksen fylgjer, Fig. 2.
Fluksen i den magnetiske krinsen
{{NumBlk|:|<math>
\Phi = \frac{N_{1}i_1}{\mathfrak R},
</math>|{{EquationRef|1}}}}
der ''N<sub>1</sub>'' er vinningstalet i primærspolen, <math>i_1</math> er straumen i primærspolen og <math>\mathfrak R</math> er reluktansen til transformatorkjernen. Fluksen fylgjer den magnetiske leiaren (transformatorkjernen), slik at same fluksen går gjennom begge spolane.
I primærkrinsen induserer fluksen (i fylgje [[Faradays induksjonslov]]) ei spenning
{{NumBlk|:|<math>
v_1 = N_1 \frac{d \Phi}{dt},
</math>|{{EquationRef|2}}}}
der <math>\frac{\mathrm{d}\Phi}{\mathrm{d}t}</math> er den [[derivasjon|tidsderiverte]] av fluksen, og i sekundærkrinsen vert det indusert ei spenning
{{NumBlk|:|<math>
v_{2} = N_{2} \frac{\mathrm{d}\Phi}{\mathrm{d}t},
</math>|{{EquationRef|3}}}}
der ''N<sub>2</sub>'' er vinningstalet i sekundærviklinga. Tilhøvet mellom spenningane i sekundær- og primærkrinsen kan difor uttrykkast
{{NumBlk|:|<math>
\frac{v_{2}}{v_{1}} = \frac{N_{2}}{N_{1}} = a.
</math>|{{EquationRef|4}}}}''''''Feit tekst''''''
=== Ideell transformator ===
[[Fil:Transformer_under_load_(alternative_version).svg|mini|Fig. 3 Ideell transformator med [[spenningskjelde]] <math>V_P</math> og lastimpedans <math>Z_L</math>.]]
Ein ideell transformator er ein forenkla modell av ein transformator som ikkje har tap<ref name="Franco"/>. Fig. 3 syner ein ideell transformator med ein ei spenningskjelde <math>V_P</math> og ein last[[impedans]] <math>Z_{L}</math> i sekundærkrinsen. Straumen i lastmotstanden (<math>I_S</math> i fig. 3)
{{NumBlk|:|<math>
i_{2} = \frac{V_{2}}{Z_{L}}.
</math>|{{EquationRef|5}}}}
Ein ideell transformator har ikkje tap, så effekten i sekundærkrinsen må vera lik effekten i primærkrinsen:
{{NumBlk|:|<math>
P_{1} = P_{2},
</math>|{{EquationRef|6}}}}
som er det same som at
{{NumBlk|:|<math>
v_{1}i_{1} = v_{2}i_{2}.
</math>|{{EquationRef|7}}}}
Ved å kombinera likningane kjem ein fram til fylgjande samanhengar for ein ideell transformator:
{{NumBlk|:|<math>
\frac{v_{2}}{v_{1}} = \frac{i_{1}}{i_{2}} = \frac{N_{2}}{N_{1}}.
</math>|{{EquationRef|8}}}}
Om <math>N_{2} > N_{1}</math> vert spenninga transformert opp (<math>v_{2} > v_{1}</math>) og straumen vert transformert ned (<math>i_{2} > i_{1}</math>), og om <math>N_{2} < N_{1}</math> vert spenninga transformert ned (<math>v_{2} > v_{1}</math>) og straumen vert transformert opp.
Lastimpedansen sett frå primærsida kan uttrykkast
{{NumBlk|:|<math>
Z_{L}{'} = \frac{v_{1}}{i_{1}} =
\frac{v_{2}{\left(\!\frac{N_{1}}{N_{2}}\right)}}{{i_{2}}{\left(\!\frac{N_{2}}{N_{1}}\right)}} = \left(\!\frac{v_{2}}{i_{2}}\right)\!{\left(\!\frac{N_{1}}{N_{2}}\right)^2} = Z_{L}\!{\left(\!\frac{N_{1}}{N_{2}}\right)^2}.
</math>|{{EquationRef|9}}}}
På same måte kan kildeimpedanse <math>Z_{k}</math> sett frå sekundærsida uttrykkast
{{NumBlk|:|<math>
Z_{k}^{'} = Z_{k}\!{\left(\!\frac{N_{2}}{N_{1}}\right)^2}.
</math>|{{EquationRef|10}}}}
Ein ser at spenningar og straumar vert transformerte med omsettingsforholdet <math>\frac{N_{2}}{N_{1}}</math>, medan impedansar vert transformerte med kvadratet av omsetningsforholdet.
== Praktiske transformatorar ==
[[Fil:Transformer_Flux.svg|mini|Fig. 4 Lekasjefluks.]]
<!--[[Fil:Trafo_vazba.png|800px|Fig. 4 .]]-->
<!--[[Fil:Transformer_-_equivalent_circuit_diagram.png|mini|400px|Fig. 6 .]]-->
<!--[[Fil:Trafo-ESB-vereinfacht.svg|mini|400px|Fig. 7 .]]-->
Praktiske transformatorar avvik noko frå den ideelle transformatoren skildra så langt. Eit slikt avvik er at noko av fluksen ikkje fylgjer kjernematerialet. Storparten av fluksen <math>\Phi_1</math> generert av primærspolen fylgjer kjernematerialet og flyt gjennom sekundærspolen, der han induserer sekundærspenninga <math>v_2</math>. Dette er den mutuelle fluksen <math>\Phi_{12}</math> i fig. 4. Men ein liten del av fluksen tek vegen utanom kjernematerialet. Denne lekasjefluksen er merka <math>\Phi_{\sigma 1}</math> og <math>\Phi_{\sigma 2}</math> i fig. 4. Lekasjefluksen i primær og sekundærviklingane kan uttrykkast
{{NumBlk|:|<math>
\Phi_{\sigma 1} = \Phi_{1} - \Phi_{12}
</math>|{{EquationRef|11}}}}
respektivt
{{NumBlk|:|<math>
\Phi_{\sigma 1} = \Phi_{2} - \Phi_{12},
</math>|{{EquationRef|12}}}}
der <math>\Phi_{12}</math> er den mutuelle fluksen, <math>\Phi_{1}</math> er fluksen gjennom primærspolen og <math>\Phi_{2}</math> er fluksen gjennom sekundærspolen. Etter som kjernen har mykje større [[permeabilitet]] enn luft er lekasjefluksen berre nokre få prosent av den mutuelle fluksen<ref name="McPHerson"/>. Lekasjefluksen er proporsjonal med straumen i viklingane. Transformatorar med høg spenning krev tjukkare isolasjon, så avstanden mellom viklingae er større, noko som aukar lekasjefluksen.
Magnetiseringa av kjernematerialet er både ulineær og [[Magnetisk hysterese|hysterisk]], men lekasjefluksen går gjennom eit ikkje-feromagnetisk materiale og vert ikkje påvirka av at kjernen går i metning. [[Charles Proteus Steinmetz]] fann at det difor er nyttig å skilja lekasjefluksen frå den mutuelle fluksenref <ref name="McPHerson"/>.
=== Separasjon an mutual- og lekasjefluks ===
Primærspenninga kan uttrykkjast
{{NumBlk|:|<math>
V_1 = N_1\frac{d\phi_{\sigma 1}}{dt} + N_1\frac{d\phi_{12}}{dt}
</math>|{{EquationRef|13}}}}
der leddet <math>N_1\frac{d\phi_{\sigma 1}}{dt}</math> representerer spenninga indusert av lekasjefluksen <math>\Phi_{\sigma 1}</math> og leddet
<math> N_1\frac{d\phi_{12}}{dt}</math> representerer spenninga indusert i primærkrinsen på grunn av den mutuelle fluksen <math>\Phi_{12}</math>. Leksjefluksen er berre nokre få prosent av den mutuelle fluksen.
På same vis kan spenninga i sekundærkrinsen separerast i to delar:
{{NumBlk|:|<math>
V_2 = N_2\frac{d\phi_{\sigma 2}}{dt} + N_2\frac{d\phi_{12}}{dt}
</math>|{{EquationRef|14}}}}
der leddet <math>N_2\frac{d\phi_{\sigma 2}}{dt}</math> representerer spenninga indusert på grunn av lekasjefluksen <math>\Phi_{\sigma 2}</math> i sekundærspolen og leddet <math>N_2\frac{d\phi_{12}}{dt}</math> representerer spenninga indusert i sekundærkrinsen av den mutuelle fluksen <math>\Phi_{12}</math>.
=== Lekasjeinduktans ===
Lekasjefluksane er ikkje påverka av kjernemetninga, men er proporsjonal med den [[magnetomotorisk spenning]]a <math>\mathcal{F}_{m}=Ni</math>.
Dei kan difor uttrykkast
{{NumBlk|:|<math>
\Phi_{\sigma 1} = \mathcal{P}_1\mathcal{F}_{1} = \mathcal{P}_1 N_1 i_1
</math>|{{EquationRef|15}}}}
respektivt
{{NumBlk|:|<math>
\Phi_{\sigma 2} = \mathcal{P}_2\mathcal{F}_{2} = -\mathcal{P}_2 N_2 i_2,
</math>|{{EquationRef|16}}}}
der <math>\mathcal{P}=\mathcal{R}^{-1}</math> er [[permeans]]sen.
Minusteiknet i ({{EquationNote|16}}) kjem av at sekundærstraumen <math>i_2</math> har retning ut frå sekundærspolen i ekvivalentskjemaet i fig. 4. Vi kan no skriva dei fyrste ledda i ({{EquationNote|13}}) og ({{EquationNote|14}}) som
{{NumBlk|:|<math>
V_{\sigma 1} = \frac{d}{dt}\left( N_1^2 \mathcal{P}_{\sigma 1} i_1 \right) = N_1^2 \mathcal{P}_{\sigma 1} \frac{di_1}{dt}
</math>|{{EquationRef|17}}}}
respektivt
{{NumBlk|:|<math>
V_{\sigma 2} = -\frac{d}{dt}\left( N_2^2 \mathcal{P}_{\sigma 2} i_2 \right) = -N_2^2 \mathcal{P}_{\sigma 2} \frac{di_2}{dt}.
</math>|{{EquationRef|18}}}}
I ({{EquationNote|17}}) og ({{EquationNote|18}}) har ledda <math>N_1^2 \mathcal{P}_{\sigma 1}</math> og <math>N_2^2 \mathcal{P}_{\sigma 2}</math> eininga [[Henry]], så dei representerer [[induktans]]ar. Vi kan difor uttrykka ({{EquationNote|17}}) og ({{EquationNote|18}}) ved hjelp av lekasjeinduktansane <math>L_p</math> og <math>L_s</math>, som
{{NumBlk|:|<math>
V_{\sigma 1} = L_p\frac{di_1}{dt}
</math>|{{EquationRef|18}}}}
respektivt
{{NumBlk|:|<math>
V_{\sigma 2} = -L_s\frac{di_2}{dt}.
</math>|{{EquationRef|20}}}}
=== Ekvivalentskjema ===
[[Fil:Transformer_equivalent_circuit-2.svg|mini|400px|Fig. 5 Transformator ekvivalentskjema.]]
<!--[[Fil:Transformer_equivalent_circuit.svg|mini|400px|Fig. 5 Transformator ekvivalentskjema reflektert til primærsida.]]-->
For sinusforma spenningar kan transformatoren representerast i form av ekvivalentskjemaet vist i fig. 5, der
{{NumBlk|:|<math>
X_p = j\omega L_p
</math>|{{EquationRef|21}}}}
respektivt
{{NumBlk|:|<math>
X_s = j\omega L_s,
</math>|{{EquationRef|22}}}}
er lekkasje[[reaktans]]ane i primær respektivt sekundærviklingane.
Motstanden i primær- og sekundærviklinga er representerte som <math>R_p</math> respektivt <math>R_s</math>.
=== Magnetisering av kjernen ===
I fylgje [[Faradays induksjonslov]] er primærspenninga
{{NumBlk|:|<math>
E_p = N_p \frac{d\Phi}{dt}.
</math>|{{EquationRef|23}}}}
Etter som spenningsfallet over <math>R_p</math> og <math>X_p</math> er lite er <math>E_p\approx V_p</math>. Med sinusforma inngangsspenning er difor <math>E_p</math> med god tilnærming òg sinusforma. Vi kan vi difor uttrykkja spenninga over primærspolen som
{{NumBlk|:|<math>
E_p = \sqrt{2}E_p\sin(\omega t + \alpha),
</math>|{{EquationRef|24}}}}
der <math>E_p</math> er [[effektivverdi]]en til primærspenninga og <math>\alpha</math> er eit faseskift. Ved å kombinera ({{EquationNote|23}}) og ({{EquationNote|24}}) kan fluksen gjennom kjernen uttrykkast
{{NumBlk|:|<math>
\Phi_{12} = \frac{1}{N_p}\int \sqrt{2}E_p\sin(\omega t + \alpha)dt = -\frac{\sqrt{2}E_p}{\omega N_p}\cos(\omega t + \alpha) + \phi_c.
</math>|{{EquationRef|25}}}}
<math>\phi_c</math> er ein transientfluks som døyr ut etter nokre få periodar, så ({{EquationNote|25}}) vert redusert til
{{NumBlk|:|<math>
\Phi_{12} = -\frac{\sqrt{2}E_p}{\omega N_p}\cos(\omega t + \alpha).
</math>|{{EquationRef|26}}}}
Divisonen med <math>\omega</math> i ({{EquationNote|26}}) syner at fluksen ligg <math>90^{\circ}</math> etter spenninga <math>E_p</math>.
Maksverdien til fluksen i kjernen
{{NumBlk|:|<math>
\Phi_{max} = \frac{\sqrt{2}E_p}{\omega N_p} = \frac{1}{\sqrt{2}\pi f} \frac{E_p}{N_p}.
</math>|{{EquationRef|27}}}}
Vi ser frå ({{EquationNote|27}}) at med ei sinusforma inngangsspenning er maksverdien til fluksen proporsjonal med tilhøvet <math>E_p/N_p</math> og invers proporsjonal med frekvensen <math>f</math>. Transformatorar som arbeider emd låge frekvensar har difor høgare fluksverdiar enn høgfrekenstransformatorar, så tverrsnittet på kjernen lyt vera større. Dette er grunnen til at transformatorane i svitsja forsyningar, som arbeider med frekvensar på fleire hundre kHz, er mykje mindre enn transformatorar som arbeider med 50 Hz (som i [[elnett]]et).
Summen av dei [[magnetomotorisk spenning|magnetomotoriske spenningane]] i primær- og sekundærkrinsen
{{NumBlk|:|<math>
\mathcal{F}_{m,T} = \mathcal{F}_{m,p} + \mathcal{F}_{m,s} = N_pI_p - N_sI_s.
</math>|{{EquationRef|28}}}}
Om vi dividerer begge sider med <math>N_p</math> får vi
{{NumBlk|:|<math>
\frac{\mathcal{F}_{m,T}}{N_p} = I_p - \frac{I_s}{N_s/N_p} = I_P - \frac{I_s}{a} \doteq I_{0},
</math>|{{EquationRef|29}}}}
I ein ideel transformator er <math>I_{o}=0</math>, men i ein fysisk transformator er ikkje <math>I_{o}</math> null og representerer den ekstra primærstraumen som skal til for å magnetisera den ferromagnetiske kjernen, plus [[hysterese]]- of [[virvelstraum]]stapa i kjernen. Så <math>I_{o}</math> består av to delar
{{NumBlk|:|<math>
I_{o} = I_{\Phi} + I_{h+v},
</math>|{{EquationRef|30}}}}
eller uttrykt som magnetomotoriske spenningar
{{NumBlk|:|<math>
\mathcal{F}_{o} = N_p I_{M} + N_p I_{C},
</math>|{{EquationRef|31}}}}
der den magnetomotoriske spenninga <math>N_p I_{M}</math> magnetiserer kjernen og <math>N_p I_{C}</math> er den magnetomotoriske spenninga som skal til for å driva hysterese- og virvelstraumstapa i kjernen.
== Referansar ==
<references>
<ref name="Franco">S. Franco, ''Electric circuits fundamentals'', Saunders College Publishing, 1995.</ref>
<ref name="McPHerson">G. McPHerson, ''An introduction to electrical machines and transformers'', John Wiley & Sons, 1981.</ref>
</references>
== Sjå òg ==
* [[Induksjonsmotor]]
* [[Elnett]]
{{Elektrofag}}
{{Autoritetsdata}}
[[Kategori:Elektroteknikk]]
[[Kategori:Transformatorar| ]]
7bibo8e3jwa7g7jq5yfnz0fhmkw4jvp
Regionen Bihor
0
82416
3650885
3650851
2026-04-18T13:52:00Z
HerVal7752
105842
|namn = Bihor
3650885
wikitext
text/x-wiki
{{geoboks|region
|namn = Bihor
}}
'''Bihor''' er ein region nordaust i [[Montenegro]]. Region ligg innanfor to kommunar, [[Berane]] og [[Bijelo Polje]]. Han er kalla opp etter [[Bihor i Montenegro|Bihor]], ein tidlegare mellomalderby som låg nær [[Bijelo Polje]]. Region er hovudsakleg folkesett av etniske [[bosnjakarar]].
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Bihor (region)|Bihor (region)]]» frå {{Wikipedia-utgåve|en}}, den 6. februar 2008.''
{{refslutt}}
{{geografispire}}
{{autoritetsdata}}
{{SORTERINGSNYKEL:Bihor}}
[[Kategori:Montenegrinsk geografi]]
b5d2dvh45h4l7mwcoul5j4ohtwww4iz
Malësia
0
82421
3650888
3397143
2026-04-18T14:05:04Z
HerVal7752
105842
Geoboks
3650888
wikitext
text/x-wiki
{{geoboks|region
|land = Albania
|land1 = Montenegro
|zoom = 8
}}
'''Malësia''' (eller meir formelt '''Malësia e Madhe''', [[serbisk]] Малесија, ''Malesija'') er ein region nord i [[Albania]] og aust i [[Montenegro]]. Han består av eit stort landområde som strekkjer seg frå området søraust for [[Podgorica]] til nordsida av [[Shkodërsjøen]] og inkluderer ein god del av [[Malësi e Madhe distrikt]] i [[Albania]].
==Kjelder==
{{fotnoteliste}}
{{refopning}}
*''Denne artikkelen bygger på «[[:en:Malësia|Malësia]]» frå {{Wikipedia-utgåve|en}}, den 6. februar 2008.''
{{refslutt}}
{{autoritetsdata}}
[[Kategori:Albansk geografi]]
[[Kategori:Montenegrinsk geografi]]
bis0r7g0m3vugm5dhl8bx1uheb2bk32
Gamle Hercegovina
0
82425
3650886
2521060
2026-04-18T13:54:03Z
HerVal7752
105842
Geoboks
3650886
wikitext
text/x-wiki
{{geoboks|region
|kart = Old Herzegovina.png
}}
'''Gamle Hercegovina''' eller '''Aust-Hercegovina''' er ein historisk region i [[Montenegro]]. Den største byen i regionen er [[Nikšić]] og den neststørste er [[Herceg Novi]].
== Sjå òg ==
* [[Hercegovina]]
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Old Herzegovina|Old Herzegovina]]» frå {{Wikipedia-utgåve|en}}, den 6. februar 2008.''
{{refslutt}}
{{geografispire}}
{{autoritetsdata}}
[[Kategori:Montenegrinsk geografi]]
j12hq9zrxgp1jnz7ieed5kuibz2uhh2
Sandžak
0
82429
3650889
3425365
2026-04-18T14:07:49Z
HerVal7752
105842
Geoboks
3650889
wikitext
text/x-wiki
{{geoboks|region
|kart = Sandzak01.png
|karttekst = Kart over Sandžak.
}}
'''Sandžak'''{{mrk|[[serbisk]] ''Sandžak'' eller ''Raška'', [[bosnisk]] ''Sandžak'', [[albansk]] ''Sanxhak'' eller ''Sanxhaku'', [[tyrkisk]] ''Sancak''}} er ein region sentralt på [[Balkan]]. Området er politisk delt mellom [[Serbia]] og [[Montenegro]]. Det har fått namnet sitt etter [[Novi Pazar sanjak]], eit tidlegare [[Det osmanske riket|osmansk]] administrativt distrikt som eksisterte fram til [[balkankrigane]] i 1912.
Regionen strekkjer seg frå grensa til [[Bosnia-Hercegovina]] til [[Kosovo]] og dekkjer eit areal på 8 403 km². I Serbia består Sandžak av dei seks kommunane [[Novi Pazar]], [[Sjenica]], [[Tutin]], [[Prijepolje]], [[Nova Varoš]] og [[Priboj]] og i Montenegro av dei fem kommunane [[Pljevlja]], [[Bijelo Polje]], [[Berane]], [[Rožaje]] og [[Plav]].
Den største byen i regionen er Novi Pazar (55 000) og av andre store byar finn ein Pljevlja (23 800) og Priboj (19 600). Mange muslimar bur i området (om lag 45 % er [[bosnjakar]] og om lag 27 % er [[muslimar]] av annan nasjonalitet).
== Galleri ==
<gallery>
Fil:Novi Pazar02.JPG|[[Novi Pazar]]
Fil:BedemNP.jpg|Ein mur bygd av osmanarane i [[Novi Pazar]]
Fil:Nova Varos 30's.jpg|[[Nova Varoš]] i 1930-åra
Fil:Nova Varos Center 2004.JPG|Sentrum av [[Nova Varoš]] i 2004
Fil:Manastir pv.JPG|Klosteret Den heilage treeininga i [[Pljevlja]]
Fil:Pljevlja_Mosque_1.JPG|Husein-pasa-moskeen i [[Pljevlja]]
Fil:Đurđevi stupovi, November 2005.jpg|[[Đurđevi Stupovi]] kloster nær [[Novi Pazar]]
Fil:Mileševa monastery (by Pudelek) 2.JPG|[[Mileševa kloster]] nær [[Prijepolje]]
</gallery>
==Merknader==
{{merknadar}}
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Sandžak|Sandžak]]» frå {{Wikipedia-utgåve|en}}, den 7. februar 2008.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{autoritetsdata}}
[[Kategori:Montenegrinsk geografi]]
[[Kategori:Serbisk geografi]]
[[Kategori:Delte område]]
brvxvovvd4o26tnxap8ryazhhvlohjv
Kotorbukta
0
82447
3650887
3584140
2026-04-18T14:02:56Z
HerVal7752
105842
Infoboks
3650887
wikitext
text/x-wiki
{{Infoboks verdsarv
|tittel = Kotorbukta
|bilete = Boka3.JPG
|bilettekst = Utsyn mot Kotorbukta.
|land = Montenegro
|år = 1979
|sone = Europa
|kriterium = i, ii, iii, iv
|nr = 125
}}
[[Fil:Herceg Novi map.png|mini|Kart over Kotorbukta]]
[[Fil:Cathedral Kotor.JPG|mini|Domkyrkja St. Tripun i [[Kotor]]]]
[[Fil:Islands Perast.JPG|mini|Dei to øyane utanfor [[Perast]]]]
'''Kotorbukta'''{{mrk|[[serbisk]] Бока которска, ''Boka kotorska''; [[kroatisk]] ''Boka Kotorska''; [[italiensk]] ''Bocche di Cattaro''}} er ei bukt sørvest i [[Montenegro]] i [[Adriahavet]]. Bukta vert stundom kalla den sørlegaste [[fjord]]en i Europa, men er i røynda ei oversvømd kløft danna av elva Bokelj som brukte å renne ned frå dei høge platåa på fjellet [[Orjen]]. Bukta er ein viktig turistdestinasjon i Montenegro.
Bukta har vore busett sidan antikken og nokre godt bevarte mellomalderbyar ligg ved kysten. Dei vakre byane [[Kotor]], [[Risan]], [[Tivat]], [[Perast]] og [[Herceg Novi]], i lag med den vakre naturen kring dei, er alle store turistattraksjonar.
Den religiøse arva som finst rundt bukta, dei mange [[den ortodokse kyrkja|ortdokse]] og [[den romersk-katolske kyrkja|romersk-katolske]] kyrkjene og klostra, har gjort området til ein stor [[pilegrim]]sstad i regionen.
Montenegro har planar om å byggje ei bru over Kotorbukta, den såkalla [[Verige-brua]].
== Historie ==
Den nærliggjande grenda [[Risan]] (''Risano'') var ein blømande [[illyria|illyrisk]] by kalla ''Rhizon'' så tidleg som [[-229|229 fvt.]] og gav det dåverande namnet til bukta, ''Rhizonicus Sinus''. Rhizon vart underlagd [[Den romerske republikken]] i [[-168|168 fvt.]] samstundes med Acrivium, eller Acruvium, som i dag er [[Kotor]] (''Cattaro'').
Kotor sjølv vart forskansa tidleg i [[mellomalderen]] og var ein av dei viktigare byane i [[Dalmatia]] i denne perioden. Han gjekk seinare til [[Bulgaria]] og så til [[Serbia]] før han vart ein delvis sjølvstendig republikk verna av dei [[serbiske kongar|serbiske kongane]]. Handelsflåten auka gradvis og etter Serbia vart erobra av [[Det osmanske riket]] seint på 1300-talet, tok [[Den venetianske republikken]] bukta.
Bokeljane hadde ein sterk flåte med så mange som 300 skip på 1700-talet, og bukta var ein stor rival til [[Dubrovnik]] og [[Venezia]].
På byrjinga av 1800-talet vart regionen rundt Kotorbukta ein del av [[Dei illyriske provinsane]], ein del av [[Det franske keisardømet]]. Regionen vart seinare erobra av [[Montenegro]] med russisk hjelp frå biskopen av [[Cetinje]] [[Petar I Petrović Njegoš]] og i 1813 vart det oppretta ein [[union]] mellom området rundt bukta og Montenegro.
I 1815 vart bukta annektert av [[Det austerrikske keisardømet]] ([[Austerrike-Ungarn]] etter 1867) og ein del av provinsen [[Dalmatia]] (del av [[Cisleithania]] etter 1867). I 1848 gav den montenegrinske fyrstbiskopen [[Petar II Petrović-Njegoš]] innbyggjarane råd om å kjempe i [[revolusjonane i 1848]] for [[Josip Jelačić]] i eit å forsøk på å samle Dalmatia, Kroatia og [[Slavonia]] under [[Habsburg]], men folkeforsamlinga i Kotor nekta.
[[Kongedømet Montenegro]] prøvde å ta bukta under [[den første verdskrigen]] og vart bombardert frå [[Lovćen]], men i 1916 vart Montenegro slått av Austerrike-Ungarn. Den 7. november 1918 kom den serbiske hæren til bukta og vart teke imot av innbyggjarane der som frigjerarar. Han vart ein del av den sjølverklærte [[Staten av slovenarar, kroatar og serbarar]] og kom så i union med [[Kongedømet Serbia]]. I løpet av ein månad var [[Kongedømet av serbarar, kroatar og slovenarar]] oppretta, og i 1939 vart det omdøypt Jugoslavia. Bukta var ein kommune i [[Dalmatia]] fram til 1922 og så innlemma i Zeta-området, som frå 1939 vart heitande Zeta banate.
Kotorbukta vart okkupert av Fascist-Italia i 1941, og etter 1945 var det ein del av Republikken [[Montenegro]] i Jugoslavia. I dag er dei fleste innbyggjarane ortodokse kristne og ser på seg sjølv som anten serbarar eller montenegrinar, medan om lag 11 % av innbyggjarane er katolske, hovudsakleg kroatar.
Kotorbukta er ein del av [[UNESCO]] sin [[verdsarv]]. I 1979 vart området råka av eit jordskjelv som øydela mange kulturmonument.
==Merknader==
{{merknadar}}
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Bay of Kotor|Bay of Kotor]]» frå {{Wikipedia-utgåve|en}}, den 7. februar 2008.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*[https://whc.unesco.org/en/list/125 Kotorbukta] i unesco.org
{{autoritetsdata}}
[[Kategori:Montenegrinsk geografi]]
[[Kategori:Bukter i Middelhavet]]
8play6gi2fn5bhw0weu3f5rp78gderk
Zetasletta
0
82461
3650891
3567919
2026-04-18T14:14:19Z
HerVal7752
105842
Geoboks
3650891
wikitext
text/x-wiki
{{geoboks|slette
|andre namn = Zetska ravnica{{*}} Зетска равница
|zoom = 8
}}
'''Zetasletta''' ([[montenegrinsk]] ''Zetska ravnica'' / Зетска равница) er eit frodig lågland i [[Montenegro]]. Det strekkjer seg frå [[Podgorica]] i nord til [[Shkodërsjøen]] i sør og er den største sletta i landet. Den gjennomsnittlege høgda er 40 meter over havet.
Namnet Zeta kjem frå ei tidleg rot som tyder «innhausting». Det kan virke noko forvirrande at elva [[Elva Zeta|Zeta]] ikkje renn over Zetasletta, men over ei anna viktig sletta i Montenegro, [[Bjelopavlićisletta]].
Sidan det er få sletter og dyrkbare område i Montenegro er Zetsletta eit av dei tettast folkesette områda i Montenegro. Det store vinområdet [[Plantaže]] ligg på Zetasletta. Det vert òg dyrka ein del middelhavsfrukt og grønsaker her.
[[Podgorica lufthamn]] ligg på Zetasletta og det same gjer eit aluminiumsverk som vert rekna som den verste forureiningskjelda på sletta.
[[Golubovci]] er den største busetnaden på Zetasletta som er senter i kommunen Golubovci som utgjer store delar av sletta.
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Zeta Plain|Zeta Plain]]» frå {{Wikipedia-utgåve|en}}, den 7. februar 2008.''
{{refslutt}}
{{Autoritetsdata}}
[[Kategori:Montenegrinsk geografi]]
[[Kategori:Sletter i Europa]]
k8rum7qdj93f1iuqp3vt5o5904oiyko
3650899
3650891
2026-04-19T07:09:09Z
Ranveig
39
Flikk
3650899
wikitext
text/x-wiki
{{geoboks|slette
|bilete=Selo Mataguži,kod Podgorice,Crna Gora.jpg
|andre namn = Zetska ravnica{{*}} Зетска равница
|zoom = 8
}}
'''Zetasletta''' ([[montenegrinsk]] ''Zetska ravnica''/Зетска равница) er eit frodig lågland i [[Montenegro]]. Det strekkjer seg frå [[Podgorica]] i nord til [[Shkodërsjøen]] i sør og utgjer den største sletta i landet. Den gjennomsnittlege høgda er 40 meter over havet.
Namnet «Zeta» kjem frå ei tidleg rot som tyder ‘innhausting’. Det kan virke noko forvirrande at elva [[Elva Zeta|Zeta]] ikkje renn over Zetasletta, men over ei anna viktig sletta i Montenegro, [[Bjelopavlićisletta]].
Sidan det er få sletter og dyrkbare område i Montenegro er Zetasletta eit av dei tettast folkesette områda i Montenegro. Det store vinområdet [[Plantaže]] ligg på Zetasletta. Det vert òg dyrka ein del middelhavsfrukt og grønsaker her.
[[Podgorica lufthamn]] ligg på Zetasletta og det same gjer eit aluminiumsverk som vert rekna som den verste forureiningskjelda på sletta.
[[Golubovci]] er den største busetnaden på Zetasletta. Han er senter i kommunen Golubovci, som utgjer store delar av sletta.
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Zeta Plain|Zeta Plain]]» frå {{Wikipedia-utgåve|en}}, den 7. februar 2008.''
{{refslutt}}
{{Autoritetsdata}}
[[Kategori:Montenegrinsk geografi]]
[[Kategori:Sletter i Europa]]
1qenvlrk3nkdw0hlmjt9exeb9bnocbl
Tarakløfta
0
82462
3650890
3580148
2026-04-18T14:11:17Z
HerVal7752
105842
Geoboks
3650890
wikitext
text/x-wiki
{{geoboks|kløft
|andre namn = Kanjon Tare
|land = Montenegro
|land1 = Bosnia-Hercegovina
|zoom = 8
}}
'''Tarakløfta''' ([[serbisk]] ''Kanjon Tare'') er den lengste kløfta eller ravinen i [[Montenegro]] og heile [[Europa]] og den nest lengste i verda etter [[Gran Canyon]] i [[Arizona]]. Ho er 82 km lang og 1 300 meter på det djupaste. Kløfta er innskriven på [[UNESCO]] si [[verdsarv]]liste og er ein del av [[Durmitor|Durmitor nasjonalpark]]. Elva [[Tara i Montenegro|Tara]] renn gjennom kløfta.
Det er steinete terrassar, sandstrender, høge klipper og meir enn 80 store grotter langs kløfta.
[[Fil:Tara River Canyon.jpg|mini|venstre|Tarakløfta]]
Det er populært å [[rafting|rafte]] nedover Tara gjennom Tarakløfta, hovudsakleg frå Brstnovica til Sćepan Polje, ei 18 km lang rute som tar 2-3 timar. Dette er òg den brattaste delen av elva og 21 av 50 stryk i elva ligg langs dette stykket.
Bosniske og montenegrinske styresmakter hadde planar om å byggje ei demning i elva [[Drina]], som Tara munnar ut i, og slik fylle kløfta med vatn. Desse planane vart derimot skrinlagd i april 2005 etter massive protestar. I september 2006 vart det derimot signert ein avtale mellom det slovenske selskapet Petrol og det montenegrinske selskapet Montenegro-bonus om å byggje eit vasskraftverk som vil øydeleggje kløfta.
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Tara River Canyon|Tara River Canyon]]» frå {{Wikipedia-utgåve|en}}, den 7. februar 2008.''
{{refslutt}}
{{autoritetsdata}}
[[Kategori:Montenegrinsk geografi]]
[[Kategori:Verdsarv i Montenegro]]
qcomgkhiuhq6iv2z4efbc9nhhijhrw3
Grand Canyon
0
82716
3650892
2812766
2026-04-18T14:18:07Z
HerVal7752
105842
Geoboks
3650892
wikitext
text/x-wiki
{{geoboks|kløft}}
'''Grand Canyon''' er ei enorm [[kløft]] i det nordlege av [[Arizona]] i [[USA]]. Grand Canyon er omtrent 446 kilometer lang og har ei breidd som varierer mellom 0,5 til 29 kilometer og ei djupn på over 1600 meter. Djupna gjer at ein kan sjå to milliardar år av geologisk historie i dei [[sediment]]ære laga. Grand Canyon har blitt skapt som eit resultat av erosjon frå [[Coloradoelva]] over fleire millionar år. Den første europearen som oppdaga Grand Canyon var [[García López de Cárdenas]] i 1540. Då hadde det allereie budd indinarar i området i over 3000 år.
Grand Canyon var stortsett uutforska før [[den amerikanske borgarkrigen]]. I 1869 drog [[John Wesley Powell|major John Wesley Powell]] ut på den første ferda gjennom kløftsystemet. Han gjennomførte reisa med ni menn i fire små trebåtar; men berre seks av mennene gjennomførte ho. Powell refererte til dei sedimentære laga i kløfta som "sider i ei stor historiebok".
==Galleri==
<gallery mode=packed>
USA_09847_Grand_Canyon_Luca_Galuzzi_2007.jpg|Utsyn frå det sørlege av Grand Canyon. {{foto|Luca Galuzzi}}
Canyon_midday.jpg|Grand Canyon sett frå elvenivå.
</gallery>
==Bakgrunnsstoff==
{{commonskat}}
*[https://www.nps.gov/grca/index.htm Heimesida] til Grand Canyon nasjonalpark.
{{Autoritetsdata}}
[[Kategori:Verdsarv i USA]]
[[Kategori:Kløfter i Arizona]]
[[Kategori:Coloradoplatået]]
j1jxjsgdtvvi55tnovceto9bld60lci
3650926
3650892
2026-04-19T10:59:29Z
HerVal7752
105842
Indinarar -> indianarar
3650926
wikitext
text/x-wiki
{{geoboks|kløft}}
'''Grand Canyon''' er ei enorm [[kløft]] i det nordlege av [[Arizona]] i [[USA]]. Grand Canyon er omtrent 446 kilometer lang og har ei breidd som varierer mellom 0,5 til 29 kilometer og ei djupn på over 1600 meter. Djupna gjer at ein kan sjå to milliardar år av geologisk historie i dei [[sediment]]ære laga. Grand Canyon har blitt skapt som eit resultat av erosjon frå [[Coloradoelva]] over fleire millionar år. Den første europearen som oppdaga Grand Canyon var [[García López de Cárdenas]] i 1540. Då hadde det allereie budd indianarar i området i over 3000 år.
Grand Canyon var stortsett uutforska før [[den amerikanske borgarkrigen]]. I 1869 drog [[John Wesley Powell|major John Wesley Powell]] ut på den første ferda gjennom kløftsystemet. Han gjennomførte reisa med ni menn i fire små trebåtar; men berre seks av mennene gjennomførte ho. Powell refererte til dei sedimentære laga i kløfta som "sider i ei stor historiebok".
==Galleri==
<gallery mode=packed>
USA_09847_Grand_Canyon_Luca_Galuzzi_2007.jpg|Utsyn frå det sørlege av Grand Canyon. {{foto|Luca Galuzzi}}
Canyon_midday.jpg|Grand Canyon sett frå elvenivå.
</gallery>
==Bakgrunnsstoff==
{{commonskat}}
*[https://www.nps.gov/grca/index.htm Heimesida] til Grand Canyon nasjonalpark.
{{Autoritetsdata}}
[[Kategori:Verdsarv i USA]]
[[Kategori:Kløfter i Arizona]]
[[Kategori:Coloradoplatået]]
dix2zeduh3gukv0o0bz3msh8i8th6dk
Låge Tatra
0
127622
3650872
3420312
2026-04-18T12:23:12Z
Ranveig
39
Geoboks
3650872
wikitext
text/x-wiki
{{geoboks|fjellkjede}}
[[Fil:Nízke Tatry.png|mini|Plasseringa til Låge Tatra i Slovakia (i grått)]]
[[Fil:low tatra dumbier.jpg|mini|Ďumbier (høgre) og Chopok (midten)]]
'''Låge Tatra''' ([[slovakisk]] ''Nízke Tatry''; [[ungarsk]] ''Alacsony Tátra''<ref>{{cite encyclopedia|title=Střední Slovensko ("Central Slovakia")|encyclopedia=[[Encyclopedia Britannica]]|url=http://www.britannica.com/EBchecked/topic/568700/Stredni-Slovensko|quote="The population of the kraj is mostly Slovak, with a small Hungarian minority"|year=2008|accessdate=25. mars 2009}}</ref><ref>[http://www.talmamedia.com/map/hhcounty/hhcounty.htm Fylke i det ungarske kongedømet (1913)]</ref><ref>Cartographia Világatlasz, Bp., 1998, s. 24</ref>) er ei fjellkjede sentralt i [[Slovakia]]. Ho ligg sør for [[Høge Tatra]] og mellom dei renn elva [[Váh]]. Dalen danna av elva [[Hron]] ligg sør for Låge Tatra. Ryggen går frå vest til aust og er om lag 80 km lang.
[[Čertovica]]passet deler fjellkjeda i to delar. Den høgaste delen av Låge Tatra ligg i vest. [[Ďumbier]] er det høgaste fjellet på 2042 meter over havet. Nabotoppen [[Chopok]] (2024 moh.) er tilgjengeleg med stolheis og er den mest vitja staden i Låge Tatra. Andre toppar i den vestlege delen er [[Dereše]] (2004 moh.) og [[Chabenec]] (1955 moh.). Den høgaste toppen i den austlege delen er [[Kráľova hoľa]] (1946 moh.). Dei beste utsiktspunkta i vest er Veľká Chochuľa, Salatín, Chabenec, Skalka, Chopok, Ďumbier, Siná, Poludnica og Baba.
Fleire [[karst]]område finst i [[kalkstein]]- og [[dolomitt]]formasjonar i dei sørlege og nordlege endane av hovudryggen, som består av [[granitt]] og [[gneis]]. Her finst fleire grotter som er opne for ålmenta. Den største kløfta i fjellet er Hučiaky under Salatín i Ludrovádalen nær Ružomberok. Den høgaste fossen er under Brankov nær Ružomberok - Podsuchá - med eit fall på 55 meter.
Fjella er kledde med tett skog og har eit rikt dyreliv som inkluderer [[brunbjørn]], [[ulv]] og [[gaupe]]. På dei alpinene beitemarkene finn ein [[tatragemse]].
== Nasjonalpark ==
Det meste av Låge Tatra er verna som ein del av [[Låge Tatra nasjonalpark]] (''Národný park Nízke Tatry''; forkorta NAPANT), som vart oppretta i 1978. Nasjonalparken dekkjer 728 km² og har ein buffersone på 1102 km² (425.48 mi²), i alt 1830 km².
== Turisme ==
Turisme er ei stor næring i Tatrafjella. Om vinteren er fleire skistader i Låge Tatra opne, som [[Jasná]], [[Mýto pod Ďumbierom]] og [[Tále]]. Jasna er det største skisenteret i Mellom-Europa og vert tent av turstibyen Liptovsky Mikulas. Liptovsky Mikulas er òg eit turistsenter om sommaren og tilbyr aktivitetar som rafting, kajakkpadling, roing, og fiske. Den bratte nordsida av fjellkjeda er populær hos fjellklatrarar.
[[Fil:Nizke Tatry z Rohacov.jpg|mini|815px|none|Låge Tatra om vinteren]]
[[Fil:demanovska dolina.jpg|mini|815px|none|Demänovská dolina-dalen]]
== Kjelder ==
<div class="references-small">
* ''Denne artikkelen bygger på «[[:en:Low Tatras|Low Tatras]]» frå {{Wikipedia-utgåve|en}}, den 25. mars 2009.''
**''{{Wikipedia-utgåve|en}} oppgav desse kjeldene:''
</div>
{{fotnoteliste}}
== Bakgrunnsstoff ==
{{commonskat}}
* http://www.nizketatry.com/en.html www.nizketatry.com/en.html
* [http://www.nizketatry.info Informasjon om Låge Tatra]
* [http://www.slovakia.travel/entitaview.aspx?l=2&sfv=False&llt=1&st=national%20park%20nizke%20tatry&smi=108032&ami=108032&idp=3998 Låge Tatra nasjonalpark på Slovakia.Travel]
* [http://horal.profitux.cz/univ_mapy/mapy.php?map=maps/tur_map_slov/123_Nizke_tatry_kralova_hola Kart over den austlege delen av Låge Tatra] {{Webarchive|url=https://web.archive.org/web/20181014045725/http://horal.profitux.cz/univ_mapy/mapy.php?map=maps%2Ftur_map_slov%2F123_Nizke_tatry_kralova_hola |date=2018-10-14 }}
{{Autoritetsdata}}
[[Kategori:Fjellkjeder i Slovakia]]
[[Kategori:Fjellkjeder i Karpatane]]
mgzif13fwgc7mx7ywtmgaqq5tx9y8h9
3650873
3650872
2026-04-18T12:23:30Z
Ranveig
39
3650873
wikitext
text/x-wiki
{{geoboks|fjellkjede}}
[[Fil:Nízke Tatry.png|mini|Plasseringa til Låge Tatra i Slovakia (i grått)]]
[[Fil:low tatra dumbier.jpg|mini|Ďumbier (høgre) og Chopok (midten)]]
'''Låge Tatra''' ([[slovakisk]] ''Nízke Tatry''; [[ungarsk]] ''Alacsony Tátra''<ref>{{cite encyclopedia|title=Střední Slovensko ("Central Slovakia")|encyclopedia=[[Encyclopedia Britannica]]|url=http://www.britannica.com/EBchecked/topic/568700/Stredni-Slovensko|quote="The population of the kraj is mostly Slovak, with a small Hungarian minority"|year=2008|accessdate=25. mars 2009}}</ref><ref>[http://www.talmamedia.com/map/hhcounty/hhcounty.htm Fylke i det ungarske kongedømet (1913)]</ref><ref>Cartographia Világatlasz, Bp., 1998, s. 24</ref>) er ei fjellkjede sentralt i [[Slovakia]]. Ho ligg sør for [[Høge Tatra]] og mellom dei renn elva [[Váh]]. Dalen danna av elva [[Hron]] ligg sør for Låge Tatra. Ryggen går frå vest til aust og er om lag 80 km lang.
[[Čertovica]]passet deler fjellkjeda i to delar. Den høgaste delen av Låge Tatra ligg i vest. [[Ďumbier]] er det høgaste fjellet på 2042 meter over havet. Nabotoppen [[Chopok]] (2024 moh.) er tilgjengeleg med stolheis og er den mest vitja staden i Låge Tatra. Andre toppar i den vestlege delen er [[Dereše]] (2004 moh.) og [[Chabenec]] (1955 moh.). Den høgaste toppen i den austlege delen er [[Kráľova hoľa]] (1946 moh.). Dei beste utsiktspunkta i vest er Veľká Chochuľa, Salatín, Chabenec, Skalka, Chopok, Ďumbier, Siná, Poludnica og Baba.
Fleire [[karst]]område finst i [[kalkstein]]- og [[dolomitt]]formasjonar i dei sørlege og nordlege endane av hovudryggen, som består av [[granitt]] og [[gneis]]. Her finst fleire grotter som er opne for ålmenta. Den største kløfta i fjellet er Hučiaky under Salatín i Ludrovádalen nær Ružomberok. Den høgaste fossen er under Brankov nær Ružomberok - Podsuchá - med eit fall på 55 meter.
Fjella er kledde med tett skog og har eit rikt dyreliv som inkluderer [[brunbjørn]], [[ulv]] og [[gaupe]]. På dei alpine beitemarkene finn ein [[tatragemse]].
== Nasjonalpark ==
Det meste av Låge Tatra er verna som ein del av [[Låge Tatra nasjonalpark]] (''Národný park Nízke Tatry''; forkorta NAPANT), som vart oppretta i 1978. Nasjonalparken dekkjer 728 km² og har ein buffersone på 1102 km² (425.48 mi²), i alt 1830 km².
== Turisme ==
Turisme er ei stor næring i Tatrafjella. Om vinteren er fleire skistader i Låge Tatra opne, som [[Jasná]], [[Mýto pod Ďumbierom]] og [[Tále]]. Jasna er det største skisenteret i Mellom-Europa og vert tent av turstibyen Liptovsky Mikulas. Liptovsky Mikulas er òg eit turistsenter om sommaren og tilbyr aktivitetar som rafting, kajakkpadling, roing, og fiske. Den bratte nordsida av fjellkjeda er populær hos fjellklatrarar.
[[Fil:Nizke Tatry z Rohacov.jpg|mini|815px|none|Låge Tatra om vinteren]]
[[Fil:demanovska dolina.jpg|mini|815px|none|Demänovská dolina-dalen]]
== Kjelder ==
<div class="references-small">
* ''Denne artikkelen bygger på «[[:en:Low Tatras|Low Tatras]]» frå {{Wikipedia-utgåve|en}}, den 25. mars 2009.''
**''{{Wikipedia-utgåve|en}} oppgav desse kjeldene:''
</div>
{{fotnoteliste}}
== Bakgrunnsstoff ==
{{commonskat}}
* http://www.nizketatry.com/en.html www.nizketatry.com/en.html
* [http://www.nizketatry.info Informasjon om Låge Tatra]
* [http://www.slovakia.travel/entitaview.aspx?l=2&sfv=False&llt=1&st=national%20park%20nizke%20tatry&smi=108032&ami=108032&idp=3998 Låge Tatra nasjonalpark på Slovakia.Travel]
* [http://horal.profitux.cz/univ_mapy/mapy.php?map=maps/tur_map_slov/123_Nizke_tatry_kralova_hola Kart over den austlege delen av Låge Tatra] {{Webarchive|url=https://web.archive.org/web/20181014045725/http://horal.profitux.cz/univ_mapy/mapy.php?map=maps%2Ftur_map_slov%2F123_Nizke_tatry_kralova_hola |date=2018-10-14 }}
{{Autoritetsdata}}
[[Kategori:Fjellkjeder i Slovakia]]
[[Kategori:Fjellkjeder i Karpatane]]
ipggk3mk3ywxcjre6ihexo4c6gy171u
Sweet Neo Con
0
127974
3650881
3031079
2026-04-18T12:58:21Z
Ranveig
39
3650881
wikitext
text/x-wiki
«'''Sweet Neo Con'''» er ein song av [[The Rolling Stones]] frå albumet ''[[A Bigger Bang]]'' frå [[2005]].
Songen kom i fokus i media på grunn av tekstlinjer som:
{{quote|''You call yourself a Christian; I think that you're a hypocrite; You say you are a patriot; I think that you're a crock of shit''}}
Vokalist [[Mick Jagger]] nekta først for at songteksten var retta mot [[George W. Bush]], president i [[USA]] på den tida. I september 2005 vart Jagger intervjua av musikkmagasinet ''[[Rolling Stone]]'', der han forklarte at han ikkje likte å snakke om andre land sine presidentval, men at det no etter valet var mogeleg for han å stadfeste kven songen var retta mot.
Songen er hovudsakleg skriven av Jagger med Jagger på vokal, munnspel, bass og gitar i lag med Richards på gitar og [[Charlie Watts]] på trommer.
==Kjelder==
<div class="references-small">
*''Denne artikkelen bygger på «[[:en:Sweet Neo Con (song)|Sweet Neo Con (song)]]» frå {{Wikipedia-utgåve|en}}, den 30. mars 2009.''
</div>
{{autoritetsdata}}
[[Kategori:Rolling Stones-songar]]
[[Kategori:Songar frå 2005]]
[[Kategori:Songar skrivne av Jagger/Richards]]
[[Kategori:Songar produserte av Don Was]]
cvz9r9il0n8e4nc533j2auj69v1c9nf
Mal:Geoboks2 farge
10
130305
3650893
3642256
2026-04-18T14:19:34Z
HerVal7752
105842
+kløft
3650893
wikitext
text/x-wiki
<includeonly>{{#switch:{{lc:{{{1}}}}}
|brun
|canyon
|dal
|fjell
|fjellkjede
|fjelltopp
|fjellovergang
|grotte
|gjel
|geologi
|halvøy
|nes
|nunatak
|platå
|slette
|vulkan
|øy
|øygruppe
|ås
|krater
|kløft
|fjellkjede=<nowiki>#</nowiki>dacaa5
|elv
|sund
|innsjø
|foss
|hav
|havstraum
|havområde
|reservoar
|vatn= <nowiki>#</nowiki>ABCDEF
|vasskjelde
|varmekjelde
|vik
|bukt
|sund
|fjord=<nowiki>#</nowiki>b3cce4
|bre = <nowiki>#</nowiki>ABCDEF
|isbrem = <nowiki>#</nowiki>ABCDEF
|isstraum = <nowiki>#</nowiki>ABCDEF
|iskalott= <nowiki>#</nowiki>ABCDEF
|innlandsis= <nowiki>#</nowiki>ABCDEF
|is= <nowiki>#</nowiki>ABCDEF
|snøfelt
|isfall
|isbre = <nowiki>#</nowiki>ABCDEF
|nasjonalpark
|strand
|natur
|park
|verneområde
|skog
|reservat
|verdsarv
|verdsarvstad=<nowiki>#</nowiki>cde5b2
|delstat
|forbundsland
|hovudstad
|oblast
|county
|fylke
|kanton
|by=<nowiki>#</nowiki>dfdfdf
|busetnad=<nowiki>#</nowiki>dfdfdf
|kommune
|stor landsby
|tettstad
|landsby=<nowiki>#</nowiki>dfdfdf
|bjølle
|bru
|bydel = <nowiki>#</nowiki>dfdfdf
|bygning
|demning
|monument
|bilbane=<nowiki>#</nowiki>ffffcc
|oversjøisk territorium
|landskap
|distrikt
|provins
|guvernement
|region=<nowiki>#</nowiki>ffe5cc
|ørken = <nowiki>#</nowiki>f4a460
|<nowiki>#</nowiki>ffffcc
}}</includeonly><noinclude>
[[Kategori:Geoboks|Farge]]</noinclude>
ot9xnlreemfwru9h0bujvdt3fh7s208
Sørlia i Bergen
0
138641
3650875
3427755
2026-04-18T12:30:54Z
Ranveig
39
Geoboks
3650875
wikitext
text/x-wiki
{{infoboks veg|bilete=Sørlia, Bergen.jpg}}
'''Sørlia''' er ein veg på [[Øvsttun]] i [[Fana]] bydel i [[Bergen kommune]]. Han svingar seg nordover frå [[Solåsen i Bergen|Solåsen]] til [[Elvenesvegen]]. Vegen er om lag 800 meter lang.
Namnet vart vedteke i 1960.
== Knutepunkt ==
* [[Fylkesveg 184 i Hordaland|Fv184]] [[Elvenesvegen]]
* Sideveg mot aust (100 m)
* Sideveg mot sør (120 m)
* Sideveg mot sørvest (90 m)
* Sideveg mot søraust (70 m)
* Sideveg mot nordvest (60 m)
* [[Solåsen i Bergen|Solåsen]]
== Kjelder ==
* {{kjelde bok|tittel=Bergen Byleksikon|forfattar=Gunnar Hagen Hartvedt|forlag=Kunnskapsforlaget|utgåve=4|dato=2003|isbn=82-573-1036-0|stad=Oslo}}
* [http://svvgw.vegvesen.no/http://svvnvdbappp.vegvesen.no:7778/webinnsyn/anon/index Nasjonal vegdatabank] {{Webarchive|url=https://web.archive.org/web/20101111065346/http://svvgw.vegvesen.no/http://svvnvdbappp.vegvesen.no:7778/webinnsyn/anon/index |date=2010-11-11 }}
{{autoritetsdata}}
[[Kategori:Vegar i Fana]]
h4o58a2l812qvp9fcaqphfq8e0grr18
Costa del Azahar
0
138809
3650876
3649468
2026-04-18T12:32:12Z
Ranveig
39
Geoboks
3650876
wikitext
text/x-wiki
{{geoboks|region|kategori=Kystområde}}
[[Fil:Costa del Azahar (Alcossebre, Castellón).jpg|mini|Costa del Azahar (Alcossebre).]]
'''Costa del Azahar''' ([[spansk]] for «Appelsinblomstkysten») eller '''Costa dels Tarongers''' ([[katalansk]] for «Appelsintrekysten») er namnet på kysten av provinsane [[provinsen Castellón|Castellón]] og [[provinsen Valencia|Valencia]] i [[Spania]], frå [[Alcanar]] til [[El Verger]] i [[Denia]].
Kjende byar langs Costa del Azahar er [[Peñíscola]], [[Benicàssim]], [[Castellón de la Plana]], [[Saguntum|Sagunt]], [[Valencia i Spania)|Valencia]], [[Cullera]], [[Gandia]], [[Denia]] og [[Xàbia]].
== Kjelder ==
{{refopning}}
* ''Denne artikkelen bygger på «[[:en:Costa del Azahar|Costa del Azahar]]» frå {{Wikipedia-utgåve|en}}, den 20. september 2009.''
{{refslutt}}
{{Costa}}
{{autoritetsdata}}
[[Kategori:Kystar i Spania|Azahar]]
frvl0gz2lqkk5si4dumobl102crkvlw
Zhanjiang
0
188432
3650884
3650844
2026-04-18T13:51:01Z
HerVal7752
105842
Karrtekst -> karttekst
3650884
wikitext
text/x-wiki
{{geoboks|region|kategori=byprefektur
|kart=ChinaGuangdongZhanjiang.png|karttekst=Plasseringa av Zhanjiang i Guangdong.
}}
'''Zhanjiang''' ({{zh|s=湛江|p=Zhànjiāng}}) er eit [[byprefektur]] heilt i sørvest i provinsen [[Guangdong]] ved [[Folkerepublikken Kina|Kina]]s kyst mot [[Sørkinahavet]]. Prefekturet har eit areal 12 490 km2 og eit folketal på 6 902 400 (2008). Sjølve byen Zhanjiang hadde 568 000 innbyggjarar i 2004. Byprefekturet Zhanjiang består av fire distrikt, tre byfylke og to fylke.
==Samferdsle==
Riksveg 207 i Kina går gjennom området. Han byrjar i [[Xilinhot]] i [[Indre Mongolia]] nær grensa til [[Mongolia]], går sørover og endar i Hai'an, ein by i Xuwen fylke sør på Leizhouhalvøya lengst sørvest i provinsen Guangdong. Også Kinas riksveg 325 (Guangnanvegen) går gjennom området. Han fører vestover frå [[Guangzhou]] i Guangdong til [[Nanning]] i den autonome region [[Guangxi]].
==Historie==
Zhanjiang var til 1898 ein fiskarlandsby. [[Frankrike|Franske]] styrkar erobra byen og grunnla ein handelskoloni. Kinesiske styresmakter vart tvinga til å inngå ein avtale om å bortpakte området, kalla Guangzhouwan, til Frankrike for 99 år. Franskmennene utvikla hamna og kalla henne Fort Bayard. Sidan området rundt hamnebyen var fattig, vart ikkje den økonomiske utviklinga som i Hong Kong eller i Macao. Byen vart tilbakeført til Kina i [[1946]].
Byen opplevde sterk vekst, særleg etter [[Deng Xiaoping]] kom til makt i [[Folkerepublikken Kina]]. Byen har djupvasshamn og ligg lagleg til for transport til rike område langs den sørkinesiske kysten.
==Kjelder==
<references/>
<div class="references-small">
*''Denne artikkelen bygger på «[[:nb:Zhanjiang|Zhanjiang]]» frå {{Wikipedia-utgåve|nb}}, den 3. juli 2011.''
</div>
== Bakgrunnsstoff ==
{{commonskat}}
*{{offisiell nettstad}}
{{Autoritetsdata}}
[[Kategori:Guangdong]]
[[Kategori:Byar i Guangdong]]
bur6xocxqh47unvm48byzbh90yawq02
Winnipegsjøen
0
191092
3650877
3367699
2026-04-18T12:37:19Z
Ranveig
39
Geoboks
3650877
wikitext
text/x-wiki
{{geoboks|innsjø|bilete=Lake winnipeg HDRI.jpg|bilettekst=HDRI-foto av Winnipegsjøen|kart=Lake Winnipeg map.png|karttekst=Kart over Winnipegsjøen og nabosjøen Winnipegosis.}}
'''Lake Winnipeg''' eller '''Winnipegsjøen''' er ein av dei største [[innsjø]]ane i [[Canada]] og ligg sentralt i provinsen [[Manitoba]] litt nord for storbyen [[Winnipeg]]. Lake Winnipeg har eit areal på 24 514 km² og er den femte største innsjøen i landet og den 11. største i verda. Winnipeg-sjøen er svært grunn, i gjennomsnitt berre 12 meter djup. Under og etter [[istida]] inngjekk bekkenet i ein langt større innsjø - [[Lake Agassiz]]. Winnipegsjøen blir brukt som reservoar for kraftproduksjonen til selskapet [[Manitoba Hydro]]. Avrenninga er via [[Nelson-elva|Nelson River]] til [[Hudson Bay]] i nordaust.
Nedbørsområdet til innsjøen er om lag 984 200 km² stort, dvs tre gonger større enn det norske fastlandet. Elvane som forsyner Winnpiegsjøen med vatn omfattar frå vest og mot klokka: '''[[Saskatchewan-elva|Saskatchewan]]''' via [[Cedar Lake]], '''[[Dauphin-elva|Dauphin River]]''' via [[Lake Manitoba]] og [[Lake Winnipegosis]], frå sør: '''[[Red River of the North|Red River]]'''-[[Assiniboine-elva|Assiniboine]], og [[Winnipeg-elva|Winnipeg]]-[[Rainy-elva|Rainy]] frå [[Rainy Lake]] og [[Lake of the Woods]], og endeleg frå aust og nordover: [[Bloodvein-elva|Bloodvein River]], [[Poplar-elva|Poplar River]] og [[Manigotagan-elva|Manigotagan River]].
Før [[jarnbane]]n vart utbygd i 1870-åra var heile vassystemet i nedbørsområdet ei særs viktig ferdselsåre. Winnipegsjøen var via landovergangar (portages) eit knutepunkt for ferdsel på vassvegane mellom [[Lake Superior]], [[Hudson Bay]] og pelshandlerområda i nedbørsområdet. [[Hudson's Bay Company]] hadde fort og handelsstasjonar for pelshandelen på [[1800-talet]].
== Kjelder ==
{{refopning}}
* ''Denne artikkelen bygger på «[[:nb:Winnipegsjøen|Winnipegsjøen]]» frå {{Wikipedia-utgåve|nb}}, den 30. juli 2011.''
{{refslutt}}
{{Autoritetsdata}}
[[Kategori:Innsjøar i Canada]]
6h3pow4xg6s6hrtq0kykud9i3zen5dy
Néa Báfra
0
206674
3650896
3621657
2026-04-18T21:22:15Z
Pedeiaenthusiast
139875
Eg la til eit fotografi
3650896
wikitext
text/x-wiki
{{Infoboks kommune Hellas
|namn =Néa Báfra
|kart =
|kartposisjon =
{{Kartposisjon|Hellas
|tekst = Néa Báfra
|lat_grad = 40
|lat_min = 59
|lat_sek = 21
|lon_grad = 24
|lon_min = 1
|lon_sek = 10
|flyt = center|breidde = 250}}
|lokalt namn = Νέα Μπάφρα
|lokalt namn språk =gresk
|stad =[[Gresk Makedonia|Makedonía]]
|koordinatar={{koord|40|59|21|N|24|1|10|E|vising=pålinje,tittel|type:island}}
|land =[[Hellas]]
|land administrativ inndeling tittel= [[Periferi i Hellas|Periferi]] <br /> [[Periferieining i Hellas|Periferieining]] <br /> [[Kommunar i Hellas|Kommune]]
|land administrativ inndeling = [[Sentral-Makedonía]] <br /> [[Periferieininga Sérres|Sérres]] <br /> [[Amfípoli]]
|folketal =565
|folketal år =2021<ref name=Folketeljing_2021>[https://www.statistics.gr/documents/20181/17286366/MON_PLI_DHM_OIKISN_2021.xlsx Folketeljing 2021]</ref>
|bilete=War memorial in Nea Mpafra, Greece.jpg}}
'''Néa Báfra''' ([[gresk]] Νέα Μπάφρα) er ein landsby i [[Periferieiningar i Hellas|periferieininga]] [[Periferieininga Sérres|Sérres]] i [[Periferiar i Hellas|periferien]] [[Sentral-Makedonía]] i [[Hellas]]. Néa BáfraKormísta inngår frå 2011 som ei [[kommunaleiningar i Hellas|kommunaleining]] i [[kommunar i Hellas|kommunen]] [[Amfípoli]].<ref name="Kallikratis">{{Citation |title=Νόμος 3852/2010 - ΦΕΚ 87Α/7-6-2010<br />Lov 3852/2010: Kallikratis-reforma |url=https://www.e-nomothesia.gr/autodioikese-demoi/n-3852-2010.html |accessdate=2023-09-07 |archive-date=2023-07-30 |archive-url=https://web.archive.org/web/20230730102306/https://www.e-nomothesia.gr/autodioikese-demoi/n-3852-2010.html |url-status=yes }}</ref>
== Referansar ==
{{reflist}}
{{geografispire}}
{{Autoritetsdata}}
[[Kategori:Byar og tettstader i periferieininga Sérres|Nea Bafra]]
bonlwejem0acsufedxjq90za1rn2579
Skalka
0
217049
3650870
3131311
2026-04-18T12:20:29Z
Ranveig
39
Geoboks
3650870
wikitext
text/x-wiki
{{geoboks|innsjø}}
[[Fil:Skalka in Winter.jpg|mini|Skalka (flyfotografi).]]
'''Skalka''' ([[nordsamisk]] ''Skalkajaure'') er ein innsjø i [[Jokkmokk kommun]] i [[Norrbottens län]] i [[Lappland i Sverige|Lappland]] i [[Sverige]]. Vassflata ligg 295 meter over havet, og har eit areal på ca. 46 km². Sjøen vert drenert gjennom [[Lilla Luleälven]].
==Kjelder==
<div class="references-small">
*''Denne artikkelen bygger på «[[:nb:Skalka|Skalka]]» frå {{Wikipedia-utgåve|nb}}, den 15. juni 2012.''
</div>
{{autoritetsdata}}
[[Kategori:Jokkmokks kommun]]
[[Kategori:Innsjøar i Lappland i Sverige]]
[[Kategori:Lule älv-vassdraget]]
kfn3x97j5z9tnracgfdkxp9syxfee21
Köping i Västmanland
0
220044
3650871
2815880
2026-04-18T12:21:53Z
Ranveig
39
Geoboks
3650871
wikitext
text/x-wiki
{{geoboks|by|symbol=Köpings vapen.svg}}
'''Köping''' er ein [[Sverige|svensk]] [[by]] som ligg i [[Västmanlands län]] i [[Västmanland]]. Det er [[Köpings kommun]]s [[administrasjonssenter]] og i 2005 hadde byen 17 358 innbyggjarar.
[[Fil:Suecia 2-038 ; Köping.jpg|mini|venstre|Köping kring 1700.]]
Köping fekk [[bystatus]] 19. januar [[1474]] av [[Sten Sture d.e.]]
==Næringsliv==
[[Hästens]] lager eksklusive [[seng]]er som blir eksporterte til heile verda.
==Kjelder==
<div class="references-small">
*''Denne artikkelen bygger på «[[:nb:Köping|Köping]]» frå {{Wikipedia-utgåve|nb}}, den 3. juli 2012.''
</div>
{{Autoritetsdata}}
{{DEFAULTSORT:Køping}}
[[Kategori:tettstader i Västmanlands län]]
[[Kategori:Köpings kommun]]
[[Kategori:Byar i Sverige]]
92p1brjriqtaleu6mui5k8ch2dsbire
Norsteholmen
0
234707
3650879
2854392
2026-04-18T12:55:20Z
Ranveig
39
3650879
wikitext
text/x-wiki
{{geoboks|øy
| namn = Norsteholmen
| andre namn = Wyatt Earp Islands
| land = Antarktis
| kartlokasjon= Antarktis
| fritype = Administrert under |fri = [[Antarktistraktaten]]
| lat_d = 68 | lat_m = 22 | lat_NS = S
| long_d = 78 | long_m = 32 | long_EW = E
}}
'''Norsteholmen''' eller '''Wyatt Earp Islands''' er ei lita gruppe øyar og skjer utanfor nordenden av [[Vestfold Hills]], kring 0,5 nautiske mil (0,9 km) nord for [[Walkabout Rocks]]. Dei vart kartlagde frå flyfoto tekne av [[Lars Christensen-ekspedisjonen]] (1936–37) og namngjevne av dei. I januar 1939 vart det gjort ei ilandstiging på dei nærliggande Walkabout Rocks frå skipet [[«Wyatt Earp»]], som øyane vart kalla opp att etter av [[Australian Antarctic Names and Medals Committee]] (ANCA).
== Sjå òg ==
* [[Antarktiske og subantarktiske øyar]]
{{usgs-gazetteer|name=Wyatt Earp Islands}}
{{Autoritetsdata}}
[[Kategori:Øyar i Princess Elizabeth Land]]
o96aozeywhr9xi7iukwlh66e6w2f5m9
3650880
3650879
2026-04-18T12:55:34Z
Ranveig
39
3650880
wikitext
text/x-wiki
{{geoboks|øy
| namn = Norsteholmen
| andre namn = Wyatt Earp Islands
| land = Antarktis
| kartlokasjon= Antarktis
| fritype = Administrert under |fri = [[Antarktistraktaten]]
| lat_d = 68 | lat_m = 22 | lat_NS = S
| long_d = 78 | long_m = 32 | long_EW = E
}}
'''Norsteholmen''' eller '''Wyatt Earp Islands''' er ei lita gruppe øyar og skjer utanfor nordenden av [[Vestfold Hills]], kring 0,5 nautiske mil (0,9 km) nord for [[Walkabout Rocks]]. Dei vart kartlagde frå flyfoto tekne av [[Lars Christensen-ekspedisjonen]] (1936–37) og namngjevne av dei. I januar 1939 vart det gjort ei ilandstiging på dei nærliggande Walkabout Rocks frå skipet [[«Wyatt Earp»]], som øyane vart kalla opp att etter av [[Australian Antarctic Names and Medals Committee]] (ANCA).
== Sjå òg ==
* [[Antarktiske og subantarktiske øyar]]
==Kjelder==
{{usgs-gazetteer|name=Wyatt Earp Islands}}
{{Autoritetsdata}}
[[Kategori:Øyar i Princess Elizabeth Land]]
bd0j1fqaxb0c55w9949u7bo47xiik2o
Mount Grimsley
0
247267
3650882
3613337
2026-04-18T12:59:00Z
Ranveig
39
3650882
wikitext
text/x-wiki
{{geoboks|fjell
| land = Antarktis
| stad = [[Mac. Robertson Land]]
| fjellkjede = Prince Charles Mountains
| kartlokasjon = Antarktis
|fritype=Administrert under|fri=[[Antarktistraktaten]]
|lat_d=70|lat_m=36|lat_NS=S
|long_d=66|long_m=32|long_EW=E
}}
'''Mount Grimsley''' er eit lite fjell i Antarktis som ligg 1 [[nautisk mil]] sørvest for [[Mount Abbs]] i [[Aramis Range]] i [[Prince Charles Mountains]]. Det vart kartlagt frå flyfoto tekne av [[Australian National Antarctic Research Expeditions]] tekne i 1956 og 1960, og vart namngjeve av [[Australian Antarctic Names and Medals Committee]] etter S.W. Grimsley, ein teknisk offiser ved [[Wilkes-stasjonen]] i 1963.<ref name=gnis/>
==Kjelder==
{{fotnoteliste|refs=
<ref name=gnis>{{cite gnis | type = antarid | id = 6060| name = Grimsley, Mount | accessdate = 24. oktober 2012}}</ref>
}}
{{usgs-gazetteer|id=6060|name=Grimsley, Mount}}
{{DEFAULTSORT:Grimsley, Mount}}
[[Kategori:Fjell i Mac. Robertson Land]]
6d90d3hrggdhau9lek6b1o6dmqr7wof
Stortingsrepresentantar 1827-1829
0
277784
3650919
3613456
2026-04-19T08:22:38Z
Migne
2086
/* Drammen */
3650919
wikitext
text/x-wiki
'''Stortingsrepresentantar 1827-1829''' er ei oversikt over representantane til Stortinget 1827-1829. Lista syner alle som vart valde til [[Stortinget]]. Totalt var det 79 representantar frå 34 valkrinsar; 50 representantar frå 17 landkrinsar (amt) og 29 representantar frå 17 bykrinsar. [[Holmestrand]] fekk for fyrste gong velje ein eigen representant.
{{TOC right}}
==Landkrinsar==
===Smaalenenes Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sorenskriver [[Hans Christian Smith]]
|
|-
|Sogneprest [[Halvor Torkildsen Aschehoug]]
|
|-
|Gaardbruker, lensmand, drev sagbruk og møllebruk [[Nils Erichsen]]
|
|}
===Akershus amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sorenskriver [[Laurentius Borchsenius]]
|
|-
|Grosserer og større jordegodseier [[Thomas Bukier]]
|
|-
|Sorenskriver, kancelliraad [[Paul Frederik Michael Heltzen]]
|
|}
===Hedemarkens Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sorenskriver [[Arne Arntzen]]
|
|-
|Amtmand [[Frederik Hartvig Johan Heidmann]]
|
|-
|Gaardbruker [[Mikkel Anderssen Saxlund]]
|
|}
===Christians Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Gaardbruker [[Ole Paulssøn Haagenstad]]
|
|-
|Amtmand [[Lauritz Weidemann]]
|
|-
|Sorenskriver [[Jens Thaulow]]
|
|}
===Buskeruds Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sagfoged, fløtningsinspektør [[Hans Paulsen Møllenhof]]
|
|-
|Amtmand [[Johan Collett]]
|Collett døydde 19. juni 1827 og suppleanten <br>[[Gudbrand Eriksen Tandberg]] møtte i staden for Collett<ref>{{ Kjelde bok | forfattar = [[Tallak Lindstøl|Lindstøl, Tallak]] | utgjeve = 1914
| tittel = Stortinget og statsraadet: 1814-1914. De enkelte storting og statsraader 1814-1885
| stad = Kristiania | forlag = Steen'ske bogtrykkeri | side = 125 |url = http://urn.nb.no/URN:NBN:no-nb_digibok_2006120500013}}</ref>
|-
|Gaardbruker [[Hans Nilssen Gubberud]]
|
|-
|Gudbrand Eriksen Tandberg
|Suppleant
|}
===Jarlsberg og Laurviks Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Tidl. statsraad [[Johan Caspar Herman Wedel-Jarlsberg]]
|
|-
|Titulær bergraad [[Peter Petersen]]
|
|-
|Overbirkedommer [[Nils Christian Nilsen]]
|
|}
===Bratsberg Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Eier av gaard, jernverkseier [[Frederik Løvenskiold]]
|
|-
|Provst [[Presten Edvard Munch|Edvard Storm Munch]]
|
|-
|Gaardbruker [[Gullik Olsson Bolkesjø]]
|
|}
===Nedenæs og Robygdelagets amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Jernverkseier [[Jacob Aall]]
|
|-
|Gaardbruker [[Daniel Knutsson Vigeland]]
|
|}
===Lister og Mandals Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Gaardbruker, handelsmand, skibsreder [[Teis Jacob Torkildsen Lundegaard]]
|
|-
|Kjøbmand, vicekonsul [[Gabriel Lund]]
|
|-
|Lærer og gaardbruker [[Ole Olsson Øveland]]
|
|}
===Stavanger Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sorenskriver [[Niels Arntzen Sem]]
|
|-
|Resid. kapellan [[Ole Schavland]]
|
|-
|Gaardbruker [[Anders Andersson Bjelland]]
|
|}
===Søndre Bergenhus Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Foged [[Johan Andreas Budtz]]
|
|-
|Gaardbruker [[Anders Arnesson Vinje]]
|
|-
|Gaardbruker [[Johannes Johannesson Spjeldnes]]
|
|}
===Nordre Bergenhus Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Provst [[Niels Griis Alstrup Dahl]]
|
|-
|Kjøbmand [[Ole Torjersen Svanø]]
|
|-
|Kompanichef [[Christian Meidell]]
|
|}
===Romsdals Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|"Bisto almuen med utskiftningsforretninger, jurid [[John Neergaard]]
|
|-
|Foged [[Nils Andersen]]
|
|-
|Boktrykker, lensmann, poståpner, veiinspektør [[Rasmus Sivertsen Aarflot]]
|
|}
===Søndre Throndhjems Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Tidl. statsraad [[Statsråd Christian Krohg|Christian Krohg]]
|
|-
|Sorenskriver [[Anders Rambech]]
|
|-
|Klostereier [[Henrik Horneman (1769-1838)|Henrik Horneman]]
|
|}
===Nordre Throndhjems Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sorenskriver [[Peder Klykken]]
|
|-
|Gaardbruker [[Johan Schjefloe]]
|
|-
|Gaardbruker, fanejunker [[Andreas Samuelsson Vibstad]]
|
|}
===Nordlandenes Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Sogneprest [[Christian Qvale]]
|
|-
|Provst [[Arnoldus Schytte]]
|
|-
|Gårdbruker, fisker, lensmann [[Ole Jonsson Udnæs]]
|
|}
===Finmarkens Amt===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Foged [[Johan Andreas Hofseth]]
|
|-
|Sogneprest, seminarbestyrer, prost [[Simon Kildal]]
|
|-
|Toller [[Harriet Heiberg Mejer]]
|
|}
==Bykrinsar==
===Fredrikshald===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Tidl. statsraad [[Marcus Gjøe Rosenkrantz]]
|
|}
===Fredriksstad===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Res. kapellan og overlærer [[Hans Riddervold]]
|
|}
===Moss===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kst. sorenskriver [[Gregers Wulfsberg]]
|
|}
===Christiania===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Professor, statsrevisor [[Henrik Steenbuch]]
|
|-
|Professor [[Svend Hersleb]]
|
|-
|Kjøbmand, børskommisær, statsrevisor [[Lauritz Nicolai Kraft]]
|
|-
|Handelsmand, konsul [[Johannes Heftye]]
|
|}
===Drammen===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kjøbmand, vicekonsul [[Mads Lauritz Madsen]]
| Møtte ikkje i omframtstortinget.
|-
|Kjøbmand [[Elling Mathias Holst]]
|
|-
|Kjøbmand og skibsreder [[Erik Børresen]]
|
|}
===Kongsberg===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Overretsprokurator [[Jørgen Henschien]]
|
|}
===Holmestrand===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kjøbmand og gaardeier [[Christen Grønnerup]]
|
|}
===Tønsberg===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kjøbmand, saltverkseier, vicekonsul [[Nils Otto Bull]]
|
|}
===Laurvik og Sandefjord===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Byfoged og sorenbirkeskriver [[Thomas Bryn]]
|
|}
===Skien og Porsgrund===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kjøbmand [[Johan Bulow Wamberg]]
|Underrettsprokurator [[John Gullichsen]]
|}
===Kragerø og Østerrisør===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kjøbmand [[Joachim Paycken]]
|
|}
===Arendal===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Handelsmand, skibsreder, verftseier [[Andreas Thomle]]
|
|}
===Christianssand===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Assessor [[Olaus Michael Schmidt]]
|
|-
|Kst. sorenskriver [[Mathias Kjørboe]]
|
|}
===Stavanger===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Oberstløitnant [[Johan Hammond Wolff]]
|
|}
===Bergen===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Kjøbmand, vicekonsul [[Wollert Konow (1779–1839)|Wollert Konow]]
|
|-
|Overfiskevraker [[Frederik Meltzer]]
|
|-
|Stabskaptein [[Herman Foss]]
|
|-
|Amtmand [[Edvard Hagerup]]
|
|}
===Christianssund og Molde===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Chef, vicekonsul [[Søren Knudtzon]]
|
|}
===Throndhjem===
{| class="wikitable"
!Namn
!Kommentarar/Suppleantar
|-
|Resid. kapellan [[Niels Schultz]]
|
|-
|Assessor [[Christian Horneman]]
|
|-
|Kjøbmand og medlem av direktionen i Norges Bank [[Jacob Frederik Oxholm]]
|
|-
|Titulær krigsassessor, vicekonsul [[Balthazar Schnitler]]
|
|}
==Kjelder==
*[http://www.nsd.uib.no/polsys/index.cfm?urlname=storting&lan=&MenuItem=N1_1&ChildItem=&State=collapse&UttakNr=104&periodetekst=5 Norsk samfunnsvitenskapelig datatjeneste] {{Webarchive|url=https://web.archive.org/web/20120609203826/http://www.nsd.uib.no/polsys/index.cfm?urlname=storting&lan=&MenuItem=N1_1&ChildItem=&State=collapse&UttakNr=104&periodetekst=5 |date=2012-06-09 }}
*[http://www.nsd.uib.no/data/polsys/Index.cfm?Institusjonsnummer=1&ArkivNr=17&Uttaksnummer=21&Typetekst=96&Spraak= kildevilkår]{{Død lenkje|date=oktober 2022 |bot=InternetArchiveBot |fix-attempted=yes }}
{{refopning}}
*''Denne artikkelen bygger på «[[:nb:Stortingsrepresentantar 1827-1829|Stortingsrepresentantar 1827-1829]]» frå {{Wikipedia-utgåve|nb}}, den 12. april 2014.''
{{refslutt}}
{{fotnoteliste}}
{{Stortingsrepresentantar}}
[[Kategori:Lister over Stortingsrepresentantar etter periode|Stortingsrepresentantar 1827-29]]
[[Kategori:Stortingsrepresentantar etter periode|Stortingsrepresentantar 1827-1829]]
[[Kategori:Stortingsrepresentantar 1827-1829| ]]
6rnyfn1l76adtmaih92b6awf15zvdkd
Roumieh
0
284377
3650874
3377546
2026-04-18T12:29:51Z
Ranveig
39
3650874
wikitext
text/x-wiki
{{geoboks|by
| namn = Roumieh
| andre namn = Roumie
| kartposisjon = Libanon
| kart = {{posisjonskart|Libanon}}
| lat_d = 33.87450
| long_d = 35.6500
| land = Libanon| regiontype = [[guvernement i Libanon|Guvernement]]
| region = [[Libanonfjella guvernement]]
| distrikttype = [[distrikt i Libanon|Distrikt]]
| distrikt = [[Matn distrikt]]
| høgdenivå = 550-700
| folketal = 5000
| folketal_i_år =
| folketettleik =
| tidssone = [[Eastern European Time|EET]]
| utc_skilnad = +2
| tidssone_sommartid = [[Eastern European Summer Time|EEST]]
| utc_skilnad_sommartid = +3
| retningsnummer = +961
}}
'''Roumieh''' er ein landsby nordaust for [[Beirut]] i [[Libanon]]. Han er omgjeve av furukledde åsar og ligg 5-10 minuttars køyretur frå kysten. Roumieh er kjend som ein behageleg, vakker fjellandsby med mange hagar.
I tillegg til furuskogar vert det dyrka [[vindrue]]r, [[fiken]], [[oliven]] og [[timian]]. Landsbyen er kjend for produksjonen av [[arak]].
Landsbyen består hovudsakleg av [[maronittar|maronittiske katolikkar]] og [[gresk-katolikkar]], men òg [[ortodoks kristendom i Libanon|gresk-ortodokse]] og [[armensk-ortodokse]]. Han har kring 5000 innbyggjarar.
Namnet «Roumieh» kjem frå arameisk. Det tyder ‘åsar’ og refererer til det lokale terrenget.
==Historie==
Landsbyen vart grunnlagd kring 1500, men det var først på 1900-talet han byrja å vekse. Med ein diaspora i vesten og Latin-Amerika vart landsbyen velståande samanlikna med liknande landsbyar, og innbyggjarane vart i aukande grad utdanna.
==Kjelder==
<div class="references-small">
*''Denne artikkelen bygger på «[[:en:Roumieh|Roumieh]]» frå {{Wikipedia-utgåve|en}}, den 23. august 2014.''
**''{{Wikipedia-utgåve|en}} oppgav desse kjeldene:''
</div>
{{fotnoteliste}}
{{Matn distrikt}}
{{autoritetsdata}}
[[Kategori:Busetnader i Libanonfjella guvernement]]
[[Kategori:Matn distrikt]]
gn6kgxliy069gksmryym02n8gze0rdj
Modul:Lang
828
386660
3650903
3544873
2026-04-19T07:27:01Z
Ranveig
39
La til xlit-funksjon frå en:
3650903
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{lang-xx}}, and {{transl}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()
local yesno = require ('Module:Yesno');
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local this_wiki_lang = mw.language.getContentLanguage().code; -- get this wiki's language
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on
the individual template's requirements, 'italic' for {{transl}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-xx}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, 'only one of |italic=, |italics=, or |i= can be specified';
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
prettify ietf tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=)
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- ietf tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, 'missing language tag';
end
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});
end
end
else
if not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args, template)
local out = {};
local category;
if 'Transl' == template then
category = 'Transl';
else
category = 'Lang and lang-xx'
end
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available
table.insert (out, table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: {{', template, '}}: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));
end
return table.concat (out);
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported
]]
local function div_markup_add (text, style)
local implied_p = {};
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return mw.ustring.gsub (text, '(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html = {};
local style_added = '';
if text:match ('^%*') then
table.insert (html, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default html tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag
table.insert (html, table.concat ({' lang="', code, '\"'})); -- add language attribute
if rtl or unicode.is_rtl(text) then
table.insert (html, ' dir="rtl"'); -- add direction attribute for right to left languages
end
if 'normal' == style then -- when |italic=no
table.insert (html, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
if is_set (language) then
table.insert (html, table.concat ({style_added, ' title=\"', language})); --start the title text
if language:find ('languages') then
table.insert (html, ' collective text'); -- for collective languages
else
table.insert (html, '-språkleg tekst'); -- for individual languages
end
table.insert (html, '\">'); -- close the opening html tag
else
table.insert (html, table.concat ({style_added, '>'})); -- close the style attribute and close opening html tag
end
table.insert (html, text); -- insert the text
table.insert (html, table.concat ({'</', tag, '>'})); -- close the <i>, <span>, or <div> html tag
if rtl then -- legacy; shouldn't be necessary because all of the rtl text is wrapped inside an html tag with dir="rtl" attribute
table.insert (html, '‎'); -- make sure the browser knows that we're at the end of the rtl
end
return table.concat (html); -- put it all together and done
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
for English:
[[Category:Articles containing explicitly cited English-language text]]
for ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
local cat = {};
local retval;
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if language_name:find ('languages') then
return table.concat ({'[[Kategori:Artiklar med tekst på ', language_name, ']]'});
end
table.insert (cat, '[[Kategori:Artiklar med tekst på ');
if 'nn' == code then
table.insert (cat, 'markert ' .. language_name); -- falls back to English if regional name not available
else
table.insert (cat, language_name);
end
table.insert (cat, ']]');
return table.concat (cat);
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string
The value |script= is not used in {{transl}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transl}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript)
This function is used by both lang_xx() and transl()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transl}}, style only applies when a language code is provided
]]
local function make_translit (code, language_name, translit, std, tscript, style)
local title;
local tout = {};
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})
if not style then -- nil for the default italic style
table.insert (tout, "<i lang=\""); -- so use <i> tag
else
table.insert (tout, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it
end
table.insert (tout, code);
table.insert (tout, "-Latn\" title=\""); -- transliterations are always Latin script
else
table.insert (tout, "<span title=\""); -- when no language code: no lang= attribute, not italic ({{transl}} only)
end
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
table.insert (tout, language_name); -- write a generic tool tip
if not language_name:find ('språk') then -- collective language names (plural 'languages' is part of the name)
table.insert (tout, '-language') -- skip this text (individual and macro languages only)
end
table.insert (tout, ' romanisering'); -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_table[std] then -- and if standard is legitimate
if title_table[std][tscript] then -- and if script for that standard is legitimate
table.insert (tout, table.concat ({title_table[std][tscript:lower()], ' (', script_table[tscript][1], ' script) transliteration'})); -- add the appropriate text to the tool tip
else
table.insert (tout, title_table[std]['default']); -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_table[std] then return ''; end -- invalid standard, setup for error message
if title_table[std][code] then -- if language code is in the table (transl may not provide a language code)
-- table.insert (tout, table.concat ({title_table[std][code:lower()], ' (', lang_table[code][1], ' language) transliteration'})); -- add the appropriate text to the tool tip
table.insert (tout, table.concat ({title_table[std][code:lower()], ' (', language_name, ' language) transliteration'})); -- add the appropriate text to the tool tip
else -- code doesn't match
table.insert (tout, title_table[std]['default']); -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_table['no_std'][tscript] then
table.insert (tout, title_table['no_std'][tscript]); -- use translit-script if set
elseif title_table['no_std'][code] then
table.insert (tout, title_table['no_std'][code]); -- use language code
else
if is_set (tscript) then
table.insert (tout, table.concat ({language_name, '-script transliteration'})); -- write a script tool tip
elseif is_set (code) then
if not language_name:find ('languages') then -- collective language names (plural 'languages' is part of the name)
table.insert (tout, '-language') -- skip this text (individual and macro languages only)
end
table.insert (tout, ' transliteration'); -- finish the tool tip
else
table.insert (tout, ' transliteration'); -- generic tool tip (can we ever get here?)
end
end
end
table.insert (tout, '">');
table.insert (tout, translit);
if is_set (code) and not style then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})
table.insert (tout, "</i>"); -- close the italic tag
else
table.insert (tout, "</span>"); -- no language code so close the span tag
end
return table.concat (tout);
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg ('no text', args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg ('text has malformed markup', args, template);
end
local style = args.italic;
if ('unset' ~= style) and ('invert' ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg ('text has italic markup', args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
render mainenance messages and categories
]]
local function render_maint(nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
looks for a poem strip marker in text; returns true when found; false else
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of
true indicating that some other value has been assigned to |proto=
]]
local function validate_proto (proto_param)
if 'yes' == proto_param then
return true;
elseif 'no' == proto_param then
return false;
elseif is_set (proto_param) then
return nil, true; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
common function to return language name from the data set according to IETF tag
returns language name if found in data tables; nil else
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf][1];
elseif override_table[code] then -- not there so try basic language code
name = override_table[code][1];
elseif lang_table[code] then -- shift to iana code/name table
name = lang_table[code][1]; -- table entries sometimes have multiple names, always take the first one
elseif lang_dep_table[code] then
-- if cat then
-- table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
-- table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
-- end
name = lang_dep_table[code][1]; -- table entries sometimes have multiple names, always take the first one
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang';
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg ( msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function lang (frame)
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return _lang (args);
end
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-xx}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args)
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local translit_title;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang-xx';
if args[1] and args.text then
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);
else
args.text = args[1] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
if args[2] and args.translit then
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);
else
args.translit = args[2] or args.translit -- prefer args.translit
end
if args[3] and (args.translation or args.lit) then
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);
elseif args.translation and args.lit then
return make_error_msg ('conflicting: |lit= and |translation=', args, template);
else
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation
end
if args.links and args.link then
return make_error_msg ('conflicting: |links= and |link=', args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if 'no' == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if language_name:find ('languages') then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
table.insert (out, make_wikilink (lang_data.article_name[code][1], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (language_name .. '', language_name)); -- language name with wikilink
end
end
table.insert (out, ' '); -- separator
end
if 'invert' == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, nil))
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script'][1]];
else
translit_script_name = language_name; -- fall back on language name
end
translit_title = mw.title.makeTitle (0, table.concat ({'Romanisering av ', translit_script_name})); -- make a title object
if translit_title.exists and ('no' ~= args.link) then
table.insert (out, make_wikilink ('Romanisering av ' .. translit_script_name or language_name, 'romanisert') .. ':'); -- make a wikilink if there is an article to link to
else
table.insert (out, 'romanisert'); -- else plain text
end
table.insert (out, ' '); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);
end
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, ', ');
if 'none' ~= args.label then
table.insert (out, '<small>');
if 'no' == args.link then
table.insert (out, '<abbr title="bokstaveleg tyding">bokst.</abbr>');
else
table.insert (out, make_wikilink ('Bokstaveleg tyding', 'bokst.'));
end
table.insert (out, " </small>");
end
table.insert (out, table.concat ({''', args.translation, '''})); -- use html entities to avoid wiki markup confusion
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
common function to get args table from {{lang-??}} templates
returns table of args
]]
local function lang_xx_args_get (frame)
local args = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if 1 == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point ffrom another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs(frame)[1]); -- args[1] is the ietf language tag to be tested; getArgs() so we also get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if link then -- when |link=yes, wikilink the language name
if language_name:find ('languages') then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
language_name = make_wikilink (lang_data.article_name[code][1], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (language_name .. '', label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the ietf language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message
end
else
msg = 'missing language name' -- language name not provided, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------
Module entry point from another module
]]
local function _transl (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- translitterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
if is_set (args[3]) then -- [3] set when {{transl|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transl');
end
else
if is_set (args[2]) then -- [2] set when {{transl|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and args[1]:match ('^%a%a%a?%a?$') then -- args[2] missing; is args[1] a code or its it the transliterated text?
return make_error_msg ('no text', args, 'Transl'); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg ('missing language / script code', args, 'Transl');
end
end
end
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters); lower case because table indexes are lower case
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transl'); -- invalid language / script code
end
else
return make_error_msg ('missing language / script code', args, 'Transl'); -- missing language / script code so quit
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, 'Transl');
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code][1];
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code][1];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code][1];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code][1];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transl'); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);
end
--[[--------------------------< T R A N S L >------------------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function transl (frame)
return _transl (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _category_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
return category_name;
end
--[[--------------------------< _ X L I T >--------------------------------------------------------------------
Module entry point from another module.
]]
local function _xlit (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
local template = args.template or cfg.templates_t.transliteration;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (substitute (cfg.transl_t.unrecog_xlit_std, {args.translit_std}), args, template);
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg (cfg.transl_t.no_text, args, template); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template);
end
end
end
if is_set (args[1]) then -- IANA language code used for HTML lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args[1]}), args, template); -- invalid language / script code
end
else
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template); -- missing language / script code so quit
end
local is_latn_text, pos, char;
is_latn_text, args.text, pos, char= is_latin (args.text, args.code); -- is latn text? strip accept-as-written markup
if not is_latn_text then -- when text is not latn
return make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template); -- abandon with error message
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
args.engvar = cfg.engvar_sel_t[args.engvar] or cfg.default_engvar; -- |engvar= when valid; cfg.default_engvar else
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args.code}), args, template); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic, args.engvar);
end
--[[--------------------------< X L I T >----------------------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function xlit (frame)
return _xlit (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag,
lang = lang, -- entry point for {{lang}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns ietf tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
transl = transl, -- entry point for {{transl}}
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules
_lang = _lang,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_transl = _transl,
};
j0mv09ftjetn54qdyoawv3fmb3lwuh8
3650904
3650903
2026-04-19T07:28:28Z
Ranveig
39
3650904
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{lang-xx}}, and {{transl}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()
local yesno = require ('Module:Yesno');
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local this_wiki_lang = mw.language.getContentLanguage().code; -- get this wiki's language
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on
the individual template's requirements, 'italic' for {{transl}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-xx}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, 'only one of |italic=, |italics=, or |i= can be specified';
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
prettify ietf tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=)
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- ietf tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, 'missing language tag';
end
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});
end
end
else
if not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args, template)
local out = {};
local category;
if 'Transl' == template then
category = 'Transl';
else
category = 'Lang and lang-xx'
end
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available
table.insert (out, table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: {{', template, '}}: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));
end
return table.concat (out);
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported
]]
local function div_markup_add (text, style)
local implied_p = {};
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return mw.ustring.gsub (text, '(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html = {};
local style_added = '';
if text:match ('^%*') then
table.insert (html, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default html tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag
table.insert (html, table.concat ({' lang="', code, '\"'})); -- add language attribute
if rtl or unicode.is_rtl(text) then
table.insert (html, ' dir="rtl"'); -- add direction attribute for right to left languages
end
if 'normal' == style then -- when |italic=no
table.insert (html, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
if is_set (language) then
table.insert (html, table.concat ({style_added, ' title=\"', language})); --start the title text
if language:find ('languages') then
table.insert (html, ' collective text'); -- for collective languages
else
table.insert (html, '-språkleg tekst'); -- for individual languages
end
table.insert (html, '\">'); -- close the opening html tag
else
table.insert (html, table.concat ({style_added, '>'})); -- close the style attribute and close opening html tag
end
table.insert (html, text); -- insert the text
table.insert (html, table.concat ({'</', tag, '>'})); -- close the <i>, <span>, or <div> html tag
if rtl then -- legacy; shouldn't be necessary because all of the rtl text is wrapped inside an html tag with dir="rtl" attribute
table.insert (html, '‎'); -- make sure the browser knows that we're at the end of the rtl
end
return table.concat (html); -- put it all together and done
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
for English:
[[Category:Articles containing explicitly cited English-language text]]
for ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
local cat = {};
local retval;
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if language_name:find ('languages') then
return table.concat ({'[[Kategori:Artiklar med tekst på ', language_name, ']]'});
end
table.insert (cat, '[[Kategori:Artiklar med tekst på ');
if 'nn' == code then
table.insert (cat, 'markert ' .. language_name); -- falls back to English if regional name not available
else
table.insert (cat, language_name);
end
table.insert (cat, ']]');
return table.concat (cat);
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string
The value |script= is not used in {{transl}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transl}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript)
This function is used by both lang_xx() and transl()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transl}}, style only applies when a language code is provided
]]
local function make_translit (code, language_name, translit, std, tscript, style)
local title;
local tout = {};
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})
if not style then -- nil for the default italic style
table.insert (tout, "<i lang=\""); -- so use <i> tag
else
table.insert (tout, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it
end
table.insert (tout, code);
table.insert (tout, "-Latn\" title=\""); -- transliterations are always Latin script
else
table.insert (tout, "<span title=\""); -- when no language code: no lang= attribute, not italic ({{transl}} only)
end
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
table.insert (tout, language_name); -- write a generic tool tip
if not language_name:find ('språk') then -- collective language names (plural 'languages' is part of the name)
table.insert (tout, '-language') -- skip this text (individual and macro languages only)
end
table.insert (tout, ' romanisering'); -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_table[std] then -- and if standard is legitimate
if title_table[std][tscript] then -- and if script for that standard is legitimate
table.insert (tout, table.concat ({title_table[std][tscript:lower()], ' (', script_table[tscript][1], ' script) transliteration'})); -- add the appropriate text to the tool tip
else
table.insert (tout, title_table[std]['default']); -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_table[std] then return ''; end -- invalid standard, setup for error message
if title_table[std][code] then -- if language code is in the table (transl may not provide a language code)
-- table.insert (tout, table.concat ({title_table[std][code:lower()], ' (', lang_table[code][1], ' language) transliteration'})); -- add the appropriate text to the tool tip
table.insert (tout, table.concat ({title_table[std][code:lower()], ' (', language_name, ' language) transliteration'})); -- add the appropriate text to the tool tip
else -- code doesn't match
table.insert (tout, title_table[std]['default']); -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_table['no_std'][tscript] then
table.insert (tout, title_table['no_std'][tscript]); -- use translit-script if set
elseif title_table['no_std'][code] then
table.insert (tout, title_table['no_std'][code]); -- use language code
else
if is_set (tscript) then
table.insert (tout, table.concat ({language_name, '-script transliteration'})); -- write a script tool tip
elseif is_set (code) then
if not language_name:find ('languages') then -- collective language names (plural 'languages' is part of the name)
table.insert (tout, '-language') -- skip this text (individual and macro languages only)
end
table.insert (tout, ' transliteration'); -- finish the tool tip
else
table.insert (tout, ' transliteration'); -- generic tool tip (can we ever get here?)
end
end
end
table.insert (tout, '">');
table.insert (tout, translit);
if is_set (code) and not style then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})
table.insert (tout, "</i>"); -- close the italic tag
else
table.insert (tout, "</span>"); -- no language code so close the span tag
end
return table.concat (tout);
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg ('no text', args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg ('text has malformed markup', args, template);
end
local style = args.italic;
if ('unset' ~= style) and ('invert' ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg ('text has italic markup', args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
render mainenance messages and categories
]]
local function render_maint(nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
looks for a poem strip marker in text; returns true when found; false else
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of
true indicating that some other value has been assigned to |proto=
]]
local function validate_proto (proto_param)
if 'yes' == proto_param then
return true;
elseif 'no' == proto_param then
return false;
elseif is_set (proto_param) then
return nil, true; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
common function to return language name from the data set according to IETF tag
returns language name if found in data tables; nil else
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf][1];
elseif override_table[code] then -- not there so try basic language code
name = override_table[code][1];
elseif lang_table[code] then -- shift to iana code/name table
name = lang_table[code][1]; -- table entries sometimes have multiple names, always take the first one
elseif lang_dep_table[code] then
-- if cat then
-- table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
-- table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
-- end
name = lang_dep_table[code][1]; -- table entries sometimes have multiple names, always take the first one
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang';
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg ( msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function lang (frame)
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return _lang (args);
end
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-xx}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args)
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local translit_title;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang-xx';
if args[1] and args.text then
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);
else
args.text = args[1] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
if args[2] and args.translit then
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);
else
args.translit = args[2] or args.translit -- prefer args.translit
end
if args[3] and (args.translation or args.lit) then
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);
elseif args.translation and args.lit then
return make_error_msg ('conflicting: |lit= and |translation=', args, template);
else
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation
end
if args.links and args.link then
return make_error_msg ('conflicting: |links= and |link=', args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if 'no' == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if language_name:find ('languages') then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
table.insert (out, make_wikilink (lang_data.article_name[code][1], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (language_name .. '', language_name)); -- language name with wikilink
end
end
table.insert (out, ' '); -- separator
end
if 'invert' == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, nil))
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script'][1]];
else
translit_script_name = language_name; -- fall back on language name
end
translit_title = mw.title.makeTitle (0, table.concat ({'Romanisering av ', translit_script_name})); -- make a title object
if translit_title.exists and ('no' ~= args.link) then
table.insert (out, make_wikilink ('Romanisering av ' .. translit_script_name or language_name, 'romanisert') .. ':'); -- make a wikilink if there is an article to link to
else
table.insert (out, 'romanisert'); -- else plain text
end
table.insert (out, ' '); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);
end
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, ', ');
if 'none' ~= args.label then
table.insert (out, '<small>');
if 'no' == args.link then
table.insert (out, '<abbr title="bokstaveleg tyding">bokst.</abbr>');
else
table.insert (out, make_wikilink ('Bokstaveleg tyding', 'bokst.'));
end
table.insert (out, " </small>");
end
table.insert (out, table.concat ({''', args.translation, '''})); -- use html entities to avoid wiki markup confusion
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
common function to get args table from {{lang-??}} templates
returns table of args
]]
local function lang_xx_args_get (frame)
local args = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if 1 == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point ffrom another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs(frame)[1]); -- args[1] is the ietf language tag to be tested; getArgs() so we also get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if link then -- when |link=yes, wikilink the language name
if language_name:find ('languages') then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
language_name = make_wikilink (lang_data.article_name[code][1], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (language_name .. '', label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the ietf language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message
end
else
msg = 'missing language name' -- language name not provided, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------
Module entry point from another module
]]
local function _transl (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- translitterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
if is_set (args[3]) then -- [3] set when {{transl|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transl');
end
else
if is_set (args[2]) then -- [2] set when {{transl|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and args[1]:match ('^%a%a%a?%a?$') then -- args[2] missing; is args[1] a code or its it the transliterated text?
return make_error_msg ('no text', args, 'Transl'); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg ('missing language / script code', args, 'Transl');
end
end
end
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters); lower case because table indexes are lower case
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transl'); -- invalid language / script code
end
else
return make_error_msg ('missing language / script code', args, 'Transl'); -- missing language / script code so quit
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, 'Transl');
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code][1];
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code][1];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code][1];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code][1];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transl'); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);
end
--[[--------------------------< T R A N S L >------------------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function transl (frame)
return _transl (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _category_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
return category_name;
end
--[[--------------------------< _ X L I T >--------------------------------------------------------------------
Module entry point from another module.
]]
local function _xlit (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- transliterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
local template = args.template or cfg.templates_t.transliteration;
maint_cats = {}; -- initialize because when this module required into another module, these only declared once so only initialzed once
maint_msgs = {};
if is_set (args[3]) then -- [3] set when {{transliteration|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (substitute (cfg.transl_t.unrecog_xlit_std, {args.translit_std}), args, template);
end
else
if is_set (args[2]) then -- [2] set when {{transliteration|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and (args[1]:match ('^%a%a%a?%a?$') or -- args[2] missing; is args[1] a language or script tag or is it the transliterated text?
args[1]:match ('^%a%a%a?%-x%-')) then -- or is args[1] a private-use tag
return make_error_msg (cfg.transl_t.no_text, args, template); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template);
end
end
end
if is_set (args[1]) then -- IANA language code used for HTML lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') or args[1]:match ('^%a%a%a?%-x%-') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args[1]}), args, template); -- invalid language / script code
end
else
return make_error_msg (cfg.transl_t.missing_lang_scr, args, template); -- missing language / script code so quit
end
local is_latn_text, pos, char;
is_latn_text, args.text, pos, char= is_latin (args.text, args.code); -- is latn text? strip accept-as-written markup
if not is_latn_text then -- when text is not latn
return make_error_msg (substitute (cfg.lang_xx_t.translit_nonlatn, {pos, char}), args, template); -- abandon with error message
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
args.engvar = cfg.engvar_sel_t[args.engvar] or cfg.default_engvar; -- |engvar= when valid; cfg.default_engvar else
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code];
args.code = args.code:match ('^%a%a%a?'); -- if private use, strip all but language subtag
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (substitute (cfg.transl_t.unrecog_lang_scr, {args.code}), args, template); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic, args.engvar);
end
--[[--------------------------< X L I T >----------------------------------------------------------------------
Module entry point from an {{#invoke:}}.
]]
local function xlit (frame)
return _xlit (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag,
lang = lang, -- entry point for {{lang}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns ietf tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
transl = transl, -- entry point for {{transl}}
xlit = xlit, -- entry point for {{transliteration}}
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules
_lang = _lang,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_transl = _transl,
};
tlr0vbxdhq8w569gb3a9qqol9gpja0y
3650905
3650904
2026-04-19T07:29:20Z
Ranveig
39
Attenderulla endringane gjorde av [[Special:Contributions/Ranveig|Ranveig]] ([[User talk:Ranveig|diskusjon]]) til siste versjonen av [[User:Liuxinyu970226|Liuxinyu970226]]
3544873
Scribunto
text/plain
--[=[
Lua support for the {{lang}}, {{lang-xx}}, and {{transl}} templates and replacement of various supporting templates.
]=]
require('strict');
local getArgs = require ('Module:Arguments').getArgs;
local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl()
local yesno = require ('Module:Yesno');
local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables
local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts
local lang_table = lang_data.lang_name_table.lang;
local lang_dep_table = lang_data.lang_name_table.lang_dep;
local script_table = lang_data.lang_name_table.script;
local region_table = lang_data.lang_name_table.region;
local variant_table = lang_data.lang_name_table.variant;
local suppressed_table = lang_data.lang_name_table.suppressed;
local override_table = lang_data.override;
local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code
local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization
local this_wiki_lang = mw.language.getContentLanguage().code; -- get this wiki's language
local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic()
local maint_cats = {}; -- maintenance categories go here
local maint_msgs = {}; -- and their messages go here
--[[--------------------------< I S _ S E T >------------------------------------------------------------------
Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string.
]]
local function is_set( var )
return not (var == nil or var == '');
end
--[[--------------------------< I N V E R T _ I T A L I C S >-------------------------------------------------
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup
in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become
bold markup inadvertently.
Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal,
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.
In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns.
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.
]]
local function invert_italics (source)
local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns
[""]="\'\'", -- empty string becomes italic markup
["\'\'"]="", -- italic markup becomes empty string
["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic
["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold
};
local seg = {};
source = source:gsub ("%f[\']\'%f[^\']", '''); -- protect single quote marks from being interpreted as bold markup
seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote
seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote
if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text'
seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup
elseif '' ~= seg[1] then
seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup
elseif '' ~= seg[3] then
seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup
else
seg[2] = source -- when there is no markup
end
seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table
seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table
return table.concat (seg); -- put it all back together and done
end
--[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------
validates |italic= or |italics= assigned values.
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,
for the special case 'default', return nil.
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.
When both |italic= and |italics= are set, returns nil and a 'conflicting' error message.
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's
defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on
the individual template's requirements, 'italic' for {{transl}}) or to the value appropriate to |script=, if set ({{lang}}
and {{lang-xx}} only).
Accepted values and the values that this function returns are are:
nil - when |italic= absent or not set; returns nil
default - for completeness, should rarely if ever be used; returns nil
yes - force args.text to be rendered in italic font; returns 'italic'
no - force args.text to be rendered in normal font; returns 'normal'
unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit'
invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert'
]]
local function validate_italic (args)
local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil};
local count = 0
for _, arg in pairs {'italic', 'italics', 'i'} do
if args[arg] then
count = count + 1
end
end
if count > 1 then -- return nil and an error message if more than one is set
return nil, 'only one of |italic=, |italics=, or |i= can be specified';
end
return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message
end
--[=[--------------------------< V A L I D A T E _ C A T _ A R G S >----------------------------------------------------------
Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace.
This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters
to control categorization.
Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative
values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the
parameter is treated as if it were not set in the template.
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.
Accepted values for |nocat= are the text strings:
'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else
for |cat=
'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else
]=]
local function validate_cat_args (args)
if not (args.nocat or args.cat) then -- both are nil, so categorize
return;
end
if false == yesno (args.cat) or true == yesno (args.nocat) then
args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)
else -- args.nocat is the parameter actually used.
args.nocat = nil;
end
end
--[[--------------------------< I N _ A R R A Y >--------------------------------------------------------------
Whether needle is in haystack
]]
local function in_array ( needle, haystack )
if needle == nil then
return false;
end
for n,v in ipairs( haystack ) do
if v == needle then
return n;
end
end
return false;
end
--[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------
prettify ietf tags to use recommended subtag formats:
code: lower case
script: sentence case
region: upper case
variant: lower case
private: lower case prefixed with -x-
]]
local function format_ietf_tag (code, script, region, variant, private)
local out = {};
if is_set (private) then
return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored
end
table.insert (out, code:lower());
if is_set (script) then
script = script:lower():gsub ('^%a', string.upper);
table.insert (out, script);
end
if is_set (region) then
table.insert (out, region:upper());
end
if is_set (variant) then
table.insert (out, variant:lower());
end
return table.concat (out, '-');
end
--[[--------------------------< G E T _ I E T F _ P A R T S >--------------------------------------------------
extracts and returns IETF language tag parts:
primary language subtag (required) - 2 or 3 character IANA language code
script subtag - four character IANA script code
region subtag - two-letter or three digit IANA region code
variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported
private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag
in any one of these forms
lang lang-variant
lang-script lang-script-variant
lang-region lang-region-variant
lang-script-region lang-script-region-variant
lang-x-private
each of lang, script, region, variant, and private, when used, must be valid
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding
the synonymous three-character codes in the lang= attribute.
For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}
because those parameters are superfluous to the IETF subtags in |code=)
returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1
]]
local function get_ietf_parts (source, args_script, args_region, args_variant)
local code, script, region, variant, private; -- ietf tag parts
if not is_set (source) then
return nil, nil, nil, nil, nil, 'missing language tag';
end
local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits)
{'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits)
{'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters)
{'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR
{'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits)
{'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss
{'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR
{'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits)
{'^(%a%a%a?)$'}, -- 18 - ll
{'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters)
}
local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables
for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match
local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here
c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i])
if c1 then -- c1 always set on match
code = c1; -- first capture is always code
t = {
[pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures
[pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures
[pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table
};
script = t.s or ''; -- translate table contents to named variables;
region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation
variant= t.v or '';
private = t.p or '';
break; -- and done
end
end
if not code then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed
end
code = code:lower(); -- ensure that we use and return lower case version of this
if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then
return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?)
end
if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym
table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]}));
code = synonym_table[code]; -- use the synonym
end
if is_set (script) then
if is_set (args_script) then
return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed
end
else
script = args_script or ''; -- use args.script if provided
end
if is_set (script) then
script = script:lower(); -- ensure that we use and return lower case version of this
if not script_table[script] then
return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?)
end
end
if suppressed_table[script] then -- ensure that code-script does not use a suppressed script
if in_array (code, suppressed_table[script]) then
return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code
end
end
if is_set (region) then
if is_set (args_region) then
return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed
end
else
region = args_region or ''; -- use args.region if provided
end
if is_set (region) then
region = region:lower(); -- ensure that we use and return lower case version of this
if not region_table[region] then
return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code});
end
end
if is_set (variant) then
if is_set (args_variant) then
return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed
end
else
variant = args_variant or ''; -- use args.variant if provided
end
if is_set (variant) then
variant = variant:lower(); -- ensure that we use and return lower case version of this
if not variant_table[variant] then -- make sure variant is valid
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant});
end -- does this duplicate/replace tests in lang() and lang_xx()?
if is_set (script) then -- if script set it must be part of the 'prefix'
if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script});
end
elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound)
if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred)
if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound)
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region});
end
end
else
if not in_array (code, variant_table[variant]['prefixes']) then
return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code});
end
end
end
if is_set (private) then
private = private:lower(); -- ensure that we use and return lower case version of this
if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index
return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private});
end
end
return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil
end
--[[--------------------------< M A K E _ E R R O R _ M S G >--------------------------------------------------
assembles an error message from template name, message text, help link, and error category.
]]
local function make_error_msg (msg, args, template)
local out = {};
local category;
if 'Transl' == template then
category = 'Transl';
else
category = 'Lang and lang-xx'
end
table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available
table.insert (out, table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: {{', template, '}}: '}));
table.insert (out, msg);
table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'}));
table.insert (out, '</span>');
if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages)
table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'}));
end
return table.concat (out);
end
--[=[-------------------------< M A K E _ W I K I L I N K >----------------------------------------------------
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an
empty string.
]=]
local function make_wikilink (link, display)
if is_set (link) then
if is_set (display) then
return table.concat ({'[[', link, '|', display, ']]'});
else
return table.concat ({'[[', link, ']]'});
end
else
return '';
end
end
--[[--------------------------< D I V _ M A R K U P _ A D D >--------------------------------------------------
adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported
]]
local function div_markup_add (text, style)
local implied_p = {};
if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text
if 'italic' == style then
return mw.ustring.gsub (text, '(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item
else
return text;
end
end
if text:find ('\n+') then -- look for any number of \n characters in text
text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki
if 'italic' == style then
text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences)
else
text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p
text = text:gsub ('\n', ''); -- strip newline characters
end
end
return text;
end
--[[--------------------------< M A K E _ T E X T _ H T M L >--------------------------------------------------
Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or
<div> tags for block content
]]
local function make_text_html (code, text, tag, rtl, style, size, language)
local html = {};
local style_added = '';
if text:match ('^%*') then
table.insert (html, '*'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki
text = text:gsub ('^%*', ''); -- remove the splat from the text
end
if 'span' == tag then -- default html tag for inline content
if 'italic' == style then -- but if italic
tag = 'i'; -- change to <i> tags
end
else -- must be div so go
text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i>
end
table.insert (html, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag
table.insert (html, table.concat ({' lang="', code, '\"'})); -- add language attribute
if rtl or unicode.is_rtl(text) then
table.insert (html, ' dir="rtl"'); -- add direction attribute for right to left languages
end
if 'normal' == style then -- when |italic=no
table.insert (html, ' style=\"font-style: normal;'); -- override external markup, if any
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
if is_set (size) then -- when |size=<something>
if is_set (style_added) then
table.insert (html, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted
else
table.insert (html, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute
style_added = '\"'; -- remember that style attribute added and is not yet closed
end
end
if is_set (language) then
table.insert (html, table.concat ({style_added, ' title=\"', language})); --start the title text
if language:find ('languages') then
table.insert (html, ' collective text'); -- for collective languages
else
table.insert (html, '-språkleg tekst'); -- for individual languages
end
table.insert (html, '\">'); -- close the opening html tag
else
table.insert (html, table.concat ({style_added, '>'})); -- close the style attribute and close opening html tag
end
table.insert (html, text); -- insert the text
table.insert (html, table.concat ({'</', tag, '>'})); -- close the <i>, <span>, or <div> html tag
if rtl then -- legacy; shouldn't be necessary because all of the rtl text is wrapped inside an html tag with dir="rtl" attribute
table.insert (html, '‎'); -- make sure the browser knows that we're at the end of the rtl
end
return table.concat (html); -- put it all together and done
end
--[=[-------------------------< M A K E _ C A T E G O R Y >----------------------------------------------------
For individual language, <language>, returns:
[[Category:Articles containing <language>-language text]]
for English:
[[Category:Articles containing explicitly cited English-language text]]
for ISO 639-2 collective languages (and for 639-1 bh):
[[Category:Articles with text in <language> languages]]
]=]
local function make_category (code, language_name, nocat, name_get)
local cat = {};
local retval;
if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space
return ''; -- return empty string for concatenation
end
if language_name:find ('languages') then
return table.concat ({'[[Kategori:Artiklar med tekst på ', language_name, ']]'});
end
table.insert (cat, '[[Kategori:Artiklar med tekst på ');
if 'nn' == code then
table.insert (cat, 'markert ' .. language_name); -- falls back to English if regional name not available
else
table.insert (cat, language_name);
end
table.insert (cat, ']]');
return table.concat (cat);
end
--[[--------------------------< M A K E _ T R A N S L I T >----------------------------------------------------
return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string
The value |script= is not used in {{transl}} for this purpose; instead it uses |code. Because language scripts
are listed in the {{transl}} switches they are included in the data tables. The script parameter is introduced
at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code.
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed
to be |translit-script= (in this function, tscript)
This function is used by both lang_xx() and transl()
lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style
transl() always provides language_name, translit, and one of code or tscript, never both; always provides style
For {{transl}}, style only applies when a language code is provided
]]
local function make_translit (code, language_name, translit, std, tscript, style)
local title;
local tout = {};
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})
if not style then -- nil for the default italic style
table.insert (tout, "<i lang=\""); -- so use <i> tag
else
table.insert (tout, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it
end
table.insert (tout, code);
table.insert (tout, "-Latn\" title=\""); -- transliterations are always Latin script
else
table.insert (tout, "<span title=\""); -- when no language code: no lang= attribute, not italic ({{transl}} only)
end
std = std and std:lower(); -- lower case for table indexing
if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified
table.insert (tout, language_name); -- write a generic tool tip
if not language_name:find ('språk') then -- collective language names (plural 'languages' is part of the name)
table.insert (tout, '-language') -- skip this text (individual and macro languages only)
end
table.insert (tout, ' romanisering'); -- finish the tool tip; use romanization when neither script nor standard supplied
elseif is_set (std) and is_set (tscript) then -- when both are specified
if title_table[std] then -- and if standard is legitimate
if title_table[std][tscript] then -- and if script for that standard is legitimate
table.insert (tout, table.concat ({title_table[std][tscript:lower()], ' (', script_table[tscript][1], ' script) transliteration'})); -- add the appropriate text to the tool tip
else
table.insert (tout, title_table[std]['default']); -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?
end
else
return ''; -- invalid standard, setup for error message
end
elseif is_set (std) then -- translit-script not set, use language code
if not title_table[std] then return ''; end -- invalid standard, setup for error message
if title_table[std][code] then -- if language code is in the table (transl may not provide a language code)
-- table.insert (tout, table.concat ({title_table[std][code:lower()], ' (', lang_table[code][1], ' language) transliteration'})); -- add the appropriate text to the tool tip
table.insert (tout, table.concat ({title_table[std][code:lower()], ' (', language_name, ' language) transliteration'})); -- add the appropriate text to the tool tip
else -- code doesn't match
table.insert (tout, title_table[std]['default']); -- so use the standard's default
end
else -- here if translit-script set but translit-std not set
if title_table['no_std'][tscript] then
table.insert (tout, title_table['no_std'][tscript]); -- use translit-script if set
elseif title_table['no_std'][code] then
table.insert (tout, title_table['no_std'][code]); -- use language code
else
if is_set (tscript) then
table.insert (tout, table.concat ({language_name, '-script transliteration'})); -- write a script tool tip
elseif is_set (code) then
if not language_name:find ('languages') then -- collective language names (plural 'languages' is part of the name)
table.insert (tout, '-language') -- skip this text (individual and macro languages only)
end
table.insert (tout, ' transliteration'); -- finish the tool tip
else
table.insert (tout, ' transliteration'); -- generic tool tip (can we ever get here?)
end
end
end
table.insert (tout, '">');
table.insert (tout, translit);
if is_set (code) and not style then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}})
table.insert (tout, "</i>"); -- close the italic tag
else
table.insert (tout, "</span>"); -- no language code so close the span tag
end
return table.concat (tout);
end
--[[--------------------------< V A L I D A T E _ T E X T >----------------------------------------------------
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an
error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text
either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert.
]]
local function validate_text (template, args)
if not is_set (args.text) then
return make_error_msg ('no text', args, template);
end
if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes
return make_error_msg ('text has malformed markup', args, template);
end
local style = args.italic;
if ('unset' ~= style) and ('invert' ~=style) then
if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic
return make_error_msg ('text has italic markup', args, template);
end
end
end
--[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------
render mainenance messages and categories
]]
local function render_maint(nocat)
local maint = {};
if 0 < #maint_msgs then -- when there are maintenance messages
table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag
for _, msg in ipairs (maint_msgs) do
table.insert (maint, table.concat ({msg, ' '})); -- add message strings
end
table.insert (maint, '</span>'); -- close the span
end
if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only
for _, cat in ipairs (maint_cats) do
table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories
end
end
return table.concat (maint);
end
--[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------
for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat
will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we
do nothing
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac
]]
local function proto_prefix (text, language_name, proto_param)
if false == proto_param then -- when forced by |proto=no
return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text
elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes
return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats
end
return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat
end
--[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------
looks for a poem strip marker in text; returns true when found; false else
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know
the content that will replace the stripmarker.
]]
local function has_poem_tag (text)
return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false;
end
--[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------
Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text.
If text contains:
\n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return
If text begins with list markup:
\n* unordered
\n; definition
\n: definition
\n# ordered
trim all leading whitespace except \n and trim all trailing whitespace
If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because
the stripmarker is replaced with text wrapped in <div>..</div> tags.
]]
local function html_tag_select (text)
local tag;
if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that)
tag = 'div'; -- poem replacement is in div tags so lang must use div tags
elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags
text = mw.text.trim (text); -- trim leading and trailing whitespace characters
tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags
elseif text:find ('\n[%*:;%#]') then -- if text has list markup
text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n'
tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)
else
text = mw.text.trim (text); -- plain text
tag = 'span'; -- so span is fine
end
return text, tag;
end
--[[--------------------------< V A L I D A T E _ P R O T O >--------------------------------------------------
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of
true indicating that some other value has been assigned to |proto=
]]
local function validate_proto (proto_param)
if 'yes' == proto_param then
return true;
elseif 'no' == proto_param then
return false;
elseif is_set (proto_param) then
return nil, true; -- |proto= something other than 'yes' or 'no'
else
return nil; -- missing or empty
end
end
--[[--------------------------< L A N G U A G E _ N A M E _ G E T >--------------------------------------------
common function to return language name from the data set according to IETF tag
returns language name if found in data tables; nil else
]]
local function language_name_get (ietf, code, cat)
ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case
local name; -- remains nil if not found
if override_table[ietf] then -- look for whole IETF tag in override table
name = override_table[ietf][1];
elseif override_table[code] then -- not there so try basic language code
name = override_table[code][1];
elseif lang_table[code] then -- shift to iana code/name table
name = lang_table[code][1]; -- table entries sometimes have multiple names, always take the first one
elseif lang_dep_table[code] then
-- if cat then
-- table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
-- table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
-- end
name = lang_dep_table[code][1]; -- table entries sometimes have multiple names, always take the first one
end
if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name
table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code}));
table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'}));
end
return name; -- name from data tables or nil
end
--[[--------------------------< _ L A N G >--------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function _lang (args)
local out = {};
local language_name; -- used to make category names
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, variant, and private
local code; -- the language code
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang';
validate_cat_args (args); -- determine if categorization should be suppressed
if args[1] and args.code then
return make_error_msg ('conflicting: {{{1}}} and |code=', args, template);
else
args.code = args[1] or args.code; -- prefer args.code
end
if args[2] and args.text then
return make_error_msg ('conflicting: {{{2}}} and |text=', args, template);
else
args.text = args[2] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set
if is_set (msg) then -- msg is an already-formatted error message
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})
if msg then
return make_error_msg ( msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls
if ('latn' == subtags.script) or -- script is latn
(this_wiki_lang ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics)
args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic
else
args.italic = 'inherit'; -- italic not set; script not latn; inherit current style
end
end
if is_set (subtags.script) then -- if script set, override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));
table.insert (out, make_category (code, language_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G >----------------------------------------------------------------------
entry point for {{lang}}
there should be no reason to set parameters in the {{lang}} {{#invoke:}}
<includeonly>{{#invoke:lang|lang}}</includeonly>
parameters are received from the template's frame (parent frame)
]]
local function lang (frame)
local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text
valueFunc = function (key, value)
if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return _lang (args);
end
--[[--------------------------< L A N G _ X X >----------------------------------------------------------------
For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All
other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages
that can have multiple writing systems, it may be appropriate to set |script= as well.
For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default
styling that should be applied to text.
For normal, upright style:
<includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly>
For italic style:
<includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly>
All other parameters should be received from the template's frame (parent frame)
Supported parameters are:
|code = (required) the IANA language code
|script = IANA script code; especially for use with languages that use multiple writing systems
|region = IANA region code
|variant = IANA variant code
|text = (required) the displayed text in language specified by code
|link = boolean false ('no') does not link code-spcified language name to associated language article
|rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language
|nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected
|cat = boolian false ('no') opposite form of |nocat=
|italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state
|lit = text that is a literal translation of text
|label = 'none' to suppress all labeling (language name, 'translit.', 'lit.')
any other text replaces language-name label - automatic wikilinking disabled
for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script):
|translit = text that is a transliteration of text
|translit-std = the standard that applies to the transliteration
|translit-script = ISO 15924 script name; falls back to code
For {{lang-xx}}, the positional parameters are:
{{{1}}} text
{{{2}}} transliterated text
{{{3}}} literal translation text
no other positional parameters are allowed
]]
local function _lang_xx (args)
local out = {};
local language_name; -- used to make display text, article links
local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set
local subtags = {}; -- IETF subtags script, region, and variant
local code; -- the language code
local translit_script_name; -- name associated with IANA (ISO 15924) script code
local translit;
local translit_title;
local msg; -- for error messages
local tag = 'span'; -- initial value for make_text_html()
local template = args.template or 'Lang-xx';
if args[1] and args.text then
return make_error_msg ('conflicting: {{{1}}} and |text=', args, template);
else
args.text = args[1] or args.text; -- prefer args.text
end
msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding
if is_set (msg) then
return msg;
end
args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly
if args[2] and args.translit then
return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template);
else
args.translit = args[2] or args.translit -- prefer args.translit
end
if args[3] and (args.translation or args.lit) then
return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template);
elseif args.translation and args.lit then
return make_error_msg ('conflicting: |lit= and |translation=', args, template);
else
args.translation = args[3] or args.translation or args.lit; -- prefer args.translation
end
if args.links and args.link then
return make_error_msg ('conflicting: |links= and |link=', args, template);
else
args.link = args.link or args.links; -- prefer args.link
end
validate_cat_args (args); -- determine if categorization should be suppressed
args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private
if msg then -- if an error detected then there is an error message
return make_error_msg (msg, args, template);
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, template);
end
if nil == args.italic then -- args.italic controls
if is_set (subtags.script) then
if 'latn' == subtags.script then
args.italic = 'italic'; -- |script=Latn; set for font-style:italic
else
args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state>
end
else
args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state>
end
end
if is_set (subtags.script) then -- if script set override rtl setting
if in_array (subtags.script, lang_data.rtl_scripts) then
args.rtl = true; -- script is an rtl script
else
args.rtl = false; -- script is not an rtl script
end
end
args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag
if msg then
return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template);
end
args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles
language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any)
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if args.label then
if 'none' ~= args.label then
table.insert (out, table.concat ({args.label, ': '})); -- custom label
end
else
if 'no' == args.link then
table.insert (out, language_name); -- language name without wikilink
else
if language_name:find ('languages') then
table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
table.insert (out, make_wikilink (lang_data.article_name[code][1], language_name)); -- language name with wikilink from override data
else
table.insert (out, make_wikilink (language_name .. '', language_name)); -- language name with wikilink
end
end
table.insert (out, ' '); -- separator
end
if 'invert' == args.italic then
args.text = invert_italics (args.text)
end
args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat
table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, nil))
if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test)
table.insert (out, ', '); -- comma to separate text from translit
if 'none' ~= args.label then
table.insert (out, '');
if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name
translit_script_name = script_table[args['translit-script'][1]];
else
translit_script_name = language_name; -- fall back on language name
end
translit_title = mw.title.makeTitle (0, table.concat ({'Romanisering av ', translit_script_name})); -- make a title object
if translit_title.exists and ('no' ~= args.link) then
table.insert (out, make_wikilink ('Romanisering av ' .. translit_script_name or language_name, 'romanisert') .. ':'); -- make a wikilink if there is an article to link to
else
table.insert (out, 'romanisert'); -- else plain text
end
table.insert (out, ' '); -- close the small tag
end
translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script'])
if is_set (translit) then
table.insert (out, translit);
else
return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template);
end
end
if is_set (args.translation) then -- translation (not supported in {{lang}})
table.insert (out, ', ');
if 'none' ~= args.label then
table.insert (out, '<small>');
if 'no' == args.link then
table.insert (out, '<abbr title="bokstaveleg tyding">bokst.</abbr>');
else
table.insert (out, make_wikilink ('Bokstaveleg tyding', 'bokst.'));
end
table.insert (out, " </small>");
end
table.insert (out, table.concat ({''', args.translation, '''})); -- use html entities to avoid wiki markup confusion
end
table.insert (out, make_category (code, category_name, args.nocat));
table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories
return table.concat (out); -- put it all together and done
end
--[[--------------------------< L A N G _ X X _ A R G S _ G E T >----------------------------------------------
common function to get args table from {{lang-??}} templates
returns table of args
]]
local function lang_xx_args_get (frame)
local args = getArgs(frame,
{
parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}}
valueFunc = function (key, value)
if 1 == key then -- the 'text' parameter; do not trim wite space
return value; -- return untrimmed 'text'
elseif value then -- all other values: if the value is not nil
value = mw.text.trim (value); -- trim whitespace
if '' ~= value then -- empty string when value was only whitespace
return value;
end
end
return nil; -- value was empty or contained only whitespace
end -- end of valueFunc
});
return args;
end
--[[--------------------------< L A N G _ X X _ I T A L I C >--------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic.
]]
local function lang_xx_italic (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------
Entry point ffrom another module. Sets the initial style state to italic.
]]
local function _lang_xx_italic (args)
initial_style_state = 'italic';
return _lang_xx (args);
end
--[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------
Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit.
]]
local function lang_xx_inherit (frame)
local args = lang_xx_args_get (frame);
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ L A N G _ X X _ I N H E R I T >----------------------------------------------
Entry point from another module. Sets the initial style state to inherit.
]]
local function _lang_xx_inherit (args)
initial_style_state = 'inherit';
return _lang_xx (args);
end
--[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------
Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _is_ietf_tag (tag) -- entry point when this module is require()d into another
local c, s, r, v, p, err; -- code, script, region, variant, private, error message
c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate
return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else
end
--[[--------------------------< I S _ I E T F _ T A G >--------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_ietf_tag (frame)
return _is_ietf_tag (getArgs(frame)[1]); -- args[1] is the ietf language tag to be tested; getArgs() so we also get parent frame
end
--[[--------------------------< _ N A M E _ F R O M _ T A G >--------------------------------------------------
Returns language name associated with IETF language tag if valid; error message else.
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Set invoke's |link= parameter to yes to get wikilinked version of the language name.
Module entry point from another module
]]
local function _name_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local language_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them
if link then -- when |link=yes, wikilink the language name
if language_name:find ('languages') then
language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink
elseif lang_data.article_name[code] then
language_name = make_wikilink (lang_data.article_name[code][1], label or language_name); -- language name with wikilink from override data
else
language_name = make_wikilink (language_name .. '', label or language_name); -- language name with wikilink
end
end
return language_name;
end
--[[--------------------------< N A M E _ F R O M _ T A G >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}}
return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< _ T A G _ F R O M _ N A M E >--------------------------------------------------
Returns the ietf language tag associated with the language name. Spelling of language name must be correct
according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator,
that disambiguator must be omitted (they are not present in the data name-to-tag tables).
Module entry point from another module
]]
local function _tag_from_name (args) -- entry point from another module
local msg;
if args[1] and '' ~= args[1] then
local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live
local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct)
local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard
if tag then
return tag, true; -- language name found so return tag and done; second return used by is_lang_name()
else
msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message
end
else
msg = 'missing language name' -- language name not provided, error message
end
local template = '';
if args.template and '' ~= args.template then
template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template)
end
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
--[[--------------------------< T A G _ F R O M _ N A M E >----------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}}
local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()
return result;
end
--[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function is_lang_name (frame)
local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()
return result and true or nil;
end
--[[--------------------------< _ T R A N S L >----------------------------------------------------------------
Module entry point from another module
]]
local function _transl (args)
local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards
local language_name; -- language name that matches language code; used for tool tip
local translit; -- translitterated text to display
local script; -- IANA script
local msg; -- for when called functions return an error message
if is_set (args[3]) then -- [3] set when {{transl|code|standard|text}}
args.text = args[3]; -- get the transliterated text
args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing
if not title_table[args.translit_std] then
return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transl');
end
else
if is_set (args[2]) then -- [2] set when {{transl|code|text}}
args.text = args[2]; -- get the transliterated text
else
if args[1] and args[1]:match ('^%a%a%a?%a?$') then -- args[2] missing; is args[1] a code or its it the transliterated text?
return make_error_msg ('no text', args, 'Transl'); -- args[1] is a code so we're missing text
else
args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message
return make_error_msg ('missing language / script code', args, 'Transl');
end
end
end
if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code
if args[1]:match ('^%a%a%a?%a?$') then -- args[1] has correct form?
args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters); lower case because table indexes are lower case
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transl'); -- invalid language / script code
end
else
return make_error_msg ('missing language / script code', args, 'Transl'); -- missing language / script code so quit
end
args.italic, msg = validate_italic (args);
if msg then
return make_error_msg (msg, args, 'Transl');
end
if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default
args.italic = nil; -- set to nil;
end
if override_table[args.code] then -- is code a language code defined in the override table?
language_name = override_table[args.code][1];
elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables?
language_name = lang_table[args.code][1];
elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables?
language_name = lang_dep_table[args.code][1];
elseif script_table[args.code] then -- if here, code is not a language code; is it a script code?
language_name = script_table[args.code][1];
script = args.code; -- code was an ISO 15924 script so use that instead
args.code = ''; -- unset because not a language code
else
return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transl'); -- invalid language / script code
end
-- here only when all parameters passed to make_translit() are valid
return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic);
end
--[[--------------------------< T R A N S L >------------------------------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function transl (frame)
return _transl (getArgs(frame));
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Returns category name associated with IETF language tag if valid; error message else
All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function.
Module entry point from another module
]]
local function _category_from_tag (args)
local subtags = {}; -- IETF subtags script, region, variant, and private
local raw_code = args[1]; -- save a copy of the input IETF subtag
local link = 'yes' == args['link']; -- make a boolean
local label = args.label;
local code; -- the language code
local msg; -- gets an error message if IETF language tag is malformed or invalid
local category_name = '';
code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);
if msg then
local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template)
return table.concat ({'<span style=\"font-size: 100%; font-style: normal;\" class=\"error\">Error: ', template, msg, '</span>'});
end
raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private
category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant
category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', '');
return category_name;
end
--[[--------------------------< C A T E G O R Y _ F R O M _ T A G >--------------------------------------------
Module entry point from an {{#invoke:}}
]]
local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}}
return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame
end
--[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------
]]
return {
category_from_tag = category_from_tag,
lang = lang, -- entry point for {{lang}}
lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}}
lang_xx_italic = lang_xx_italic,
is_ietf_tag = is_ietf_tag,
is_lang_name = is_lang_name,
tag_from_name = tag_from_name, -- returns ietf tag associated with language name
name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates
transl = transl, -- entry point for {{transl}}
_category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules
_lang = _lang,
_lang_xx_inherit = _lang_xx_inherit,
_lang_xx_italic = _lang_xx_italic,
_is_ietf_tag = _is_ietf_tag,
get_ietf_parts = get_ietf_parts,
_tag_from_name = _tag_from_name,
_name_from_tag = _name_from_tag,
_transl = _transl,
};
lfo9jdwqxcnpg1qio4e7rtzdsepqmf2
Nehoiu
0
403754
3650927
3507581
2026-04-19T11:01:02Z
HerVal7752
105842
Geoboks
3650927
wikitext
text/x-wiki
{{geoboks|by
|bilete = Ro bz nehoiu entrance.jpg
|bilettekst = Utsyn mot Nehoiu
|våpen = ROU BZ Nehoiu CoA.jpg
|fylke = [[Buzău fylke|Buzău]]
|borgarmeister = Ionuț Milea
|høgd = 450
}}
'''Nehoiu''' er ein by i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Nehoiu jud Buzau.png|mini|Kommunen Nehoiu innanfor Buzău fylke]]
Nehoiu er ein ''[[oraș]]'' (mindre bykommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Nehoiu || 4 797 || 4 324
|-
| style=text-align:left; | {{ikkjeraud|Bâsca Rozilei}} || 1 277 || 1 166
|-
| style=text-align:left; | {{ikkjeraud|Chirlești}} || 496 || 704
|-
| style=text-align:left; | {{ikkjeraud|Curmătura}} || 188 || 125
|-
| style=text-align:left; | {{ikkjeraud|Lunca Priporului}} || 1 150 || 1 184
|-
| style=text-align:left; | {{ikkjeraud|Mlăjet}} || 841 || 801
|-
| style=text-align:left; | {{ikkjeraud|Nehoiașu}} || 267 || 317
|-
| style=text-align:left; | {{ikkjeraud|Păltineni}} || 1 031 || 693
|-
| style=text-align:left; | {{ikkjeraud|Stănila}} || 18 || 9
|-
| style=text-align:left; | {{ikkjeraud|Vinețișu}} || 146 || 141
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 12. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro: Nehoiu|Nehoiu]]» frå {{Wikipedia-utgåve|ro}}, den 12. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Oraș i Buzău fylke|Nehoiu]]
i8ikwsak62be17g92thx472yk51fom4
Pogoanele
0
403765
3650928
3507583
2026-04-19T11:01:50Z
HerVal7752
105842
Geoboks
3650928
wikitext
text/x-wiki
{{geoboks|by
|bilete = RO BZ Pogoanele town hall.jpg
|bilettekst = Rådhuset i Pogoanele
|fylke = [[Buzău fylke|Buzău]]
|borgarmeister = Florin Dumitrașcu
|høgd = 63
}}
'''Pogoanele''', tidlegare òg '''Țuguiatu-Pământeni''', er ein by i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Pogoanele jud Buzau.png|mini|Kommunen Pogoanele innanfor Buzău fylke]]
Pogoanele er ein ''[[oraș]]'' (mindre bykommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Pogoanele || 5 280 || 4 749
|-
| style=text-align:left; | {{ikkjeraud|Căldărăști}} || 1 995 || 1 635
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 12. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro: Pogoanele|Pogoanele]]» frå {{Wikipedia-utgåve|ro}}, den 12. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Oraș i Buzău fylke|Pogoanele]]
epv9z7y4j6qnz1m9fll5uicd2bw3p91
Pătârlagele
0
403766
3650929
3512225
2026-04-19T11:02:45Z
HerVal7752
105842
Geoboks
3650929
wikitext
text/x-wiki
{{geoboks|by
|bilete = Ro bz patarlagele judecatorie.jpg
|bilettekst = Tinghuset i Pătârlagele
|fylke = [[Buzău fylke|Buzău]]
|borgarmeister = Ion Gherghiceanu
|postnummer = 127430
}}
'''Pătârlagele''', tidlegare '''Pătârlagi''', er ein by i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Patarlagele jud Buzau.png|mini|Kommunen Pătârlagele innanfor Buzău fylke]]
Pătârlagele er ein ''[[oraș]]'' (mindre bykommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Pătârlagele || 2 240 || 2 004
|-
| style=text-align:left; | {{ikkjeraud|Calea Chiojdului}} || 25 || 34
|-
| style=text-align:left; | {{ikkjeraud|Crâng}} || 567 || 520
|-
| style=text-align:left; | {{ikkjeraud|Fundăturile}} || 246 || 169
|-
| style=text-align:left; | {{ikkjeraud|Gornet}} || 14 || 6
|-
| style=text-align:left; | {{ikkjeraud|Lunca}} || 423 || 266
|-
| style=text-align:left; | {{ikkjeraud|Mănăstirea}} || 102 || 57
|-
| style=text-align:left; | {{ikkjeraud|Mărunțișu}} || 1 006 || 897
|-
| style=text-align:left; | {{ikkjeraud|Mușcel}} || 492 || 431
|-
| style=text-align:left; | {{ikkjeraud|Poienile}} || 280 || 223
|-
| style=text-align:left; | {{ikkjeraud|Sibiciu de Sus}} || 813 || 744
|-
| style=text-align:left; | {{ikkjeraud|Stroești}} || 127 || 10
|-
| style=text-align:left; | {{ikkjeraud|Valea Lupului i Pătârlagele|Valea Lupului}} || 447 || 377
|-
| style=text-align:left; | {{ikkjeraud|Valea Sibiciului}} || 225 || 193
|-
| style=text-align:left; | {{ikkjeraud|Valea Viei}} || 297 || 345
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 12. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Pătârlagele|Pătârlagele]]» frå {{Wikipedia-utgåve|ro}}, den 12. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Oraș i Buzău fylke|Patarlagele]]
05j9xjmij895brolslufxzntz3hpxpd
Vadu Pașii
0
403767
3650930
3507596
2026-04-19T11:03:34Z
HerVal7752
105842
Geoboks
3650930
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|borgarmeister = Gheorghe Firon
|høgd = 105
|postnummer = 127650
}}
'''Vadu Pașii''', tidlegare '''Scurtești''', er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Vadu Pasii jud Buzau.png|mini|Kommunen Vadu Pașii innanfor Buzău fylke]]
Vadu Pașii er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Vadu Pașii || 3 094 || 3 062
|-
| style=text-align:left; | {{ikkjeraud|Băjani}} || 711 || 849
|-
| style=text-align:left; | {{ikkjeraud|Focșănei}} || 780 || 1 043
|-
| style=text-align:left; | {{ikkjeraud|Gura Câlnăului}} || 598 || 713
|-
| style=text-align:left; | {{ikkjeraud|Scurtești}} || 2 624 || 2 614
|-
| style=text-align:left; | {{ikkjeraud|Stăncești}} || 1 504 || 1 445
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 12. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Vadu Pașii, Buzău|Comuna Vadu Pașii, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 12. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Vadu Pasii]]
mw41sxp3m0dgglnsyi7swy71i76rs94
Vernești
0
403798
3650931
3507601
2026-04-19T11:04:24Z
HerVal7752
105842
Geoboks
3650931
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|borgarmeister = Daniel Năstase
|høgd = 122
|postnummer = 127675
}}
'''Vernești''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Vernesti jud Buzau.png|mini|Kommunen Vernești innanfor Buzău fylke]]
Vernești er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Vernești || 2 112 || 2 428
|-
| style=text-align:left; | {{ikkjeraud|Cândești}} || 3 154 || 3 281
|-
| style=text-align:left; | {{ikkjeraud|Cârlomănești}} || 177 || 144
|-
| style=text-align:left; | {{ikkjeraud|Mierea}} || 471 || 464
|-
| style=text-align:left; | {{ikkjeraud|Nenciu}} || 22 || 24
|-
| style=text-align:left; | {{ikkjeraud|Nișcov}} || 898 || 940
|-
| style=text-align:left; | {{ikkjeraud|Săsenii Noi}} || 308 || 308
|-
| style=text-align:left; | {{ikkjeraud|Săsenii pe Vale}} || 80 || 46
|-
| style=text-align:left; | {{ikkjeraud|Săsenii Vech}} || 164 || 165
|-
| style=text-align:left; | {{ikkjeraud| Zorești}} || 1 247 || 1 208
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Vernești, Buzău|Comuna Vernești, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Vernesti]]
jzybs4hfbfj9qc1x510hmzaa2xx6wsv
Berca
0
403799
3650932
3567121
2026-04-19T11:05:21Z
HerVal7752
105842
Geoboks
3650932
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|bilete = Mănăstirea Berca.jpg
|bilettekst = Klosterruinar i Berca
|borgarmeister = Ionel Dobrița
|høgd = 150
|postnummer = 127035
}}
'''Vernești''', tidlegare òg '''Pâclele''' eller '''Joseni''', er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Berca jud Buzau.png|mini|Kommunen Berca innanfor Buzău fylke]]
Berca er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Berca || 3 296 || 3 038
|-
| style=text-align:left; | {{ikkjeraud|Băceni}} || 110 || 74
|-
| style=text-align:left; | {{ikkjeraud|Cojanu}} || 126 || 128
|-
| style=text-align:left; | {{ikkjeraud|Joseni i Berca|Joseni}} || 864 || 808
|-
| style=text-align:left; | {{ikkjeraud|Mănăstirea Răteşti}} || 131 || 35
|-
| style=text-align:left; | {{ikkjeraud|Pâclele}} || 167 || 111
|-
| style=text-align:left; | {{ikkjeraud|Pleşcoi}} || 861 || 828
|-
| style=text-align:left; | {{ikkjeraud|Pleşeşti}} || 913 || 878
|-
| style=text-align:left; | {{ikkjeraud|Răteşti}} || 661 || 603
|-
| style=text-align:left; | {{ikkjeraud|Sătuc}} || 679 || 604
|-
| style=text-align:left; | {{ikkjeraud|Tâţârligu}} || 6 || 9
|-
| style=text-align:left; | {{ikkjeraud|Valea Nucului}} || 677 || 614
|-
| style=text-align:left; | {{ikkjeraud|Viforâta}} || 43 || 11
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Berca, Buzău|Comuna Berca, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Berca]]
bfanx0i8idmw399ucypve1dhx5lrbre
3650933
3650932
2026-04-19T11:06:19Z
HerVal7752
105842
3650933
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|bilete = Mănăstirea Berca.jpg
|bilettekst = Klosterruinar i Berca
|borgarmeister = Ionel Dobrița
|høgd = 150
|postnummer = 127035
}}
'''Berca''', tidlegare òg '''Pâclele''' eller '''Joseni''', er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Berca jud Buzau.png|mini|Kommunen Berca innanfor Buzău fylke]]
Berca er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Berca || 3 296 || 3 038
|-
| style=text-align:left; | {{ikkjeraud|Băceni}} || 110 || 74
|-
| style=text-align:left; | {{ikkjeraud|Cojanu}} || 126 || 128
|-
| style=text-align:left; | {{ikkjeraud|Joseni i Berca|Joseni}} || 864 || 808
|-
| style=text-align:left; | {{ikkjeraud|Mănăstirea Răteşti}} || 131 || 35
|-
| style=text-align:left; | {{ikkjeraud|Pâclele}} || 167 || 111
|-
| style=text-align:left; | {{ikkjeraud|Pleşcoi}} || 861 || 828
|-
| style=text-align:left; | {{ikkjeraud|Pleşeşti}} || 913 || 878
|-
| style=text-align:left; | {{ikkjeraud|Răteşti}} || 661 || 603
|-
| style=text-align:left; | {{ikkjeraud|Sătuc}} || 679 || 604
|-
| style=text-align:left; | {{ikkjeraud|Tâţârligu}} || 6 || 9
|-
| style=text-align:left; | {{ikkjeraud|Valea Nucului}} || 677 || 614
|-
| style=text-align:left; | {{ikkjeraud|Viforâta}} || 43 || 11
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Berca, Buzău|Comuna Berca, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Berca]]
1y9qeb5nd56hhymdeqhgidwaxc75pos
Mărăcineni i Buzău
0
403800
3650934
3507587
2026-04-19T11:07:26Z
HerVal7752
105842
Geoboks
3650934
wikitext
text/x-wiki
{{geoboks|kommune
|namn = Mărăcineni
|fylke = [[Buzău fylke|Buzău]]
|bilete = RO BZ Maracineni Albanopol mansion.jpg
|bilettekst = Politistasjon i Mărăcineni
|våpen = ROU BZ Maracineni CoA.png
|borgarmeister = Dumitru Constantin
|høgd = 100
|postnummer = 127320
}}
'''Mărăcineni''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Maracineni jud Buzau.png|mini|Kommunen Mărăcineni innanfor Buzău fylke]]
Mărăcineni er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Mărăcineni || 2 996 || 3 385
|-
| style=text-align:left; | {{ikkjeraud|Căpățânești}} || 3 296 || 4 054
|-
| style=text-align:left; | {{ikkjeraud|Potoceni}} || 1 987 || 2 214
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Mărăcineni, Buzău|Comuna Mărăcineni, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Maracineni]]
85775wyrqcmx842u2cpshjy0ky82ux1
Merei
0
403805
3650935
3507588
2026-04-19T11:08:24Z
HerVal7752
105842
Geoboks
3650935
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|bilete = RO BZ Merei town hall.jpg
|bilettekst = Rådhuset i Merei
|våpen = ROU BZ Merei CoA.png
|borgarmeister = Ștefan Chircă
|høgd = 141
|postnummer = 127355
}}
'''Merei''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Merei jud Buzau.png|mini|Kommunen Merei innanfor Buzău fylke]]
Merei er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Merei || 717 || 816
|-
| style=text-align:left; | {{ikkjeraud|Ciobănoaia}} || 144 || 152
|-
| style=text-align:left; | {{ikkjeraud|Dealul Viei}} || 820 || 795
|-
| style=text-align:left; | {{ikkjeraud|Dobrilești}} || 67 || 47
|-
| style=text-align:left; | {{ikkjeraud|Gura Sărății}} || 182 || 146
|-
| style=text-align:left; | {{ikkjeraud|Izvoru Dulce}} || 840 || 948
|-
| style=text-align:left; | {{ikkjeraud|Lipia}} || 1 974 || 1 928
|-
| style=text-align:left; | {{ikkjeraud|Nenciulești}} || 328 || 266
|-
| style=text-align:left; | {{ikkjeraud|Ogrăzile}} || 707 || 705
|-
| style=text-align:left; | {{ikkjeraud|Sărata-Monteoru}} || 839 || 916
|-
| style=text-align:left; | {{ikkjeraud|Valea Puțului Merei}} || 185 || 66
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Merei, Buzău|Comuna Merei, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Merei]]
8bpbdx354gjn3svfhfs8igd8ddpjndc
Smeeni
0
403808
3650936
3507593
2026-04-19T11:09:13Z
HerVal7752
105842
Geoboks
3650936
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|bilete = RO BZ Caltuna church 1.jpg
|bilettekst = Ortodoks kyrkje i Smeeni
|borgarmeister = Ion Andrei
|høgd = 73
|postnummer = 127595
}}
'''Smeeni''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Smeeni jud Buzau.png|mini|Kommunen Smeeni innanfor Buzău fylke]]
Smeeni er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Smeeni || 3 247 || 2 947
|-
| style=text-align:left; | {{ikkjeraud|Albești i Smeeni|Albești}} || 889 || 699
|-
| style=text-align:left; | {{ikkjeraud|Bălaia}} || 219 || 178
|-
| style=text-align:left; | {{ikkjeraud|Călțuna}} || 565 || 453
|-
| style=text-align:left; | {{ikkjeraud|Moisica}} || 359 || 294
|-
| style=text-align:left; | {{ikkjeraud|Udați-Lucieni}} || 389 || 385
|-
| style=text-align:left; | {{ikkjeraud|Udați-Mânzu}} || 981 || 850
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Smeeni, Buzău|Comuna Smeeni, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Smeeni]]
28on2zkk6xesam59mdptooqz10tia57
Poșta Câlnău
0
403821
3650937
3507592
2026-04-19T11:10:06Z
HerVal7752
105842
Geoboks
3650937
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|bilete = DN2 in Posta Calnau.jpg
|bilettekst = Riksveg 2 forbi Poșta Câlnău
|borgarmeister = Sorin Munteanu
|høgd = 141
|postnummer = 127485
}}
'''Poșta Câlnău''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Posta Calnau jud Buzau.png|mini|Kommunen Poșta Câlnău innanfor Buzău fylke]]
Poșta Câlnău er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Poșta Câlnău || 2 381 || 2 177
|-
| style=text-align:left; | {{ikkjeraud|Aliceni}} || 435 || 395
|-
| style=text-align:left; | {{ikkjeraud|Coconari}} || 509 || 526
|-
| style=text-align:left; | {{ikkjeraud|Potârnichești}} || 477 || 478
|-
| style=text-align:left; | {{ikkjeraud|Sudiți}} || 1 388 || 1 230
|-
| style=text-align:left; | {{ikkjeraud|Zilișteanca}} || 778 || 736
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Poșta Câlnău, Buzău|Comuna Poșta Câlnău, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Posta Calnau]]
jolmshc5ici5on2ft3eu7agl4le0nrx
Pârscov
0
403822
3650938
3509607
2026-04-19T11:10:54Z
HerVal7752
105842
Geoboks
3650938
wikitext
text/x-wiki
{{geoboks|kommune
|fylke = [[Buzău fylke|Buzău]]
|bilete = Parscov town hall.JPG
|bilettekst = Rådhuset i Pârscov
|borgarmeister = Daniel Mihai
|høgd = 182
|postnummer = 127450
}}
'''Pârscov''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Parscov jud Buzau.png|mini|Kommunen Pârscov innanfor Buzău fylke]]
Pârscov er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | Pârscov || 3 009 || 2 704
|-
| style=text-align:left; | {{ikkjeraud|Bădila}} || 820 || 723
|-
| style=text-align:left; | {{ikkjeraud|Curcănești}} || 132 || 108
|-
| style=text-align:left; | {{ikkjeraud|Lunca Frumoasă}} || 806 || 691
|-
| style=text-align:left; | {{ikkjeraud|Oleșești}} || 6 || –
|-
| style=text-align:left; | {{ikkjeraud|Pârjolești}} || 107 || 77
|-
| style=text-align:left; | {{ikkjeraud|Robești}} || 462 || 440
|-
| style=text-align:left; | {{ikkjeraud|Runcu i Pârscov|Runcu}} || 155 || 105
|-
| style=text-align:left; | {{ikkjeraud|Târcov}} || 20 || 15
|-
| style=text-align:left; | {{ikkjeraud|Tocileni}} || 103 || 70
|-
| style=text-align:left; | {{ikkjeraud|Trestieni}} || 27 || 14
|-
| style=text-align:left; | {{ikkjeraud|Valea Purcarului}} || 7 || 9
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Pârscov, Buzău|Comuna Pârscov, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Parscov]]
hcvextm6hikanm1l5ec87dezxbqcfdm
Zărnești i Buzău
0
403823
3650939
3507603
2026-04-19T11:11:50Z
HerVal7752
105842
Geoboks
3650939
wikitext
text/x-wiki
{{geoboks|kommune
|namn = Zărnești
|fylke = [[Buzău fylke|Buzău]]
|borgarmeister = Sorin Matei
|høgd = 178
|postnummer = 127715
}}
'''Zărnești''' er ein kommune i [[Buzău fylke]] i [[Romania]].
== Busetnader ==
[[Fil:Zarnesti jud Buzau.png|mini|Kommunen Zărnești innanfor Buzău fylke]]
Zărnești er ein ''[[comună]]'' (landkommune) med desse busetnadane:
{| class="wikitable"; style=text-align:right;
|-
! !! Folketal 2011<ref name="rpl2011"/> !! Folketal 2021<ref name="rpl2021"/>
|-
| style=text-align:left; | {{ikkjeraud|Fundeni i Zărnești|Fundeni}} || 2 475 || 2 141
|-
| style=text-align:left; | {{ikkjeraud|Pruneni}} || 434 || 345
|-
| style=text-align:left; | {{ikkjeraud|Vadu Sorești}} || 1 426 || 1 244
|-
| style=text-align:left; | Zărnești || 1 124 || 946
|}
== Kjelder ==
<references>
<ref name="rpl2011">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2021/11/rpl_2011_populatia-pe-categorii-de-localitati.xls
|tittel = Populatia stabila (rezidenta) pe judete, categorii de localitati, municipii, orase, comune si localitati componente ''(Stabil befolkning (busett) etter fylke, lokalitetskategoriar, municipiu, oraș, comună og komponentlokalitetar)''
|vitja = 13. februar 2023
|utgjevingsdato = 31. oktober 2011
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
}}</ref>
<ref name="rpl2021">{{Kjelde www
|url = https://www.recensamantromania.ro/wp-content/uploads/2023/05/Tabel-1.22.xlsx
|tittel = Populația rezidentă (Sexe, Județe, Municipii, orașe și comune*, Sate*) ''(Busett befolkning (kjønn, fylke, municipiu, oraș og comună, landsby))''
|vitja = 20. september 2023
|utgjevingsdato = 1. desember 2021
|utgjevar = Institutul Național de Statistică ''(Det nasjonale instituttet for statistikk)''
|sitat =
}}</ref>
<</references>
{{refopning}}
*''Delar av denne artikkelen bygger på «[[:ro:Comuna Zărnești, Buzău|Comuna Zărnești, Buzău]]» frå {{Wikipedia-utgåve|ro}}, den 13. februar 2023.''
{{refslutt}}
==Bakgrunnsstoff==
{{commonskat}}
*{{offisiell nettstad}}
{{spire|geografi|Romania}}
{{Autoritetsdata}}
[[Kategori:Comună i Buzău fylke|Zarnesti]]
41zrr6ayiphnwd93nignmdknuuyx4t3
Vesle arkana
0
410755
3650897
3504928
2026-04-19T04:13:35Z
CommonsDelinker
1379
[[c:COM:CDC|Bot]]: Erstattar Tarot_Nine_of_Wands.jpg med Wands09.jpg
3650897
wikitext
text/x-wiki
[[Fil:Swords14.jpg|mini|King of Swords-kortet frå Rider-Waite-kortstokken.]]
'''Vesle arkana''' (''Minor Arcana'') er [[Kortfarge|fargekorta]] i ein [[tarot]]-kortstokk som blir nytta til å [[Spådom|spå]] med.
Tarotkort dukka opp i Nord-Italia på 1440-talet og var utforma til å spela tarotkortspel med.<ref>{{Kjelde www|forfattar=Husband|førenamn=Tim|tittel=Before Fortune-Telling: The History and Structure of Tarot Cards|url=https://www.metmuseum.org/blogs/in-season/2016/tarot|utgjevar=The Met Museum|vitja=18 September 2022}}</ref> Dei har typisk fire fargar med ti uillustrerte talkort , i tillegg til 4 bildekort. Tarot-spel er framleis utbreidde i Sentral- og Sør-Europa, og fransk tarot er det andre mest populære kortspelet i Frankrike etter [[belote]].
Tarotkort ein kunne nytta til å spå med blei utbreidde i Frankrike på slutten av 1800-talet, nytta av okkultistar som [[Etteilla]]. Omgrepa «Major» og «Minor Arcana» stammar frå [[Jean-Baptiste Pitois]] (1811–1877), som skreiv under namnet Paul Christian.<ref name="DeckerDepaulisDummett">Ronald Decker, Thierry Depaulis, and Michael Dummett. ''A Wicked Pack of Cards. The Origins of the Occult Tarot''. New York. St. Martin's Press, 1996</ref>
I moderne versjonar av korta er den vesle arkanaen ofte illustrert, ein skikk som blei popularisert med Rider-Waite-korta i 1910. Korta i den vesle arkanaen blir brukte i tarotlesing saman med den [[Store arkana|store arkanaen]] til å føreslå detaljar og tillegg.<ref name="Tarot.com">{{Kjelde www|tittel=The Minor Arcana Tarot Cards|url=http://www.tarot.com/articles/tarot/about-tarot-cards-minor-arcana|utgjevar=Tarot.com|vitja=11 December 2014|arkivdato=11 December 2014|arkiv_url=https://web.archive.org/web/20141211041515/http://www.tarot.com/articles/tarot/about-tarot-cards-minor-arcana}}</ref>
[[Kartomanti|Kartomantiske]] tarotkort som er avledde frå kort i latinsk stil har typisk ein liten arkana med 56 kort, der kvar farge har 14 kort: Stavar (alternativt stenger, klubber o.l.), koppar (kalkar, fat eller skåler), sverd (eller klinger) og pentaklar (myntar, diskar eller ringar). Dei fire bildekorta er vanlegvis pasje, riddar, dronning og konge. Nokre variasjonar har prinsesse- og prinsekort i staden for pasje- og riddarkort; den historiske Visconti-Sforza-kortstokken utvida han med to tilleggskort: jomfruen og den ridande dama. Medan den historiske Marseilles-tarotkortstokken omfattar 56 kort, har seinare stokkar basert på franske stokkar kløver (♣), hjarte (♥), spar (♠) og ruter (♦) med berre tre biletkort per farge, ein knekt, ei dronning og ein konge.
== Symbolikk ==
I spådoms-, esoterisk- og okkult tarot meiner ein at den vesle arkanaen representerer relativt verdslege karaktertrekk i livet. Biletkorta representerar folk ein møter.
Kvar farge har òg karakteristiske karaktertrekk og konnotasjonar som vanlegvis blir sett på som følgjer:<ref>{{Cite book |last=Dee |first=Jonathan |title=Tarot, An illustrated guide |publisher=Silverdale Books |year=2002 |isbn=1-85605-685-6 |editor-last=Liz Dean |chapter=Introduction to the Minor Arcana}}</ref>
{| class="wikitable"
!Latinsk stokk
!Fransk stokk
!Element
!Klasse
!Fakultet
|-
|Stenger, stavar, klubber
|Klubbar
|Eld
|Handverk
|Kreativitet og vilje
|-
|Pentakkel, myntar, diskar, ringar
|Diamant
|Jord
|Handel
|Materielle lekamar eller eigedomar
|-
|Kopp, kalkar, skåler, fat
|Hjarte
|Vatn
|Geistleg
|Kjensler og kjærleik
|-
|Sverd, klinger
|Spar
|Luft
|Adel og militær
|Fornuft
|}
== Tilknytingar til planetar ==
I [[Hermetic Order of the Golden Dawn]] er tala knytte til planetar, som svarar til plasseringa deira i [[Kabbala]].<ref>{{Cite journal|last=McCann|first=David|editor-last=Houlding|editor-first=Deborah|title=Mercury in Myth & Occult Philosophy|url=https://www.skyscript.co.uk/mercurymyth.html|journal=The Traditional Astrologer|location=Nottingham, UK|publisher=Ascella|archive-url=https://web.archive.org/web/20190927044758/https://www.skyscript.co.uk/mercurymyth.html|archive-date=2019-09-27|access-date=2019-09-27}}</ref>
* Tre - Saturn
* Fjerde - Jupiter
* Fem - Mars
* Seks - Sola
* Sju - Venus
* Åtte - Merkur
* Ni - Månen
* Ti - Jorda
==Galleri==
Illustrasjonar frå Rider–Waite-kortstokken, som er den mest utbreidde blant engelsktalarar.
===Stavar===
<gallery mode="packed" heights="180">
Fil:Wands01.jpg|Ess
Fil:Wands02.jpg|To
Fil:Wands03.jpg|Tre
Fil:Wands04.jpg|Fire
Fil:Wands05.jpg|Fem
Fil:Wands06.jpg|Seks
Fil:Wands07.jpg|Sju
Fil:Wands08.jpg|Åtte
Fil:Wands09.jpg|Ni
Fil:Wands10.jpg|Ti
Fil:Wands11.jpg| Pasje
Fil:Wands12.jpg|Riddar
Fil:Wands13.jpg|Dronning
Fil:Wands14.jpg|Konge
</gallery>
===Koppar===
<gallery mode="packed" heights="180">
Fil:Cups01.jpg|Ess
Fil:Cups02.jpg|To
Fil:Cups03.jpg|Tre
Fil:Cups04.jpg|Fire
Fil:Cups05.jpg|Fem
Fil:Cups06.jpg|Seks
Fil:Cups07.jpg|Sju
Fil:Cups08.jpg|Åtte
Fil:Cups09.jpg|Ni
Fil:Cups10.jpg|Ti
Fil:Cups11.jpg|Pasje
Fil:Cups12.jpg| Riddar
Fil:Cups13.jpg|Dronning
Fil:Cups14.jpg|Konge
</gallery>
===Sverd===
<gallery mode="packed" heights="180">
Fil:Swords01.jpg|Ess
Fil:Swords02.jpg|To
Fil:Swords03.jpg|Tre
Fil:Swords04.jpg|Fire
Fil:Swords05.jpg|Fem
Fil:Swords06.jpg|Seks
Fil:Swords07.jpg|Sju
Fil:Swords08.jpg|Åtte
Fil:Swords09.jpg|Ni
Fil:Swords10.jpg|Ti
Fil:Swords11.jpg|Pasje
Fil:Swords12.jpg|Riddar
Fil:Swords13.jpg|Dronning
Fil:Swords14.jpg|Konge
</gallery>
===Pentakkel===
<gallery mode="packed" heights="180">
Fil:Pents01.jpg|Ess
Fil:Pents02.jpg|To
Fil:Pents03.jpg|Tre
Fil:Pents04.jpg|Fire
Fil:Pents05.jpg|Fem
Fil:Pents06.jpg|Seks
Fil:Pents07.jpg|Sju
Fil:Pents08.jpg|Åtte
Fil:Pents09.jpg|Ni
Fil:Pents10.jpg|Ti
Fil:Pents11.jpg|Pasje
Fil:Pents12.jpg|Riddar
Fil:Pents13.jpg|Dronning
Fil:Pents14.jpg|Konge
</gallery>
== Kjelder ==
{{fotnoteliste}}
{{refopning}}
*''Denne artikkelen bygger på «[[:en:Minor Arcana|Minor Arcana]]» frå {{Wikipedia-utgåve|en}}, den 14. september 2023.''
{{refslutt}}
[[Kategori:Tarot]]
1sff0p5zbotlew44vs7nqtv3fkj7pfd
Hallucination
0
428462
3650878
3636728
2026-04-18T12:54:40Z
Ranveig
39
Flikk
3650878
wikitext
text/x-wiki
{{Infoboks song
| bilete = Sissal at ESC2025 for Denmark 15.jpg
| tittel = «Hallucination»
| artist = Sissal
| land = [[Danmark]]/[[Færøyane]]
| språk = [[Engelsk]]
| utgjeven = [[6. februar]] [[2025]]
| sjanger = [[Dance]]
| lengd = 03:03
| selskap = The Arrangement, [[Virgin Records|Virgin]]
| låtskrivar = Chris Rohde-Frisk, Line Spangsberg, Linnea Deb, Malthe Johansen, Marcus Winther-John, Melanie Gabriella Hayrapetian, Sissal Jóhanna Norðberg Niclasen
}}
«'''Hallucination'''» er ein song av den [[Færøyane|færøyske]] songar-låtskrivaren [[Sissal]]. Songen vert skildra som ei oppleving av å møte nokon ein har eit sterkt samband med, og blei gjeven ut 6. februar 2025 gjennom Virgin. Han er skriven av Sissal, saman med Chris Rohde-Frisk, Lina Spangsberg, Linnea Deb, Malthe Johansen, Marcus Winther-John og Melanie Gabriella Hayrapetian. Songen var [[Danmark i Eurovision Song Contest|det danske bidraget]] i [[Eurovision Song Contest 2025]].
== Bakgrunn og komposisjon ==
«Hallucination» blei komponert og skriven av Sissal saman med Lina Spangsberg, Linnea Deb, Marcus Winther-John, Melanie Gabriella Hayrapetian, Chris Rohde-Frisk og Malthe Johansen. Produksjonen blei handtert av dei to sistnemnde, i tillegg til Joy Deb.<ref>{{cite web |date=1. mars 2025 |url=https://eurovision.tv/story/sissal-wins-melodi-grand-prix-denmark |title=Sissal wins 'Melodi Grand Prix' and will sing for Denmark in Basel |website=Eurovision.tv |publisher=[[European Broadcasting Union]] |access-date=6. mars 2025}}</ref> Ifølgje Sissal handlar songen om «å møte ein person der forbindinga følast så ekte at det nesten virkar uverkeleg.»<ref>{{cite web |date=1. mars 2025 |last=Petersen |first=Rasmus |url=https://eurovisionworld.com/esc/denmark-sissal-wins-melodi-grand-prix-2025 |title=Denmark: Sissal wins Melodi Grand Prix 2025 |work=EurovisionWorld |access-date=6. mars 2025}}</ref> Nettstaden ''Wiwibloggs'' skildra låten som ein danseinspirert song med [[Elektronisk dansemusikk|EDM]]-element.<ref>{{cite web |date=4. mars 2025 |last=Percy |first=Lucy |url=https://wiwibloggs.com/2025/03/04/denmarks-sissal-will-bring-dance-banger-hallucination-to-the-london-eurovision-party-2025/283823/ |title=Denmark’s Sissal will bring dance-banger “Hallucination” to the London Eurovision Party 2025 |work=[[Wiwibloggs]] |access-date=6. mars 2025}}</ref>
== Eurovision Song Contest 2025 ==
=== Dansk Melodi Grand Prix 2025 ===
Sissal blei offisielt kunngjord som deltakar i [[Dansk Melodi Grand Prix|Dansk Melodi Grand Prix 2025]] den 6. februar 2025, med songen «Hallucination».<ref>{{cite web |date=6. februar 2025 |last=Ellegaard |first=Christian |url=https://www.dr.dk/event/melodigrandprix/hoer-sangene-nu-her-er-deltagerne-i-dansk-melodi-grand-prix-2025 |title=Hør sangene nu: Her er deltagerne i Dansk Melodi Grand Prix 2025 |trans-title=Hear the songs now: Here are the participants in Dansk Melodi Grand Prix 2025 |website=dr.dk |publisher=[[Danmarks Radio]] |access-date=6. mars 2025 |lang=da}}</ref> I finalen gjekk songen vidare til superfinalen saman med «The Unluckiest Boy Alive» av {{ikkerød|Adel the Second}} og «Proud» av {{ikkerød|Tim Schou}}. «Hallucination» vann til slutt konkurransen med 20 poeng frå juryen og 18 poeng frå publikum, og fekk totalt 38 poeng, som sikra ho sigeren og retten til å representere Danmark i Eurovision Song Contest 2025.<ref>{{cite web |date=1. mars 2025 |last1=Christensen |first1=Kasper Madsbøll |last2=Ellegaard |first2=Christian |title=Storfavoritten holdt hele vejen: Sissal vinder Dansk Melodi Grand Prix 2025 |trans-title=The big favorite held all the way: Sissal wins Dansk Melodi Grand Prix 2025 |url=https://www.dr.dk/nyheder/kultur/storfavoritten-holdt-hele-vejen-sissal-vinder-dansk-melodi-grand-prix-2025 |website=dr.dk |publisher=[[Danmarks Radio]] |access-date=6. mars 2025 |lang=da}}</ref><ref>{{cite web|url=https://kvf.fo/greinar/2025/03/01/johanna-vann-melodi-grand-prix|title=Jóhanna vann Melodi Grand Prix|author=Uni L. Hansen|language=fo|date=1. mars 2025|access-date=3. mars 2025}}</ref><ref>{{cite web |author = Eyðfinn Jensen |title = Jóhanna Norðberg Niclasen: "Hetta lýsist ikki við orðum" |date = 2025-03-01 |access-date = 2025-03-02 |publisher = [[Kringvarp Føroya]] |url = https://kvf.fo/netvarp/sv/2025/03/01/sissalsamrodaaftana |language = fo}}</ref>
=== I Eurovision Song Contest ===
Under trekkinga av semifinalane den 28. januar 2025 blei Danmark trekt ut til å delta i den andre semifinalen, der dei opptredde i den andre halvdelen av showet.<ref>{{cite press release|date=2025-01-28|url=https://eurovision.tv/story/eurovision-2025-semi-final-draw-results|title=Eurovision 2025: Semi-Final Draw Results|website=Eurovision.tv|publisher=[[European Broadcasting Union]]|access-date=2025-01-29|archive-date=2025-01-28|archive-url=https://web.archive.org/web/20250128120331/https://eurovision.tv/story/eurovision-2025-semi-final-draw-results|url-status=live}}</ref> Danmark kvalifiserte seg til finalen – då dei kom på åttandeplass i semifinalen. Dette var fyrste gongen sidan [[Eurovision Song Contest 2019|2019]] at Danmark kvalifiserte seg til finalen.<ref>{{Cite web |date=2025-05-16 |title=Danmark er endelig tilbage i Eurovision-finalen. Og det skyldes én ting, mener eksperterne |url=https://www.dr.dk/event/melodigrandprix/danmark-er-endelig-tilbage-i-eurovision-finalen-og-det-skyldes-en-ting-mener |access-date=2025-05-16 |website=DR |language=da-DK}}</ref> I finalen enda «Hallucination» på 23. plass med 47 poeng.<ref>{{Cite web |title=Second Semi-Final of Basel 2025 - Eurovision Song Contest |url=https://eurovision.tv/event/basel-2025/first-semi-final |access-date=2025-05-21 |website=eurovision.tv |archive-date=2025-01-28 |archive-url=https://web.archive.org/web/20250128131959/https://eurovision.tv/event/basel-2025/second-semi-final |url-status=live }}</ref><ref>{{Cite web |title=Grand Final of Basel 2025 - Eurovision Song Contest |url=https://eurovision.tv/event/basel-2025/grand-final |access-date=2025-05-21 |website=eurovision.tv |archive-date=2025-01-28 |archive-url=https://web.archive.org/web/20250128131959/https://eurovision.tv/event/basel-2025/grand-final |url-status=live }}</ref>
== Listeplasseringar ==
{| class="wikitable sortable plainrowheaders" style="text-align:center"
|+
! scope="col"| Liste (2025)
! scope="col"| Høgaste<br />plassering
|-
{{single chart|Denmark Airplay|8|artist=Sissal|song=Hallucination|year=2025|week=9|rowheader=true|access-date=17. juni 2025}}
|-
! scope="row"| Hellas International (IFPI)<ref>{{cite web|url=https://www.ifpi.gr/digital_iel.html|title=Official IFPI Charts − Digital Singles Chart (International) − Εβδομάδα: 21/2025|publisher=[[IFPI Greece]]|access-date=28. mai 2025|language=el|archive-url=https://web.archive.org/web/20250528083827/https://www.ifpi.gr/digital_iel.html|archive-date=28. mai 2025|url-status=dead}}</ref>
| 87
|-
! scope="row"| Litauen (AGATA)<ref>{{cite web|url=https://www.agata.lt/lt/naujienos/s21-4/|title=2025 21-os savaitės klausomiausi (Top 100)|publisher=[[AGATA (organization)|AGATA]]|language=lt|date=23. mai 2025|access-date=23. mai 2025}}</ref>
| 54
|-
! scope="row"| Sverige Heatseeker ([[Sverigetopplistan]])<ref>{{cite web|url=https://www.sverigetopplistan.se/chart/215/?dspy=2025&dspp=21|title=Veckolista Heatseeker, vecka 21, 2025|publisher=[[Sverigetopplistan]]|access-date=23. mai 2025}}</ref>
| 8
|-
{{single chart|Switzerland|51|artist=Sissal|song=Hallucination|rowheader=true|access-date=25. mai 2025}}
|-
! scope="row"| [[UK Independent Singles and Album Breakers Charts|UK Indie Breakers]] ([[Official Charts Company|OCC]])<ref>{{cite web|url=https://www.officialcharts.com/charts/independent-singles-breakers-chart/20250523/254/|title=Official Independent Singles Breakers Chart Top 100|publisher=Official Charts Company|access-date=23. mai 2025}}</ref>
| 10
|-
{{single chart|UKdownload|8|date=20250523|rowheader=true|access-date=23. mai 2025}}
|-
! scope="row"| [[UK Singles Sales Chart|UK Singles Sales]] ([[Official Charts Company|OCC]])<ref>{{cite web|url=https://officialcharts.com/charts/singles-sales-chart/20250523/7509/|title=Official Singles Sales Chart Top 100|publisher=Official Charts Company|access-date=23. mai 2025}}</ref>
| 8
|}
== Kjelder ==
{{reflist}}
{{refopning}}
*''Denne artikkelen bygger på «[[:nb:Hallucination|Hallucination]]» frå {{Wikipedia-utgåve|nb}}, den 6. november 2025.''
{{refslutt}}
{{autoritetsdata}}
[[Kategori:Danske Eurovision Song Contest-songar]]
[[Kategori:Eurovision Song Contest 2025-songar]]
[[Kategori:Dansk Melodi Grand Prix-songar]]
[[Kategori:Engelskspråklege Eurovision Song Contest-songar]]
4bb076kcsg02wsd6esn2p0nq6e2qfvq
Mal:Transliteration
10
429993
3650900
2026-04-19T07:19:27Z
Ranveig
39
Frå en:
3650900
wikitext
text/x-wiki
{{#invoke:lang|xlit}}<noinclude>
{{documentation}}
</noinclude>
ost9wt8p3sokdsxueagwfpvklfjd5r7
Modul:Lang/configuration
828
429994
3650901
2026-04-19T07:21:48Z
Ranveig
39
Frå en:
3650901
Scribunto
text/plain
--[[--------------------------< T E M P L A T E S _ T >--------------------------------------------------------
]]
local templates_t = {
lang = 'Lang',
langx = 'Langx',
langxx = 'Lang-xx',
transliteration = 'Transliteration',
}
--[[--------------------------< K N O W N _ P A R A M S >------------------------------------------------------
lists of all parameters known to {{lang}}, {{langx}}, {{lang-xx}} templates.
Exception: |fn= is known to {{lang}} but is not a 'lang' template; that parameter causes the module to call the
specified lang(), lang_xx_inherit(), or lang_xx_italic() function. These separate functions set |fn= to nill
and then do the known-param checking on the other template parameters
]]
local known_params_t = {
['common_params_all_t'] = { -- these parameters common to {{lang}}, {{langx}}, and {{lang-xx}}
['code'] = true,
['text'] = true,
['rtl'] = true,
['italic'] = true,
['italics'] = true,
['i'] = true,
['size'] = true,
['proto'] = true,
['nocat'] = true,
['cat'] = true,
['template'] = true, -- supplied by external templates to provide template name for error messaging ({{nihongo}}, etc)
},
['params_lang_t'] = { -- unique to {{lang}}
[1] = true, -- alias of |code=
[2] = true, -- alias of |text=
},
['params_x_t'] = { -- common to {{langx}} and {{lang-xx}}
['translit'] = true,
['translit-std'] = true,
['translit-script'] = true,
['translation'] = true,
['lit='] = true,
['label'] = true,
['link'] = true,
['links'] = true,
['lit'] = true,
['engvar'] = true,
},
['params_langx_t'] = { -- unique to {{langx}}
[1] = true, -- alias of |code=
[2] = true, -- alias of |text=
[3] = true, -- alias of |translit=
[4] = true, -- alias of |translation=
},
['params_lang_xx_t'] = { -- unique to {{lang-xx}}
[1] = true, -- alias of |text=
[2] = true, -- alias of |translit=
[3] = true, -- alias of |translation=
['script'] = true, -- these needed to override default params in {{lang-??}} templates
['region'] = true,
['variant'] = true,
},
}
--[[--------------------------< E N G _ V A R >----------------------------------------------------------------
Used at en.wiki so that spelling of 'romanized' (US, default) can be changed to 'romanised' to match the envar
specified by a {{Use xxx English}}. Not likely useful outside of en.wiki
This is accomplished by setting |engvar=gb; can, should be omitted in articles that use American English; no
need for the clutter.
]]
local engvar_sel_t = { -- select either UK English or US English
['au'] = 'gb_t', -- these match IANA region codes (except in lower case)
['ca'] = 'us_t',
['gb'] = 'gb_t',
['ie'] = 'gb_t',
['in'] = 'gb_t',
['nz'] = 'gb_t',
['us'] = 'us_t', -- default engvar
['za'] = 'gb_t'
};
local engvar_t = {
['gb_t'] = {
['romanisz_lc'] = 'romanisation', -- lower case
['romanisz_uc'] = 'Romanisation', -- upper case; unused can be deleted
['romanisz_pt'] = 'romanised', -- past tense
},
['us_t'] = { -- default engvar
['romanisz_lc'] = 'romanization', -- lower case
['romanisz_uc'] = 'Romanization', -- upper case; unused can be deleted
['romanisz_pt'] = 'romanized', -- past tense
}
}
local default_engvar = 'us_t';
--[[
=============================<< M E S S A G I N G T A B L E S >>=============================================
these tables are for internationalization. Messages or fragments thereof are mostly grouped by function name.
Some messages are shared by functions other than the function table that lists the message or fragment.
]]
--[[--------------------------< K E Y W O R D S _ T >----------------------------------------------------------
]]
local keywords_t = {
['affirmative'] = 'yes',
['negative'] = 'no',
['unset'] = 'unset',
['invert'] = 'invert',
['default'] = 'default',
}
--[[--------------------------< M I S C _ T E X T _ T >--------------------------------------------------------
]]
local misc_text_t = {
['error'] = 'Error', -- make_error_msg(), tag_from_name()
['language'] = 'language', -- make_translit(), lang_xx(), name_from_tag()
['help'] = 'help',
}
--[[--------------------------< M A K E _ E R R O R _ M S G _ T >----------------------------------------------
]]
local make_error_msg_t = {
['xlit_err_cat'] = 'Transliteration template errors',
['lang_err_cat'] = 'Lang and lang-xx template errors',
['undefined'] = 'undefined',
}
--[[--------------------------< V A L I D A T E _ I T A L I C _ T >--------------------------------------------
]]
local parameter_validate_t = {
['invalid_param'] = 'invalid parameter: |$1=', -- $1 is parameter name
}
--[[--------------------------< V A L I D A T E _ I T A L I C _ T >--------------------------------------------
]]
local validate_italic_t = {
['multi_italic'] = 'only one of |italic=, |italics=, or |i= can be specified',
}
--[[--------------------------< V A L I D A T E _ T E X T _ T >------------------------------------------------
]]
local validate_text_t = {
['no_text'] = 'no text',
['malformed_markup'] = 'text has malformed markup',
['italic_markup'] = 'text has italic markup',
}
--[[--------------------------< T E X T _ S C R I P T _ M A T C H _ T E S T _ T >------------------------------
]]
local text_script_match_test_t = {
['latn_txt_mismatch'] = 'Latn text/non-Latn script subtag mismatch',
['latn_scr_mismatch'] = 'Non-latn text (pos $1: $2)/Latn script subtag mismatch', -- $1 identifies offending character's position; $2 is the character
}
--[[--------------------------< L A N G _ T >------------------------------------------------------------------
]]
local lang_t = {
['conflict_n_param'] = 'conflicting: {{{$1}}} and |$2=', -- $1 is positional param number, $2 is named param; shared with _lang_xx()
['conflict_n_param_types'] = {
['code'] = 'code',
['text'] = 'text',
['translit'] = 'translit',
},
['invalid_proto'] = 'invalid |proto=: $1', -- _lang_xx also emits this message
}
--[[--------------------------< L A N G _ X X _ T >------------------------------------------------------------
]]
local lang_xx_t = {
['conflict_n_lit'] = 'conflicting: {{{$1}}} and |lit= or |translation=', -- $1 is positional parameter; can be either 3 ({{lang-??}}) or 4 ({{langx}})
['conflict_lit'] = 'conflicting: |lit= and |translation=',
['conflict_link'] = 'conflicting: |links= and |link=',
['invalid_xlit_std'] = 'invalid translit-std',
['romanization'] = 'Romanization of',
['translit_nonlatn'] = 'transliteration text not Latin script (pos $1: $2)', -- _xlit() also emits this message; $1 identifies offending character's position; $2 is the character
['xlit_of_latn'] = 'transliteration of latn script',
}
--[[--------------------------< T A G _ F R O M _ N A M E _ T >------------------------------------------------
]]
local tag_from_name_t = {
['lang_not_found'] = 'language: $1 not found', -- $1 is language name parameter value
['missing_lang_name'] = 'missing language name',
}
--[[--------------------------< T R A N S L _ T >--------------------------------------------------------------
]]
local transl_t = {
['unrecog_xlit_std'] = 'unrecognized transliteration standard: $1', -- $1 is |translit_std- parameter value
['no_text'] = 'no text',
['missing_lang_scr'] = 'missing language / script code',
['unrecog_lang_scr'] = 'unrecognized language / script code: $1', -- $1 is the language/script code
}
--[[--------------------------< G E T _ I E T F _ P A R T S _ T >----------------------------------------------
]]
local get_ietf_parts_t = {
['maint_promo_cat'] = 'Lang and lang-xx code promoted to ISO 639-1|$1', -- $1 is ISO 639-2/3 subtag
['maint_promo_msg'] = 'code: $1 promoted to code: $2', -- $1 is ISO 639-2/3 subtag, $2 is synonymous ISO 639-1 subtag
['missing_lang_tag'] = 'missing language tag', -- also used in _langx()
['redundant_scr'] = 'redundant script tag',
['redundant_reg'] = 'redundant region tag',
['redundant_var'] = 'redundant variant tag',
['unrecog_tag'] = 'unrecognized language tag: $1', -- $1 is the whole language tag
['unrecog_code'] = 'unrecognized language code: $1', -- $1 is code
['unrecog_reg_code'] = 'unrecognized region: $1 for code: $2', -- $1 is region, $2 is code
['unrecog_scr_code'] = 'unrecognized script: $1 for code: $2', -- $1 is script, $2 is code
['script_code'] = 'script: $1 not supported for code: $2', -- $1 is script, $2 is code
['unrecog_var'] = 'unrecognized variant: $1', -- $1 is variant
['unrecog_var_code'] = 'unrecognized variant: $1 for code: $2', -- $1 is variant, $2 is code
['unrecog_var_code_scr'] = 'unrecognized variant: $1 for code-script pair: $2-$3', -- $1 is variant, $2 is code, $3 is script
['unrecog_var_code_reg'] = 'unrecognized variant: $1 for code-region pair: $2-$3', -- $1 is variant, $2 is code, $3 is region
['unrecog_pri'] = 'unrecognized private tag: $1', -- $1 is private tag
}
--[[--------------------------< L A N G U A G E _ N A M E _ G E T _ T >----------------------------------------
]]
local language_name_get_t = {
['deprecated_cat'] = 'Lang and lang-xx using deprecated ISO 639 codes|$1', -- $1 is deprecated ISO 639 subtag
['deprecated_msg'] = 'code: $1 is deprecated', -- $1 is deprecated ISO 639 subtag
}
--[[--------------------------< H T M L _ T I T L E _ T E X T _ T >--------------------------------------------
]]
local make_text_html_t = {
['zxx'] = 'text', -- for zxx no linguistic content
['collective'] = 'collective text', -- for collective languages
['individual'] = 'language text', -- for individual languages
}
--[[--------------------------< T R A N S L A T I O N _ M A K E _ T >------------------------------------------
]]
local translation_make_t = {
['lit_xlation'] = 'Literal translation', -- article title fragment and HTML title attribute
['lit_abbr'] = 'lit.',
}
--[[--------------------------< M A K E _ C A T E G O R Y _ T >------------------------------------------------
]]
local make_category_t = {
['collective_cat'] = 'Category:Articles with text in', -- for collective languages
['cat_prefix'] = 'Category:Articles containing', -- prefix for explicitly cited and individual languages
['explicit_cat'] = 'explicitly cited', -- for explicitly citing this wiki's language
['cat_postfix'] = 'language text', -- postfix for individual languages
}
--[[--------------------------< M A K E _ T R A N S L I T _ T >------------------------------------------------
]]
local make_translit_t = {
['script'] = 'script',
['transliteration'] = 'transliteration',
}
--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]
return {
known_params_t = known_params_t,
templates_t = templates_t,
default_engvar = default_engvar, -- engvar support not likely useful outside of en.wiki
engvar_t = engvar_t,
engvar_sel_t = engvar_sel_t,
get_ietf_parts_t = get_ietf_parts_t, -- messaging tables
keywords_t = keywords_t,
lang_t = lang_t,
lang_xx_t = lang_xx_t,
language_name_get_t = language_name_get_t,
make_category_t = make_category_t,
make_error_msg_t = make_error_msg_t,
make_text_html_t = make_text_html_t,
make_translit_t = make_translit_t,
misc_text_t = misc_text_t,
parameter_validate_t = parameter_validate_t,
tag_from_name_t = tag_from_name_t,
text_script_match_test_t = text_script_match_test_t,
transl_t = transl_t,
translation_make_t = translation_make_t,
validate_italic_t = validate_italic_t,
validate_text_t = validate_text_t,
}
gumagybz6wmxuy56etpm67aoy5tbxxl
Modul:Lang/data/is latn data
828
429995
3650902
2026-04-19T07:22:14Z
Ranveig
39
Frå en:
3650902
Scribunto
text/plain
--[[--------------------------< S I N G L E S _ T >-----------------------------------------------------------
list of Latn and Zyyy (common) codepoints that are not included in <ranges_t> taken from Module:Unicode data/scripts
and a local copy of https://www.unicode.org/Public/16.0.0/ucd/ScriptExtensions.txt
]]
local singles_t = {
[170] = true, -- 00AA
[186] = true, -- 00BA
[215] = true, -- 00D7
[247] = true, -- 00F7
[787] = true, -- 0313
[800] = true, -- 0320
[856] = true, -- 0358
[862] = true, -- 035E
[884] = true, -- 0374
[894] = true, -- 037E
[901] = true, -- 0385
[903] = true, -- 0387
[1541] = true, -- 0605
[1548] = true, -- 060C
[1563] = true, -- 061B
[1567] = true, -- 061F
[1600] = true, -- 0640
[1757] = true, -- 06DD
[2274] = true, -- 08E2
[3647] = true, -- 0E3F
[4347] = true, -- 10FB
[6149] = true, -- 1805
[7379] = true, -- 1CD3
[7393] = true, -- 1CE1
[7418] = true, -- 1CFA
[7672] = true, -- 1DF8
[8305] = true, -- 2071
[8319] = true, -- 207F
[8432] = true, -- 20F0
[8498] = true, -- 2132
[8526] = true, -- 214E
[12294] = true, -- 3006
[12448] = true, -- 30A0
[12783] = true, -- 31EF
[13055] = true, -- 32FF
[42963] = true, -- A7D3
[43310] = true, -- A92E
[43471] = true, -- A9CF
[43867] = true, -- AB5B
[65279] = true, -- FEFF
[65392] = true, -- FF70
[119970] = true, -- 1D4A2
[119995] = true, -- 1D4BB
[120134] = true, -- 1D546
[129008] = true, -- 1F7F0
[917505] = true, -- E0001
}
--[[--------------------------< R A N G E S _ T >-------------------------------------------------------------
list of Latn and Zyyy (common) codepoints taken from Module:Unicode data/scripts and a local copy of
https://www.unicode.org/Public/16.0.0/ucd/ScriptExtensions.txt
]]
local ranges_t = {
{0, 169}, -- 0000..00A9
{171, 185}, -- 00AB..00B9
{187, 214}, -- 00BB..00D6
{216, 246}, -- 00D8..00F6
{248, 745}, -- 00F8..02E9
{748, 782}, -- 02EC..030E
{784, 785}, -- 0310..0311
{803, 805}, -- 0323..0325
{813, 814}, -- 032D..032E
{816, 817}, -- 0330..0331
{867, 879}, -- 0363..036F
{1157, 1158}, -- 0485..0486
{2385, 2386}, -- 0951..0952
{2404, 2405}, -- 0964..0965
{4053, 4056}, -- 0FD5..0FD8
{5867, 5869}, -- 16EB..16ED
{5941, 5942}, -- 1735..1736
{6146, 6147}, -- 1802..1803
{7401, 7404}, -- 1CE9..1CEC
{7406, 7411}, -- 1CEE..1CF3
{7413, 7415}, -- 1CF5..1CF7
{7424, 7461}, -- 1D00..1D25
{7468, 7516}, -- 1D2C..1D5C
{7522, 7525}, -- 1D62..1D65
{7531, 7543}, -- 1D6B..1D77
{7545, 7614}, -- 1D79..1DBE
{7680, 7935}, -- 1E00..1EFF
{8192, 8203}, -- 2000..200B
{8206, 8292}, -- 200E..2064
{8294, 8304}, -- 2066..2070
{8308, 8318}, -- 2074..207E
{8320, 8334}, -- 2080..208E
{8336, 8348}, -- 2090..209C
{8352, 8384}, -- 20A0..20C0
{8448, 8485}, -- 2100..2125
{8487, 8497}, -- 2127..2131
{8499, 8525}, -- 2133..214D
{8527, 8587}, -- 214F..218B
{8592, 9257}, -- 2190..2429
{9280, 9290}, -- 2440..244A
{9312, 10239}, -- 2460..27FF
{10496, 11123}, -- 2900..2B73
{11126, 11157}, -- 2B76..2B95
{11159, 11263}, -- 2B97..2BFF
{11360, 11391}, -- 2C60..2C7F
{11776, 11869}, -- 2E00..2E5D
{12272, 12292}, -- 2FF0..3004
{12296, 12320}, -- 3008..3020
{12336, 12343}, -- 3030..3037
{12348, 12351}, -- 303C..303F
{12443, 12444}, -- 309B..309C
{12539, 12540}, -- 30FB..30FC
{12688, 12703}, -- 3190..319F
{12736, 12773}, -- 31C0..31E5
{12832, 12895}, -- 3220..325F
{12927, 13007}, -- 327F..32CF
{13144, 13311}, -- 3358..33FF
{19904, 19967}, -- 4DC0..4DFF
{42752, 42957}, -- A700..A7CD
{42960, 42961}, -- A7D0..A7D1
{42965, 42972}, -- A7D5..A7DC
{42994, 43007}, -- A7F2..A7FF
{43056, 43065}, -- A830..A839
{43824, 43866}, -- AB30..AB5A
{43868, 43876}, -- AB5C..AB64
{43878, 43883}, -- AB66..AB6B
{64256, 64262}, -- FB00..FB06
{64830, 64831}, -- FD3E..FD3F
{65040, 65049}, -- FE10..FE19
{65072, 65106}, -- FE30..FE52
{65108, 65126}, -- FE54..FE66
{65128, 65131}, -- FE68..FE6B
{65281, 65381}, -- FF01..FF65
{65438, 65439}, -- FF9E..FF9F
{65504, 65510}, -- FFE0..FFE6
{65512, 65518}, -- FFE8..FFEE
{65529, 65533}, -- FFF9..FFFD
{65792, 65794}, -- 10100..10102
{65799, 65843}, -- 10107..10133
{65847, 65855}, -- 10137..1013F
{65936, 65948}, -- 10190..1019C
{66000, 66044}, -- 101D0..101FC
{66273, 66299}, -- 102E1..102FB
{67456, 67461}, -- 10780..10785
{67463, 67504}, -- 10787..107B0
{67506, 67514}, -- 107B2..107BA
{113824, 113827}, -- 1BCA0..1BCA3
{117760, 118009}, -- 1CC00..1CCF9
{118016, 118451}, -- 1CD00..1CEB3
{118608, 118723}, -- 1CF50..1CFC3
{118784, 119029}, -- 1D000..1D0F5
{119040, 119078}, -- 1D100..1D126
{119081, 119142}, -- 1D129..1D166
{119146, 119162}, -- 1D16A..1D17A
{119171, 119172}, -- 1D183..1D184
{119180, 119209}, -- 1D18C..1D1A9
{119214, 119274}, -- 1D1AE..1D1EA
{119488, 119507}, -- 1D2C0..1D2D3
{119520, 119539}, -- 1D2E0..1D2F3
{119552, 119638}, -- 1D300..1D356
{119648, 119672}, -- 1D360..1D378
{119808, 119892}, -- 1D400..1D454
{119894, 119964}, -- 1D456..1D49C
{119966, 119967}, -- 1D49E..1D49F
{119973, 119974}, -- 1D4A5..1D4A6
{119977, 119980}, -- 1D4A9..1D4AC
{119982, 119993}, -- 1D4AE..1D4B9
{119997, 120003}, -- 1D4BD..1D4C3
{120005, 120069}, -- 1D4C5..1D505
{120071, 120074}, -- 1D507..1D50A
{120077, 120084}, -- 1D50D..1D514
{120086, 120092}, -- 1D516..1D51C
{120094, 120121}, -- 1D51E..1D539
{120123, 120126}, -- 1D53B..1D53E
{120128, 120132}, -- 1D540..1D544
{120138, 120144}, -- 1D54A..1D550
{120146, 120485}, -- 1D552..1D6A5
{120488, 120779}, -- 1D6A8..1D7CB
{120782, 120831}, -- 1D7CE..1D7FF
{122624, 122654}, -- 1DF00..1DF1E
{122661, 122666}, -- 1DF25..1DF2A
{126065, 126132}, -- 1EC71..1ECB4
{126209, 126269}, -- 1ED01..1ED3D
{126976, 127019}, -- 1F000..1F02B
{127024, 127123}, -- 1F030..1F093
{127136, 127150}, -- 1F0A0..1F0AE
{127153, 127167}, -- 1F0B1..1F0BF
{127169, 127183}, -- 1F0C1..1F0CF
{127185, 127221}, -- 1F0D1..1F0F5
{127232, 127405}, -- 1F100..1F1AD
{127462, 127487}, -- 1F1E6..1F1FF
{127489, 127490}, -- 1F201..1F202
{127504, 127547}, -- 1F210..1F23B
{127552, 127560}, -- 1F240..1F248
{127568, 127569}, -- 1F250..1F251
{127584, 127589}, -- 1F260..1F265
{127744, 128727}, -- 1F300..1F6D7
{128732, 128748}, -- 1F6DC..1F6EC
{128752, 128764}, -- 1F6F0..1F6FC
{128768, 128886}, -- 1F700..1F776
{128891, 128985}, -- 1F77B..1F7D9
{128992, 129003}, -- 1F7E0..1F7EB
{129024, 129035}, -- 1F800..1F80B
{129040, 129095}, -- 1F810..1F847
{129104, 129113}, -- 1F850..1F859
{129120, 129159}, -- 1F860..1F887
{129168, 129197}, -- 1F890..1F8AD
{129200, 129211}, -- 1F8B0..1F8BB
{129216, 129217}, -- 1F8C0..1F8C1
{129280, 129619}, -- 1F900..1FA53
{129632, 129645}, -- 1FA60..1FA6D
{129648, 129660}, -- 1FA70..1FA7C
{129664, 129673}, -- 1FA80..1FA89
{129679, 129734}, -- 1FA8F..1FAC6
{129742, 129756}, -- 1FACE..1FADC
{129759, 129769}, -- 1FADF..1FAE9
{129776, 129784}, -- 1FAF0..1FAF8
{129792, 129938}, -- 1FB00..1FB92
{129940, 130041}, -- 1FB94..1FBF9
{917536, 917631}, -- E0020..E007F
}
--[[--------------------------< S P E C I A L S _ T >---------------------------------------------------------
list of individual language-specific non-Latn and non-Zyyy codepoints; these codepoints commonly used in
transliterations. This list is manually currated so is most likely incomplete.
keys to <specials_t> are decimal codepoints; other keys are language tags (always lowercase) of language
transliterations that use these non-Latn codepoints.
]]
local specials_t = {
[788] = { -- U+0314: COMBINING REVERSED COMMA ABOVE
["hy"] = true, -- Armenian
},
[794] = { -- U+031A: COMBINING LEFT ANGLE ABOVE
["ltc"] = true, -- Middle Chinese; is this really IPA?
},
[795] = { -- U+031B: COMBINING HORN
["th"] = true, -- Thai
},
[806] = { -- U+0326: COMBINING COMMA BELOW
["ab"] = true, -- Abkhaz
["kca"] = true, -- Khanty
["xal"] = true, -- Kalmyk or Oirat
},
[807] = { -- U+0327: COMBINING CEDILLA
["fa"] = true, -- Persian
},
[809] = { -- U+0329: COMBINING VERTICAL LINE BELOW
["ab"] = true, -- Abkhaz
["sa"] = true, -- Sanskrit
},
[815] = { -- U+032F: COMBINING INVERTED BREVE BELOW
["mong"] = true, -- Mongolian
["xsc"] = true, -- Scythian
},
[818] = { -- U+0332: COMBINING LOW LINE
["ar"] = true, -- Arabic
["hbo"] = true, -- Ancient Hebrew
["he"] = true, -- Hebrew
["jpa"] = true, -- Jewish Palestinian Aramaic
["mdh"] = true, -- Maguindanaon
["otk"] = true, -- Old Turkish
},
[831] = { -- U+033F: COMBINING DOUBLE OVERLINE
["mnp"] = true, -- Northern Min Chinese, Jian'ou dialect
},
[855] = { -- U+0357: COMBINING RIGHT HALF RING ABOVE
["egy"] = true, -- Ancient Egyptian
},
[863] = { -- U+035F: COMBINING DOUBLE MACRON BELOW
["am"] = true, -- Amharic
["ar"] = true, -- Arabic
["dv"] = true, -- Dhivehi, Divehi, or Maldivian
["fa"] = true, -- Persian
["hi"] = true, -- Hindi
["inc"] = true, -- Indic languages
["ur"] = true, -- Urdu
},
[864] = { -- U+0360: COMBINING DOUBLE TILDE
["hi"] = true, -- Hindi
},
[865] = { -- U+0361: COMBINING DOUBLE INVERTED BREVE
["be"] = true, -- Belarusian
["ltc"] = true, -- Middle Chinese; is this really IPA?
["ru"] = true, -- Russian
["rue"] = true, -- Rusyn
["sem"] = true, -- Semitic languages
["sit"] = true, -- Sino-Tibetan languages
["tt"] = true, -- Tatar
},
[916] = { -- U+0394: GREEK CAPITAL LETTER DELTA
["xsc"] = true, -- Scythian
["xsc-x-pontic"] = true, -- Pontic Scythian
},
[920] = { -- U+0398: GREEK CAPITAL LETTER THETA
["ae"] = true, -- Avestan
},
[934] = { -- U+03A6: GREEK CAPITAL LETTER PHI
["xle"] = true, -- Lemnian
},
[945] = { -- U+03B1: GREEK SMALL LETTER ALPHA
["apc"] = true, -- Levantine Arabic
},
[946] = { -- U+03B2: GREEK SMALL LETTER BETA
["ae"] = true, -- Avestan
["gha"] = true, -- Ghadamès
["ougr"] = true, -- Old Uyghur
["sem"] = true, -- Semitic languages
["syc"] = true, -- Classical Syriac
["wuu"] = true, -- Shanghainese variety of Wu Chinese
},
[947] = { -- U+03B3: GREEK SMALL LETTER GAMMA
["ae"] = true, -- Avestan
["ltc"] = true, -- Late Middle Chinese
["mn"] = true, -- Mongolian
["och"] = true, -- Old Chinese
["ougr"] = true, -- Old Uyghur
["pal"] = true, -- Middle Persian
["syc"] = true, -- Classical Syriac
["syr"] = true, -- Syriac
["xal"] = true, -- Kalmyk or Oirat
["xng"] = true, -- Middle Mongolian
["xsc"] = true, -- Scythian
["ydg"] = true, -- Yidgha
["mong"] = true, -- Mongolian
},
[948] = { -- U+03B4: GREEK SMALL LETTER DELTA
["ae"] = true, -- Avestan
["ougr"] = true, -- Old Uyghur
["sog"] = true, -- Sogdian
["sogd"] = true, -- Sogdian
["syc"] = true, -- Classical Syriac
["xpr"] = true, -- Parthian
["xsc"] = true, -- Scythian
["xsc-x-pontic"] = true, -- Pontic Scythian
},
[952] = { -- U+03B8: GREEK SMALL LETTER THETA
["ae"] = true, -- Avestan
["ba"] = true, -- Bashkir
["cms"] = true, -- Messapic
["ett"] = true, -- Etruscan
["hur"] = true, -- Halkomelem
["ira"] = true, -- Iranian languages
["my"] = true, -- Burmese
["pal"] = true, -- Middle Persian (Pahlavi)
["peo"] = true, -- Old Persian
["sa"] = true, -- Sanskrit
["sem"] = true, -- Semitic languages
["syc"] = true, -- Classical Syriac
["syr"] = true, -- Syriac
["xme"] = true, -- Median
["xpg"] = true, -- Phrygian
["xpr"] = true, -- Parthian
["xsc"] = true, -- Scythian
},
[955] = { -- U+03BB: GREEK SMALL LETTER LAMDA
["xcr"] = true, -- Carian
["xld"] = true, -- Lydian
},
[963] = { -- U+03C3: GREEK SMALL LETTER SIGMA
["ett"] = true, -- Etruscan
},
[964] = { -- U+03C4: GREEK SMALL LETTER TAU
["xld"] = true, -- Lydian
},
[966] = { -- U+03C6: GREEK SMALL LETTER PHI
["ett"] = true, -- Etruscan
},
[967] = { -- U+03C7: GREEK SMALL LETTER CHI
["ett"] = true, -- Etruscan
["gem"] = true, -- Germanic languages
["hur"] = true, -- Halkomelem
["kbd"] = true, -- Kabardian
["ltc"] = true, -- Late Middle Chinese
["och"] = true, -- Old Chinese
["xlc"] = true, -- Lycian
["xle"] = true, -- Lemnian
},
[968] = { -- U+03C8: GREEK SMALL LETTER PSI
["ett"] = true, -- Etruscan
},
[977] = { -- U+03D1: GREEK THETA SYMBOL (cursive form)
["ae"] = true, -- Avestan
["ira"] = true, -- Iranian languages
["peo"] = true, -- Old Persian
["xme"] = true, -- Median
["xsc"] = true, -- Scythian
["xsc-x-pontic"] = true, -- Pontic Scythian
},
[1098] = { -- U+044A: CYRILLIC SMALL LETTER HARD SIGN
["ady"] = true, -- Adyghe
["cu"] = true, -- Church Slavic
["zls"] = true, -- South Slavic languages
},
[1100] = { -- U+044C: CYRILLIC SMALL LETTER SOFT SIGN
["az"] = true, -- Azerbaijani
["cu"] = true, -- Church Slavonic
["dng"] = true, -- Dungan
["ru"] = true, -- Russian
["tt"] = true, -- Tatar
["tyv"] = true, -- Tuvinian
},
[1278] = { -- U+04FE: CYRILLIC CAPITAL LETTER HA WITH STROKE
["av"] = true, -- Avar
},
[1279] = { -- U+04FF: CYRILLIC SMALL LETTER HA WITH STROKE
["av"] = true, -- Avar
},
[8113] = { -- U+1FB1: GREEK SMALL LETTER ALPHA WITH MACRON
["apc"] = true, -- Levantine Arabic
},
[8190] = { -- U+1FFE: GREEK DASIA
["ar"] = true, -- Arabic (Ayin)
["xcl"] = true, -- Classical Armenian
},
[19978] = { -- U+4E0A: [CJK Unified Ideographs]
["wuu"] = true, -- Wu Chinese tone marker
},
[20837] = { -- U+5165: [CJK Unified Ideographs]
["wuu"] = true, -- Wu Chinese tone marker
},
[21435] = { -- U+53BB: [CJK Unified Ideographs]
["wuu"] = true, -- Wu Chinese tone marker
},
[24179] = { -- U+5E73: [CJK Unified Ideographs]
["wuu"] = true, -- Wu Chinese tone marker
},
[38451] = { -- U+9633: [CJK Unified Ideographs] (Yang)
["wuu"] = true, -- Suzhou dialect of Wu Chinese tone marker --[[Suzhou dialect#Tones]]
},
[38452] = { -- U+9634: [CJK Unified Ideographs] (Yin)
["wuu"] = true, -- Suzhou dialect of Wu Chinese tone marker --[[Suzhou dialect#Tones]]
},
[65056] = { -- U+FE20: COMBINING LIGATURE LEFT HALF
["ru"] = true, -- Russian
},
[65057] = { -- U+FE21: COMBINING LIGATURE RIGHT HALF
["ru"] = true, -- Russian
},
}
--[[--------------------------< E X P O R T S >---------------------------------------------------------------
]]
return {
ranges_t = ranges_t,
singles_t = singles_t,
specials_t = specials_t,
sizeof_ranges_t = #ranges_t,
}
dgradfb6a36pwgdaju103zha60ri929
Tropiske stormar
0
429996
3650908
2026-04-19T08:01:23Z
Ranveig
39
Omdirigerer til [[Tropisk syklon]]
3650908
wikitext
text/x-wiki
#OMDIRIGER [[Tropisk syklon]]
8hbjrsjyawefi9w0rikd7m4vas92h9d
Mads Lauritz Madsen
0
429997
3650910
2026-04-19T08:11:57Z
Migne
2086
Oppretta sida med «'''Mads Lauritz Madsen''' ({{levde|5. juli|1782|31. desember|1840|Madsen, Mads}}) var ein dansk-norsk kjøpmann i [[Drammen]]. Madsen var fødd i [[Randers]] og kom til Noreg i ung alder. Han dreiv handel i Drammen og var i 1827 byen sin 1. representant til stortinget. Madsen var då medlem i Gasje- og pensjonskomiteen. Han møtte ikkje i omframtstortinget året etter, ettersom han var supsendert «fordi han var indviklet i saken mot krigskommissær Hetting». ==Kjel…»
3650910
wikitext
text/x-wiki
'''Mads Lauritz Madsen''' ({{levde|5. juli|1782|31. desember|1840|Madsen, Mads}}) var ein dansk-norsk kjøpmann i [[Drammen]].
Madsen var fødd i [[Randers]] og kom til Noreg i ung alder. Han dreiv handel i Drammen og var i 1827 byen sin 1. representant til stortinget. Madsen var då medlem i Gasje- og pensjonskomiteen. Han møtte ikkje i omframtstortinget året etter, ettersom han var supsendert «fordi han var indviklet i saken mot krigskommissær Hetting».
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1827-1829]]
n0gfapwb0zqnwtwelrsyb3jlbrdm1u4
3650911
3650910
2026-04-19T08:12:13Z
Migne
2086
la til [[Kategori:Norske kjøpmenn]] med [[WP:HotCat|HotCat]]
3650911
wikitext
text/x-wiki
'''Mads Lauritz Madsen''' ({{levde|5. juli|1782|31. desember|1840|Madsen, Mads}}) var ein dansk-norsk kjøpmann i [[Drammen]].
Madsen var fødd i [[Randers]] og kom til Noreg i ung alder. Han dreiv handel i Drammen og var i 1827 byen sin 1. representant til stortinget. Madsen var då medlem i Gasje- og pensjonskomiteen. Han møtte ikkje i omframtstortinget året etter, ettersom han var supsendert «fordi han var indviklet i saken mot krigskommissær Hetting».
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1827-1829]]
[[Kategori:Norske kjøpmenn]]
1qes9ybkk09onpjiv9eywgyl3oc3p7l
3650912
3650911
2026-04-19T08:12:28Z
Migne
2086
la til [[Kategori:Folk frå Drammen]] med [[WP:HotCat|HotCat]]
3650912
wikitext
text/x-wiki
'''Mads Lauritz Madsen''' ({{levde|5. juli|1782|31. desember|1840|Madsen, Mads}}) var ein dansk-norsk kjøpmann i [[Drammen]].
Madsen var fødd i [[Randers]] og kom til Noreg i ung alder. Han dreiv handel i Drammen og var i 1827 byen sin 1. representant til stortinget. Madsen var då medlem i Gasje- og pensjonskomiteen. Han møtte ikkje i omframtstortinget året etter, ettersom han var supsendert «fordi han var indviklet i saken mot krigskommissær Hetting».
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1827-1829]]
[[Kategori:Norske kjøpmenn]]
[[Kategori:Folk frå Drammen]]
45ft4ra290ovvlwkp49hvkv9x5orhoy
Johan Hammond Wolff
0
429998
3650913
2026-04-19T08:14:45Z
Migne
2086
Oppretta sida med «'''Johan Hammond Wolff''' ({{levde|19. oktober|1770|5. april|1852|Wollf, J}}) var ein offiser og stortingsmann fødd i [[Strinda]]. Wolff var son til ein prest. Sjølv gjekk han inn i det militære og var offiser frå 1788. Frå 1803 var han kaptein i 1ste trondhjemske regiment, deretter frå 1820 [[oberstløytnant]] og sjef for [[Stavanger]] nationale musketerkorps. Frå 1828 sjef for Indherreds nationale musketerkorps, generaladjutant 1835 og til sist, 1843-47 sjef…»
3650913
wikitext
text/x-wiki
'''Johan Hammond Wolff''' ({{levde|19. oktober|1770|5. april|1852|Wollf, J}}) var ein offiser og stortingsmann fødd i [[Strinda]].
Wolff var son til ein prest. Sjølv gjekk han inn i det militære og var offiser frå 1788. Frå 1803 var han kaptein i 1ste trondhjemske regiment, deretter frå 1820 [[oberstløytnant]] og sjef for [[Stavanger]] nationale musketerkorps. Frå 1828 sjef for Indherreds nationale musketerkorps, generaladjutant 1835 og til sist, 1843-47 sjef for trondhjemske gevorbne musketerkorps.
Wolff representerte [[Stavanger]] i [[stortinget]] 1827 og i omframtstortinget 1828. I 1827 hadde han sete i [[Lagtinget]] og deltok såleis i [[Riksretten]]. Han var elles medlem i Militærkomiteen og i komiteen om [[kjøpstad]]skatten, og 1828 i komiteen om [[verneplikt]]slova.
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1827-1829]]
2ab064bm3zdjx41qtwsd5marxvk1yqy
3650914
3650913
2026-04-19T08:15:01Z
Migne
2086
la til [[Kategori:Norske militære]] med [[WP:HotCat|HotCat]]
3650914
wikitext
text/x-wiki
'''Johan Hammond Wolff''' ({{levde|19. oktober|1770|5. april|1852|Wollf, J}}) var ein offiser og stortingsmann fødd i [[Strinda]].
Wolff var son til ein prest. Sjølv gjekk han inn i det militære og var offiser frå 1788. Frå 1803 var han kaptein i 1ste trondhjemske regiment, deretter frå 1820 [[oberstløytnant]] og sjef for [[Stavanger]] nationale musketerkorps. Frå 1828 sjef for Indherreds nationale musketerkorps, generaladjutant 1835 og til sist, 1843-47 sjef for trondhjemske gevorbne musketerkorps.
Wolff representerte [[Stavanger]] i [[stortinget]] 1827 og i omframtstortinget 1828. I 1827 hadde han sete i [[Lagtinget]] og deltok såleis i [[Riksretten]]. Han var elles medlem i Militærkomiteen og i komiteen om [[kjøpstad]]skatten, og 1828 i komiteen om [[verneplikt]]slova.
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1827-1829]]
[[Kategori:Norske militære]]
26maw3hjar2xz7vsvfze5d7xp1bgm1m
Bothel Nielsen
0
429999
3650915
2026-04-19T08:17:19Z
Migne
2086
Oppretta sida med «'''Bothel Nielsen''' ({{levde|7. mai|1787|3. mai|1847|Nielsen, Bothel}}) var ein dansk-norsk [[sorenskrivar]] og stortingsmann. Nielsen var fødd i [[Jylland]]. Han var sorenskrivar i Søndre Jarlsberg og auksjonsforvaltar i Jarlsberg grevskap. År 1819 var han med i [[matrikkel]]kommisjonen for Jarlsberg. I 1824 møtte han i [[stortinget]] som 3. representant frå [[Vestfold|Jarlsberg og Larviks amt]]. Han hadde sete i [[Lagtinget]] og var medlem i komiteen om jord…»
3650915
wikitext
text/x-wiki
'''Bothel Nielsen''' ({{levde|7. mai|1787|3. mai|1847|Nielsen, Bothel}}) var ein dansk-norsk [[sorenskrivar]] og stortingsmann.
Nielsen var fødd i [[Jylland]]. Han var sorenskrivar i Søndre Jarlsberg og auksjonsforvaltar i Jarlsberg grevskap. År 1819 var han med i [[matrikkel]]kommisjonen for Jarlsberg. I 1824 møtte han i [[stortinget]] som 3. representant frå [[Vestfold|Jarlsberg og Larviks amt]]. Han hadde sete i [[Lagtinget]] og var medlem i komiteen om [[jordbruk]] og [[fe]]drift og i komiteen om veglova. Elles sekretær i komiteen om [[adel]]ege rettar.
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1824-1826]]
238rj0e0cng6f2en4b1g1qm8kp14r6z
3650916
3650915
2026-04-19T08:17:29Z
Migne
2086
la til [[Kategori:Norske sorenskrivarar]] med [[WP:HotCat|HotCat]]
3650916
wikitext
text/x-wiki
'''Bothel Nielsen''' ({{levde|7. mai|1787|3. mai|1847|Nielsen, Bothel}}) var ein dansk-norsk [[sorenskrivar]] og stortingsmann.
Nielsen var fødd i [[Jylland]]. Han var sorenskrivar i Søndre Jarlsberg og auksjonsforvaltar i Jarlsberg grevskap. År 1819 var han med i [[matrikkel]]kommisjonen for Jarlsberg. I 1824 møtte han i [[stortinget]] som 3. representant frå [[Vestfold|Jarlsberg og Larviks amt]]. Han hadde sete i [[Lagtinget]] og var medlem i komiteen om [[jordbruk]] og [[fe]]drift og i komiteen om veglova. Elles sekretær i komiteen om [[adel]]ege rettar.
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1824-1826]]
[[Kategori:Norske sorenskrivarar]]
rrpxz3bicvzbb28a0dmygd5p9w4dqhr
Christen Styhr Nannestad
0
430000
3650917
2026-04-19T08:20:02Z
Migne
2086
Oppretta sida med «'''Christian Styhr Nannestad''' ({{levde|8. januar|1783|13. mars|1856|Nannestad, C}}) var ein [[sorenskrivar]] og stortingsmann. Prestesonen Nannestad vart [[cand.jur.]] i [[1807]]. Sidan var han fullmektig hos sorenskrivaren i [[Hardanger]]. Perioden 1819-30 var han sjølv sorenskrivar i [[Lofoten]] og [[Vesterålen]], busett i [[Hadsel]]. I 1824 møtte han i [[stortinget]] som 1. representant frå [[Nordland|Nordlands amt]]. På Tinget var han formann i komiteen om…»
3650917
wikitext
text/x-wiki
'''Christian Styhr Nannestad''' ({{levde|8. januar|1783|13. mars|1856|Nannestad, C}}) var ein [[sorenskrivar]] og stortingsmann.
Prestesonen Nannestad vart [[cand.jur.]] i [[1807]]. Sidan var han fullmektig hos sorenskrivaren i [[Hardanger]]. Perioden 1819-30 var han sjølv sorenskrivar i [[Lofoten]] og [[Vesterålen]], busett i [[Hadsel]]. I 1824 møtte han i [[stortinget]] som 1. representant frå [[Nordland|Nordlands amt]]. På Tinget var han formann i komiteen om handel i Nordland, sekretær i komiteane om [[fiskeri]]a og medlem i komiteen om statskassa sine krav hos Møller & Co. Frå 1830 til han døydde var Nannestad sorenskrivar i [[Inderøy]].
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1824-1826]]
e12dnfsfdb3pecblihblsmtlnvvh8se
3650918
3650917
2026-04-19T08:20:19Z
Migne
2086
la til [[Kategori:Norske sorenskrivarar]] med [[WP:HotCat|HotCat]]
3650918
wikitext
text/x-wiki
'''Christian Styhr Nannestad''' ({{levde|8. januar|1783|13. mars|1856|Nannestad, C}}) var ein [[sorenskrivar]] og stortingsmann.
Prestesonen Nannestad vart [[cand.jur.]] i [[1807]]. Sidan var han fullmektig hos sorenskrivaren i [[Hardanger]]. Perioden 1819-30 var han sjølv sorenskrivar i [[Lofoten]] og [[Vesterålen]], busett i [[Hadsel]]. I 1824 møtte han i [[stortinget]] som 1. representant frå [[Nordland|Nordlands amt]]. På Tinget var han formann i komiteen om handel i Nordland, sekretær i komiteane om [[fiskeri]]a og medlem i komiteen om statskassa sine krav hos Møller & Co. Frå 1830 til han døydde var Nannestad sorenskrivar i [[Inderøy]].
==Kjelder==
*[[Tallak Lindstøl|Lindstøl, Tallak]]: ''Stortinget og Statsraadet 1814-1914''. Kristiania, 1914.
[[Kategori:Stortingsrepresentantar 1824-1826]]
[[Kategori:Norske sorenskrivarar]]
r00369cknvakcdytfuja7t592benp6j
Shawnacy Barber
0
430001
3650920
2026-04-19T08:59:44Z
Migne
2086
Oppretta sida med «[[Fil:WK040044 polsstok barber.jpg|mini|]] '''Shawnacy Campbell Barber''' ({{levde|27. mai|1994|17. januar|2024|Barber}}) var ein [[Canada|kanadisk]] [[friidrett]]sutøvar som i 2015 vart verdsmeister i stavhopp. Barber deltok i [[VM i friidrett 2013|Friidretts-VM 2013]] i Moskva, der han nådde 5,40 meter i kvalifiseringa og rauk ut. To år etter sigra han i øvinga ved dei panamerikanske leikane i [[Toronto]] ved å gå over 5,80 m. Ein månad seinare, den 24. a…»
3650920
wikitext
text/x-wiki
[[Fil:WK040044 polsstok barber.jpg|mini|]]
'''Shawnacy Campbell Barber''' ({{levde|27. mai|1994|17. januar|2024|Barber}}) var ein [[Canada|kanadisk]] [[friidrett]]sutøvar som i 2015 vart verdsmeister i stavhopp.
Barber deltok i [[VM i friidrett 2013|Friidretts-VM 2013]] i Moskva, der han nådde 5,40 meter i kvalifiseringa og rauk ut. To år etter sigra han i øvinga ved dei panamerikanske leikane i [[Toronto]] ved å gå over 5,80 m. Ein månad seinare, den 24. august 2015 i [[Beijing]], svinga han seg over 5,90 meter i fyrste forsøk under [[VM i friidrett 2015|VM-finalen]] og kneip gullmedaljen framom tyske [[Raphael Holzdeppe]] som trong tre forsøk på same høgda. I eit innandørsstemne i [[Reno]] 15. januar 2016 klarte Barber å hoppe over 6 meter for fyrste gong. Under [[Sommar-OL 2016|Sommar-OL]] i [[Rio de Janeiro]] stoppa han på 5,50 m og vart nummer 10. Ved [[VM i friidrett 2017|Friidretts-VM 2017]] i London enda han på åttandeplassen med sine 5,65 meter.
==Kjelder==
{{refopning}}
*''Denne artikkelen bygger på «[[:en:Shawnacy Barber|Shawnacy Barber]]» frå {{Wikipedia-utgåve|en}}, den 19. april 2026.''
{{refslutt}}
5dcdkgyhiemcudoln63multh016vvx2
3650921
3650920
2026-04-19T09:00:07Z
Migne
2086
la til [[Kategori:Canadiske friidrettsutøvarar]] med [[WP:HotCat|HotCat]]
3650921
wikitext
text/x-wiki
[[Fil:WK040044 polsstok barber.jpg|mini|]]
'''Shawnacy Campbell Barber''' ({{levde|27. mai|1994|17. januar|2024|Barber}}) var ein [[Canada|kanadisk]] [[friidrett]]sutøvar som i 2015 vart verdsmeister i stavhopp.
Barber deltok i [[VM i friidrett 2013|Friidretts-VM 2013]] i Moskva, der han nådde 5,40 meter i kvalifiseringa og rauk ut. To år etter sigra han i øvinga ved dei panamerikanske leikane i [[Toronto]] ved å gå over 5,80 m. Ein månad seinare, den 24. august 2015 i [[Beijing]], svinga han seg over 5,90 meter i fyrste forsøk under [[VM i friidrett 2015|VM-finalen]] og kneip gullmedaljen framom tyske [[Raphael Holzdeppe]] som trong tre forsøk på same høgda. I eit innandørsstemne i [[Reno]] 15. januar 2016 klarte Barber å hoppe over 6 meter for fyrste gong. Under [[Sommar-OL 2016|Sommar-OL]] i [[Rio de Janeiro]] stoppa han på 5,50 m og vart nummer 10. Ved [[VM i friidrett 2017|Friidretts-VM 2017]] i London enda han på åttandeplassen med sine 5,65 meter.
==Kjelder==
{{refopning}}
*''Denne artikkelen bygger på «[[:en:Shawnacy Barber|Shawnacy Barber]]» frå {{Wikipedia-utgåve|en}}, den 19. april 2026.''
{{refslutt}}
[[Kategori:Canadiske friidrettsutøvarar]]
gtsb2b71jfrgsbz7timdymhuhkbt1d6
3650922
3650921
2026-04-19T09:00:20Z
Migne
2086
la til [[Kategori:Stavhopparar]] med [[WP:HotCat|HotCat]]
3650922
wikitext
text/x-wiki
[[Fil:WK040044 polsstok barber.jpg|mini|]]
'''Shawnacy Campbell Barber''' ({{levde|27. mai|1994|17. januar|2024|Barber}}) var ein [[Canada|kanadisk]] [[friidrett]]sutøvar som i 2015 vart verdsmeister i stavhopp.
Barber deltok i [[VM i friidrett 2013|Friidretts-VM 2013]] i Moskva, der han nådde 5,40 meter i kvalifiseringa og rauk ut. To år etter sigra han i øvinga ved dei panamerikanske leikane i [[Toronto]] ved å gå over 5,80 m. Ein månad seinare, den 24. august 2015 i [[Beijing]], svinga han seg over 5,90 meter i fyrste forsøk under [[VM i friidrett 2015|VM-finalen]] og kneip gullmedaljen framom tyske [[Raphael Holzdeppe]] som trong tre forsøk på same høgda. I eit innandørsstemne i [[Reno]] 15. januar 2016 klarte Barber å hoppe over 6 meter for fyrste gong. Under [[Sommar-OL 2016|Sommar-OL]] i [[Rio de Janeiro]] stoppa han på 5,50 m og vart nummer 10. Ved [[VM i friidrett 2017|Friidretts-VM 2017]] i London enda han på åttandeplassen med sine 5,65 meter.
==Kjelder==
{{refopning}}
*''Denne artikkelen bygger på «[[:en:Shawnacy Barber|Shawnacy Barber]]» frå {{Wikipedia-utgåve|en}}, den 19. april 2026.''
{{refslutt}}
[[Kategori:Canadiske friidrettsutøvarar]]
[[Kategori:Stavhopparar]]
889sg34zwtpmfoci6axo6c35huj6pn7