Wikipedia
mgwiki
https://mg.wikipedia.org/wiki/Wikipedia:Fandraisana
MediaWiki 1.47.0-wmf.15
first-letter
Rakitra
Manokana
Dinika
Mpikambana
Dinika amin'ny mpikambana
Wikipedia
Dinika amin'ny Wikipedia
Sary
Dinika amin'ny sary
MediaWiki
Dinika amin'ny MediaWiki
Endrika
Dinika amin'ny endrika
Fanoroana
Dinika amin'ny fanoroana
Sokajy
Dinika amin'ny sokajy
TimedText
TimedText talk
Module
Discussion module
Event
Event talk
Paris Saint-Germain Football Club
0
5929
1149221
1143013
2026-08-14T07:43:00Z
~2026-44530-63
40719
/* */
1149221
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Paris Saint-Germain]]
{{vangovango}}{{Infobox Wikimania (spéciale)|anarana=Paris Saint Germain|sary=20121209 PSG-Juvisy - Team of Paris Saint-Germain FC Ladies.jpg}}
Ny '''Football Club ny Paris Saint-Germain''' ('''Paris SG''' na '''PSG''') dia club-na [[baolina]] [[frantsa]]y noforonina tamin'ny [[1904]], ary [[Stade Saint-Germain]] ny anarany tamin'io fotoana io. I [[Antoine Kombouaré]] no mpitarika an'io club io hatramin'ny [[1 Jiona]] [[2009]]. Any amin'ny [[Ligue 1]] ny Paris Saint-Germain FC no milalao.
qkkh30jwep1hef66jjkgd0fewf7hu28
Endrika:User zh-classical
10
7886
1149211
44137
2026-08-14T07:38:44Z
~2026-44530-63
40719
/* */
1149211
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Template:User lzh]]
icelhb87d57g5mzo663cf0n3hoyejg2
Endrika:User zh-classical-1
10
7887
1149212
44139
2026-08-14T07:39:22Z
~2026-44530-63
40719
/* */
1149212
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Template:User lzh-1]]
88brccwrs26bhdawn8h3c8imf6f9hdu
Bayeux (Brazila)
0
44388
1149213
1140502
2026-08-14T07:39:55Z
~2026-44530-63
40719
/* */
1149213
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Bayeux (Paraíba)]]
{{infobox tanàna
|anarana=Bayeux (Brazila)
|velarantany= 32
|isam-ponina= 92.891
|firenena={{BRA}}
}}
I '''Bayeux (Brazila)''' dia kaominina ao [[Brazila]], ao amin'i [[Sary:Bandeira da Paraíba.svg|20px]] [[Paraíba]], ao amin'i [[Zona da Mata Paraibana]], [[Faritra madinik'i João Pessoa|João Pessoa]].
== Jeografia ==
{{...}}
Ny velarantanin'ilay tanàna dia 32 kilometatra toradroa. Ny isam-ponina dia 92.891.
5n9dhgy8glhapooou9b1in226vd1o1q
Mampikony
0
46141
1149206
1130800
2026-08-14T06:38:17Z
~2026-43677-38
40632
1149206
wikitext
text/x-wiki
{{coord|-16.092000|47.647000}}
{{infobox tanàna
|anarana=Mampikony
|faritany=[[Faritanin'i Mahajanga|Mahajanga]]
|faritra=[[Sofia]]
|isam-ponina=28593
|firenena={{Madagasikara}}
|sary= Hospital in Mampikony founded by the Foundation, Madagascar.jpg
}}
I '''Mampikony''' dia kaominina malagasy ao amin'ny distrikan'i [[Distrikan'i Mampikony|Mampikony]], faritra [[Sofia]].
Ny isam-poniny dia 28593 araka ny faminavinana natao tamin'ny taona 2018.
==Lalana==
*[[Lalam-pirenena faha-6|Route National 6]]
==Renirano==
*[[Mampikony (renirano)]]
==Rohy ivelany ==
{{reflist}}
{{Sofia}}
{{commonscat}}
[[sokajy:Kaominina any Madagasikara]]
[[sokajy:Kaominina any Faritra Sofia]]
ru0qpmy38vm76ti3iov4u11epkdaru3
Tanambao Marivorahona
0
46583
1149223
798214
2026-08-14T09:29:50Z
Chirocca77
30720
Nanampy sary infobox
1149223
wikitext
text/x-wiki
{{infobox tanàna
|anarana=Tanambao Marivorahona
|sary=La mairie -Tanambao Marivorahona Ambilobe 04.jpg
|faritany=Antsiranana
|isam-ponina=9462
|firenena={{Madagasikara}}
}}
'''Tanambao Marivorahona''' dia kaominina malagasy ao amin'ny [[distrikan'i Ambilobe]], [[Faritanin'i Antsiranana]]. Ny isam-poniny dia 9462 araka ny faminavinana natao tamin'ny taona 2000. Ny kaodin-kaominina dia 71707 ary ny kaodin-distrika dia 717
== Vokatry ny fambolena ==
Ny anjaran'ny tantsaha mampiasa zezika simika dia 50-75%.
Ny entana faharoa lafo vidy indrindra dia patate douce.
Ny zava-bolena lehibe indrindra amin'ny lafin'ny velarantany dia canne a sucre.
Ny entana fahatelo lafo vidy indrindra dia coton.
Ny isan'omby dia 12000.
Ny isan'ny taona nisiam-pesitry ny vorona teo anelanelan'ny taona 1999-2001 dia 3.
Ny zava-bolena faharoa lehibe indrindra amin'ny lafin'ny velarantany dia vary.
Ny entana lafo vidy indrindra dia tomates.
3 ny mponina no manao asa tanana.
94 ny mponina no miasa tany.
3 ny mponina no miasa amin'ny sampandraharaha.
6200 no isan'ny kisoa.
== Ara-tsosialy ==
Ahitana fikambanan-tantsaha ao.
== Fotodrafitrasa ==
Tongavan'ny lalam-paritra ilay tanàna.
Ahitana tobim-pahasalamana ao.
Andalovan'ny lalam-pirenena ilay kaominina.
Ahitana sekoly ambaratonga fototra.
== Fitaterana ==
Ny fitaovam-pitaterana ampiasaina matetika indrindra dia kamiao kely.
Ny faharetan'ny dia mankany amin'ny renivohi-paritany dia 2 ora.
Ahitana lalana godorô ao amin'ny kaominina.
Ny fotoam-pitaterana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 2 ora.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 25000 Fmg.
Misy fikambanan'ny mpampiasa lalan-tany ao.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny haintany dia 25000 Fmg.
== Fahasoavana ==
100 isan-jaton'ny mponina no atao hoe mahantra.
Ny halavan'ny vanim-potoana mety ahalanian'ny vokatry ny taon-dasa dia 7 volana.
== Endri-javatra ==
== Olana ==
== Rohy ivelany ==
* [http://www.ilo.cornell.edu/ilo/census.xls ilo.cornell.edu] - Statistika momba ny kaominina malagasy ary loharanom-pahaizana namoronana an'ity lahatsoratra ity.
[[Sokajy:Kaominina any Madagasikara]]
fnj6mwti7v7t89pn5esg9nmjvpb54yu
1149224
1149223
2026-08-14T09:44:19Z
Chirocca77
30720
/* Vokatry ny fambolena */ nanova firafitra
1149224
wikitext
text/x-wiki
{{infobox tanàna
|anarana=Tanambao Marivorahona
|sary=La mairie -Tanambao Marivorahona Ambilobe 04.jpg
|faritany=Antsiranana
|isam-ponina=9462
|firenena={{Madagasikara}}
}}
'''Tanambao Marivorahona''' dia kaominina malagasy ao amin'ny [[distrikan'i Ambilobe]], [[Faritanin'i Antsiranana]]. Ny isam-poniny dia 9462 araka ny faminavinana natao tamin'ny taona 2000. Ny kaodin-kaominina dia 71707 ary ny kaodin-distrika dia 717
== Vokatry ny fambolena ==
Ny tantsaha ao tanambao Marivorahona dia mamokatra fary izay volena amin'ny velarantany lehibe indrindra, mamboly vary, landihazo(coton),
Ny entana lao vidy indrindra dia ny voatabia, ny faharoa lafo vidy indrindra dia mangahazo.
Ny isan'omby dia 12000.
Ny isan'ny taona nisiam-pesitry ny vorona teo anelanelan'ny taona 1999-2001 .Manao asa tànana koa ny mponina ao,94 ny mponina no miasa tany.
3 ny mponina no miasa amin'ny sampandraharaha.
6200 no isan'ny kisoa.
== Ara-tsosialy ==
Ahitana fikambanan-tantsaha ao.
== Fotodrafitrasa ==
Tongavan'ny lalam-paritra ilay tanàna.
Ahitana tobim-pahasalamana ao.
Andalovan'ny lalam-pirenena ilay kaominina.
Ahitana sekoly ambaratonga fototra.
== Fitaterana ==
Ny fitaovam-pitaterana ampiasaina matetika indrindra dia kamiao kely.
Ny faharetan'ny dia mankany amin'ny renivohi-paritany dia 2 ora.
Ahitana lalana godorô ao amin'ny kaominina.
Ny fotoam-pitaterana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 2 ora.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 25000 Fmg.
Misy fikambanan'ny mpampiasa lalan-tany ao.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny haintany dia 25000 Fmg.
== Fahasoavana ==
100 isan-jaton'ny mponina no atao hoe mahantra.
Ny halavan'ny vanim-potoana mety ahalanian'ny vokatry ny taon-dasa dia 7 volana.
== Endri-javatra ==
== Olana ==
== Rohy ivelany ==
* [http://www.ilo.cornell.edu/ilo/census.xls ilo.cornell.edu] - Statistika momba ny kaominina malagasy ary loharanom-pahaizana namoronana an'ity lahatsoratra ity.
[[Sokajy:Kaominina any Madagasikara]]
bftls4epw6mc24mi0h5k8qdgjagsjg3
Cafelândia (San Paolo)
0
67587
1149216
1145793
2026-08-14T07:40:59Z
~2026-44530-63
40719
/* */
1149216
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Cafélândia (São Paulo)]]
{{infobox tanàna
|anarana=Cafelândia (São Paulo)
|velarantany= 919,860
|isam-ponina= 16.073
|firenena={{BRA}}
}}
I '''Cafelândia (São Paulo)''' dia kaominina ao [[Brazila]], ao amin'i [[Image:Bandeira do Estado de São Paulo.sv, ao amin'i [[Mesoregione di Baur, [[Microregione di Lin.
== Jeografia ==
{{...}}
Ny velarantanin'ilay tanàna dia 919,860 kilometatra toradroa. Ny isam-ponina dia 16.073.
nnbeyk8g21124p6xz16xb7z9aqfgwd6
Cafelândia (São Paolo)
0
69430
1149220
1145796
2026-08-14T07:42:35Z
~2026-44530-63
40719
/* */
1149220
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Cafélândia (São Paulo)]]
{{infobox tanàna
|anarana=Cafelândia (São Paulo)
|velarantany= 919,860
|isam-ponina= 16.073
|firenena={{BRA}}
}}
I '''Cafelândia (São Paulo)''' dia kaominina ao [[Brazila]], ao amin'i [[Sary:Bandeira do estado de São Paulo.svg|20px]] [[São Paulo|São Paulo]], ao amin'i [[Mesoregione di Bauru|Bauru]], [[Microregione di Lins|Lins]].
== Jeografia ==
{{...}}
Ny velarantanin'ilay tanàna dia 919,860 kilometatra toradroa. Ny isam-ponina dia 16.073.
3594rycpyez50esqm8e3d7s3lg0abbk
Brissac-Quincé
0
166482
1149225
971462
2026-08-14T09:49:39Z
JackyM59
37857
Photograhs updated
1149225
wikitext
text/x-wiki
{{Coord|47.3558|-0.447}}
{{infobox tanàna
|tanàna=Brissac-Quincé
|firenena={{Frantsa}}
|faritany=[[Pays de la Loire]]
|velarantany=9.76
|isam-ponina=2898
|ben'ny tanàna=Philippe Cauwel
}}
[[Sary:Château de Brissac - Sud Est.jpg|vignette|Château de Brissac]]
I '''Brissac-Quincé''' dia kaominina ao amin'ny fivondronan'i Angers, ao amin'ny departemantan'i [[Maine-et-Loire]], ao amin'ny faritr'i [[Pays de la Loire]], ao [[Frantsa]].
Ny INSEE dia mampiasa ny kaodim-paositra 49050.
I Philippe Cauwel no ben'ny tanàna mandritry ny taona 2001–2008. Ilay kaominina dia kaominina mpikambana amin'ny fivondronan-kaominin'i Loire Aubance
== Jeografia ==
Ny isam-ponin'i Brissac-Quincé dia 2898 mponina araka ny fanisana natao tamin'ny taona 2009. Ny haavon'ny toerana ambany indrindra dia 33 metatra. Ny haavon'ny toerana avo indrindra dia 78 metatra. Ny fisiana ara-daharampehintany ary ara-daharanjarahasin'ilay kaominina dia 47.3558° ary -0.447° amin'ny soratra desimaly.
Ny faritr'ora dia GMT+1.
== Rohy ivelany ==
* : Tranonkala
* [http://www.communes.com/recherche/?q=Brissac-Quincé Eo amin'i www.communes.com]
<references/>
[[Sokajy:Tanàna ao amin'ny faritr'i Maine-et-Loire]]
p1cgpivusfve2owxexi9umkqf7l7po1
Zanadralambo
0
167696
1149184
1149183
2026-08-13T12:59:03Z
~2026-43849-27
40659
/* Ny razambe telo nipoiran' ny sokajin' ny Zanadralambo */
1149184
wikitext
text/x-wiki
Ny '''Zanadralambo''' dia iray amin' ireo sokajin' [[andriana]] nisy tao amin' ny [[Fanjakan' Imerina|Fanjakana Merina]]. Taranaky ny mpanjaka [[Ralambo]] na havany akaiky izy ireo, ankoatr’ireo hova mendrika nasandratra ho andriana izay nampidirina tao amin’io sokajy io tamin’ny andron’ny mpanjaka hafa taty aoriana.
Nanambady maro ny mpanjaka Ralambo, mpanjakan' [[Imerina]], nonina sy nanjaka teo [[Ambohidrabiby]] Hasin' Imerina tamin' ny taona 1575-1600, ary niterahany maro ireo andriambavy vadiny. Mba hisorohana ny ady fanjakana teo amin' ireo taranany sy ireo andriana maro havany teo amin' ny fanjakany dia namorona sokajin' andriana efatra izy, izay nipoiran' ny mpanjaka teto Imerina, dia:
ny [[Andriantompokoindrindra]],
ny [[Zanadralambo amin' Andrianjaka|Zanadralambo amin'Andrianjaka]],
ny [[Andrianamboninolona (foko)|Andrianamboninolona]],
ary ny [[Andriandranando]].
Ny sokajy faharoa amin' ny andriana dia nampitondrain-dRalambo ny anarany ka nataony hoe "Zanadralambo". Ankoatr' izany, misy amin' ny tarana-dRalambo no tsy natao ho isan' ny Zanadralambo toy ireo tera-dRalambo sy Rabehavina, dia i Andriatompokoindrindra lahimatoany sy i Ravaomasina anabaviny. Ny zana-dRalambo tamin-dRatsitohinimanjaka, renin’ny mpanjaka Andrianjaka lahiaivony dia nataon-dRalambo ho isan' ny [[Zanadralambo amin' Andrianjaka]].
== Ny razambe telo nipoiran' ny sokajin' ny Zanadralambo ==
Misy karazany telo ny razambe niandohan' ny sokajy Zanadralambo dia ny taranaky ny mpanjaka Ralambo tamin' ireo vadiny hafa ankoatr’i Rabehavina, ireo havany akaiky izay nosokajiany ho Zanadralambo ary ny [[Hova]] lasa andriana ka natao ho isan' ny Zanadralambo taty aoriana.
Ny mpanjaka Ralambo dia teo androvan' Ambohidrabiby no nonina ary ireo Zanadralambo voalohany sy ireo taranany dia nomena zara-tany manodidina an' Ambohidrabiby renivohim-panjakana.
=== Ny tarana-dRalambo tamin' ny andriambavy hafa ankoatr’i Rabehavina renin’Andriantompokoindrindra ===
Ireo taranaky ny mpanjaka Ralambo tamin'ny vadikeliny izay natao hoe "[[Zanadralambo amin' Andrianjaka]]" dia avy amin’ny zanany efa-dahy ireto avy: Andriampolofantsy, Andriampanarivomanga, Andriamasoandro, ary Andriantompombe.
Andriampolofantsy no lahimatoan' ny Zanadralambo amin' Andrianjaka. Amin' ny maha-lahimatoa azy dia tao avaratr' Ambohidrabiby eo atsimon' i [[Talata Volonondry]], ary somary avaratry Falimanjaka tao Ambohimanarivo no zara-tany nomen' ny mpanjaka Ralambo an' Andriampolofantsy tany amboalohany. Tato aoriana dia nifindra nonina tao Ankadimanga izay mbola eo avaratr' Ambohidrabiby ary atsimon' i Talata Volonondry i Andriampolofantsy sy ny ankohonany ary ireo mpanaraka azy. Rehefa izany dia niala teo Ankadimanga izy ka nifindra nonina teo Ankazobe izay eroa andafy antsinanana-atsimon' Ambohidrabiby. Ary avy eo Ankazobe indray vao nifindra nonina nankeo Atsomangy ao atsimon' Ambohidrabiby. Nanan-janaka roa lahy izy ka ny lahy matoa izay natao hoe Andriamahatsiraina dia napetrany tao avaratr' Atsomangy amin' ny toerana hoe Andafiavaratra ary ny faralahy kosa Andriamasina dia nidina nonina teo ambany atsimon' Atsomangy amin' ny toerana atao hoe Ambany Atsimo. Avy eo Atsomangy kosa no nisy nifindra monina nankeo Ambohitrantenaina ny taranaka.
Andriantompombe dia tao andafy avaratra antsinanan' Ambohidrabiby atsimon' ny Falimanjaka, amin' ny tanàna atao hoe Ambohidalona, no zara-tany nomen' ny mpanjaka Ralambo rainy azy ary mbola ao ny fasany. Ny taranak' Andriantompombe kosa dia niala teo ka nifindra monina any atsimon' Ambohidrabiby dia ao Ambatofotsy avaradrano sy ao [[Sabotsy Namehana]].
Andriamasoandro kosa dia napetraky ny mpanjaka Ralambo rainy tao andafy atsimon' Ambohidrabiby ao Manandriana.
Andriampanarivomanga indray dia teroa andafy atsimo andrefan' Ambohidrabiby no zara-tany nomen' ny mpanjaka Ralambo azy. Rehefa nanambady an' i Ravadifo zanak' Andriampanarivomanga teo Lazaina moa ny mpanjaka Andrianjaka dia novaina ho ny terak' Andriampanarivomanga indray no zokiny amin' ny Zanadralambo amin' Andrianjaka.
Ankoatr’ireo efa-dahy ireo dia misy ihany koa ny taranaky ny mpanjaka Ralambo hafa, toy ny "Zana-dRambavy" ao Masindray ambadik' Ambohimanambola. Rambavy moa dia zanaka vavin’i Ralambo tamin’i Ratomponivololona, izay zanak’ Andrianamboninolona sy Ramanga. Nataon’ ny mpanjaka Andrianampoinimerina ho sokajy Zanadralambo ny firazanan' ireo taranaka avy ao Masindray ireo.
''Fanamarihana'': Ny taranak’i Ralambo tamin-dRavoromanga mpihira nalaza, izay natao hoe [[Zafindravoromanga]], dia mitonona ho isan' ny Zanadralambo ihany koa saingy efa sokajy hova no misy azy noho ny antony manokana. Ravoromanga dia niara-nonina tamin' ny mpanjaka Ralambo sy ny zanany telolahy tao androvan' Ambohidrabiby ary nafenina ao ambany antsinanan' Ambohidrabiby ao atsimon' Anjanakarivo andrefana. Ny zanaka telolahin' ny mpanjaka Ralambo tamin-dRavoromanga kosa dia nomen'ny mpanjaka Ralambo zaratany any avaratr'Ambohidrabiby dia tao Ambohitrolomahitsy ary tato aoriana dia nifindra monina ao Ambohijanamasoandro avaratr'Ambohimanga.
=== Zanadralambo fianakavian-dRalambo ===
Ireo Zanadralambo tsy mba nateraky Ralambo fa fianakavian-dRalambo no natao ho isan' ny sokajin' ny Zanadralambo ny ankamaroany. Voalohany amin' izany ny Andriamaneforalambo izay nomen' ny mpanjaka Ralambo zaratany any avaratra antsinanan' Ambohidrabiby dia ao Ankorombe avaratry Talata volonondry. Araka ny [[lovantsofina]] dia tarana-dRabiby raiben-dRalambo ity Andriamaneforalambo ity ary fianakavian' ireo [[Andriandoriamanjaka]] koa. Vinanton-dRalambo rahateo koa Andriamaneforalambo satria ny vadiny dia zanaka nateraky Ralambo. Izany rehetra izany angamba no isan' ny nanasokajian-dRalambo ny terak' Andriamaneforalambo ho isan' ny Zanadralambo ary izy ihany amin' ny Zanadralambo no mitondra ny anarana "Ralambo". Arak' izany, ny Zanadralambo avy amin'[[Andriamaneforalambo]] dia tarana-dRalambo avy amin' ny vadin' Andriamaneforalambo fa tsy avy amin' Andriamaneforalambo razambe akory. Misy lovantsofina milaza fa Rafotsimarovahoaka razan' ny ampahany amin' ny Zanadralambo ao Ambodifahitra dia taranak' Ankorombe no nifindra monina teo. Ary farany, ny taranak' [[Andrianakotrina]] izay nomen' ny mpanjaka Ralambo zaratany any antsinanan' Ambohidrabiby dia ao Ambohimahatsinjo ao andrefan' Ambohimalaza. Andrianakotrina moa araka ny lovantsofina dia andriana tompon' ny faritra akaikin' i Manandriana-Avaradrano sy Namehana iny tamin' ny andron-dRalambo. Fianakavian-dRalambo rahateo moa Andrianakotrina no nanoa azy, ary izy ihany koa no nitondra ny vary taty anivontany ka nosokajian-dRalambo ho isan' ny Zanadralambo izy. Ny lovantsofina sy ny [[tetiarana]] ao amin' ny Terak' Andrianakotrina ao Ambohimahatsinjo dia manambara fa tena zanaky ny mpanjaka Ralambo izy ireo.
=== Hova lasa Zanadralambo ===
Misy koa [[Hova]] vitsy nataon' ny mpanjaka [[Andrianampoinimerina]] ho isan' ny andriana ka nosokajiana ho Zanadralambo izy ireny. Tany amboalohany dia tsy nanaiky hifanambady tamin' ireo nasondrotra andriana ireo Zanadralambo na taranaka na fianakavian' ny mpanjaka Ralambo. Saingy tato aoriana dia nifanakalo vady aman-janaka ny vitsy fa tsy izy rehetra akory. Isan' ireny natao ho Zanadralambo ireny i Raberanto sy ny fianakaviany tao Ambodifahitra.
Mbola maro koa ireo vohitra no mitonona ho isan' ny Zanadralambo ary mety ho tena Zanadralambo tokoa saingy tsy neken' ny mpanjaka nifandimby ho isan' ny Zanadralambo izy ireny. Misy amin' ireny vohitra ireny aza no niandry aman-taona maro vao neken' ny mpanjaka tato aoriana fa isan' ny Zanadralambo raha tsy nanaiky izany ny mpanjaka tany aloha. Isan' izany ny Zanadralambo amin' ny [[Vakinisisaony]].
Fehiny, ny teny hoe ''Zanadralambo'' dia tsy midika avy hatrany fa taranaky ny mpanjaka Ralambo. Marihina anefa fa nanana ny maha izy azy manokana amin' ny Zanadralambo ny terak' Andriampanarivomanga ao Lazaina sy ny terak' Andriampolofantsy ao Antsomangy ary ny tera-dRaberanto ao Ambodifahitra. Terak' i Lazaina i Rabedasy izay lehiben' ny Zanadralambo rehetra [tamin-d[[Ranavalona III]]]. Tamin' ny Zanadralambo rehetra dia Raberanto sy ny ankohonany avy ao Ambodifahitra no hany nomen' Andrianampoinimerina zaratany tao amin' ny faritra voahodidina hadivory manodidina an' Andohalo tao [[Antananarivo]] ka niaranonina tamin' ny solotenan' ny [[Andriamasinavalona (foko)|Andriamasinavalona]], ny Andriandranando, ny Andrianamboninolona, ny Andriatompokoindrindra, ny [[Andriandoriamanjaka]], ary ny [[Zazamarolahy]] teo.
== Ny toerana ahitana ny Zanadralambo ==
Saika nahitana ny Zanadralambo ny lafivalo teto Imerina. Tamin' ny nanjakan-dRalambo dia teo saika nanodidina ny vohitr' Ambohidrabiby Hasin' Imerina iny no nonina ireo Zanadralambo dia tao [[Ambohidrabiby]], [[Falimanjaka]], [[Ankorombe]], [[Ambodifahitra]], [[Lazaina]], [[Antsomangy]], Manandriana, Ambatofotsy, Ambohidrano Antsinanana, Andranovelona, Ambohimahatsinjo ary amin' ny faritra atsimo ao Kilonjy. Tato aoriana dia niely tsikelikely teo amin' ny fanjakan' Imerina ireny Zanadralambo ireny satria ny Zanadralambo dia tsy mba nahazo nivoaka ny faritr' Imerina Enin-toko ka avy amin' izany ny fiteny hoe Zanadralambo Enin-toko. Amin' ny lafiny atsimo ao Ikilonjy sy amin' ny lafiny atsimo ao amin' ny rovan' Ambohijanaka dia misy Zanadralambo. Eny hatrany amin' ny Vakinimananara amin' ny faritr' [[Anjozorobe]] dia misy Zanadralambo. Ireo andriana taranaka taty aoriana araka ny vanimpotoana nifandimby ihany no nanana zo hivoaka an' Imerina raha hanitatra fanjakana na hametram-pihavanana amin' ny fanjakana manodidina na hanorina fanjakana mihintsy.
== Ny andraikitry ny Zanadralambo ==
Ny Zanadralambo dia nanana andraikitra manokana teo amin' ny fanjakan' andriana. Ny Zanadralambo dia loharanon' andriana manjaka.
Ny Zanadralambo amin' Andrianjaka no akaiky ny mpanjaka [[Andrianjaka]] raha nanjaka tao Antananarivo izy. Natao isan' ny mpanozon-doha na mpanome [[tangena]] ny Zanadralambo. Raha nisy mpanjaka efa hiamboho (manary aina) dia ny Zanadralambo no antsoina hialany aina sy hiamparany. Tato aoriana dia natao isan' ny mpamono fatin' andriamanjaka ny Zanadralambo satria tsy misy mahazo mikasika ny taolambalon' ny mpanjaka raha tsy andriana ny firazanany dia nisy Zanadralambo nahazo nanao izany. Nisy tamin' ny Zanadralambo koa anefa toy ny ao Manadriana-Avaradrano no nahazo andraikitra ho mpanenona ny firavaka [[volamena]] sy [[Volafotsy|volafotsi]]<nowiki/>n' ny mpanjaka. Hatramin' ny andron-dRalambo rainy hono dia Andriamasoandro no mpitohy sy mpanamboatra ny voahangy sampan-dRalambo. Ny Zanadralambo avy amin' ny fianakavian-dRabedasy kosa no nanefy ny volan' ny fanjakana merina ary Rabedasy no lehiben' ny Zanadralambo tamin' ny faran' ny fanjakan' andriana merina.
Betsaka andriana manam-pahaizana ny Zanadralambo amin' Andrianjaka ankehitriny, toa ny Andriana Alfred Ramangasoavina filoha-lefitry ny Repoblika Voalohany sady minisitry ny Fitsarana. Ny andriana Émile Ramarosaona, ministra ny Planina. Ny andriana Profesora [[Siméon Rajaona]] mpampianatra [[Fiteny malagasy|teny malagasy]] teny amin' ny Oniversite ary olomanga-pirenena koa.
== Ny fomban' ny Zanadralambo ==
Ny samy Zanadralambo dia saika nifanambady. Tsy [[lova tsy mifindra]] anefa izany noho ireo Zanadralambo samy hafa reny ary mety tsy ho tarana-dRalambo mihintsy ny sasany aminy.
Tsy mba nanana [[Sampy (malagasy)|sampy]] manokana koa ny Zanadralambo raha nanana ny azy manokana ireo sokajin' andriana sasany, angamba noho ny maha samy hafa reny ireo vohitry ny Zanadralambo maro. Na izany aza, dia saika nanan-karena ny Zanadralambo.
== Jereo koa ==
* [[Zanakandriana]]
* [[Andriantompokoindrindra (foko)|Andriantompokoindrindra]]
* [[Andrianamboninolona (foko)|Andrianamboninolona]]
* [[Andriandranando]]
* [[Zanadralambo]]
* [[Zanadralambo amin' Andrianjaka]]
* [[Zazamarolahy]]
* [[Andriamasinavalona (foko)|Andriamasinavalona]]
* [[Andriantompokoindrindra (foko)|Andriantompokoindrindra]]
* [[Andrianamboninolona (foko)|Andrianamboninolona]]
[[sokajy:Tantaran'i Madagasikara]]
bjqpr3perm4emsjoc947i3fr2vsrrc4
Bayeux (Brasile)
0
190688
1149214
1140650
2026-08-14T07:39:56Z
~2026-44530-63
40719
/* */
1149214
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#FIHODINANA [[Bayeux (Paraíba)]]
s479i5gu5xjclwl2cgahlhb9wn59mfd
Alexander Merkel
0
204406
1149195
1071321
2026-08-14T02:19:40Z
~2026-43677-38
40632
1149195
wikitext
text/x-wiki
{{infobox olona
|sary=Alexander Merkel.jpg
|anarana=Alexander Merkel
|teraka=22 Febroary 1992
|toerana = [[Almaty]]
|maty=
|firenena={{Alemaina}}
|mpiaraka=
|asa=
* [[mpilalao baolina kitra]]
|taona niasàna=
}}
'''Alexander Merkel''' (Fiteny kazàka: Александр Меркель) dia mpilalao baolina kitra mizaka ny zom-pirenen'i {{Alemaina}} teraka ny 22 Febroary 1992.
== Jereo koa ==
{{CLEDETRI:Merkel, Alexander}}
{{commonscat}}
[[sokajy:mpilalao baolina kitra alemainy]]
[[sokajy:mpilalao baolina kitra kazàka]]
[[sokajy:Teraka tamin'ny taona 1992]]
i2gqe44eftywksmp7hx97bmg5ytokok
Lois Abbingh
0
207146
1149194
759584
2026-08-13T23:28:06Z
Dostojewskij
7697
Sokajy:Teraka tamin'ny taona 1992
1149194
wikitext
text/x-wiki
{{infobox olona
|sary=
|anarana=Lois Abbingh
|teraka=13 Aogositra 1992
|maty=
|firenena=
|mpiaraka=
|asa=
* [[mpilalao baolina kitra]]
|taona niasàna=
}}
'''Lois Abbingh''' dia mpilalao baolina kitra teraka ny 13 Aogositra 1992
== Jereo koa ==
* [[Biôgrafia]]
[[sokajy:Biôgrafia]]
{{vangovango}}
{{DEFAULTSORT:Abbingh, Lois}}
[[sokajy:mpilalao baolina kitra]]
[[Sokajy:Teraka tamin'ny taona 1992]]
kvzczqlg8pz86ntwuatpq2ekbk5qk2f
Macrin
0
229163
1149215
1138398
2026-08-14T07:40:18Z
~2026-44530-63
40719
/* */
1149215
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Macrinus]]
{{infobox olona
|sary=
|anarana=Macrinus
|teraka=1 Janoary 164
|maty=1 Janoary 218
|firenena=Empira Romana
|mpiaraka=
|asa=
* [[mpanao politika]]
|taona niasàna=
}}
'''Macrin''' dia mpanao politika mizaka ny zom-pirenen'i [[Empira Romana]] teraka ny 1 Janoary 164 ary maty ny 8 Jona 218. Nantsoiny hoe ''Marcus Oellius Severus Macrinus'' ny tenany tamin’ny naha mpanjaka azy.
==Ny fiainany manokana==
Ny vadiny dia Nonia Celsa. Ny zanany dia Diadumenian.
== Emperora romanina ==
{|border="1" align="center" style="border: 10px solid #0; background-color:#FFFFFF"
|-align="center" bgcolor="DDEEFF"
!nodimbiasany
![[Sary:Vexilloid of the Roman Empire.svg|40px]] [[Empira Rômana|Emperora romanina]]
!mpandimby
|-align="center"
| [[Caracalla]] 211–217 <br/>sy [[Geta (emperora)|Geta]]<br/> 211 || [[Macrin|Macrinus]]<br/> 217-218 || [[Elagabalus]]<br/> 218-222
|-bgcolor="#DDEEFF"
|-
|}
== Jereo koa ==
f1h2dv7z4xsoppst8mfhd4rnqtn592h
Ravoahangy-Andrianavalona Joseph
0
230042
1149197
1141439
2026-08-14T06:05:28Z
~2026-43677-38
40632
[[Fianarantsoa]
1149197
wikitext
text/x-wiki
{{Infobox olona
|anarana=Ravoahangy-Andrianavalona Joseph
|teraka=22 0ktobra 1893|
toerana=[[Fianarantsoa]]
|maty=21 aogositra 1971
|firenena={{Madagasikara}}
|asa=Mpanao politika}}
'''Ravoahangy-Andrianavalona Joseph''' dia Malagasy nizaka ny [[zom-pirenena frantsay]], mpanao pôlitika sy mpitsabo. Teraka tamin' ny 28 Oktobra 1893 tao [[Fianarantsoa]] ary maty tamin' ny 21 Aogositra 1970 tao [[Antananarivo]]. Mpikambana ao amin' ny Antenimieram-pirenena frantsay izy nanomboka amin' ny 21 Oktobra 1945 ka hatramin' ny 10 Jona 1946, tao amin' ny Antenimieram-pirenena mpanorina (''Assemblée nationale constituante'') faha-2 tamin' ny 2 Jona 1946 hatramin' ny 27 Novambra 1946 ary tao amin' ny Antenimieram-pirenena amin' ny fe-potoam-piasana voalohany tamin' ny 10 Novambra 1946 ka hatramin' ny 4 Jolay 1951. Mpitari-tolona niady tamin' ny [[fanjanahantany]] izy ary anisan' ireo namorona ny antoko [[Vy Vato Sakelika]] (V.V.S.) sy ny [[Mouvement démocratique de la rénovation malgache]] (M.D.R.M.) niaraka amin' i [[Raseta Joseph|Joseph Raseta]] sy i [[Rabemananjara Jacques|Jacques Rabemananjara]].
= Ny tantarany =
=== Ny fiaviany sy ny fianarany ===
Teraka tao [[Fianarantsoa]] tamin' ny 28 Oktobra 1893 i Ravoahangy. Zana-dRakotonavalona Joël sy Ramanantenasoa Rose (samy avy amin' ny firazanana [[Andriamasinavalona]])<ref name=":0">[https://tanikomadagascar.com/2017/06/26/joseph-ravoahangy-andrianavalona-biographie/ Joseph Ravoahangy Andrianavalona: Biographie « TANIKO Madagascar]</ref>. Nanaraka ny ambaratonga voalohany tamina sekoly samihafa tao [[Fianarantsoa]] izy. Nanohy ny fianarany tao amin' ny sekoly [[Le Myre de Vilers]] ao Antananarivo izy ary afa-panadinana ho mpianatra mpitsabo tamin' ny taona 1912.
=== Ny niatombohany nitolona ===
Ny taona 1913, dia anisan' ireo izay namorona ny [[Vy Vato Sakelika]] (V.V.S.) Ravoahangy ary nosamborina noho izany tamin' ny taona 1915. Voaheloka hiasa an-terivozona mandra-pahafatiny izy tamin' ny 18 Febroary 1916 (fitsarana natao tao [[Andafiavaratra]]) ary nalefa sesitany tany [[Mayotte]]. Nohalefahina ho [[asa an-terivozona]] mandritra ny 15 taona izany saziny izany nefa nofoanana mihitsy tamin' ny taona 1922. Niverina nanohy ny fianarany ho mpitsabo izy ary tafavoaka ho mpitsabo herintaona taty aoriana. Rehefa mpitsabo izy dia niditra tao amin' ny [[A.M.I]] ary notendrena hiasa any [[Toliara]] hatramin' ny taona 1927. Rehefa tapitra ny fifanekena nataony tamin' ny fanjakana, dia lasa nakany [[Antsiranana|Diégo]] "hiara-miasa" tamin-d[[Ralaimongo Jean|Ralaimongo]],<ref name=":0" /> kanefa dia voarara tsy nahazo manao ny asan' ny mpitsabo tany amin' io toerana io izy.
Izy sy i [[Dussac Paul]] no niara-nanohy ny famoahana ny gazety ''[[L'Opinion]]'', rehefa naiditra am-ponja Ralaimongo tamin' ny taona 1928, ka lafin-kevitra roa lehibe no nitoloman'izy ireo tamin'izany, dia ny fanafoanana ny "[[indigénat]]" sy ny fanafoanana ny lalàna naha-zanatany frantsay an' i [[Madagasikara]] tamin' ny 6 Aogositra 1896 mba ho fananganana ny fanjakan' i Madagasikara.
Tamin' ny 29 Mey 1929, na dia tsy nandray anjara mivantana amin'ny hetsika natao aza Ravoahangy, dia tsy navela handia faritany tao [[Maintirano]] nandritra ny 5 taona, kanefa mbola nanohy ny fanoratana an-gazety ihany. Hoy izy tao amin'ny lahatsoratra navoakany tao amin'ny gazety ''L'Opinion'' tamin' ny 24 Septambra 1934: "Takinay hatrany ny fahaleovantenan' i Madagasikara".
Niverina teto [[Antananarivo]] tamin' ny taona 1936 sy niara-namorona tamin-dRalaimongo sy i Dussac Paul ny gazety ''[[La Nation Malgache]]'' sy ''[[Le Prolétariat malgache]]'' izy ary anisan' ny namorona ny hetsika sendikaly voalohany. Tamin' ny taona 1939, tamin' ny fiandohan'ny [[Ady Lehibe Faharoa|Ady lehibe faha-II]], dia niato tsy nanao pôlitika Ravoahangy, kanefa izany dia tsy nahasakana ny fanjakana tamin' izany fotoana izany (akaiky an' i Vichy) hanao fisavana matetika ny tokantranony izany. Voafidy ho mpanolotsainan' ny Tananan' Antananarivo tamin' ny taona 1945 izy, nefa nofoanana izany, vokatry ny fanamelohana samihafa azony hatramin' ny taona 1916. Na izany aza dia voafidy ho [[solombavambahoaka]] tao amin' ny Antenimiera mpamolavola tany Frantsa ny volana Novambra ary mbola voafidy hitana io toerana io ihany na tamin' ny volana Jona na tamin' ny voalana Novambra 1946.<ref>[https://maitron.fr/ravoahangy-andrianavalona-joseph-notice-en-cours/ <nowiki>RAVOAHANGY-ANDRIANAVALONA Joseph [notice en cours] – Maitron</nowiki>]</ref>
=== Ny M.D.R.M sy ny raharaha 29 Martsa 1947 ===
Tamin' ny taona 1946, dia anisan' ireo niara-namorona ny antoko ''[[Mouvement démocratique de la rénovation malgache]]'' (M.D.R.M.) . Voaheloka ho faty noho ny raharaha 29 Marsa 1947 araka ny fitsarana natao teo Andafiavaratra izy, nefa izany sazy izany dia nivadika ho figadrana mandra-pahafaty anaty faritra voambina tamin' ny taona 1949, ka nahiboka tany [[Mwali]] ao [[Kômôro]] izy ary nafindra tany [[Calvi]] (nosy [[Corse]]) avy eo. Nampanao "Tsia" tamin' ny [[fitsapan-kevi-bahoaka]] natao tamin' ny 28 Septambra 1958 izy. Rehefa tafaverina teto an-tanindrazana izy, dia voafidy ho solombavambahoakan' Antananarivo tamin' ny 4 Septambra 1960.<ref name=":0" />
=== Ny niafarany ===
Tamin' ny taona 1961 dia niditra ho mpikambana ao amin' ny [[Parti social démocrate malgache]] (PSD) izy ary voatendry ho ministra na minisi-panjakana hatramin' ny fotoana nahafatesany tamin' ny 21 Aogositra 1970, <ref name=":0" />ary nalevina am-boninahitra sy nisaonan' i [[Madagasikara]].
== Jereo koa ==
* [[Ralaimongo Jean|Jean Ralaimongo]]
* [[Raseta Joseph Delphin|Joseph Raseta]]
* [[Ny Avana Ramanantoanina]]
= Loharano =
{{Reflist}}
* Ilaitangena, ''Feon' ny Merina'' lah. faha-163, 18 Jolay 1997.
* [[Hopitaly Université Joseph Ravoahangy Andrianavalona]] ([[Antananarivo]])
==Jereo koa ==
[[Sokajy:Mpitsabo malagasy]]
[[Sokajy:Mpanao politika malagasy]]
8v24g5jl7h2hav3rpkp6d4zig99nuyh
Mampikony I
0
231122
1149205
797910
2026-08-14T06:32:22Z
~2026-43677-38
40632
1149205
wikitext
text/x-wiki
{{infobox tanàna
|anarana=Mampikony I
|faritra=[[Sofia]]
|faritany=[[Faritanin'i Mahajanga|Mahajanga]]
|isam-ponina=14225
|firenena={{Madagasikara}}
|sary = Hospital in Mampikony founded by the Foundation, Madagascar.jpg
}}
'''Mampikony I''' dia kaominina malagasy ao amin'ny [[distrikan'i Mampikony]], [[Faritra Sofia]], [[Faritanin'i Mahajanga]]. Ny isam-poniny dia 14225 araka ny faminavinana natao tamin'ny taona 2000. Ny kaodin-kaominina dia 42399 ary ny kaodin-distrika dia 423
== Vokatry ny fambolena ==
Ny anjaran'ny tantsaha mampiasa zezika simika dia 50-75%.
Ny entana faharoa lafo vidy indrindra dia vary.
Ny zava-bolena lehibe indrindra amin'ny lafin'ny velarantany dia vary.
Ny entana fahatelo lafo vidy indrindra dia mangahazo.
Ny isan'omby dia 550.
Ny isan'ny taona nisiam-pesitry ny vorona teo anelanelan'ny taona 1999-2001 dia 3.
Ny zava-bolena faharoa lehibe indrindra amin'ny lafin'ny velarantany dia tongolo.
Ny entana lafo vidy indrindra dia tongolo.
75 ny mponina no miasa tany.
10 ny mponina no miasa amin'ny fiompiana.
15 ny mponina no miasa amin'ny sampandraharaha.
250 no isan'ny kisoa.
== Ara-tsosialy ==
Ahitana fikambanan-tantsaha ao.
== Fotodrafitrasa ==
Misy seranam-piaramanidina akaikin'ilay tanàna.
Ahitana hopitaly na toeram-pitsaboana ao.
Ahitana tobim-pahasalamana ao.
Misy tsena isan'andro any.
Ijanon'ny taksiborosy ilay kaominina.
Misy fianarana ambaratonga faharoa (lise).
Andalovan'ny lalam-pirenena ilay kaominina.
Ahitana sekoly ambaratonga fototra.
Ahitana kolejy ao amin'ilay tanàna.
Tsy ny JIRAMA no manome ny rano.
Ny JIRAMA no manome ny rano.
Misy biraom-paositra ao.
== Fitaterana ==
Ny fitaovam-pitaterana ampiasaina matetika indrindra dia fiara maivana base.
Ny faharetan'ny dia mankany amin'ny renivohi-paritany dia 9 ora.
Ny fotoam-pitaterana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 27 ora.
Ny lalan-tany dia azo aleha mandavan-taona.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 75000 Fmg.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny haintany dia 50000 Fmg.
== Fahasoavana ==
10 isan-jaton'ny mponina no tena mahantra dia mahantra.
40 isan-jaton'ny mponina no atao hoe mahantra.
Ny halavan'ny vanim-potoana mety ahalanian'ny vokatry ny taon-dasa dia 3 volana.
10 isan-jaton'ny mponina no atao hoe manan-karena.
40 isan-jaton'ny mponina no manana fari-piainana antonontonony.
== Endri-javatra ==
Misy masoivohon'ny ministeran'ny fiompiana.
Misy masoivohon'ny ministeran'ny fiompiana.
Misy masoivohon'ny ministeran'ny fahasalamana.
Misy masoivohon'ny ministeran'ny fahasalamana.
Misy masoivohon'ny ministeran'ny rano sy ny ala.
Misy masoivohon'ny ministeran'ny rano sy ny ala.
Misy masoivohon'ny ministeran'ny asa tany.
Misy masoivohon'ny ministeran'ny asa tany.
Misy masoivohon'ny ministeran'ny fiarovana.
Misy masoivohon'ny ministeran'ny fiarovana.
Misy masoivohon'ny ministeran'ny fanabeazana.
Misy masoivohon'ny ministeran'ny fanabeazana.
Misy masoivohon'ny ministeran'ny mponina.
Misy masoivohon'ny ministeran'ny mponina.
== Olana ==
Ny isan'ny vono olona tanatin'ny taona 1999-2001 dia 16.
Tapaka in-3 ny lalana tao anatin'ny taona 1999-2001.
Ao amin'ny atao hoe faritra mena ilay kaominina.
Ny isan'ny vakitrano tanatin'ny taona 1999-2001 dia 48.
Ahitana zandary ao amin'ilay kaominina.
4 no isan'ireo mpamono olona tratra tanatin'ny taona 1999-2001.
== Rohy ivelany ==
* [http://www.ilo.cornell.edu/ilo/census.xls ilo.cornell.edu] - Statistika momba ny kaominina malagasy ary loharanom-pahaizana namoronana an'ity lahatsoratra ity.
{{commonscat}}
[[Sokajy:Kaominina any Madagasikara]]
[[Sokajy:Kaominina any Faritra Sofia]]
1q1rax88byse048h7itkepmwxxzbdea
1149208
1149205
2026-08-14T06:39:05Z
~2026-43677-38
40632
Pejy fihodinana mankany [[Mampikony]]
1149208
wikitext
text/x-wiki
#REDIRECT [[Mampikony]]
{{infobox tanàna
|anarana=Mampikony I
|faritra=[[Sofia]]
|faritany=[[Faritanin'i Mahajanga|Mahajanga]]
|isam-ponina=14225
|firenena={{Madagasikara}}
|sary = Hospital in Mampikony founded by the Foundation, Madagascar.jpg
}}
'''Mampikony I''' dia kaominina malagasy ao amin'ny [[distrikan'i Mampikony]], [[Faritra Sofia]], [[Faritanin'i Mahajanga]]. Ny isam-poniny dia 14225 araka ny faminavinana natao tamin'ny taona 2000. Ny kaodin-kaominina dia 42399 ary ny kaodin-distrika dia 423
== Vokatry ny fambolena ==
Ny anjaran'ny tantsaha mampiasa zezika simika dia 50-75%.
Ny entana faharoa lafo vidy indrindra dia vary.
Ny zava-bolena lehibe indrindra amin'ny lafin'ny velarantany dia vary.
Ny entana fahatelo lafo vidy indrindra dia mangahazo.
Ny isan'omby dia 550.
Ny isan'ny taona nisiam-pesitry ny vorona teo anelanelan'ny taona 1999-2001 dia 3.
Ny zava-bolena faharoa lehibe indrindra amin'ny lafin'ny velarantany dia tongolo.
Ny entana lafo vidy indrindra dia tongolo.
75 ny mponina no miasa tany.
10 ny mponina no miasa amin'ny fiompiana.
15 ny mponina no miasa amin'ny sampandraharaha.
250 no isan'ny kisoa.
== Ara-tsosialy ==
Ahitana fikambanan-tantsaha ao.
== Fotodrafitrasa ==
Misy seranam-piaramanidina akaikin'ilay tanàna.
Ahitana hopitaly na toeram-pitsaboana ao.
Ahitana tobim-pahasalamana ao.
Misy tsena isan'andro any.
Ijanon'ny taksiborosy ilay kaominina.
Misy fianarana ambaratonga faharoa (lise).
Andalovan'ny lalam-pirenena ilay kaominina.
Ahitana sekoly ambaratonga fototra.
Ahitana kolejy ao amin'ilay tanàna.
Tsy ny JIRAMA no manome ny rano.
Ny JIRAMA no manome ny rano.
Misy biraom-paositra ao.
== Fitaterana ==
Ny fitaovam-pitaterana ampiasaina matetika indrindra dia fiara maivana base.
Ny faharetan'ny dia mankany amin'ny renivohi-paritany dia 9 ora.
Ny fotoam-pitaterana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 27 ora.
Ny lalan-tany dia azo aleha mandavan-taona.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny andro fahavaratra dia 75000 Fmg.
Ny saran-dalan'ny olona tokana mankany amin'ny tanàn-dehibem-paritany amin'ny haintany dia 50000 Fmg.
== Fahasoavana ==
10 isan-jaton'ny mponina no tena mahantra dia mahantra.
40 isan-jaton'ny mponina no atao hoe mahantra.
Ny halavan'ny vanim-potoana mety ahalanian'ny vokatry ny taon-dasa dia 3 volana.
10 isan-jaton'ny mponina no atao hoe manan-karena.
40 isan-jaton'ny mponina no manana fari-piainana antonontonony.
== Endri-javatra ==
Misy masoivohon'ny ministeran'ny fiompiana.
Misy masoivohon'ny ministeran'ny fiompiana.
Misy masoivohon'ny ministeran'ny fahasalamana.
Misy masoivohon'ny ministeran'ny fahasalamana.
Misy masoivohon'ny ministeran'ny rano sy ny ala.
Misy masoivohon'ny ministeran'ny rano sy ny ala.
Misy masoivohon'ny ministeran'ny asa tany.
Misy masoivohon'ny ministeran'ny asa tany.
Misy masoivohon'ny ministeran'ny fiarovana.
Misy masoivohon'ny ministeran'ny fiarovana.
Misy masoivohon'ny ministeran'ny fanabeazana.
Misy masoivohon'ny ministeran'ny fanabeazana.
Misy masoivohon'ny ministeran'ny mponina.
Misy masoivohon'ny ministeran'ny mponina.
== Olana ==
Ny isan'ny vono olona tanatin'ny taona 1999-2001 dia 16.
Tapaka in-3 ny lalana tao anatin'ny taona 1999-2001.
Ao amin'ny atao hoe faritra mena ilay kaominina.
Ny isan'ny vakitrano tanatin'ny taona 1999-2001 dia 48.
Ahitana zandary ao amin'ilay kaominina.
4 no isan'ireo mpamono olona tratra tanatin'ny taona 1999-2001.
== Rohy ivelany ==
* [http://www.ilo.cornell.edu/ilo/census.xls ilo.cornell.edu] - Statistika momba ny kaominina malagasy ary loharanom-pahaizana namoronana an'ity lahatsoratra ity.
{{commonscat}}
[[Sokajy:Kaominina any Madagasikara]]
[[Sokajy:Kaominina any Faritra Sofia]]
3mpcnbppmatgw71ltvo4rgfzplqb5yg
Itaporanga d'Ajuda
0
290399
1149222
1140905
2026-08-14T07:43:56Z
~2026-44530-63
40719
/* */
1149222
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Itaporanga d’Ajuda]]
{{Coord|11|00|S|37|19|W}}
{{infobox tanàna
|anarana=Itaporanga d'Ajuda
|velarantany= 757
|isam-ponina= 34.411
|firenena={{BRA}}
|faritany= {{Sergipe}}
|sary=
|saina=Bandeira Itaporanga d'Ajuda.jpg
}}
[[File:Itaporanga.PNG|thumb|left|Itaporanga]]
I '''Itaporanga d'Ajuda''' dia kaominina ao [[Brazila]], ao amin'i {{Sergipe}}.
Ny velarantanin'ilay tanàna dia 757 kilometatra toradroa. Ny isam-ponina dia 14.085.
qtz4gkhbibmgsi7qcxy0mtsmuj7sqmg
Flavius Zeno
0
293447
1149219
1141201
2026-08-14T07:41:58Z
~2026-44530-63
40719
/* */
1149219
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Zeno (emperora)]]
[[File:Zeno Solidus RIC 0910.jpg|thumb|Zeno Solidus]]
'''Zeno''', ([[Fiteny grika|grika]]: ήνων, [[Fiteny latina|latina]]: '''Flavius Zeno''') (* 425 -† 9 Aprily, 491), dia nanomboka tamin'ny 29 Janoary, 474 mandra-pahafatiny (atsinanana) Emperora Romana. Amin'ny maha mpitondra tokana azy, dia nanjaka 474 tamin'ny volana novambra izy, nanelingelina ny sesitany 20 volana nanomboka tamin'ny Janoary 475 ka hatramin'ny 476 Jolay.
Ny fikomiana ny olona sy ny tolona elatry ny elatra ara-pivavahana dia namorona ny fanjakany, fa tamin'ny fahasarotana lehibe dia nahavita nanery ny Romanina atsinanana izy.
Ny rainy dia [[Leo I (emperora)]]
[[sokajy:Maty tamin'ny taona 491]]
[[Sokajy:Emperora Bizantina]]
[[sokajy:Teraka tamin'ny taona 425]]
k3eqczeuf3jg8i49p80166kcymzrxzx
Hopitaly miaramila Antananarivo
0
295307
1149204
1138289
2026-08-14T06:29:31Z
~2026-43677-38
40632
1149204
wikitext
text/x-wiki
Ny '''hopitaly Miaramila Antananarivo''' izay nitondra ny anarana hoe "Trano Fitsaboana Isoavinandriana'''"''' sy hoe " Girard et Robic " ho fanomezam-boninahitra an’ireo dokotera frantsay roa, dia notokanan'i mpanjakavavy [[Ranavalona III]] sy ny praiministra [[Rainilaiarivony]] ny 13 Aogositra 1891<ref>[https://www.lexpress.mg/2026/08/sante-lhopital-militaire-porte-le-poids.html SANTÉ - L’hôpital militaire porte le poids de ses 135 ans]</ref>. Ny Trano Fitsaboana Isoavinandriana no hopitaly voalohany teto [[Madagasikara]] taorian'ny nisokafan'ny dispensaire Analakely ouvert izay nisokatra tamin'ny taona 1864.<ref>[https://2424.mg/sante-le-centre-hospitalier-soavinandriana-ex-homi-ex-girard-et-robic-ex-hopital-colonial-ex-trano-fitsabo-isoavinandriana-souffle-ses-130-bougies/ SANTE - Le Centre hospitalier Soavinandriana, ex-Homi, ex-Girard et Robic, ex-Hôpital colonial, ex-Trano Fitsabo Isoavinandriana, souffle ses 130 bougies | 2424.mg - L'actualité à Madagascar en temps réel]</ref>
== Tantarany<ref>{{Article |langue=français |auteur1=RASAMINANJA Nambitsoa Herin’ny Aina Orlando |titre=ETUDE DE LA SATISFACTION DES CLIENTS ET DE LA QUALITE DES SERVICES PUBLICS : CAS CENTRE HOSPITALIER DE SOAVINANDRIANA |périodique=2009/2010 |date=25/08/2010 |lire en ligne=1 |pages=3 }}</ref> ==
Tamin’ny 14 febroary 1889 no naorina teo amin’ny velaran-tany mirefy 3,34 ha ny Trano Fitsaboana Isoavinandriana, nomena ny LMS sy ny FFMA, teo amin’ny havoanan’i [[Soavinandriana]]. Io no hopitaly voalohany teto amin’ny Nosy, taorian’ny nisokafan’ny dispensaire Analakely tamin’ny 1864. Ny 13 aogositra 1891 no notokanan' ny Mpanjakavavy [[Ranavalona III]] sy ny praiministra [[Rainilaiarivony]] tamin’ny fomba ofisialy izany hopitaly izany. Tamin'ny 30 Septambra 1895, rehefa nazon'i jeneraly Jacques Duschene i Antananarivo, dia nanangana ny sainan'ny vokovoko mena ny hopitaly ary nitsabo miaramila malagasy sy miaramila frantsay 80 ny hopitaly.
Tamin'ny 15 novambra 1896, nalain'ny jeneraly [[Joseph Simon Gallieni]] ny hopitaly . Novana anarana ho Girar et Robic ho fahatsiaraovana ireo dokotera roa ireo, izay dokotera nahita voalohany ny vaksiny fanefitra ny [[Pesta]].
Noravan'ny fanjakana mpanjanatany tamin'ny taona 1958 ny trano naorina voalohany ;
tamin'ny 3 Jolay1963, notokanan'ny filoha [[Tsiranana Philibert]] ny trano vaoavao.
Tamin'ny taona 1977, noraisin'ny fanjakana malagasy an-tànana ny hopitaly ka nomena anarana hoe hopitaly miaramila Antananarivo.
Nanomboka ny 12 Janvier 1993 no nanovana ny anarany ho Trano fitsaboana Soavinandriana ary ny jeneraly Razanamparany Jeannot Marc no manamboninahitra malagasy voalohany voatendry hitanatana ity hopitaly ity.
== Jereo koa ==
* [[Institut Pasteur eto Madagasikara]]
* [[Louis Pasteur]]
* [[Hopitaly Université Joseph Ravoahangy Andrianavalona]]
{{Portail|médecine|Madagascar}}
[[Sokajy:Hopitaly any Madagasikara]]
[[Sokajy:Antananarivo]]
bmhnad1wo94khja1ocryourvefmxs8r
Roberto Duarte
0
298368
1149218
1142744
2026-08-14T07:41:41Z
~2026-44530-63
40719
/* */
1149218
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#REDIRECT [[Roberto Duarte Jr.]]
{{infobox olona
|sary= Dep. Roberto Duarte.jpg
|anarana=Roberto Duarte
|teraka= 25 Aprily 1975
|toerana=[[Porto Alegre]]
|maty=
|firenena={{Brazila}}
|mpiaraka=
|asa=
* [[mpanao politika]]
|taona niasàna=
}}
'''Roberto Duarte''' (teraka ny 25 Aprily 1975 tao [[Porto Alegre]]) dia [[mpanao politika]] [[brezila|breziliana]], mpikambana ao amin'ny antoko [[Republicanos (Brasil)|Republicano]], voafidy tamin'ny 2022 ho solombavambahoaka federaly ho an'i [[Acre]].<ref>(pt) [https://www.camara.leg.br/deputados/220588/biografia Tantaram-piainana ao amin'ny: www.camara.leg.br]</ref>
717dmak34l6utu2qpikxd28svybdjk1
Wikipedia:Efemerida/14 Aogositra
4
298644
1149186
1133857
2026-08-13T15:05:20Z
JianJi
36396
1149186
wikitext
text/x-wiki
'''Androany [[14 Aogositra|14 aogositra]]''':
* '''[[1971]]''' - Fahaleovantenan'i [[Bareina|Bahrein]] manoloana ny [[Fanjakana Mitambatra]]
* '''[[2013]]''' - Fanombohan'ny hetsika manohitra ny fanonganam-panjakana an'i [[Mohamed Morsi]] tao [[Ejipta]].
ocfokphrebnn408kfxqeyvi2c203x62
Wikipedia:Efemerida/15 Aogositra
4
298645
1149196
1133858
2026-08-14T04:48:07Z
JianJi
36396
1149196
wikitext
text/x-wiki
'''Androany [[15 Aogositra|15 aogositra]]''':
* '''[[1914]]''' - Nosokafana tamin'ny fomba ofisialy ny lakandranon'i [[Panamà|Panama]].
* '''[[1947]]''' - Fahaleovantenan' [[India]] manoloana ny [[Fanjakana Mitambatra]].
* '''[[1969]]''' - Fetiben'i [[Woodstock (CDP), New York|Woodstock]], fetiben-kira Hippie goavana indrindra manerantany
* '''[[2021]]''' - Azon'ny [[Talibana|Taliban]], vondrona mitam-piadiana any [[Afganistàna|Afghanistan]], indray i [[Kabul]] renivohitra.
qn64tq7anaukqcnouw4v1nean215bsj
Kampania
0
300765
1149217
1144243
2026-08-14T07:41:20Z
~2026-44530-63
40719
/* */
1149217
wikitext
text/x-wiki
{{Arovy|Tapaka ny redirection}}
#FIHODINANA [[Campania]]
rnmmyn383gpntaobw51pzl94krvp00i
Ombavy
0
301455
1149210
1147734
2026-08-14T06:48:06Z
Thelezifor
15140
Fianakaviana
1149210
wikitext
text/x-wiki
Ny '''ombavy''' dia zavamaniry samihafa ao amin' ny fianakaviana ''[[Annonaceae]]'' sy ''[[Malvaceae]]'':
* ''[[Humbertianthus cardiostegius]]'' <small>Hochr.</small> (''Malvaceae'')
* ''[[Fenerivia emarginata]]'' <small>(Diels) R.M.K. Saunders</small> (← ''Polyalthia emarginata'' <small>Diels</small>) (''Annonaceae'')
* ''[[Fenerivia ghesquiereana]]'' <small>(Cavaco & Keraudren) R.M.K. Saunders</small> (← ''Polyalthia ghesquiereana'' <small>Cavaco & Keraudren</small>.) (''Annonaceae'')
* ''[[Isolona madagascariensis]]'' <small>(Baill.) Engl.</small> (''Annonaceae'')
* ''[[Polyalthia lamii]]'' <small>Cavaco & Keraudren</small> (''Annonaceae'')
== Jereo koa ==
* ''[[Humbertianthus]]''
* ''[[Fenerivia]]''
* ''[[Isolona]]''
* ''[[Polyalthia]]''
rx5494vqn4u44vckvgytuoa3q2eevmc
Takodara afrikana
0
301631
1149185
1148934
2026-08-13T13:07:17Z
EmausBot
2486
Rôbô : mamaha olam-pihodinana mankany amin'i [[Upupa epops africana]]
1149185
wikitext
text/x-wiki
#FIHODINANA [[Upupa epops africana]]
h2y0wakix0zi7uhfbfjaxbqrttmpijz
Module:Wikidata
828
301663
1149187
2026-08-13T16:52:45Z
~2026-44555-09
40710
Pejy noforonina tamin'ny « --script that retrieves basic data stored in Wikidata, for the datamodel, see https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua -- luacheck: globals mw local wd = {} -- creation of a subobject to store comparison funtions, used for sorting claims -- to be able to build more complex sorts like topological sorts wd.compare = {} local databases = { } local modules = { } local databasesNames = { -- modules de données statiques pouvant être appelé... »
1149187
Scribunto
text/plain
--script that retrieves basic data stored in Wikidata, for the datamodel, see https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua
-- luacheck: globals mw
local wd = {}
-- creation of a subobject to store comparison funtions, used for sorting claims
-- to be able to build more complex sorts like topological sorts
wd.compare = {}
local databases = { }
local modules = { }
local databasesNames = { -- modules de données statiques pouvant être appelés avec mw.loadData(), ne nécessitant pas require()
i18n = 'Module:Wikidata/I18n',
globes = 'Module:Wikidata/Globes',
langhierarchy = 'Module:Wikidata/Hiérarchie des langues',
langcodes = 'Module:Dictionnaire Wikidata/Codes langue', -- big, infrequently used
invertedlangcodes = 'Module:Dictionnaire Wikidata/Codes langue/inversé'
}
local modulesNames = {
reference = 'Module:Wikidata/Références',
linguistic = 'Module:Linguistique',
datemodule = 'Module:Date',
formatDate = 'Module:Date complexe',
formatNum = 'Module:Conversion',
langmodule = 'Module:Langue',
cite = 'Module:Biblio',
weblink = 'Module:Weblink'
}
local function loadDatabase( t, key )
if databasesNames[key] then
local m = mw.loadData( databasesNames[key] )
t[key] = m
return m
end
end
local function loadModule( t, key )
if modulesNames[key] then
local m = require( modulesNames[key] )
t[key] = m
return m
end
end
setmetatable( databases, { __index = loadDatabase } )
setmetatable( modules, { __index = loadModule } ) -- ainsi le require() sera opéré seulement si nécessaire par modules.(nom du module)
local datequalifiers = {'P585', 'P571', 'P580', 'P582', 'P1319', 'P1326'}
-- === I18n ===
local defaultlang = mw.getContentLanguage():getCode()
function wd.translate(str, rep1, rep2)
str = databases.i18n[str] or str
if rep1 and (type (rep1) == 'string') then
str = str:gsub('$1', rep1)
end
if rep2 and (type (rep2) == 'string')then
str = str:gsub('$2', rep2)
end
return str
end
local function addCat(cat, sortkey)
if sortkey then
return '[[Category:' .. cat .. '|' .. sortkey .. ']]'
end
return '[[Category:' .. cat .. ']]'
end
local function formatError( key , category, debug)
if debug then
return error(databases.i18n[key] or key)
end
if category then
return addCat(category, key)
else
return addCat(databases.i18n['cat-unsorted-issue'], key)
end
end
--
function wd.isSpecial(snak)
return (snak.snaktype ~= 'value')
end
function wd.getId(snak)
if (snak.snaktype == 'value') then
return snak.datavalue.value['id']
end
end
function wd.getNumericId(snak)
if (snak.snaktype == 'value') then
return snak.datavalue.value['numeric-id']
end
end
function wd.getMainId(claim)
return wd.getId(claim.mainsnak)
end
function wd.entityId(entity)
if type(entity) == 'string' then
return entity
elseif type(entity) == 'table' then
return entity.id
end
end
function wd.getEntityIdForCurrentPage()
return mw.wikibase.getEntityIdForCurrentPage()
end
-- function that returns true if the "qid" parameter is the qid
-- of the item that is linked to the calling page
function wd.isPageOfQId(qid)
local self_id = mw.wikibase.getEntityIdForCurrentPage()
return self_id ~= nil and qid == self_id
end
function wd.getEntity( val )
if type(val) == 'table' then
return val
end
if val == '-' then
return nil
end
if val == '' then
val = nil
end
return mw.wikibase.getEntity(val)
end
function wd.splitStr(val) -- transforme en table les chaînes venant du Wikitexte qui utilisent des virgules de séparation
if type(val) == 'string' then
val = mw.text.split(val, ",")
end
return val
end
function wd.isHere(searchset, val, matchfunction)
for i, j in pairs(searchset) do
if matchfunction then
if matchfunction(val,j) then
return true
end
else
if val == j then
return true
end
end
end
return false
end
local function wikidataLink(entity)
local name =':d:'
if type(entity) == 'string' then
if entity:match("P[0-9]+") then
entity = "Property:" .. entity
end
return name .. entity
elseif type(entity) == 'table' then
if entity["type"] == "property" then
name = ":d:Property:"
end
return name .. entity.id
elseif type(entity) == nil then
return formatError('entity-not-found')
end
end
function wd.siteLink(entity, project, lang)
-- returns 3 values: a sitelink (with the relevant prefix) a project name and a language
lang = lang or defaultlang
if (type(project) ~= 'string') then
project = 'wiki'
end
project = project:lower()
if project == 'wikipedia' then
project = 'wiki'
end
if type(entity) == 'string' and (project == 'wiki') and ( (not lang or lang == defaultlang) ) then -- évite de charger l'élément entier
local link = mw.wikibase.getSitelink(entity)
if link then
local test_redirect = mw.title.new(link) -- remplacement des redirections (retirer si trop coûteux)
if test_redirect.isRedirect and test_redirect.redirectTarget then
link = test_redirect.redirectTarget.fullText
if link == mw.title.getCurrentTitle().text then return nil end --redirection vers l'article de départ : pas de lien plutôt qu'une mise en gras
end
end
return link, 'wiki', defaultlang
end
if project == 'wikidata' then
return wikidataLink(entity), 'wikidata'
end
local projects = {
-- nom = {préfixe sur Wikidata, préfix pour les liens sur Wikipédia, ajouter préfixe de langue}
wiki = {'wiki', nil, true}, -- wikipedia
commons = {'commonswiki', 'commons', false},
commonswiki = {'commonswiki', 'commons', false},
wikiquote = {'wikiquote', 'q', true},
wikivoyage = {'wikivoyage', 'voy', true},
wikibooks = {'wikibooks', 'b', true},
wikinews = {'wikinews', 'n', true},
wikiversity = {'wikiversity', 'v', true},
wikisource = {'wikisource', 's', true},
wiktionary = {'wiktionary', 'wikt', true},
specieswiki = {'specieswiki', 'species', false},
metawiki = {'metawiki', 'm', false},
incubator = {'incubator', 'incubator', false},
outreach = {'outreach', 'outreach', false},
mediawiki = {'mediawiki', 'mw', false}
}
local entityid = entity.id or entity
local projectdata = projects[project:lower()]
if not projectdata then -- defaultlink might be in the form "dewiki" rather than "project: 'wiki', lang: 'de' "
for k, v in pairs(projects) do
if project:match( k .. '$' )
and mw.language.isKnownLanguageTag(project:sub(1, #project-#k))
then
lang = project:sub(1, #project-#k)
project = project:sub(#lang + 1, #project)
projectdata = projects[project]
break
end
end
if not mw.language.isKnownLanguageTag(lang) then
return --formatError('invalid-project-code', projet or 'nil')
end
end
if not projectdata then
return -- formatError('invalid-project-code', projet or 'nil')
end
local linkcode = projectdata[1]
local prefix = projectdata[2]
local multiversion = projectdata[3]
if multiversion then
linkcode = lang .. linkcode
end
local link = mw.wikibase.getSitelink(entityid, linkcode)
if not link then
return nil
end
if prefix then
link = prefix .. ':' .. link
end
if multiversion then
link = ':' .. lang .. ':' .. link
end
return link, project, lang
end
-- add new values to a list, avoiding duplicates
function wd.addNewValues(olditems, newitems, maxnum, stopval)
if not newitems then
return olditems
end
for _, qid in pairs(newitems) do
if stopval and (qid == stopval) then
table.insert(olditems, qid)
return olditems
end
if maxnum and (#olditems >= maxnum) then
return olditems
end
if not wd.isHere(olditems, qid) then
table.insert(olditems, qid)
end
end
return olditems
end
--=== FILTER CLAIMS ACCORDING TO VARIOUS CRITERIA : FUNCTION GETCLAIMS et alii ===
local function notSpecial(claim)
local type
if claim.mainsnak ~= nil then
type = claim.mainsnak.snaktype
else
-- condition respectée quand showonlyqualifier est un paramètre renseigné
-- dans ce cas, claim n'est pas une déclaration entière, mais UNE snak qualifiée du main snak
type = claim.snaktype
end
return type == 'value'
end
local function hasTargetValue(claim, targets) -- retourne true si la valeur est dans la liste des target, ou si c'est une valeur spéciale filtrée séparément par excludespecial
local id = wd.getMainId(claim)
local targets = wd.splitStr(targets)
return wd.isHere(targets, id) or wd.isSpecial(claim.mainsnak)
end
local function excludeValues(claim, values) -- true si la valeur n'est pas dans la liste, ou si c'est une valeur spéciale (filtrée à part par excludespecial)
return wd.isSpecial(claim.mainsnak) or not ( hasTargetValue(claim, values) )
end
local function hasTargetClass(claim, targets, maxdepth) -- retourne true si la valeur est une instance d'une classe dans la liste des target, ou si c'est une valeur spéciale filtrée séparément par excludespecial
local id = wd.getMainId(claim)
local targets = wd.splitStr(targets)
local maxdepth = maxdepth or 10
local matchfunction = function(value, target) return wd.isInstance(target, value, maxdepth) end
return wd.isHere(targets, id, matchfunction) or wd.isSpecial(claim.mainsnak)
end
local function excludeClasses(claim, classes, maxdepth) -- true si la valeur n'est pas une instance d'une classe dans la liste, ou si c'est une valeur spéciale (filtrée à part par excludespecial)
return wd.isSpecial(claim.mainsnak) or not ( hasTargetClass(claim, classes, maxdepth) )
end
local function hasTargetSuperclass(claim, targets, maxdepth) -- retourne true si la valeur est une sous-classe d'une classe dans la liste des target, ou si c'est une valeur spéciale filtrée séparément par excludespecial
local id = wd.getMainId(claim)
local targets = wd.splitStr(targets)
local maxdepth = maxdepth or 10
local matchfunction = function(value, target) return wd.isSubclass(target, value, maxdepth) end
return wd.isHere(targets, id, matchfunction) or wd.isSpecial(claim.mainsnak)
end
local function excludeSuperclasses(claim, classes, maxdepth) -- true si la valeur n'est pas une sous-classe d'une classe dans la liste, ou si c'est une valeur spéciale (filtrée à part par excludespecial)
return wd.isSpecial(claim.mainsnak) or not ( hasTargetSuperclass(claim, classes, maxdepth) )
end
local function bestRanked(claims)
if not claims then
return nil
end
local preferred, normal = {}, {}
for i, j in pairs(claims) do
if j.rank == 'preferred' then
table.insert(preferred, j)
elseif j.rank == 'normal' then
table.insert(normal, j)
end
end
if #preferred > 0 then
return preferred
else
return normal
end
end
local function withRank(claims, target)
if target == 'best' then
return bestRanked(claims)
end
local newclaims = {}
for pos, claim in pairs(claims) do
if target == 'valid' then
if claim.rank ~= 'deprecated' then
table.insert(newclaims, claim)
end
elseif claim.rank == target then
table.insert(newclaims, claim)
end
end
return newclaims
end
function wd.hasQualifier(claim, acceptedqualifs, acceptedvals, excludequalifiervalues)
local claimqualifs = claim.qualifiers
if (not claimqualifs) then
return false
end
acceptedqualifs = wd.splitStr(acceptedqualifs)
acceptedvals = wd.splitStr( acceptedvals)
local function ok(qualif) -- vérification pour un qualificatif individuel
if not claimqualifs[qualif] then
return false
end
if not (acceptedvals) then -- si aucune valeur spécifique n'est demandée, OK
return true
end
for i, wanted in pairs(acceptedvals) do
for j, actual in pairs(claimqualifs[qualif]) do
--On regarde si la valeur de l'élément correspond à un Qid cherché, puis à une chaîne de caractères cherchée.
--Cela suppose qu'un élément n'a pas comme valeur le Qid recherché exactement, mais c'est improbable.
if wd.getId(actual) == wanted or wd.getDataValue(actual) == wanted then
return true
end
end
end
end
for i, qualif in pairs(acceptedqualifs) do
if ok(qualif) then
return true
end
end
return false
end
local function hasSource(claim, targetsource, sourceproperty)
sourceproperty = sourceproperty or 'P248'
if targetsource == "-" then
return true
end
if (not claim.references) then
return false
end
local candidates = claim.references[1].snaks[sourceproperty] -- les snaks utilisant la propriété demandée
if (not candidates) then
return false
end
if (targetsource == "any") then -- si n'importe quelle valeur est acceptée tant qu'elle utilise en ref la propriété demandée
return true
end
targetsource = wd.splitStr(targetsource)
for _, source in pairs(candidates) do
local s = wd.getId(source)
for i, target in pairs(targetsource) do
if s == target then return true end
end
end
return false
end
local function excludeQualifier(claim, qualifier, qualifiervalues)
return not wd.hasQualifier(claim, qualifier, qualifiervalues)
end
local function hasLink(claim, site, lang)
if (claim.mainsnak.snaktype ~= 'value') then -- ne pas supprimer les valeurs spéciales, il y a une fonction dédiée pour ça
return true
end
local id = wd.getMainId(claim)
local link = wd.siteLink(id, site, lang)
if link then
return true
end
end
local function isInLanguage(claim, lang)
if type(lang) == 'table' then -- si c'est une table de language séparées par des virgules, on les accepte toutes
for i, l in pairs(lang) do
local v = isInLanguage(claim, l)
if v then
return true
end
end
end
if type(lang) ~= ('string') then
return --?
end
if (lang == '-') then
return true
end
if (lang == 'locallang') then
lang = mw.getContentLanguage():getCode()
end
-- pour les monolingual text
local snak = claim.mainsnak or claim
if snak.snaktype == 'value' and snak.datavalue.type == 'monolingualtext' then
if snak.datavalue.value.language == lang then
return true
end
return false
end
-- pour les autres types de données : recherche dans les qualificatifs
if (lang == 'fr') then
lang = 'Q150'
elseif (lang == 'en') then
lang = 'Q1860'
else
lang = databases.invertedlangcodes[lang]
end
if claim.qualifiers and claim.qualifiers.P407 then
if wd.hasQualifier(claim, {'P407'}, {lang}) then
return true
else
return false
end
end
return true -- si on ne ne sait pas la langue, on condière que c'est bon
end
local function firstVals(claims, numval) -- retourn les numval premières valeurs de la table claims
local numval = tonumber(numval) or 0 -- raise a error if numval is not a positive integer ?
if not claims then
return nil
end
while (#claims > numval) do
table.remove(claims)
end
return claims
end
local function lastVals(claims, numval2) -- retourn les valeurs de la table claims à partir de numval2
local numval2 = tonumber(numval2) or 0 -- raise a error if numval is not a positive integer ?
if not claims then
return nil
end
for i=1,numval2 do
table.remove(claims, 1)
end
return claims
end
-- retourne les valeurs de la table claims à partir de removedupesdate,
-- sans les dates en doublons avec conversion entre les calendrier julien et grégorien,
-- ou uniquement en catégorisant si le paramètre removedupesdate est égale à 'cat'
local function removeDupesDate(claims, removedupesdate)
if not claims or #claims < 2 then
return claims, ''
end
local cat = ''
local newClaims = {}
local newIsos = {}
local function findIndex(searchset, val) -- similaire à wd.isHere mais retourne l'index de la valeur trouvée
for i, j in pairs(searchset) do
if val == j then
return i
end
end
return -1
end
for _, claim in ipairs( claims ) do
local snak = claim.mainsnak or claim
if (snak.snaktype == 'value') and (snak.datatype == 'time') and snak.datavalue.value.precision >= 11 then -- s'il s'agit d'un time et que la précision est au moins l'année
local iso = snak.datavalue.value.time
_, _, iso = string.find(iso, "(+%d+-%d+-%d+T)")
local deleteIfDuplicate = false
if snak.datavalue.value.calendarmodel == 'http://www.wikidata.org/entity/Q1985727' then -- si la date est grégorienne
if modules.formatDate.before('+1582', iso) then -- si avant 1582 on calcule la date julienne
_, _, y, m, d = string.find(iso, "+(%d+)-(%d+)-(%d+)T")
y, m , d = modules.datemodule.gregorianToJulian(y, m , d)
if m < 10 then m = '0' .. m end
if d < 10 then d = '0' .. d end
iso = '+' .. y .. '-' .. m .. '-' .. d .. 'T'
deleteIfDuplicate = true
end
local index = findIndex(newIsos, iso)
if index >= 0 then -- si la date est déjà présente
cat = cat .. '[[Catégorie:Article avec des dates identiques venant de wikidata dans le code de l\'infobox]]'
if removedupesdate == "cat" then -- ne faire que catégoriser
table.insert(newIsos, iso)
table.insert(newClaims, claim)
elseif not deleteIfDuplicate then -- supprimer l'autre date si la date courante n'a pas été convertie
newClaims[index] = claim
end -- sinon supprimer la date courante
else -- pas de doublon
table.insert(newIsos, iso)
table.insert(newClaims, claim)
end
elseif snak.datavalue.value.calendarmodel == 'http://www.wikidata.org/entity/Q1985786' then -- si date julienne
if not modules.formatDate.before('+1582', iso) then -- si après 1582 on calcule la date grégorienne
_, _, y, m, d = string.find(iso, "+(%d+)-(%d+)-(%d+)T")
y, m , d = modules.datemodule.julianToGregorian(y, m , d)
if m < 10 then m = '0' .. m end
if d < 10 then d = '0' .. d end
iso = '+' .. y .. '-' .. m .. '-' .. d .. 'T'
deleteIfDuplicate = true
end
local index = findIndex(newIsos, iso)
if index >= 0 then -- si date déjà présente
cat = cat .. '[[Catégorie:Article avec des dates identiques venant de wikidata dans le code de l\'infobox]]'
if removedupesdate == "cat" then -- ne faire que catégoriser
table.insert(newIsos, iso)
table.insert(newClaims, claim)
elseif not deleteIfDuplicate then -- supprimer l'autre date si la date courante n'a pas été convertie
newClaims[index] = claim
end -- sinon supprimer la date courante
else -- pas de doublon
table.insert(newIsos, iso)
table.insert(newClaims, claim)
end
else -- autre calendrier
table.insert(newIsos, iso)
table.insert(newClaims, claim)
end
else -- précision insuffisante
table.insert(newIsos, iso)
table.insert(newClaims, claim)
end
end
return newClaims, cat
end
local function timeFromQualifs(claim, qualifs)
local claimqualifs = claim.qualifiers
if not claimqualifs then
return nil
end
for i, qualif in ipairs(qualifs or datequalifiers) do
local vals = claimqualifs[qualif]
if vals and (vals[1].snaktype == 'value') then
return vals[1].datavalue.value.time, vals[1].datavalue.value.precision
end
end
end
local function atDate(claim, mydate)
if mydate == "today" then
mydate = os.date("!%Y-%m-%dT%TZ")
end
-- determines required precision depending on the atdate format
local d = mw.text.split(mydate, "-")
local myprecision
if d[3] then
myprecision = 11 -- day
elseif d[2] then
myprecision = 10 -- month
else
myprecision = 9 -- year
end
-- with point in time
local d, storedprecision = timeFromQualifs(claim, {'P585'})
if d then
return modules.formatDate.equal(mydate, d, math.min(myprecision, storedprecision))
end
-- with start or end date -- TODO: precision
local mindate = timeFromQualifs(claim, {'P580'})
local maxdate = timeFromQualifs(claim, {'P582'})
if modules.formatDate.before(mydate, mindate) and modules.formatDate.before(maxdate, mydate) then
return true
end
return false
end
local function check(claim, condition)
if type(condition) == 'function' then -- cas standard
return condition(claim)
end
return formatError('invalid type', 'function', type(condition))
end
local function minPrecision(claim, minprecision)
local snak
if claim.qualifiers then -- si une date est donnée en qualificatif, c'est elle qu'on utilise de préférence au mainsnak
for i, j in ipairs(datequalifiers) do
if claim.qualifiers[j] then
snak = claim.qualifiers[j][1]
break
end
end
end
if not snak then
snak = claim.mainsnak or claim
end
if (snak.snaktype == 'value') and (snak.datatype == 'time') and (snak.datavalue.value.precision < minprecision) then
return false
end
return true
end
function wd.sortClaims(claims, sorttype)
if not claims then
return nil
end
if wd.isHere({'chronological', 'order', 'inverted', 'age', 'ageinverted'}, sorttype) then
return wd.chronoSort(claims, sorttype)
elseif sorttype == 'ascending' then
return wd.quantitySort(claims)
elseif sorttype == 'descending' then
return wd.quantitySort(claims, true)
elseif sorttype == 'alphabetical' then
return wd.alphabetSort(claims)
elseif sorttype == "language" then
return wd.sortByLanguage(claims)
elseif type(sorttype) == 'function' then
table.sort(claims, sorttype)
return claims
elseif type(sorttype) == 'string' and sorttype:sub(1, 1) == 'P' then
return wd.numericPropertySort(claims, sorttype)
end
return claims
end
function wd.filterClaims(claims, args) --retire de la tables de claims celles qui sont éliminés par un des filters de la table des filters
args.excludevalues = args.excludevalues or args.excludevalue --support du singulier pour des arguments normalement au pluriel
args.excludeclasses = args.excludeclasses or args.excludeclass
args.excludesuperclasses = args.excludesuperclasses or args.excludesuperclass
local function filter(condition, filterfunction, funargs)
if not args[condition] then
return
end
for i = #claims, 1, -1 do
if not( filterfunction(claims[i], args[funargs[1]], args[funargs[2]], args[funargs[3]]) ) then
table.remove(claims, i)
end
end
end
filter('isinlang', isInLanguage, {'isinlang'} )
filter('excludespecial', notSpecial, {} )
filter('condition', check, {'condition'} )
if claims[1] and claims[1].mainsnak then
filter('targetvalue', hasTargetValue, {'targetvalue','maxdepth'} )
filter('targetclass', hasTargetClass, {'targetclass','maxdepth'} )
filter('targetsuperclass', hasTargetSuperclass, {'targetsuperclass'} )
filter('atdate', atDate, {'atdate'} )
filter('qualifier', wd.hasQualifier, {'qualifier', 'qualifiervalue'} )
filter('excludequalifier', excludeQualifier, {'excludequalifier', 'excludequalifiervalue'} )
filter('withsource', hasSource, {'withsource', 'sourceproperty'} )
filter('excludevalues', excludeValues, {'excludevalues'})
filter('excludeclasses', excludeClasses, {'excludeclasses','maxdepth'})
filter('excludesuperclasses', excludeSuperclasses, {'excludesuperclasses','maxdepth'})
filter('withlink', hasLink, {'withlink', 'linklang'} )
filter('minprecision', minPrecision, {'minprecision'} )
claims = withRank(claims, args.rank or 'best')
end
if #claims == 0 then
return nil
end
if args.sorttype then
claims = wd.sortClaims(claims, args.sorttype)
end
if args.numval2 then
claims = lastVals(claims, args.numval2)
end
if args.numval then
claims = firstVals(claims, args.numval)
end
return claims
end
function wd.loadEntity(entity, cache)
if type(entity) ~= 'table' then
if cache then
if not cache[entity] then
cache[entity] = mw.wikibase.getEntity(entity)
mw.log("cached")
end
return cache[entity]
else
if entity == '' or (entity == '-') then
entity = nil
end
return mw.wikibase.getEntity(entity)
end
else
return entity
end
end
function wd.getClaims( args ) -- returns a table of the claims matching some conditions given in args
if args.claims then -- if claims have already been set, return them
return args.claims
end
local properties = args.property
if type(properties) == 'string' then
properties = wd.splitStr(string.upper(args.property))
end
if not properties then
return formatError( 'property-param-not-provided' )
end
--Get entity
local entity = args.entity
if type(entity) == 'string' then
if entity == '' then
entity = nil
end
elseif type(entity) == 'table' then
entity = entity.id
end
if (not entity) then
entity = mw.wikibase.getEntityIdForCurrentPage()
end
if (not entity) or (entity == '-') or (entity == wd.translate('somevalue')) or (entity == modules.linguistic.ucfirst(wd.translate('somevalue'))) then
return nil
end
if args.labelformat and args.labelformat == 'gendered' then
args.labelformat = wd.getgender(entity)
end
local claims = {}
if #properties == 1 then
claims = mw.wikibase.getAllStatements(entity, properties[1]) -- do not use mw.wikibase.getBestStatements at this stage, as it may remove the best ranked values that match other criteria in the query
else
for i, prop in ipairs(properties) do
local newclaims = mw.wikibase.getAllStatements(entity, prop)
if newclaims and #newclaims > 0 then
for j, claim in ipairs(newclaims) do
table.insert(claims, claim)
end
end
end
end
if (not claims) or (#claims == 0) then
return nil
end
return wd.filterClaims(claims, args)
end
--=== ENTITY FORMATTING ===
function wd.getLabel(entity, lang1, lang2)
if (not entity) then
return nil -- ou option de gestion des erreurs ?
end
entity = entity.id or ( type(entity) == "string" and entity)
if not(type(entity) == 'string') then return nil end
lang1 = lang1 or defaultlang
local str, lang --str : texte rendu, lang : langue de celui-ci
if lang1 == defaultlang then -- le plus économique
str, lang = mw.wikibase.getLabelWithLang(entity) -- le libellé peut être en français ou en anglais
else
str = mw.wikibase.getLabelByLang(entity, lang1)
if str then lang = lang1 end
end
if str and (lang == lang1 or lang == "mul") then --pas de catégorie "à traduire" si on a obtenu un texte dans la langue désirée (normalement fr) ou multilingue
return str
end
if lang2 then -- langue secondaire, avec catégorie "à traduire"
str2 = mw.wikibase.getLabelByLang(entity, lang2)
if str2 then
lang = lang2
str = str2
end
end
if not str then --si ni lang1, ni lang2 ni l'anglais ne sont présents, parcours de la hiérarchie des langues
for _, trylang in ipairs(databases.langhierarchy.codes) do
str = mw.wikibase.getLabelByLang(entity, trylang)
if str then
lang = trylang
break
end
end
end
if str then
local translationCat = databases.i18n['to translate']
translationCat = translationCat .. (databases.langhierarchy.cattext[lang] or '')
translationCat = addCat(translationCat)
return str, translationCat
end
end
function wd.formatEntity( entity, params )
if (not entity) then
return nil --formatError('entity-not-found')
end
local id = entity
if type(id) == 'table' then
id = id.id
end
params = params or {}
local lang = params.lang or defaultlang
local speciallabels = params.speciallabels
local displayformat = params.displayformat
local labelformat = params.labelformat
local labelformat2 = params.labelformat2
local defaultlabel = params.defaultlabel or id
local linktype = params.link
local defaultlink = params.defaultlink
local defaultlinkquery = params.defaultlinkquery
if speciallabels and speciallabels[id] then --speciallabels override the standard label + link combination
return speciallabels[id]
end
if params.displayformat == 'raw' then
return id
end
if wd.isGender[params.labelformat] then
labelformat = function(objectid) return wd.genderedlabel(objectid, params.labelformat) end
end
local label, translationCat
if type(labelformat) == 'function' then -- sert à des cas particuliers
label, translationCat = labelformat(entity)
end
if not label then
label, translationCat = wd.getLabel(entity, lang, params.wikidatalang)
end
if labelformat == 'bold' or labelformat2 == 'bold' then --mises en forme typographiques simples accessibles depius le wikicode
labelformat2 = function(str) if label then return "'''" .. str .. "'''" end end
end
if labelformat == 'italic' or labelformat2 == 'italic' then
labelformat2 = function(str) if label then return "''" .. str .. "''" end end
end
if type(labelformat2) == 'function' and label then
label = labelformat2(label)
end
translationCat = translationCat or "" -- sera toujours ajoutée au résultat mais sera vide si la catégorie de maintenance n'est pas nécessaire
if not label then
if (defaultlabel == '-') then
return nil
end
local link = wd.siteLink(id, 'wikidata')
return '[[' .. link .. '|' .. id .. ']]' .. translationCat
-- si pas de libellé, on met un lien vers Wikidata pour qu'on comprenne à quoi ça fait référence
end
if params.ucfirst_entity then
label = modules.linguistic.ucfirst(label)
end
-- détermination du fait qu'on soit ou non en train de rendre l'élément sur la page de son article
local rendering_entity_on_its_page = wd.isPageOfQId(id)
if (linktype == '-') or rendering_entity_on_its_page then
return label .. translationCat
end
local link = wd.siteLink(entity, linktype, lang)
-- defaultlinkquery will try to link to another page on this Wiki
if (not link) and defaultlinkquery then
if type(defaultlinkquery) == 'string' then
defaultlinkquery = {property = defaultlinkquery}
end
defaultlinkquery.excludespecial = true
defaultlinkquery.entity = entity
local claims = wd.getClaims(defaultlinkquery)
if claims then
for i, j in pairs(claims) do
local id = wd.getMainId(j)
link = wd.siteLink(id, linktype, lang)
if link then
break
end
end
end
end
if link then
if link:match('^Category:') or link:match('^Catégorie:') then -- attention, le « é » est multibyte
-- lier vers une catégorie au lieu de catégoriser
link = ':' .. link
end
return '[[' .. link .. '|' .. label .. ']]' .. translationCat
end
-- if not link, you can use defaultlink: a sidelink to another Wikimedia project
if (not defaultlink) then
defaultlink = {'enwiki'}
end
if defaultlink and (defaultlink ~= '-') then
local linktype
local sidelink, site, langcode
if type(defaultlink) == 'string' then
defaultlink = {defaultlink}
end
for i, j in ipairs(defaultlink) do
sidelink, site, langcode = wd.siteLink(entity, j, lang)
if sidelink then
break
end
end
if not sidelink then
sidelink, site = wd.siteLink(entity, 'wikidata')
end
local icon, class, title = site, nil, nil -- le texte affiché du lien
if site == 'wiki' then
icon, class, title = langcode, "indicateur-langue", wd.translate('see-another-language', mw.language.fetchLanguageName(langcode, defaultlang))
elseif site == 'wikidata' then
icon, class, title = 'd', "indicateur-langue", wd.translate('see-wikidata')
else
title = wd.translate('see-another-project', site)
end
local val = '[[' .. sidelink .. '|' .. '<span class = "' .. (class or '').. '" title = "' .. (title or '') .. '">' .. icon .. '</span>]]'
return label .. ' <small>(' .. val .. ')</small>' .. translationCat
end
return label .. translationCat
end
function wd.addTrackingCat(prop, cat) -- doit parfois être appelé par d'autres modules
if type(prop) == 'table' then
local catTable = {}
for i, v in ipairs(prop) do
catTable[i] = wd.addTrackingCat(v,cat)
end
return table.concat(catTable)
end
if not prop and not cat then
return formatError("property-param-not-provided")
end
if not cat then
cat = wd.translate('trackingcat', prop or 'P??')
end
return addCat(cat)
end
local function unknownValue(snak, label)
local str = label
if type(str) == "function" then
str = str(snak)
end
if (not str) then
if snak.datatype == 'time' then
str = wd.translate('sometime')
else
str = wd.translate('somevalue')
end
end
if type(str) ~= "string" then
return formatError(snak.datatype)
end
return str
end
local function noValue(displayformat)
if not displayformat then
return wd.translate('novalue')
end
if type(displayformat) == 'string' then
return displayformat
end
return formatError()
end
local function getLangCode(entityid)
return databases.langcodes[tonumber(entityid:sub(2))]
end
local function showLang(statement) -- retourne le code langue entre parenthèses avant la valeur (par exemple pour les biblios et liens externes)
local mainsnak = statement.mainsnak
if mainsnak.snaktype ~= 'value' then
return nil
end
local langlist = {}
if mainsnak.datavalue.type == 'monolingualtext' then
langlist = {mainsnak.datavalue.value.language}
elseif (not statement.qualifiers) or (not statement.qualifiers.P407) then
return
else
for i, j in pairs( statement.qualifiers.P407 ) do
if j.snaktype == 'value' then
local langentity = wd.getId(j)
local langcode = getLangCode(langentity)
table.insert(langlist, langcode)
end
end
end
if (#langlist > 1) or (#langlist == 1 and langlist[1] ~= defaultlang) then -- si c'est en français, pas besoin de le dire
langlist.maxLang = 3
return modules.langmodule.indicationMultilingue(langlist)
end
end
-- === DATE HANDLING ===
local function fuzzydate(str, precision) -- ajoute le qualificatif "vers" à une date
if not str then
return nil
end
if (precision >= 11) or (precision == 7) or (precision == 6) then --dates avec jour, siècles, millénaires
return "vers le " .. str
end
if (precision == 8) then --décennies ("années ...")
return "vers les " .. str
end
return "vers " .. str
end
function wd.addStandardQualifs(str, statement, onlygeneral)
-- qualificateurs de date ou de lieu approximatif ou d'info globalement incertaine ; onlygenereal=true pour rerstreindre à ces derniers
if (not statement) or (not statement.qualifiers) then
return str
end
if not str then
return error()-- what's that ?
end
if statement.qualifiers.P1480 then
for i, j in pairs(statement.qualifiers.P1480) do
local v = wd.getId(j)
if (v == "Q21818619") and not onlygeneral then --"à proximité de"
str = wd.translate('approximate-place', str)
elseif (v == "Q18122778") or (v == "Q18912752") or (v == "Q56644435") or (v == "Q30230067") then --"présumé", "controversé", "probablement", "possible"
str = wd.translate('uncertain-information', str)
elseif (v == "Q5727902") and not onlygeneral and statement.mainsnak.datatype == 'time' then --date approximative
local datevalue = statement.mainsnak.datavalue
if datevalue then str = fuzzydate(str, datevalue.value.precision) end
end
end
end
return str
end
function wd.getDateFromQualif(statement, qualif)
if (not statement) or (not statement.qualifiers) or not (statement.qualifiers[qualif]) then
return nil
end
local v = statement.qualifiers[qualif][1]
if v.snaktype ~= 'value' then -- que faire dans ce cas ?
return nil
end
return modules.formatDate.dateObject(v.datavalue.value)
end
function wd.getDate(statement)
local period = wd.getDateFromQualif(statement, 'P585') -- retourne un dateobject
if period then
return period
end
local begin, ending = wd.getDateFromQualif(statement, 'P580'), wd.getDateFromQualif(statement, 'P582')
if begin or ending then
return modules.formatDate.rangeObject(begin, ending) -- retourne un rangeobject fait de deux dateobject
end
return nil
end
function wd.getFormattedDate(statement, params)
if not statement then
return nil
end
local str
--cherche la date avec les qualifs P580/P582
local datetable = wd.getDate(statement)
if datetable then
str = modules.formatDate.objectToText(datetable, params)
end
-- puis limite intérieur / supérieur
if not str then
local start, ending = wd.getDateFromQualif(statement, 'P1319'), wd.getDateFromQualif(statement, 'P1326')
str = modules.formatDate.between(start, ending, params)
end
local fromqualif = false
if str then fromqualif = true end --si la date est tirée des qualificateurs, on n'y ajoute pas l'éventuel "vers ..."
-- sinon, le mainsnak, pour les données de type time
if (not str) and (statement.mainsnak.datatype == 'time') then
local mainsnak = statement.mainsnak
if (mainsnak.snaktype == 'value') or (mainsnak.snaktype == 'somevalue') then
str = wd.formatSnak(mainsnak, params)
end
end
if str and params and (params.addstandardqualifs ~= '-') then
str = wd.addStandardQualifs(str, statement, fromqualif)
end
return str
end
wd.compare.by_quantity = function(c1, c2)
local v1 = wd.getDataValue(c1.mainsnak)
local v2 = wd.getDataValue(c2.mainsnak)
if not (v1 and v2) then
return true
end
return v1 < v2
end
--[[ tri chronologique générique :
retourne une fonction de tri de liste de déclaration
en fonction d’une fonction qui calcule la clé de tri
et d’une fonction qui compare les clés de tri
paramètres nommés: (appel type wikidata.compare.chrono_key_sort{sortKey="nom clé"})
sortKey (optionnel) : chaine, le nom de la clé utilisée pour un tri
(pour éviter de rentrer en collision avec "dateSortKey"
utilisé par chronoSort au besoin)
snak_key_get_function : fonction qui calcule la valeur de la clé à partir d’un snak ou d’une déclaration,
(obligatoire) le résultat n’est calculé qu’une fois et est stocké en cache dans claim[sortKey]
key_compare_function : fonction de comparaison des clés calculées par snak_key_get_function
(optionnel)
--]]
function wd.chrono_key_sort(arg)
local snak_key_get_function = arg.snak_key_get_function
local sortKey = arg.sortKey or "dateSortKey"
local key_compare_function = arg.key_compare_function or
function(c1, c2) return c1 < c2 end
return function(claims)
for _, claim in ipairs( claims ) do
if not claim[sortKey] then
local key = snak_key_get_function(claim)
if key then
claim[sortKey] = wd.compare.get_claim_date(key)
else
claim[sortKey] = 0
end
end
end
table.sort(
claims,
function(c1, c2)
return key_compare_function(c1[sortKey], c2[sortKey])
end
)
return claims
end
end
function wd.quantitySort(claims, inverted)
local function sort(c1, c2)
local v1 = wd.getDataValue(c1.mainsnak)
local v2 = wd.getDataValue(c2.mainsnak)
if not (v1 and v2) then
return true
end
if inverted then
return v2 < v1
end
return v1 < v2
end
table.sort(claims, sort )
return claims
end
function wd.alphabetSort(claims)
local function sort(c1, c2)
local v1 = wd.getDataValue(c1.mainsnak, {link = '-', displayformat = {monolingualtext = 'raw'}})
local v2 = wd.getDataValue(c2.mainsnak, {link = '-', displayformat = {monolingualtext = 'raw'}})
if not (v1 and v2) then
return true
end
return modules.linguistic.makeSortkey(v1) < modules.linguistic.makeSortkey(v2)
end
table.sort(claims, sort )
return claims
end
function wd.compare.get_claim_date(claim, datetype) -- rend une date au format numérique pour faire des comparaisons
local snak = claim.mainsnak or claim
if datetype and datetype == 'personbirthdate' then -- fonctionne avec un claim dont la valeur est une personne dont on va rendre la date de naissance
if (snak.snaktype == 'value') and (snak.datatype == 'wikibase-item') then
local personid = wd.getId(snak)
local birthclaims = wd.getClaims({ entity = personid, property = 'P569', numval = 1})
if birthclaims then
return wd.compare.get_claim_date(birthclaims[1] or birthclaims)
else return math.huge end
else return math.huge end -- en cas de donnée manquante, valeur infinie qui entraîne le classement en fin de liste
end
local iso, datequalif, isonumber
if (snak.snaktype == 'value') and (snak.datatype == 'time') then
iso = snak.datavalue.value.time
else
for i, dqualif in ipairs(datequalifiers) do
iso = timeFromQualifs(claim, {dqualif})
if iso then
datequalif = dqualif
break
end
end
if not iso then return math.huge end
end
-- transformation en nombre (indication de la base car gsub retourne deux valeurs)
isonumber = tonumber( iso:gsub( '(%d)%D', '%1' ), 10 )
-- ajustement de la date tenant compte du qualificatif dont elle est issue : un fait se terminant à une date est antérieur à un autre commençant à cette date
if datequalif == 'P582' then --date de fin
isonumber = isonumber - 2
elseif datequalif == 'P1326' then -- date au plus tard
isonumber = isonumber - 1
elseif datequalif == 'P1319' then -- date au plus tôt
isonumber = isonumber + 1
elseif datequalif == 'P571' or datequalif == 'P580' then -- date de début et date de création
isonumber = isonumber + 2
end
return isonumber
end
function wd.compare.chronoCompare(c1, c2)
return wd.compare.get_claim_date(c1) < wd.compare.get_claim_date(c2)
end
-- fonction pour renverser l’ordre d’une autre fonction
function wd.compare.rev(comp_criteria)
return function(c1, c2)
-- attention les tris en lua attendent des fonctions de comparaison strictement inférieur, on doit
-- vérifier la non égalité quand on inverse l’ordre d’un critère, d’ou "and comp_criteria(c2,c1)"
return not(comp_criteria(c1,c2)) and comp_criteria(c2,c1)
end
end
-- Fonction qui trie des Claims de type time selon l'ordre chronologique
-- Une clé de tri nomée « dateSortKey » est ajouté à chaque claim.
-- Si des clés de tri de ce nom existent déjà, elles sont utilisées sans modification.
function wd.chronoSort( claims, sorttype )
for _, claim in ipairs( claims ) do
if not claim.dateSortKey then
if sorttype and (sorttype == 'age' or sorttype == 'ageinverted') then
claim.dateSortKey = wd.compare.get_claim_date(claim, 'personbirthdate')
else
claim.dateSortKey = wd.compare.get_claim_date(claim)
end
if sorttype and (sorttype == 'inverted' or sorttype == 'ageinverted') and claim.dateSortKey == math.huge then
claim.dateSortKey = -math.huge -- quand la donnée est manquante on lui assigne la valeur qui entraîne le classement en fin de liste
end
end
end
table.sort(
claims,
function ( c1, c2 )
if sorttype and (sorttype == 'inverted' or sorttype == 'ageinverted') then
return c2.dateSortKey < c1.dateSortKey
end
return c1.dateSortKey < c2.dateSortKey
end
)
return claims
end
-- Function to prioritize certain languages in a multilingual label context
-- prioritize french, mul, roman languages, english if not all values needed
function wd.sortByLanguage(claims)
-- Arbitrary order for now, ask to make it a parameter if needed
local priority = {
fr=1, mul=2, ["en-gb"]=3, en=4, es=5, it=6, de=7
}
-- maybe something to generalize a bit :
-- local wikilang = mw.getContentLanguage()
-- local priority = wikilang:getFallbackLanguages()
-- priority.insert(priority, 1, wikilang.code)
local function get_priority(lang)
local attempt = priority[lang]
if attempt ~= nil then
return attempt
else
return math.huge
end
end
local function get_snak_value(mainsnak)
if mainsnak.datavalue and
mainsnak.datavalue.value then
return mainsnak.datavalue.value
end
end
-- get the main val as an object
local function get_main_value(claim)
if claim.mainsnak then
return get_snak_value(claim.mainsnak)
end
end
local function sortfunction(v1, v2)
-- get a value if they are statements or qualifiers as well
local str1 = get_main_value(v1) or get_snak_value(v1)
local str2 = get_main_value(v2) or get_snak_value(v2)
if str1 ~= nil and str2 ~= nil then
local prio1 = get_priority(str1.language)
local prio2 = get_priority(str2.language)
return prio1 < prio2
elseif str1 then
return true
else
return false
end
end
table.sort(claims, sortfunction)
return claims
end
local function get_numeric_claim_value(claim, propertySort)
local val
local claimqualifs = claim.qualifiers
if claimqualifs then
local vals = claimqualifs[propertySort]
if vals and vals[1].snaktype == 'value' then
val = vals[1].datavalue.value
end
end
return tonumber(val or 0)
end
function wd.compare.numeric(propertySort)
return function(c1, c2)
return get_numeric_claim_value(c1, propertySort) < get_numeric_claim_value(c2, propertySort)
end
end
-- Fonction qui trie des Claims de type value selon l'ordre de la propriété fournit
-- Une clé de tri nomée « dateSortKey » est ajouté à chaque claim.
-- Si des clés de tri de ce nom existent déjà, elles sont utilisées sans modification.
function wd.numericPropertySort( claims, propertySort )
for _, claim in ipairs( claims ) do
if not claim.dateSortKey then
local val = get_numeric_claim_value(claim, propertySort)
claim.dateSortKey = tonumber(val or 0)
end
end
table.sort(
claims,
function ( c1, c2 )
return c1.dateSortKey < c2.dateSortKey
end
)
return claims
end
--[[
test possible en console pour la fonction précédente :
= p.formatStatements{entity = "Q375946", property = 'P50', sorttype = 'P1545', linkback = "true"}
--]]
-- ===================
function wd.getReferences(statement)
local refdata = statement.references
if not refdata then
return nil
end
local refs = {}
local hashes = {}
for i, ref in pairs(refdata) do
local s
local function hasValue(prop) -- checks that the prop is here with valid value
if ref.snaks[prop] and ref.snaks[prop][1].snaktype == 'value' then
return true
end
return false
end
if ref.snaks.P248 then -- cas lorsque P248 (affirmé dans) est utilisé
for j, source in pairs(ref.snaks.P248) do
if source.snaktype == 'value' then
local page, accessdate, quotation
if hasValue('P304') then -- page
page = wd.formatSnak(ref.snaks.P304[1])
end
if hasValue('P813') then -- date de consultation
accessdate = wd.formatSnak(ref.snaks.P813[1])
end
if hasValue('P1683') then -- citation
quotation = wd.formatSnak(ref.snaks.P1683[1])
end
local sourceId = wd.getId(source)
s = modules.reference.citeitem(sourceId, {['page'] = page, ['accessdate'] = accessdate, ['citation'] = quotation})
table.insert(refs, s)
table.insert(hashes, ref.hash .. sourceId)
end
end
elseif hasValue('P8091') or hasValue('P854') then -- cas lorsque P8091 (Archival Resource Key) ou P854 (URL de la référence)est utilisé
local arkKey, url, title, author, publisher, accessdate, publishdate, publishlang, quotation, description
if hasValue('P8091') then
arkKey = wd.formatSnak(ref.snaks.P8091[1], {text = "-"})
url = 'https://n2t.net/' .. arkKey
if hasValue('P1476') then
title = wd.formatSnak(ref.snaks.P1476[1])
else
title = arkKey
end
elseif hasValue('P854') then
url = wd.formatSnak(ref.snaks.P854[1], {text = "-"})
if hasValue('P1476') then
title = wd.formatSnak(ref.snaks.P1476[1])
else
title = mw.ustring.gsub(url, '^[Hh][Tt][Tt][Pp]([Ss]?):(/?)([^/])', 'http%1://%3')
end
end
--todo : handle multiple values for author, etc.
if hasValue('P1810') then -- sous le nom
description = 'sous le nom ' .. wd.formatSnak(ref.snaks.P1810[1])
end
if hasValue('P813') then -- date de consultation
accessdate = wd.formatSnak(ref.snaks.P813[1])
end
if hasValue('P50') then -- author (item type)
author = wd.formatSnak(ref.snaks.P50[1])
elseif hasValue('P2093') then -- author (string type)
author = wd.formatSnak(ref.snaks.P2093[1])
end
if hasValue('P123') then -- éditeur
publisher = wd.formatSnak(ref.snaks.P123[1])
end
if hasValue('P1683') then -- citation
quotation = wd.formatSnak(ref.snaks.P1683[1])
end
if hasValue('P577') then -- date de publication
publishdate = wd.formatSnak(ref.snaks.P577[1])
end
if hasValue('P407') then -- langue de l'œuvre
local id = wd.getId(ref.snaks.P407[1])
publishlang = getLangCode(id)
end
s = modules.cite.lienWeb{titre = title, url = url, auteur = author, editeur = publisher, langue = publishlang, ['en ligne le'] = publishdate, ['consulté le'] = accessdate, ['citation'] = quotation, ['description'] = description}
table.insert(hashes, ref.hash)
table.insert(refs, s)
elseif ref.snaks.P854 and ref.snaks.P854[1].snaktype == 'value' then
s = wd.formatSnak(ref.snaks.P854[1], {text = "-"})
table.insert(hashes, ref.snaks.P854[1].hash)
table.insert(refs, s)
end
end
if #refs > 0 then
if #hashes == #refs then
return refs, hashes
end
return refs
end
end
function wd.sourceStr(sources, hashes)
if not sources or (#sources == 0) then
return nil
end
local useHashes = hashes and #hashes == #sources
for i, j in ipairs(sources) do
local refArgs = {name = 'ref', content = j}
if useHashes and hashes[i] ~= '-' then
refArgs.args = {name = 'wikidata-' .. hashes[i]}
end
sources[i] = mw.getCurrentFrame():extensionTag(refArgs)
end
return table.concat(sources, '<sup class="reference cite_virgule">,</sup>')
end
function wd.getDataValue(snak, params)
if not params then
params = {}
end
local speciallabels = params.speciallabels -- parfois on a besoin de faire une liste d'éléments pour lequel le libellé doit être changé, pas très pratique d'utiliser une fonction pour ça
if snak.snaktype ~= 'value' then
return nil
end
local datatype = snak.datatype
local value = snak.datavalue.value
local displayformat = params.displayformat
if type(displayformat) == 'table' then
displayformat = displayformat[datatype]
end
if type(displayformat) == 'function' then
return displayformat(snak, params)
end
if datatype == 'wikibase-item' then
return wd.formatEntity(wd.getId(snak), params)
end
if datatype == 'url' then
if params.displayformat == 'raw' then
return value
else
return modules.weblink.makelink(value, params.text)
end
end
if datatype == 'math' then
return mw.getCurrentFrame():extensionTag( "math", value)
end
if datatype == 'tabular-data' then
return mw.ustring.sub(value, 6, 100) -- returns the name of the file, without the "Data:" prefix
end
if (datatype == 'string') or (datatype == 'external-id') or (datatype == 'commonsMedia') then -- toutes les données de type string sauf "math"
if params.urlpattern then
local urlpattern = params.urlpattern
if type(urlpattern) == 'function' then
urlpattern = urlpattern(value)
end
-- encodage de l'identifiant qui se retrouve dans le path de l'URL, à l'exception des slashes parfois rencontrés, qui sont des séparateurs à ne pas encoder
local encodedValue = mw.uri.encode(value, 'PATH'):gsub('%%2F', '/')
-- les parenthèses autour du encodedValue:gsub() sont nécessaires, sinon sa 2e valeur de retour est aussi passée en argument au mw.ustring.gsub() parent
local url = mw.ustring.gsub(urlpattern, '$1', (encodedValue:gsub('%%', '%%%%')))
value = '[' .. url .. ' ' .. (params.text or value) .. ']'
end
return value
end
if datatype == 'time' then -- format example: +00000001809-02-12T00:00:00Z
if displayformat == 'raw' then
return value.time
else
local dateobject = modules.formatDate.dateObject(value, {precision = params.precision})
return modules.formatDate.objectToText(dateobject, params)
end
end
if datatype == 'globe-coordinate' then
-- retourne une table avec clés latitude, longitude, précision et globe à formater par un autre module (à changer ?)
if displayformat == 'latitude' then
return value.latitude
elseif displayformat == 'longitude' then
return value.longitude
else
local coordvalue = mw.clone( value )
coordvalue.globe = databases.globes[value.globe] -- transforme l'ID du globe en nom anglais utilisable par geohack
return coordvalue -- note : les coordonnées Wikidata peuvent être utilisée depuis Module:Coordinates. Faut-il aussi autoriser à appeler Module:Coordiantes ici ?
end
end
if datatype == 'quantity' then -- todo : gérer les paramètres précision
local amount, unit = value.amount, value.unit
if unit then
unit = unit:match('Q%d+')
end
if not unit then
unit = 'dimensionless'
end
local raw
if displayformat == "raw" then
raw = true
end
return modules.formatNum.displayvalue(amount, unit,
{targetunit = params.targetunit, raw = raw, rounding = params.rounding, showunit = params.showunit or 'short', showlink = params.showlink}
)
end
if datatype == 'monolingualtext' then
if value.language == defaultlang or displayformat == 'raw' then
return value.text
else
return modules.langmodule.langue({value.language, value.text, nocat=true})
end
end
return formatError('unknown-datavalue-type' )
end
function wd.stringTable(args) -- like getClaims, but get a list of string rather than a list of snaks, for easier manipulation
local claims = args.claims
local cat = ''
if not claims then
claims = wd.getClaims(args)
end
if not claims or claims == {} then
return {}, {}, cat
end
if args.removedupesdate and (args.removedupesdate ~= '-') then
claims, cat = removeDupesDate(claims, args.removedupesdate)
end
local props = {} -- liste des propriétés associété à chaque string pour catégorisation et linkback
for i, j in pairs(claims) do
claims[i] = wd.formatStatement(j, args)
table.insert(props, j.mainsnak.property)
end
if args.removedupes and (args.removedupes ~= '-') then
claims = wd.addNewValues({}, claims) -- devrait aussi supprimer de props celles qui ne sont pas utilisées
end
return claims, props, cat
end
function wd.getQualifiers(statement, qualifs, params)
if not statement.qualifiers then
return nil
end
local vals = {}
if type(qualifs) == 'string' then
qualifs = wd.splitStr(qualifs)
end
for i, j in pairs(qualifs) do
if statement.qualifiers[j] then
for k, l in pairs(statement.qualifiers[j]) do
table.insert(vals, l)
end
end
end
if #vals == 0 then
return nil
end
return vals
end
function wd.getFormattedQualifiers(statement, qualifs, params)
if not params then params = {} end
local qualiftable = wd.getQualifiers(statement, qualifs)
if not qualiftable then
return nil
end
qualiftable = wd.filterClaims(qualiftable, params) or {}
-- Sorting to prioritize languages
if(params.showonlyqualifier ~= nil) then
qualiftable = wd.sortClaims(qualiftable, params.sorttype or params.qualifsorttype)
end
for i, j in pairs(qualiftable) do
qualiftable[i] = wd.formatSnak(j, params)
end
return modules.linguistic.conj(qualiftable, params.conjtype)
end
function wd.showQualifiers(str, statement, args)
local qualifs = args.showqualifiers
if not qualifs then
return str -- or error ?
end
if type(qualifs) == 'string' then
qualifs = wd.splitStr(qualifs)
end
local qualifargs = args.qualifargs or {}
-- formatage des qualificatifs = args commençant par "qualif", ou à défaut, les mêmes que pour la valeur principale
qualifargs.displayformat = args.qualifdisplayformat or args.displayformat
qualifargs.labelformat = args.qualiflabelformat or args.labelformat
qualifargs.labelformat2 = args.qualiflabelformat2 or args.labelformat2
qualifargs.link = args.qualiflink or args.link
qualifargs.linktopic = args.qualiflinktopic or args.linktopic
qualifargs.conjtype = args.qualifconjtype
qualifargs.precision = args.qualifprecision
qualifargs.targetunit = args.qualiftargetunit
qualifargs.defaultlink = args.qualifdefaultlink or args.defaultlink
qualifargs.defaultlinkquery = args.qualifdefaultlinkquery or args.defaultlinkquery
if args.qualiflabelformat == 'objectgender' then
local objectid = wd.getId(statement.mainsnak)
qualifargs.labelformat = wd.getgender(objectid)
end
local formattedqualifs
if args.qualifformat and type (args.qualifformat) == 'function' then
formattedqualifs = args.qualifformat(statement, qualifs, qualifargs)
else
formattedqualifs = wd.getFormattedQualifiers(statement, qualifs, qualifargs)
end
if formattedqualifs and formattedqualifs ~= "" then
str = str .. " (" .. formattedqualifs .. ")"
end
return str
end
function wd.formatSnak( snak, params )
if not params then params = {} end -- pour faciliter l'appel depuis d'autres modules
if snak.snaktype == 'somevalue' then
return unknownValue(snak, params.unknownlabel)
elseif snak.snaktype == 'novalue' then
return noValue(params.novaluelabel)
elseif snak.snaktype == 'value' then
return wd.getDataValue( snak, params)
else
return formatError( 'unknown-snak-type' )
end
end
function wd.formatStatement( statement, args ) -- FONCTION A REORGANISER (pas très lisible)
if not args then
args = {}
end
if not statement.type or statement.type ~= 'statement' then
return formatError( 'unknown-claim-type' )
end
local prop = statement.mainsnak.property
local str
-- special displayformat f
if args.statementformat and (type(args.statementformat) == 'function') then
str = args.statementformat(statement, args)
elseif (statement.mainsnak.datatype == 'time') and (statement.mainsnak.dateformat ~= '-') then
if args.displayformat == 'raw' and statement.mainsnak.snaktype == 'value' then
str = statement.mainsnak.datavalue.value.time
else
str = wd.getFormattedDate(statement, args)
end
elseif args.showonlyqualifier and (args.showonlyqualifier ~= '') then
str = wd.getFormattedQualifiers(statement, args.showonlyqualifier, args)
if not str then
return nil
end
if args.addstandardqualifs ~= '-' then
str = wd.addStandardQualifs(str, statement, true)
end
else
str = wd.formatSnak( statement.mainsnak, args )
if (args.addstandardqualifs ~= '-') and (args.displayformat ~= 'raw') then
str = wd.addStandardQualifs(str, statement)
end
end
-- ajouts divers
if args.showlang == true then
local indicateur = showLang(statement)
if indicateur then
str = indicateur .. ' ' .. str
end
end
if args.showqualifiers then
str = wd.showQualifiers(str, statement, args)
end
if args.showdate then -- when "showdate and chronosort are both set, date retrieval is performed twice
local period = wd.getFormattedDate(statement, args, "-") -- 3 arguments indicate the we should not use additional qualifiers, already added by wd.formatStatement
if period then
str = str .. " <small>(" .. period .. ")</small>"
end
end
if args.showsource and args.showsource ~= '-' and args.showsource ~= "false" then
if args.showsource == "only" then str="" end -- si showsource="only", alors ne montrer que la (les) source(s),
-- sans la valeur qui, auparavant, était enregistrée dans str
-- Utilisé par le modèle {{PH census}}
local sources, hashes = wd.getReferences(statement)
if sources then
local source = wd.sourceStr(sources, hashes)
if source then
str = str .. source
end
end
end
return str
end
function wd.addLinkBack(str, id, property)
if not id or id == '' then
id = wd.getEntityIdForCurrentPage()
end
if not id then
return str
end
if type(property) == 'table' then
property = property[1]
end
id = mw.text.trim(wd.entityId(id))
local class = ''
if property then
class = 'wd_' .. string.lower(property)
end
local icon = '[[File:Blue pencil.svg|%s|10px|baseline|class=noviewer|link=%s]]'
local title = wd.translate('see-wikidata-value')
local url = mw.uri.fullUrl('d:' .. id, 'uselang=fr')
url.fragment = property -- ajoute une #ancre si paramètre "property" défini
url = tostring(url)
local v = mw.html.create('span')
:addClass(class)
:wikitext(str)
:tag('span')
:addClass('noprint wikidata-linkback skin-invert')
:wikitext(icon:format(title, url))
:allDone()
return tostring(v)
end
function wd.addRefAnchor(str, id)
--[[
Insère une ancre pour une référence générée à partir d'un élément wd.
L'id Wikidata sert d'identifiant à l'ancre, à utiliser dans les modèles type "harvsp"
--]]
return tostring(
mw.html.create('span')
:attr('id', id)
:attr('class', "ouvrage")
:wikitext(str)
)
end
--=== FUNCTIONS USING AN ENTITY AS ARGUMENT ===
local function formatStatementsGrouped(args, type)
-- regroupe les affirmations ayant la même valeur en mainsnak, mais des qualificatifs différents
-- (seulement pour les propriétés de type élément)
local claims = wd.getClaims(args)
if not claims then
return nil
end
local groupedClaims = {}
-- regroupe les affirmations par valeur de mainsnak
local function addClaim(claim)
local id = wd.getMainId(claim)
for i, j in pairs(groupedClaims) do
if (j.id == id) then
table.insert(groupedClaims[i].claims, claim)
return
end
end
table.insert(groupedClaims, {id = id, claims = {claim}})
end
for i, claim in pairs(claims) do
addClaim(claim)
end
local stringTable = {}
-- instructions ad hoc pour les paramètres concernant la mise en forme d'une déclaration individuelle
local funs = {
{param = "showqualifiers", fun = function(str, claims)
local qualifs = {}
for i, claim in pairs(claims) do
local news = wd.getFormattedQualifiers(claim, args.showqualifiers, args)
if news then
table.insert(qualifs, news)
end
end
local qualifstr = modules.linguistic.conj(qualifs, wd.translate("qualif-separator"))
if qualifstr and qualifstr ~= "" then
str = str .. " (" .. qualifstr .. ")"
end
return str
end
},
{param = "showdate", fun = function(str, claims)
-- toutes les dates sont regroupées à l'intérieur des mêmes parenthèses ex "médaille d'or (1922, 1924)"
local dates = {}
for i, statement in pairs(claims) do
local s = wd.getFormattedDate(statement, args, true)
if statement then table.insert(dates, s) end
end
local datestr = modules.linguistic.conj(dates)
if datestr and datestr ~= "" then
str = str .. " <small>(" .. datestr .. ")</small>"
end
return str
end
},
{param = "showsource", fun = function(str, claims)
-- les sources sont toutes affichées au même endroit, à la fin
-- si deux affirmations ont la même source, on ne l'affiche qu'une fois
local sources = {}
local hashes = {}
local function dupeRef(old, new)
for i, j in pairs(old) do
if j == new then
return true
end
end
end
for i, claim in pairs(claims) do
local refs, refHashes = wd.getReferences(claim)
if refs then
for i, j in pairs(refs) do
if not dupeRef(sources, j) then
table.insert(sources, j)
local hash = (refHashes and refHashes[i]) or '-'
table.insert(hashes, hash)
end
end
end
end
return str .. (wd.sourceStr(sources, hashes) or "")
end
}
}
for i, group in pairs(groupedClaims) do -- bricolage pour utiliser les arguments de formatStatements
local str = wd.formatEntity(group.id, args)
if not str then
str = '???' -- pour éviter erreur Lua si formatEntity a retourné nil
end
for i, fun in pairs(funs) do
if args[fun.param] then
str = fun.fun(str, group.claims, args)
end
end
table.insert(stringTable, str)
end
args.valuetable = stringTable
return wd.formatStatements(args)
end
function wd.formatStatements( args )--Format statement and concat them cleanly
if args.value == '-' then
return nil
end
-- If a value is already set: use it, except if it's the special value {{WD}} (use wikidata)
if args.value and args.value ~= '' then
local valueexpl = wd.translate("activate-query")
if args.value ~= valueexpl then
return args.value
end
-- There is no value set, and args.expl disables wikidata on empty values
elseif args.expl then
return nil
end
if args.grouped and args.grouped ~= '' then
args.grouped = false
return formatStatementsGrouped(args)
end
local valuetable = args.valuetable -- dans le cas où les valeurs sont déjà formatées
local props -- les propriétés réellement utilisées (dans certains cas, ce ne sont pas toutes celles de args.property
local cat = ''
if not valuetable then -- cas le plus courant
valuetable, props, cat = wd.stringTable(args)
end
if args.ucfirst == '-' and args.conjtype == 'new line' then args.conjtype = 'lowercase new line' end
local str = modules.linguistic.conj(valuetable, args.conjtype)
if not str then
return args.default
end
if not props then
props = wd.splitStr(args.property)[1]
end
if args.ucfirst ~= '-' then
str = modules.linguistic.ucfirst(str)
end
if args.addcat and (args.addcat ~= '-') then
str = str .. wd.addTrackingCat(props) .. cat
end
if args.linkback and (args.linkback ~= '-') then
str = wd.addLinkBack(str, args.entity, props)
end
if args.returnnumberofvalues then
return str, #valuetable
end
return str
end
function wd.formatAndCat(args)
if not args then
return nil
end
args.linkback = args.linkback or true
args.addcat = true
if args.value then -- do not ignore linkback and addcat, as formatStatements do
if args.value == '-' then
return nil
end
local val = args.value .. wd.addTrackingCat(args.property)
val = wd.addLinkBack(val, args.entity, args.property)
return val
end
return wd.formatStatements( args )
end
function wd.getTheDate(args)
local claims = wd.getClaims(args)
if not claims then
return nil
end
local formattedvalues = {}
for i, j in pairs(claims) do
local v = wd.getFormattedDate(j, args)
if v then
table.insert(formattedvalues, v )
end
end
local val = modules.linguistic.conj(formattedvalues)
if not val then
return nil
end
if args.addcat == true then
val = val .. wd.addTrackingCat(args.property)
end
val = wd.addLinkBack(val, args.entity, args.property)
return val
end
function wd.keyDate (event, item, params)
params = params or {}
params.entity = item
if type(event) == 'table' then
for i, j in pairs(event) do
params.targetvalue = nil -- réinitialisation barbare des paramètres modifiés
local s = wd.keyDate(j, item, params)
if s then
return s
end
end
elseif type(event) ~= 'string' then
return formatError('invalid-datatype', type(event), 'string')
elseif string.sub(event, 1, 1) == 'Q' then -- on demande un élément utilisé dans P:P793 (événement clé)
params.property = 'P793'
params.targetvalue = event
params.addcat = params.addcat or true
return wd.getTheDate(params)
elseif string.sub(event, 1, 1) == 'P' then -- on demande une propriété
params.property = event
return wd.formatAndCat(params)
else
return formatError('invalid-entity-id', event)
end
end
function wd.mainDate(entity)
-- essaye P580/P582
local args = {entity = entity, addcat = true}
args.property = 'P580'
local startpoint = wd.formatStatements(args)
args.property = 'P582'
local endpoint = wd.formatStatements(args)
local str
if (startpoint or endpoint) then
str = modules.formatDate.daterange(startpoint, endpoint, params)
str = wd.addLinkBack(str, entity, 'P582')
return str
end
-- défaut : P585
args.property = {'P585', 'P571'}
args.linkback = true
return wd.formatStatements(args)
end
-- ==== Fonctions sur le genre ====
function wd.getgender(id)
local vals = {
['Q6581072'] = 'f', -- féminin
['Q6581097'] = 'm', -- masculin
['Q1052281'] = 'f', -- femme transgenre
['Q2449503'] = 'm', -- homme transgenre
['Q17148251'] = 'f', -- en:Travesti (gender identity)
['Q43445'] = 'f', -- femelle
['Q44148'] = 'm', -- mâle
default = '?'
}
local gender = wd.formatStatements{entity = id, property = 'P21', displayformat = 'raw', numval = 1}
return vals[gender] or vals.default
end
wd.isGender = {m = true, male = true, f = true, female = true} --reconnaissance des chaînes de caractères désignant un genre
-- catégories de genre/nombre
function wd.getgendernum(claims)
local personid, gender
local anym = false
local anyf = false
local anyunknown = false
for i, claim in pairs(claims) do
local snak = claim.mainsnak or claim
if(snak.snaktype == 'value') and (snak.datatype == 'wikibase-item') then
personid = wd.getId(snak)
gender = wd.getgender(personid)
anym = anym or (gender == 'm')
anyf = anyf or (gender == 'f')
anyunknown = anyunknown or (gender == '?')
else
anyunknown = true
end
end
local gendernum
if #claims > 1 then
if anyunknown then
gendernum = 'p'
else
if anym and not anyf then gendernum = 'mp' end
if anyf and not anym then gendernum = 'fp' end
if anym and anyf then gendernum = 'mixtep' end
end
else
gendernum = 's'
if anym then gendernum = 'ms' end
if anyf then gendernum = 'fs' end
end
return gendernum
end
-- récupération des libellés genrés de Wikidata
function wd.genderedlabel(id, labelgender)
local label
if not labelgender then return nil end
if labelgender == 'f' or labelgender == 'female' then -- femme : chercher le libellé dans P2521 (libellé féminin)
label = wd.formatStatements{entity = id, property = 'P2521', isinlang = 'fr', numval = 1, ucfirst = '-'}
elseif labelgender == 'm' or labelgender == 'male' then -- homme : chercher le libellé dans P3321 (libellé masculin)
label = wd.formatStatements{entity = id, property = 'P3321', isinlang = 'fr', numval = 1, ucfirst = '-'}
end
if not label then
label = wd.getLabel(id)
end
return label
end
-- === FUNCTIONS FOR TRANSITIVE PROPERTIES ===
function wd.getIds(item, query)
query.excludespecial = true
query.displayformat = 'raw'
query.entity = item
query.addstandardqualifs = '-'
return wd.stringTable(query)
end
-- recursively adds a list of qid to an existing list, based on the results of a query
function wd.addVals(list, query, maxdepth, maxnodes, stopval)
maxdepth = tonumber(maxdepth) or 10
maxnodes = tonumber(maxnodes) or 100
if (maxdepth < 0) then
return list
end
if stopval and wd.isHere(list, stopval) then
return list
end
local origsize = #list
for i = 1, origsize do
-- tried a "checkpos" param instead of starting to 1 each time, but no impact on performance
local candidates = wd.getIds(list[i], query)
list = wd.addNewValues(list, candidates, maxnodes, stopval)
if list[#list] == stopval then
return list
end
if #list >= maxnodes then
return list
end
end
if (#list == origsize) then
return list
end
return wd.addVals(list, query, maxdepth - 1, maxnodes, stopval, origsize + 1)
end
-- returns a list of items transitively matching a query (orig item is not included in the list)
function wd.transitiveVals(item, query, maxdepth, maxnodes, stopval)
maxdepth = tonumber(maxdepth) or 5
if type(query) == "string" then
query = {property = query}
end
-- récupération des valeurs
local vals = wd.getIds(item, query)
if not vals then
return nil
end
local v = wd.addVals(vals, query, maxdepth - 1, maxnodes, stopval)
if not v then
return nil
end
-- réarrangement des valeurs
if query.valorder == "inverted" then
local a = {}
for i = #v, 1, -1 do
a[#a+1] = v[i]
end
v = a
end
return v
end
-- returns true if an item is the value of a query, transitively
function wd.inTransitiveVals(searchedval, sourceval, query, maxdepth, maxnodes )
local vals = wd.transitiveVals(sourceval, query, maxdepth, maxnodes, searchedval )
if (not vals) then
return false
end
for _, val in ipairs(vals) do
if (val == searchedval) then
return true
end
end
return false
end
-- returns true if an item is a superclass of another, based on P279
function wd.isSubclass(class, item, maxdepth)
local query = {property = 'P279'}
if class == item then -- item is a subclass of itself iff it is a class
if wd.getIds(item, query) then
return true
end
return false
end
return wd.inTransitiveVals(class, item, query, maxdepth )
end
-- returns true if one of the best ranked P31 values of an item is the target or a subclass of the target
-- rank = 'valid' would seem to make sense, but it would need to check for date qualifiers as some P31 values have begin or end date
function wd.isInstance(targetclass, item, maxdepth)
maxdepth = maxdepth or 10
local directclasses = wd.transitiveVals(item, {property = 'P31'}, 1)
if not directclasses then
return false
end
for i, class in pairs(directclasses) do
if wd.isSubclass(targetclass, class, maxdepth - 1) then
return true
end
end
return false
end
-- return the first value in a transitive query that belongs to a particular class. For instance find a value of P131 that is a province of Canada
function wd.findVal(sourceitem, targetclass, query, recursion, instancedepth)
if type(query) == "string" then
query = {property = query}
end
local candidates = wd.getIds(sourceitem, query)
if candidates then
for i, j in pairs(candidates) do
if wd.isInstance(targetclass, j, instancedepth) then
return j
end
end
if not recursion then
recursion = 3
else
recursion = recursion - 1
end
if recursion < 0 then
return nil
end
for i, candidate in pairs(candidates) do
return wd.findVal(candidate, targetclass, query, recursion, instancedepth)
end
end
end
-- === VARIA ===
function wd.getDescription(entity, lang)
lang = lang or defaultlang
local description
if lang == defaultlang then
return mw.wikibase.description(qid)
end
if not entity.descriptions then
return wd.translate('no description')
end
local descriptions = entity.descriptions
if not descriptions then
return nil
end
if descriptions[lang] then
return descriptions[delang].value
end
return entity.id
end
function wd.Dump(entity)
entity = wd.getEntity(entity)
if not entity then
return formatError("entity-param-not-provided")
end
return "<pre>"..mw.dumpObject(entity).."</pre>"
end
function wd.frameFun(frame)
local args = frame.args
local funname = args[1]
table.remove(args, 1)
return wd[funname](args)
end
return wd
sz7ua54sahwall80rbqbw58c3rdypzl
Endrika:Vol.
10
301664
1149188
2026-08-13T17:04:18Z
~2026-44555-09
40710
Pejy noforonina tamin'ny « vol. {{{1<includeonly>|{{color|red|Missing parameter! (Template:Vol.)}}</includeonly>}}}<noinclude> {{Documentation}} </noinclude> »
1149188
wikitext
text/x-wiki
vol. {{{1<includeonly>|{{color|red|Missing parameter! (Template:Vol.)}}</includeonly>}}}<noinclude>
{{Documentation}}
</noinclude>
o3wns9v425ho5wjekhlxfar51yhfwkj
Endrika:N°
10
301665
1149189
2026-08-13T17:06:44Z
~2026-44555-09
40710
Pejy noforonina tamin'ny « No. {{{1|}}}<noinclude> {{documentation}}</noinclude> »
1149189
wikitext
text/x-wiki
No. {{{1|}}}<noinclude>
{{documentation}}</noinclude>
ekmmdc5cortk6wiachrol1y1im3p7gu
1149190
1149189
2026-08-13T17:07:46Z
NDG
35988
Requesting deletion
1149190
wikitext
text/x-wiki
{{delete|No useful content}}No. {{{1|}}}<noinclude>
{{documentation}}</noinclude>
jx305x05ka0ldyumrpdlh22yqyjptby
Endrika:Ne
10
301666
1149191
2026-08-13T17:11:00Z
~2026-44555-09
40710
Pejy noforonina tamin'ny « <span title="Anarana tamin'ny nahaterahana">[[Birth name#Maiden and married names|né]]{{#if:{{{1|}}}| {{trim|{{{1|}}}}}}}</span><noinclude> {{documentation}} </noinclude> »
1149191
wikitext
text/x-wiki
<span title="Anarana tamin'ny nahaterahana">[[Birth name#Maiden and married names|né]]{{#if:{{{1|}}}| {{trim|{{{1|}}}}}}}</span><noinclude>
{{documentation}}
</noinclude>
m4kv4nciyndtuzd9ypxi0far9gpt5fu
Endrika:Nbsp
10
301667
1149192
2026-08-13T17:13:11Z
~2026-44555-09
40710
Pejy fihodinana mankany [[Endrika:Spaces]]
1149192
wikitext
text/x-wiki
#REDIRECT [[Endrika:Spaces]]
260avzf0qsp5zpyywouc3pf4t0pbghh
Endrika:Hyphen
10
301668
1149193
2026-08-13T17:14:05Z
~2026-44555-09
40710
Pejy noforonina tamin'ny « -<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> »
1149193
wikitext
text/x-wiki
-<noinclude>
{{documentation}}
<!-- Add categories and interwikis to the /doc subpage, not here! -->
</noinclude>
09l9sz67lahkr2wgp3ic5qglysvkflo
Hopitaly Université Joseph Ravoahangy Andrianavalona
0
301669
1149198
2026-08-14T06:09:28Z
~2026-43677-38
40632
Pejy noforonina tamin'ny « '''Hopitaly Université Joseph Ravoahangy Andrianavalona''' ([[Fiteny frantsay|frantsay]]: ''Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona'' na ''CHU-JRA'') no [[hôpitaly]] lehibe indrindra eto {{Madagasikara}}. Eto [[Antananarivo]] no misy azy ary niorina tamin’ny taona 1965. Avy amin’ny dokotera sady mpanao politika malagasy [[Ravoahangy-Andrianavalona Joseph]] no anarany. Fampisehoana ny andrim-panjakana tamin'ny taona 2015: Naor... »
1149198
wikitext
text/x-wiki
'''Hopitaly Université Joseph Ravoahangy Andrianavalona''' ([[Fiteny frantsay|frantsay]]: ''Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona'' na ''CHU-JRA'') no [[hôpitaly]] lehibe indrindra eto {{Madagasikara}}.
Eto [[Antananarivo]] no misy azy ary niorina tamin’ny taona 1965. Avy amin’ny dokotera sady mpanao politika malagasy [[Ravoahangy-Andrianavalona Joseph]] no anarany.
Fampisehoana ny andrim-panjakana tamin'ny taona 2015: Naorina tamin'ny taona 1965 teo amin'ny tany mirefy 7 hektara
Tanjona: Fandidiana (nanomboka tamin'ny taona 1981) sy fanadihadiana paraklinika (sary sy fitiliana laboratoara).
Anarana ankehitriny: Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona
Mpiasa: mpiasa 700, fandriana: 621<ref>[https://www.madagascar-tribune.com/L-hopital-Ravoahangy,21158.html L’hôpital Ravoahangy Andrianavalona fête ses 40 ans (Madagascar Tribune, 2015)]</ref>
==Jereo koa==
* [[Institut Pasteur eto Madagasikara]]
* [[Hopitaly miaramila Antananarivo]]
*[https://www.lexpress.mg/2026/08/hjra-les-greffes-de-cornee-reprennent.html HJRA - Les greffes de cornée reprennent]
[[fr:Hôpital Joseph Ravoahangy Andrianavalona]]
[[Sokajy:Antananarivo]]
[[Sokajy:Hopitaly any Madagasikara]]
06dd2bh929dyu4ojmnau9h6q5uz5h58
1149201
1149198
2026-08-14T06:13:11Z
~2026-43677-38
40632
1149201
wikitext
text/x-wiki
'''Hopitaly Université Joseph Ravoahangy Andrianavalona''' ([[Fiteny frantsay|frantsay]]: ''Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona'' na ''CHU-JRA'' na ''HJRA'') no [[hôpitaly]] lehibe indrindra eto {{Madagasikara}}.
Eto [[Antananarivo]] no misy azy ary niorina tamin’ny taona 1965. Avy amin’ny dokotera sady mpanao politika malagasy [[Ravoahangy-Andrianavalona Joseph]] no anarany.
Fampisehoana ny andrim-panjakana tamin'ny taona 2015: Naorina tamin'ny taona 1965 teo amin'ny tany mirefy 7 hektara
Tanjona: Fandidiana (nanomboka tamin'ny taona 1981) sy fanadihadiana paraklinika (sary sy fitiliana laboratoara).
Anarana ankehitriny: Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona
Mpiasa: mpiasa 700, fandriana: 621<ref>[https://www.madagascar-tribune.com/L-hopital-Ravoahangy,21158.html L’hôpital Ravoahangy Andrianavalona fête ses 40 ans (Madagascar Tribune, 2015)]</ref>
==Jereo koa==
* [[Institut Pasteur eto Madagasikara]]
* [[Hopitaly miaramila Antananarivo]]
*[https://www.lexpress.mg/2026/08/hjra-les-greffes-de-cornee-reprennent.html HJRA - Les greffes de cornée reprennent]
[[fr:Hôpital Joseph Ravoahangy Andrianavalona]]
[[Sokajy:Antananarivo]]
[[Sokajy:Hopitaly any Madagasikara]]
qzhmox36pyln9za9udcfkginsyxl166
1149202
1149201
2026-08-14T06:14:04Z
~2026-43677-38
40632
1149202
wikitext
text/x-wiki
'''Hopitaly Université Joseph Ravoahangy Andrianavalona''' ([[Fiteny frantsay|frantsay]]: ''Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona'' na '''CHU-JRA''' na '''HJRA''') no [[hôpitaly]] lehibe indrindra eto {{Madagasikara}}.
Eto [[Antananarivo]] no misy azy ary niorina tamin’ny taona 1965. Avy amin’ny dokotera sady mpanao politika malagasy [[Ravoahangy-Andrianavalona Joseph]] no anarany.
Fampisehoana ny andrim-panjakana tamin'ny taona 2015: Naorina tamin'ny taona 1965 teo amin'ny tany mirefy 7 hektara
Tanjona: Fandidiana (nanomboka tamin'ny taona 1981) sy fanadihadiana paraklinika (sary sy fitiliana laboratoara).
Anarana ankehitriny: Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona
Mpiasa: mpiasa 700, fandriana: 621<ref>[https://www.madagascar-tribune.com/L-hopital-Ravoahangy,21158.html L’hôpital Ravoahangy Andrianavalona fête ses 40 ans (Madagascar Tribune, 2015)]</ref>
==Jereo koa==
* [[Institut Pasteur eto Madagasikara]]
* [[Hopitaly miaramila Antananarivo]]
*[https://www.lexpress.mg/2026/08/hjra-les-greffes-de-cornee-reprennent.html HJRA - Les greffes de cornée reprennent]
[[fr:Hôpital Joseph Ravoahangy Andrianavalona]]
[[Sokajy:Antananarivo]]
[[Sokajy:Hopitaly any Madagasikara]]
q1dtfbrf2vg1mxy1jrfl0gaoyatdxh6
1149203
1149202
2026-08-14T06:14:43Z
~2026-43677-38
40632
1149203
wikitext
text/x-wiki
'''Hopitaly Université Joseph Ravoahangy Andrianavalona''' ([[Fiteny frantsay|frantsay]]: ''Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona'' na '''CHU-JRA''' na '''HJRA''') no [[hôpitaly]] lehibe indrindra eto {{Madagasikara}}.
Eto [[Antananarivo]] no misy azy ary niorina tamin’ny taona 1965. Avy amin’ny dokotera sady mpanao politika malagasy [[Ravoahangy-Andrianavalona Joseph]] no anarany.
Fampisehoana ny andrim-panjakana tamin'ny taona 2015: Naorina tamin'ny taona 1965 teo amin'ny tany mirefy 7 hektara
Tanjona: Fandidiana (nanomboka tamin'ny taona 1981) sy fanadihadiana paraklinika (sary sy fitiliana laboratoara).
*Anarana ankehitriny: Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona
*Mpiasa: mpiasa 700, fandriana: 621<ref>[https://www.madagascar-tribune.com/L-hopital-Ravoahangy,21158.html L’hôpital Ravoahangy Andrianavalona fête ses 40 ans (Madagascar Tribune, 2015)]</ref>
==Jereo koa==
* [[Institut Pasteur eto Madagasikara]]
* [[Hopitaly miaramila Antananarivo]]
*[https://www.lexpress.mg/2026/08/hjra-les-greffes-de-cornee-reprennent.html HJRA - Les greffes de cornée reprennent]
[[fr:Hôpital Joseph Ravoahangy Andrianavalona]]
[[Sokajy:Antananarivo]]
[[Sokajy:Hopitaly any Madagasikara]]
e6fyz0dw8wmvm0i2dh9ikqs2tzplczp
1149209
1149203
2026-08-14T06:45:49Z
~2026-43677-38
40632
1149209
wikitext
text/x-wiki
[[File:Hôpital HJRA.jpg|thumb|Hopitaly HJRA]]
'''Hopitaly Université Joseph Ravoahangy Andrianavalona''' ([[Fiteny frantsay|frantsay]]: ''Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona'' na '''CHU-JRA''' na '''HJRA''') no [[hôpitaly]] lehibe indrindra eto {{Madagasikara}}.
Eto [[Antananarivo]] no misy azy ary niorina tamin’ny taona 1965. Avy amin’ny dokotera sady mpanao politika malagasy [[Ravoahangy-Andrianavalona Joseph]] no anarany.
Fampisehoana ny andrim-panjakana tamin'ny taona 2015: Naorina tamin'ny taona 1965 teo amin'ny tany mirefy 7 hektara
Tanjona: Fandidiana (nanomboka tamin'ny taona 1981) sy fanadihadiana paraklinika (sary sy fitiliana laboratoara).
*Anarana ankehitriny: Centre Hospitalier Universitaire Joseph Ravoahangy Andrianavalona
*Mpiasa: mpiasa 700, fandriana: 621<ref>[https://www.madagascar-tribune.com/L-hopital-Ravoahangy,21158.html L’hôpital Ravoahangy Andrianavalona fête ses 40 ans (Madagascar Tribune, 2015)]</ref>
==Jereo koa==
* [[Institut Pasteur eto Madagasikara]]
* [[Hopitaly miaramila Antananarivo]]
*[https://www.lexpress.mg/2026/08/hjra-les-greffes-de-cornee-reprennent.html HJRA - Les greffes de cornée reprennent]
[[fr:Hôpital Joseph Ravoahangy Andrianavalona]]
[[Sokajy:Antananarivo]]
[[Sokajy:Hopitaly any Madagasikara]]
67oyrdjw3wfl63cbg5kua8pedncoaez
HJRA
0
301670
1149199
2026-08-14T06:10:16Z
~2026-43677-38
40632
Pejy fihodinana mankany [[Hopitaly Université Joseph Ravoahangy Andrianavalona]]
1149199
wikitext
text/x-wiki
#REDIRECT [[Hopitaly Université Joseph Ravoahangy Andrianavalona]]
rsglf3d9s90zn3hqv8dmetgx824gcl3
CHU-JRA
0
301671
1149200
2026-08-14T06:10:50Z
~2026-43677-38
40632
Pejy fihodinana mankany [[Hopitaly Université Joseph Ravoahangy Andrianavalona]]
1149200
wikitext
text/x-wiki
#REDIRECT [[Hopitaly Université Joseph Ravoahangy Andrianavalona]]
rsglf3d9s90zn3hqv8dmetgx824gcl3
Sokajy:Redirections connectées à un élément Wikidata
14
301672
1149207
2026-08-14T06:38:59Z
PK2
2490
Namorona pejy fotsy
1149207
wikitext
text/x-wiki
phoiac9h4m842xq45sp7s6u21eteeq1